draft-js
Version:
A React framework for building text editors.
107 lines (98 loc) • 3.66 kB
JavaScript
/**
* 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
*/
;
var CharacterMetadata = require("./CharacterMetadata");
var ContentBlock = require("./ContentBlock");
var ContentState = require("./ContentState");
var EditorState = require("./EditorState");
var _require = require("./SampleDraftInlineStyle"),
BOLD = _require.BOLD;
var Immutable = require("immutable");
var EMPTY = CharacterMetadata.EMPTY;
var getSampleSelectionMocksForTesting = function getSampleSelectionMocksForTesting() {
var root = document.createElement('div');
var contents = document.createElement('div');
contents.setAttribute('data-contents', 'true');
root.appendChild(contents);
var text = ['Washington', 'Jefferson', 'Lincoln', 'Roosevelt', 'Kennedy', 'Obama'];
var textA = text[0] + text[1];
var textB = text[2] + text[3];
var textC = text[4] + text[5];
var boldChar = CharacterMetadata.create({
style: BOLD
});
var aChars = Immutable.List(Immutable.Repeat(EMPTY, text[0].length).concat(Immutable.Repeat(boldChar, text[1].length)));
var bChars = Immutable.List(Immutable.Repeat(EMPTY, text[2].length).concat(Immutable.Repeat(boldChar, text[3].length)));
var cChars = Immutable.List(Immutable.Repeat(EMPTY, text[4].length).concat(Immutable.Repeat(boldChar, text[5].length)));
var contentBlocks = [new ContentBlock({
key: 'a',
type: 'unstyled',
text: textA,
characterList: aChars
}), new ContentBlock({
key: 'b',
type: 'unstyled',
text: textB,
characterList: bChars
}), new ContentBlock({
key: 'c',
type: 'unstyled',
text: textC,
characterList: cChars
})];
var contentState = ContentState.createFromBlockArray(contentBlocks);
var editorState = EditorState.createWithContent(contentState);
var textNodes = text.map(function (text) {
return document.createTextNode(text);
});
var leafChildren = textNodes.map(function (textNode) {
var span = document.createElement('span');
span.appendChild(textNode);
return span;
});
var leafs = ['a-0-0', 'a-0-1', 'b-0-0', 'b-0-1', 'c-0-0', 'c-0-1'].map(function (blockKey, index) {
var span = document.createElement('span');
span.setAttribute('data-offset-key', '' + blockKey);
span.appendChild(leafChildren[index]);
return span;
});
var decorators = ['a-0-0', 'b-0-0', 'c-0-0'].map(function (decoratorKey, index) {
var span = document.createElement('span');
span.setAttribute('data-offset-key', '' + decoratorKey);
span.appendChild(leafs[index * 2]);
span.appendChild(leafs[index * 2 + 1]);
return span;
});
var blocks = ['a-0-0', 'b-0-0', 'c-0-0'].map(function (blockKey, index) {
var outerBlockElement = document.createElement('div');
var innerBlockElement = document.createElement('div');
innerBlockElement.setAttribute('data-offset-key', '' + blockKey);
innerBlockElement.appendChild(decorators[index]);
outerBlockElement.setAttribute('data-offset-key', '' + blockKey);
outerBlockElement.setAttribute('data-block', 'true');
outerBlockElement.appendChild(innerBlockElement);
return outerBlockElement;
});
blocks.forEach(function (blockElem) {
contents.appendChild(blockElem);
});
return {
editorState: editorState,
root: root,
contents: contents,
blocks: blocks,
decorators: decorators,
leafs: leafs,
leafChildren: leafChildren,
textNodes: textNodes
};
};
module.exports = getSampleSelectionMocksForTesting;