/** * 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 getRangesForDraftEntity * @format * @flow */ 'use strict'; import type { BlockNodeRecord } from './BlockNodeRecord'; import type { DraftRange } from './DraftRange'; var invariant = require('fbjs/lib/invariant'); /** * Obtain the start and end positions of the range that has the * specified entity applied to it. * * Entity keys are applied only to contiguous stretches of text, so this * method searches for the first instance of the entity key and returns * the subsequent range. */ function getRangesForDraftEntity(block: BlockNodeRecord, key: string): Array { var ranges = []; block.findEntityRanges(c => c.getEntity() === key, (start, end) => { ranges.push({ start, end }); }); invariant(!!ranges.length, 'Entity key not found in this range.'); return ranges; } module.exports = getRangesForDraftEntity;