No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

EditorBidiService.js 1.1 KiB

hace 3 años
123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /**
  2. * Copyright (c) Facebook, Inc. and its affiliates.
  3. *
  4. * This source code is licensed under the MIT license found in the
  5. * LICENSE file in the root directory of this source tree.
  6. *
  7. * @format
  8. *
  9. * @emails oncall+draft_js
  10. */
  11. 'use strict';
  12. var UnicodeBidiService = require("fbjs/lib/UnicodeBidiService");
  13. var Immutable = require("immutable");
  14. var nullthrows = require("fbjs/lib/nullthrows");
  15. var OrderedMap = Immutable.OrderedMap;
  16. var bidiService;
  17. var EditorBidiService = {
  18. getDirectionMap: function getDirectionMap(content, prevBidiMap) {
  19. if (!bidiService) {
  20. bidiService = new UnicodeBidiService();
  21. } else {
  22. bidiService.reset();
  23. }
  24. var blockMap = content.getBlockMap();
  25. var nextBidi = blockMap.valueSeq().map(function (block) {
  26. return nullthrows(bidiService).getDirection(block.getText());
  27. });
  28. var bidiMap = OrderedMap(blockMap.keySeq().zip(nextBidi));
  29. if (prevBidiMap != null && Immutable.is(prevBidiMap, bidiMap)) {
  30. return prevBidiMap;
  31. }
  32. return bidiMap;
  33. }
  34. };
  35. module.exports = EditorBidiService;