draft-js
Version:
A React framework for building text editors.
44 lines (36 loc) • 1.16 kB
Flow
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow
* @emails oncall+draft_js
*/
;
import type ContentState from "./ContentState";
const UnicodeBidiService = require("fbjs/lib/UnicodeBidiService");
const Immutable = require("immutable");
const nullthrows = require("fbjs/lib/nullthrows");
const {
OrderedMap
} = Immutable;
let bidiService;
const EditorBidiService = {
getDirectionMap: function (content: ContentState, prevBidiMap: ?OrderedMap<any, any>): OrderedMap<any, any> {
if (!bidiService) {
bidiService = new UnicodeBidiService();
} else {
bidiService.reset();
}
const blockMap = content.getBlockMap();
const nextBidi = blockMap.valueSeq().map(block => nullthrows(bidiService).getDirection(block.getText()));
const bidiMap = OrderedMap(blockMap.keySeq().zip(nextBidi));
if (prevBidiMap != null && Immutable.is(prevBidiMap, bidiMap)) {
return prevBidiMap;
}
return bidiMap;
}
};
module.exports = EditorBidiService;