@wordpress/block-editor 10.4.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +0 -1
- package/build/autocompleters/block.js +2 -6
- package/build/autocompleters/block.js.map +1 -1
- package/build/autocompleters/link.js +2 -0
- package/build/autocompleters/link.js.map +1 -1
- package/build/components/block-card/index.js +51 -3
- package/build/components/block-card/index.js.map +1 -1
- package/build/components/block-draggable/index.native.js +46 -39
- package/build/components/block-draggable/index.native.js.map +1 -1
- package/build/components/block-edit/edit.js +4 -3
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-edit/edit.native.js +4 -7
- package/build/components/block-edit/edit.native.js.map +1 -1
- package/build/components/block-inspector/index.js +35 -33
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-list-context.native.js +5 -8
- package/build/components/block-list/block-list-context.native.js.map +1 -1
- package/build/components/block-list/block.js +55 -24
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +61 -28
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-lock/menu-item.js +1 -1
- package/build/components/block-lock/menu-item.js.map +1 -1
- package/build/components/block-lock/modal.js +16 -9
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +12 -4
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +3 -2
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +33 -11
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-preview/auto.js +9 -3
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-preview/index.js +5 -9
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/utils.js +3 -3
- package/build/components/block-styles/utils.js.map +1 -1
- package/build/components/block-switcher/index.js +19 -4
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +5 -1
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +8 -49
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +27 -4
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-variation-picker/index.js +1 -2
- package/build/components/block-variation-picker/index.js.map +1 -1
- package/build/components/colors/with-colors.js +4 -3
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/font-sizes/fluid-utils.js +24 -40
- package/build/components/font-sizes/fluid-utils.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +7 -5
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/height-control/index.js +115 -0
- package/build/components/height-control/index.js.map +1 -0
- package/build/components/iframe/index.js +11 -8
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/use-save-image.js +2 -0
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/image-editor/zoom-dropdown.js +1 -0
- package/build/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build/components/index.js +18 -0
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +25 -9
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +25 -10
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/sidebar.js +1 -0
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build/components/inserter/block-patterns-tab.js +25 -46
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/block-types-tab.js +3 -1
- package/build/components/inserter/block-types-tab.js.map +1 -1
- package/build/components/inserter/hooks/use-debounced-input.js +27 -0
- package/build/components/inserter/hooks/use-debounced-input.js.map +1 -0
- package/build/components/inserter/index.js +8 -3
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +3 -4
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +103 -0
- package/build/components/inserter/media-tab/hooks.js.map +1 -0
- package/build/components/inserter/media-tab/index.js +32 -0
- package/build/components/inserter/media-tab/index.js.map +1 -0
- package/build/components/inserter/media-tab/media-list.js +100 -0
- package/build/components/inserter/media-tab/media-list.js.map +1 -0
- package/build/components/inserter/media-tab/media-panel.js +96 -0
- package/build/components/inserter/media-tab/media-panel.js.map +1 -0
- package/build/components/inserter/media-tab/media-tab.js +120 -0
- package/build/components/inserter/media-tab/media-tab.js.map +1 -0
- package/build/components/inserter/media-tab/utils.js +54 -0
- package/build/components/inserter/media-tab/utils.js.map +1 -0
- package/build/components/inserter/menu.js +35 -12
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/mobile-tab-navigation.js +70 -0
- package/build/components/inserter/mobile-tab-navigation.js.map +1 -0
- package/build/components/inserter/quick-inserter.js +1 -0
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.js +4 -1
- package/build/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build/components/inserter/search-results.js +3 -1
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter/tabs.js +16 -2
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/inserter-list-item/index.js +4 -1
- package/build/components/inserter-list-item/index.js.map +1 -1
- package/build/components/inspector-controls/groups.js +2 -0
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls-tabs/advanced-controls-panel.js +46 -0
- package/build/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
- package/build/components/inspector-controls-tabs/index.js +71 -0
- package/build/components/inspector-controls-tabs/index.js.map +1 -0
- package/build/components/inspector-controls-tabs/settings-tab.js +28 -0
- package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -0
- package/build/components/inspector-controls-tabs/styles-tab.js +61 -0
- package/build/components/inspector-controls-tabs/styles-tab.js.map +1 -0
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +97 -0
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
- package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +18 -0
- package/build/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
- package/build/components/inspector-controls-tabs/utils.js +37 -0
- package/build/components/inspector-controls-tabs/utils.js.map +1 -0
- package/build/components/link-control/index.js +19 -34
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-input.js +1 -2
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/use-internal-input-value.js +26 -0
- package/build/components/link-control/use-internal-input-value.js.map +1 -0
- package/build/components/list-view/block.js +10 -5
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +22 -15
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/media-upload/index.native.js +2 -3
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/off-canvas-editor/appender.js +104 -0
- package/build/components/off-canvas-editor/appender.js.map +1 -0
- package/build/components/off-canvas-editor/block-contents.js +100 -0
- package/build/components/off-canvas-editor/block-contents.js.map +1 -0
- package/build/components/off-canvas-editor/block-edit-button.js +50 -0
- package/build/components/off-canvas-editor/block-edit-button.js.map +1 -0
- package/build/components/off-canvas-editor/block-select-button.js +119 -0
- package/build/components/off-canvas-editor/block-select-button.js.map +1 -0
- package/build/components/off-canvas-editor/block.js +324 -0
- package/build/components/off-canvas-editor/block.js.map +1 -0
- package/build/components/off-canvas-editor/branch.js +179 -0
- package/build/components/off-canvas-editor/branch.js.map +1 -0
- package/build/components/off-canvas-editor/context.js +19 -0
- package/build/components/off-canvas-editor/context.js.map +1 -0
- package/build/components/off-canvas-editor/drop-indicator.js +118 -0
- package/build/components/off-canvas-editor/drop-indicator.js.map +1 -0
- package/build/components/off-canvas-editor/expander.js +41 -0
- package/build/components/off-canvas-editor/expander.js.map +1 -0
- package/build/components/off-canvas-editor/index.js +213 -0
- package/build/components/off-canvas-editor/index.js.map +1 -0
- package/build/components/off-canvas-editor/leaf.js +60 -0
- package/build/components/off-canvas-editor/leaf.js.map +1 -0
- package/build/components/off-canvas-editor/link-ui.js +185 -0
- package/build/components/off-canvas-editor/link-ui.js.map +1 -0
- package/build/components/off-canvas-editor/update-attributes.js +108 -0
- package/build/components/off-canvas-editor/update-attributes.js.map +1 -0
- package/build/components/off-canvas-editor/use-block-selection.js +139 -0
- package/build/components/off-canvas-editor/use-block-selection.js.map +1 -0
- package/build/components/off-canvas-editor/use-list-view-client-ids.js +33 -0
- package/build/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
- package/build/components/off-canvas-editor/use-list-view-drop-zone.js +235 -0
- package/build/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
- package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js +60 -0
- package/build/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
- package/build/components/off-canvas-editor/utils.js +60 -0
- package/build/components/off-canvas-editor/utils.js.map +1 -0
- package/build/components/rich-text/format-toolbar/index.js +8 -4
- package/build/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build/components/rich-text/index.js +3 -3
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +0 -2
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/use-insert-replacement-text.js +43 -0
- package/build/components/rich-text/use-insert-replacement-text.js.map +1 -0
- package/build/components/rich-text/use-undo-automatic-change.js +9 -1
- package/build/components/rich-text/use-undo-automatic-change.js.map +1 -1
- package/build/components/rich-text/utils.js +1 -19
- package/build/components/rich-text/utils.js.map +1 -1
- package/build/components/spacing-sizes-control/spacing-input-control.js +12 -3
- package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build/components/ungroup-button/index.native.js +4 -2
- package/build/components/ungroup-button/index.native.js.map +1 -1
- package/build/components/url-input/index.js +46 -43
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/url-popover/index.js +31 -2
- package/build/components/url-popover/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js +8 -4
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/components/use-setting/index.js +10 -2
- package/build/components/use-setting/index.js.map +1 -1
- package/build/hooks/child-layout.js +209 -0
- package/build/hooks/child-layout.js.map +1 -0
- package/build/hooks/color-panel.js +17 -1
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color.js +1 -1
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/content-lock-ui.js +14 -7
- package/build/hooks/content-lock-ui.js.map +1 -1
- package/build/hooks/dimensions.js +65 -16
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/layout.js +59 -3
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/margin.js +4 -2
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/min-height.js +139 -0
- package/build/hooks/min-height.js.map +1 -0
- package/build/hooks/padding.js +4 -2
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/style.js +3 -2
- package/build/hooks/style.js.map +1 -1
- package/build/layouts/flex.js +22 -21
- package/build/layouts/flex.js.map +1 -1
- package/build/store/actions.js +26 -0
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +420 -265
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +73 -49
- package/build/store/selectors.js.map +1 -1
- package/build/utils/sorting.js +63 -0
- package/build/utils/sorting.js.map +1 -0
- package/build-module/autocompleters/block.js +2 -6
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/autocompleters/link.js +2 -0
- package/build-module/autocompleters/link.js.map +1 -1
- package/build-module/components/block-card/index.js +45 -3
- package/build-module/components/block-card/index.js.map +1 -1
- package/build-module/components/block-draggable/index.native.js +40 -31
- package/build-module/components/block-draggable/index.native.js.map +1 -1
- package/build-module/components/block-edit/edit.js +4 -2
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-edit/edit.native.js +4 -6
- package/build-module/components/block-edit/edit.native.js.map +1 -1
- package/build-module/components/block-inspector/index.js +32 -30
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-list-context.native.js +5 -8
- package/build-module/components/block-list/block-list-context.native.js.map +1 -1
- package/build-module/components/block-list/block.js +55 -25
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +61 -28
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-lock/menu-item.js +2 -2
- package/build-module/components/block-lock/menu-item.js.map +1 -1
- package/build-module/components/block-lock/modal.js +17 -10
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +13 -6
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +3 -2
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +35 -13
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +9 -3
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-preview/index.js +5 -8
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -2
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/utils.js +3 -3
- package/build-module/components/block-styles/utils.js.map +1 -1
- package/build-module/components/block-switcher/index.js +19 -4
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +6 -2
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +8 -49
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +27 -5
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/block-variation-picker/index.js +1 -2
- package/build-module/components/block-variation-picker/index.js.map +1 -1
- package/build-module/components/colors/with-colors.js +5 -4
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/font-sizes/fluid-utils.js +24 -40
- package/build-module/components/font-sizes/fluid-utils.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +8 -6
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/height-control/index.js +103 -0
- package/build-module/components/height-control/index.js.map +1 -0
- package/build-module/components/iframe/index.js +11 -8
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/use-save-image.js +2 -0
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/image-editor/zoom-dropdown.js +1 -0
- package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build-module/components/index.js +2 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +27 -11
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +23 -10
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js +1 -0
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab.js +27 -49
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.js +3 -2
- package/build-module/components/inserter/block-types-tab.js.map +1 -1
- package/build-module/components/inserter/hooks/use-debounced-input.js +18 -0
- package/build-module/components/inserter/hooks/use-debounced-input.js.map +1 -0
- package/build-module/components/inserter/index.js +8 -3
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +3 -5
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +89 -0
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -0
- package/build-module/components/inserter/media-tab/index.js +4 -0
- package/build-module/components/inserter/media-tab/index.js.map +1 -0
- package/build-module/components/inserter/media-tab/media-list.js +86 -0
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -0
- package/build-module/components/inserter/media-tab/media-panel.js +77 -0
- package/build-module/components/inserter/media-tab/media-panel.js.map +1 -0
- package/build-module/components/inserter/media-tab/media-tab.js +100 -0
- package/build-module/components/inserter/media-tab/media-tab.js.map +1 -0
- package/build-module/components/inserter/media-tab/utils.js +45 -0
- package/build-module/components/inserter/media-tab/utils.js.map +1 -0
- package/build-module/components/inserter/menu.js +33 -12
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/mobile-tab-navigation.js +61 -0
- package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -0
- package/build-module/components/inserter/quick-inserter.js +1 -0
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.js +3 -1
- package/build-module/components/inserter/reusable-blocks-tab.js.map +1 -1
- package/build-module/components/inserter/search-results.js +3 -2
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter/tabs.js +15 -2
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/inserter-list-item/index.js +5 -2
- package/build-module/components/inserter-list-item/index.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +2 -0
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js +32 -0
- package/build-module/components/inspector-controls-tabs/advanced-controls-panel.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/index.js +56 -0
- package/build-module/components/inspector-controls-tabs/index.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/settings-tab.js +17 -0
- package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.js +46 -0
- package/build-module/components/inspector-controls-tabs/styles-tab.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +81 -0
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +8 -0
- package/build-module/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js.map +1 -0
- package/build-module/components/inspector-controls-tabs/utils.js +26 -0
- package/build-module/components/inspector-controls-tabs/utils.js.map +1 -0
- package/build-module/components/link-control/index.js +18 -34
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-input.js +1 -2
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/use-internal-input-value.js +18 -0
- package/build-module/components/link-control/use-internal-input-value.js.map +1 -0
- package/build-module/components/list-view/block.js +10 -5
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +21 -14
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +2 -4
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/off-canvas-editor/appender.js +89 -0
- package/build-module/components/off-canvas-editor/appender.js.map +1 -0
- package/build-module/components/off-canvas-editor/block-contents.js +85 -0
- package/build-module/components/off-canvas-editor/block-contents.js.map +1 -0
- package/build-module/components/off-canvas-editor/block-edit-button.js +35 -0
- package/build-module/components/off-canvas-editor/block-edit-button.js.map +1 -0
- package/build-module/components/off-canvas-editor/block-select-button.js +101 -0
- package/build-module/components/off-canvas-editor/block-select-button.js.map +1 -0
- package/build-module/components/off-canvas-editor/block.js +298 -0
- package/build-module/components/off-canvas-editor/block.js.map +1 -0
- package/build-module/components/off-canvas-editor/branch.js +164 -0
- package/build-module/components/off-canvas-editor/branch.js.map +1 -0
- package/build-module/components/off-canvas-editor/context.js +7 -0
- package/build-module/components/off-canvas-editor/context.js.map +1 -0
- package/build-module/components/off-canvas-editor/drop-indicator.js +111 -0
- package/build-module/components/off-canvas-editor/drop-indicator.js.map +1 -0
- package/build-module/components/off-canvas-editor/expander.js +32 -0
- package/build-module/components/off-canvas-editor/expander.js.map +1 -0
- package/build-module/components/off-canvas-editor/index.js +189 -0
- package/build-module/components/off-canvas-editor/index.js.map +1 -0
- package/build-module/components/off-canvas-editor/leaf.js +45 -0
- package/build-module/components/off-canvas-editor/leaf.js.map +1 -0
- package/build-module/components/off-canvas-editor/link-ui.js +165 -0
- package/build-module/components/off-canvas-editor/link-ui.js.map +1 -0
- package/build-module/components/off-canvas-editor/update-attributes.js +97 -0
- package/build-module/components/off-canvas-editor/update-attributes.js.map +1 -0
- package/build-module/components/off-canvas-editor/use-block-selection.js +124 -0
- package/build-module/components/off-canvas-editor/use-block-selection.js.map +1 -0
- package/build-module/components/off-canvas-editor/use-list-view-client-ids.js +24 -0
- package/build-module/components/off-canvas-editor/use-list-view-client-ids.js.map +1 -0
- package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js +220 -0
- package/build-module/components/off-canvas-editor/use-list-view-drop-zone.js.map +1 -0
- package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js +50 -0
- package/build-module/components/off-canvas-editor/use-list-view-expand-selected-item.js.map +1 -0
- package/build-module/components/off-canvas-editor/utils.js +44 -0
- package/build-module/components/off-canvas-editor/utils.js.map +1 -0
- package/build-module/components/rich-text/format-toolbar/index.js +6 -2
- package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +2 -3
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +0 -2
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-insert-replacement-text.js +33 -0
- package/build-module/components/rich-text/use-insert-replacement-text.js.map +1 -0
- package/build-module/components/rich-text/use-undo-automatic-change.js +9 -1
- package/build-module/components/rich-text/use-undo-automatic-change.js.map +1 -1
- package/build-module/components/rich-text/utils.js +1 -16
- package/build-module/components/rich-text/utils.js.map +1 -1
- package/build-module/components/spacing-sizes-control/spacing-input-control.js +12 -3
- package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -1
- package/build-module/components/ungroup-button/index.native.js +3 -2
- package/build-module/components/ungroup-button/index.native.js.map +1 -1
- package/build-module/components/url-input/index.js +46 -43
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/url-popover/index.js +30 -3
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +9 -5
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/components/use-setting/index.js +9 -2
- package/build-module/components/use-setting/index.js.map +1 -1
- package/build-module/hooks/child-layout.js +189 -0
- package/build-module/hooks/child-layout.js.map +1 -0
- package/build-module/hooks/color-panel.js +17 -1
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color.js +1 -1
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +16 -9
- package/build-module/hooks/content-lock-ui.js.map +1 -1
- package/build-module/hooks/dimensions.js +60 -16
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/layout.js +57 -2
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/margin.js +4 -2
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/min-height.js +116 -0
- package/build-module/hooks/min-height.js.map +1 -0
- package/build-module/hooks/padding.js +4 -2
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/style.js +4 -3
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/layouts/flex.js +23 -22
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/store/actions.js +22 -0
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +415 -265
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +66 -48
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/sorting.js +56 -0
- package/build-module/utils/sorting.js.map +1 -0
- package/build-style/content-rtl.css +701 -0
- package/build-style/content.css +701 -0
- package/build-style/default-editor-styles-rtl.css +14 -0
- package/build-style/default-editor-styles.css +14 -0
- package/build-style/style-rtl.css +305 -668
- package/build-style/style.css +305 -668
- package/package.json +32 -30
- package/src/autocompleters/block.js +2 -6
- package/src/autocompleters/link.js +2 -0
- package/src/components/alignment-control/README.md +1 -1
- package/src/components/alignment-control/test/index.js +4 -1
- package/src/components/block-alignment-control/test/index.js +4 -1
- package/src/components/block-alignment-control/test/index.native.js +4 -4
- package/src/components/block-card/index.js +46 -2
- package/src/components/block-card/style.scss +4 -0
- package/src/components/block-content-overlay/{style.scss → content.scss} +7 -1
- package/src/components/block-draggable/content.scss +20 -0
- package/src/components/block-draggable/index.native.js +54 -40
- package/src/components/block-draggable/style.scss +0 -21
- package/src/components/block-draggable/test/helpers.native.js +7 -9
- package/src/components/block-draggable/test/index.native.js +35 -45
- package/src/components/block-edit/edit.js +5 -2
- package/src/components/block-edit/edit.native.js +5 -6
- package/src/components/block-inspector/index.js +96 -81
- package/src/components/block-inspector/style.scss +9 -1
- package/src/components/block-list/block-list-context.native.js +5 -8
- package/src/components/block-list/block.js +74 -23
- package/src/components/block-list/block.native.js +78 -23
- package/src/components/block-list/{style.scss → content.scss} +11 -20
- package/src/components/block-list-appender/{style.scss → content.scss} +0 -0
- package/src/components/block-lock/menu-item.js +5 -2
- package/src/components/block-lock/modal.js +19 -36
- package/src/components/block-lock/style.scss +8 -17
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +24 -6
- package/src/components/block-mover/style.scss +0 -1
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +0 -2
- package/src/components/block-pattern-setup/index.js +2 -1
- package/src/components/block-patterns-list/index.js +47 -24
- package/src/components/block-popover/style.scss +1 -1
- package/src/components/block-preview/README.md +15 -10
- package/src/components/block-preview/auto.js +7 -1
- package/src/components/block-preview/content.scss +4 -0
- package/src/components/block-preview/index.js +7 -12
- package/src/components/block-preview/style.scss +0 -7
- package/src/components/block-preview/test/index.js +18 -35
- package/src/components/block-selection-clearer/test/index.js +12 -12
- package/src/components/block-settings-menu/block-settings-dropdown.js +32 -20
- package/src/components/block-styles/utils.js +3 -3
- package/src/components/block-switcher/index.js +19 -4
- package/src/components/block-switcher/test/index.js +4 -0
- package/src/components/block-toolbar/index.js +12 -5
- package/src/components/block-toolbar/style.scss +10 -0
- package/src/components/block-tools/insertion-point.js +3 -47
- package/src/components/block-tools/selected-block-popover.js +80 -34
- package/src/components/block-tools/style.scss +27 -5
- package/src/components/block-variation-picker/index.js +1 -4
- package/src/components/block-vertical-alignment-control/test/index.js +4 -1
- package/src/components/colors/with-colors.js +13 -23
- package/src/components/default-block-appender/{style.scss → content.scss} +1 -0
- package/src/components/font-sizes/fluid-utils.js +37 -64
- package/src/components/font-sizes/test/fluid-utils.js +5 -5
- package/src/components/font-sizes/with-font-sizes.js +14 -11
- package/src/components/height-control/index.js +123 -0
- package/src/components/height-control/stories/index.js +21 -0
- package/src/components/height-control/style.scss +5 -0
- package/src/components/iframe/index.js +25 -18
- package/src/components/image-editor/use-save-image.js +2 -0
- package/src/components/image-editor/zoom-dropdown.js +1 -0
- package/src/components/index.js +2 -0
- package/src/components/inner-blocks/{style.scss → content.scss} +0 -0
- package/src/components/inner-blocks/index.js +30 -10
- package/src/components/inner-blocks/use-inner-block-template-sync.js +28 -10
- package/src/components/inserter/block-patterns-explorer/sidebar.js +1 -0
- package/src/components/inserter/block-patterns-tab.js +28 -71
- package/src/components/inserter/block-types-tab.js +3 -2
- package/src/components/inserter/hooks/use-debounced-input.js +17 -0
- package/src/components/inserter/index.js +10 -2
- package/src/components/inserter/index.native.js +1 -1
- package/src/components/inserter/media-tab/hooks.js +88 -0
- package/src/components/inserter/media-tab/index.js +3 -0
- package/src/components/inserter/media-tab/media-list.js +93 -0
- package/src/components/inserter/media-tab/media-panel.js +83 -0
- package/src/components/inserter/media-tab/media-tab.js +135 -0
- package/src/components/inserter/media-tab/utils.js +37 -0
- package/src/components/inserter/menu.js +55 -13
- package/src/components/inserter/mobile-tab-navigation.js +85 -0
- package/src/components/inserter/quick-inserter.js +1 -0
- package/src/components/inserter/reusable-blocks-tab.js +4 -2
- package/src/components/inserter/search-results.js +3 -2
- package/src/components/inserter/stories/index.js +1 -1
- package/src/components/inserter/stories/{fixtures.js → utils/fixtures.js} +0 -0
- package/src/components/inserter/style.scss +184 -18
- package/src/components/inserter/tabs.js +12 -1
- package/src/components/inserter/test/reusable-blocks-tab.js +14 -57
- package/src/components/inserter-list-item/index.js +11 -1
- package/src/components/inserter-list-item/style.scss +26 -0
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/advanced-controls-panel.js +37 -0
- package/src/components/inspector-controls-tabs/index.js +62 -0
- package/src/components/inspector-controls-tabs/settings-tab.js +18 -0
- package/src/components/inspector-controls-tabs/styles-tab.js +51 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +89 -0
- package/src/components/inspector-controls-tabs/use-is-list-view-tab-disabled.js +9 -0
- package/src/components/inspector-controls-tabs/utils.js +28 -0
- package/src/components/line-height-control/test/index.js +5 -5
- package/src/components/link-control/README.md +1 -1
- package/src/components/link-control/index.js +24 -39
- package/src/components/link-control/search-input.js +1 -2
- package/src/components/link-control/test/index.js +400 -582
- package/src/components/link-control/use-internal-input-value.js +22 -0
- package/src/components/list-view/block.js +7 -3
- package/src/components/list-view/branch.js +21 -14
- package/src/components/list-view/style.scss +20 -9
- package/src/components/media-placeholder/{style.scss → content.scss} +0 -0
- package/src/components/media-replace-flow/test/index.js +37 -9
- package/src/components/media-upload/test/index.native.js +2 -0
- package/src/components/off-canvas-editor/README.md +5 -0
- package/src/components/off-canvas-editor/appender.js +93 -0
- package/src/components/off-canvas-editor/block-contents.js +89 -0
- package/src/components/off-canvas-editor/block-edit-button.js +27 -0
- package/src/components/off-canvas-editor/block-select-button.js +113 -0
- package/src/components/off-canvas-editor/block.js +401 -0
- package/src/components/off-canvas-editor/branch.js +208 -0
- package/src/components/off-canvas-editor/context.js +8 -0
- package/src/components/off-canvas-editor/drop-indicator.js +126 -0
- package/src/components/off-canvas-editor/expander.js +26 -0
- package/src/components/off-canvas-editor/index.js +242 -0
- package/src/components/off-canvas-editor/leaf.js +52 -0
- package/src/components/off-canvas-editor/link-ui.js +166 -0
- package/src/components/off-canvas-editor/style.scss +26 -0
- package/src/components/off-canvas-editor/test/utils.js +50 -0
- package/src/components/off-canvas-editor/update-attributes.js +99 -0
- package/src/components/off-canvas-editor/use-block-selection.js +169 -0
- package/src/components/off-canvas-editor/use-list-view-client-ids.js +29 -0
- package/src/components/off-canvas-editor/use-list-view-drop-zone.js +260 -0
- package/src/components/off-canvas-editor/use-list-view-expand-selected-item.js +58 -0
- package/src/components/off-canvas-editor/utils.js +58 -0
- package/src/components/plain-text/{style.scss → content.scss} +0 -0
- package/src/components/recursion-provider/test/index.js +27 -29
- package/src/components/responsive-block-control/test/index.js +69 -92
- package/src/components/rich-text/content.scss +42 -0
- package/src/components/rich-text/format-toolbar/index.js +6 -4
- package/src/components/rich-text/index.js +2 -2
- package/src/components/rich-text/index.native.js +0 -2
- package/src/components/rich-text/style.scss +0 -43
- package/src/components/rich-text/use-insert-replacement-text.js +31 -0
- package/src/components/rich-text/use-undo-automatic-change.js +7 -1
- package/src/components/rich-text/utils.js +2 -21
- package/src/components/spacing-sizes-control/spacing-input-control.js +9 -0
- package/src/components/ungroup-button/index.native.js +6 -2
- package/src/components/url-input/index.js +57 -73
- package/src/components/url-popover/README.md +12 -3
- package/src/components/url-popover/index.js +33 -3
- package/src/components/url-popover/test/__snapshots__/index.js.snap +8 -6
- package/src/components/url-popover/test/index.js +21 -9
- package/src/components/use-block-display-information/index.js +14 -5
- package/src/components/use-setting/index.js +20 -2
- package/src/components/use-setting/test/index.js +99 -0
- package/src/content.scss +10 -0
- package/src/hooks/child-layout.js +190 -0
- package/src/hooks/color-panel.js +13 -1
- package/src/hooks/color.js +2 -0
- package/src/hooks/content-lock-ui.js +47 -35
- package/src/hooks/dimensions.js +119 -21
- package/src/hooks/layout.js +62 -3
- package/src/hooks/margin.js +4 -3
- package/src/hooks/min-height.js +104 -0
- package/src/hooks/padding.js +4 -3
- package/src/hooks/style.js +10 -2
- package/src/hooks/test/style.js +4 -0
- package/src/hooks/test/use-typography-props.js +1 -1
- package/src/layouts/flex.js +43 -38
- package/src/store/actions.js +22 -0
- package/src/store/reducer.js +480 -434
- package/src/store/selectors.js +70 -64
- package/src/store/test/actions.js +18 -0
- package/src/store/test/performance.js +71 -0
- package/src/store/test/reducer.js +662 -490
- package/src/store/test/selectors.js +1839 -1306
- package/src/style.scss +4 -7
- package/src/utils/sorting.js +54 -0
- package/src/utils/test/sorting.js +49 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/block-preview/live.js +0 -30
- package/build/components/block-preview/live.js.map +0 -1
- package/build-module/components/block-preview/live.js +0 -20
- package/build-module/components/block-preview/live.js.map +0 -1
- package/src/components/block-preview/live.js +0 -19
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { Popover } from '@wordpress/components';
|
|
5
|
+
import { useCallback, useMemo } from '@wordpress/element';
|
|
6
|
+
|
|
7
|
+
export default function ListViewDropIndicator( {
|
|
8
|
+
listViewRef,
|
|
9
|
+
blockDropTarget,
|
|
10
|
+
} ) {
|
|
11
|
+
const { rootClientId, clientId, dropPosition } = blockDropTarget || {};
|
|
12
|
+
|
|
13
|
+
const [ rootBlockElement, blockElement ] = useMemo( () => {
|
|
14
|
+
if ( ! listViewRef.current ) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// The rootClientId will be defined whenever dropping into inner
|
|
19
|
+
// block lists, but is undefined when dropping at the root level.
|
|
20
|
+
const _rootBlockElement = rootClientId
|
|
21
|
+
? listViewRef.current.querySelector(
|
|
22
|
+
`[data-block="${ rootClientId }"]`
|
|
23
|
+
)
|
|
24
|
+
: undefined;
|
|
25
|
+
|
|
26
|
+
// The clientId represents the sibling block, the dragged block will
|
|
27
|
+
// usually be inserted adjacent to it. It will be undefined when
|
|
28
|
+
// dropping a block into an empty block list.
|
|
29
|
+
const _blockElement = clientId
|
|
30
|
+
? listViewRef.current.querySelector(
|
|
31
|
+
`[data-block="${ clientId }"]`
|
|
32
|
+
)
|
|
33
|
+
: undefined;
|
|
34
|
+
|
|
35
|
+
return [ _rootBlockElement, _blockElement ];
|
|
36
|
+
}, [ rootClientId, clientId ] );
|
|
37
|
+
|
|
38
|
+
// The targetElement is the element that the drop indicator will appear
|
|
39
|
+
// before or after. When dropping into an empty block list, blockElement
|
|
40
|
+
// is undefined, so the indicator will appear after the rootBlockElement.
|
|
41
|
+
const targetElement = blockElement || rootBlockElement;
|
|
42
|
+
|
|
43
|
+
const getDropIndicatorIndent = useCallback( () => {
|
|
44
|
+
if ( ! rootBlockElement ) {
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Calculate the indent using the block icon of the root block.
|
|
49
|
+
// Using a classname selector here might be flaky and could be
|
|
50
|
+
// improved.
|
|
51
|
+
const targetElementRect = targetElement.getBoundingClientRect();
|
|
52
|
+
const rootBlockIconElement = rootBlockElement.querySelector(
|
|
53
|
+
'.block-editor-block-icon'
|
|
54
|
+
);
|
|
55
|
+
const rootBlockIconRect = rootBlockIconElement.getBoundingClientRect();
|
|
56
|
+
return rootBlockIconRect.right - targetElementRect.left;
|
|
57
|
+
}, [ rootBlockElement, targetElement ] );
|
|
58
|
+
|
|
59
|
+
const style = useMemo( () => {
|
|
60
|
+
if ( ! targetElement ) {
|
|
61
|
+
return {};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const indent = getDropIndicatorIndent();
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
width: targetElement.offsetWidth - indent,
|
|
68
|
+
};
|
|
69
|
+
}, [ getDropIndicatorIndent, targetElement ] );
|
|
70
|
+
|
|
71
|
+
const popoverAnchor = useMemo( () => {
|
|
72
|
+
const isValidDropPosition =
|
|
73
|
+
dropPosition === 'top' ||
|
|
74
|
+
dropPosition === 'bottom' ||
|
|
75
|
+
dropPosition === 'inside';
|
|
76
|
+
if ( ! targetElement || ! isValidDropPosition ) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return {
|
|
81
|
+
ownerDocument: targetElement.ownerDocument,
|
|
82
|
+
getBoundingClientRect() {
|
|
83
|
+
const rect = targetElement.getBoundingClientRect();
|
|
84
|
+
const indent = getDropIndicatorIndent();
|
|
85
|
+
|
|
86
|
+
const left = rect.left + indent;
|
|
87
|
+
const right = rect.right;
|
|
88
|
+
let top = 0;
|
|
89
|
+
let bottom = 0;
|
|
90
|
+
|
|
91
|
+
if ( dropPosition === 'top' ) {
|
|
92
|
+
top = rect.top;
|
|
93
|
+
bottom = rect.top;
|
|
94
|
+
} else {
|
|
95
|
+
// `dropPosition` is either `bottom` or `inside`
|
|
96
|
+
top = rect.bottom;
|
|
97
|
+
bottom = rect.bottom;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const width = right - left;
|
|
101
|
+
const height = bottom - top;
|
|
102
|
+
|
|
103
|
+
return new window.DOMRect( left, top, width, height );
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}, [ targetElement, dropPosition, getDropIndicatorIndent ] );
|
|
107
|
+
|
|
108
|
+
if ( ! targetElement ) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return (
|
|
113
|
+
<Popover
|
|
114
|
+
animate={ false }
|
|
115
|
+
anchor={ popoverAnchor }
|
|
116
|
+
focusOnMount={ false }
|
|
117
|
+
className="block-editor-list-view-drop-indicator"
|
|
118
|
+
variant="unstyled"
|
|
119
|
+
>
|
|
120
|
+
<div
|
|
121
|
+
style={ style }
|
|
122
|
+
className="block-editor-list-view-drop-indicator__line"
|
|
123
|
+
/>
|
|
124
|
+
</Popover>
|
|
125
|
+
);
|
|
126
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { chevronRightSmall, chevronLeftSmall, Icon } from '@wordpress/icons';
|
|
5
|
+
import { isRTL } from '@wordpress/i18n';
|
|
6
|
+
|
|
7
|
+
export default function ListViewExpander( { onClick } ) {
|
|
8
|
+
return (
|
|
9
|
+
// Keyboard events are handled by TreeGrid see: components/src/tree-grid/index.js
|
|
10
|
+
//
|
|
11
|
+
// The expander component is implemented as a pseudo element in the w3 example
|
|
12
|
+
// https://www.w3.org/TR/wai-aria-practices/examples/treegrid/treegrid-1.html
|
|
13
|
+
//
|
|
14
|
+
// We've mimicked this by adding an icon with aria-hidden set to true to hide this from the accessibility tree.
|
|
15
|
+
// For the current tree grid implementation, please do not try to make this a button.
|
|
16
|
+
//
|
|
17
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
18
|
+
<span
|
|
19
|
+
className="block-editor-list-view__expander"
|
|
20
|
+
onClick={ ( event ) => onClick( event, { forceToggle: true } ) }
|
|
21
|
+
aria-hidden="true"
|
|
22
|
+
>
|
|
23
|
+
<Icon icon={ isRTL() ? chevronLeftSmall : chevronRightSmall } />
|
|
24
|
+
</span>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import {
|
|
5
|
+
useMergeRefs,
|
|
6
|
+
__experimentalUseFixedWindowList as useFixedWindowList,
|
|
7
|
+
} from '@wordpress/compose';
|
|
8
|
+
import {
|
|
9
|
+
__experimentalTreeGrid as TreeGrid,
|
|
10
|
+
__experimentalTreeGridRow as TreeGridRow,
|
|
11
|
+
__experimentalTreeGridCell as TreeGridCell,
|
|
12
|
+
} from '@wordpress/components';
|
|
13
|
+
import { AsyncModeProvider, useSelect } from '@wordpress/data';
|
|
14
|
+
import {
|
|
15
|
+
useCallback,
|
|
16
|
+
useEffect,
|
|
17
|
+
useMemo,
|
|
18
|
+
useRef,
|
|
19
|
+
useReducer,
|
|
20
|
+
forwardRef,
|
|
21
|
+
} from '@wordpress/element';
|
|
22
|
+
import { __ } from '@wordpress/i18n';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Internal dependencies
|
|
26
|
+
*/
|
|
27
|
+
import ListViewBranch from './branch';
|
|
28
|
+
import { ListViewContext } from './context';
|
|
29
|
+
import ListViewDropIndicator from './drop-indicator';
|
|
30
|
+
import useBlockSelection from './use-block-selection';
|
|
31
|
+
import useListViewClientIds from './use-list-view-client-ids';
|
|
32
|
+
import useListViewDropZone from './use-list-view-drop-zone';
|
|
33
|
+
import useListViewExpandSelectedItem from './use-list-view-expand-selected-item';
|
|
34
|
+
import { store as blockEditorStore } from '../../store';
|
|
35
|
+
import { Appender } from './appender';
|
|
36
|
+
|
|
37
|
+
const expanded = ( state, action ) => {
|
|
38
|
+
if ( Array.isArray( action.clientIds ) ) {
|
|
39
|
+
return {
|
|
40
|
+
...state,
|
|
41
|
+
...action.clientIds.reduce(
|
|
42
|
+
( newState, id ) => ( {
|
|
43
|
+
...newState,
|
|
44
|
+
[ id ]: action.type === 'expand',
|
|
45
|
+
} ),
|
|
46
|
+
{}
|
|
47
|
+
),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return state;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export const BLOCK_LIST_ITEM_HEIGHT = 36;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Show a hierarchical list of blocks.
|
|
57
|
+
*
|
|
58
|
+
* @param {Object} props Components props.
|
|
59
|
+
* @param {string} props.id An HTML element id for the root element of ListView.
|
|
60
|
+
* @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.
|
|
61
|
+
* @param {boolean} props.showBlockMovers Flag to enable block movers
|
|
62
|
+
* @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.
|
|
63
|
+
* @param {boolean} props.selectBlockInCanvas Flag to determine whether the list view should be a block selection mechanism,.
|
|
64
|
+
* @param {Object} ref Forwarded ref
|
|
65
|
+
*/
|
|
66
|
+
function __ExperimentalOffCanvasEditor(
|
|
67
|
+
{
|
|
68
|
+
id,
|
|
69
|
+
blocks,
|
|
70
|
+
showBlockMovers = false,
|
|
71
|
+
isExpanded = false,
|
|
72
|
+
selectBlockInCanvas = true,
|
|
73
|
+
},
|
|
74
|
+
ref
|
|
75
|
+
) {
|
|
76
|
+
const { clientIdsTree, draggedClientIds, selectedClientIds } =
|
|
77
|
+
useListViewClientIds( blocks );
|
|
78
|
+
|
|
79
|
+
const { visibleBlockCount, shouldShowInnerBlocks } = useSelect(
|
|
80
|
+
( select ) => {
|
|
81
|
+
const {
|
|
82
|
+
getGlobalBlockCount,
|
|
83
|
+
getClientIdsOfDescendants,
|
|
84
|
+
__unstableGetEditorMode,
|
|
85
|
+
} = select( blockEditorStore );
|
|
86
|
+
const draggedBlockCount =
|
|
87
|
+
draggedClientIds?.length > 0
|
|
88
|
+
? getClientIdsOfDescendants( draggedClientIds ).length + 1
|
|
89
|
+
: 0;
|
|
90
|
+
return {
|
|
91
|
+
visibleBlockCount: getGlobalBlockCount() - draggedBlockCount,
|
|
92
|
+
shouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
[ draggedClientIds ]
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
const { updateBlockSelection } = useBlockSelection();
|
|
99
|
+
|
|
100
|
+
const [ expandedState, setExpandedState ] = useReducer( expanded, {} );
|
|
101
|
+
|
|
102
|
+
const { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();
|
|
103
|
+
const elementRef = useRef();
|
|
104
|
+
const treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );
|
|
105
|
+
|
|
106
|
+
const isMounted = useRef( false );
|
|
107
|
+
const { setSelectedTreeId } = useListViewExpandSelectedItem( {
|
|
108
|
+
firstSelectedBlockClientId: selectedClientIds[ 0 ],
|
|
109
|
+
setExpandedState,
|
|
110
|
+
} );
|
|
111
|
+
const selectEditorBlock = useCallback(
|
|
112
|
+
( event, blockClientId ) => {
|
|
113
|
+
updateBlockSelection( event, blockClientId );
|
|
114
|
+
setSelectedTreeId( blockClientId );
|
|
115
|
+
},
|
|
116
|
+
[ setSelectedTreeId, updateBlockSelection ]
|
|
117
|
+
);
|
|
118
|
+
useEffect( () => {
|
|
119
|
+
isMounted.current = true;
|
|
120
|
+
}, [] );
|
|
121
|
+
|
|
122
|
+
// List View renders a fixed number of items and relies on each having a fixed item height of 36px.
|
|
123
|
+
// If this value changes, we should also change the itemHeight value set in useFixedWindowList.
|
|
124
|
+
// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.
|
|
125
|
+
const [ fixedListWindow ] = useFixedWindowList(
|
|
126
|
+
elementRef,
|
|
127
|
+
BLOCK_LIST_ITEM_HEIGHT,
|
|
128
|
+
visibleBlockCount,
|
|
129
|
+
{
|
|
130
|
+
useWindowing: true,
|
|
131
|
+
windowOverscan: 40,
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
const expand = useCallback(
|
|
136
|
+
( blockClientId ) => {
|
|
137
|
+
if ( ! blockClientId ) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
setExpandedState( {
|
|
141
|
+
type: 'expand',
|
|
142
|
+
clientIds: [ blockClientId ],
|
|
143
|
+
} );
|
|
144
|
+
},
|
|
145
|
+
[ setExpandedState ]
|
|
146
|
+
);
|
|
147
|
+
const collapse = useCallback(
|
|
148
|
+
( blockClientId ) => {
|
|
149
|
+
if ( ! blockClientId ) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
setExpandedState( {
|
|
153
|
+
type: 'collapse',
|
|
154
|
+
clientIds: [ blockClientId ],
|
|
155
|
+
} );
|
|
156
|
+
},
|
|
157
|
+
[ setExpandedState ]
|
|
158
|
+
);
|
|
159
|
+
const expandRow = useCallback(
|
|
160
|
+
( row ) => {
|
|
161
|
+
expand( row?.dataset?.block );
|
|
162
|
+
},
|
|
163
|
+
[ expand ]
|
|
164
|
+
);
|
|
165
|
+
const collapseRow = useCallback(
|
|
166
|
+
( row ) => {
|
|
167
|
+
collapse( row?.dataset?.block );
|
|
168
|
+
},
|
|
169
|
+
[ collapse ]
|
|
170
|
+
);
|
|
171
|
+
const focusRow = useCallback(
|
|
172
|
+
( event, startRow, endRow ) => {
|
|
173
|
+
if ( event.shiftKey ) {
|
|
174
|
+
updateBlockSelection(
|
|
175
|
+
event,
|
|
176
|
+
startRow?.dataset?.block,
|
|
177
|
+
endRow?.dataset?.block
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
[ updateBlockSelection ]
|
|
182
|
+
);
|
|
183
|
+
|
|
184
|
+
const contextValue = useMemo(
|
|
185
|
+
() => ( {
|
|
186
|
+
isTreeGridMounted: isMounted.current,
|
|
187
|
+
draggedClientIds,
|
|
188
|
+
expandedState,
|
|
189
|
+
expand,
|
|
190
|
+
collapse,
|
|
191
|
+
} ),
|
|
192
|
+
[ isMounted.current, draggedClientIds, expandedState, expand, collapse ]
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
return (
|
|
196
|
+
<AsyncModeProvider value={ true }>
|
|
197
|
+
<ListViewDropIndicator
|
|
198
|
+
listViewRef={ elementRef }
|
|
199
|
+
blockDropTarget={ blockDropTarget }
|
|
200
|
+
/>
|
|
201
|
+
<div className="offcanvas-editor-list-view-tree-wrapper">
|
|
202
|
+
<TreeGrid
|
|
203
|
+
id={ id }
|
|
204
|
+
className="block-editor-list-view-tree"
|
|
205
|
+
aria-label={ __( 'Block navigation structure' ) }
|
|
206
|
+
ref={ treeGridRef }
|
|
207
|
+
onCollapseRow={ collapseRow }
|
|
208
|
+
onExpandRow={ expandRow }
|
|
209
|
+
onFocusRow={ focusRow }
|
|
210
|
+
applicationAriaLabel={ __( 'Block navigation structure' ) }
|
|
211
|
+
>
|
|
212
|
+
<ListViewContext.Provider value={ contextValue }>
|
|
213
|
+
<ListViewBranch
|
|
214
|
+
blocks={ clientIdsTree }
|
|
215
|
+
selectBlock={ selectEditorBlock }
|
|
216
|
+
showBlockMovers={ showBlockMovers }
|
|
217
|
+
fixedListWindow={ fixedListWindow }
|
|
218
|
+
selectedClientIds={ selectedClientIds }
|
|
219
|
+
isExpanded={ isExpanded }
|
|
220
|
+
shouldShowInnerBlocks={ shouldShowInnerBlocks }
|
|
221
|
+
selectBlockInCanvas={ selectBlockInCanvas }
|
|
222
|
+
/>
|
|
223
|
+
<TreeGridRow
|
|
224
|
+
level={ 1 }
|
|
225
|
+
setSize={ 1 }
|
|
226
|
+
positionInSet={ 1 }
|
|
227
|
+
isExpanded={ true }
|
|
228
|
+
>
|
|
229
|
+
<TreeGridCell>
|
|
230
|
+
{ ( treeGridCellProps ) => (
|
|
231
|
+
<Appender { ...treeGridCellProps } />
|
|
232
|
+
) }
|
|
233
|
+
</TreeGridCell>
|
|
234
|
+
</TreeGridRow>
|
|
235
|
+
</ListViewContext.Provider>
|
|
236
|
+
</TreeGrid>
|
|
237
|
+
</div>
|
|
238
|
+
</AsyncModeProvider>
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export default forwardRef( __ExperimentalOffCanvasEditor );
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { animated } from '@react-spring/web';
|
|
5
|
+
import classnames from 'classnames';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* WordPress dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { __experimentalTreeGridRow as TreeGridRow } from '@wordpress/components';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Internal dependencies
|
|
14
|
+
*/
|
|
15
|
+
import useMovingAnimation from '../use-moving-animation';
|
|
16
|
+
|
|
17
|
+
const AnimatedTreeGridRow = animated( TreeGridRow );
|
|
18
|
+
|
|
19
|
+
export default function ListViewLeaf( {
|
|
20
|
+
isSelected,
|
|
21
|
+
position,
|
|
22
|
+
level,
|
|
23
|
+
rowCount,
|
|
24
|
+
children,
|
|
25
|
+
className,
|
|
26
|
+
path,
|
|
27
|
+
...props
|
|
28
|
+
} ) {
|
|
29
|
+
const ref = useMovingAnimation( {
|
|
30
|
+
isSelected,
|
|
31
|
+
adjustScrolling: false,
|
|
32
|
+
enableAnimation: true,
|
|
33
|
+
triggerAnimationOnChange: path,
|
|
34
|
+
} );
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<AnimatedTreeGridRow
|
|
38
|
+
ref={ ref }
|
|
39
|
+
className={ classnames(
|
|
40
|
+
'block-editor-list-view-leaf',
|
|
41
|
+
'offcanvas-editor-list-view-leaf',
|
|
42
|
+
className
|
|
43
|
+
) }
|
|
44
|
+
level={ level }
|
|
45
|
+
positionInSet={ position }
|
|
46
|
+
setSize={ rowCount }
|
|
47
|
+
{ ...props }
|
|
48
|
+
>
|
|
49
|
+
{ children }
|
|
50
|
+
</AnimatedTreeGridRow>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
// Note: this file is copied directly from packages/block-library/src/navigation-link/link-ui.js
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* WordPress dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { __unstableStripHTML as stripHTML } from '@wordpress/dom';
|
|
7
|
+
import { Popover, Button } from '@wordpress/components';
|
|
8
|
+
import { __ } from '@wordpress/i18n';
|
|
9
|
+
import { switchToBlockType } from '@wordpress/blocks';
|
|
10
|
+
import { useSelect, useDispatch } from '@wordpress/data';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Internal dependencies
|
|
14
|
+
*/
|
|
15
|
+
import { store as blockEditorStore } from '../../store';
|
|
16
|
+
import LinkControl from '../link-control';
|
|
17
|
+
import BlockIcon from '../block-icon';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Given the Link block's type attribute, return the query params to give to
|
|
21
|
+
* /wp/v2/search.
|
|
22
|
+
*
|
|
23
|
+
* @param {string} type Link block's type attribute.
|
|
24
|
+
* @param {string} kind Link block's entity of kind (post-type|taxonomy)
|
|
25
|
+
* @return {{ type?: string, subtype?: string }} Search query params.
|
|
26
|
+
*/
|
|
27
|
+
export function getSuggestionsQuery( type, kind ) {
|
|
28
|
+
switch ( type ) {
|
|
29
|
+
case 'post':
|
|
30
|
+
case 'page':
|
|
31
|
+
return { type: 'post', subtype: type };
|
|
32
|
+
case 'category':
|
|
33
|
+
return { type: 'term', subtype: 'category' };
|
|
34
|
+
case 'tag':
|
|
35
|
+
return { type: 'term', subtype: 'post_tag' };
|
|
36
|
+
case 'post_format':
|
|
37
|
+
return { type: 'post-format' };
|
|
38
|
+
default:
|
|
39
|
+
if ( kind === 'taxonomy' ) {
|
|
40
|
+
return { type: 'term', subtype: type };
|
|
41
|
+
}
|
|
42
|
+
if ( kind === 'post-type' ) {
|
|
43
|
+
return { type: 'post', subtype: type };
|
|
44
|
+
}
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Add transforms to Link Control
|
|
51
|
+
*
|
|
52
|
+
* @param {Object} props Component props.
|
|
53
|
+
* @param {string} props.clientId Block client ID.
|
|
54
|
+
*/
|
|
55
|
+
function LinkControlTransforms( { clientId } ) {
|
|
56
|
+
const { getBlock, blockTransforms } = useSelect(
|
|
57
|
+
( select ) => {
|
|
58
|
+
const {
|
|
59
|
+
getBlock: _getBlock,
|
|
60
|
+
getBlockRootClientId,
|
|
61
|
+
getBlockTransformItems,
|
|
62
|
+
} = select( blockEditorStore );
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
getBlock: _getBlock,
|
|
66
|
+
blockTransforms: getBlockTransformItems(
|
|
67
|
+
_getBlock( clientId ),
|
|
68
|
+
getBlockRootClientId( clientId )
|
|
69
|
+
),
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
[ clientId ]
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
const { replaceBlock } = useDispatch( blockEditorStore );
|
|
76
|
+
|
|
77
|
+
const featuredBlocks = [
|
|
78
|
+
'core/page-list',
|
|
79
|
+
'core/site-logo',
|
|
80
|
+
'core/social-links',
|
|
81
|
+
'core/search',
|
|
82
|
+
];
|
|
83
|
+
|
|
84
|
+
const transforms = blockTransforms.filter( ( item ) => {
|
|
85
|
+
return featuredBlocks.includes( item.name );
|
|
86
|
+
} );
|
|
87
|
+
|
|
88
|
+
if ( ! transforms?.length ) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if ( ! clientId ) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return (
|
|
97
|
+
<div className="link-control-transform">
|
|
98
|
+
<h3 className="link-control-transform__subheading">
|
|
99
|
+
{ __( 'Transform' ) }
|
|
100
|
+
</h3>
|
|
101
|
+
<div className="link-control-transform__items">
|
|
102
|
+
{ transforms.map( ( item, index ) => {
|
|
103
|
+
return (
|
|
104
|
+
<Button
|
|
105
|
+
key={ `transform-${ index }` }
|
|
106
|
+
onClick={ () =>
|
|
107
|
+
replaceBlock(
|
|
108
|
+
clientId,
|
|
109
|
+
switchToBlockType(
|
|
110
|
+
getBlock( clientId ),
|
|
111
|
+
item.name
|
|
112
|
+
)
|
|
113
|
+
)
|
|
114
|
+
}
|
|
115
|
+
className="link-control-transform__item"
|
|
116
|
+
>
|
|
117
|
+
<BlockIcon icon={ item.icon } />
|
|
118
|
+
{ item.title }
|
|
119
|
+
</Button>
|
|
120
|
+
);
|
|
121
|
+
} ) }
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export function LinkUI( props ) {
|
|
128
|
+
const { label, url, opensInNewTab, type, kind } = props.link;
|
|
129
|
+
const link = {
|
|
130
|
+
url,
|
|
131
|
+
opensInNewTab,
|
|
132
|
+
title: label && stripHTML( label ),
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
return (
|
|
136
|
+
<Popover
|
|
137
|
+
placement="bottom"
|
|
138
|
+
onClose={ props.onClose }
|
|
139
|
+
anchor={ props.anchor }
|
|
140
|
+
shift
|
|
141
|
+
>
|
|
142
|
+
<LinkControl
|
|
143
|
+
hasTextControl
|
|
144
|
+
hasRichPreviews
|
|
145
|
+
className={ props.className }
|
|
146
|
+
value={ link }
|
|
147
|
+
showInitialSuggestions={ true }
|
|
148
|
+
withCreateSuggestion={ props.hasCreateSuggestion }
|
|
149
|
+
noDirectEntry={ !! type }
|
|
150
|
+
noURLSuggestion={ !! type }
|
|
151
|
+
suggestionsQuery={ getSuggestionsQuery( type, kind ) }
|
|
152
|
+
onChange={ props.onChange }
|
|
153
|
+
onRemove={ props.onRemove }
|
|
154
|
+
renderControlBottom={
|
|
155
|
+
! url
|
|
156
|
+
? () => (
|
|
157
|
+
<LinkControlTransforms
|
|
158
|
+
clientId={ props.clientId }
|
|
159
|
+
/>
|
|
160
|
+
)
|
|
161
|
+
: null
|
|
162
|
+
}
|
|
163
|
+
/>
|
|
164
|
+
</Popover>
|
|
165
|
+
);
|
|
166
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.offcanvas-editor__appender .block-editor-inserter__toggle {
|
|
2
|
+
background-color: #1e1e1e;
|
|
3
|
+
color: #fff;
|
|
4
|
+
margin: $grid-unit-10 0 0 28px;
|
|
5
|
+
border-radius: 2px;
|
|
6
|
+
height: 24px;
|
|
7
|
+
min-width: 24px;
|
|
8
|
+
padding: 0;
|
|
9
|
+
|
|
10
|
+
&:hover,
|
|
11
|
+
&:focus {
|
|
12
|
+
background: var(--wp-admin-theme-color);
|
|
13
|
+
color: #fff;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.offcanvas-editor-list-view-tree-wrapper {
|
|
18
|
+
max-width: 100%;
|
|
19
|
+
overflow-x: auto;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.offcanvas-editor-list-view-leaf {
|
|
23
|
+
display: block;
|
|
24
|
+
// sidebar width - tab panel padding
|
|
25
|
+
max-width: $sidebar-width - (2 * $grid-unit-20);
|
|
26
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { getCommonDepthClientIds } from '../utils';
|
|
5
|
+
|
|
6
|
+
describe( 'getCommonDepthClientIds', () => {
|
|
7
|
+
it( 'should return start and end when no depth is provided', () => {
|
|
8
|
+
const result = getCommonDepthClientIds(
|
|
9
|
+
'start-id',
|
|
10
|
+
'clicked-id',
|
|
11
|
+
[],
|
|
12
|
+
[]
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
expect( result ).toEqual( { start: 'start-id', end: 'clicked-id' } );
|
|
16
|
+
} );
|
|
17
|
+
|
|
18
|
+
it( 'should return deepest start and end when depths match', () => {
|
|
19
|
+
const result = getCommonDepthClientIds(
|
|
20
|
+
'start-id',
|
|
21
|
+
'clicked-id',
|
|
22
|
+
[ 'start-1', 'start-2', 'start-3' ],
|
|
23
|
+
[ 'end-1', 'end-2', 'end-3' ]
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
expect( result ).toEqual( { start: 'start-id', end: 'clicked-id' } );
|
|
27
|
+
} );
|
|
28
|
+
|
|
29
|
+
it( 'should return shallower ids when start is shallower', () => {
|
|
30
|
+
const result = getCommonDepthClientIds(
|
|
31
|
+
'start-id',
|
|
32
|
+
'clicked-id',
|
|
33
|
+
[ 'start-1' ],
|
|
34
|
+
[ 'end-1', 'end-2', 'end-3' ]
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
expect( result ).toEqual( { start: 'start-id', end: 'end-2' } );
|
|
38
|
+
} );
|
|
39
|
+
|
|
40
|
+
it( 'should return shallower ids when end is shallower', () => {
|
|
41
|
+
const result = getCommonDepthClientIds(
|
|
42
|
+
'start-id',
|
|
43
|
+
'clicked-id',
|
|
44
|
+
[ 'start-1', 'start-2', 'start-3' ],
|
|
45
|
+
[ 'end-1', 'end-2' ]
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
expect( result ).toEqual( { start: 'start-3', end: 'clicked-id' } );
|
|
49
|
+
} );
|
|
50
|
+
} );
|