@wordpress/block-editor 12.24.0 → 12.25.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/CHANGELOG.md +2 -0
- package/README.md +1 -1
- package/build/components/alignment-control/ui.js +3 -1
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-inspector/index.js +1 -1
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block.js +0 -9
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/index.js +4 -3
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/index.native.js +1 -9
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +6 -6
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-refs.js +17 -46
- package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
- package/build/components/block-list/use-block-props/use-is-hovered.js +10 -14
- package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build/components/block-mover/index.native.js +3 -1
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +0 -25
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +3 -1
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-switcher/use-transformed-patterns.js +6 -2
- package/build/components/block-switcher/use-transformed-patterns.js.map +1 -1
- package/build/components/block-switcher/utils.js +15 -5
- package/build/components/block-switcher/utils.js.map +1 -1
- package/build/components/block-toolbar/use-has-block-toolbar.js +14 -9
- package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
- package/build/components/block-tools/index.js +3 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +2 -5
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +5 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-variation-picker/index.js +3 -2
- package/build/components/block-variation-picker/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +3 -1
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/floating-toolbar/index.native.js +9 -5
- package/build/components/floating-toolbar/index.native.js.map +1 -1
- package/build/components/global-styles/background-panel.js +1 -1
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +3 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +16 -0
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +3 -2
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +23 -23
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +149 -132
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +45 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/inner-blocks/index.js +16 -2
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +12 -31
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +4 -0
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/category-tabs/index.js +56 -0
- package/build/components/inserter/category-tabs/index.js.map +1 -0
- package/build/components/inserter/media-tab/index.js +2 -2
- package/build/components/inserter/media-tab/index.js.map +1 -1
- package/build/components/inserter/media-tab/media-panel.js +0 -25
- package/build/components/inserter/media-tab/media-panel.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +13 -3
- package/build/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build/components/inserter/media-tab/media-tab.js +15 -29
- package/build/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build/components/inserter/menu.js +59 -69
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/tabs.js +6 -6
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/line-height-control/index.js +6 -2
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/search-item.js +9 -3
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/list-view/block-select-button.js +5 -170
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +166 -14
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/index.js +1 -1
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/list-view/utils.js +3 -1
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/media-placeholder/index.js +3 -3
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +3 -1
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/provider/block-refs-provider.js +3 -4
- package/build/components/provider/block-refs-provider.js.map +1 -1
- package/build/components/provider/use-block-sync.js +3 -12
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/rich-text/event-listeners/before-input-rules.js +93 -0
- package/build/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
- package/build/components/rich-text/event-listeners/delete.js +58 -0
- package/build/components/rich-text/event-listeners/delete.js.map +1 -0
- package/build/components/rich-text/event-listeners/enter.js +98 -0
- package/build/components/rich-text/event-listeners/enter.js.map +1 -0
- package/build/components/rich-text/event-listeners/firefox-compat.js +36 -0
- package/build/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
- package/build/components/rich-text/event-listeners/index.js +44 -0
- package/build/components/rich-text/event-listeners/index.js.map +1 -0
- package/build/components/rich-text/event-listeners/input-events.js +22 -0
- package/build/components/rich-text/event-listeners/input-events.js.map +1 -0
- package/build/components/rich-text/event-listeners/input-rules.js +135 -0
- package/build/components/rich-text/event-listeners/input-rules.js.map +1 -0
- package/build/components/rich-text/event-listeners/insert-replacement-text.js +33 -0
- package/build/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
- package/build/components/rich-text/event-listeners/paste-handler.js +146 -0
- package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -0
- package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js +27 -0
- package/build/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
- package/build/components/rich-text/event-listeners/shortcuts.js +22 -0
- package/build/components/rich-text/event-listeners/shortcuts.js.map +1 -0
- package/build/components/rich-text/event-listeners/undo-automatic-change.js +51 -0
- package/build/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
- package/build/components/rich-text/index.js +11 -31
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +13 -3
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/multiline.js +6 -2
- package/build/components/rich-text/multiline.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +12 -0
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/rich-text/use-format-types.js +8 -4
- package/build/components/rich-text/use-format-types.js.map +1 -1
- package/build/components/segmented-text-control/index.js +62 -0
- package/build/components/segmented-text-control/index.js.map +1 -0
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/text-alignment-control/index.js +76 -0
- package/build/components/text-alignment-control/index.js.map +1 -0
- package/build/components/text-decoration-control/index.js +21 -25
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +18 -22
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js +9 -3
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +3 -1
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/writing-flow/use-drag-selection.js +3 -1
- package/build/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +3 -1
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/components/writing-mode-control/index.js +16 -20
- package/build/components/writing-mode-control/index.js.map +1 -1
- package/build/hooks/duotone.js +3 -1
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/utils.js +11 -6
- package/build/hooks/utils.js.map +1 -1
- package/build/private-apis.js +4 -2
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +32 -8
- package/build/store/actions.js.map +1 -1
- package/build/store/private-selectors.js +27 -6
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +11 -8
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +21 -7
- package/build/store/selectors.js.map +1 -1
- package/build/utils/object.js +17 -0
- package/build/utils/object.js.map +1 -1
- package/build/utils/order-inserter-block-items.js +6 -2
- package/build/utils/order-inserter-block-items.js.map +1 -1
- package/build/utils/pasting.js +6 -2
- package/build/utils/pasting.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +3 -1
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-inspector/index.js +1 -1
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block.js +0 -9
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/index.js +4 -3
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/index.native.js +1 -9
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +6 -6
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-refs.js +19 -48
- package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-is-hovered.js +10 -14
- package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +3 -1
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +1 -26
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +3 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-switcher/use-transformed-patterns.js +6 -2
- package/build-module/components/block-switcher/use-transformed-patterns.js.map +1 -1
- package/build-module/components/block-switcher/utils.js +15 -5
- package/build-module/components/block-switcher/utils.js.map +1 -1
- package/build-module/components/block-toolbar/use-has-block-toolbar.js +14 -9
- package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
- package/build-module/components/block-tools/index.js +3 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +2 -5
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +5 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-variation-picker/index.js +3 -2
- package/build-module/components/block-variation-picker/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +3 -1
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/floating-toolbar/index.native.js +9 -5
- package/build-module/components/floating-toolbar/index.native.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +1 -1
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +3 -1
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +17 -1
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +3 -2
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +24 -24
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +149 -132
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +44 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +16 -2
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +13 -32
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +4 -0
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/category-tabs/index.js +49 -0
- package/build-module/components/inserter/category-tabs/index.js.map +1 -0
- package/build-module/components/inserter/media-tab/index.js +1 -1
- package/build-module/components/inserter/media-tab/index.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-panel.js +0 -24
- package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +13 -3
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-tab.js +17 -31
- package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build-module/components/inserter/menu.js +61 -71
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/tabs.js +6 -6
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/line-height-control/index.js +6 -2
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/search-item.js +9 -3
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +7 -172
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +167 -15
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/index.js +1 -1
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/list-view/utils.js +3 -1
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +3 -3
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +3 -1
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/provider/block-refs-provider.js +3 -4
- package/build-module/components/provider/block-refs-provider.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +4 -13
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/before-input-rules.js +86 -0
- package/build-module/components/rich-text/event-listeners/before-input-rules.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/delete.js +51 -0
- package/build-module/components/rich-text/event-listeners/delete.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/enter.js +92 -0
- package/build-module/components/rich-text/event-listeners/enter.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/firefox-compat.js +29 -0
- package/build-module/components/rich-text/event-listeners/firefox-compat.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/index.js +36 -0
- package/build-module/components/rich-text/event-listeners/index.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/input-events.js +15 -0
- package/build-module/components/rich-text/event-listeners/input-events.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/input-rules.js +127 -0
- package/build-module/components/rich-text/event-listeners/input-rules.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/insert-replacement-text.js +27 -0
- package/build-module/components/rich-text/event-listeners/insert-replacement-text.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/paste-handler.js +142 -0
- package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js +21 -0
- package/build-module/components/rich-text/event-listeners/remove-browser-shortcuts.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/shortcuts.js +15 -0
- package/build-module/components/rich-text/event-listeners/shortcuts.js.map +1 -0
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.js.map +1 -0
- package/build-module/components/rich-text/index.js +12 -32
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +13 -3
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/multiline.js +6 -2
- package/build-module/components/rich-text/multiline.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +12 -0
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-format-types.js +8 -4
- package/build-module/components/rich-text/use-format-types.js.map +1 -1
- package/build-module/components/segmented-text-control/index.js +55 -0
- package/build-module/components/segmented-text-control/index.js.map +1 -0
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -2
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/text-alignment-control/index.js +68 -0
- package/build-module/components/text-alignment-control/index.js.map +1 -0
- package/build-module/components/text-decoration-control/index.js +21 -25
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +18 -22
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +9 -3
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +3 -1
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/writing-flow/use-drag-selection.js +3 -1
- package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +3 -1
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/components/writing-mode-control/index.js +16 -20
- package/build-module/components/writing-mode-control/index.js.map +1 -1
- package/build-module/hooks/duotone.js +3 -1
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/utils.js +11 -6
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/private-apis.js +4 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +32 -8
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-selectors.js +27 -5
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +11 -8
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +21 -7
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/object.js +16 -0
- package/build-module/utils/object.js.map +1 -1
- package/build-module/utils/order-inserter-block-items.js +6 -2
- package/build-module/utils/order-inserter-block-items.js.map +1 -1
- package/build-module/utils/pasting.js +6 -2
- package/build-module/utils/pasting.js.map +1 -1
- package/build-style/content-rtl.css +41 -68
- package/build-style/content.css +41 -68
- package/build-style/style-rtl.css +100 -199
- package/build-style/style.css +100 -199
- package/package.json +31 -31
- package/src/components/alignment-control/ui.js +3 -1
- package/src/components/block-bindings-toolbar-indicator/style.scss +1 -4
- package/src/components/block-canvas/style.scss +1 -3
- package/src/components/block-draggable/test/helpers.native.js +8 -8
- package/src/components/block-inspector/index.js +1 -2
- package/src/components/block-list/block.js +2 -13
- package/src/components/block-list/content.scss +9 -1
- package/src/components/block-list/index.js +4 -4
- package/src/components/block-list/index.native.js +1 -6
- package/src/components/block-list/use-block-props/index.js +12 -4
- package/src/components/block-list/use-block-props/use-block-refs.js +17 -57
- package/src/components/block-list/use-block-props/use-is-hovered.js +11 -16
- package/src/components/block-mover/index.native.js +3 -1
- package/src/components/block-patterns-list/style.scss +1 -3
- package/src/components/block-preview/style.scss +13 -15
- package/src/components/block-settings-menu/block-settings-dropdown.js +1 -51
- package/src/components/block-switcher/pattern-transformations-menu.js +3 -1
- package/src/components/block-switcher/use-transformed-patterns.js +6 -2
- package/src/components/block-switcher/utils.js +14 -5
- package/src/components/block-toolbar/style.scss +8 -11
- package/src/components/block-toolbar/use-has-block-toolbar.js +21 -16
- package/src/components/block-tools/index.js +3 -1
- package/src/components/block-tools/use-show-block-tools.js +36 -48
- package/src/components/block-tools/zoom-out-mode-inserters.js +5 -1
- package/src/components/block-variation-picker/content.scss +22 -72
- package/src/components/block-variation-picker/index.js +3 -2
- package/src/components/block-variation-transforms/index.js +3 -1
- package/src/components/floating-toolbar/index.native.js +5 -2
- package/src/components/global-styles/background-panel.js +1 -3
- package/src/components/global-styles/color-panel.js +3 -1
- package/src/components/global-styles/dimensions-panel.js +18 -1
- package/src/components/global-styles/hooks.js +2 -0
- package/src/components/global-styles/test/utils.js +21 -0
- package/src/components/global-styles/typography-panel.js +27 -23
- package/src/components/global-styles/use-global-styles-output.js +211 -187
- package/src/components/global-styles/utils.js +55 -0
- package/src/components/inner-blocks/index.js +14 -1
- package/src/components/inserter/block-patterns-tab/index.js +15 -65
- package/src/components/inserter/block-types-tab.js +5 -0
- package/src/components/inserter/category-tabs/index.js +74 -0
- package/src/components/inserter/media-tab/index.js +1 -1
- package/src/components/inserter/media-tab/media-panel.js +0 -22
- package/src/components/inserter/media-tab/media-preview.js +15 -7
- package/src/components/inserter/media-tab/media-tab.js +44 -83
- package/src/components/inserter/menu.js +139 -117
- package/src/components/inserter/style.scss +90 -170
- package/src/components/inserter/tabs.js +5 -13
- package/src/components/line-height-control/index.js +6 -2
- package/src/components/link-control/search-item.js +9 -3
- package/src/components/list-view/block-select-button.js +73 -266
- package/src/components/list-view/block.js +218 -28
- package/src/components/list-view/index.js +1 -1
- package/src/components/list-view/style.scss +20 -28
- package/src/components/list-view/use-list-view-drop-zone.js +1 -1
- package/src/components/list-view/utils.js +3 -1
- package/src/components/media-placeholder/content.scss +0 -11
- package/src/components/media-placeholder/index.js +3 -3
- package/src/components/navigable-toolbar/index.js +3 -1
- package/src/components/provider/block-refs-provider.js +3 -8
- package/src/components/provider/test/use-block-sync.js +7 -0
- package/src/components/provider/use-block-sync.js +3 -20
- package/src/components/rich-text/event-listeners/before-input-rules.js +92 -0
- package/src/components/rich-text/event-listeners/delete.js +53 -0
- package/src/components/rich-text/event-listeners/enter.js +104 -0
- package/src/components/rich-text/event-listeners/firefox-compat.js +31 -0
- package/src/components/rich-text/event-listeners/index.js +56 -0
- package/src/components/rich-text/event-listeners/input-events.js +13 -0
- package/src/components/rich-text/event-listeners/input-rules.js +146 -0
- package/src/components/rich-text/event-listeners/insert-replacement-text.js +28 -0
- package/src/components/rich-text/event-listeners/paste-handler.js +169 -0
- package/src/components/rich-text/event-listeners/remove-browser-shortcuts.js +24 -0
- package/src/components/rich-text/event-listeners/shortcuts.js +13 -0
- package/src/components/rich-text/event-listeners/undo-automatic-change.js +45 -0
- package/src/components/rich-text/index.js +7 -34
- package/src/components/rich-text/index.native.js +11 -0
- package/src/components/rich-text/multiline.js +6 -2
- package/src/components/rich-text/native/index.native.js +11 -0
- package/src/components/rich-text/use-format-types.js +6 -2
- package/src/components/segmented-text-control/index.js +63 -0
- package/src/components/{writing-mode-control → segmented-text-control}/style.scss +2 -5
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +16 -1
- package/src/components/text-alignment-control/index.js +91 -0
- package/src/components/text-alignment-control/stories/index.story.js +39 -0
- package/src/components/text-decoration-control/index.js +20 -33
- package/src/components/text-transform-control/index.js +17 -30
- package/src/components/use-block-display-information/index.js +9 -3
- package/src/components/use-on-block-drop/index.js +3 -1
- package/src/components/writing-flow/use-drag-selection.js +3 -1
- package/src/components/writing-flow/use-tab-nav.js +3 -1
- package/src/components/writing-mode-control/index.js +15 -28
- package/src/hooks/duotone.js +3 -1
- package/src/hooks/utils.js +16 -2
- package/src/private-apis.js +4 -2
- package/src/store/actions.js +36 -12
- package/src/store/private-selectors.js +28 -4
- package/src/store/reducer.js +13 -23
- package/src/store/selectors.js +20 -7
- package/src/style.scss +1 -2
- package/src/utils/object.js +16 -0
- package/src/utils/order-inserter-block-items.js +6 -2
- package/src/utils/pasting.js +6 -2
- package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -54
- package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
- package/build/components/rich-text/use-before-input-rules.js +0 -98
- package/build/components/rich-text/use-before-input-rules.js.map +0 -1
- package/build/components/rich-text/use-delete.js +0 -64
- package/build/components/rich-text/use-delete.js.map +0 -1
- package/build/components/rich-text/use-enter.js +0 -109
- package/build/components/rich-text/use-enter.js.map +0 -1
- package/build/components/rich-text/use-firefox-compat.js +0 -44
- package/build/components/rich-text/use-firefox-compat.js.map +0 -1
- package/build/components/rich-text/use-input-events.js +0 -25
- package/build/components/rich-text/use-input-events.js.map +0 -1
- package/build/components/rich-text/use-input-rules.js +0 -139
- package/build/components/rich-text/use-input-rules.js.map +0 -1
- package/build/components/rich-text/use-insert-replacement-text.js +0 -38
- package/build/components/rich-text/use-insert-replacement-text.js.map +0 -1
- package/build/components/rich-text/use-paste-handler.js +0 -158
- package/build/components/rich-text/use-paste-handler.js.map +0 -1
- package/build/components/rich-text/use-remove-browser-shortcuts.js +0 -32
- package/build/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
- package/build/components/rich-text/use-shortcuts.js +0 -25
- package/build/components/rich-text/use-shortcuts.js.map +0 -1
- package/build/components/rich-text/use-undo-automatic-change.js +0 -53
- package/build/components/rich-text/use-undo-automatic-change.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -47
- package/build-module/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map +0 -1
- package/build-module/components/rich-text/use-before-input-rules.js +0 -92
- package/build-module/components/rich-text/use-before-input-rules.js.map +0 -1
- package/build-module/components/rich-text/use-delete.js +0 -57
- package/build-module/components/rich-text/use-delete.js.map +0 -1
- package/build-module/components/rich-text/use-enter.js +0 -102
- package/build-module/components/rich-text/use-enter.js.map +0 -1
- package/build-module/components/rich-text/use-firefox-compat.js +0 -37
- package/build-module/components/rich-text/use-firefox-compat.js.map +0 -1
- package/build-module/components/rich-text/use-input-events.js +0 -18
- package/build-module/components/rich-text/use-input-events.js.map +0 -1
- package/build-module/components/rich-text/use-input-rules.js +0 -132
- package/build-module/components/rich-text/use-input-rules.js.map +0 -1
- package/build-module/components/rich-text/use-insert-replacement-text.js +0 -32
- package/build-module/components/rich-text/use-insert-replacement-text.js.map +0 -1
- package/build-module/components/rich-text/use-paste-handler.js +0 -152
- package/build-module/components/rich-text/use-paste-handler.js.map +0 -1
- package/build-module/components/rich-text/use-remove-browser-shortcuts.js +0 -26
- package/build-module/components/rich-text/use-remove-browser-shortcuts.js.map +0 -1
- package/build-module/components/rich-text/use-shortcuts.js +0 -18
- package/build-module/components/rich-text/use-shortcuts.js.map +0 -1
- package/build-module/components/rich-text/use-undo-automatic-change.js +0 -46
- package/build-module/components/rich-text/use-undo-automatic-change.js.map +0 -1
- package/src/components/block-list/use-block-props/use-block-moving-mode-class-names.js +0 -55
- package/src/components/rich-text/use-before-input-rules.js +0 -99
- package/src/components/rich-text/use-delete.js +0 -59
- package/src/components/rich-text/use-enter.js +0 -110
- package/src/components/rich-text/use-firefox-compat.js +0 -39
- package/src/components/rich-text/use-input-events.js +0 -19
- package/src/components/rich-text/use-input-rules.js +0 -150
- package/src/components/rich-text/use-insert-replacement-text.js +0 -31
- package/src/components/rich-text/use-paste-handler.js +0 -180
- package/src/components/rich-text/use-remove-browser-shortcuts.js +0 -29
- package/src/components/rich-text/use-shortcuts.js +0 -19
- package/src/components/rich-text/use-undo-automatic-change.js +0 -46
- package/src/components/text-decoration-control/style.scss +0 -18
- package/src/components/text-transform-control/style.scss +0 -18
package/src/store/actions.js
CHANGED
|
@@ -675,7 +675,9 @@ export const __unstableDeleteSelection =
|
|
|
675
675
|
const selectionAnchor = select.getSelectionStart();
|
|
676
676
|
const selectionFocus = select.getSelectionEnd();
|
|
677
677
|
|
|
678
|
-
if ( selectionAnchor.clientId === selectionFocus.clientId )
|
|
678
|
+
if ( selectionAnchor.clientId === selectionFocus.clientId ) {
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
679
681
|
|
|
680
682
|
// It's not mergeable if there's no rich text selection.
|
|
681
683
|
if (
|
|
@@ -683,8 +685,9 @@ export const __unstableDeleteSelection =
|
|
|
683
685
|
! selectionFocus.attributeKey ||
|
|
684
686
|
typeof selectionAnchor.offset === 'undefined' ||
|
|
685
687
|
typeof selectionFocus.offset === 'undefined'
|
|
686
|
-
)
|
|
688
|
+
) {
|
|
687
689
|
return false;
|
|
690
|
+
}
|
|
688
691
|
|
|
689
692
|
const anchorRootClientId = select.getBlockRootClientId(
|
|
690
693
|
selectionAnchor.clientId
|
|
@@ -825,7 +828,9 @@ export const __unstableSplitSelection =
|
|
|
825
828
|
const selectionAnchor = select.getSelectionStart();
|
|
826
829
|
const selectionFocus = select.getSelectionEnd();
|
|
827
830
|
|
|
828
|
-
if ( selectionAnchor.clientId === selectionFocus.clientId )
|
|
831
|
+
if ( selectionAnchor.clientId === selectionFocus.clientId ) {
|
|
832
|
+
return;
|
|
833
|
+
}
|
|
829
834
|
|
|
830
835
|
// Can't split if the selection is not set.
|
|
831
836
|
if (
|
|
@@ -833,8 +838,9 @@ export const __unstableSplitSelection =
|
|
|
833
838
|
! selectionFocus.attributeKey ||
|
|
834
839
|
typeof selectionAnchor.offset === 'undefined' ||
|
|
835
840
|
typeof selectionFocus.offset === 'undefined'
|
|
836
|
-
)
|
|
841
|
+
) {
|
|
837
842
|
return;
|
|
843
|
+
}
|
|
838
844
|
|
|
839
845
|
const anchorRootClientId = select.getBlockRootClientId(
|
|
840
846
|
selectionAnchor.clientId
|
|
@@ -931,7 +937,9 @@ export const mergeBlocks =
|
|
|
931
937
|
const blockA = select.getBlock( clientIdA );
|
|
932
938
|
const blockAType = getBlockType( blockA.name );
|
|
933
939
|
|
|
934
|
-
if ( ! blockAType )
|
|
940
|
+
if ( ! blockAType ) {
|
|
941
|
+
return;
|
|
942
|
+
}
|
|
935
943
|
|
|
936
944
|
const blockB = select.getBlock( clientIdB );
|
|
937
945
|
|
|
@@ -1438,26 +1446,42 @@ export const __unstableSetEditorMode =
|
|
|
1438
1446
|
// When switching to zoom-out mode, we need to select the parent section
|
|
1439
1447
|
if ( mode === 'zoom-out' ) {
|
|
1440
1448
|
const firstSelectedClientId = select.getBlockSelectionStart();
|
|
1449
|
+
const allBlocks = select.getBlocks();
|
|
1450
|
+
|
|
1441
1451
|
const { sectionRootClientId } = unlock(
|
|
1442
1452
|
registry.select( STORE_NAME ).getSettings()
|
|
1443
1453
|
);
|
|
1444
1454
|
if ( sectionRootClientId ) {
|
|
1445
1455
|
const sectionClientIds =
|
|
1446
1456
|
select.getBlockOrder( sectionRootClientId );
|
|
1457
|
+
const lastSectionClientId =
|
|
1458
|
+
sectionClientIds[ sectionClientIds.length - 1 ];
|
|
1447
1459
|
if ( sectionClientIds ) {
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1460
|
+
if ( firstSelectedClientId ) {
|
|
1461
|
+
const parents = select.getBlockParents(
|
|
1462
|
+
firstSelectedClientId
|
|
1463
|
+
);
|
|
1464
|
+
const firstSectionClientId = parents.find( ( parent ) =>
|
|
1465
|
+
sectionClientIds.includes( parent )
|
|
1466
|
+
);
|
|
1467
|
+
if ( firstSectionClientId ) {
|
|
1468
|
+
dispatch.selectBlock( firstSectionClientId );
|
|
1469
|
+
} else {
|
|
1470
|
+
dispatch.selectBlock( lastSectionClientId );
|
|
1471
|
+
}
|
|
1472
|
+
} else {
|
|
1473
|
+
dispatch.selectBlock( lastSectionClientId );
|
|
1474
|
+
}
|
|
1455
1475
|
}
|
|
1456
1476
|
} else if ( firstSelectedClientId ) {
|
|
1457
1477
|
const rootClientId = select.getBlockHierarchyRootClientId(
|
|
1458
1478
|
firstSelectedClientId
|
|
1459
1479
|
);
|
|
1460
1480
|
dispatch.selectBlock( rootClientId );
|
|
1481
|
+
} else {
|
|
1482
|
+
// If there's no block selected and no sectionRootClientId, select the last root block.
|
|
1483
|
+
const lastRootBlock = allBlocks[ allBlocks.length - 1 ];
|
|
1484
|
+
dispatch.selectBlock( lastRootBlock?.clientId );
|
|
1461
1485
|
}
|
|
1462
1486
|
}
|
|
1463
1487
|
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
canInsertBlockType,
|
|
15
15
|
getBlockName,
|
|
16
16
|
getTemplateLock,
|
|
17
|
+
getClientIdsWithDescendants,
|
|
17
18
|
} from './selectors';
|
|
18
19
|
import {
|
|
19
20
|
checkAllowListRecursive,
|
|
@@ -175,13 +176,36 @@ export function getOpenedBlockSettingsMenu( state ) {
|
|
|
175
176
|
/**
|
|
176
177
|
* Returns all style overrides, intended to be merged with global editor styles.
|
|
177
178
|
*
|
|
179
|
+
* Overrides are sorted to match the order of the blocks they relate to. This
|
|
180
|
+
* is useful to maintain correct CSS cascade order.
|
|
181
|
+
*
|
|
178
182
|
* @param {Object} state Global application state.
|
|
179
183
|
*
|
|
180
|
-
* @return {
|
|
184
|
+
* @return {Array} An array of style ID to style override pairs.
|
|
181
185
|
*/
|
|
182
|
-
export
|
|
183
|
-
|
|
184
|
-
|
|
186
|
+
export const getStyleOverrides = createSelector(
|
|
187
|
+
( state ) => {
|
|
188
|
+
const clientIds = getClientIdsWithDescendants( state );
|
|
189
|
+
const clientIdMap = clientIds.reduce( ( acc, clientId, index ) => {
|
|
190
|
+
acc[ clientId ] = index;
|
|
191
|
+
return acc;
|
|
192
|
+
}, {} );
|
|
193
|
+
|
|
194
|
+
return [ ...state.styleOverrides ].sort( ( overrideA, overrideB ) => {
|
|
195
|
+
// Once the overrides Map is spread to an array, the first element
|
|
196
|
+
// is the key, while the second is the override itself including
|
|
197
|
+
// the clientId to sort by.
|
|
198
|
+
const [ , { clientId: clientIdA } ] = overrideA;
|
|
199
|
+
const [ , { clientId: clientIdB } ] = overrideB;
|
|
200
|
+
|
|
201
|
+
const aIndex = clientIdMap[ clientIdA ] ?? -1;
|
|
202
|
+
const bIndex = clientIdMap[ clientIdB ] ?? -1;
|
|
203
|
+
|
|
204
|
+
return aIndex - bIndex;
|
|
205
|
+
} );
|
|
206
|
+
},
|
|
207
|
+
( state ) => [ state.blocks.order, state.styleOverrides ]
|
|
208
|
+
);
|
|
185
209
|
|
|
186
210
|
/** @typedef {import('./actions').InserterMediaCategory} InserterMediaCategory */
|
|
187
211
|
/**
|
package/src/store/reducer.js
CHANGED
|
@@ -304,20 +304,15 @@ const withBlockTree =
|
|
|
304
304
|
action.blocks
|
|
305
305
|
);
|
|
306
306
|
newState.tree = new Map( newState.tree );
|
|
307
|
-
action.replacedClientIds
|
|
308
|
-
.
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
.map( ( clientId ) => 'controlled||' + clientId )
|
|
317
|
-
)
|
|
318
|
-
.forEach( ( key ) => {
|
|
319
|
-
newState.tree.delete( key );
|
|
320
|
-
} );
|
|
307
|
+
action.replacedClientIds.forEach( ( clientId ) => {
|
|
308
|
+
newState.tree.delete( clientId );
|
|
309
|
+
// Controlled inner blocks are only removed
|
|
310
|
+
// if the block doesn't move to another position
|
|
311
|
+
// otherwise their content will be lost.
|
|
312
|
+
if ( ! inserterClientIds[ clientId ] ) {
|
|
313
|
+
newState.tree.delete( 'controlled||' + clientId );
|
|
314
|
+
}
|
|
315
|
+
} );
|
|
321
316
|
|
|
322
317
|
updateBlockTreeForBlocks( newState, action.blocks );
|
|
323
318
|
updateParentInnerBlocksInTree(
|
|
@@ -358,15 +353,10 @@ const withBlockTree =
|
|
|
358
353
|
}
|
|
359
354
|
}
|
|
360
355
|
newState.tree = new Map( newState.tree );
|
|
361
|
-
action.removedClientIds
|
|
362
|
-
.
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
)
|
|
366
|
-
)
|
|
367
|
-
.forEach( ( key ) => {
|
|
368
|
-
newState.tree.delete( key );
|
|
369
|
-
} );
|
|
356
|
+
action.removedClientIds.forEach( ( clientId ) => {
|
|
357
|
+
newState.tree.delete( clientId );
|
|
358
|
+
newState.tree.delete( 'controlled||' + clientId );
|
|
359
|
+
} );
|
|
370
360
|
updateParentInnerBlocksInTree(
|
|
371
361
|
newState,
|
|
372
362
|
parentsOfRemovedBlocks,
|
package/src/store/selectors.js
CHANGED
|
@@ -1030,7 +1030,9 @@ export function __unstableIsSelectionMergeable( state, isForward ) {
|
|
|
1030
1030
|
const selectionFocus = getSelectionEnd( state );
|
|
1031
1031
|
|
|
1032
1032
|
// It's not mergeable if the start and end are within the same block.
|
|
1033
|
-
if ( selectionAnchor.clientId === selectionFocus.clientId )
|
|
1033
|
+
if ( selectionAnchor.clientId === selectionFocus.clientId ) {
|
|
1034
|
+
return false;
|
|
1035
|
+
}
|
|
1034
1036
|
|
|
1035
1037
|
// It's not mergeable if there's no rich text selection.
|
|
1036
1038
|
if (
|
|
@@ -1038,8 +1040,9 @@ export function __unstableIsSelectionMergeable( state, isForward ) {
|
|
|
1038
1040
|
! selectionFocus.attributeKey ||
|
|
1039
1041
|
typeof selectionAnchor.offset === 'undefined' ||
|
|
1040
1042
|
typeof selectionFocus.offset === 'undefined'
|
|
1041
|
-
)
|
|
1043
|
+
) {
|
|
1042
1044
|
return false;
|
|
1045
|
+
}
|
|
1043
1046
|
|
|
1044
1047
|
const anchorRootClientId = getBlockRootClientId(
|
|
1045
1048
|
state,
|
|
@@ -1081,12 +1084,16 @@ export function __unstableIsSelectionMergeable( state, isForward ) {
|
|
|
1081
1084
|
const targetBlockName = getBlockName( state, targetBlockClientId );
|
|
1082
1085
|
const targetBlockType = getBlockType( targetBlockName );
|
|
1083
1086
|
|
|
1084
|
-
if ( ! targetBlockType.merge )
|
|
1087
|
+
if ( ! targetBlockType.merge ) {
|
|
1088
|
+
return false;
|
|
1089
|
+
}
|
|
1085
1090
|
|
|
1086
1091
|
const blockToMerge = getBlock( state, blockToMergeClientId );
|
|
1087
1092
|
|
|
1088
1093
|
// It's mergeable if the blocks are of the same type.
|
|
1089
|
-
if ( blockToMerge.name === targetBlockName )
|
|
1094
|
+
if ( blockToMerge.name === targetBlockName ) {
|
|
1095
|
+
return true;
|
|
1096
|
+
}
|
|
1090
1097
|
|
|
1091
1098
|
// If the blocks are of a different type, try to transform the block being
|
|
1092
1099
|
// merged into the same type of block.
|
|
@@ -1938,7 +1945,9 @@ const buildBlockTypeItem =
|
|
|
1938
1945
|
isDisabled,
|
|
1939
1946
|
frecency: calculateFrecency( time, count ),
|
|
1940
1947
|
};
|
|
1941
|
-
if ( buildScope === 'transform' )
|
|
1948
|
+
if ( buildScope === 'transform' ) {
|
|
1949
|
+
return blockItemBase;
|
|
1950
|
+
}
|
|
1942
1951
|
|
|
1943
1952
|
const inserterVariations = getBlockVariations(
|
|
1944
1953
|
blockType.name,
|
|
@@ -2379,7 +2388,9 @@ export const __experimentalGetAllowedPatterns = createRegistrySelector(
|
|
|
2379
2388
|
export const getPatternsByBlockTypes = createRegistrySelector( ( select ) =>
|
|
2380
2389
|
createSelector(
|
|
2381
2390
|
( state, blockNames, rootClientId = null ) => {
|
|
2382
|
-
if ( ! blockNames )
|
|
2391
|
+
if ( ! blockNames ) {
|
|
2392
|
+
return EMPTY_ARRAY;
|
|
2393
|
+
}
|
|
2383
2394
|
const patterns =
|
|
2384
2395
|
select( STORE_NAME ).__experimentalGetAllowedPatterns(
|
|
2385
2396
|
rootClientId
|
|
@@ -2438,7 +2449,9 @@ export const __experimentalGetPatternTransformItems = createRegistrySelector(
|
|
|
2438
2449
|
( select ) =>
|
|
2439
2450
|
createSelector(
|
|
2440
2451
|
( state, blocks, rootClientId = null ) => {
|
|
2441
|
-
if ( ! blocks )
|
|
2452
|
+
if ( ! blocks ) {
|
|
2453
|
+
return EMPTY_ARRAY;
|
|
2454
|
+
}
|
|
2442
2455
|
/**
|
|
2443
2456
|
* For now we only handle blocks without InnerBlocks and take into account
|
|
2444
2457
|
* the `__experimentalRole` property of blocks' attributes for the transformation.
|
package/src/style.scss
CHANGED
|
@@ -41,9 +41,8 @@
|
|
|
41
41
|
@import "./components/multi-selection-inspector/style.scss";
|
|
42
42
|
@import "./components/responsive-block-control/style.scss";
|
|
43
43
|
@import "./components/rich-text/style.scss";
|
|
44
|
+
@import "./components/segmented-text-control/style.scss";
|
|
44
45
|
@import "./components/skip-to-selected-block/style.scss";
|
|
45
|
-
@import "./components/text-decoration-control/style.scss";
|
|
46
|
-
@import "./components/text-transform-control/style.scss";
|
|
47
46
|
@import "./components/tool-selector/style.scss";
|
|
48
47
|
@import "./components/url-input/style.scss";
|
|
49
48
|
@import "./components/url-popover/style.scss";
|
package/src/utils/object.js
CHANGED
|
@@ -49,3 +49,19 @@ export const getValueFromObjectPath = ( object, path, defaultValue ) => {
|
|
|
49
49
|
} );
|
|
50
50
|
return value ?? defaultValue;
|
|
51
51
|
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Helper util to filter out objects with duplicate values for a given property.
|
|
55
|
+
*
|
|
56
|
+
* @param {Object[]} array Array of objects to filter.
|
|
57
|
+
* @param {string} property Property to filter unique values by.
|
|
58
|
+
*
|
|
59
|
+
* @return {Object[]} Array of objects with unique values for the specified property.
|
|
60
|
+
*/
|
|
61
|
+
export function uniqByProperty( array, property ) {
|
|
62
|
+
const seen = new Set();
|
|
63
|
+
return array.filter( ( item ) => {
|
|
64
|
+
const value = item[ property ];
|
|
65
|
+
return seen.has( value ) ? false : seen.add( value );
|
|
66
|
+
} );
|
|
67
|
+
}
|
|
@@ -17,8 +17,12 @@ export const orderInserterBlockItems = ( items, priority ) => {
|
|
|
17
17
|
let aIndex = priority.indexOf( aName );
|
|
18
18
|
let bIndex = priority.indexOf( bName );
|
|
19
19
|
// All other block items should come after that.
|
|
20
|
-
if ( aIndex < 0 )
|
|
21
|
-
|
|
20
|
+
if ( aIndex < 0 ) {
|
|
21
|
+
aIndex = priority.length;
|
|
22
|
+
}
|
|
23
|
+
if ( bIndex < 0 ) {
|
|
24
|
+
bIndex = priority.length;
|
|
25
|
+
}
|
|
22
26
|
return aIndex - bIndex;
|
|
23
27
|
} );
|
|
24
28
|
|
package/src/utils/pasting.js
CHANGED
|
@@ -112,7 +112,9 @@ export function shouldDismissPastedFiles( files, html /*, plainText */ ) {
|
|
|
112
112
|
// other elements found, like <figure>, but we assume that the user's
|
|
113
113
|
// intention is to paste the actual image file.
|
|
114
114
|
const IMAGE_TAG = /<\s*img\b/gi;
|
|
115
|
-
if ( html.match( IMAGE_TAG )?.length !== 1 )
|
|
115
|
+
if ( html.match( IMAGE_TAG )?.length !== 1 ) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
116
118
|
|
|
117
119
|
// Even when there is exactly one <img> tag in the HTML payload, we
|
|
118
120
|
// choose to weed out local images, i.e. those whose source starts with
|
|
@@ -121,7 +123,9 @@ export function shouldDismissPastedFiles( files, html /*, plainText */ ) {
|
|
|
121
123
|
// text and exactly one image, and pasting that content using Google
|
|
122
124
|
// Chrome.
|
|
123
125
|
const IMG_WITH_LOCAL_SRC = /<\s*img\b[^>]*\bsrc="file:\/\//i;
|
|
124
|
-
if ( html.match( IMG_WITH_LOCAL_SRC ) )
|
|
126
|
+
if ( html.match( IMG_WITH_LOCAL_SRC ) ) {
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
125
129
|
}
|
|
126
130
|
|
|
127
131
|
return false;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.useBlockMovingModeClassNames = useBlockMovingModeClassNames;
|
|
8
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
9
|
-
var _data = require("@wordpress/data");
|
|
10
|
-
var _store = require("../../../store");
|
|
11
|
-
/**
|
|
12
|
-
* External dependencies
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* WordPress dependencies
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Internal dependencies
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Returns the class names used for block moving mode.
|
|
25
|
-
*
|
|
26
|
-
* @param {string} clientId The block client ID to insert above.
|
|
27
|
-
*
|
|
28
|
-
* @return {string} The class names.
|
|
29
|
-
*/
|
|
30
|
-
function useBlockMovingModeClassNames(clientId) {
|
|
31
|
-
return (0, _data.useSelect)(select => {
|
|
32
|
-
const {
|
|
33
|
-
hasBlockMovingClientId,
|
|
34
|
-
canInsertBlockType,
|
|
35
|
-
getBlockName,
|
|
36
|
-
getBlockRootClientId,
|
|
37
|
-
isBlockSelected
|
|
38
|
-
} = select(_store.store);
|
|
39
|
-
|
|
40
|
-
// The classes are only relevant for the selected block. Avoid
|
|
41
|
-
// re-rendering all blocks!
|
|
42
|
-
if (!isBlockSelected(clientId)) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const movingClientId = hasBlockMovingClientId();
|
|
46
|
-
if (!movingClientId) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
return (0, _classnames.default)('is-block-moving-mode', {
|
|
50
|
-
'can-insert-moving-block': canInsertBlockType(getBlockName(movingClientId), getBlockRootClientId(clientId))
|
|
51
|
-
});
|
|
52
|
-
}, [clientId]);
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=use-block-moving-mode-class-names.js.map
|
package/build/components/block-list/use-block-props/use-block-moving-mode-class-names.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_classnames","_interopRequireDefault","require","_data","_store","useBlockMovingModeClassNames","clientId","useSelect","select","hasBlockMovingClientId","canInsertBlockType","getBlockName","getBlockRootClientId","isBlockSelected","blockEditorStore","movingClientId","classnames"],"sources":["@wordpress/block-editor/src/components/block-list/use-block-props/use-block-moving-mode-class-names.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/**\n * Returns the class names used for block moving mode.\n *\n * @param {string} clientId The block client ID to insert above.\n *\n * @return {string} The class names.\n */\nexport function useBlockMovingModeClassNames( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\thasBlockMovingClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tisBlockSelected,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\t// The classes are only relevant for the selected block. Avoid\n\t\t\t// re-rendering all blocks!\n\t\t\tif ( ! isBlockSelected( clientId ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst movingClientId = hasBlockMovingClientId();\n\n\t\t\tif ( ! movingClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treturn classnames( 'is-block-moving-mode', {\n\t\t\t\t'can-insert-moving-block': canInsertBlockType(\n\t\t\t\t\tgetBlockName( movingClientId ),\n\t\t\t\t\tgetBlockRootClientId( clientId )\n\t\t\t\t),\n\t\t\t} );\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AAbA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,4BAA4BA,CAAEC,QAAQ,EAAG;EACxD,OAAO,IAAAC,eAAS,EACbC,MAAM,IAAM;IACb,MAAM;MACLC,sBAAsB;MACtBC,kBAAkB;MAClBC,YAAY;MACZC,oBAAoB;MACpBC;IACD,CAAC,GAAGL,MAAM,CAAEM,YAAiB,CAAC;;IAE9B;IACA;IACA,IAAK,CAAED,eAAe,CAAEP,QAAS,CAAC,EAAG;MACpC;IACD;IAEA,MAAMS,cAAc,GAAGN,sBAAsB,CAAC,CAAC;IAE/C,IAAK,CAAEM,cAAc,EAAG;MACvB;IACD;IAEA,OAAO,IAAAC,mBAAU,EAAE,sBAAsB,EAAE;MAC1C,yBAAyB,EAAEN,kBAAkB,CAC5CC,YAAY,CAAEI,cAAe,CAAC,EAC9BH,oBAAoB,CAAEN,QAAS,CAChC;IACD,CAAE,CAAC;EACJ,CAAC,EACD,CAAEA,QAAQ,CACX,CAAC;AACF","ignoreList":[]}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useBeforeInputRules = useBeforeInputRules;
|
|
7
|
-
var _element = require("@wordpress/element");
|
|
8
|
-
var _compose = require("@wordpress/compose");
|
|
9
|
-
var _richText = require("@wordpress/rich-text");
|
|
10
|
-
var _data = require("@wordpress/data");
|
|
11
|
-
var _hooks = require("@wordpress/hooks");
|
|
12
|
-
var _store = require("../../store");
|
|
13
|
-
/**
|
|
14
|
-
* WordPress dependencies
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Internal dependencies
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* When typing over a selection, the selection will we wrapped by a matching
|
|
23
|
-
* character pair. The second character is optional, it defaults to the first
|
|
24
|
-
* character.
|
|
25
|
-
*
|
|
26
|
-
* @type {string[]} Array of character pairs.
|
|
27
|
-
*/
|
|
28
|
-
const wrapSelectionSettings = ['`', '"', "'", '“”', '‘’'];
|
|
29
|
-
function useBeforeInputRules(props) {
|
|
30
|
-
const {
|
|
31
|
-
__unstableMarkLastChangeAsPersistent,
|
|
32
|
-
__unstableMarkAutomaticChange
|
|
33
|
-
} = (0, _data.useDispatch)(_store.store);
|
|
34
|
-
const propsRef = (0, _element.useRef)(props);
|
|
35
|
-
propsRef.current = props;
|
|
36
|
-
return (0, _compose.useRefEffect)(element => {
|
|
37
|
-
function onInput(event) {
|
|
38
|
-
const {
|
|
39
|
-
inputType,
|
|
40
|
-
data
|
|
41
|
-
} = event;
|
|
42
|
-
const {
|
|
43
|
-
value,
|
|
44
|
-
onChange
|
|
45
|
-
} = propsRef.current;
|
|
46
|
-
|
|
47
|
-
// Only run the rules when inserting text.
|
|
48
|
-
if (inputType !== 'insertText') {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if ((0, _richText.isCollapsed)(value)) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const pair = (0, _hooks.applyFilters)('blockEditor.wrapSelectionSettings', wrapSelectionSettings).find(([startChar, endChar]) => startChar === data || endChar === data);
|
|
55
|
-
if (!pair) {
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
const [startChar, endChar = startChar] = pair;
|
|
59
|
-
const start = value.start;
|
|
60
|
-
const end = value.end + startChar.length;
|
|
61
|
-
let newValue = (0, _richText.insert)(value, startChar, start, start);
|
|
62
|
-
newValue = (0, _richText.insert)(newValue, endChar, end, end);
|
|
63
|
-
__unstableMarkLastChangeAsPersistent();
|
|
64
|
-
onChange(newValue);
|
|
65
|
-
__unstableMarkAutomaticChange();
|
|
66
|
-
const init = {};
|
|
67
|
-
for (const key in event) {
|
|
68
|
-
init[key] = event[key];
|
|
69
|
-
}
|
|
70
|
-
init.data = endChar;
|
|
71
|
-
const {
|
|
72
|
-
ownerDocument
|
|
73
|
-
} = element;
|
|
74
|
-
const {
|
|
75
|
-
defaultView
|
|
76
|
-
} = ownerDocument;
|
|
77
|
-
const newEvent = new defaultView.InputEvent('input', init);
|
|
78
|
-
|
|
79
|
-
// Dispatch an `input` event with the new data. This will trigger the
|
|
80
|
-
// input rules.
|
|
81
|
-
// Postpone the `input` to the next event loop tick so that the dispatch
|
|
82
|
-
// doesn't happen synchronously in the middle of `beforeinput` dispatch.
|
|
83
|
-
// This is closer to how native `input` event would be timed, and also
|
|
84
|
-
// makes sure that the `input` event is dispatched only after the `onChange`
|
|
85
|
-
// call few lines above has fully updated the data store state and rerendered
|
|
86
|
-
// all affected components.
|
|
87
|
-
window.queueMicrotask(() => {
|
|
88
|
-
event.target.dispatchEvent(newEvent);
|
|
89
|
-
});
|
|
90
|
-
event.preventDefault();
|
|
91
|
-
}
|
|
92
|
-
element.addEventListener('beforeinput', onInput);
|
|
93
|
-
return () => {
|
|
94
|
-
element.removeEventListener('beforeinput', onInput);
|
|
95
|
-
};
|
|
96
|
-
}, []);
|
|
97
|
-
}
|
|
98
|
-
//# sourceMappingURL=use-before-input-rules.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_compose","_richText","_data","_hooks","_store","wrapSelectionSettings","useBeforeInputRules","props","__unstableMarkLastChangeAsPersistent","__unstableMarkAutomaticChange","useDispatch","blockEditorStore","propsRef","useRef","current","useRefEffect","element","onInput","event","inputType","data","value","onChange","isCollapsed","pair","applyFilters","find","startChar","endChar","start","end","length","newValue","insert","init","key","ownerDocument","defaultView","newEvent","InputEvent","window","queueMicrotask","target","dispatchEvent","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-before-input-rules.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { insert, isCollapsed } from '@wordpress/rich-text';\nimport { useDispatch } from '@wordpress/data';\nimport { applyFilters } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * When typing over a selection, the selection will we wrapped by a matching\n * character pair. The second character is optional, it defaults to the first\n * character.\n *\n * @type {string[]} Array of character pairs.\n */\nconst wrapSelectionSettings = [ '`', '\"', \"'\", '“”', '‘’' ];\n\nexport function useBeforeInputRules( props ) {\n\tconst {\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\t__unstableMarkAutomaticChange,\n\t} = useDispatch( blockEditorStore );\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onInput( event ) {\n\t\t\tconst { inputType, data } = event;\n\t\t\tconst { value, onChange } = propsRef.current;\n\n\t\t\t// Only run the rules when inserting text.\n\t\t\tif ( inputType !== 'insertText' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isCollapsed( value ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst pair = applyFilters(\n\t\t\t\t'blockEditor.wrapSelectionSettings',\n\t\t\t\twrapSelectionSettings\n\t\t\t).find(\n\t\t\t\t( [ startChar, endChar ] ) =>\n\t\t\t\t\tstartChar === data || endChar === data\n\t\t\t);\n\n\t\t\tif ( ! pair ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [ startChar, endChar = startChar ] = pair;\n\t\t\tconst start = value.start;\n\t\t\tconst end = value.end + startChar.length;\n\n\t\t\tlet newValue = insert( value, startChar, start, start );\n\t\t\tnewValue = insert( newValue, endChar, end, end );\n\n\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\tonChange( newValue );\n\t\t\t__unstableMarkAutomaticChange();\n\n\t\t\tconst init = {};\n\n\t\t\tfor ( const key in event ) {\n\t\t\t\tinit[ key ] = event[ key ];\n\t\t\t}\n\n\t\t\tinit.data = endChar;\n\n\t\t\tconst { ownerDocument } = element;\n\t\t\tconst { defaultView } = ownerDocument;\n\t\t\tconst newEvent = new defaultView.InputEvent( 'input', init );\n\n\t\t\t// Dispatch an `input` event with the new data. This will trigger the\n\t\t\t// input rules.\n\t\t\t// Postpone the `input` to the next event loop tick so that the dispatch\n\t\t\t// doesn't happen synchronously in the middle of `beforeinput` dispatch.\n\t\t\t// This is closer to how native `input` event would be timed, and also\n\t\t\t// makes sure that the `input` event is dispatched only after the `onChange`\n\t\t\t// call few lines above has fully updated the data store state and rerendered\n\t\t\t// all affected components.\n\t\t\twindow.queueMicrotask( () => {\n\t\t\t\tevent.target.dispatchEvent( newEvent );\n\t\t\t} );\n\t\t\tevent.preventDefault();\n\t\t}\n\n\t\telement.addEventListener( 'beforeinput', onInput );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'beforeinput', onInput );\n\t\t};\n\t}, [] );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAKA,IAAAK,MAAA,GAAAL,OAAA;AAZA;AACA;AACA;;AAOA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMM,qBAAqB,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAE;AAEpD,SAASC,mBAAmBA,CAAEC,KAAK,EAAG;EAC5C,MAAM;IACLC,oCAAoC;IACpCC;EACD,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAiB,CAAC;EACnC,MAAMC,QAAQ,GAAG,IAAAC,eAAM,EAAEN,KAAM,CAAC;EAChCK,QAAQ,CAACE,OAAO,GAAGP,KAAK;EACxB,OAAO,IAAAQ,qBAAY,EAAIC,OAAO,IAAM;IACnC,SAASC,OAAOA,CAAEC,KAAK,EAAG;MACzB,MAAM;QAAEC,SAAS;QAAEC;MAAK,CAAC,GAAGF,KAAK;MACjC,MAAM;QAAEG,KAAK;QAAEC;MAAS,CAAC,GAAGV,QAAQ,CAACE,OAAO;;MAE5C;MACA,IAAKK,SAAS,KAAK,YAAY,EAAG;QACjC;MACD;MAEA,IAAK,IAAAI,qBAAW,EAAEF,KAAM,CAAC,EAAG;QAC3B;MACD;MAEA,MAAMG,IAAI,GAAG,IAAAC,mBAAY,EACxB,mCAAmC,EACnCpB,qBACD,CAAC,CAACqB,IAAI,CACL,CAAE,CAAEC,SAAS,EAAEC,OAAO,CAAE,KACvBD,SAAS,KAAKP,IAAI,IAAIQ,OAAO,KAAKR,IACpC,CAAC;MAED,IAAK,CAAEI,IAAI,EAAG;QACb;MACD;MAEA,MAAM,CAAEG,SAAS,EAAEC,OAAO,GAAGD,SAAS,CAAE,GAAGH,IAAI;MAC/C,MAAMK,KAAK,GAAGR,KAAK,CAACQ,KAAK;MACzB,MAAMC,GAAG,GAAGT,KAAK,CAACS,GAAG,GAAGH,SAAS,CAACI,MAAM;MAExC,IAAIC,QAAQ,GAAG,IAAAC,gBAAM,EAAEZ,KAAK,EAAEM,SAAS,EAAEE,KAAK,EAAEA,KAAM,CAAC;MACvDG,QAAQ,GAAG,IAAAC,gBAAM,EAAED,QAAQ,EAAEJ,OAAO,EAAEE,GAAG,EAAEA,GAAI,CAAC;MAEhDtB,oCAAoC,CAAC,CAAC;MACtCc,QAAQ,CAAEU,QAAS,CAAC;MACpBvB,6BAA6B,CAAC,CAAC;MAE/B,MAAMyB,IAAI,GAAG,CAAC,CAAC;MAEf,KAAM,MAAMC,GAAG,IAAIjB,KAAK,EAAG;QAC1BgB,IAAI,CAAEC,GAAG,CAAE,GAAGjB,KAAK,CAAEiB,GAAG,CAAE;MAC3B;MAEAD,IAAI,CAACd,IAAI,GAAGQ,OAAO;MAEnB,MAAM;QAAEQ;MAAc,CAAC,GAAGpB,OAAO;MACjC,MAAM;QAAEqB;MAAY,CAAC,GAAGD,aAAa;MACrC,MAAME,QAAQ,GAAG,IAAID,WAAW,CAACE,UAAU,CAAE,OAAO,EAAEL,IAAK,CAAC;;MAE5D;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACAM,MAAM,CAACC,cAAc,CAAE,MAAM;QAC5BvB,KAAK,CAACwB,MAAM,CAACC,aAAa,CAAEL,QAAS,CAAC;MACvC,CAAE,CAAC;MACHpB,KAAK,CAAC0B,cAAc,CAAC,CAAC;IACvB;IAEA5B,OAAO,CAAC6B,gBAAgB,CAAE,aAAa,EAAE5B,OAAQ,CAAC;IAClD,OAAO,MAAM;MACZD,OAAO,CAAC8B,mBAAmB,CAAE,aAAa,EAAE7B,OAAQ,CAAC;IACtD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.useDelete = useDelete;
|
|
7
|
-
var _element = require("@wordpress/element");
|
|
8
|
-
var _compose = require("@wordpress/compose");
|
|
9
|
-
var _keycodes = require("@wordpress/keycodes");
|
|
10
|
-
var _richText = require("@wordpress/rich-text");
|
|
11
|
-
/**
|
|
12
|
-
* WordPress dependencies
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
function useDelete(props) {
|
|
16
|
-
const propsRef = (0, _element.useRef)(props);
|
|
17
|
-
propsRef.current = props;
|
|
18
|
-
return (0, _compose.useRefEffect)(element => {
|
|
19
|
-
function onKeyDown(event) {
|
|
20
|
-
const {
|
|
21
|
-
keyCode
|
|
22
|
-
} = event;
|
|
23
|
-
if (event.defaultPrevented) {
|
|
24
|
-
return;
|
|
25
|
-
}
|
|
26
|
-
const {
|
|
27
|
-
value,
|
|
28
|
-
onMerge,
|
|
29
|
-
onRemove
|
|
30
|
-
} = propsRef.current;
|
|
31
|
-
if (keyCode === _keycodes.DELETE || keyCode === _keycodes.BACKSPACE) {
|
|
32
|
-
const {
|
|
33
|
-
start,
|
|
34
|
-
end,
|
|
35
|
-
text
|
|
36
|
-
} = value;
|
|
37
|
-
const isReverse = keyCode === _keycodes.BACKSPACE;
|
|
38
|
-
const hasActiveFormats = value.activeFormats && !!value.activeFormats.length;
|
|
39
|
-
|
|
40
|
-
// Only process delete if the key press occurs at an uncollapsed edge.
|
|
41
|
-
if (!(0, _richText.isCollapsed)(value) || hasActiveFormats || isReverse && start !== 0 || !isReverse && end !== text.length) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (onMerge) {
|
|
45
|
-
onMerge(!isReverse);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Only handle remove on Backspace. This serves dual-purpose of being
|
|
49
|
-
// an intentional user interaction distinguishing between Backspace and
|
|
50
|
-
// Delete to remove the empty field, but also to avoid merge & remove
|
|
51
|
-
// causing destruction of two fields (merge, then removed merged).
|
|
52
|
-
else if (onRemove && (0, _richText.isEmpty)(value) && isReverse) {
|
|
53
|
-
onRemove(!isReverse);
|
|
54
|
-
}
|
|
55
|
-
event.preventDefault();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
element.addEventListener('keydown', onKeyDown);
|
|
59
|
-
return () => {
|
|
60
|
-
element.removeEventListener('keydown', onKeyDown);
|
|
61
|
-
};
|
|
62
|
-
}, []);
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=use-delete.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_compose","_keycodes","_richText","useDelete","props","propsRef","useRef","current","useRefEffect","element","onKeyDown","event","keyCode","defaultPrevented","value","onMerge","onRemove","DELETE","BACKSPACE","start","end","text","isReverse","hasActiveFormats","activeFormats","length","isCollapsed","isEmpty","preventDefault","addEventListener","removeEventListener"],"sources":["@wordpress/block-editor/src/components/rich-text/use-delete.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { useRefEffect } from '@wordpress/compose';\nimport { DELETE, BACKSPACE } from '@wordpress/keycodes';\nimport { isCollapsed, isEmpty } from '@wordpress/rich-text';\n\nexport function useDelete( props ) {\n\tconst propsRef = useRef( props );\n\tpropsRef.current = props;\n\treturn useRefEffect( ( element ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tconst { keyCode } = event;\n\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { value, onMerge, onRemove } = propsRef.current;\n\n\t\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\t\tconst { start, end, text } = value;\n\t\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\t\tconst hasActiveFormats =\n\t\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\t\tif (\n\t\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\t\thasActiveFormats ||\n\t\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( onMerge ) {\n\t\t\t\t\tonMerge( ! isReverse );\n\t\t\t\t}\n\n\t\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\t\telse if ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\t\tonRemove( ! isReverse );\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],"mappings":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AANA;AACA;AACA;;AAMO,SAASI,SAASA,CAAEC,KAAK,EAAG;EAClC,MAAMC,QAAQ,GAAG,IAAAC,eAAM,EAAEF,KAAM,CAAC;EAChCC,QAAQ,CAACE,OAAO,GAAGH,KAAK;EACxB,OAAO,IAAAI,qBAAY,EAAIC,OAAO,IAAM;IACnC,SAASC,SAASA,CAAEC,KAAK,EAAG;MAC3B,MAAM;QAAEC;MAAQ,CAAC,GAAGD,KAAK;MAEzB,IAAKA,KAAK,CAACE,gBAAgB,EAAG;QAC7B;MACD;MAEA,MAAM;QAAEC,KAAK;QAAEC,OAAO;QAAEC;MAAS,CAAC,GAAGX,QAAQ,CAACE,OAAO;MAErD,IAAKK,OAAO,KAAKK,gBAAM,IAAIL,OAAO,KAAKM,mBAAS,EAAG;QAClD,MAAM;UAAEC,KAAK;UAAEC,GAAG;UAAEC;QAAK,CAAC,GAAGP,KAAK;QAClC,MAAMQ,SAAS,GAAGV,OAAO,KAAKM,mBAAS;QACvC,MAAMK,gBAAgB,GACrBT,KAAK,CAACU,aAAa,IAAI,CAAC,CAAEV,KAAK,CAACU,aAAa,CAACC,MAAM;;QAErD;QACA,IACC,CAAE,IAAAC,qBAAW,EAAEZ,KAAM,CAAC,IACtBS,gBAAgB,IACdD,SAAS,IAAIH,KAAK,KAAK,CAAG,IAC1B,CAAEG,SAAS,IAAIF,GAAG,KAAKC,IAAI,CAACI,MAAQ,EACrC;UACD;QACD;QAEA,IAAKV,OAAO,EAAG;UACdA,OAAO,CAAE,CAAEO,SAAU,CAAC;QACvB;;QAEA;QACA;QACA;QACA;QAAA,KACK,IAAKN,QAAQ,IAAI,IAAAW,iBAAO,EAAEb,KAAM,CAAC,IAAIQ,SAAS,EAAG;UACrDN,QAAQ,CAAE,CAAEM,SAAU,CAAC;QACxB;QAEAX,KAAK,CAACiB,cAAc,CAAC,CAAC;MACvB;IACD;IAEAnB,OAAO,CAACoB,gBAAgB,CAAE,SAAS,EAAEnB,SAAU,CAAC;IAChD,OAAO,MAAM;MACZD,OAAO,CAACqB,mBAAmB,CAAE,SAAS,EAAEpB,SAAU,CAAC;IACpD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;AACR","ignoreList":[]}
|