d2-ui
Version:
47 lines (37 loc) • 1.22 kB
JavaScript
/**
* Copyright (c) 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
* @providesModule EditorBidiService
* @typechecks
*
*/
;
var Immutable = require('immutable');
var UnicodeBidiService = require('fbjs/lib/UnicodeBidiService');
var nullthrows = require('fbjs/lib/nullthrows');
var OrderedMap = Immutable.OrderedMap;
var bidiService;
var EditorBidiService = {
getDirectionMap: function getDirectionMap(content, prevBidiMap) {
if (!bidiService) {
bidiService = new UnicodeBidiService();
} else {
bidiService.reset();
}
var blockMap = content.getBlockMap();
var nextBidi = blockMap.valueSeq().map(function (block) {
return nullthrows(bidiService).getDirection(block.getText());
});
var bidiMap = OrderedMap(blockMap.keySeq().zip(nextBidi));
if (prevBidiMap != null && Immutable.is(prevBidiMap, bidiMap)) {
return prevBidiMap;
}
return bidiMap;
}
};
module.exports = EditorBidiService;