/** * 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 * * @emails oncall+draft_js */ 'use strict'; function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } var CharacterMetadata = require("./CharacterMetadata"); var findRangesImmutable = require("./findRangesImmutable"); var Immutable = require("immutable"); var List = Immutable.List, Map = Immutable.Map, OrderedSet = Immutable.OrderedSet, Record = Immutable.Record, Repeat = Immutable.Repeat; var EMPTY_SET = OrderedSet(); var defaultRecord = { key: '', type: 'unstyled', text: '', characterList: List(), depth: 0, data: Map() }; var ContentBlockRecord = Record(defaultRecord); var decorateCharacterList = function decorateCharacterList(config) { if (!config) { return config; } var characterList = config.characterList, text = config.text; if (text && !characterList) { config.characterList = List(Repeat(CharacterMetadata.EMPTY, text.length)); } return config; }; var ContentBlock = /*#__PURE__*/function (_ContentBlockRecord) { _inheritsLoose(ContentBlock, _ContentBlockRecord); function ContentBlock(config) { return _ContentBlockRecord.call(this, decorateCharacterList(config)) || this; } var _proto = ContentBlock.prototype; _proto.getKey = function getKey() { return this.get('key'); }; _proto.getType = function getType() { return this.get('type'); }; _proto.getText = function getText() { return this.get('text'); }; _proto.getCharacterList = function getCharacterList() { return this.get('characterList'); }; _proto.getLength = function getLength() { return this.getText().length; }; _proto.getDepth = function getDepth() { return this.get('depth'); }; _proto.getData = function getData() { return this.get('data'); }; _proto.getInlineStyleAt = function getInlineStyleAt(offset) { var character = this.getCharacterList().get(offset); return character ? character.getStyle() : EMPTY_SET; }; _proto.getEntityAt = function getEntityAt(offset) { var character = this.getCharacterList().get(offset); return character ? character.getEntity() : null; } /** * Execute a callback for every contiguous range of styles within the block. */ ; _proto.findStyleRanges = function findStyleRanges(filterFn, callback) { findRangesImmutable(this.getCharacterList(), haveEqualStyle, filterFn, callback); } /** * Execute a callback for every contiguous range of entities within the block. */ ; _proto.findEntityRanges = function findEntityRanges(filterFn, callback) { findRangesImmutable(this.getCharacterList(), haveEqualEntity, filterFn, callback); }; return ContentBlock; }(ContentBlockRecord); function haveEqualStyle(charA, charB) { return charA.getStyle() === charB.getStyle(); } function haveEqualEntity(charA, charB) { return charA.getEntity() === charB.getEntity(); } module.exports = ContentBlock;