gitextract_nwrbpblp/ ├── .alexignore ├── .alexrc.js ├── .dependabot/ │ └── config.yml ├── .eslintignore ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ └── ci.yml ├── .gitignore ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── LICENSE-examples ├── README.md ├── docs/ │ ├── APIReference-APIMigration.md │ ├── APIReference-AtomicBlockUtils.md │ ├── APIReference-CharacterMetadata.md │ ├── APIReference-CompositeDecorator.md │ ├── APIReference-ContentBlock.md │ ├── APIReference-ContentState.md │ ├── APIReference-Data-Conversion.md │ ├── APIReference-Editor.md │ ├── APIReference-EditorChangeType.md │ ├── APIReference-EditorState.md │ ├── APIReference-Entity.md │ ├── APIReference-KeyBindingUtil.md │ ├── APIReference-Modifier.md │ ├── APIReference-RichUtils.md │ ├── APIReference-SelectionState.md │ ├── Advanced-Topics-Block-Components.md │ ├── Advanced-Topics-Block-Styling.md │ ├── Advanced-Topics-Custom-Block-Render.md │ ├── Advanced-Topics-Decorators.md │ ├── Advanced-Topics-EditorState-Race-Conditions.md │ ├── Advanced-Topics-Entities.md │ ├── Advanced-Topics-Inline-Styles.md │ ├── Advanced-Topics-Issues-and-Pitfalls.md │ ├── Advanced-Topics-Key-Bindings.md │ ├── Advanced-Topics-Managing-Focus.md │ ├── Advanced-Topics-Nested-Lists.md │ ├── Advanced-Topics-Text-Direction.md │ ├── Overview.md │ ├── QuickStart-API-Basics.md │ └── QuickStart-Rich-Styling.md ├── examples/ │ └── draft-0-10-0/ │ ├── color/ │ │ └── color.html │ ├── convertFromHTML/ │ │ └── convert.html │ ├── entity/ │ │ └── entity.html │ ├── iframe/ │ │ └── iframe.html │ ├── link/ │ │ └── link.html │ ├── media/ │ │ └── media.html │ ├── plaintext/ │ │ └── plaintext.html │ ├── playground/ │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ └── manifest.json │ │ └── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── DraftJsPlaygroundContainer.css │ │ ├── DraftJsRichEditorExample.css │ │ ├── DraftJsRichEditorExample.js │ │ ├── GkManager.js │ │ ├── index.css │ │ ├── index.js │ │ └── registerServiceWorker.js │ ├── rich/ │ │ ├── RichEditor.css │ │ └── rich.html │ ├── tex/ │ │ ├── .babelrc │ │ ├── js/ │ │ │ ├── app.js │ │ │ ├── components/ │ │ │ │ ├── TeXBlock.js │ │ │ │ └── TeXEditorExample.js │ │ │ ├── data/ │ │ │ │ └── content.js │ │ │ └── modifiers/ │ │ │ ├── insertTeXBlock.js │ │ │ └── removeTeXBlock.js │ │ ├── package.json │ │ ├── public/ │ │ │ ├── TeXEditor.css │ │ │ └── index.html │ │ ├── readme.md │ │ └── server.js │ ├── tweet/ │ │ └── tweet.html │ └── universal/ │ ├── .babelrc │ ├── client.js │ ├── editor.js │ ├── index.js │ ├── package.json │ └── readme.md ├── gulpfile.js ├── meta/ │ ├── meeting-notes/ │ │ ├── 2017-02-10-weekly-meeting.md │ │ ├── 2017-02-17-weekly-meeting.md │ │ ├── 2017-02-24-weekly-meeting.md │ │ ├── 2017-03-10-weekly-meeting.md │ │ ├── 2017-03-17-weekly-meeting.md │ │ ├── 2017-03-24-weekly-meeting.md │ │ ├── 2017-03-31-weekly-meeting.md │ │ ├── 2017-04-14-weekly-meeting.md │ │ ├── 2017-04-21-weekly-meeting.md │ │ ├── 2017-04-28-weekly-meeting.md │ │ ├── 2017-05-05-weekly-meeting.md │ │ ├── 2017-05-19-weekly-meeting.md │ │ ├── 2017-05-26-weekly-meeting.md │ │ ├── 2017-06-02-weekly-meeting.md │ │ ├── 2017-07-07-weekly-meeting.md │ │ ├── 2017-07-14-weekly-meeting.md │ │ ├── 2017-07-21-weekly-meeting.md │ │ ├── 2017-07-28-weekly-meeting.md │ │ ├── 2017-08-04-weekly-meeting.md │ │ ├── 2017-08-11-weekly-meeting.md │ │ ├── 2017-08-18-weekly-meeting.md │ │ ├── 2017-09-01-weekly-meeting.md │ │ ├── 2017-09-08-weekly-meeting.md │ │ ├── 2017-09-15-weekly-meeting.md │ │ ├── 2017-09-22-weekly-meeting.md │ │ ├── 2017-09-29-weekly-meeting.md │ │ ├── 2017-10-06-weekly-meeting.md │ │ ├── 2017-10-13-weekly-meeting.md │ │ ├── 2017-10-20-weekly-meeting.md │ │ ├── 2017-11-03-weekly-meeting.md │ │ ├── 2017-11-17-weekly-meeting.md │ │ ├── 2017-12-01-weekly-meeting.md │ │ ├── 2017-12-08-weekly-meeting.md │ │ ├── 2017-12-15-weekly-meeting.md │ │ ├── 2018-01-05-weekly-meeting.md │ │ ├── 2018-01-19-weekly-meeting.md │ │ ├── 2018-01-26-weekly-meeting.md │ │ ├── 2018-02-08-weekly-meeting.md │ │ ├── 2018-02-23-weekly-meeting.md │ │ ├── 2018-09-07-meeting.md │ │ └── 2018-10-12-meeting.md │ └── roadmaps/ │ └── 2017-h1.md ├── package.json ├── prettier.config.js ├── scripts/ │ ├── jest/ │ │ ├── hasteImpl.js │ │ ├── preprocessor.js │ │ └── shims.js │ └── module-map.js ├── src/ │ ├── .flowconfig │ ├── Draft.js │ ├── NonASCIIStringSnapshotSerializer.js │ ├── __mocks__/ │ │ └── generateRandomKey.js │ ├── component/ │ │ ├── base/ │ │ │ ├── DraftEditor.css │ │ │ ├── DraftEditor.react.js │ │ │ ├── DraftEditorFlushControlled.js │ │ │ ├── DraftEditorPlaceholder.css │ │ │ ├── DraftEditorPlaceholder.react.js │ │ │ ├── DraftEditorProps.js │ │ │ ├── DraftScrollPosition.js │ │ │ ├── DraftTextAlignment.js │ │ │ └── __tests__/ │ │ │ ├── DraftEditor.react-test.js │ │ │ └── __snapshots__/ │ │ │ └── DraftEditor.react-test.js.snap │ │ ├── contents/ │ │ │ ├── DraftEditorBlock.react.js │ │ │ ├── DraftEditorContents-core.react.js │ │ │ ├── DraftEditorLeaf.react.js │ │ │ ├── DraftEditorTextNode.react.js │ │ │ ├── __tests__/ │ │ │ │ ├── DraftEditorBlock.react-test.js │ │ │ │ ├── DraftEditorContents.react-test.js │ │ │ │ ├── DraftEditorTextNode-test.js │ │ │ │ └── __snapshots__/ │ │ │ │ └── DraftEditorBlock.react-test.js.snap │ │ │ └── exploration/ │ │ │ ├── DraftEditorBlockNode.react.js │ │ │ ├── DraftEditorContentsExperimental.react.js │ │ │ ├── DraftEditorDecoratedLeaves.react.js │ │ │ ├── DraftEditorNode.react.js │ │ │ └── __tests__/ │ │ │ ├── DraftEditorBlockNode.react-test.js │ │ │ ├── DraftEditorContentsExperimental.react-test.js │ │ │ └── __snapshots__/ │ │ │ ├── DraftEditorBlockNode.react-test.js.snap │ │ │ └── DraftEditorContentsExperimental.react-test.js.snap │ │ ├── handlers/ │ │ │ ├── DraftEditorModes.js │ │ │ ├── composition/ │ │ │ │ ├── DOMObserver.js │ │ │ │ ├── DraftEditorCompositionHandler.js │ │ │ │ └── __tests__/ │ │ │ │ └── DraftEditorCompostionHandler-test.js │ │ │ ├── drag/ │ │ │ │ └── DraftEditorDragHandler.js │ │ │ └── edit/ │ │ │ ├── DraftEditorEditHandler.js │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── editOnBeforeInput-test.js.snap │ │ │ │ ├── editOnBeforeInput-test.js │ │ │ │ ├── editOnBlur-test.js │ │ │ │ └── editOnInput-test.js │ │ │ ├── commands/ │ │ │ │ ├── SecondaryClipboard.js │ │ │ │ ├── __tests__/ │ │ │ │ │ ├── SecondaryClipboard-test.js │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ ├── SecondaryClipboard-test.js.snap │ │ │ │ │ │ └── removeTextWithStrategy-test.js.snap │ │ │ │ │ └── removeTextWithStrategy-test.js │ │ │ │ ├── keyCommandBackspaceToStartOfLine.js │ │ │ │ ├── keyCommandBackspaceWord.js │ │ │ │ ├── keyCommandDeleteWord.js │ │ │ │ ├── keyCommandInsertNewline.js │ │ │ │ ├── keyCommandMoveSelectionToEndOfBlock.js │ │ │ │ ├── keyCommandMoveSelectionToStartOfBlock.js │ │ │ │ ├── keyCommandPlainBackspace.js │ │ │ │ ├── keyCommandPlainDelete.js │ │ │ │ ├── keyCommandTransposeCharacters.js │ │ │ │ ├── keyCommandUndo.js │ │ │ │ ├── moveSelectionBackward.js │ │ │ │ ├── moveSelectionForward.js │ │ │ │ └── removeTextWithStrategy.js │ │ │ ├── editOnBeforeInput.js │ │ │ ├── editOnBlur.js │ │ │ ├── editOnCompositionStart.js │ │ │ ├── editOnCopy.js │ │ │ ├── editOnCut.js │ │ │ ├── editOnDragOver.js │ │ │ ├── editOnDragStart.js │ │ │ ├── editOnFocus.js │ │ │ ├── editOnInput.js │ │ │ ├── editOnKeyDown.js │ │ │ ├── editOnPaste.js │ │ │ ├── editOnSelect.js │ │ │ └── getFragmentFromSelection.js │ │ ├── selection/ │ │ │ ├── DOMDerivedSelection.js │ │ │ ├── DraftOffsetKey.js │ │ │ ├── DraftOffsetKeyPath.js │ │ │ ├── __tests__/ │ │ │ │ ├── DraftOffsetKey-test.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── DraftOffsetKey-test.js.snap │ │ │ │ │ ├── getDraftEditorSelection-test.js.snap │ │ │ │ │ └── setDraftEditorSelection-test.js.snap │ │ │ │ ├── getDraftEditorSelection-test.js │ │ │ │ └── setDraftEditorSelection-test.js │ │ │ ├── expandRangeToStartOfLine.js │ │ │ ├── findAncestorOffsetKey.js │ │ │ ├── getDraftEditorSelection.js │ │ │ ├── getDraftEditorSelectionWithNodes.js │ │ │ ├── getRangeBoundingClientRect.js │ │ │ ├── getRangeClientRects.js │ │ │ ├── getSampleSelectionMocksForTesting.js │ │ │ ├── getSampleSelectionMocksForTestingNestedBlocks.js │ │ │ ├── getSelectionOffsetKeyForNode.js │ │ │ ├── getUpdatedSelectionState.js │ │ │ ├── getVisibleSelectionRect.js │ │ │ ├── isSelectionAtLeafStart.js │ │ │ └── setDraftEditorSelection.js │ │ └── utils/ │ │ ├── DraftDOMTypes.js │ │ ├── DraftStyleDefault.css │ │ ├── KeyBindingUtil.js │ │ ├── _DraftTestHelper.js │ │ ├── __tests__/ │ │ │ └── isHTMLBRElement-test.js │ │ ├── draftKeyUtils.js │ │ ├── exploration/ │ │ │ ├── DraftTreeAdapter.js │ │ │ ├── DraftTreeInvariants.js │ │ │ └── __tests__/ │ │ │ ├── DraftTreeAdapter-test.js │ │ │ ├── DraftTreeInvariants-test.js │ │ │ └── __snapshots__/ │ │ │ └── DraftTreeAdapter-test.js.snap │ │ ├── getContentEditableContainer.js │ │ ├── getCorrectDocumentFromNode.js │ │ ├── getDefaultKeyBinding.js │ │ ├── getTextContentFromFiles.js │ │ ├── getWindowForNode.js │ │ ├── isElement.js │ │ ├── isEventHandled.js │ │ ├── isHTMLAnchorElement.js │ │ ├── isHTMLBRElement.js │ │ ├── isHTMLElement.js │ │ ├── isHTMLImageElement.js │ │ ├── isInstanceOfNode.js │ │ ├── isSoftNewlineEvent.js │ │ └── splitTextIntoTextBlocks.js │ ├── flowlib/ │ │ └── window.js │ ├── model/ │ │ ├── constants/ │ │ │ ├── DraftBlockType.js │ │ │ ├── DraftDragType.js │ │ │ ├── DraftEditorCommand.js │ │ │ ├── DraftHandleValue.js │ │ │ ├── DraftInsertionType.js │ │ │ └── DraftRemovalDirection.js │ │ ├── decorators/ │ │ │ ├── CompositeDraftDecorator.js │ │ │ ├── DraftDecorator.js │ │ │ ├── DraftDecoratorType.js │ │ │ └── __tests__/ │ │ │ ├── CompositeDraftDecorator-test.js │ │ │ └── __snapshots__/ │ │ │ └── CompositeDraftDecorator-test.js.snap │ │ ├── encoding/ │ │ │ ├── DraftStringKey.js │ │ │ ├── EntityRange.js │ │ │ ├── InlineStyleRange.js │ │ │ ├── RawDraftContentBlock.js │ │ │ ├── RawDraftContentState.js │ │ │ ├── RawDraftEntity.js │ │ │ ├── __tests__/ │ │ │ │ ├── DraftStringKey-test.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── convertFromDraftStateToRaw-test.js.snap │ │ │ │ │ ├── convertFromHTMLToContentBlocks-test.js.snap │ │ │ │ │ ├── convertFromRawToDraftState-test.js.snap │ │ │ │ │ ├── decodeEntityRanges-test.js.snap │ │ │ │ │ ├── decodeInlineStyleRanges-test.js.snap │ │ │ │ │ ├── encodeEntityRanges-test.js.snap │ │ │ │ │ ├── encodeInlineStyleRanges-test.js.snap │ │ │ │ │ └── sanitizeDraftText-test.js.snap │ │ │ │ ├── convertFromDraftStateToRaw-test.js │ │ │ │ ├── convertFromHTMLToContentBlocks-test.js │ │ │ │ ├── convertFromRawToDraftState-test.js │ │ │ │ ├── decodeEntityRanges-test.js │ │ │ │ ├── decodeInlineStyleRanges-test.js │ │ │ │ ├── encodeEntityRanges-test.js │ │ │ │ ├── encodeInlineStyleRanges-test.js │ │ │ │ └── sanitizeDraftText-test.js │ │ │ ├── convertFromDraftStateToRaw.js │ │ │ ├── convertFromHTMLToContentBlocks.js │ │ │ ├── convertFromRawToDraftState.js │ │ │ ├── createCharacterList.js │ │ │ ├── decodeEntityRanges.js │ │ │ ├── decodeInlineStyleRanges.js │ │ │ ├── encodeEntityRanges.js │ │ │ ├── encodeInlineStyleRanges.js │ │ │ └── sanitizeDraftText.js │ │ ├── entity/ │ │ │ ├── DraftEntity.js │ │ │ ├── DraftEntityInstance.js │ │ │ ├── DraftEntityMutability.js │ │ │ ├── DraftEntityType.js │ │ │ ├── __mocks__/ │ │ │ │ └── DraftEntity.js │ │ │ ├── __tests__/ │ │ │ │ ├── DraftEntity-test.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── DraftEntity-test.js.snap │ │ │ │ │ └── getEntityKeyForSelection-test.js.snap │ │ │ │ └── getEntityKeyForSelection-test.js │ │ │ ├── getEntityKeyForSelection.js │ │ │ └── getTextAfterNearestEntity.js │ │ ├── immutable/ │ │ │ ├── BlockMap.js │ │ │ ├── BlockMapBuilder.js │ │ │ ├── BlockNode.js │ │ │ ├── BlockNodeRecord.js │ │ │ ├── BlockTree.js │ │ │ ├── CharacterMetadata.js │ │ │ ├── ContentBlock.js │ │ │ ├── ContentBlockNode.js │ │ │ ├── ContentState.js │ │ │ ├── ContentStateRawType.js │ │ │ ├── DefaultDraftBlockRenderMap.js │ │ │ ├── DefaultDraftInlineStyle.js │ │ │ ├── DraftBlockRenderConfig.js │ │ │ ├── DraftBlockRenderMap.js │ │ │ ├── DraftInlineStyle.js │ │ │ ├── EditorBidiService.js │ │ │ ├── EditorChangeType.js │ │ │ ├── EditorState.js │ │ │ ├── EntityMap.js │ │ │ ├── SampleDraftInlineStyle.js │ │ │ ├── SelectionState.js │ │ │ ├── __tests__/ │ │ │ │ ├── BlockTree-test.js │ │ │ │ ├── CharacterMetadata-test.js │ │ │ │ ├── ContentBlock-test.js │ │ │ │ ├── ContentBlockNode-test.js │ │ │ │ ├── ContentState-test.js │ │ │ │ ├── EditorBidiService-test.js │ │ │ │ ├── EditorState-test.js │ │ │ │ ├── SelectionState-test.js │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── BlockTree-test.js.snap │ │ │ │ │ ├── CharacterMetadata-test.js.snap │ │ │ │ │ ├── ContentBlock-test.js.snap │ │ │ │ │ ├── ContentState-test.js.snap │ │ │ │ │ ├── EditorBidiService-test.js.snap │ │ │ │ │ ├── EditorState-test.js.snap │ │ │ │ │ ├── SelectionState-test.js.snap │ │ │ │ │ └── findRangesImmutable-test.js.snap │ │ │ │ └── findRangesImmutable-test.js │ │ │ └── findRangesImmutable.js │ │ ├── keys/ │ │ │ ├── generateRandomKey.js │ │ │ └── mockUUID.js │ │ ├── modifier/ │ │ │ ├── AtomicBlockUtils.js │ │ │ ├── DraftEntitySegments.js │ │ │ ├── DraftModifier.js │ │ │ ├── DraftRange.js │ │ │ ├── DraftRemovableWord.js │ │ │ ├── RichTextEditorUtil.js │ │ │ ├── RichTextUtils.js │ │ │ ├── __tests__/ │ │ │ │ ├── AtomicBlockUtils-test.js │ │ │ │ ├── DraftRemovableWord-test.js │ │ │ │ ├── RichTextEditorUtil-test.js │ │ │ │ └── __snapshots__/ │ │ │ │ ├── AtomicBlockUtils-test.js.snap │ │ │ │ ├── DraftRemovableWord-test.js.snap │ │ │ │ └── RichTextEditorUtil-test.js.snap │ │ │ ├── exploration/ │ │ │ │ ├── DraftTreeOperations.js │ │ │ │ ├── NestedRichTextEditorUtil.js │ │ │ │ └── __tests__/ │ │ │ │ ├── DraftTreeOperations-test.js │ │ │ │ ├── NestedRichTextEditorUtil-test.js │ │ │ │ └── __snapshots__/ │ │ │ │ ├── DraftTreeOperations-test.js.snap │ │ │ │ └── NestedRichTextEditorUtil-test.js.snap │ │ │ ├── getCharacterRemovalRange.js │ │ │ └── getRangesForDraftEntity.js │ │ ├── paste/ │ │ │ ├── DraftPasteProcessor.js │ │ │ ├── __mocks__/ │ │ │ │ └── getSafeBodyFromHTML.js │ │ │ ├── __tests__/ │ │ │ │ ├── DraftPasteProcessor-test.js │ │ │ │ └── __snapshots__/ │ │ │ │ └── DraftPasteProcessor-test.js.snap │ │ │ └── getSafeBodyFromHTML.js │ │ └── transaction/ │ │ ├── ContentStateInlineStyle.js │ │ ├── __tests__/ │ │ │ ├── ContentStateInlineStyle-test.js │ │ │ ├── __snapshots__/ │ │ │ │ ├── ContentStateInlineStyle-test.js.snap │ │ │ │ ├── applyEntityToContentBlock-test.js.snap │ │ │ │ ├── applyEntityToContentState-test.js.snap │ │ │ │ ├── getContentStateFragment-test.js.snap │ │ │ │ ├── insertFragmentIntoContentState-test.js.snap │ │ │ │ ├── insertIntoList-test.js.snap │ │ │ │ ├── insertTextIntoContentState-test.js.snap │ │ │ │ ├── moveBlockInContentState-test.js.snap │ │ │ │ ├── randomizeBlockMapKeys-test.js.snap │ │ │ │ ├── removeEntitiesAtEdges-test.js.snap │ │ │ │ ├── removeRangeFromContentState-test.js.snap │ │ │ │ └── splitBlockInContentState-test.js.snap │ │ │ ├── applyEntityToContentBlock-test.js │ │ │ ├── applyEntityToContentState-test.js │ │ │ ├── getContentStateFragment-test.js │ │ │ ├── insertFragmentIntoContentState-test.js │ │ │ ├── insertIntoList-test.js │ │ │ ├── insertTextIntoContentState-test.js │ │ │ ├── moveBlockInContentState-test.js │ │ │ ├── randomizeBlockMapKeys-test.js │ │ │ ├── removeEntitiesAtEdges-test.js │ │ │ ├── removeRangeFromContentState-test.js │ │ │ └── splitBlockInContentState-test.js │ │ ├── adjustBlockDepthForContentState.js │ │ ├── applyEntityToContentBlock.js │ │ ├── applyEntityToContentState.js │ │ ├── exploration/ │ │ │ ├── __tests__/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── getNextDelimiterBlockKey-test.js.snap │ │ │ │ └── getNextDelimiterBlockKey-test.js │ │ │ └── getNextDelimiterBlockKey.js │ │ ├── getContentStateFragment.js │ │ ├── getSampleStateForTesting.js │ │ ├── insertFragmentIntoContentState.js │ │ ├── insertIntoList.js │ │ ├── insertTextIntoContentState.js │ │ ├── modifyBlockForContentState.js │ │ ├── moveBlockInContentState.js │ │ ├── randomizeBlockMapKeys.js │ │ ├── removeEntitiesAtEdges.js │ │ ├── removeRangeFromContentState.js │ │ └── splitBlockInContentState.js │ ├── stubs/ │ │ ├── ComposedEntityMutability.js │ │ ├── DraftEditorContents.react.js │ │ ├── DraftEffects.js │ │ ├── DraftJsDebugLogging.js │ │ └── gkx.js │ └── util/ │ ├── getOwnObjectValues.js │ └── uuid.js └── website/ ├── .gitignore ├── README.md ├── docusaurus.config.js ├── package.json ├── sidebars.js ├── src/ │ ├── components/ │ │ └── DraftEditorExample/ │ │ ├── css/ │ │ │ ├── draft.css │ │ │ ├── example.css │ │ │ └── rich-editor.css │ │ └── index.js │ ├── css/ │ │ └── custom.css │ └── pages/ │ ├── index.js │ └── styles.module.css └── static/ └── CNAME