@atlaskit/editor-core 181.0.1 → 182.0.1
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/CHANGELOG.md +46 -0
- package/codemods/140.0.0-rc-kraken-fix-type-errors.ts +0 -2
- package/codemods/__tests__/next-remove-allow-more-text-colors-prop.ts +0 -17
- package/codemods/migrates/next-remove-allow-more-text-colors-prop.ts +0 -4
- package/dist/cjs/create-editor/sort-by-order.js +12 -0
- package/dist/cjs/editor-next/editor-migration-component.js +4 -1
- package/dist/cjs/editor-next/utils/deprecationWarnings.js +0 -5
- package/dist/cjs/labs/next/full-page.js +2 -1
- package/dist/cjs/labs/next/presets/default.js +2 -1
- package/dist/cjs/labs/next/presets/universal.js +7 -1
- package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/index.js +2 -1
- package/dist/cjs/plugins/alignment/ui/ToolbarAlignment/styles.js +4 -7
- package/dist/cjs/plugins/analytics/plugin.js +6 -6
- package/dist/cjs/plugins/avatar-group/index.js +5 -2
- package/dist/cjs/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +4 -2
- package/dist/cjs/plugins/base/index.js +4 -2
- package/dist/cjs/plugins/base/pm-plugins/disable-spell-checking.js +1 -3
- package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -6
- package/dist/cjs/plugins/block-type/ui/ToolbarBlockType/index.js +2 -8
- package/dist/cjs/plugins/border/index.js +20 -0
- package/dist/cjs/plugins/card/index.js +4 -2
- package/dist/cjs/plugins/card/toolbar.js +12 -15
- package/dist/cjs/plugins/card/ui/EditLinkToolbar.js +7 -3
- package/dist/cjs/plugins/code-block/toolbar.js +1 -1
- package/dist/cjs/plugins/collab-edit/analytics.js +2 -3
- package/dist/cjs/plugins/collab-edit/events/handlers.js +2 -2
- package/dist/cjs/plugins/collab-edit/events/initialize.js +3 -2
- package/dist/cjs/plugins/collab-edit/index.js +5 -3
- package/dist/cjs/plugins/collab-edit/plugin.js +4 -3
- package/dist/cjs/plugins/collab-edit/ui/avatars-with-plugin-state.js +5 -3
- package/dist/cjs/plugins/collab-edit/ui/avatars.js +2 -3
- package/dist/cjs/plugins/date/index.js +90 -64
- package/dist/cjs/plugins/editor-disabled/index.js +8 -0
- package/dist/cjs/plugins/expand/index.js +4 -1
- package/dist/cjs/plugins/expand/nodeviews/index.js +6 -7
- package/dist/cjs/plugins/expand/pm-plugins/main.js +5 -2
- package/dist/cjs/plugins/extension/extension-api.js +27 -14
- package/dist/cjs/plugins/extension/pm-plugins/main.js +117 -177
- package/dist/cjs/plugins/extension/pm-plugins/utils.js +80 -0
- package/dist/cjs/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +7 -11
- package/dist/cjs/plugins/find-replace/FindReplaceToolbarButtonWithState.js +3 -4
- package/dist/cjs/plugins/find-replace/index.js +5 -2
- package/dist/cjs/plugins/floating-toolbar/index.js +15 -7
- package/dist/cjs/plugins/floating-toolbar/ui/CheckboxModal.js +2 -1
- package/dist/cjs/plugins/floating-toolbar/ui/EmojiPickerButton.js +13 -3
- package/dist/cjs/plugins/floating-toolbar/ui/SimpleModal.js +2 -1
- package/dist/cjs/plugins/floating-toolbar/ui/Toolbar.js +6 -5
- package/dist/cjs/plugins/hyperlink/Toolbar.js +9 -12
- package/dist/cjs/plugins/hyperlink/index.js +6 -2
- package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -4
- package/dist/cjs/plugins/index.js +7 -0
- package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -1
- package/dist/cjs/plugins/list/actions/outdent-list-items-selected.js +5 -5
- package/dist/cjs/plugins/list/commands/index.js +31 -27
- package/dist/cjs/plugins/list/commands/outdent-list.js +2 -3
- package/dist/cjs/plugins/list/index.js +4 -3
- package/dist/cjs/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +3 -1
- package/dist/cjs/plugins/list/pm-plugins/input-rules/index.js +2 -1
- package/dist/cjs/plugins/list/pm-plugins/input-rules/wrapping-join-rule.js +58 -0
- package/dist/cjs/plugins/list/pm-plugins/keymap.js +4 -4
- package/dist/cjs/plugins/list/pm-plugins/main.js +23 -21
- package/dist/cjs/plugins/media/nodeviews/mediaNodeView/media.js +6 -1
- package/dist/cjs/plugins/media/nodeviews/styles.js +13 -1
- package/dist/cjs/plugins/media/toolbar/commands.js +105 -2
- package/dist/cjs/plugins/media/toolbar/imageBorder.js +20 -0
- package/dist/cjs/plugins/media/toolbar/index.js +33 -4
- package/dist/cjs/plugins/media/ui/ImageBorder/index.js +219 -0
- package/dist/cjs/plugins/media/ui/ImageBorder/messages.js +50 -0
- package/dist/cjs/plugins/media/ui/ImageBorder/styles.js +54 -0
- package/dist/cjs/plugins/media/utils/current-media-node.js +28 -5
- package/dist/cjs/plugins/paste/util/index.js +2 -0
- package/dist/cjs/plugins/rank.js +1 -1
- package/dist/cjs/plugins/rule/pm-plugins/input-rule.js +5 -0
- package/dist/cjs/plugins/text-formatting/ui/Toolbar/hooks/clear-formatting-icon.js +2 -1
- package/dist/cjs/plugins/toolbar-lists-indentation/index.js +3 -1
- package/dist/cjs/plugins/toolbar-lists-indentation/ui/Toolbar.js +2 -1
- package/dist/cjs/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +2 -1
- package/dist/cjs/plugins/toolbar-lists-indentation/ui/index.js +6 -3
- package/dist/cjs/plugins/toolbar-lists-indentation/ui/onItemActivated.js +3 -2
- package/dist/cjs/test-utils.js +3 -1
- package/dist/cjs/ui/Appearance/FullPage/FullPageToolbar.js +4 -2
- package/dist/cjs/ui/styles.js +1 -1
- package/dist/cjs/utils/input-rules.js +0 -17
- package/dist/cjs/utils/insert.js +53 -7
- package/dist/cjs/version-wrapper.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/create-editor/sort-by-order.js +11 -0
- package/dist/es2019/editor-next/editor-migration-component.js +4 -1
- package/dist/es2019/editor-next/utils/deprecationWarnings.js +0 -5
- package/dist/es2019/labs/next/full-page.js +2 -1
- package/dist/es2019/labs/next/presets/default.js +2 -1
- package/dist/es2019/labs/next/presets/universal.js +8 -2
- package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/index.js +3 -2
- package/dist/es2019/plugins/alignment/ui/ToolbarAlignment/styles.js +0 -8
- package/dist/es2019/plugins/analytics/plugin.js +45 -43
- package/dist/es2019/plugins/avatar-group/index.js +26 -21
- package/dist/es2019/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +4 -2
- package/dist/es2019/plugins/base/index.js +101 -97
- package/dist/es2019/plugins/base/pm-plugins/disable-spell-checking.js +1 -3
- package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -6
- package/dist/es2019/plugins/block-type/ui/ToolbarBlockType/index.js +2 -7
- package/dist/es2019/plugins/border/index.js +11 -0
- package/dist/es2019/plugins/card/index.js +4 -2
- package/dist/es2019/plugins/card/toolbar.js +10 -11
- package/dist/es2019/plugins/card/ui/EditLinkToolbar.js +7 -3
- package/dist/es2019/plugins/code-block/toolbar.js +2 -2
- package/dist/es2019/plugins/collab-edit/analytics.js +2 -3
- package/dist/es2019/plugins/collab-edit/events/handlers.js +2 -2
- package/dist/es2019/plugins/collab-edit/events/initialize.js +3 -2
- package/dist/es2019/plugins/collab-edit/index.js +5 -3
- package/dist/es2019/plugins/collab-edit/plugin.js +4 -3
- package/dist/es2019/plugins/collab-edit/ui/avatars-with-plugin-state.js +5 -3
- package/dist/es2019/plugins/collab-edit/ui/avatars.js +2 -3
- package/dist/es2019/plugins/date/index.js +92 -64
- package/dist/es2019/plugins/editor-disabled/index.js +8 -0
- package/dist/es2019/plugins/expand/index.js +57 -53
- package/dist/es2019/plugins/expand/nodeviews/index.js +6 -9
- package/dist/es2019/plugins/expand/pm-plugins/main.js +5 -3
- package/dist/es2019/plugins/extension/extension-api.js +31 -13
- package/dist/es2019/plugins/extension/pm-plugins/main.js +77 -96
- package/dist/es2019/plugins/extension/pm-plugins/utils.js +30 -0
- package/dist/es2019/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +1 -8
- package/dist/es2019/plugins/find-replace/FindReplaceToolbarButtonWithState.js +3 -3
- package/dist/es2019/plugins/find-replace/index.js +5 -2
- package/dist/es2019/plugins/floating-toolbar/index.js +159 -149
- package/dist/es2019/plugins/floating-toolbar/ui/CheckboxModal.js +4 -1
- package/dist/es2019/plugins/floating-toolbar/ui/EmojiPickerButton.js +13 -3
- package/dist/es2019/plugins/floating-toolbar/ui/SimpleModal.js +4 -1
- package/dist/es2019/plugins/floating-toolbar/ui/Toolbar.js +6 -5
- package/dist/es2019/plugins/hyperlink/Toolbar.js +7 -9
- package/dist/es2019/plugins/hyperlink/index.js +66 -62
- package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -3
- package/dist/es2019/plugins/index.js +2 -1
- package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -1
- package/dist/es2019/plugins/list/actions/outdent-list-items-selected.js +5 -5
- package/dist/es2019/plugins/list/commands/index.js +4 -4
- package/dist/es2019/plugins/list/commands/outdent-list.js +2 -4
- package/dist/es2019/plugins/list/index.js +80 -77
- package/dist/es2019/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +3 -1
- package/dist/es2019/plugins/list/pm-plugins/input-rules/index.js +2 -1
- package/dist/es2019/plugins/list/pm-plugins/input-rules/wrapping-join-rule.js +52 -0
- package/dist/es2019/plugins/list/pm-plugins/keymap.js +4 -4
- package/dist/es2019/plugins/list/pm-plugins/main.js +46 -46
- package/dist/es2019/plugins/media/nodeviews/mediaNodeView/media.js +4 -1
- package/dist/es2019/plugins/media/nodeviews/styles.js +12 -1
- package/dist/es2019/plugins/media/toolbar/commands.js +93 -0
- package/dist/es2019/plugins/media/toolbar/imageBorder.js +15 -0
- package/dist/es2019/plugins/media/toolbar/index.js +36 -5
- package/dist/es2019/plugins/media/ui/ImageBorder/index.js +206 -0
- package/dist/es2019/plugins/media/ui/ImageBorder/messages.js +43 -0
- package/dist/es2019/plugins/media/ui/ImageBorder/styles.js +124 -0
- package/dist/es2019/plugins/media/utils/current-media-node.js +22 -3
- package/dist/es2019/plugins/paste/util/index.js +2 -0
- package/dist/es2019/plugins/rank.js +1 -1
- package/dist/es2019/plugins/rule/pm-plugins/input-rule.js +7 -0
- package/dist/es2019/plugins/text-formatting/ui/Toolbar/hooks/clear-formatting-icon.js +2 -1
- package/dist/es2019/plugins/toolbar-lists-indentation/index.js +59 -55
- package/dist/es2019/plugins/toolbar-lists-indentation/ui/Toolbar.js +2 -1
- package/dist/es2019/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +2 -1
- package/dist/es2019/plugins/toolbar-lists-indentation/ui/index.js +6 -3
- package/dist/es2019/plugins/toolbar-lists-indentation/ui/onItemActivated.js +3 -2
- package/dist/es2019/test-utils.js +3 -1
- package/dist/es2019/ui/Appearance/FullPage/FullPageToolbar.js +4 -2
- package/dist/es2019/ui/styles.js +1 -0
- package/dist/es2019/utils/input-rules.js +0 -17
- package/dist/es2019/utils/insert.js +61 -10
- package/dist/es2019/version-wrapper.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/create-editor/sort-by-order.js +11 -0
- package/dist/esm/editor-next/editor-migration-component.js +3 -0
- package/dist/esm/editor-next/utils/deprecationWarnings.js +0 -5
- package/dist/esm/labs/next/full-page.js +2 -1
- package/dist/esm/labs/next/presets/default.js +2 -1
- package/dist/esm/labs/next/presets/universal.js +8 -2
- package/dist/esm/plugins/alignment/ui/ToolbarAlignment/index.js +3 -2
- package/dist/esm/plugins/alignment/ui/ToolbarAlignment/styles.js +3 -5
- package/dist/esm/plugins/analytics/plugin.js +6 -6
- package/dist/esm/plugins/avatar-group/index.js +5 -2
- package/dist/esm/plugins/avatar-group/ui/AvatarGroupPluginWrapper.js +4 -2
- package/dist/esm/plugins/base/index.js +4 -2
- package/dist/esm/plugins/base/pm-plugins/disable-spell-checking.js +1 -3
- package/dist/esm/plugins/block-type/ui/ToolbarBlockType/blocktype-button.js +1 -6
- package/dist/esm/plugins/block-type/ui/ToolbarBlockType/index.js +2 -8
- package/dist/esm/plugins/border/index.js +13 -0
- package/dist/esm/plugins/card/index.js +4 -2
- package/dist/esm/plugins/card/toolbar.js +12 -15
- package/dist/esm/plugins/card/ui/EditLinkToolbar.js +7 -3
- package/dist/esm/plugins/code-block/toolbar.js +2 -2
- package/dist/esm/plugins/collab-edit/analytics.js +2 -3
- package/dist/esm/plugins/collab-edit/events/handlers.js +2 -2
- package/dist/esm/plugins/collab-edit/events/initialize.js +3 -2
- package/dist/esm/plugins/collab-edit/index.js +5 -3
- package/dist/esm/plugins/collab-edit/plugin.js +4 -3
- package/dist/esm/plugins/collab-edit/ui/avatars-with-plugin-state.js +5 -3
- package/dist/esm/plugins/collab-edit/ui/avatars.js +2 -3
- package/dist/esm/plugins/date/index.js +90 -64
- package/dist/esm/plugins/editor-disabled/index.js +8 -0
- package/dist/esm/plugins/expand/index.js +4 -1
- package/dist/esm/plugins/expand/nodeviews/index.js +6 -7
- package/dist/esm/plugins/expand/pm-plugins/main.js +5 -2
- package/dist/esm/plugins/extension/extension-api.js +24 -12
- package/dist/esm/plugins/extension/pm-plugins/main.js +113 -173
- package/dist/esm/plugins/extension/pm-plugins/utils.js +72 -0
- package/dist/esm/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +1 -10
- package/dist/esm/plugins/find-replace/FindReplaceToolbarButtonWithState.js +3 -4
- package/dist/esm/plugins/find-replace/index.js +5 -2
- package/dist/esm/plugins/floating-toolbar/index.js +15 -7
- package/dist/esm/plugins/floating-toolbar/ui/CheckboxModal.js +2 -1
- package/dist/esm/plugins/floating-toolbar/ui/EmojiPickerButton.js +13 -3
- package/dist/esm/plugins/floating-toolbar/ui/SimpleModal.js +2 -1
- package/dist/esm/plugins/floating-toolbar/ui/Toolbar.js +6 -5
- package/dist/esm/plugins/hyperlink/Toolbar.js +9 -13
- package/dist/esm/plugins/hyperlink/index.js +6 -2
- package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +3 -4
- package/dist/esm/plugins/index.js +2 -1
- package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +2 -1
- package/dist/esm/plugins/list/actions/outdent-list-items-selected.js +5 -5
- package/dist/esm/plugins/list/commands/index.js +31 -27
- package/dist/esm/plugins/list/commands/outdent-list.js +2 -3
- package/dist/esm/plugins/list/index.js +4 -3
- package/dist/esm/plugins/list/pm-plugins/input-rules/create-list-input-rule.js +3 -1
- package/dist/esm/plugins/list/pm-plugins/input-rules/index.js +2 -1
- package/dist/esm/plugins/list/pm-plugins/input-rules/wrapping-join-rule.js +51 -0
- package/dist/esm/plugins/list/pm-plugins/keymap.js +4 -4
- package/dist/esm/plugins/list/pm-plugins/main.js +23 -21
- package/dist/esm/plugins/media/nodeviews/mediaNodeView/media.js +6 -1
- package/dist/esm/plugins/media/nodeviews/styles.js +13 -1
- package/dist/esm/plugins/media/toolbar/commands.js +99 -0
- package/dist/esm/plugins/media/toolbar/imageBorder.js +14 -0
- package/dist/esm/plugins/media/toolbar/index.js +34 -5
- package/dist/esm/plugins/media/ui/ImageBorder/index.js +211 -0
- package/dist/esm/plugins/media/ui/ImageBorder/messages.js +43 -0
- package/dist/esm/plugins/media/ui/ImageBorder/styles.js +37 -0
- package/dist/esm/plugins/media/utils/current-media-node.js +24 -3
- package/dist/esm/plugins/paste/util/index.js +2 -0
- package/dist/esm/plugins/rank.js +1 -1
- package/dist/esm/plugins/rule/pm-plugins/input-rule.js +5 -0
- package/dist/esm/plugins/text-formatting/ui/Toolbar/hooks/clear-formatting-icon.js +2 -1
- package/dist/esm/plugins/toolbar-lists-indentation/index.js +3 -1
- package/dist/esm/plugins/toolbar-lists-indentation/ui/Toolbar.js +2 -1
- package/dist/esm/plugins/toolbar-lists-indentation/ui/ToolbarDropdown.js +2 -1
- package/dist/esm/plugins/toolbar-lists-indentation/ui/index.js +6 -3
- package/dist/esm/plugins/toolbar-lists-indentation/ui/onItemActivated.js +3 -2
- package/dist/esm/test-utils.js +3 -1
- package/dist/esm/ui/Appearance/FullPage/FullPageToolbar.js +4 -2
- package/dist/esm/ui/styles.js +1 -1
- package/dist/esm/utils/input-rules.js +0 -17
- package/dist/esm/utils/insert.js +56 -10
- package/dist/esm/version-wrapper.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/create-editor/sort-by-order.d.ts +9 -0
- package/dist/types/editor-next/editor-migration-component.d.ts +1 -0
- package/dist/types/labs/next/presets/cxhtml.d.ts +36 -2
- package/dist/types/labs/next/presets/default.d.ts +72 -4
- package/dist/types/labs/next/presets/mobile.d.ts +36 -2
- package/dist/types/plugins/alignment/ui/ToolbarAlignment/styles.d.ts +0 -1
- package/dist/types/plugins/analytics/plugin.d.ts +2 -0
- package/dist/types/plugins/avatar-group/index.d.ts +2 -0
- package/dist/types/plugins/avatar-group/ui/AvatarGroupPluginWrapper.d.ts +2 -0
- package/dist/types/plugins/base/index.d.ts +2 -0
- package/dist/types/plugins/base/pm-plugins/disable-spell-checking.d.ts +2 -1
- package/dist/types/plugins/border/index.d.ts +3 -0
- package/dist/types/plugins/card/index.d.ts +2 -0
- package/dist/types/plugins/card/toolbar.d.ts +2 -1
- package/dist/types/plugins/card/ui/EditLinkToolbar.d.ts +5 -2
- package/dist/types/plugins/collab-edit/analytics.d.ts +2 -1
- package/dist/types/plugins/collab-edit/events/handlers.d.ts +2 -1
- package/dist/types/plugins/collab-edit/events/initialize.d.ts +3 -1
- package/dist/types/plugins/collab-edit/index.d.ts +2 -0
- package/dist/types/plugins/collab-edit/plugin.d.ts +2 -1
- package/dist/types/plugins/collab-edit/ui/avatars-with-plugin-state.d.ts +4 -0
- package/dist/types/plugins/collab-edit/ui/avatars.d.ts +2 -0
- package/dist/types/plugins/date/index.d.ts +9 -1
- package/dist/types/plugins/editor-disabled/index.d.ts +3 -1
- package/dist/types/plugins/expand/index.d.ts +2 -0
- package/dist/types/plugins/expand/nodeviews/index.d.ts +5 -2
- package/dist/types/plugins/expand/pm-plugins/main.d.ts +2 -1
- package/dist/types/plugins/extension/pm-plugins/main.d.ts +8 -2
- package/dist/types/plugins/extension/pm-plugins/utils.d.ts +3 -0
- package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +1 -7
- package/dist/types/plugins/find-replace/FindReplaceToolbarButtonWithState.d.ts +2 -0
- package/dist/types/plugins/find-replace/index.d.ts +2 -0
- package/dist/types/plugins/floating-toolbar/index.d.ts +4 -1
- package/dist/types/plugins/floating-toolbar/ui/Toolbar.d.ts +2 -0
- package/dist/types/plugins/hyperlink/Toolbar.d.ts +2 -1
- package/dist/types/plugins/hyperlink/index.d.ts +2 -0
- package/dist/types/plugins/hyperlink/ui/HyperlinkAddToolbar/index.d.ts +2 -0
- package/dist/types/plugins/index.d.ts +1 -0
- package/dist/types/plugins/list/actions/outdent-list-items-selected.d.ts +2 -1
- package/dist/types/plugins/list/commands/index.d.ts +3 -2
- package/dist/types/plugins/list/commands/outdent-list.d.ts +2 -1
- package/dist/types/plugins/list/index.d.ts +2 -0
- package/dist/types/plugins/list/pm-plugins/input-rules/create-list-input-rule.d.ts +1 -1
- package/dist/types/plugins/list/pm-plugins/input-rules/wrapping-join-rule.d.ts +13 -0
- package/dist/types/plugins/list/pm-plugins/keymap.d.ts +2 -1
- package/dist/types/plugins/list/pm-plugins/main.d.ts +3 -2
- package/dist/types/plugins/media/nodeviews/styles.d.ts +3 -1
- package/dist/types/plugins/media/toolbar/commands.d.ts +5 -0
- package/dist/types/plugins/media/toolbar/imageBorder.d.ts +2 -0
- package/dist/types/plugins/media/types.d.ts +3 -0
- package/dist/types/plugins/media/ui/ImageBorder/index.d.ts +13 -0
- package/dist/types/plugins/media/ui/ImageBorder/messages.d.ts +42 -0
- package/dist/types/plugins/media/ui/ImageBorder/styles.d.ts +15 -0
- package/dist/types/plugins/media/utils/current-media-node.d.ts +6 -0
- package/dist/types/plugins/text-color/pm-plugins/main.d.ts +0 -2
- package/dist/types/plugins/toolbar-lists-indentation/index.d.ts +2 -0
- package/dist/types/plugins/toolbar-lists-indentation/types.d.ts +2 -0
- package/dist/types/plugins/toolbar-lists-indentation/ui/index.d.ts +2 -0
- package/dist/types/plugins/toolbar-lists-indentation/ui/onItemActivated.d.ts +3 -1
- package/dist/types/test-utils.d.ts +4 -2
- package/dist/types/types/editor-props.d.ts +5 -0
- package/dist/types/ui/Appearance/FullPage/StyledComponents.d.ts +5 -5
- package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +1 -1
- package/dist/types/ui/ContentStyles/index.d.ts +2 -2
- package/package.json +12 -11
- package/report.api.md +12 -4
- package/codemods/__tests__/rename-experimental-text-color-prop.ts +0 -204
- package/codemods/migrates/rename-experimental-text-color-prop.ts +0 -6
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { defineMessages } from 'react-intl-next';
|
|
2
|
+
export const messages = defineMessages({
|
|
3
|
+
borderColor: {
|
|
4
|
+
id: 'fabric.editor.imageBorderColor',
|
|
5
|
+
defaultMessage: 'Color',
|
|
6
|
+
description: 'Change the border color of an image.'
|
|
7
|
+
},
|
|
8
|
+
borderSize: {
|
|
9
|
+
id: 'fabric.editor.imageBorderSize',
|
|
10
|
+
defaultMessage: 'Size',
|
|
11
|
+
description: 'Change the border size of an image.'
|
|
12
|
+
},
|
|
13
|
+
addBorder: {
|
|
14
|
+
id: 'fabric.editor.addImageBorder',
|
|
15
|
+
defaultMessage: 'Add border',
|
|
16
|
+
description: 'Add a border to an image.'
|
|
17
|
+
},
|
|
18
|
+
removeBorder: {
|
|
19
|
+
id: 'fabric.editor.removeImageBorder',
|
|
20
|
+
defaultMessage: 'Remove border',
|
|
21
|
+
description: 'Remove the border of an image.'
|
|
22
|
+
},
|
|
23
|
+
borderOptions: {
|
|
24
|
+
id: 'fabric.editor.imageBorderOptions',
|
|
25
|
+
defaultMessage: 'Border options',
|
|
26
|
+
description: 'Display options available for customizing the border of an image.'
|
|
27
|
+
},
|
|
28
|
+
borderSizeSubtle: {
|
|
29
|
+
id: 'fabric.editor.imageBorderSubtle',
|
|
30
|
+
defaultMessage: 'Subtle',
|
|
31
|
+
description: 'Name of a border size.'
|
|
32
|
+
},
|
|
33
|
+
borderSizeMedium: {
|
|
34
|
+
id: 'fabric.editor.imageBorderMedium',
|
|
35
|
+
defaultMessage: 'Medium',
|
|
36
|
+
description: 'Name of a border size.'
|
|
37
|
+
},
|
|
38
|
+
borderSizeBold: {
|
|
39
|
+
id: 'fabric.editor.imageBorderBold',
|
|
40
|
+
defaultMessage: 'Bold',
|
|
41
|
+
description: 'Name of a border size.'
|
|
42
|
+
}
|
|
43
|
+
});
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { css } from '@emotion/react';
|
|
2
|
+
import * as colors from '@atlaskit/theme/colors';
|
|
3
|
+
import { DEFAULT_BORDER_COLOR } from '@atlaskit/editor-common/ui-color';
|
|
4
|
+
import { N20A, N50, N60A, N90, N800, N0 } from '@atlaskit/theme/colors';
|
|
5
|
+
import { gridSize } from '@atlaskit/theme/constants';
|
|
6
|
+
|
|
7
|
+
// menuItemDimensions and itemSpacing are copied from
|
|
8
|
+
// packages/editor/editor-core/src/plugins/floating-toolbar/ui/DropdownMenu.tsx
|
|
9
|
+
|
|
10
|
+
export const menuItemDimensions = {
|
|
11
|
+
width: 175,
|
|
12
|
+
height: 32
|
|
13
|
+
};
|
|
14
|
+
export const itemSpacing = gridSize() / 2;
|
|
15
|
+
export const contextualMenuArrow = css`
|
|
16
|
+
display: flex;
|
|
17
|
+
&::after {
|
|
18
|
+
content: '›';
|
|
19
|
+
margin-left: 4px;
|
|
20
|
+
line-height: 20px;
|
|
21
|
+
color: ${`var(--ds-icon, ${N90})`};
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
export const contextualMenuColorIcon = color => css`
|
|
25
|
+
${contextualMenuArrow}
|
|
26
|
+
&::before {
|
|
27
|
+
content: '';
|
|
28
|
+
display: block;
|
|
29
|
+
border: 1px solid ${DEFAULT_BORDER_COLOR};
|
|
30
|
+
border-radius: ${"var(--ds-radius-100, 3px)"};
|
|
31
|
+
width: 20px;
|
|
32
|
+
height: 20px;
|
|
33
|
+
${color && `background: ${color}`}
|
|
34
|
+
}
|
|
35
|
+
`;
|
|
36
|
+
export const contextualSubMenu = index => css`
|
|
37
|
+
border-radius: ${"var(--ds-radius-100, 3px)"};
|
|
38
|
+
background: ${"var(--ds-surface-overlay, white)"};
|
|
39
|
+
box-shadow: ${`var(--ds-shadow-overlay, ${`0 4px 8px -2px ${N60A}, 0 0 1px ${N60A}`})`};
|
|
40
|
+
display: flex;
|
|
41
|
+
position: absolute;
|
|
42
|
+
top: ${index * (menuItemDimensions.height + itemSpacing * 2)}px;
|
|
43
|
+
left: ${menuItemDimensions.width}px;
|
|
44
|
+
padding: 8px;
|
|
45
|
+
|
|
46
|
+
> div {
|
|
47
|
+
padding: 0;
|
|
48
|
+
}
|
|
49
|
+
`;
|
|
50
|
+
export const buttonStyle = selected => css`
|
|
51
|
+
height: 26px;
|
|
52
|
+
width: 26px;
|
|
53
|
+
padding: 0;
|
|
54
|
+
border-radius: 4px;
|
|
55
|
+
background-color: ${selected ? `var(--ds-text, ${N800})` : `var(--ds-background-neutral, ${N20A})`};
|
|
56
|
+
border: 1px solid ${DEFAULT_BORDER_COLOR};
|
|
57
|
+
cursor: pointer;
|
|
58
|
+
display: block;
|
|
59
|
+
`;
|
|
60
|
+
|
|
61
|
+
/* eslint-disable @atlaskit/design-system/ensure-design-token-usage */
|
|
62
|
+
export const buttonWrapperStyle = css`
|
|
63
|
+
border: 1px solid transparent;
|
|
64
|
+
margin: 1px;
|
|
65
|
+
font-size: 0;
|
|
66
|
+
display: flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
padding: 1px;
|
|
69
|
+
border-radius: 6px;
|
|
70
|
+
&:focus-within,
|
|
71
|
+
&:focus,
|
|
72
|
+
&:hover {
|
|
73
|
+
border-color: ${N50} !important;
|
|
74
|
+
}
|
|
75
|
+
`;
|
|
76
|
+
export const line = (size, selected) => css`
|
|
77
|
+
position: relative;
|
|
78
|
+
&:before {
|
|
79
|
+
content: '';
|
|
80
|
+
display: block;
|
|
81
|
+
position: absolute;
|
|
82
|
+
top: 50%;
|
|
83
|
+
left: 50%;
|
|
84
|
+
width: 12px;
|
|
85
|
+
height: ${size}px;
|
|
86
|
+
background-color: ${selected ? `var(--ds-icon-inverse, ${N0})` : "var(--ds-icon, #44546F)"};
|
|
87
|
+
border-radius: 90px;
|
|
88
|
+
transform: translate(-50%, -50%) rotate(135deg);
|
|
89
|
+
}
|
|
90
|
+
`;
|
|
91
|
+
export const toolbarButtonWrapper = ({
|
|
92
|
+
enabled,
|
|
93
|
+
isOpen
|
|
94
|
+
}) => css`
|
|
95
|
+
display: flex;
|
|
96
|
+
.image-border-toolbar-btn {
|
|
97
|
+
border-top-right-radius: 0;
|
|
98
|
+
border-bottom-right-radius: 0;
|
|
99
|
+
padding: 0;
|
|
100
|
+
& > span {
|
|
101
|
+
margin: 0;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
.image-border-toolbar-dropdown {
|
|
105
|
+
padding: 0;
|
|
106
|
+
& > span {
|
|
107
|
+
margin: 0;
|
|
108
|
+
}
|
|
109
|
+
width: 16px !important;
|
|
110
|
+
border-top-left-radius: 0 !important;
|
|
111
|
+
border-bottom-left-radius: 0 !important;
|
|
112
|
+
margin-left: 1px;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
&:hover {
|
|
116
|
+
.image-border-toolbar-btn {
|
|
117
|
+
${!enabled && ` background: ${`var(--ds-background-neutral-subtle-hovered, ${colors.N30A})`};`}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.image-border-toolbar-dropdown {
|
|
121
|
+
${!isOpen && `background: ${`var(--ds-background-neutral-subtle-hovered, ${colors.N30A})`};`}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NodeSelection } from 'prosemirror-state';
|
|
2
|
-
export const
|
|
2
|
+
export const currentMediaNodeWithPos = editorState => {
|
|
3
3
|
const {
|
|
4
4
|
doc,
|
|
5
5
|
selection,
|
|
@@ -8,9 +8,28 @@ export const currentMediaNode = editorState => {
|
|
|
8
8
|
if (!doc || !selection || !(selection instanceof NodeSelection) || selection.node.type !== schema.nodes.mediaSingle) {
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
|
-
const
|
|
11
|
+
const pos = selection.$anchor.pos + 1;
|
|
12
|
+
const node = doc.nodeAt(pos);
|
|
12
13
|
if (!node || node.type !== schema.nodes.media) {
|
|
13
14
|
return;
|
|
14
15
|
}
|
|
15
|
-
return
|
|
16
|
+
return {
|
|
17
|
+
node,
|
|
18
|
+
pos
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export const currentMediaNode = editorState => {
|
|
22
|
+
var _currentMediaNodeWith;
|
|
23
|
+
return (_currentMediaNodeWith = currentMediaNodeWithPos(editorState)) === null || _currentMediaNodeWith === void 0 ? void 0 : _currentMediaNodeWith.node;
|
|
24
|
+
};
|
|
25
|
+
export const currentMediaNodeBorderMark = editorState => {
|
|
26
|
+
const node = currentMediaNode(editorState);
|
|
27
|
+
if (!node) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const borderMark = node.marks.find(m => m.type.name === 'border');
|
|
31
|
+
if (!borderMark) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
return borderMark.attrs;
|
|
16
35
|
};
|
|
@@ -4,6 +4,7 @@ import { ACTION_SUBJECT, addAnalytics, EVENT_TYPE, INPUT_METHOD, TABLE_ACTION }
|
|
|
4
4
|
import { TextSelection, NodeSelection } from 'prosemirror-state';
|
|
5
5
|
import { findParentNodeOfType } from 'prosemirror-utils';
|
|
6
6
|
import { getSelectedTableInfo, isTableSelected } from '@atlaskit/editor-tables/utils';
|
|
7
|
+
import { sortByOrderWithTypeName } from '../../../create-editor/sort-by-order';
|
|
7
8
|
export function isPastedFromWord(html) {
|
|
8
9
|
return !!html && html.indexOf('urn:schemas-microsoft-com:office:word') >= 0;
|
|
9
10
|
}
|
|
@@ -93,6 +94,7 @@ export function applyTextMarksToSlice(schema, marks) {
|
|
|
93
94
|
// add marks to a slice if they're allowed in parent node
|
|
94
95
|
// and exclude link marks
|
|
95
96
|
...parent.type.allowedMarks(marks).filter(mark => mark.type !== linkMark)];
|
|
97
|
+
node.marks.sort(sortByOrderWithTypeName('marks'));
|
|
96
98
|
return false;
|
|
97
99
|
}
|
|
98
100
|
return true;
|
|
@@ -21,7 +21,7 @@ export default {
|
|
|
21
21
|
// Inline marks
|
|
22
22
|
'link', 'em', 'strong', 'textColor', 'strike', 'subsup', 'underline', 'code', 'typeAheadQuery',
|
|
23
23
|
// Block marks
|
|
24
|
-
'alignment', 'breakout', 'indentation', 'annotation', 'dataConsumer',
|
|
24
|
+
'alignment', 'breakout', 'indentation', 'annotation', 'dataConsumer', 'border',
|
|
25
25
|
// Unsupported mark
|
|
26
26
|
'unsupportedMark', 'unsupportedNodeAttribute']
|
|
27
27
|
};
|
|
@@ -2,6 +2,7 @@ import { Fragment, Slice } from 'prosemirror-model';
|
|
|
2
2
|
import { createRule, createPlugin } from '../../../utils/input-rules';
|
|
3
3
|
import { leafNodeReplacementCharacter } from '@atlaskit/prosemirror-input-rules';
|
|
4
4
|
import { safeInsert } from '../../../utils/insert';
|
|
5
|
+
import { hasParentNodeOfType } from 'prosemirror-utils';
|
|
5
6
|
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, addAnalytics, EVENT_TYPE, INPUT_METHOD } from '../../analytics';
|
|
6
7
|
import { getFeatureFlags } from '../../feature-flags-context';
|
|
7
8
|
export const createHorizontalRule = (state, start, end, inputMethod) => {
|
|
@@ -38,6 +39,12 @@ export const createHorizontalRule = (state, start, end, inputMethod) => {
|
|
|
38
39
|
});
|
|
39
40
|
};
|
|
40
41
|
const createHorizontalRuleAutoformat = (state, start, end) => {
|
|
42
|
+
const {
|
|
43
|
+
listItem
|
|
44
|
+
} = state.schema.nodes;
|
|
45
|
+
if (hasParentNodeOfType(listItem)(state.selection)) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
41
48
|
return createHorizontalRule(state, start, end, INPUT_METHOD.FORMATTING);
|
|
42
49
|
};
|
|
43
50
|
export function inputRulePlugin(schema, featureFlags) {
|
|
@@ -34,7 +34,8 @@ export const useClearIcon = ({
|
|
|
34
34
|
name: 'clearFormatting'
|
|
35
35
|
},
|
|
36
36
|
isActive: false,
|
|
37
|
-
isDisabled: !formattingIsPresent
|
|
37
|
+
isDisabled: !formattingIsPresent,
|
|
38
|
+
'aria-label': clearFormattingKeymap ? tooltip(clearFormattingKeymap, String(clearFormattingLabel)) : String(clearFormattingLabel)
|
|
38
39
|
};
|
|
39
40
|
}, [clearFormattingLabel, isPluginAvailable, formattingIsPresent]);
|
|
40
41
|
};
|
|
@@ -7,60 +7,64 @@ import { pluginKey as indentationButtonsPluginKey, createPlugin as indentationBu
|
|
|
7
7
|
const toolbarListsIndentationPlugin = ({
|
|
8
8
|
showIndentationButtons,
|
|
9
9
|
allowHeadingAndParagraphIndentation
|
|
10
|
-
}) =>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
10
|
+
}, api) => {
|
|
11
|
+
const featureFlags = (api === null || api === void 0 ? void 0 : api.dependencies.featureFlags.sharedState.currentState()) || {};
|
|
12
|
+
return {
|
|
13
|
+
name: 'toolbarListsIndentation',
|
|
14
|
+
pmPlugins() {
|
|
15
|
+
return [{
|
|
16
|
+
name: 'indentationButtons',
|
|
17
|
+
plugin: ({
|
|
18
|
+
dispatch
|
|
19
|
+
}) => indentationButtonsPlugin({
|
|
20
|
+
dispatch,
|
|
21
|
+
showIndentationButtons,
|
|
22
|
+
allowHeadingAndParagraphIndentation
|
|
23
|
+
})
|
|
24
|
+
}];
|
|
25
|
+
},
|
|
26
|
+
primaryToolbarComponent({
|
|
27
|
+
editorView,
|
|
28
|
+
popupsMountPoint,
|
|
29
|
+
popupsBoundariesElement,
|
|
30
|
+
popupsScrollableElement,
|
|
31
|
+
toolbarSize,
|
|
32
|
+
disabled,
|
|
33
|
+
isToolbarReducedSpacing
|
|
34
|
+
}) {
|
|
35
|
+
const isSmall = toolbarSize < ToolbarSize.L;
|
|
36
|
+
return /*#__PURE__*/React.createElement(WithPluginState, {
|
|
37
|
+
plugins: {
|
|
38
|
+
listState: listPluginKey,
|
|
39
|
+
indentationState: indentationButtonsPluginKey
|
|
40
|
+
},
|
|
41
|
+
render: ({
|
|
42
|
+
listState,
|
|
43
|
+
indentationState
|
|
44
|
+
}) => {
|
|
45
|
+
if (!listState) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return /*#__PURE__*/React.createElement(ToolbarListsIndentation, {
|
|
49
|
+
featureFlags: featureFlags,
|
|
50
|
+
isSmall: isSmall,
|
|
51
|
+
isReducedSpacing: isToolbarReducedSpacing,
|
|
52
|
+
disabled: disabled,
|
|
53
|
+
editorView: editorView,
|
|
54
|
+
popupsMountPoint: popupsMountPoint,
|
|
55
|
+
popupsBoundariesElement: popupsBoundariesElement,
|
|
56
|
+
popupsScrollableElement: popupsScrollableElement,
|
|
57
|
+
bulletListActive: listState.bulletListActive,
|
|
58
|
+
bulletListDisabled: listState.bulletListDisabled,
|
|
59
|
+
orderedListActive: listState.orderedListActive,
|
|
60
|
+
orderedListDisabled: listState.orderedListDisabled,
|
|
61
|
+
showIndentationButtons: !!showIndentationButtons,
|
|
62
|
+
indentDisabled: indentationState.indentDisabled,
|
|
63
|
+
outdentDisabled: indentationState.outdentDisabled
|
|
64
|
+
});
|
|
45
65
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
editorView: editorView,
|
|
51
|
-
popupsMountPoint: popupsMountPoint,
|
|
52
|
-
popupsBoundariesElement: popupsBoundariesElement,
|
|
53
|
-
popupsScrollableElement: popupsScrollableElement,
|
|
54
|
-
bulletListActive: listState.bulletListActive,
|
|
55
|
-
bulletListDisabled: listState.bulletListDisabled,
|
|
56
|
-
orderedListActive: listState.orderedListActive,
|
|
57
|
-
orderedListDisabled: listState.orderedListDisabled,
|
|
58
|
-
showIndentationButtons: !!showIndentationButtons,
|
|
59
|
-
indentDisabled: indentationState.indentDisabled,
|
|
60
|
-
outdentDisabled: indentationState.outdentDisabled
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
};
|
|
66
70
|
export default toolbarListsIndentationPlugin;
|
|
@@ -38,7 +38,8 @@ export function Toolbar(props) {
|
|
|
38
38
|
const isOutdentButtonFocused = document.activeElement === outdentButtonRef.current;
|
|
39
39
|
const handleOnItemActivated = buttonName => event => onItemActivated({
|
|
40
40
|
editorView: props.editorView,
|
|
41
|
-
buttonName
|
|
41
|
+
buttonName,
|
|
42
|
+
featureFlags: props.featureFlags
|
|
42
43
|
});
|
|
43
44
|
useEffect(() => {
|
|
44
45
|
if (isIndentButtonFocused && indentDisabled && outdentButtonRef.current) {
|
|
@@ -50,7 +50,8 @@ export function ToolbarDropdown(props) {
|
|
|
50
50
|
setIsDropdownOpen(!shouldCloseMenu);
|
|
51
51
|
return onItemActivated({
|
|
52
52
|
editorView: props.editorView,
|
|
53
|
-
buttonName: item.value.name
|
|
53
|
+
buttonName: item.value.name,
|
|
54
|
+
featureFlags: props.featureFlags
|
|
54
55
|
});
|
|
55
56
|
};
|
|
56
57
|
return jsx("span", {
|
|
@@ -17,7 +17,8 @@ export default function ToolbarListsIndentation(props) {
|
|
|
17
17
|
popupsBoundariesElement,
|
|
18
18
|
popupsScrollableElement,
|
|
19
19
|
indentDisabled,
|
|
20
|
-
outdentDisabled
|
|
20
|
+
outdentDisabled,
|
|
21
|
+
featureFlags
|
|
21
22
|
} = props;
|
|
22
23
|
if (isSmall) {
|
|
23
24
|
return jsx(ToolbarDropdown, {
|
|
@@ -34,7 +35,8 @@ export default function ToolbarListsIndentation(props) {
|
|
|
34
35
|
indentDisabled: indentDisabled,
|
|
35
36
|
outdentDisabled: outdentDisabled,
|
|
36
37
|
disabled: disabled,
|
|
37
|
-
onItemActivated: onItemActivated
|
|
38
|
+
onItemActivated: onItemActivated,
|
|
39
|
+
featureFlags: featureFlags
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
return jsx(Toolbar, {
|
|
@@ -48,6 +50,7 @@ export default function ToolbarListsIndentation(props) {
|
|
|
48
50
|
indentDisabled: indentDisabled,
|
|
49
51
|
outdentDisabled: outdentDisabled,
|
|
50
52
|
disabled: disabled,
|
|
51
|
-
onItemActivated: onItemActivated
|
|
53
|
+
onItemActivated: onItemActivated,
|
|
54
|
+
featureFlags: featureFlags
|
|
52
55
|
});
|
|
53
56
|
}
|
|
@@ -5,7 +5,8 @@ import { INPUT_METHOD } from '../../analytics';
|
|
|
5
5
|
import { pluginKey as indentationButtonsPluginKey } from '../pm-plugins/indentation-buttons';
|
|
6
6
|
export function onItemActivated({
|
|
7
7
|
buttonName,
|
|
8
|
-
editorView
|
|
8
|
+
editorView,
|
|
9
|
+
featureFlags
|
|
9
10
|
}) {
|
|
10
11
|
switch (buttonName) {
|
|
11
12
|
case 'bullet_list':
|
|
@@ -35,7 +36,7 @@ export function onItemActivated({
|
|
|
35
36
|
outdentParagraphOrHeading(INPUT_METHOD.TOOLBAR)(editorView.state, editorView.dispatch);
|
|
36
37
|
}
|
|
37
38
|
if (node === 'list') {
|
|
38
|
-
outdentList(INPUT_METHOD.TOOLBAR)(editorView.state, editorView.dispatch);
|
|
39
|
+
outdentList(INPUT_METHOD.TOOLBAR, featureFlags)(editorView.state, editorView.dispatch);
|
|
39
40
|
}
|
|
40
41
|
if (node === 'taskList') {
|
|
41
42
|
outdentTaskList(INPUT_METHOD.TOOLBAR)(editorView.state, editorView.dispatch);
|
|
@@ -52,7 +52,9 @@ function lightProcessPluginsList(editorPlugins) {
|
|
|
52
52
|
export const createPMSchemaAndPlugins = (inputPreset = new EditorPresetBuilder()) => pluginFactoryParams => {
|
|
53
53
|
let editorPlugins = [];
|
|
54
54
|
const preset = inputPreset.has(basePlugin) ? inputPreset : inputPreset.add(basePlugin);
|
|
55
|
-
editorPlugins = preset.build(
|
|
55
|
+
editorPlugins = preset.build({
|
|
56
|
+
pluginInjectionAPI: pluginFactoryParams.pluginInjectionAPI
|
|
57
|
+
});
|
|
56
58
|
const editorConfig = lightProcessPluginsList(editorPlugins);
|
|
57
59
|
const schema = createSchema(editorConfig);
|
|
58
60
|
const plugins = editorConfig.plugins.sort(sortByOrder('plugins')).map(({
|
|
@@ -42,14 +42,16 @@ export const EditorToolbar = /*#__PURE__*/React.memo(props => {
|
|
|
42
42
|
eventDispatcher: props.eventDispatcher,
|
|
43
43
|
inviteToEditComponent: (_props$collabEdit = props.collabEdit) === null || _props$collabEdit === void 0 ? void 0 : _props$collabEdit.inviteToEditComponent,
|
|
44
44
|
inviteToEditHandler: (_props$collabEdit2 = props.collabEdit) === null || _props$collabEdit2 === void 0 ? void 0 : _props$collabEdit2.inviteToEditHandler,
|
|
45
|
-
isInviteToEditButtonSelected: (_props$collabEdit3 = props.collabEdit) === null || _props$collabEdit3 === void 0 ? void 0 : _props$collabEdit3.isInviteToEditButtonSelected
|
|
45
|
+
isInviteToEditButtonSelected: (_props$collabEdit3 = props.collabEdit) === null || _props$collabEdit3 === void 0 ? void 0 : _props$collabEdit3.isInviteToEditButtonSelected,
|
|
46
|
+
featureFlags: props.featureFlags || {}
|
|
46
47
|
}), (_props$featureFlags5 = props.featureFlags) !== null && _props$featureFlags5 !== void 0 && _props$featureFlags5.findReplace && (_props$featureFlags6 = props.featureFlags) !== null && _props$featureFlags6 !== void 0 && _props$featureFlags6.twoLineEditorToolbar ? jsx(FindReplaceToolbarButtonWithState, {
|
|
47
48
|
popupsBoundariesElement: props.popupsBoundariesElement,
|
|
48
49
|
popupsMountPoint: props.popupsMountPoint,
|
|
49
50
|
popupsScrollableElement: props.popupsScrollableElement,
|
|
50
51
|
editorView: props.editorView,
|
|
51
52
|
containerElement: props.containerElement,
|
|
52
|
-
dispatchAnalyticsEvent: props.dispatchAnalyticsEvent
|
|
53
|
+
dispatchAnalyticsEvent: props.dispatchAnalyticsEvent,
|
|
54
|
+
featureFlags: props.featureFlags
|
|
53
55
|
}) : null, !!props.customPrimaryToolbarComponents && 'after' in props.customPrimaryToolbarComponents ? props.customPrimaryToolbarComponents.after : props.customPrimaryToolbarComponents);
|
|
54
56
|
useEffect(() => {
|
|
55
57
|
var _props$featureFlags7;
|
package/dist/es2019/ui/styles.js
CHANGED
|
@@ -5,8 +5,6 @@ import { createInputRulePlugin } from '@atlaskit/prosemirror-input-rules';
|
|
|
5
5
|
import { addAnalytics } from '../plugins/analytics';
|
|
6
6
|
import { JOIN_SCENARIOS_WHEN_TYPING_TO_INSERT_LIST } from '@atlaskit/editor-common/analytics';
|
|
7
7
|
import { closeHistory } from 'prosemirror-history';
|
|
8
|
-
import { findParentNodeOfTypeClosestToPos } from 'prosemirror-utils';
|
|
9
|
-
import { getFeatureFlags } from '../plugins/feature-flags-context';
|
|
10
8
|
export const ruleWithAnalytics = getPayload => {
|
|
11
9
|
return originalRule => {
|
|
12
10
|
const onHandlerApply = (state, tr, matchResult) => {
|
|
@@ -98,21 +96,6 @@ export const createWrappingJoinRule = ({
|
|
|
98
96
|
tr.setNodeMarkup(parentNodePosMapped, parentNode.type, parentNode.attrs, allowedMarks);
|
|
99
97
|
}
|
|
100
98
|
tr.wrap(range, wrapping);
|
|
101
|
-
const featureFlags = getFeatureFlags(state);
|
|
102
|
-
if (featureFlags !== null && featureFlags !== void 0 && featureFlags.restartNumberedLists && nodeType === state.schema.nodes.orderedList) {
|
|
103
|
-
// if an orderedList node would be inserted by the input rule match, and
|
|
104
|
-
// that orderedList node is being added directly before another orderedList
|
|
105
|
-
// node, then join those nodes
|
|
106
|
-
const $end = tr.doc.resolve(tr.mapping.map(end));
|
|
107
|
-
const node = findParentNodeOfTypeClosestToPos($end, nodeType);
|
|
108
|
-
if (node) {
|
|
109
|
-
const nodeEnd = node.pos + node.node.nodeSize;
|
|
110
|
-
const after = tr.doc.resolve(nodeEnd).nodeAfter;
|
|
111
|
-
if (after && after.type === nodeType && canJoin(tr.doc, nodeEnd) && (!joinPredicate || joinPredicate(match, after, JOIN_SCENARIOS_WHEN_TYPING_TO_INSERT_LIST.JOINED_TO_LIST_BELOW))) {
|
|
112
|
-
tr.join(nodeEnd);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
99
|
const before = tr.doc.resolve(fixedStart - 1).nodeBefore;
|
|
117
100
|
if (before && before.type === nodeType && canJoin(tr.doc, fixedStart - 1) && (!joinPredicate || joinPredicate(match, before, JOIN_SCENARIOS_WHEN_TYPING_TO_INSERT_LIST.JOINED_TO_LIST_ABOVE))) {
|
|
118
101
|
tr.join(fixedStart - 1);
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { isNodeSelection, canInsert,
|
|
2
|
-
import { Node, Fragment } from 'prosemirror-model';
|
|
3
|
-
import { NodeSelection, Selection } from 'prosemirror-state';
|
|
1
|
+
import { isNodeSelection, canInsert, safeInsert as pmSafeInsert, hasParentNodeOfType, findParentNodeOfType } from 'prosemirror-utils';
|
|
2
|
+
import { Node, Fragment, Slice } from 'prosemirror-model';
|
|
3
|
+
import { NodeSelection, Selection, TextSelection } from 'prosemirror-state';
|
|
4
4
|
import { ReplaceStep, ReplaceAroundStep } from 'prosemirror-transform';
|
|
5
5
|
import { isEmptyParagraph } from './document';
|
|
6
6
|
import { GapCursorSelection, Side } from '../plugins/selection/gap-cursor-selection';
|
|
7
7
|
import { normaliseNestedLayout } from './selection';
|
|
8
|
+
import { isListItemNode } from '../plugins/list/utils/node';
|
|
8
9
|
export let LookDirection;
|
|
9
10
|
(function (LookDirection) {
|
|
10
11
|
LookDirection["Before"] = "before";
|
|
@@ -18,6 +19,22 @@ const nodeIsInsideAList = tr => {
|
|
|
18
19
|
} = tr.doc.type.schema;
|
|
19
20
|
return hasParentNodeOfType([nodes.orderedList, nodes.bulletList])(tr.selection);
|
|
20
21
|
};
|
|
22
|
+
const selectionIsInsideAPanel = tr => {
|
|
23
|
+
const {
|
|
24
|
+
nodes
|
|
25
|
+
} = tr.doc.type.schema;
|
|
26
|
+
return hasParentNodeOfType(nodes.panel)(tr.selection);
|
|
27
|
+
};
|
|
28
|
+
const selectionIsInNestedList = tr => {
|
|
29
|
+
const {
|
|
30
|
+
nodes
|
|
31
|
+
} = tr.doc.type.schema;
|
|
32
|
+
const parentListNode = findParentNodeOfType([nodes.orderedList, nodes.bulletList])(tr.selection);
|
|
33
|
+
if (!parentListNode) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return isListItemNode(tr.doc.resolve(parentListNode.pos).parent);
|
|
37
|
+
};
|
|
21
38
|
const insertBeforeOrAfter = (tr, lookDirection, $parentPos, $proposedPosition, content) => {
|
|
22
39
|
/**
|
|
23
40
|
* This block caters for the first item in a parent with the cursor being at the very start
|
|
@@ -46,9 +63,7 @@ export const safeInsert = (content, position) => tr => {
|
|
|
46
63
|
nodes
|
|
47
64
|
} = tr.doc.type.schema;
|
|
48
65
|
const whitelist = [nodes.rule, nodes.mediaSingle];
|
|
49
|
-
|
|
50
|
-
// fallback if the node to insert is not in the whitelist, or if the insertion should happen within a list.
|
|
51
|
-
if (content instanceof Fragment || !whitelist.includes(content.type) || nodeIsInsideAList(tr)) {
|
|
66
|
+
if (content instanceof Fragment || !whitelist.includes(content.type)) {
|
|
52
67
|
return null;
|
|
53
68
|
}
|
|
54
69
|
|
|
@@ -82,14 +97,29 @@ export const safeInsert = (content, position) => tr => {
|
|
|
82
97
|
}
|
|
83
98
|
const grandParentNodeType = (_tr$selection$$from$n = tr.selection.$from.node(-1)) === null || _tr$selection$$from$n === void 0 ? void 0 : _tr$selection$$from$n.type;
|
|
84
99
|
const parentNodeType = tr.selection.$from.parent.type;
|
|
85
|
-
|
|
100
|
+
|
|
101
|
+
// if there is no direction, and cannot split for this particular node
|
|
102
|
+
const noDirectionAndShouldNotSplit = !lookDirection && !shouldSplitSelectedNodeOnNodeInsertion({
|
|
86
103
|
parentNodeType,
|
|
87
104
|
grandParentNodeType,
|
|
88
105
|
content
|
|
89
|
-
})
|
|
106
|
+
});
|
|
107
|
+
const ruleNodeInANestedListNode = content.type === nodes.rule && selectionIsInNestedList(tr);
|
|
108
|
+
const nonRuleNodeInListNode = !(content.type === nodes.rule) && nodeIsInsideAList(tr);
|
|
109
|
+
if (ruleNodeInANestedListNode || noDirectionAndShouldNotSplit && nonRuleNodeInListNode || noDirectionAndShouldNotSplit && !nodeIsInsideAList(tr)) {
|
|
90
110
|
// node to be inserted is an invalid child of selection so insert below selected node
|
|
91
111
|
return pmSafeInsert(content, tr.selection.from)(tr);
|
|
92
112
|
}
|
|
113
|
+
|
|
114
|
+
// if node is a rule and that is a flat list splitting and not at the end of a list
|
|
115
|
+
const {
|
|
116
|
+
from,
|
|
117
|
+
to
|
|
118
|
+
} = tr.selection;
|
|
119
|
+
const ruleTypeInAList = content.type === nodes.rule && nodeIsInsideAList(tr);
|
|
120
|
+
if (ruleTypeInAList && !($insertPos.pos === insertPosEnd)) {
|
|
121
|
+
return tr.replaceRange(from, to, new Slice(Fragment.from(nodes.rule.createChecked()), 0, 0));
|
|
122
|
+
}
|
|
93
123
|
if (!lookDirection) {
|
|
94
124
|
// fallback to consumer for now
|
|
95
125
|
return null;
|
|
@@ -111,7 +141,14 @@ export const safeInsert = (content, position) => tr => {
|
|
|
111
141
|
|
|
112
142
|
// If we can't insert, and we think we should split, we fallback to consumer for now
|
|
113
143
|
if (shouldSplit(parentNode.type, tr.doc.type.schema.nodes)) {
|
|
114
|
-
|
|
144
|
+
const nextTr = finaliseInsert(insertBeforeOrAfter(tr, lookDirection, $parentPos, $proposedPosition, content), content.nodeSize);
|
|
145
|
+
|
|
146
|
+
// Move selection to the closest text node, otherwise it defaults to the whatever the lookDirection is set to above
|
|
147
|
+
if ([nodes.orderedList, nodes.bulletList].includes(parentNode.type) && nextTr) {
|
|
148
|
+
return nextTr.setSelection(TextSelection.between(nextTr.selection.$from, nextTr.selection.$from));
|
|
149
|
+
} else {
|
|
150
|
+
return nextTr;
|
|
151
|
+
}
|
|
115
152
|
}
|
|
116
153
|
|
|
117
154
|
// Can not insert into current parent, step up one parent
|
|
@@ -155,7 +192,21 @@ export const insertSelectedItem = (maybeNode, opts = {}) => (state, tr, start) =
|
|
|
155
192
|
*
|
|
156
193
|
*/
|
|
157
194
|
} else if (node.isBlock) {
|
|
158
|
-
|
|
195
|
+
/**
|
|
196
|
+
*
|
|
197
|
+
* Rule has unique insertion behaviour
|
|
198
|
+
* so using this safeInsert function in order to handle specific cases in flat list vs nested list
|
|
199
|
+
* instead of a generic pmSafeInsert (i.e appending at the end)
|
|
200
|
+
*
|
|
201
|
+
*/
|
|
202
|
+
|
|
203
|
+
const selectionInsideAPanel = selectionIsInsideAPanel(tr);
|
|
204
|
+
if (node.type.name === 'rule' && !selectionInsideAPanel) {
|
|
205
|
+
var _safeInsert;
|
|
206
|
+
tr = (_safeInsert = safeInsert(node, tr.selection.from)(tr)) !== null && _safeInsert !== void 0 ? _safeInsert : tr;
|
|
207
|
+
} else {
|
|
208
|
+
tr = pmSafeInsert(normaliseNestedLayout(state, node), undefined, true)(tr);
|
|
209
|
+
}
|
|
159
210
|
|
|
160
211
|
/**
|
|
161
212
|
*
|
package/dist/es2019/version.json
CHANGED