@modusoperandi/licit 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +54 -54
- package/.dockerignore +4 -4
- package/.eslintignore +3 -3
- package/.eslintrc.js +80 -80
- package/.flowconfig +37 -37
- package/.github/workflows/build.yml +35 -30
- package/.github/workflows/lint.yml +30 -30
- package/.prettierignore +5 -5
- package/.prettierrc +4 -4
- package/.stylelintignore +1 -1
- package/.stylelintrc.json +13 -13
- package/.travis.yml +18 -18
- package/CODEOWNERS +40 -40
- package/LICENSE +22 -22
- package/README.md +286 -285
- package/build_collab_server.py +7 -7
- package/build_customstyle_server.py +7 -7
- package/build_image_server.py +7 -7
- package/dist/BlockquoteInsertNewLineCommand.js.flow +55 -55
- package/dist/BlockquoteNodeSpec.js.flow +30 -30
- package/dist/BlockquoteToggleCommand.js.flow +34 -34
- package/dist/BookmarkNodeSpec.js.flow +39 -39
- package/dist/BulletListNodeSpec.js.flow +61 -61
- package/dist/CZIProseMirror.js.flow +90 -90
- package/dist/CodeBlockCommand.js.flow +43 -43
- package/dist/CodeBlockNodeSpec.js.flow +24 -24
- package/dist/CodeMarkSpec.js.flow +14 -14
- package/dist/ContentPlaceholderPlugin.js.flow +187 -187
- package/dist/CursorPlaceholderPlugin.js.flow +115 -115
- package/dist/DocLayoutCommand.js.flow +94 -94
- package/dist/DocNodeSpec.js.flow +64 -64
- package/dist/EMMarkSpec.js.flow +14 -14
- package/dist/EditorCommands.js.flow +128 -128
- package/dist/EditorKeyMap.js.flow +187 -187
- package/dist/EditorMarks.js.flow +71 -71
- package/dist/EditorNodes.js.flow +60 -60
- package/dist/EditorPageLayoutPlugin.js.flow +67 -67
- package/dist/EditorPlugins.js.flow +8 -8
- package/dist/EditorSchema.js.flow +12 -12
- package/dist/EditorState.js.flow +7 -7
- package/dist/FontSizeCommand.js.flow +57 -57
- package/dist/FontSizeMarkSpec.js.flow +49 -49
- package/dist/FontTypeCommand.js.flow +100 -100
- package/dist/FontTypeMarkSpec.js.flow +80 -80
- package/dist/HTMLMutator.js.flow +59 -59
- package/dist/HardBreakNodeSpec.js.flow +15 -15
- package/dist/HeadingCommand.js.flow +51 -51
- package/dist/HeadingNodeSpec.js.flow +54 -54
- package/dist/HistoryRedoCommand.js.flow +20 -20
- package/dist/HistoryUndoCommand.js.flow +20 -20
- package/dist/HorizontalRuleCommand.js.flow +49 -49
- package/dist/HorizontalRuleNodeSpec.js.flow +39 -39
- package/dist/ImageFromURLCommand.js.flow +14 -14
- package/dist/ImageNodeSpec.js.flow +90 -90
- package/dist/ImageSourceCommand.js.flow +117 -117
- package/dist/ImageUploadCommand.js.flow +36 -36
- package/dist/ImageUploadPlaceholderPlugin.js.flow +192 -192
- package/dist/IndentCommand.js.flow +41 -41
- package/dist/LinkMarkSpec.js.flow +32 -32
- package/dist/LinkSetURLCommand.js.flow +103 -103
- package/dist/LinkTooltipPlugin.js.flow +203 -203
- package/dist/ListItemInsertNewLineCommand.js.flow +55 -55
- package/dist/ListItemMergeCommand.js.flow +177 -177
- package/dist/ListItemNodeSpec.js.flow +51 -51
- package/dist/ListSplitCommand.js.flow +32 -32
- package/dist/ListToggleCommand.js.flow +77 -77
- package/dist/MarkNames.js.flow +18 -18
- package/dist/MarkToggleCommand.js.flow +66 -66
- package/dist/MarksClearCommand.js.flow +42 -42
- package/dist/MathEditCommand.js.flow +110 -110
- package/dist/MathNodeSpec.js.flow +46 -46
- package/dist/NodeNames.js.flow +23 -23
- package/dist/OrderedListNodeSpec.js.flow +132 -132
- package/dist/ParagraphNodeSpec.js.flow +160 -160
- package/dist/ParagraphSpacingCommand.js.flow +121 -121
- package/dist/PrintCommand.js.flow +31 -31
- package/dist/SelectionPlaceholderPlugin.js.flow +131 -131
- package/dist/SpacerMarkSpec.js.flow +47 -47
- package/dist/StrikeMarkSpec.js.flow +21 -21
- package/dist/StrongMarkSpec.js.flow +25 -25
- package/dist/StyleView.js.flow +19 -19
- package/dist/TableBackgroundColorCommand.js.flow +75 -75
- package/dist/TableBorderColorCommand.js.flow +75 -75
- package/dist/TableCellColorCommand.js.flow +71 -71
- package/dist/TableCellMenuPlugin.js.flow +125 -125
- package/dist/TableInsertCommand.js.flow +112 -112
- package/dist/TableMergeCellsCommand.js.flow +90 -90
- package/dist/TableNodesSpecs.js.flow +78 -78
- package/dist/TablePlugins.js.flow +14 -14
- package/dist/TableResizePlugin.js.flow +631 -631
- package/dist/TextAlignCommand.js.flow +122 -122
- package/dist/TextColorCommand.js.flow +87 -87
- package/dist/TextColorMarkSpec.js.flow +35 -35
- package/dist/TextHighlightCommand.js.flow +91 -91
- package/dist/TextHighlightMarkSpec.js.flow +38 -38
- package/dist/TextInsertTabSpaceCommand.js.flow +83 -83
- package/dist/TextLineSpacingCommand.js.flow +157 -157
- package/dist/TextNoWrapMarkSpec.js.flow +14 -14
- package/dist/TextNodeSpec.js.flow +7 -7
- package/dist/TextSelectionMarkSpec.js.flow +24 -24
- package/dist/TextSubMarkSpec.js.flow +20 -20
- package/dist/TextSuperMarkSpec.js.flow +20 -20
- package/dist/TextUnderlineMarkSpec.js.flow +27 -27
- package/dist/Types.js.flow +75 -75
- package/dist/WebFontLoader.js.flow +22 -22
- package/dist/applyMark.js.flow +61 -61
- package/dist/blockQuoteInputRule.js.flow +36 -36
- package/dist/bom.xml +72 -72
- package/dist/browser.js.flow +7 -7
- package/dist/buildEditorPlugins.js.flow +51 -51
- package/dist/buildInputRules.js.flow +81 -81
- package/dist/clearMarks.js.flow +128 -128
- package/dist/client/CollabConnector.js +2 -2
- package/dist/client/CollabConnector.js.flow +71 -70
- package/dist/client/EditorConnection.js.flow +307 -307
- package/dist/client/Licit.js +145 -72
- package/dist/client/Licit.js.flow +562 -491
- package/dist/client/Licit.test.js +2 -2
- package/dist/client/Licit.test.js.flow +65 -65
- package/dist/client/Reporter.js.flow +37 -37
- package/dist/client/SimpleConnector.js.flow +53 -53
- package/dist/client/http.js.flow +66 -66
- package/dist/client/licit.css +12 -12
- package/dist/client/throttle.js.flow +27 -27
- package/dist/compareNumber.js.flow +11 -11
- package/dist/consolidateListNodes.js +27 -27
- package/dist/consolidateListNodes.js.flow +281 -281
- package/dist/convertFromDOMElement.js.flow +36 -36
- package/dist/convertFromHTML.js.flow +19 -19
- package/dist/convertFromJSON.js.flow +78 -78
- package/dist/convertToCSSPTValue.js.flow +22 -22
- package/dist/convertToJSON.js.flow +7 -7
- package/dist/createCommand.js.flow +40 -40
- package/dist/createEditorKeyMap.js.flow +94 -94
- package/dist/createEmptyEditorState.js.flow +41 -41
- package/dist/createTableResizingPlugin.js.flow +86 -86
- package/dist/findActionableCell.js.flow +74 -74
- package/dist/findActiveMark.js.flow +32 -32
- package/dist/findNodesWithSameMark.js.flow +89 -89
- package/dist/hyphenize.js.flow +17 -17
- package/dist/index.js.flow +10 -10
- package/dist/insertTable.js.flow +56 -56
- package/dist/isBulletListNode.js.flow +9 -9
- package/dist/isEditorStateEmpty.js.flow +32 -32
- package/dist/isInsideListItem.js.flow +13 -13
- package/dist/isListNode.js.flow +13 -13
- package/dist/isNodeSelectionForNodeType.js.flow +15 -15
- package/dist/isOrderedListNode.js.flow +9 -9
- package/dist/isTableNode.js.flow +15 -15
- package/dist/isTextStyleMarkCommandEnabled.js.flow +49 -49
- package/dist/joinDown.js.flow +27 -27
- package/dist/joinListNode.js.flow +55 -55
- package/dist/joinUp.js.flow +39 -39
- package/dist/keymaps.js.flow +185 -185
- package/dist/lookUpElement.js.flow +14 -14
- package/dist/nodeAt.js.flow +12 -12
- package/dist/noop.js.flow +5 -5
- package/dist/normalizeHTML.js.flow +78 -78
- package/dist/patchAnchorElements.js.flow +38 -38
- package/dist/patchBreakElements.js.flow +22 -22
- package/dist/patchElementInlineStyles.js.flow +92 -92
- package/dist/patchListElements.js.flow +276 -276
- package/dist/patchMathElements.js.flow +60 -60
- package/dist/patchParagraphElements.js.flow +20 -20
- package/dist/patchStyleElements.js.flow +194 -194
- package/dist/patchTableElements.js.flow +89 -89
- package/dist/rebaseDocWithSteps.js.flow +42 -42
- package/dist/sanitizeURL.js.flow +13 -13
- package/dist/splitListItem.js.flow +191 -191
- package/dist/styles.css +19 -19
- package/dist/styles0.css +29 -29
- package/dist/toClosestFontPtSize.js.flow +22 -22
- package/dist/toSafeHTMLDocument.js.flow +9 -9
- package/dist/toggleBlockquote.js.flow +91 -91
- package/dist/toggleCodeBlock.js.flow +102 -102
- package/dist/toggleHeading.js.flow +113 -113
- package/dist/toggleList.js.flow +450 -450
- package/dist/transformAndPreserveTextSelection.js.flow +151 -151
- package/dist/ui/AlertInfo.js +1 -1
- package/dist/ui/AlertInfo.js.flow +64 -64
- package/dist/ui/BookmarkNodeView.js.flow +66 -66
- package/dist/ui/ColorEditor.js.flow +101 -101
- package/dist/ui/CommandButton.js.flow +68 -68
- package/dist/ui/CommandMenu.js.flow +75 -75
- package/dist/ui/CommandMenuButton.js.flow +131 -131
- package/dist/ui/CustomButton.js.flow +33 -33
- package/dist/ui/CustomEditorView.js.flow +28 -28
- package/dist/ui/CustomMenu.js.flow +17 -17
- package/dist/ui/CustomMenuItem.js.flow +36 -36
- package/dist/ui/CustomNodeView.js.flow +200 -200
- package/dist/ui/CustomRadioButton.js.flow +65 -65
- package/dist/ui/DocLayoutEditor.js.flow +146 -146
- package/dist/ui/Editor.js.flow +291 -291
- package/dist/ui/EditorFrameset.js.flow +81 -81
- package/dist/ui/EditorToolbar.js.flow +211 -211
- package/dist/ui/EditorToolbarConfig.js.flow +172 -172
- package/dist/ui/FontSizeCommandMenuButton.js.flow +66 -66
- package/dist/ui/FontTypeCommandMenuButton.js.flow +49 -49
- package/dist/ui/Frag.js.flow +13 -13
- package/dist/ui/Icon.js.flow +89 -89
- package/dist/ui/ImageAlignEditor.js.flow +60 -60
- package/dist/ui/ImageInlineEditor.js.flow +67 -67
- package/dist/ui/ImageNodeView.js +1 -11
- package/dist/ui/ImageNodeView.js.flow +404 -416
- package/dist/ui/ImageResizeBox.js.flow +219 -219
- package/dist/ui/ImageURLEditor.js.flow +119 -119
- package/dist/ui/ImageUploadEditor.js.flow +117 -117
- package/dist/ui/KeyCodes.js.flow +12 -12
- package/dist/ui/LinkTooltip.js.flow +85 -85
- package/dist/ui/LinkURLEditor.js.flow +111 -111
- package/dist/ui/ListItemNodeView.js.flow +98 -98
- package/dist/ui/ListTypeButton.js.flow +131 -131
- package/dist/ui/ListTypeCommandButton.js.flow +85 -85
- package/dist/ui/ListTypeMenu.js.flow +70 -70
- package/dist/ui/LoadingIndicator.js.flow +20 -20
- package/dist/ui/MathEditor.js.flow +78 -78
- package/dist/ui/MathInlineEditor.js.flow +102 -102
- package/dist/ui/MathNodeView.js.flow +175 -175
- package/dist/ui/PasteMenu.js.flow +57 -57
- package/dist/ui/PointerSurface.js.flow +141 -141
- package/dist/ui/PopUp.js.flow +77 -77
- package/dist/ui/PopUpManager.js.flow +213 -213
- package/dist/ui/PopUpPosition.js +0 -0
- package/dist/ui/PopUpPosition.js.flow +104 -104
- package/dist/ui/ResizeObserver.js.flow +106 -106
- package/dist/ui/RichTextEditor.js.flow +133 -133
- package/dist/ui/SelectionObserver.js.flow +134 -134
- package/dist/ui/TableCellMenu.js.flow +38 -38
- package/dist/ui/TableGridSizeEditor.js.flow +184 -184
- package/dist/ui/TableNodeView.js.flow +22 -22
- package/dist/ui/TooltipSurface.js.flow +76 -76
- package/dist/ui/bindScrollHandler.js.flow +46 -46
- package/dist/ui/canUseCSSFont.js.flow +43 -43
- package/dist/ui/clamp.js.flow +11 -11
- package/dist/ui/createPopUp.js.flow +205 -205
- package/dist/ui/czi-animations.css +15 -15
- package/dist/ui/czi-body-layout-editor.css +16 -16
- package/dist/ui/czi-bookmark-view.css +10 -10
- package/dist/ui/czi-color-editor.css +56 -56
- package/dist/ui/czi-cursor-placeholder.css +36 -36
- package/dist/ui/czi-custom-button.css +93 -93
- package/dist/ui/czi-custom-menu-button.css +18 -18
- package/dist/ui/czi-custom-menu-item.css +30 -30
- package/dist/ui/czi-custom-menu.css +8 -8
- package/dist/ui/czi-custom-radio-button.css +80 -80
- package/dist/ui/czi-custom-scrollbar.css +21 -21
- package/dist/ui/czi-editor-frameset.css +81 -81
- package/dist/ui/czi-editor-toolbar.css +122 -122
- package/dist/ui/czi-editor.css +220 -220
- package/dist/ui/czi-form.css +104 -104
- package/dist/ui/czi-frag.css +3 -3
- package/dist/ui/czi-heading.css +40 -40
- package/dist/ui/czi-icon.css +72 -72
- package/dist/ui/czi-image-resize-box.css +165 -165
- package/dist/ui/czi-image-upload-editor.css +57 -57
- package/dist/ui/czi-image-upload-placeholder.css +50 -50
- package/dist/ui/czi-image-url-editor.css +38 -38
- package/dist/ui/czi-image-view.css +125 -125
- package/dist/ui/czi-indent.css +137 -137
- package/dist/ui/czi-inline-editor.css +20 -20
- package/dist/ui/czi-link-tooltip.css +71 -71
- package/dist/ui/czi-list.css +410 -410
- package/dist/ui/czi-loading-indicator.css +111 -111
- package/dist/ui/czi-math-view.css +62 -62
- package/dist/ui/czi-pop-up.css +32 -32
- package/dist/ui/czi-selection-placeholder.css +24 -24
- package/dist/ui/czi-table-cell-menu.css +14 -14
- package/dist/ui/czi-table-grid-size-editor.css +37 -37
- package/dist/ui/czi-table.css +86 -86
- package/dist/ui/czi-tooltip-surface.css +45 -45
- package/dist/ui/czi-vars.css +46 -46
- package/dist/ui/findActiveFontSize.js.flow +58 -58
- package/dist/ui/findActiveFontType.js.flow +38 -38
- package/dist/ui/fonts.css +471 -471
- package/dist/ui/handleEditorDrop.js.flow +28 -28
- package/dist/ui/handleEditorKeyDown.js.flow +39 -39
- package/dist/ui/handleEditorPaste.js.flow +33 -33
- package/dist/ui/htmlElementToRect.js.flow +18 -18
- package/dist/ui/icon-font.css +10 -10
- package/dist/ui/injectStyleSheet.js.flow +42 -42
- package/dist/ui/isElementFullyVisible.js.flow +23 -23
- package/dist/ui/isOffline.js.flow +8 -8
- package/dist/ui/isReactClass.js.flow +12 -12
- package/dist/ui/listType.css +21 -21
- package/dist/ui/mathquill-editor/MathQuillEditor.js.flow +159 -159
- package/dist/ui/mathquill-editor/MathQuillEditorSymbols.js.flow +483 -483
- package/dist/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js.flow +48 -48
- package/dist/ui/mathquill-editor/czi-mathquill-editor-symbols-panel.css +39 -39
- package/dist/ui/mathquill-editor/czi-mathquill-editor.css +50 -50
- package/dist/ui/mathquill-editor/mathquill-import-kludge.js.flow +24 -24
- package/dist/ui/preventEventDefault.js.flow +5 -5
- package/dist/ui/rects.js.flow +47 -47
- package/dist/ui/renderLaTeXAsHTML.js.flow +46 -46
- package/dist/ui/resolveImage.js.flow +123 -123
- package/dist/ui/toCSSColor.js.flow +51 -51
- package/dist/ui/toCSSLineSpacing.js.flow +82 -82
- package/dist/ui/toHexColor.js.flow +26 -26
- package/dist/ui/uuid.js.flow +9 -9
- package/dist/updateIndentLevel.js.flow +211 -211
- package/dist/uuid.js.flow +9 -9
- package/flow-typed/@modusoperandilicit-customstyles.js +5 -5
- package/flow-typed/@modusoperandilicit-doc-attrs-step.js +5 -5
- package/flow-typed/@molicit-citation.js +5 -5
- package/flow-typed/create-emotion.js +5 -5
- package/flow-typed/docs-editor.js +3 -3
- package/flow-typed/draft-convert.js +3 -3
- package/flow-typed/draft-js.js +3 -3
- package/flow-typed/flatted.js +5 -5
- package/flow-typed/jquery.js +5 -5
- package/flow-typed/katex.js +6 -6
- package/flow-typed/mathquill.js +5 -5
- package/flow-typed/prosemirror-collab.js +5 -5
- package/flow-typed/prosemirror-commands.js +5 -5
- package/flow-typed/prosemirror-dev-tools.js +5 -5
- package/flow-typed/prosemirror-dropcursor.js +5 -5
- package/flow-typed/prosemirror-gapcursor.js +5 -5
- package/flow-typed/prosemirror-history.js +5 -5
- package/flow-typed/prosemirror-inputrules.js +5 -5
- package/flow-typed/prosemirror-keymap.js +5 -5
- package/flow-typed/prosemirror-model.js +5 -5
- package/flow-typed/prosemirror-state.js +5 -5
- package/flow-typed/prosemirror-tables.js +5 -5
- package/flow-typed/prosemirror-transform.js +5 -5
- package/flow-typed/prosemirror-utils.js +5 -5
- package/flow-typed/prosemirror-view.js +5 -5
- package/flow-typed/resize-observer-polyfill.js +5 -5
- package/flow-typed/uuid.js +5 -5
- package/jest.setup.js +5 -5
- package/licit/client/CustomLicitRuntime.js +95 -95
- package/licit/client/CustomStyleRuntime.js +136 -136
- package/licit/client/index.js +366 -366
- package/licit/index.html +11 -11
- package/licit/server/collab/instance.js +221 -221
- package/licit/server/collab/route.js +69 -69
- package/licit/server/collab/server.js +297 -297
- package/licit/server/collab/start.js +13 -13
- package/licit/server/customstyles/start.js +184 -184
- package/licit/server/image/start.js +58 -58
- package/lint.sh +4 -4
- package/package.json +165 -165
- package/run_collab_server.py +21 -21
- package/run_customstyle_server.py +20 -20
- package/run_image_server.py +20 -20
- package/run_web_server.py +25 -25
- package/scripts/build_bin.js +10 -10
- package/scripts/build_bin.py +103 -103
- package/scripts/ci_check_dist.sh +13 -13
- package/scripts/env.js +6 -6
- package/scripts/webserver.js +35 -35
- package/sonar-project.properties +11 -11
- package/src/BlockquoteInsertNewLineCommand.js +55 -55
- package/src/BlockquoteNodeSpec.js +30 -30
- package/src/BlockquoteToggleCommand.js +34 -34
- package/src/BookmarkNodeSpec.js +39 -39
- package/src/BulletListNodeSpec.js +61 -61
- package/src/CZIProseMirror.js +90 -90
- package/src/CodeBlockCommand.js +43 -43
- package/src/CodeBlockNodeSpec.js +24 -24
- package/src/CodeMarkSpec.js +14 -14
- package/src/ContentPlaceholderPlugin.js +187 -187
- package/src/CursorPlaceholderPlugin.js +115 -115
- package/src/DocLayoutCommand.js +94 -94
- package/src/DocNodeSpec.js +64 -64
- package/src/EMMarkSpec.js +14 -14
- package/src/EditorCommands.js +128 -128
- package/src/EditorKeyMap.js +187 -187
- package/src/EditorMarks.js +71 -71
- package/src/EditorNodes.js +60 -60
- package/src/EditorPageLayoutPlugin.js +67 -67
- package/src/EditorPlugins.js +8 -8
- package/src/EditorSchema.js +12 -12
- package/src/EditorState.js +7 -7
- package/src/FontSizeCommand.js +57 -57
- package/src/FontSizeMarkSpec.js +49 -49
- package/src/FontTypeCommand.js +100 -100
- package/src/FontTypeMarkSpec.js +80 -80
- package/src/HTMLMutator.js +59 -59
- package/src/HardBreakNodeSpec.js +15 -15
- package/src/HeadingCommand.js +51 -51
- package/src/HeadingNodeSpec.js +54 -54
- package/src/HistoryRedoCommand.js +20 -20
- package/src/HistoryUndoCommand.js +20 -20
- package/src/HorizontalRuleCommand.js +49 -49
- package/src/HorizontalRuleNodeSpec.js +39 -39
- package/src/ImageFromURLCommand.js +14 -14
- package/src/ImageNodeSpec.js +90 -90
- package/src/ImageSourceCommand.js +117 -117
- package/src/ImageUploadCommand.js +36 -36
- package/src/ImageUploadPlaceholderPlugin.js +192 -192
- package/src/IndentCommand.js +41 -41
- package/src/LinkMarkSpec.js +32 -32
- package/src/LinkSetURLCommand.js +103 -103
- package/src/LinkTooltipPlugin.js +203 -203
- package/src/ListItemInsertNewLineCommand.js +55 -55
- package/src/ListItemMergeCommand.js +177 -177
- package/src/ListItemNodeSpec.js +51 -51
- package/src/ListSplitCommand.js +32 -32
- package/src/ListToggleCommand.js +77 -77
- package/src/MarkNames.js +18 -18
- package/src/MarkToggleCommand.js +66 -66
- package/src/MarksClearCommand.js +42 -42
- package/src/MathEditCommand.js +110 -110
- package/src/MathNodeSpec.js +46 -46
- package/src/NodeNames.js +23 -23
- package/src/OrderedListNodeSpec.js +132 -132
- package/src/ParagraphNodeSpec.js +160 -160
- package/src/ParagraphSpacingCommand.js +121 -121
- package/src/PrintCommand.js +31 -31
- package/src/SelectionPlaceholderPlugin.js +131 -131
- package/src/SpacerMarkSpec.js +47 -47
- package/src/StrikeMarkSpec.js +21 -21
- package/src/StrongMarkSpec.js +25 -25
- package/src/StyleView.js +19 -19
- package/src/TableBackgroundColorCommand.js +75 -75
- package/src/TableBorderColorCommand.js +75 -75
- package/src/TableCellColorCommand.js +71 -71
- package/src/TableCellMenuPlugin.js +125 -125
- package/src/TableInsertCommand.js +112 -112
- package/src/TableMergeCellsCommand.js +90 -90
- package/src/TableNodesSpecs.js +78 -78
- package/src/TablePlugins.js +14 -14
- package/src/TableResizePlugin.js +631 -631
- package/src/TextAlignCommand.js +122 -122
- package/src/TextColorCommand.js +87 -87
- package/src/TextColorMarkSpec.js +35 -35
- package/src/TextHighlightCommand.js +91 -91
- package/src/TextHighlightMarkSpec.js +38 -38
- package/src/TextInsertTabSpaceCommand.js +83 -83
- package/src/TextLineSpacingCommand.js +157 -157
- package/src/TextNoWrapMarkSpec.js +14 -14
- package/src/TextNodeSpec.js +7 -7
- package/src/TextSelectionMarkSpec.js +24 -24
- package/src/TextSubMarkSpec.js +20 -20
- package/src/TextSuperMarkSpec.js +20 -20
- package/src/TextUnderlineMarkSpec.js +27 -27
- package/src/Types.js +75 -75
- package/src/WebFontLoader.js +22 -22
- package/src/applyMark.js +61 -61
- package/src/blockQuoteInputRule.js +36 -36
- package/src/browser.js +7 -7
- package/src/buildEditorPlugins.js +51 -51
- package/src/buildInputRules.js +81 -81
- package/src/clearMarks.js +128 -128
- package/src/client/CollabConnector.js +71 -70
- package/src/client/EditorConnection.js +307 -307
- package/src/client/Licit.js +562 -491
- package/src/client/Licit.test.js +65 -65
- package/src/client/Reporter.js +37 -37
- package/src/client/SimpleConnector.js +53 -53
- package/src/client/http.js +66 -66
- package/src/client/licit.css +12 -12
- package/src/client/throttle.js +27 -27
- package/src/compareNumber.js +11 -11
- package/src/consolidateListNodes.js +281 -281
- package/src/convertFromDOMElement.js +36 -36
- package/src/convertFromHTML.js +19 -19
- package/src/convertFromJSON.js +78 -78
- package/src/convertToCSSPTValue.js +22 -22
- package/src/convertToJSON.js +7 -7
- package/src/createCommand.js +40 -40
- package/src/createEditorKeyMap.js +94 -94
- package/src/createEmptyEditorState.js +41 -41
- package/src/createTableResizingPlugin.js +86 -86
- package/src/findActionableCell.js +74 -74
- package/src/findActiveMark.js +32 -32
- package/src/findNodesWithSameMark.js +89 -89
- package/src/hyphenize.js +17 -17
- package/src/index.js +10 -10
- package/src/insertTable.js +56 -56
- package/src/isBulletListNode.js +9 -9
- package/src/isEditorStateEmpty.js +32 -32
- package/src/isInsideListItem.js +13 -13
- package/src/isListNode.js +13 -13
- package/src/isNodeSelectionForNodeType.js +15 -15
- package/src/isOrderedListNode.js +9 -9
- package/src/isTableNode.js +15 -15
- package/src/isTextStyleMarkCommandEnabled.js +49 -49
- package/src/joinDown.js +27 -27
- package/src/joinListNode.js +55 -55
- package/src/joinUp.js +39 -39
- package/src/keymaps.js +185 -185
- package/src/lookUpElement.js +14 -14
- package/src/nodeAt.js +12 -12
- package/src/noop.js +5 -5
- package/src/normalizeHTML.js +78 -78
- package/src/patchAnchorElements.js +38 -38
- package/src/patchBreakElements.js +22 -22
- package/src/patchElementInlineStyles.js +92 -92
- package/src/patchListElements.js +276 -276
- package/src/patchMathElements.js +60 -60
- package/src/patchParagraphElements.js +20 -20
- package/src/patchStyleElements.js +194 -194
- package/src/patchTableElements.js +89 -89
- package/src/rebaseDocWithSteps.js +42 -42
- package/src/sanitizeURL.js +13 -13
- package/src/splitListItem.js +191 -191
- package/src/styles.css +19 -19
- package/src/styles0.css +29 -29
- package/src/toClosestFontPtSize.js +22 -22
- package/src/toSafeHTMLDocument.js +9 -9
- package/src/toggleBlockquote.js +91 -91
- package/src/toggleCodeBlock.js +102 -102
- package/src/toggleHeading.js +113 -113
- package/src/toggleList.js +450 -450
- package/src/transformAndPreserveTextSelection.js +151 -151
- package/src/ui/AlertInfo.js +64 -64
- package/src/ui/BookmarkNodeView.js +66 -66
- package/src/ui/ColorEditor.js +101 -101
- package/src/ui/CommandButton.js +68 -68
- package/src/ui/CommandMenu.js +75 -75
- package/src/ui/CommandMenuButton.js +131 -131
- package/src/ui/CustomButton.js +33 -33
- package/src/ui/CustomEditorView.js +28 -28
- package/src/ui/CustomMenu.js +17 -17
- package/src/ui/CustomMenuItem.js +36 -36
- package/src/ui/CustomNodeView.js +200 -200
- package/src/ui/CustomRadioButton.js +65 -65
- package/src/ui/DocLayoutEditor.js +146 -146
- package/src/ui/Editor.js +291 -291
- package/src/ui/EditorFrameset.js +81 -81
- package/src/ui/EditorToolbar.js +211 -211
- package/src/ui/EditorToolbarConfig.js +172 -172
- package/src/ui/FontSizeCommandMenuButton.js +66 -66
- package/src/ui/FontTypeCommandMenuButton.js +49 -49
- package/src/ui/Frag.js +13 -13
- package/src/ui/Icon.js +89 -89
- package/src/ui/ImageAlignEditor.js +60 -60
- package/src/ui/ImageInlineEditor.js +67 -67
- package/src/ui/ImageNodeView.js +404 -416
- package/src/ui/ImageResizeBox.js +219 -219
- package/src/ui/ImageURLEditor.js +119 -119
- package/src/ui/ImageUploadEditor.js +117 -117
- package/src/ui/KeyCodes.js +12 -12
- package/src/ui/LinkTooltip.js +85 -85
- package/src/ui/LinkURLEditor.js +111 -111
- package/src/ui/ListItemNodeView.js +98 -98
- package/src/ui/ListTypeButton.js +131 -131
- package/src/ui/ListTypeCommandButton.js +85 -85
- package/src/ui/ListTypeMenu.js +70 -70
- package/src/ui/LoadingIndicator.js +20 -20
- package/src/ui/MathEditor.js +78 -78
- package/src/ui/MathInlineEditor.js +102 -102
- package/src/ui/MathNodeView.js +175 -175
- package/src/ui/PasteMenu.js +57 -57
- package/src/ui/PointerSurface.js +141 -141
- package/src/ui/PopUp.js +77 -77
- package/src/ui/PopUpManager.js +213 -213
- package/src/ui/PopUpPosition.js +104 -104
- package/src/ui/ResizeObserver.js +106 -106
- package/src/ui/RichTextEditor.js +133 -133
- package/src/ui/SelectionObserver.js +134 -134
- package/src/ui/TableCellMenu.js +38 -38
- package/src/ui/TableGridSizeEditor.js +184 -184
- package/src/ui/TableNodeView.js +22 -22
- package/src/ui/TooltipSurface.js +76 -76
- package/src/ui/bindScrollHandler.js +46 -46
- package/src/ui/canUseCSSFont.js +43 -43
- package/src/ui/clamp.js +11 -11
- package/src/ui/createPopUp.js +205 -205
- package/src/ui/czi-animations.css +15 -15
- package/src/ui/czi-body-layout-editor.css +16 -16
- package/src/ui/czi-bookmark-view.css +10 -10
- package/src/ui/czi-color-editor.css +56 -56
- package/src/ui/czi-cursor-placeholder.css +36 -36
- package/src/ui/czi-custom-button.css +93 -93
- package/src/ui/czi-custom-menu-button.css +18 -18
- package/src/ui/czi-custom-menu-item.css +30 -30
- package/src/ui/czi-custom-menu.css +8 -8
- package/src/ui/czi-custom-radio-button.css +80 -80
- package/src/ui/czi-custom-scrollbar.css +21 -21
- package/src/ui/czi-editor-frameset.css +81 -81
- package/src/ui/czi-editor-toolbar.css +122 -122
- package/src/ui/czi-editor.css +220 -220
- package/src/ui/czi-form.css +104 -104
- package/src/ui/czi-frag.css +3 -3
- package/src/ui/czi-heading.css +40 -40
- package/src/ui/czi-icon.css +72 -72
- package/src/ui/czi-image-resize-box.css +165 -165
- package/src/ui/czi-image-upload-editor.css +57 -57
- package/src/ui/czi-image-upload-placeholder.css +50 -50
- package/src/ui/czi-image-url-editor.css +38 -38
- package/src/ui/czi-image-view.css +125 -125
- package/src/ui/czi-indent.css +137 -137
- package/src/ui/czi-inline-editor.css +20 -20
- package/src/ui/czi-link-tooltip.css +71 -71
- package/src/ui/czi-list.css +410 -410
- package/src/ui/czi-loading-indicator.css +111 -111
- package/src/ui/czi-math-view.css +62 -62
- package/src/ui/czi-pop-up.css +32 -32
- package/src/ui/czi-selection-placeholder.css +24 -24
- package/src/ui/czi-table-cell-menu.css +14 -14
- package/src/ui/czi-table-grid-size-editor.css +37 -37
- package/src/ui/czi-table.css +86 -86
- package/src/ui/czi-tooltip-surface.css +45 -45
- package/src/ui/czi-vars.css +46 -46
- package/src/ui/findActiveFontSize.js +58 -58
- package/src/ui/findActiveFontType.js +38 -38
- package/src/ui/fonts.css +471 -471
- package/src/ui/handleEditorDrop.js +28 -28
- package/src/ui/handleEditorKeyDown.js +39 -39
- package/src/ui/handleEditorPaste.js +33 -33
- package/src/ui/htmlElementToRect.js +18 -18
- package/src/ui/icon-font.css +10 -10
- package/src/ui/injectStyleSheet.js +42 -42
- package/src/ui/isElementFullyVisible.js +23 -23
- package/src/ui/isOffline.js +8 -8
- package/src/ui/isReactClass.js +12 -12
- package/src/ui/listType.css +21 -21
- package/src/ui/mathquill-editor/MathQuillEditor.js +159 -159
- package/src/ui/mathquill-editor/MathQuillEditorSymbols.js +483 -483
- package/src/ui/mathquill-editor/MathQuillEditorSymbolsPanel.js +48 -48
- package/src/ui/mathquill-editor/czi-mathquill-editor-symbols-panel.css +39 -39
- package/src/ui/mathquill-editor/czi-mathquill-editor.css +50 -50
- package/src/ui/mathquill-editor/mathquill-import-kludge.js +24 -24
- package/src/ui/preventEventDefault.js +5 -5
- package/src/ui/rects.js +47 -47
- package/src/ui/renderLaTeXAsHTML.js +46 -46
- package/src/ui/resolveImage.js +123 -123
- package/src/ui/toCSSColor.js +51 -51
- package/src/ui/toCSSLineSpacing.js +82 -82
- package/src/ui/toHexColor.js +26 -26
- package/src/ui/uuid.js +9 -9
- package/src/updateIndentLevel.js +211 -211
- package/src/uuid.js +9 -9
- package/style-service.Dockerfile +26 -26
- package/utils/build_bin.js +9 -9
- package/utils/build_customstyle_server.js +71 -71
- package/utils/build_image_server.js +71 -71
- package/utils/build_licit_collab_server.js +75 -75
- package/utils/build_web_server.js +40 -40
- package/utils/env.js +6 -6
- package/webpack.config.js +126 -126
|
@@ -1,151 +1,151 @@
|
|
|
1
|
-
import { Fragment, Schema } from 'prosemirror-model';
|
|
2
|
-
import { TextSelection } from 'prosemirror-state';
|
|
3
|
-
import { Transform } from 'prosemirror-transform';
|
|
4
|
-
|
|
5
|
-
import { MARK_TEXT_SELECTION } from './MarkNames';
|
|
6
|
-
import { PARAGRAPH, TEXT } from './NodeNames';
|
|
7
|
-
import applyMark from './applyMark';
|
|
8
|
-
import uuid from './ui/uuid';
|
|
9
|
-
|
|
10
|
-
export type SelectionMemo = {
|
|
11
|
-
schema: Schema,
|
|
12
|
-
tr: Transform,
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
// Text used to create temporary selection.
|
|
16
|
-
// This assumes that no user could enter such string manually.
|
|
17
|
-
const PLACEHOLDER_TEXT = `[\u200b\u2800PLACEHOLDER_TEXT_${uuid()}\u2800\u200b]`;
|
|
18
|
-
|
|
19
|
-
// Perform the transform without losing the perceived text selection.
|
|
20
|
-
// The way it works is that this will annotate teh current selection with
|
|
21
|
-
// temporary marks and restores the selection with those marks after performing
|
|
22
|
-
// the transform.
|
|
23
|
-
export default function transformAndPreserveTextSelection(
|
|
24
|
-
tr: Transform,
|
|
25
|
-
schema: Schema,
|
|
26
|
-
fn: (memo: SelectionMemo) => Transform
|
|
27
|
-
): Transform {
|
|
28
|
-
if (tr.getMeta('dryrun')) {
|
|
29
|
-
// There's no need to preserve the selection in dryrun mode.
|
|
30
|
-
return fn({ tr, schema });
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const { selection, doc } = tr;
|
|
34
|
-
const markType = schema.marks[MARK_TEXT_SELECTION];
|
|
35
|
-
if (!markType || !selection || !doc) {
|
|
36
|
-
return tr;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (!(selection instanceof TextSelection)) {
|
|
40
|
-
return tr;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const { from, to } = selection;
|
|
44
|
-
|
|
45
|
-
// Mark current selection so that we could resume the selection later
|
|
46
|
-
// after changing the whole list.
|
|
47
|
-
let fromOffset = 0;
|
|
48
|
-
let toOffset = 0;
|
|
49
|
-
let placeholderTextNode;
|
|
50
|
-
|
|
51
|
-
if (from === to) {
|
|
52
|
-
if (from === 0) {
|
|
53
|
-
return tr;
|
|
54
|
-
}
|
|
55
|
-
// Selection is collapsed, create a temporary selection that the marks can
|
|
56
|
-
// be applied to.
|
|
57
|
-
const currentNode = tr.doc.nodeAt(from);
|
|
58
|
-
const prevNode = tr.doc.nodeAt(from - 1);
|
|
59
|
-
const nextNode = tr.doc.nodeAt(from + 1);
|
|
60
|
-
|
|
61
|
-
if (
|
|
62
|
-
!currentNode &&
|
|
63
|
-
prevNode &&
|
|
64
|
-
prevNode.type.name === PARAGRAPH &&
|
|
65
|
-
!prevNode.firstChild
|
|
66
|
-
) {
|
|
67
|
-
// The selection is at a paragraph node which has no content.
|
|
68
|
-
// Create a temporary text and move selection into that text.
|
|
69
|
-
placeholderTextNode = schema.text(PLACEHOLDER_TEXT);
|
|
70
|
-
tr = tr.insert(from, Fragment.from(placeholderTextNode));
|
|
71
|
-
toOffset = 1;
|
|
72
|
-
} else if (!currentNode && prevNode && prevNode.type.name === TEXT) {
|
|
73
|
-
// The selection is at the end of the text node. Select the last
|
|
74
|
-
// character instead.
|
|
75
|
-
fromOffset = -1;
|
|
76
|
-
} else if (prevNode && currentNode && currentNode.type === prevNode.type) {
|
|
77
|
-
// Ensure that the mark is applied to the same type of node.
|
|
78
|
-
fromOffset = -1;
|
|
79
|
-
} else if (nextNode && currentNode && currentNode.type === nextNode.type) {
|
|
80
|
-
toOffset = 1;
|
|
81
|
-
} else if (nextNode) {
|
|
82
|
-
// Could not find the same type of node, assume the next node is safe to use.
|
|
83
|
-
toOffset = 1;
|
|
84
|
-
} else if (prevNode) {
|
|
85
|
-
// Could not find the same type of node, assume the next node is safe to use.
|
|
86
|
-
fromOffset = -1;
|
|
87
|
-
} else {
|
|
88
|
-
// Selection can't be safely preserved.
|
|
89
|
-
return tr;
|
|
90
|
-
}
|
|
91
|
-
tr = tr.setSelection(
|
|
92
|
-
// [FS] IRAD-1005 2020-07-29
|
|
93
|
-
// Upgrade outdated packages.
|
|
94
|
-
// reset selection using the latest doc.
|
|
95
|
-
// This fixes IRAD-1023
|
|
96
|
-
TextSelection.create(tr.doc, from + fromOffset, to + toOffset)
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// This is an unique ID (by reference).
|
|
101
|
-
const id = {};
|
|
102
|
-
const findMark = (mark) => mark.attrs.id === id;
|
|
103
|
-
|
|
104
|
-
const findMarkRange = () => {
|
|
105
|
-
let markFrom = 0;
|
|
106
|
-
let markTo = 0;
|
|
107
|
-
tr.doc.descendants((node, pos) => {
|
|
108
|
-
if (node.marks && node.marks.find(findMark)) {
|
|
109
|
-
markFrom = markFrom === 0 ? pos : markFrom;
|
|
110
|
-
markTo = pos + node.nodeSize;
|
|
111
|
-
}
|
|
112
|
-
return true;
|
|
113
|
-
});
|
|
114
|
-
return {
|
|
115
|
-
from: markFrom,
|
|
116
|
-
to: markTo,
|
|
117
|
-
};
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
// TODO: This has side-effect. It will cause `tr.docChanged` to be `true`.
|
|
121
|
-
// No matter whether `fn({tr, schema})` did change the doc or not.
|
|
122
|
-
tr = applyMark(tr, schema, markType, { id });
|
|
123
|
-
tr = fn({ tr, schema });
|
|
124
|
-
|
|
125
|
-
const markRange = findMarkRange();
|
|
126
|
-
const selectionRange = {
|
|
127
|
-
from: Math.max(0, markRange.from - fromOffset),
|
|
128
|
-
to: Math.max(0, markRange.to - toOffset),
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
selectionRange.to = Math.max(0, selectionRange.from, selectionRange.to);
|
|
132
|
-
|
|
133
|
-
tr = tr.removeMark(markRange.from, markRange.to, markType);
|
|
134
|
-
|
|
135
|
-
if (placeholderTextNode) {
|
|
136
|
-
tr.doc.descendants((node, pos) => {
|
|
137
|
-
if (node.type.name === TEXT && node.text === PLACEHOLDER_TEXT) {
|
|
138
|
-
tr = tr.delete(pos, pos + PLACEHOLDER_TEXT.length);
|
|
139
|
-
placeholderTextNode = null;
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
return true;
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
tr = tr.setSelection(
|
|
147
|
-
TextSelection.create(tr.doc, selectionRange.from, selectionRange.to)
|
|
148
|
-
);
|
|
149
|
-
|
|
150
|
-
return tr;
|
|
151
|
-
}
|
|
1
|
+
import { Fragment, Schema } from 'prosemirror-model';
|
|
2
|
+
import { TextSelection } from 'prosemirror-state';
|
|
3
|
+
import { Transform } from 'prosemirror-transform';
|
|
4
|
+
|
|
5
|
+
import { MARK_TEXT_SELECTION } from './MarkNames';
|
|
6
|
+
import { PARAGRAPH, TEXT } from './NodeNames';
|
|
7
|
+
import applyMark from './applyMark';
|
|
8
|
+
import uuid from './ui/uuid';
|
|
9
|
+
|
|
10
|
+
export type SelectionMemo = {
|
|
11
|
+
schema: Schema,
|
|
12
|
+
tr: Transform,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// Text used to create temporary selection.
|
|
16
|
+
// This assumes that no user could enter such string manually.
|
|
17
|
+
const PLACEHOLDER_TEXT = `[\u200b\u2800PLACEHOLDER_TEXT_${uuid()}\u2800\u200b]`;
|
|
18
|
+
|
|
19
|
+
// Perform the transform without losing the perceived text selection.
|
|
20
|
+
// The way it works is that this will annotate teh current selection with
|
|
21
|
+
// temporary marks and restores the selection with those marks after performing
|
|
22
|
+
// the transform.
|
|
23
|
+
export default function transformAndPreserveTextSelection(
|
|
24
|
+
tr: Transform,
|
|
25
|
+
schema: Schema,
|
|
26
|
+
fn: (memo: SelectionMemo) => Transform
|
|
27
|
+
): Transform {
|
|
28
|
+
if (tr.getMeta('dryrun')) {
|
|
29
|
+
// There's no need to preserve the selection in dryrun mode.
|
|
30
|
+
return fn({ tr, schema });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const { selection, doc } = tr;
|
|
34
|
+
const markType = schema.marks[MARK_TEXT_SELECTION];
|
|
35
|
+
if (!markType || !selection || !doc) {
|
|
36
|
+
return tr;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (!(selection instanceof TextSelection)) {
|
|
40
|
+
return tr;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const { from, to } = selection;
|
|
44
|
+
|
|
45
|
+
// Mark current selection so that we could resume the selection later
|
|
46
|
+
// after changing the whole list.
|
|
47
|
+
let fromOffset = 0;
|
|
48
|
+
let toOffset = 0;
|
|
49
|
+
let placeholderTextNode;
|
|
50
|
+
|
|
51
|
+
if (from === to) {
|
|
52
|
+
if (from === 0) {
|
|
53
|
+
return tr;
|
|
54
|
+
}
|
|
55
|
+
// Selection is collapsed, create a temporary selection that the marks can
|
|
56
|
+
// be applied to.
|
|
57
|
+
const currentNode = tr.doc.nodeAt(from);
|
|
58
|
+
const prevNode = tr.doc.nodeAt(from - 1);
|
|
59
|
+
const nextNode = tr.doc.nodeAt(from + 1);
|
|
60
|
+
|
|
61
|
+
if (
|
|
62
|
+
!currentNode &&
|
|
63
|
+
prevNode &&
|
|
64
|
+
prevNode.type.name === PARAGRAPH &&
|
|
65
|
+
!prevNode.firstChild
|
|
66
|
+
) {
|
|
67
|
+
// The selection is at a paragraph node which has no content.
|
|
68
|
+
// Create a temporary text and move selection into that text.
|
|
69
|
+
placeholderTextNode = schema.text(PLACEHOLDER_TEXT);
|
|
70
|
+
tr = tr.insert(from, Fragment.from(placeholderTextNode));
|
|
71
|
+
toOffset = 1;
|
|
72
|
+
} else if (!currentNode && prevNode && prevNode.type.name === TEXT) {
|
|
73
|
+
// The selection is at the end of the text node. Select the last
|
|
74
|
+
// character instead.
|
|
75
|
+
fromOffset = -1;
|
|
76
|
+
} else if (prevNode && currentNode && currentNode.type === prevNode.type) {
|
|
77
|
+
// Ensure that the mark is applied to the same type of node.
|
|
78
|
+
fromOffset = -1;
|
|
79
|
+
} else if (nextNode && currentNode && currentNode.type === nextNode.type) {
|
|
80
|
+
toOffset = 1;
|
|
81
|
+
} else if (nextNode) {
|
|
82
|
+
// Could not find the same type of node, assume the next node is safe to use.
|
|
83
|
+
toOffset = 1;
|
|
84
|
+
} else if (prevNode) {
|
|
85
|
+
// Could not find the same type of node, assume the next node is safe to use.
|
|
86
|
+
fromOffset = -1;
|
|
87
|
+
} else {
|
|
88
|
+
// Selection can't be safely preserved.
|
|
89
|
+
return tr;
|
|
90
|
+
}
|
|
91
|
+
tr = tr.setSelection(
|
|
92
|
+
// [FS] IRAD-1005 2020-07-29
|
|
93
|
+
// Upgrade outdated packages.
|
|
94
|
+
// reset selection using the latest doc.
|
|
95
|
+
// This fixes IRAD-1023
|
|
96
|
+
TextSelection.create(tr.doc, from + fromOffset, to + toOffset)
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// This is an unique ID (by reference).
|
|
101
|
+
const id = {};
|
|
102
|
+
const findMark = (mark) => mark.attrs.id === id;
|
|
103
|
+
|
|
104
|
+
const findMarkRange = () => {
|
|
105
|
+
let markFrom = 0;
|
|
106
|
+
let markTo = 0;
|
|
107
|
+
tr.doc.descendants((node, pos) => {
|
|
108
|
+
if (node.marks && node.marks.find(findMark)) {
|
|
109
|
+
markFrom = markFrom === 0 ? pos : markFrom;
|
|
110
|
+
markTo = pos + node.nodeSize;
|
|
111
|
+
}
|
|
112
|
+
return true;
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
from: markFrom,
|
|
116
|
+
to: markTo,
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// TODO: This has side-effect. It will cause `tr.docChanged` to be `true`.
|
|
121
|
+
// No matter whether `fn({tr, schema})` did change the doc or not.
|
|
122
|
+
tr = applyMark(tr, schema, markType, { id });
|
|
123
|
+
tr = fn({ tr, schema });
|
|
124
|
+
|
|
125
|
+
const markRange = findMarkRange();
|
|
126
|
+
const selectionRange = {
|
|
127
|
+
from: Math.max(0, markRange.from - fromOffset),
|
|
128
|
+
to: Math.max(0, markRange.to - toOffset),
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
selectionRange.to = Math.max(0, selectionRange.from, selectionRange.to);
|
|
132
|
+
|
|
133
|
+
tr = tr.removeMark(markRange.from, markRange.to, markType);
|
|
134
|
+
|
|
135
|
+
if (placeholderTextNode) {
|
|
136
|
+
tr.doc.descendants((node, pos) => {
|
|
137
|
+
if (node.type.name === TEXT && node.text === PLACEHOLDER_TEXT) {
|
|
138
|
+
tr = tr.delete(pos, pos + PLACEHOLDER_TEXT.length);
|
|
139
|
+
placeholderTextNode = null;
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
tr = tr.setSelection(
|
|
147
|
+
TextSelection.create(tr.doc, selectionRange.from, selectionRange.to)
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
return tr;
|
|
151
|
+
}
|
package/dist/ui/AlertInfo.js
CHANGED
|
@@ -49,7 +49,7 @@ class AlertInfo extends React.PureComponent {
|
|
|
49
49
|
const title = this.props.title || 'Document Error!';
|
|
50
50
|
const content = this.props.content || 'Unable to load the document. Have issues in Json format, please verify...';
|
|
51
51
|
return /*#__PURE__*/React.createElement("div", {
|
|
52
|
-
className: "alert"
|
|
52
|
+
className: "licit-alert"
|
|
53
53
|
}, /*#__PURE__*/React.createElement("span", {
|
|
54
54
|
className: "closebtn",
|
|
55
55
|
onClick: this._cancel
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import PropTypes from 'prop-types';
|
|
5
|
-
import './czi-form.css';
|
|
6
|
-
|
|
7
|
-
class AlertInfo extends React.PureComponent<any, any> {
|
|
8
|
-
_unmounted = false;
|
|
9
|
-
|
|
10
|
-
constructor(props: any) {
|
|
11
|
-
super(props);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// [FS] IRAD-1005 2020-07-07
|
|
15
|
-
// Upgrade outdated packages.
|
|
16
|
-
// To take care of the property type declaration.
|
|
17
|
-
static propsTypes = {
|
|
18
|
-
initialValue: PropTypes.object,
|
|
19
|
-
close: function (props: any, propName: string) {
|
|
20
|
-
const fn = props[propName];
|
|
21
|
-
if (
|
|
22
|
-
!fn.prototype ||
|
|
23
|
-
(typeof fn.prototype.constructor !== 'function' &&
|
|
24
|
-
fn.prototype.constructor.length !== 1)
|
|
25
|
-
) {
|
|
26
|
-
return new Error(
|
|
27
|
-
propName + ' must be a function with 1 arg of type ImageLike'
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
state = {
|
|
35
|
-
...(this.props.initialValue || {}),
|
|
36
|
-
validValue: null,
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
componentWillUnmount(): void {
|
|
40
|
-
this._unmounted = true;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
render(): React.Element<any> {
|
|
44
|
-
const title = this.props.title || 'Document Error!';
|
|
45
|
-
const content =
|
|
46
|
-
this.props.content ||
|
|
47
|
-
'Unable to load the document. Have issues in Json format, please verify...';
|
|
48
|
-
return (
|
|
49
|
-
<div className="alert">
|
|
50
|
-
<span className="closebtn" onClick={this._cancel}>
|
|
51
|
-
×
|
|
52
|
-
</span>
|
|
53
|
-
<strong>{title}</strong>
|
|
54
|
-
<span>{content}</span>
|
|
55
|
-
</div>
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
_cancel = (): void => {
|
|
60
|
-
this.props.close();
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export default AlertInfo;
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import './czi-form.css';
|
|
6
|
+
|
|
7
|
+
class AlertInfo extends React.PureComponent<any, any> {
|
|
8
|
+
_unmounted = false;
|
|
9
|
+
|
|
10
|
+
constructor(props: any) {
|
|
11
|
+
super(props);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// [FS] IRAD-1005 2020-07-07
|
|
15
|
+
// Upgrade outdated packages.
|
|
16
|
+
// To take care of the property type declaration.
|
|
17
|
+
static propsTypes = {
|
|
18
|
+
initialValue: PropTypes.object,
|
|
19
|
+
close: function (props: any, propName: string) {
|
|
20
|
+
const fn = props[propName];
|
|
21
|
+
if (
|
|
22
|
+
!fn.prototype ||
|
|
23
|
+
(typeof fn.prototype.constructor !== 'function' &&
|
|
24
|
+
fn.prototype.constructor.length !== 1)
|
|
25
|
+
) {
|
|
26
|
+
return new Error(
|
|
27
|
+
propName + ' must be a function with 1 arg of type ImageLike'
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
state = {
|
|
35
|
+
...(this.props.initialValue || {}),
|
|
36
|
+
validValue: null,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
componentWillUnmount(): void {
|
|
40
|
+
this._unmounted = true;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
render(): React.Element<any> {
|
|
44
|
+
const title = this.props.title || 'Document Error!';
|
|
45
|
+
const content =
|
|
46
|
+
this.props.content ||
|
|
47
|
+
'Unable to load the document. Have issues in Json format, please verify...';
|
|
48
|
+
return (
|
|
49
|
+
<div className="licit-alert">
|
|
50
|
+
<span className="closebtn" onClick={this._cancel}>
|
|
51
|
+
×
|
|
52
|
+
</span>
|
|
53
|
+
<strong>{title}</strong>
|
|
54
|
+
<span>{content}</span>
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
_cancel = (): void => {
|
|
60
|
+
this.props.close();
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export default AlertInfo;
|
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
// @flow
|
|
2
|
-
|
|
3
|
-
import { Node } from 'prosemirror-model';
|
|
4
|
-
import { Decoration } from 'prosemirror-view';
|
|
5
|
-
import * as React from 'react';
|
|
6
|
-
|
|
7
|
-
import {
|
|
8
|
-
ATTRIBUTE_BOOKMARK_ID,
|
|
9
|
-
ATTRIBUTE_BOOKMARK_VISIBLE,
|
|
10
|
-
} from './../BookmarkNodeSpec';
|
|
11
|
-
import CustomNodeView from './CustomNodeView';
|
|
12
|
-
import Icon from './Icon';
|
|
13
|
-
|
|
14
|
-
import './czi-bookmark-view.css';
|
|
15
|
-
|
|
16
|
-
import type { NodeViewProps } from './CustomNodeView';
|
|
17
|
-
|
|
18
|
-
class BookmarkViewBody extends React.PureComponent<any, any> {
|
|
19
|
-
props: NodeViewProps;
|
|
20
|
-
|
|
21
|
-
render(): React.Element<any> {
|
|
22
|
-
const { id, visible } = this.props.node.attrs;
|
|
23
|
-
const icon = id && visible ? Icon.get('bookmark') : null;
|
|
24
|
-
return <span onClick={this._onClick}>{icon}</span>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
_onClick = (e: SyntheticEvent<>): void => {
|
|
28
|
-
e.preventDefault();
|
|
29
|
-
const { id } = this.props.node.attrs;
|
|
30
|
-
const hash = '#' + id;
|
|
31
|
-
if (window.location.hash !== hash) {
|
|
32
|
-
window.location.hash = hash;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
class BookmarkNodeView extends CustomNodeView {
|
|
38
|
-
// @override
|
|
39
|
-
createDOMElement(): HTMLElement {
|
|
40
|
-
const el = document.createElement('a');
|
|
41
|
-
el.className = 'czi-bookmark-view';
|
|
42
|
-
this._updateDOM(el);
|
|
43
|
-
return el;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// @override
|
|
47
|
-
update(node: Node, decorations: Array<Decoration>): boolean {
|
|
48
|
-
super.update(node, decorations);
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// @override
|
|
53
|
-
renderReactComponent(): React.Element<any> {
|
|
54
|
-
return <BookmarkViewBody {...this.props} />;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
_updateDOM(el: HTMLElement): void {
|
|
58
|
-
const { id, visible } = this.props.node.attrs;
|
|
59
|
-
el.setAttribute('id', id);
|
|
60
|
-
el.setAttribute('title', id);
|
|
61
|
-
el.setAttribute(ATTRIBUTE_BOOKMARK_ID, id);
|
|
62
|
-
visible && el.setAttribute(ATTRIBUTE_BOOKMARK_VISIBLE, 'true');
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export default BookmarkNodeView;
|
|
1
|
+
// @flow
|
|
2
|
+
|
|
3
|
+
import { Node } from 'prosemirror-model';
|
|
4
|
+
import { Decoration } from 'prosemirror-view';
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
ATTRIBUTE_BOOKMARK_ID,
|
|
9
|
+
ATTRIBUTE_BOOKMARK_VISIBLE,
|
|
10
|
+
} from './../BookmarkNodeSpec';
|
|
11
|
+
import CustomNodeView from './CustomNodeView';
|
|
12
|
+
import Icon from './Icon';
|
|
13
|
+
|
|
14
|
+
import './czi-bookmark-view.css';
|
|
15
|
+
|
|
16
|
+
import type { NodeViewProps } from './CustomNodeView';
|
|
17
|
+
|
|
18
|
+
class BookmarkViewBody extends React.PureComponent<any, any> {
|
|
19
|
+
props: NodeViewProps;
|
|
20
|
+
|
|
21
|
+
render(): React.Element<any> {
|
|
22
|
+
const { id, visible } = this.props.node.attrs;
|
|
23
|
+
const icon = id && visible ? Icon.get('bookmark') : null;
|
|
24
|
+
return <span onClick={this._onClick}>{icon}</span>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
_onClick = (e: SyntheticEvent<>): void => {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
const { id } = this.props.node.attrs;
|
|
30
|
+
const hash = '#' + id;
|
|
31
|
+
if (window.location.hash !== hash) {
|
|
32
|
+
window.location.hash = hash;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
class BookmarkNodeView extends CustomNodeView {
|
|
38
|
+
// @override
|
|
39
|
+
createDOMElement(): HTMLElement {
|
|
40
|
+
const el = document.createElement('a');
|
|
41
|
+
el.className = 'czi-bookmark-view';
|
|
42
|
+
this._updateDOM(el);
|
|
43
|
+
return el;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// @override
|
|
47
|
+
update(node: Node, decorations: Array<Decoration>): boolean {
|
|
48
|
+
super.update(node, decorations);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// @override
|
|
53
|
+
renderReactComponent(): React.Element<any> {
|
|
54
|
+
return <BookmarkViewBody {...this.props} />;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
_updateDOM(el: HTMLElement): void {
|
|
58
|
+
const { id, visible } = this.props.node.attrs;
|
|
59
|
+
el.setAttribute('id', id);
|
|
60
|
+
el.setAttribute('title', id);
|
|
61
|
+
el.setAttribute(ATTRIBUTE_BOOKMARK_ID, id);
|
|
62
|
+
visible && el.setAttribute(ATTRIBUTE_BOOKMARK_VISIBLE, 'true');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export default BookmarkNodeView;
|