@atlaskit/editor-core 166.0.2 → 167.0.0
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/.eslintrc.js +46 -1
- package/CHANGELOG.md +99 -0
- package/dist/cjs/actions/index.js +26 -2
- package/dist/cjs/create-editor/ReactEditorView.js +2 -0
- package/dist/cjs/create-editor/create-plugins-list.js +1 -2
- package/dist/cjs/editor.js +5 -2
- package/dist/cjs/keymaps/index.js +5 -1
- package/dist/cjs/labs/next/ContentComponents.js +8 -4
- package/dist/cjs/labs/next/full-page.js +14 -8
- package/dist/cjs/nodeviews/getInlineNodeViewProducer.js +7 -3
- package/dist/cjs/nodeviews/getInlineNodeViewProducer.styles.js +3 -1
- package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/styles.js +3 -1
- package/dist/cjs/plugins/analytics/types/enums.js +3 -0
- package/dist/cjs/plugins/annotation/pm-plugins/inline-comment.js +2 -2
- package/dist/cjs/plugins/annotation/pm-plugins/plugin-factory.js +0 -1
- package/dist/cjs/plugins/base/index.js +8 -17
- package/dist/cjs/plugins/base/pm-plugins/better-type-history.js +3 -12
- package/dist/cjs/plugins/base/pm-plugins/inline-cursor-target.js +71 -16
- package/dist/cjs/plugins/block-type/commands/block-type.js +32 -22
- package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/styled.js +4 -2
- package/dist/cjs/plugins/breakout/ui/LayoutButton.js +4 -11
- package/dist/cjs/plugins/card/styles.js +1 -1
- package/dist/cjs/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
- package/dist/cjs/plugins/code-block/actions.js +36 -2
- package/dist/cjs/plugins/code-block/nodeviews/code-block.js +70 -1
- package/dist/cjs/plugins/code-block/pm-plugins/actions.js +2 -1
- package/dist/cjs/plugins/code-block/pm-plugins/main.js +46 -8
- package/dist/cjs/plugins/code-block/styles.js +28 -24
- package/dist/cjs/plugins/collab-edit/index.js +2 -2
- package/dist/cjs/plugins/collab-edit/provider/channel.js +2 -2
- package/dist/cjs/plugins/collab-edit/styles.js +4 -2
- package/dist/cjs/plugins/collab-edit/ui/styles.js +4 -2
- package/dist/cjs/plugins/collab-edit/utils.js +1 -0
- package/dist/cjs/plugins/date/ui/DatePicker/index.js +3 -1
- package/dist/cjs/plugins/expand/ui/styles.js +16 -14
- package/dist/cjs/plugins/extension/commands.js +3 -2
- package/dist/cjs/plugins/extension/context-panel.js +23 -9
- package/dist/cjs/plugins/extension/plugin-factory.js +1 -4
- package/dist/cjs/plugins/extension/pm-plugins/main.js +13 -36
- package/dist/cjs/plugins/extension/ui/Extension/Extension/styles.js +6 -4
- package/dist/cjs/plugins/extension/ui/Extension/InlineExtension/styles.js +3 -1
- package/dist/cjs/plugins/extension/ui/Extension/styles.js +7 -5
- package/dist/cjs/plugins/extension/ui/SaveIndicator/SaveIndicator.js +4 -2
- package/dist/cjs/plugins/extension/utils.js +12 -57
- package/dist/cjs/plugins/fake-text-cursor/styles.js +3 -1
- package/dist/cjs/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
- package/dist/cjs/plugins/feedback-dialog/index.js +0 -1
- package/dist/cjs/plugins/find-replace/styles.js +2 -6
- package/dist/cjs/plugins/find-replace/ui/styles.js +4 -2
- package/dist/cjs/plugins/find-replace/utils/batch-decorations.js +0 -1
- package/dist/cjs/plugins/floating-toolbar/ui/DropdownMenu.js +3 -1
- package/dist/cjs/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +3 -1
- package/dist/cjs/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +2 -2
- package/dist/cjs/plugins/floating-toolbar/ui/Separator.js +3 -1
- package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +6 -4
- package/dist/cjs/plugins/floating-toolbar/ui/styles.js +12 -10
- package/dist/cjs/plugins/grid/styles.js +3 -1
- package/dist/cjs/plugins/help-dialog/ui/styles.js +9 -7
- package/dist/cjs/plugins/hyperlink/pm-plugins/input-rule.js +23 -1
- package/dist/cjs/plugins/hyperlink/pm-plugins/keymap.js +10 -1
- package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +7 -5
- package/dist/cjs/plugins/hyperlink/utils.js +53 -2
- package/dist/cjs/plugins/jira-issue/nodeviews/jira-issue.js +4 -2
- package/dist/cjs/plugins/layout/styles.js +1 -1
- package/dist/cjs/plugins/macro/actions.js +2 -2
- package/dist/cjs/plugins/media/commands/helpers.js +10 -9
- package/dist/cjs/plugins/media/nodeviews/mediaInline.js +25 -6
- package/dist/cjs/plugins/media/nodeviews/mediaNodeView/media.js +6 -0
- package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +2 -2
- package/dist/cjs/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -3
- package/dist/cjs/plugins/media/pm-plugins/main.js +1 -0
- package/dist/cjs/plugins/media/styles.js +1 -1
- package/dist/cjs/plugins/media/ui/CaptionPlaceholder/index.js +3 -1
- package/dist/cjs/plugins/media/ui/Media/DropPlaceholder.js +4 -2
- package/dist/cjs/plugins/media/ui/MediaLinkingToolbar.js +3 -1
- package/dist/cjs/plugins/media/ui/ResizableMediaSingle/index.js +2 -2
- package/dist/cjs/plugins/mentions/styles.js +3 -1
- package/dist/cjs/plugins/mentions/ui/InviteItem/index.js +3 -1
- package/dist/cjs/plugins/mentions/ui/InviteItem/styles.js +4 -2
- package/dist/cjs/plugins/panel/index.js +1 -0
- package/dist/cjs/plugins/panel/nodeviews/panel.js +4 -1
- package/dist/cjs/plugins/panel/pm-plugins/keymaps.js +21 -3
- package/dist/cjs/plugins/paste/handlers.js +44 -6
- package/dist/cjs/plugins/paste/linkify-md-plugin.js +7 -0
- package/dist/cjs/plugins/paste/pm-plugins/analytics.js +9 -1
- package/dist/cjs/plugins/paste/pm-plugins/main.js +27 -1
- package/dist/cjs/plugins/placeholder/index.js +15 -3
- package/dist/cjs/plugins/placeholder/styles.js +3 -1
- package/dist/cjs/plugins/placeholder-text/styles.js +3 -1
- package/dist/cjs/plugins/selection/gap-cursor/styles.js +1 -1
- package/dist/cjs/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
- package/dist/cjs/plugins/status/ui/statusPicker.js +3 -3
- package/dist/cjs/plugins/table/index.js +14 -4
- package/dist/cjs/plugins/table/nodeviews/TableComponent.js +6 -6
- package/dist/cjs/plugins/table/nodeviews/table.js +9 -4
- package/dist/cjs/plugins/table/pm-plugins/main.js +1 -4
- package/dist/cjs/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +118 -0
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/plugin.js +2 -5
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -8
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
- package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
- package/dist/cjs/plugins/table/transforms/column-width.js +1 -2
- package/dist/cjs/plugins/table/transforms/fix-tables.js +1 -3
- package/dist/cjs/plugins/table/ui/FloatingContextualButton/styles.js +4 -1
- package/dist/cjs/plugins/table/ui/FloatingContextualMenu/styles.js +3 -1
- package/dist/cjs/plugins/table/ui/common-styles.js +4 -2
- package/dist/cjs/plugins/table/ui/consts.js +14 -11
- package/dist/cjs/plugins/table/ui/ui-styles.js +17 -10
- package/dist/cjs/plugins/table/utils/decoration.js +3 -4
- package/dist/cjs/plugins/table/utils/paste.js +9 -9
- package/dist/cjs/plugins/type-ahead/index.js +4 -3
- package/dist/cjs/plugins/type-ahead/pm-plugins/decorations.js +3 -1
- package/dist/cjs/plugins/type-ahead/ui/TypeAheadList.js +4 -4
- package/dist/cjs/plugins/type-ahead/ui/TypeAheadListItem.js +11 -9
- package/dist/cjs/plugins/type-ahead/ui/TypeAheadPopup.js +73 -3
- package/dist/cjs/plugins/unsupported-content/styles.js +1 -1
- package/dist/cjs/ui/Addon/Dropdown/styles.js +3 -1
- package/dist/cjs/ui/Addon/DropdownItem/styles.js +3 -1
- package/dist/cjs/ui/Appearance/Chromeless.js +2 -1
- package/dist/cjs/ui/Appearance/Comment/Comment.js +10 -3
- package/dist/cjs/ui/Appearance/Comment/Toolbar.js +4 -2
- package/dist/cjs/ui/Appearance/FullPage/FullPage.js +5 -2
- package/dist/cjs/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
- package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
- package/dist/cjs/ui/Appearance/FullPage/MainToolbar.js +6 -3
- package/dist/cjs/ui/ChromeCollapsed/styles.js +1 -1
- package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +23 -16
- package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
- package/dist/cjs/ui/ConfigPanel/Fields/CheckboxGroup.js +3 -1
- package/dist/cjs/ui/ConfigPanel/Fields/CustomSelect.js +2 -2
- package/dist/cjs/ui/ConfigPanel/Fields/Expand.js +3 -1
- package/dist/cjs/ui/ConfigPanel/Fields/Fieldset.js +3 -1
- package/dist/cjs/ui/ConfigPanel/Fields/UserSelect.js +2 -2
- package/dist/cjs/ui/ConfigPanel/Fields/common/RequiredIndicator.js +3 -1
- package/dist/cjs/ui/ConfigPanel/Header.js +4 -2
- package/dist/cjs/ui/ConfigPanel/NestedForms/RemovableField.js +4 -8
- package/dist/cjs/ui/ConfigPanel/transformers.js +2 -2
- package/dist/cjs/ui/ContentStyles/index.js +4 -2
- package/dist/cjs/ui/ContextPanel/index.js +3 -1
- package/dist/cjs/ui/DropdownMenu/index.js +5 -0
- package/dist/cjs/ui/ElementBrowser/InsertMenu.js +6 -4
- package/dist/cjs/ui/ElementBrowser/ModalElementBrowser.js +4 -2
- package/dist/cjs/ui/ElementBrowser/components/CategoryList.js +4 -2
- package/dist/cjs/ui/ElementBrowser/components/ElementList/ElementList.js +12 -5
- package/dist/cjs/ui/ElementBrowser/components/ElementList/EmptyState.js +3 -1
- package/dist/cjs/ui/ElementBrowser/components/ElementSearch.js +3 -1
- package/dist/cjs/ui/ElementBrowser/constants.js +3 -1
- package/dist/cjs/ui/FloatingToolbar/styles.js +2 -2
- package/dist/cjs/ui/LinkSearch/LinkSearchListItem.js +5 -3
- package/dist/cjs/ui/PanelTextInput/styles.js +3 -1
- package/dist/cjs/ui/PluginSlot/index.js +7 -4
- package/dist/cjs/ui/Toolbar/ToolbarInner.js +2 -1
- package/dist/cjs/ui/Toolbar/ToolbarWithSizeDetector.js +5 -2
- package/dist/cjs/ui/ToolbarFeedback/styles.js +5 -3
- package/dist/cjs/ui/WithFlash/index.js +4 -2
- package/dist/cjs/ui/styles.js +6 -4
- package/dist/cjs/utils/document.js +62 -6
- package/dist/cjs/utils/filter/privacy-filter.js +2 -2
- package/dist/cjs/utils/step.js +17 -1
- package/dist/cjs/version-wrapper.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/actions/index.js +25 -1
- package/dist/es2019/create-editor/ReactEditorView.js +2 -0
- package/dist/es2019/create-editor/create-plugins-list.js +1 -2
- package/dist/es2019/editor.js +5 -2
- package/dist/es2019/keymaps/index.js +5 -1
- package/dist/es2019/labs/next/ContentComponents.js +7 -2
- package/dist/es2019/labs/next/full-page.js +11 -8
- package/dist/es2019/nodeviews/getInlineNodeViewProducer.js +4 -3
- package/dist/es2019/nodeviews/getInlineNodeViewProducer.styles.js +16 -4
- package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/styles.js +2 -1
- package/dist/es2019/plugins/analytics/types/enums.js +3 -0
- package/dist/es2019/plugins/base/index.js +6 -15
- package/dist/es2019/plugins/base/pm-plugins/better-type-history.js +1 -11
- package/dist/es2019/plugins/base/pm-plugins/inline-cursor-target.js +72 -17
- package/dist/es2019/plugins/block-type/commands/block-type.js +25 -16
- package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -2
- package/dist/es2019/plugins/breakout/ui/LayoutButton.js +6 -10
- package/dist/es2019/plugins/card/styles.js +1 -1
- package/dist/es2019/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
- package/dist/es2019/plugins/code-block/actions.js +32 -0
- package/dist/es2019/plugins/code-block/nodeviews/code-block.js +61 -1
- package/dist/es2019/plugins/code-block/pm-plugins/actions.js +2 -1
- package/dist/es2019/plugins/code-block/pm-plugins/main.js +37 -3
- package/dist/es2019/plugins/code-block/styles.js +30 -27
- package/dist/es2019/plugins/collab-edit/styles.js +3 -2
- package/dist/es2019/plugins/collab-edit/ui/styles.js +4 -3
- package/dist/es2019/plugins/collab-edit/utils.js +1 -0
- package/dist/es2019/plugins/date/ui/DatePicker/index.js +3 -2
- package/dist/es2019/plugins/expand/ui/styles.js +15 -14
- package/dist/es2019/plugins/extension/commands.js +3 -2
- package/dist/es2019/plugins/extension/context-panel.js +11 -3
- package/dist/es2019/plugins/extension/plugin-factory.js +1 -3
- package/dist/es2019/plugins/extension/pm-plugins/main.js +12 -38
- package/dist/es2019/plugins/extension/ui/Extension/Extension/styles.js +5 -4
- package/dist/es2019/plugins/extension/ui/Extension/InlineExtension/styles.js +2 -1
- package/dist/es2019/plugins/extension/ui/Extension/styles.js +7 -6
- package/dist/es2019/plugins/extension/ui/SaveIndicator/SaveIndicator.js +4 -4
- package/dist/es2019/plugins/extension/utils.js +2 -37
- package/dist/es2019/plugins/fake-text-cursor/styles.js +3 -2
- package/dist/es2019/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
- package/dist/es2019/plugins/find-replace/styles.js +4 -4
- package/dist/es2019/plugins/find-replace/ui/styles.js +3 -2
- package/dist/es2019/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
- package/dist/es2019/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +2 -1
- package/dist/es2019/plugins/floating-toolbar/ui/Separator.js +2 -1
- package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +4 -4
- package/dist/es2019/plugins/floating-toolbar/ui/styles.js +11 -10
- package/dist/es2019/plugins/grid/styles.js +4 -2
- package/dist/es2019/plugins/help-dialog/ui/styles.js +10 -9
- package/dist/es2019/plugins/hyperlink/pm-plugins/input-rule.js +24 -2
- package/dist/es2019/plugins/hyperlink/pm-plugins/keymap.js +9 -1
- package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +5 -4
- package/dist/es2019/plugins/hyperlink/utils.js +43 -2
- package/dist/es2019/plugins/jira-issue/nodeviews/jira-issue.js +6 -5
- package/dist/es2019/plugins/layout/styles.js +10 -7
- package/dist/es2019/plugins/media/commands/helpers.js +6 -8
- package/dist/es2019/plugins/media/nodeviews/mediaInline.js +21 -5
- package/dist/es2019/plugins/media/nodeviews/mediaNodeView/media.js +7 -0
- package/dist/es2019/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +5 -4
- package/dist/es2019/plugins/media/pm-plugins/main.js +2 -0
- package/dist/es2019/plugins/media/styles.js +3 -3
- package/dist/es2019/plugins/media/ui/CaptionPlaceholder/index.js +2 -1
- package/dist/es2019/plugins/media/ui/Media/DropPlaceholder.js +4 -3
- package/dist/es2019/plugins/media/ui/MediaLinkingToolbar.js +2 -1
- package/dist/es2019/plugins/mentions/styles.js +5 -4
- package/dist/es2019/plugins/mentions/ui/InviteItem/index.js +2 -1
- package/dist/es2019/plugins/mentions/ui/InviteItem/styles.js +3 -2
- package/dist/es2019/plugins/panel/index.js +1 -0
- package/dist/es2019/plugins/panel/nodeviews/panel.js +4 -1
- package/dist/es2019/plugins/panel/pm-plugins/keymaps.js +22 -4
- package/dist/es2019/plugins/paste/handlers.js +45 -7
- package/dist/es2019/plugins/paste/linkify-md-plugin.js +7 -1
- package/dist/es2019/plugins/paste/pm-plugins/analytics.js +4 -1
- package/dist/es2019/plugins/paste/pm-plugins/main.js +27 -2
- package/dist/es2019/plugins/placeholder/index.js +12 -1
- package/dist/es2019/plugins/placeholder/styles.js +3 -1
- package/dist/es2019/plugins/placeholder-text/styles.js +5 -4
- package/dist/es2019/plugins/selection/gap-cursor/styles.js +9 -9
- package/dist/es2019/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
- package/dist/es2019/plugins/status/ui/statusPicker.js +3 -3
- package/dist/es2019/plugins/table/index.js +13 -4
- package/dist/es2019/plugins/table/nodeviews/TableComponent.js +6 -6
- package/dist/es2019/plugins/table/nodeviews/table.js +6 -2
- package/dist/es2019/plugins/table/pm-plugins/main.js +1 -4
- package/dist/es2019/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +106 -0
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/plugin.js +2 -4
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/misc.js +3 -7
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
- package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
- package/dist/es2019/plugins/table/transforms/column-width.js +1 -2
- package/dist/es2019/plugins/table/transforms/fix-tables.js +1 -3
- package/dist/es2019/plugins/table/ui/FloatingContextualButton/styles.js +4 -2
- package/dist/es2019/plugins/table/ui/FloatingContextualMenu/styles.js +4 -3
- package/dist/es2019/plugins/table/ui/common-styles.js +29 -27
- package/dist/es2019/plugins/table/ui/consts.js +15 -12
- package/dist/es2019/plugins/table/ui/ui-styles.js +28 -23
- package/dist/es2019/plugins/table/utils/decoration.js +1 -4
- package/dist/es2019/plugins/table/utils/paste.js +9 -9
- package/dist/es2019/plugins/type-ahead/index.js +4 -3
- package/dist/es2019/plugins/type-ahead/pm-plugins/decorations.js +2 -1
- package/dist/es2019/plugins/type-ahead/ui/TypeAheadList.js +4 -4
- package/dist/es2019/plugins/type-ahead/ui/TypeAheadListItem.js +10 -9
- package/dist/es2019/plugins/type-ahead/ui/TypeAheadPopup.js +64 -6
- package/dist/es2019/plugins/unsupported-content/styles.js +1 -1
- package/dist/es2019/ui/Addon/Dropdown/styles.js +3 -2
- package/dist/es2019/ui/Addon/DropdownItem/styles.js +3 -2
- package/dist/es2019/ui/Appearance/Chromeless.js +2 -1
- package/dist/es2019/ui/Appearance/Comment/Comment.js +9 -4
- package/dist/es2019/ui/Appearance/Comment/Toolbar.js +4 -2
- package/dist/es2019/ui/Appearance/FullPage/FullPage.js +6 -2
- package/dist/es2019/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
- package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
- package/dist/es2019/ui/Appearance/FullPage/MainToolbar.js +7 -3
- package/dist/es2019/ui/ChromeCollapsed/styles.js +4 -3
- package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +10 -2
- package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
- package/dist/es2019/ui/ConfigPanel/ErrorMessage/ErrorImage.js +3 -0
- package/dist/es2019/ui/ConfigPanel/Fields/CheckboxGroup.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/Expand.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/Fieldset.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Fields/common/RequiredIndicator.js +2 -1
- package/dist/es2019/ui/ConfigPanel/Header.js +3 -2
- package/dist/es2019/ui/ConfigPanel/NestedForms/RemovableField.js +4 -3
- package/dist/es2019/ui/ContentStyles/index.js +3 -2
- package/dist/es2019/ui/ContextPanel/index.js +2 -1
- package/dist/es2019/ui/DropdownMenu/index.js +5 -0
- package/dist/es2019/ui/ElementBrowser/InsertMenu.js +6 -3
- package/dist/es2019/ui/ElementBrowser/ModalElementBrowser.js +3 -2
- package/dist/es2019/ui/ElementBrowser/components/CategoryList.js +3 -2
- package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +12 -5
- package/dist/es2019/ui/ElementBrowser/components/ElementList/EmptyState.js +2 -1
- package/dist/es2019/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +3 -0
- package/dist/es2019/ui/ElementBrowser/components/ElementSearch.js +2 -1
- package/dist/es2019/ui/ElementBrowser/constants.js +3 -1
- package/dist/es2019/ui/FloatingToolbar/styles.js +4 -4
- package/dist/es2019/ui/LinkSearch/LinkSearchListItem.js +4 -3
- package/dist/es2019/ui/PanelTextInput/styles.js +5 -5
- package/dist/es2019/ui/PluginSlot/index.js +7 -4
- package/dist/es2019/ui/Toolbar/ToolbarInner.js +2 -1
- package/dist/es2019/ui/Toolbar/ToolbarWithSizeDetector.js +4 -2
- package/dist/es2019/ui/ToolbarFeedback/styles.js +5 -4
- package/dist/es2019/ui/WithFlash/index.js +4 -3
- package/dist/es2019/ui/styles.js +10 -9
- package/dist/es2019/utils/document.js +58 -5
- package/dist/es2019/utils/filter/privacy-filter.js +1 -1
- package/dist/es2019/utils/step.js +12 -1
- package/dist/es2019/version-wrapper.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/actions/index.js +27 -2
- package/dist/esm/create-editor/ErrorBoundary.js +1 -1
- package/dist/esm/create-editor/ReactEditorView.js +2 -0
- package/dist/esm/create-editor/create-plugins-list.js +1 -2
- package/dist/esm/editor.js +6 -4
- package/dist/esm/keymaps/index.js +5 -1
- package/dist/esm/labs/next/ContentComponents.js +8 -4
- package/dist/esm/labs/next/full-page.js +11 -8
- package/dist/esm/nodeviews/getInlineNodeViewProducer.js +4 -3
- package/dist/esm/nodeviews/getInlineNodeViewProducer.styles.js +3 -2
- package/dist/esm/plugins/alignment/ui/ToolbarAlignment/styles.js +2 -1
- package/dist/esm/plugins/analytics/types/enums.js +3 -0
- package/dist/esm/plugins/annotation/pm-plugins/inline-comment.js +1 -1
- package/dist/esm/plugins/annotation/pm-plugins/plugin-factory.js +0 -1
- package/dist/esm/plugins/base/index.js +8 -17
- package/dist/esm/plugins/base/pm-plugins/better-type-history.js +1 -11
- package/dist/esm/plugins/base/pm-plugins/inline-cursor-target.js +72 -17
- package/dist/esm/plugins/block-type/commands/block-type.js +31 -22
- package/dist/esm/plugins/block-type/ui/ToolbarBlockType/styled.js +3 -2
- package/dist/esm/plugins/breakout/ui/LayoutButton.js +3 -5
- package/dist/esm/plugins/card/styles.js +1 -1
- package/dist/esm/plugins/card/ui/LinkToolbarIconDropdown.js +2 -2
- package/dist/esm/plugins/code-block/actions.js +28 -0
- package/dist/esm/plugins/code-block/nodeviews/code-block.js +67 -1
- package/dist/esm/plugins/code-block/pm-plugins/actions.js +2 -1
- package/dist/esm/plugins/code-block/pm-plugins/main.js +39 -3
- package/dist/esm/plugins/code-block/styles.js +27 -23
- package/dist/esm/plugins/collab-edit/index.js +1 -1
- package/dist/esm/plugins/collab-edit/provider/channel.js +1 -1
- package/dist/esm/plugins/collab-edit/styles.js +3 -2
- package/dist/esm/plugins/collab-edit/ui/styles.js +3 -2
- package/dist/esm/plugins/collab-edit/utils.js +2 -0
- package/dist/esm/plugins/custom-autoformat/doc.js +1 -1
- package/dist/esm/plugins/custom-autoformat/index.js +1 -1
- package/dist/esm/plugins/date/ui/DatePicker/index.js +2 -1
- package/dist/esm/plugins/expand/ui/styles.js +15 -14
- package/dist/esm/plugins/extension/actions.js +1 -1
- package/dist/esm/plugins/extension/commands.js +3 -2
- package/dist/esm/plugins/extension/context-panel.js +22 -8
- package/dist/esm/plugins/extension/plugin-factory.js +1 -3
- package/dist/esm/plugins/extension/pm-plugins/main.js +12 -35
- package/dist/esm/plugins/extension/ui/Extension/Extension/styles.js +5 -4
- package/dist/esm/plugins/extension/ui/Extension/ExtensionComponent.js +1 -1
- package/dist/esm/plugins/extension/ui/Extension/InlineExtension/styles.js +2 -1
- package/dist/esm/plugins/extension/ui/Extension/styles.js +6 -5
- package/dist/esm/plugins/extension/ui/SaveIndicator/SaveIndicator.js +3 -2
- package/dist/esm/plugins/extension/utils.js +9 -51
- package/dist/esm/plugins/fake-text-cursor/styles.js +2 -1
- package/dist/esm/plugins/feature-flags-context/feature-flags-from-props.js +3 -2
- package/dist/esm/plugins/feedback-dialog/index.js +1 -2
- package/dist/esm/plugins/feedback-dialog/loadJiraCollectorDialogScript.js +1 -1
- package/dist/esm/plugins/find-replace/styles.js +3 -3
- package/dist/esm/plugins/find-replace/ui/styles.js +3 -2
- package/dist/esm/plugins/find-replace/utils/batch-decorations.js +1 -2
- package/dist/esm/plugins/floating-toolbar/ui/DropdownMenu.js +2 -1
- package/dist/esm/plugins/floating-toolbar/ui/EditorEmojiAddIcon.js +2 -1
- package/dist/esm/plugins/floating-toolbar/ui/ExtensionsPlaceholder.js +1 -1
- package/dist/esm/plugins/floating-toolbar/ui/Separator.js +2 -1
- package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +5 -4
- package/dist/esm/plugins/floating-toolbar/ui/styles.js +11 -10
- package/dist/esm/plugins/grid/styles.js +2 -1
- package/dist/esm/plugins/help-dialog/ui/styles.js +8 -7
- package/dist/esm/plugins/hyperlink/HyperlinkToolbarAppearance.js +1 -1
- package/dist/esm/plugins/hyperlink/pm-plugins/input-rule.js +24 -2
- package/dist/esm/plugins/hyperlink/pm-plugins/keymap.js +9 -1
- package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/HyperlinkAddToolbar.js +5 -5
- package/dist/esm/plugins/hyperlink/utils.js +44 -2
- package/dist/esm/plugins/image-upload/pm-plugins/main.js +1 -1
- package/dist/esm/plugins/jira-issue/nodeviews/jira-issue.js +3 -2
- package/dist/esm/plugins/layout/styles.js +1 -1
- package/dist/esm/plugins/macro/actions.js +1 -1
- package/dist/esm/plugins/media/commands/helpers.js +6 -8
- package/dist/esm/plugins/media/nodeviews/mediaGroup.js +1 -1
- package/dist/esm/plugins/media/nodeviews/mediaInline.js +23 -6
- package/dist/esm/plugins/media/nodeviews/mediaNodeUpdater.js +1 -1
- package/dist/esm/plugins/media/nodeviews/mediaNodeView/media.js +8 -1
- package/dist/esm/plugins/media/nodeviews/mediaSingle.js +1 -1
- package/dist/esm/plugins/media/picker-facade.js +1 -1
- package/dist/esm/plugins/media/pm-plugins/alt-text/ui/AltTextEdit.js +4 -3
- package/dist/esm/plugins/media/pm-plugins/main.js +3 -1
- package/dist/esm/plugins/media/styles.js +1 -1
- package/dist/esm/plugins/media/toolbar/utils.js +1 -1
- package/dist/esm/plugins/media/ui/CaptionPlaceholder/index.js +2 -1
- package/dist/esm/plugins/media/ui/Media/DropPlaceholder.js +3 -2
- package/dist/esm/plugins/media/ui/MediaLinkingToolbar.js +2 -1
- package/dist/esm/plugins/media/ui/MediaPicker/PickerFacadeProvider.js +1 -1
- package/dist/esm/plugins/media/ui/ResizableMediaSingle/index.js +1 -1
- package/dist/esm/plugins/media/utils/check-media-type.js +1 -1
- package/dist/esm/plugins/mentions/styles.js +2 -1
- package/dist/esm/plugins/mentions/ui/InviteItem/index.js +2 -1
- package/dist/esm/plugins/mentions/ui/InviteItem/styles.js +3 -2
- package/dist/esm/plugins/panel/index.js +1 -0
- package/dist/esm/plugins/panel/nodeviews/panel.js +4 -1
- package/dist/esm/plugins/panel/pm-plugins/keymaps.js +22 -4
- package/dist/esm/plugins/paste/handlers.js +44 -8
- package/dist/esm/plugins/paste/linkify-md-plugin.js +7 -1
- package/dist/esm/plugins/paste/pm-plugins/analytics.js +6 -1
- package/dist/esm/plugins/paste/pm-plugins/main.js +28 -3
- package/dist/esm/plugins/placeholder/index.js +12 -1
- package/dist/esm/plugins/placeholder/styles.js +2 -1
- package/dist/esm/plugins/placeholder-text/styles.js +2 -1
- package/dist/esm/plugins/quick-insert/index.js +1 -1
- package/dist/esm/plugins/selection/gap-cursor/styles.js +1 -1
- package/dist/esm/plugins/selection/pm-plugins/gap-cursor-main.js +2 -2
- package/dist/esm/plugins/status/ui/statusPicker.js +2 -2
- package/dist/esm/plugins/table/index.js +13 -4
- package/dist/esm/plugins/table/nodeviews/TableComponent.js +6 -6
- package/dist/esm/plugins/table/nodeviews/table.js +6 -2
- package/dist/esm/plugins/table/pm-plugins/main.js +1 -4
- package/dist/esm/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.js +102 -0
- package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +2 -4
- package/dist/esm/plugins/table/pm-plugins/table-resizing/plugin.js +2 -5
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/misc.js +4 -8
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/resize-state.js +2 -3
- package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +0 -3
- package/dist/esm/plugins/table/transforms/column-width.js +1 -2
- package/dist/esm/plugins/table/transforms/fix-tables.js +1 -3
- package/dist/esm/plugins/table/ui/FloatingContextualButton/styles.js +3 -1
- package/dist/esm/plugins/table/ui/FloatingContextualMenu/styles.js +2 -1
- package/dist/esm/plugins/table/ui/common-styles.js +4 -2
- package/dist/esm/plugins/table/ui/consts.js +15 -12
- package/dist/esm/plugins/table/ui/ui-styles.js +15 -10
- package/dist/esm/plugins/table/utils/decoration.js +3 -4
- package/dist/esm/plugins/table/utils/paste.js +9 -9
- package/dist/esm/plugins/tasks-and-decisions/ui/Task/task-item-with-providers.js +1 -1
- package/dist/esm/plugins/type-ahead/index.js +4 -3
- package/dist/esm/plugins/type-ahead/pm-plugins/decorations.js +2 -1
- package/dist/esm/plugins/type-ahead/ui/TypeAheadList.js +4 -4
- package/dist/esm/plugins/type-ahead/ui/TypeAheadListItem.js +10 -9
- package/dist/esm/plugins/type-ahead/ui/TypeAheadPopup.js +71 -5
- package/dist/esm/plugins/unsupported-content/styles.js +1 -1
- package/dist/esm/ui/Addon/Dropdown/styles.js +2 -1
- package/dist/esm/ui/Addon/DropdownItem/styles.js +2 -1
- package/dist/esm/ui/Appearance/Chromeless.js +2 -1
- package/dist/esm/ui/Appearance/Comment/Comment.js +10 -3
- package/dist/esm/ui/Appearance/Comment/Toolbar.js +3 -2
- package/dist/esm/ui/Appearance/FullPage/FullPage.js +6 -2
- package/dist/esm/ui/Appearance/FullPage/FullPageContentArea.js +2 -1
- package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +12 -11
- package/dist/esm/ui/Appearance/FullPage/MainToolbar.js +5 -3
- package/dist/esm/ui/ChromeCollapsed/styles.js +1 -1
- package/dist/esm/ui/ConfigPanel/ConfigPanel.js +22 -15
- package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +2 -0
- package/dist/esm/ui/ConfigPanel/ErrorMessage/ErrorImage.js +3 -0
- package/dist/esm/ui/ConfigPanel/Fields/CheckboxGroup.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/CustomSelect.js +1 -1
- package/dist/esm/ui/ConfigPanel/Fields/Expand.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/Fieldset.js +2 -1
- package/dist/esm/ui/ConfigPanel/Fields/UserSelect.js +1 -1
- package/dist/esm/ui/ConfigPanel/Fields/common/RequiredIndicator.js +2 -1
- package/dist/esm/ui/ConfigPanel/FormErrorBoundary.js +1 -1
- package/dist/esm/ui/ConfigPanel/Header.js +3 -2
- package/dist/esm/ui/ConfigPanel/NestedForms/RemovableField.js +3 -2
- package/dist/esm/ui/ConfigPanel/transformers.js +1 -1
- package/dist/esm/ui/ContentStyles/index.js +3 -2
- package/dist/esm/ui/ContextPanel/index.js +2 -1
- package/dist/esm/ui/DropdownMenu/index.js +5 -0
- package/dist/esm/ui/ElementBrowser/InsertMenu.js +5 -4
- package/dist/esm/ui/ElementBrowser/ModalElementBrowser.js +3 -2
- package/dist/esm/ui/ElementBrowser/components/CategoryList.js +3 -2
- package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +11 -5
- package/dist/esm/ui/ElementBrowser/components/ElementList/EmptyState.js +2 -1
- package/dist/esm/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +3 -0
- package/dist/esm/ui/ElementBrowser/components/ElementSearch.js +2 -1
- package/dist/esm/ui/ElementBrowser/constants.js +3 -1
- package/dist/esm/ui/FloatingToolbar/styles.js +3 -3
- package/dist/esm/ui/LinkSearch/LinkSearchListItem.js +4 -3
- package/dist/esm/ui/LinkSearch/index.js +1 -1
- package/dist/esm/ui/PanelTextInput/styles.js +4 -3
- package/dist/esm/ui/PluginSlot/index.js +7 -4
- package/dist/esm/ui/Toolbar/ToolbarInner.js +2 -1
- package/dist/esm/ui/Toolbar/ToolbarWithSizeDetector.js +4 -2
- package/dist/esm/ui/ToolbarFeedback/index.js +1 -1
- package/dist/esm/ui/ToolbarFeedback/styles.js +4 -3
- package/dist/esm/ui/WithFlash/index.js +3 -2
- package/dist/esm/ui/styles.js +5 -4
- package/dist/esm/utils/action.js +1 -1
- package/dist/esm/utils/clipboard.js +1 -1
- package/dist/esm/utils/document.js +59 -5
- package/dist/esm/utils/extensions.js +1 -1
- package/dist/esm/utils/filter/privacy-filter.js +1 -1
- package/dist/esm/utils/step.js +12 -1
- package/dist/esm/version-wrapper.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/actions/index.d.ts +6 -0
- package/dist/types/labs/next/ContentComponents.d.ts +7 -1
- package/dist/types/nodeviews/getInlineNodeViewProducer.d.ts +1 -0
- package/dist/types/plugins/analytics/types/enums.d.ts +3 -0
- package/dist/types/plugins/analytics/types/general-events.d.ts +7 -1
- package/dist/types/plugins/base/pm-plugins/inline-cursor-target.d.ts +1 -1
- package/dist/types/plugins/code-block/actions.d.ts +2 -0
- package/dist/types/plugins/code-block/nodeviews/code-block.d.ts +2 -0
- package/dist/types/plugins/code-block/pm-plugins/actions.d.ts +1 -0
- package/dist/types/plugins/code-block/pm-plugins/main-state.d.ts +1 -0
- package/dist/types/plugins/extension/commands.d.ts +1 -1
- package/dist/types/plugins/extension/pm-plugins/main.d.ts +1 -2
- package/dist/types/plugins/extension/types.d.ts +1 -1
- package/dist/types/plugins/extension/ui/Extension/Extension/index.d.ts +6 -0
- package/dist/types/plugins/extension/utils.d.ts +1 -3
- package/dist/types/plugins/find-replace/styles.d.ts +0 -2
- package/dist/types/plugins/hyperlink/utils.d.ts +8 -0
- package/dist/types/plugins/media/commands/helpers.d.ts +2 -0
- package/dist/types/plugins/media/nodeviews/mediaNodeView/media.d.ts +1 -0
- package/dist/types/plugins/media/pm-plugins/main.d.ts +2 -1
- package/dist/types/plugins/media/pm-plugins/types.d.ts +2 -1
- package/dist/types/plugins/paste/handlers.d.ts +1 -0
- package/dist/types/plugins/paste/pm-plugins/analytics.d.ts +1 -0
- package/dist/types/plugins/table/commands/misc.d.ts +0 -1
- package/dist/types/plugins/table/index.d.ts +0 -1
- package/dist/types/plugins/table/nodeviews/TableComponent.d.ts +1 -0
- package/dist/types/plugins/table/nodeviews/types.d.ts +0 -1
- package/dist/types/plugins/table/pm-plugins/main.d.ts +1 -1
- package/dist/types/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.d.ts +15 -0
- package/dist/types/plugins/table/pm-plugins/table-resizing/event-handlers.d.ts +1 -1
- package/dist/types/plugins/table/pm-plugins/table-resizing/plugin.d.ts +1 -1
- package/dist/types/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +1 -2
- package/dist/types/plugins/table/pm-plugins/table-resizing/utils/resize-state.d.ts +1 -1
- package/dist/types/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +0 -1
- package/dist/types/plugins/table/transforms/fix-tables.d.ts +0 -1
- package/dist/types/plugins/table/types.d.ts +0 -1
- package/dist/types/plugins/table/ui/consts.d.ts +9 -9
- package/dist/types/plugins/type-ahead/ui/TypeAheadList.d.ts +2 -0
- package/dist/types/plugins/type-ahead/ui/TypeAheadListItem.d.ts +4 -4
- package/dist/types/types/editor-appearance-component.d.ts +0 -1
- package/dist/types/types/editor-props.d.ts +4 -0
- package/dist/types/types/feature-flags.d.ts +8 -0
- package/dist/types/types/ui-components.d.ts +1 -0
- package/dist/types/ui/Appearance/FullPage/FullPage.d.ts +1 -0
- package/dist/types/ui/Appearance/FullPage/FullPageContentArea.d.ts +1 -0
- package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +3 -2
- package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +3 -2
- package/dist/types/ui/PluginSlot/index.d.ts +1 -0
- package/dist/types/ui/Toolbar/toolbar-types.d.ts +1 -0
- package/dist/types/utils/document.d.ts +1 -0
- package/dist/types/utils/step.d.ts +1 -0
- package/docs/0-intro.tsx +12 -4
- package/package.json +22 -22
|
@@ -39,25 +39,16 @@ var basePlugin = function basePlugin(options) {
|
|
|
39
39
|
// In Firefox, when the selection is placed between adjacent nodes which are not contenteditatble
|
|
40
40
|
// no cursor is presented to users.
|
|
41
41
|
// In Safari, when the selection is placed between adjacent nodes which are not contenteditatble
|
|
42
|
-
//
|
|
43
|
-
// This plugin
|
|
42
|
+
// it is not possible to navigate with arrow keys.
|
|
43
|
+
// This plugin works around the issues by inserting decorations between
|
|
44
44
|
// inline nodes which are set as contenteditable, and have a zero width space.
|
|
45
|
-
// At time of development, using this workaround in Safari caused additional issues;
|
|
46
|
-
// - visual artifacts when moving across inline nodes (ie. using the arrow key to traverse a
|
|
47
|
-
// series of inline nodes)
|
|
48
|
-
// - blocking the right arrow key when at the start of a line from moving to the end of the
|
|
49
|
-
// previous line.
|
|
50
|
-
// As such we only apply the workaround for firefox and chrome.
|
|
51
|
-
|
|
52
|
-
if (browser.chrome || browser.gecko) {
|
|
53
|
-
plugins.push({
|
|
54
|
-
name: 'inlineCursorTargetPlugin',
|
|
55
|
-
plugin: function plugin() {
|
|
56
|
-
return options && options.allowInlineCursorTarget ? inlineCursorTargetPlugin() : undefined;
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
45
|
|
|
46
|
+
plugins.push({
|
|
47
|
+
name: 'inlineCursorTargetPlugin',
|
|
48
|
+
plugin: function plugin() {
|
|
49
|
+
return options && options.allowInlineCursorTarget ? inlineCursorTargetPlugin() : undefined;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
61
52
|
plugins.push({
|
|
62
53
|
name: 'focusHandlerPlugin',
|
|
63
54
|
plugin: function plugin(_ref2) {
|
|
@@ -4,6 +4,7 @@ import { Fragment } from 'prosemirror-model';
|
|
|
4
4
|
import { closeHistory } from 'prosemirror-history';
|
|
5
5
|
import { ReplaceStep, ReplaceAroundStep } from 'prosemirror-transform';
|
|
6
6
|
import { PluginKey } from 'prosemirror-state';
|
|
7
|
+
import { extractSliceFromStep } from '../../../utils/step';
|
|
7
8
|
|
|
8
9
|
var getEnterKeyboardActionStep = function getEnterKeyboardActionStep(trs) {
|
|
9
10
|
var firstTr = trs.length === 1 && trs[0];
|
|
@@ -25,17 +26,6 @@ var getEnterKeyboardActionStep = function getEnterKeyboardActionStep(trs) {
|
|
|
25
26
|
return replaceSteps[0];
|
|
26
27
|
};
|
|
27
28
|
|
|
28
|
-
var extractSliceFromStep = function extractSliceFromStep(step) {
|
|
29
|
-
if (!(step instanceof ReplaceStep) && !(step instanceof ReplaceAroundStep)) {
|
|
30
|
-
return null;
|
|
31
|
-
} // @ts-ignore This is by design. Slice is a private property, but accesible, from ReplaceStep.
|
|
32
|
-
// However, we need to read it to found if the step was adding a newline
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
var slice = step.slice;
|
|
36
|
-
return slice;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
29
|
var isSliceSplittingBlockNode = function isSliceSplittingBlockNode(slice) {
|
|
40
30
|
var hasOnlyTwoChildren = slice.size > 1 && slice.content.childCount === 2;
|
|
41
31
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DecorationSet, Decoration } from 'prosemirror-view';
|
|
2
2
|
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
|
|
3
3
|
import { PluginKey } from 'prosemirror-state';
|
|
4
|
-
import { ZERO_WIDTH_SPACE } from '@atlaskit/editor-common/utils';
|
|
4
|
+
import { ZERO_WIDTH_SPACE, browser } from '@atlaskit/editor-common/utils';
|
|
5
5
|
import { isTextSelection } from '../../../utils';
|
|
6
6
|
export var inlineCursorTargetStateKey = new PluginKey('inlineCursorTargetPlugin');
|
|
7
7
|
export var isInlineNodeView = function isInlineNodeView(node) {
|
|
@@ -20,13 +20,35 @@ export default (function () {
|
|
|
20
20
|
var selection = tr.selection,
|
|
21
21
|
doc = tr.doc;
|
|
22
22
|
var $from = selection.$from,
|
|
23
|
-
$to = selection.$to;
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
$to = selection.$to; // In Safari, if the cursor target is to the right of the cursor it will block selections
|
|
24
|
+
// made with shift + arrowRight and vice versa for shift + arrowLeft. This is due to a
|
|
25
|
+
// contenteditable bug in safari, where editable elements block the selection but we need
|
|
26
|
+
// the cursor target to be editable for the following:
|
|
27
|
+
// - Ability to navigate with down/up arrows when between inline nodes
|
|
28
|
+
// - Ability to navigate with down/up arrows when between the start of a paragraph & an inline node
|
|
29
|
+
// - Ability to click and drag to select an inline node if it is the first node
|
|
30
|
+
// To prevent blocking the selection, we check handleDOMEvents and add meta to
|
|
31
|
+
// the transaction to prevent the plugin from making cursor target decorations.
|
|
32
|
+
|
|
33
|
+
var safariShiftSelection = tr.getMeta(inlineCursorTargetStateKey);
|
|
34
|
+
|
|
35
|
+
if (selection && isTextSelection(selection) && !safariShiftSelection) {
|
|
26
36
|
var hasInlineNodeViewAfter = isInlineNodeView($from.nodeAfter);
|
|
27
37
|
var hasInlineNodeViewBefore = isInlineNodeView($from.nodeBefore);
|
|
28
|
-
var
|
|
29
|
-
var
|
|
38
|
+
var isAtStartAndInlineNodeViewAfter = $from.parentOffset === 0 && isInlineNodeView($from.nodeAfter);
|
|
39
|
+
var isAtEndAndInlineNodeViewBefore = doc.resolve($from.pos).node().lastChild === $from.nodeBefore && isInlineNodeView($from.nodeBefore);
|
|
40
|
+
|
|
41
|
+
var createWidget = function createWidget(side) {
|
|
42
|
+
var node = document.createElement('span');
|
|
43
|
+
node.contentEditable = 'true';
|
|
44
|
+
node.appendChild(document.createTextNode(ZERO_WIDTH_SPACE));
|
|
45
|
+
node.className = 'cursor-target';
|
|
46
|
+
return Decoration.widget(selection.from, node, {
|
|
47
|
+
raw: true,
|
|
48
|
+
side: side === 'left' ? -1 : 1,
|
|
49
|
+
key: 'inlineCursor'
|
|
50
|
+
});
|
|
51
|
+
}; // Create editable decoration widgets either side of the cursor to allow
|
|
30
52
|
// text input.
|
|
31
53
|
// We check beforeInput events below to prevent content
|
|
32
54
|
// being added to the decorations.
|
|
@@ -37,18 +59,8 @@ export default (function () {
|
|
|
37
59
|
// - positioned between the beginning of another node and an inline node (firefox)
|
|
38
60
|
// - positioned between an inline node and the end of a node (chrome)
|
|
39
61
|
|
|
40
|
-
if ((hasInlineNodeViewAfter || isAtEnd) && (hasInlineNodeViewBefore || isAtStart)) {
|
|
41
|
-
var createWidget = function createWidget(side) {
|
|
42
|
-
var node = document.createElement('span');
|
|
43
|
-
node.contentEditable = 'true';
|
|
44
|
-
node.appendChild(document.createTextNode(ZERO_WIDTH_SPACE));
|
|
45
|
-
return Decoration.widget(selection.from, node, {
|
|
46
|
-
raw: true,
|
|
47
|
-
side: side === 'left' ? -1 : 1,
|
|
48
|
-
key: 'inlineCursor'
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
62
|
|
|
63
|
+
if (!browser.safari && (hasInlineNodeViewAfter || isAtEndAndInlineNodeViewBefore) && (hasInlineNodeViewBefore || isAtStartAndInlineNodeViewAfter)) {
|
|
52
64
|
return {
|
|
53
65
|
cursorTarget: {
|
|
54
66
|
decorations: [createWidget('left'), createWidget('right')],
|
|
@@ -58,6 +70,34 @@ export default (function () {
|
|
|
58
70
|
}
|
|
59
71
|
}
|
|
60
72
|
};
|
|
73
|
+
} // Only create one widget on the left or right of the cursor in Safari.
|
|
74
|
+
// This is to prevent the left key from being blocked when at the start of a paragraph,
|
|
75
|
+
// and the right key from being blocked when at the end of a paragraph. This also
|
|
76
|
+
// improves click and drag selections, making it easier to select the first node.
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
if (browser.safari) {
|
|
80
|
+
if (isAtEndAndInlineNodeViewBefore || hasInlineNodeViewBefore && hasInlineNodeViewAfter) {
|
|
81
|
+
return {
|
|
82
|
+
cursorTarget: {
|
|
83
|
+
decorations: [createWidget('left')],
|
|
84
|
+
positions: {
|
|
85
|
+
from: $from.pos,
|
|
86
|
+
to: $to.pos
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
} else if (isAtStartAndInlineNodeViewAfter) {
|
|
91
|
+
return {
|
|
92
|
+
cursorTarget: {
|
|
93
|
+
decorations: [createWidget('right')],
|
|
94
|
+
positions: {
|
|
95
|
+
from: $from.pos,
|
|
96
|
+
to: $to.pos
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
61
101
|
}
|
|
62
102
|
}
|
|
63
103
|
|
|
@@ -80,6 +120,21 @@ export default (function () {
|
|
|
80
120
|
return null;
|
|
81
121
|
},
|
|
82
122
|
handleDOMEvents: {
|
|
123
|
+
// Workaround to prevent the decorations created by the plugin from
|
|
124
|
+
// blocking shift + arrow left/right selections in safari. When
|
|
125
|
+
// a shift + arrow left/right event is detected, send meta data to the
|
|
126
|
+
// plugin to prevent it from creating decorations.
|
|
127
|
+
// TODO We may be able to remove this when playing the following ticket:
|
|
128
|
+
// https://product-fabric.atlassian.net/browse/ED-14938
|
|
129
|
+
keydown: function keydown(view, event) {
|
|
130
|
+
if (browser.safari && event instanceof KeyboardEvent && event.shiftKey && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {
|
|
131
|
+
view.dispatch(view.state.tr.setMeta(inlineCursorTargetStateKey, {
|
|
132
|
+
cursorTarget: undefined
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return false;
|
|
137
|
+
},
|
|
83
138
|
// Check the DOM to see if there are inline cursor targets
|
|
84
139
|
// after a composition event ends. If so, manually insert the
|
|
85
140
|
// event data in order to prevent contents ending up inside
|
|
@@ -13,6 +13,7 @@ import { shouldSplitSelectedNodeOnNodeInsertion } from '../../../utils/insert';
|
|
|
13
13
|
import { withAnalytics, ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '../../analytics';
|
|
14
14
|
import { filterChildrenBetween } from '../../../utils';
|
|
15
15
|
import { PanelType } from '@atlaskit/adf-schema';
|
|
16
|
+
import { CellSelection } from '@atlaskit/editor-tables';
|
|
16
17
|
export function setBlockType(name) {
|
|
17
18
|
return function (state, dispatch) {
|
|
18
19
|
var nodes = state.schema.nodes;
|
|
@@ -49,14 +50,18 @@ export function setBlockTypeWithAnalytics(name, inputMethod) {
|
|
|
49
50
|
}
|
|
50
51
|
export function setNormalText() {
|
|
51
52
|
return function (state, dispatch) {
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
var selection = state.selection,
|
|
54
|
+
schema = state.schema,
|
|
55
|
+
tr = state.tr;
|
|
56
|
+
var ranges = selection instanceof CellSelection ? selection.ranges : [selection];
|
|
57
|
+
ranges.forEach(function (_ref) {
|
|
58
|
+
var $from = _ref.$from,
|
|
59
|
+
$to = _ref.$to;
|
|
60
|
+
tr.setBlockType($from.pos, $to.pos, schema.nodes.paragraph);
|
|
61
|
+
});
|
|
57
62
|
|
|
58
63
|
if (dispatch) {
|
|
59
|
-
dispatch(tr
|
|
64
|
+
dispatch(tr);
|
|
60
65
|
}
|
|
61
66
|
|
|
62
67
|
return true;
|
|
@@ -118,16 +123,20 @@ export function setNormalTextWithAnalytics(inputMethod) {
|
|
|
118
123
|
}
|
|
119
124
|
export function setHeading(level) {
|
|
120
125
|
return function (state, dispatch) {
|
|
121
|
-
var
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
var selection = state.selection,
|
|
127
|
+
schema = state.schema,
|
|
128
|
+
tr = state.tr;
|
|
129
|
+
var ranges = selection instanceof CellSelection ? selection.ranges : [selection];
|
|
130
|
+
ranges.forEach(function (_ref2) {
|
|
131
|
+
var $from = _ref2.$from,
|
|
132
|
+
$to = _ref2.$to;
|
|
133
|
+
tr.setBlockType($from.pos, $to.pos, schema.nodes.heading, {
|
|
134
|
+
level: level
|
|
135
|
+
});
|
|
136
|
+
});
|
|
126
137
|
|
|
127
138
|
if (dispatch) {
|
|
128
|
-
dispatch(tr
|
|
129
|
-
level: level
|
|
130
|
-
}));
|
|
139
|
+
dispatch(tr);
|
|
131
140
|
}
|
|
132
141
|
|
|
133
142
|
return true;
|
|
@@ -229,9 +238,9 @@ export var insertBlockTypesWithAnalytics = function insertBlockTypesWithAnalytic
|
|
|
229
238
|
function wrapSelectionIn(type) {
|
|
230
239
|
return function (state, dispatch) {
|
|
231
240
|
var tr = state.tr;
|
|
232
|
-
var _state$
|
|
233
|
-
$from = _state$
|
|
234
|
-
$to = _state$
|
|
241
|
+
var _state$selection = state.selection,
|
|
242
|
+
$from = _state$selection.$from,
|
|
243
|
+
$to = _state$selection.$to;
|
|
235
244
|
var _state$schema$marks = state.schema.marks,
|
|
236
245
|
alignment = _state$schema$marks.alignment,
|
|
237
246
|
indentation = _state$schema$marks.indentation;
|
|
@@ -266,9 +275,9 @@ function insertCodeBlock() {
|
|
|
266
275
|
var _state$selection$$fro;
|
|
267
276
|
|
|
268
277
|
var tr = state.tr;
|
|
269
|
-
var _state$
|
|
270
|
-
$to = _state$
|
|
271
|
-
$from = _state$
|
|
278
|
+
var _state$selection2 = state.selection,
|
|
279
|
+
$to = _state$selection2.$to,
|
|
280
|
+
$from = _state$selection2.$from;
|
|
272
281
|
var codeBlock = state.schema.nodes.codeBlock;
|
|
273
282
|
var grandParentType = (_state$selection$$fro = state.selection.$from.node(-1)) === null || _state$selection$$fro === void 0 ? void 0 : _state$selection$$fro.type;
|
|
274
283
|
var parentType = state.selection.$from.parent.type;
|
|
@@ -292,8 +301,8 @@ function insertCodeBlock() {
|
|
|
292
301
|
}
|
|
293
302
|
|
|
294
303
|
export var cleanUpAtTheStartOfDocument = function cleanUpAtTheStartOfDocument(state, dispatch) {
|
|
295
|
-
var
|
|
296
|
-
$cursor =
|
|
304
|
+
var _ref3 = state.selection,
|
|
305
|
+
$cursor = _ref3.$cursor;
|
|
297
306
|
|
|
298
307
|
if ($cursor && !$cursor.nodeBefore && !$cursor.nodeAfter && $cursor.pos === 1) {
|
|
299
308
|
var tr = state.tr,
|
|
@@ -7,12 +7,13 @@ import { css } from '@emotion/react';
|
|
|
7
7
|
import { N400 } from '@atlaskit/theme/colors';
|
|
8
8
|
import { headingsSharedStyles } from '@atlaskit/editor-common/styles';
|
|
9
9
|
import { shortcutStyle } from '../../../../ui/styles';
|
|
10
|
+
import { token } from '@atlaskit/tokens';
|
|
10
11
|
export var blockTypeMenuItemStyle = function blockTypeMenuItemStyle(tagName, selected) {
|
|
11
12
|
// TEMP FIX: See https://product-fabric.atlassian.net/browse/ED-13878
|
|
12
|
-
var selectedStyle = selected ? "".concat(tagName, " { color: white !important; }") : '';
|
|
13
|
+
var selectedStyle = selected ? "".concat(tagName, " { color: ").concat(token('color.text.inverse', 'white'), " !important; }") : '';
|
|
13
14
|
return function (themeProps) {
|
|
14
15
|
return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", ";\n > {\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 0;\n }\n }\n ", ";\n "])), headingsSharedStyles(themeProps), selectedStyle);
|
|
15
16
|
};
|
|
16
17
|
};
|
|
17
18
|
export var keyboardShortcut = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", "\n margin-left: 16px;\n"])), shortcutStyle);
|
|
18
|
-
export var keyboardShortcutSelect = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n"])), N400);
|
|
19
|
+
export var keyboardShortcutSelect = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n"])), token('color.icon', N400));
|
|
@@ -16,7 +16,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
16
16
|
/** @jsx jsx */
|
|
17
17
|
import React from 'react';
|
|
18
18
|
import { css, jsx } from '@emotion/react';
|
|
19
|
-
import
|
|
19
|
+
import { B300, N300, N20A } from '@atlaskit/theme/colors';
|
|
20
20
|
import { injectIntl } from 'react-intl-next';
|
|
21
21
|
import { findParentDomRefOfType, findDomRefAtPos } from 'prosemirror-utils';
|
|
22
22
|
import { Popup } from '@atlaskit/editor-common/ui';
|
|
@@ -32,10 +32,8 @@ import { isBreakoutMarkAllowed } from '../utils/is-breakout-mark-allowed';
|
|
|
32
32
|
import { getPluginState } from '../plugin-key';
|
|
33
33
|
import { NodeSelection } from 'prosemirror-state';
|
|
34
34
|
import { isSupportedNodeForBreakout } from '../utils/is-supported-node';
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
N20A = colors.N20A;
|
|
38
|
-
var toolbarButtonWrapper = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n && button {\n background: ", ";\n color: ", ";\n :hover {\n background: ", ";\n color: white !important;\n }\n }\n"])), N20A, N300, B300);
|
|
35
|
+
import { token } from '@atlaskit/tokens';
|
|
36
|
+
var toolbarButtonWrapper = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n && button {\n background: ", ";\n color: ", ";\n :hover {\n background: ", ";\n color: ", " !important;\n }\n }\n"])), token('color.background.neutral', N20A), token('color.icon', N300), token('color.background.neutral.hovered', B300), token('color.icon', 'white'));
|
|
39
37
|
var BREAKOUT_MODE = {
|
|
40
38
|
FULL_WIDTH: 'full-width',
|
|
41
39
|
CENTER: 'center',
|
|
@@ -8,4 +8,4 @@ import { N20 } from '@atlaskit/theme/colors';
|
|
|
8
8
|
import { SmartCardSharedCssClassName } from '@atlaskit/editor-common/styles';
|
|
9
9
|
import { akEditorSelectedNodeClassName } from '@atlaskit/editor-shared-styles';
|
|
10
10
|
import { token } from '@atlaskit/tokens';
|
|
11
|
-
export var smartCardStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n max-width: calc(100% - 20px);\n vertical-align: top;\n word-break: break-all;\n\n .card {\n padding-left: 2px;\n padding-right: 2px;\n\n .", " > a:focus {\n ", "\n }\n }\n\n &.", "\n .", "\n > a {\n ", "\n }\n .", " > a {\n /* EDM-1717: box-shadow Safari fix start */\n z-index: 1;\n position: relative;\n /* EDM-1717: box-shadow Safari fix end */\n }\n\n &.danger {\n .", " > a {\n box-shadow: 0 0 0 1px\n ", ";\n /* EDM-1717: box-shadow Safari fix start */\n z-index: 2;\n /* EDM-1717: box-shadow Safari fix end */\n }\n }\n }\n\n .", " {\n .", " > div {\n cursor: pointer;\n &:hover {\n background-color: ", ";\n }\n }\n\n &.", "\n .", "\n > div {\n ", "\n }\n\n &.danger {\n .", " > div {\n box-shadow: 0 0 0 1px\n ", " !important;\n }\n }\n }\n\n .", " {\n .", " > div {\n cursor: pointer;\n &::after {\n transition: box-shadow 0s;\n }\n }\n &.", "\n .", "\n > div {\n ", "\n }\n\n &.", "\n .", "\n > div::after {\n ", "\n }\n\n &.danger {\n .media-card-frame::after {\n box-shadow: 0 0 0 1px\n ", " !important;\n background: ", " !important;\n }\n .richMedia-resize-handle-right::after,\n .richMedia-resize-handle-left::after {\n background: ", ";\n }\n }\n }\n"])), SmartCardSharedCssClassName.INLINE_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), SmartCardSharedCssClassName.LOADER_WRAPPER, SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.border.danger', akEditorDeleteBorder), SmartCardSharedCssClassName.BLOCK_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, N20, akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.border.danger', akEditorDeleteBorder), SmartCardSharedCssClassName.EMBED_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), token('color.border.danger', akEditorDeleteBorder), token('color.background.danger', akEditorDeleteBackground), token('color.border.danger', akEditorDeleteBorder));
|
|
11
|
+
export var smartCardStyles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .", " {\n max-width: calc(100% - 20px);\n vertical-align: top;\n word-break: break-all;\n\n .card {\n padding-left: 2px;\n padding-right: 2px;\n\n .", " > a:focus {\n ", "\n }\n }\n\n &.", "\n .", "\n > a {\n ", "\n }\n .", " > a {\n /* EDM-1717: box-shadow Safari fix start */\n z-index: 1;\n position: relative;\n /* EDM-1717: box-shadow Safari fix end */\n }\n\n &.danger {\n .", " > a {\n box-shadow: 0 0 0 1px\n ", ";\n /* EDM-1717: box-shadow Safari fix start */\n z-index: 2;\n /* EDM-1717: box-shadow Safari fix end */\n }\n }\n }\n\n .", " {\n .", " > div {\n cursor: pointer;\n &:hover {\n background-color: ", ";\n }\n }\n\n &.", "\n .", "\n > div {\n ", "\n }\n\n &.danger {\n .", " > div {\n box-shadow: 0 0 0 1px\n ", " !important;\n }\n }\n }\n\n .", " {\n .", " > div {\n cursor: pointer;\n &::after {\n transition: box-shadow 0s;\n }\n }\n &.", "\n .", "\n > div {\n ", "\n }\n\n &.", "\n .", "\n > div::after {\n ", "\n }\n\n &.danger {\n .media-card-frame::after {\n box-shadow: 0 0 0 1px\n ", " !important;\n background: ", " !important;\n }\n .richMedia-resize-handle-right::after,\n .richMedia-resize-handle-left::after {\n background: ", ";\n }\n }\n }\n"])), SmartCardSharedCssClassName.INLINE_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), SmartCardSharedCssClassName.LOADER_WRAPPER, SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.border.danger', akEditorDeleteBorder), SmartCardSharedCssClassName.BLOCK_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.background.neutral.subtle.hovered', N20), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), SmartCardSharedCssClassName.LOADER_WRAPPER, token('color.border.danger', akEditorDeleteBorder), SmartCardSharedCssClassName.EMBED_CARD_CONTAINER, SmartCardSharedCssClassName.LOADER_WRAPPER, akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), akEditorSelectedNodeClassName, SmartCardSharedCssClassName.LOADER_WRAPPER, getSelectionStyles([SelectionStyle.BoxShadow]), token('color.border.danger', akEditorDeleteBorder), token('color.background.danger', akEditorDeleteBackground), token('color.border.danger', akEditorDeleteBorder));
|
|
@@ -17,7 +17,7 @@ var iconBoxStyles = css({
|
|
|
17
17
|
width: ICON_HEIGHT,
|
|
18
18
|
height: ICON_WIDTH,
|
|
19
19
|
overflow: 'hidden',
|
|
20
|
-
border:
|
|
20
|
+
border: "1px solid ".concat(token('color.border', 'rgba(223, 225, 229, 0.5)'))
|
|
21
21
|
/* N60 at 50% */
|
|
22
22
|
,
|
|
23
23
|
borderRadius: borderRadius(),
|
|
@@ -25,7 +25,7 @@ var iconBoxStyles = css({
|
|
|
25
25
|
display: 'flex',
|
|
26
26
|
justifyContent: 'center',
|
|
27
27
|
alignItems: 'center',
|
|
28
|
-
backgroundColor: token('
|
|
28
|
+
backgroundColor: token('elevation.surface', 'white')
|
|
29
29
|
});
|
|
30
30
|
var primitiveStyles = css({
|
|
31
31
|
padding: '0.75rem',
|
|
@@ -91,5 +91,33 @@ export var resetCopiedState = function resetCopiedState(state, dispatch) {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
return true;
|
|
95
|
+
};
|
|
96
|
+
export var ignoreFollowingMutations = function ignoreFollowingMutations(state, dispatch) {
|
|
97
|
+
var tr = state.tr;
|
|
98
|
+
var ignoreFollowingMutationsTr = tr;
|
|
99
|
+
ignoreFollowingMutationsTr.setMeta(pluginKey, {
|
|
100
|
+
type: ACTIONS.SET_SHOULD_IGNORE_FOLLOWING_MUTATIONS,
|
|
101
|
+
data: true
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
if (dispatch) {
|
|
105
|
+
dispatch(ignoreFollowingMutationsTr);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return true;
|
|
109
|
+
};
|
|
110
|
+
export var resetShouldIgnoreFollowingMutations = function resetShouldIgnoreFollowingMutations(state, dispatch) {
|
|
111
|
+
var tr = state.tr;
|
|
112
|
+
var ignoreFollowingMutationsTr = tr;
|
|
113
|
+
ignoreFollowingMutationsTr.setMeta(pluginKey, {
|
|
114
|
+
type: ACTIONS.SET_SHOULD_IGNORE_FOLLOWING_MUTATIONS,
|
|
115
|
+
data: false
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
if (dispatch) {
|
|
119
|
+
dispatch(ignoreFollowingMutationsTr);
|
|
120
|
+
}
|
|
121
|
+
|
|
94
122
|
return true;
|
|
95
123
|
};
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
1
2
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
3
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
4
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
5
|
import rafSchedule from 'raf-schd';
|
|
6
|
+
import { browser } from '@atlaskit/editor-common/utils';
|
|
5
7
|
import { DOMSerializer } from 'prosemirror-model';
|
|
6
8
|
import { codeBlockClassNames } from '../ui/class-names';
|
|
9
|
+
import { resetShouldIgnoreFollowingMutations } from '../actions';
|
|
10
|
+
import { getPluginState } from '../pm-plugins/main-state';
|
|
7
11
|
var MATCH_NEWLINES = new RegExp('\n', 'g');
|
|
8
12
|
|
|
9
13
|
var toDOM = function toDOM(node) {
|
|
@@ -61,6 +65,57 @@ export var CodeBlockView = /*#__PURE__*/function () {
|
|
|
61
65
|
}
|
|
62
66
|
|
|
63
67
|
_createClass(CodeBlockView, [{
|
|
68
|
+
key: "updateDOMAndSelection",
|
|
69
|
+
value: function updateDOMAndSelection(savedInnerHTML, newCursorPosition) {
|
|
70
|
+
var _this$dom;
|
|
71
|
+
|
|
72
|
+
if ((_this$dom = this.dom) !== null && _this$dom !== void 0 && _this$dom.childNodes && this.dom.childNodes.length > 1) {
|
|
73
|
+
var _contentView$childNod;
|
|
74
|
+
|
|
75
|
+
var contentView = this.dom.childNodes[1];
|
|
76
|
+
|
|
77
|
+
if ((contentView === null || contentView === void 0 ? void 0 : (_contentView$childNod = contentView.childNodes) === null || _contentView$childNod === void 0 ? void 0 : _contentView$childNod.length) > 0) {
|
|
78
|
+
var codeElement = contentView.firstChild;
|
|
79
|
+
codeElement.innerHTML = savedInnerHTML; // We need to set cursor for the DOM update
|
|
80
|
+
|
|
81
|
+
var textElement = _toConsumableArray(codeElement.childNodes).find(function (child) {
|
|
82
|
+
return child.nodeName === '#text';
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
var sel = window.getSelection();
|
|
86
|
+
var range = document.createRange();
|
|
87
|
+
range.setStart(textElement, newCursorPosition);
|
|
88
|
+
range.collapse(true);
|
|
89
|
+
sel === null || sel === void 0 ? void 0 : sel.removeAllRanges();
|
|
90
|
+
sel === null || sel === void 0 ? void 0 : sel.addRange(range);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}, {
|
|
95
|
+
key: "coalesceDOMElements",
|
|
96
|
+
value: function coalesceDOMElements() {
|
|
97
|
+
var _this$dom2;
|
|
98
|
+
|
|
99
|
+
if ((_this$dom2 = this.dom) !== null && _this$dom2 !== void 0 && _this$dom2.childNodes && this.dom.childNodes.length > 1) {
|
|
100
|
+
var contentView = this.dom.childNodes[1];
|
|
101
|
+
|
|
102
|
+
if (contentView !== null && contentView !== void 0 && contentView.childNodes && contentView.childNodes.length > 1) {
|
|
103
|
+
var savedInnerHTML = '';
|
|
104
|
+
|
|
105
|
+
while (contentView.childNodes.length > 1) {
|
|
106
|
+
var lastChild = contentView.lastChild;
|
|
107
|
+
savedInnerHTML = lastChild.innerHTML + savedInnerHTML;
|
|
108
|
+
contentView.removeChild(lastChild);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
var firstChild = contentView.firstChild;
|
|
112
|
+
savedInnerHTML = firstChild.innerHTML + '\n' + savedInnerHTML;
|
|
113
|
+
var newCursorPosition = firstChild.innerHTML.length + 1;
|
|
114
|
+
setTimeout(this.updateDOMAndSelection.bind(this, savedInnerHTML, newCursorPosition), 20);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}, {
|
|
64
119
|
key: "update",
|
|
65
120
|
value: function update(node) {
|
|
66
121
|
if (node.type !== this.node.type) {
|
|
@@ -74,6 +129,11 @@ export var CodeBlockView = /*#__PURE__*/function () {
|
|
|
74
129
|
|
|
75
130
|
this.node = node;
|
|
76
131
|
this.ensureLineNumbers();
|
|
132
|
+
|
|
133
|
+
if (browser.android) {
|
|
134
|
+
this.coalesceDOMElements();
|
|
135
|
+
resetShouldIgnoreFollowingMutations(this.view.state, this.view.dispatch);
|
|
136
|
+
}
|
|
77
137
|
}
|
|
78
138
|
|
|
79
139
|
return true;
|
|
@@ -81,7 +141,13 @@ export var CodeBlockView = /*#__PURE__*/function () {
|
|
|
81
141
|
}, {
|
|
82
142
|
key: "ignoreMutation",
|
|
83
143
|
value: function ignoreMutation(record) {
|
|
84
|
-
|
|
144
|
+
var pluginState = getPluginState(this.view.state);
|
|
145
|
+
|
|
146
|
+
if (pluginState !== null && pluginState !== void 0 && pluginState.shouldIgnoreFollowingMutations) {
|
|
147
|
+
return true;
|
|
148
|
+
} // Ensure updating the line-number gutter doesn't trigger reparsing the codeblock
|
|
149
|
+
|
|
150
|
+
|
|
85
151
|
return record.target === this.lineNumberGutter || record.target.parentNode === this.lineNumberGutter;
|
|
86
152
|
}
|
|
87
153
|
}]);
|
|
@@ -5,6 +5,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
5
5
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
6
|
|
|
7
7
|
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
|
|
8
|
+
import { browser } from '@atlaskit/editor-common/utils';
|
|
8
9
|
import { NodeSelection } from 'prosemirror-state';
|
|
9
10
|
import { codeBidiWarningMessages } from '@atlaskit/editor-common/messages';
|
|
10
11
|
import { codeBlockNodeView } from '../nodeviews/code-block';
|
|
@@ -12,6 +13,7 @@ import { highlightingCodeBlockNodeView } from '../nodeviews/highlighting-code-bl
|
|
|
12
13
|
import { createSelectionClickHandler } from '../../selection/utils';
|
|
13
14
|
import { pluginKey } from '../plugin-key';
|
|
14
15
|
import { ACTIONS } from './actions';
|
|
16
|
+
import { ignoreFollowingMutations, resetShouldIgnoreFollowingMutations } from '../actions';
|
|
15
17
|
import { findCodeBlock } from '../utils';
|
|
16
18
|
import { codeBlockClassNames } from '../ui/class-names';
|
|
17
19
|
import { getFeatureFlags } from '../../feature-flags-context';
|
|
@@ -29,12 +31,41 @@ export var createPlugin = function createPlugin(_ref) {
|
|
|
29
31
|
|
|
30
32
|
if (allowCompositionInputOverride) {
|
|
31
33
|
handleDOMEvents.beforeinput = function (view, event) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
var keyEvent = event;
|
|
35
|
+
var eventInputType = keyEvent.inputType;
|
|
36
|
+
var eventText = keyEvent.data;
|
|
37
|
+
|
|
38
|
+
if (browser.ios && event.composed && // insertParagraph will be the input type when the enter key is pressed.
|
|
39
|
+
eventInputType === 'insertParagraph' && findCodeBlock(view.state, view.state.selection)) {
|
|
34
40
|
event.preventDefault();
|
|
41
|
+
return true;
|
|
42
|
+
} else if (browser.android && event.composed && eventInputType === 'insertCompositionText' && eventText[(eventText === null || eventText === void 0 ? void 0 : eventText.length) - 1] === '\n' && findCodeBlock(view.state, view.state.selection)) {
|
|
43
|
+
var resultingText = event.target.outerText + '\n';
|
|
44
|
+
|
|
45
|
+
if (resultingText.endsWith(eventText)) {
|
|
46
|
+
// End of paragraph
|
|
47
|
+
setTimeout(function () {
|
|
48
|
+
view.someProp('handleKeyDown', function (f) {
|
|
49
|
+
return f(view, new KeyboardEvent('keydown', {
|
|
50
|
+
bubbles: true,
|
|
51
|
+
cancelable: true,
|
|
52
|
+
key: 'Enter',
|
|
53
|
+
code: 'Enter'
|
|
54
|
+
}));
|
|
55
|
+
});
|
|
56
|
+
}, 0);
|
|
57
|
+
} else {
|
|
58
|
+
// Middle of paragraph, end of line
|
|
59
|
+
ignoreFollowingMutations(view.state, view.dispatch);
|
|
60
|
+
}
|
|
61
|
+
|
|
35
62
|
return true;
|
|
36
63
|
}
|
|
37
64
|
|
|
65
|
+
if (browser.android) {
|
|
66
|
+
resetShouldIgnoreFollowingMutations(view.state, view.dispatch);
|
|
67
|
+
}
|
|
68
|
+
|
|
38
69
|
return false;
|
|
39
70
|
};
|
|
40
71
|
}
|
|
@@ -46,7 +77,8 @@ export var createPlugin = function createPlugin(_ref) {
|
|
|
46
77
|
return {
|
|
47
78
|
pos: node ? node.pos : null,
|
|
48
79
|
contentCopied: false,
|
|
49
|
-
isNodeSelected: false
|
|
80
|
+
isNodeSelected: false,
|
|
81
|
+
shouldIgnoreFollowingMutations: false
|
|
50
82
|
};
|
|
51
83
|
},
|
|
52
84
|
apply: function apply(tr, pluginState, _oldState, newState) {
|
|
@@ -67,6 +99,10 @@ export var createPlugin = function createPlugin(_ref) {
|
|
|
67
99
|
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
68
100
|
contentCopied: meta.data
|
|
69
101
|
});
|
|
102
|
+
} else if ((meta === null || meta === void 0 ? void 0 : meta.type) === ACTIONS.SET_SHOULD_IGNORE_FOLLOWING_MUTATIONS) {
|
|
103
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
104
|
+
shouldIgnoreFollowingMutations: meta.data
|
|
105
|
+
});
|
|
70
106
|
}
|
|
71
107
|
|
|
72
108
|
return pluginState;
|