@wordpress/block-editor 13.3.0 → 14.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 +13 -0
- package/README.md +11 -5
- package/build/components/alignment-control/ui.js +2 -2
- package/build/components/alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-control/ui.js +1 -1
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-control/ui.native.js +1 -1
- package/build/components/block-alignment-control/ui.native.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +3 -1
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-draggable/index.js +2 -2
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-inspector/index.js +6 -3
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +3 -1
- 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 +26 -27
- 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 +25 -9
- package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +3 -2
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-lock/modal.js +2 -0
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-mover/index.js +1 -2
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-popover/cover.js +1 -1
- package/build/components/block-popover/cover.js.map +1 -1
- package/build/components/block-popover/inbetween.js +2 -2
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +2 -2
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-removal-warning-modal/index.js +2 -0
- package/build/components/block-removal-warning-modal/index.js.map +1 -1
- package/build/components/block-switcher/index.js +1 -1
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +11 -12
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-switcher/preview-block-popover.js +20 -17
- package/build/components/block-switcher/preview-block-popover.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +5 -2
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +1 -2
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +1 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +7 -8
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserter-button.js +45 -0
- package/build/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
- package/build/components/block-tools/zoom-out-mode-inserters.js +35 -36
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-tools/zoom-out-popover.js +2 -1
- package/build/components/block-tools/zoom-out-popover.js.map +1 -1
- package/build/components/block-tools/zoom-out-toolbar.js +1 -2
- package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build/components/child-layout-control/index.js +3 -1
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +2 -11
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/default-block-appender/index.js +7 -4
- package/build/components/default-block-appender/index.js.map +1 -1
- package/build/components/dimensions-tool/scale-tool.js +1 -0
- package/build/components/dimensions-tool/scale-tool.js.map +1 -1
- package/build/components/font-appearance-control/index.js +2 -7
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/font-family/index.js +12 -0
- package/build/components/font-family/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +63 -52
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/hooks.js +5 -1
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js +1 -0
- package/build/components/global-styles/image-settings-panel.js.map +1 -1
- package/build/components/global-styles/theme-file-uri-utils.js +0 -59
- package/build/components/global-styles/theme-file-uri-utils.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +26 -44
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +78 -7
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +82 -44
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +96 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-item-movers.js +93 -44
- package/build/components/grid/grid-item-movers.js.map +1 -1
- package/build/components/grid/grid-item-resizer.js +14 -15
- package/build/components/grid/grid-item-resizer.js.map +1 -1
- package/build/components/grid/grid-visualizer.js +2 -2
- package/build/components/grid/grid-visualizer.js.map +1 -1
- package/build/components/grid/use-grid-layout-sync.js +93 -45
- package/build/components/grid/use-grid-layout-sync.js.map +1 -1
- package/build/components/iframe/index.js +4 -8
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/index.js +1 -9
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +1 -1
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
- package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
- package/build/components/inserter/category-tabs/index.js +29 -2
- package/build/components/inserter/category-tabs/index.js.map +1 -1
- package/build/components/inserter/media-tab/media-panel.js +1 -0
- package/build/components/inserter/media-tab/media-panel.js.map +1 -1
- package/build/components/inserter/menu.js +3 -3
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/preview-panel.js +20 -3
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter-draggable-blocks/index.js +10 -3
- package/build/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build/components/inspector-controls-tabs/settings-tab.js +1 -2
- package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build/components/line-height-control/index.js +0 -15
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/search-input.js +0 -1
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block-select-button.js +2 -6
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +2 -2
- package/build/components/list-view/block.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-replace-flow/index.js +3 -1
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/resolution-tool/index.js +1 -0
- package/build/components/resolution-tool/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar/index.js +1 -1
- package/build/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build/components/rich-text/index.js +1 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +4 -2
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/url-input/button.js +0 -1
- package/build/components/url-input/button.js.map +1 -1
- package/build/components/url-input/index.js +1 -11
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +3 -3
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/url-popover/link-editor.js +0 -1
- package/build/components/url-popover/link-editor.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +30 -4
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +3 -6
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-resize-canvas/index.js +1 -3
- package/build/components/use-resize-canvas/index.js.map +1 -1
- package/build/components/use-settings/index.js +2 -1
- package/build/components/use-settings/index.js.map +1 -1
- package/build/hooks/block-bindings.js +248 -36
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/block-hooks.js +1 -0
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/block-style-variation.js +2 -2
- package/build/hooks/block-style-variation.js.map +1 -1
- package/build/hooks/contrast-checker.js +6 -6
- package/build/hooks/contrast-checker.js.map +1 -1
- package/build/hooks/duotone.js +3 -3
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/grid-visualizer.js +5 -8
- package/build/hooks/grid-visualizer.js.map +1 -1
- package/build/hooks/index.js +7 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout-child.js +9 -2
- package/build/hooks/layout-child.js.map +1 -1
- package/build/hooks/line-height.js +0 -1
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/position.js +3 -7
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/spacing-visualizer.js +1 -1
- package/build/hooks/spacing-visualizer.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +85 -50
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/use-zoom-out.js +1 -1
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/hooks/utils.js +20 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/constrained.js +6 -2
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/grid.js +2 -0
- package/build/layouts/grid.js.map +1 -1
- package/build/private-apis.js +0 -4
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +27 -2
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +19 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +17 -5
- package/build/store/selectors.js.map +1 -1
- package/build/utils/get-editor-region.js +1 -1
- package/build/utils/get-editor-region.js.map +1 -1
- package/build/utils/get-px-from-css-unit.js +1 -1
- package/build/utils/get-px-from-css-unit.js.map +1 -1
- package/build-module/components/alignment-control/ui.js +2 -2
- package/build-module/components/alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js +1 -1
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.native.js +1 -1
- package/build-module/components/block-alignment-control/ui.native.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +4 -2
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +3 -3
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-inspector/index.js +6 -3
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +3 -1
- 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 +27 -30
- 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 +26 -9
- package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +3 -2
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-lock/modal.js +2 -0
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-mover/index.js +1 -2
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-popover/cover.js +1 -1
- package/build-module/components/block-popover/cover.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +1 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +1 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-removal-warning-modal/index.js +2 -0
- package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +1 -1
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +12 -13
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-switcher/preview-block-popover.js +20 -17
- package/build-module/components/block-switcher/preview-block-popover.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +5 -2
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +1 -2
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +1 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +7 -8
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserter-button.js +37 -0
- package/build-module/components/block-tools/zoom-out-mode-inserter-button.js.map +1 -0
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +37 -38
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-popover.js +2 -1
- package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js +1 -2
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +3 -1
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +4 -12
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/default-block-appender/index.js +7 -4
- package/build-module/components/default-block-appender/index.js.map +1 -1
- package/build-module/components/dimensions-tool/scale-tool.js +1 -0
- package/build-module/components/dimensions-tool/scale-tool.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +3 -6
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/font-family/index.js +11 -0
- package/build-module/components/font-family/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +63 -52
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +5 -1
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js +1 -0
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
- package/build-module/components/global-styles/theme-file-uri-utils.js +0 -58
- package/build-module/components/global-styles/theme-file-uri-utils.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +27 -45
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +76 -7
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +81 -43
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +92 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-item-movers.js +96 -46
- package/build-module/components/grid/grid-item-movers.js.map +1 -1
- package/build-module/components/grid/grid-item-resizer.js +14 -15
- package/build-module/components/grid/grid-item-resizer.js.map +1 -1
- package/build-module/components/grid/grid-visualizer.js +2 -2
- package/build-module/components/grid/grid-visualizer.js.map +1 -1
- package/build-module/components/grid/use-grid-layout-sync.js +94 -46
- package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
- package/build-module/components/iframe/index.js +4 -8
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/index.js +0 -5
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +1 -1
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +20 -23
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
- package/build-module/components/inserter/category-tabs/index.js +30 -3
- package/build-module/components/inserter/category-tabs/index.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-panel.js +1 -0
- package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
- package/build-module/components/inserter/menu.js +3 -3
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +20 -3
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.js +10 -3
- package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/settings-tab.js +1 -2
- package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build-module/components/line-height-control/index.js +0 -14
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/search-input.js +0 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +3 -7
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +2 -2
- package/build-module/components/list-view/block.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-replace-flow/index.js +3 -1
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/resolution-tool/index.js +1 -0
- package/build-module/components/resolution-tool/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +1 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +5 -3
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/url-input/button.js +0 -1
- package/build-module/components/url-input/button.js.map +1 -1
- package/build-module/components/url-input/index.js +1 -11
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +3 -3
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/url-popover/link-editor.js +0 -1
- package/build-module/components/url-popover/link-editor.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +30 -4
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +3 -6
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-resize-canvas/index.js +1 -3
- package/build-module/components/use-resize-canvas/index.js.map +1 -1
- package/build-module/components/use-settings/index.js +2 -1
- package/build-module/components/use-settings/index.js.map +1 -1
- package/build-module/hooks/block-bindings.js +253 -40
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/block-hooks.js +1 -0
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/block-style-variation.js +3 -3
- package/build-module/hooks/block-style-variation.js.map +1 -1
- package/build-module/hooks/contrast-checker.js +7 -7
- package/build-module/hooks/contrast-checker.js.map +1 -1
- package/build-module/hooks/duotone.js +4 -4
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/grid-visualizer.js +5 -8
- package/build-module/hooks/grid-visualizer.js.map +1 -1
- package/build-module/hooks/index.js +2 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout-child.js +9 -2
- package/build-module/hooks/layout-child.js.map +1 -1
- package/build-module/hooks/line-height.js +0 -1
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/position.js +3 -7
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/spacing-visualizer.js +1 -1
- package/build-module/hooks/spacing-visualizer.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +84 -51
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +1 -1
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/hooks/utils.js +19 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/constrained.js +6 -2
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/grid.js +2 -0
- package/build-module/layouts/grid.js.map +1 -1
- package/build-module/private-apis.js +1 -5
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +24 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +18 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +14 -4
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/get-editor-region.js +1 -1
- package/build-module/utils/get-editor-region.js.map +1 -1
- package/build-module/utils/get-px-from-css-unit.js +1 -1
- package/build-module/utils/get-px-from-css-unit.js.map +1 -1
- package/build-style/content-rtl.css +11 -18
- package/build-style/content.css +11 -18
- package/build-style/default-editor-styles-rtl.css +3 -0
- package/build-style/default-editor-styles.css +3 -0
- package/build-style/style-rtl.css +242 -136
- package/build-style/style.css +242 -136
- package/build-types/components/block-context/index.d.ts +2 -2
- package/build-types/components/block-context/index.d.ts.map +1 -1
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +31 -31
- package/src/autocompleters/style.scss +4 -0
- package/src/components/alignment-control/ui.js +2 -2
- package/src/components/block-alignment-control/ui.js +1 -1
- package/src/components/block-alignment-control/ui.native.js +1 -1
- package/src/components/block-breadcrumb/index.js +4 -2
- package/src/components/block-canvas/style.scss +1 -0
- package/src/components/block-context/README.md +4 -4
- package/src/components/block-draggable/index.js +3 -3
- package/src/components/block-inspector/index.js +8 -4
- package/src/components/block-list/content.scss +2 -16
- package/src/components/block-list/use-block-props/index.js +1 -1
- package/src/components/block-list/use-block-props/use-block-refs.js +30 -30
- package/src/components/block-list/use-block-props/use-is-hovered.js +26 -11
- package/src/components/block-list/use-in-between-inserter.js +5 -1
- package/src/components/block-lock/modal.js +10 -2
- package/src/components/block-lock/style.scss +4 -8
- package/src/components/block-mover/index.js +5 -2
- package/src/components/block-patterns-paging/style.scss +0 -23
- package/src/components/block-popover/cover.js +1 -1
- package/src/components/block-popover/inbetween.js +1 -1
- package/src/components/block-popover/index.js +1 -1
- package/src/components/block-removal-warning-modal/index.js +10 -2
- package/src/components/block-switcher/index.js +1 -1
- package/src/components/block-switcher/pattern-transformations-menu.js +17 -15
- package/src/components/block-switcher/preview-block-popover.js +20 -14
- package/src/components/block-switcher/style.scss +8 -17
- package/src/components/block-toolbar/shuffle.js +8 -1
- package/src/components/block-tools/block-selection-button.js +1 -2
- package/src/components/block-tools/index.js +5 -6
- package/src/components/block-tools/style.scss +8 -0
- package/src/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/src/components/block-tools/use-show-block-tools.js +12 -9
- package/src/components/block-tools/zoom-out-mode-inserter-button.js +47 -0
- package/src/components/block-tools/zoom-out-mode-inserters.js +48 -42
- package/src/components/block-tools/zoom-out-popover.js +1 -0
- package/src/components/block-tools/zoom-out-toolbar.js +1 -2
- package/src/components/button-block-appender/content.scss +1 -1
- package/src/components/child-layout-control/index.js +2 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +2 -2
- package/src/components/colors-gradients/test/control.js +3 -2
- package/src/components/date-format-picker/index.js +2 -11
- package/src/components/default-block-appender/index.js +11 -4
- package/src/components/dimensions-tool/scale-tool.js +1 -0
- package/src/components/font-appearance-control/index.js +1 -5
- package/src/components/font-family/README.md +8 -0
- package/src/components/font-family/index.js +16 -0
- package/src/components/font-family/stories/index.story.js +54 -0
- package/src/components/global-styles/background-panel.js +90 -62
- package/src/components/global-styles/hooks.js +5 -1
- package/src/components/global-styles/image-settings-panel.js +1 -0
- package/src/components/global-styles/style.scss +11 -9
- package/src/components/global-styles/test/theme-file-uri-utils.js +1 -26
- package/src/components/global-styles/test/typography-utils.js +325 -0
- package/src/components/global-styles/test/use-global-styles-output.js +52 -5
- package/src/components/global-styles/test/utils.js +120 -0
- package/src/components/global-styles/theme-file-uri-utils.js +0 -59
- package/src/components/global-styles/typography-panel.js +36 -45
- package/src/components/global-styles/typography-utils.js +103 -7
- package/src/components/global-styles/use-global-styles-output.js +89 -50
- package/src/components/global-styles/utils.js +112 -0
- package/src/components/grid/grid-item-movers.js +141 -69
- package/src/components/grid/grid-item-resizer.js +11 -17
- package/src/components/grid/grid-visualizer.js +2 -2
- package/src/components/grid/style.scss +164 -0
- package/src/components/grid/use-grid-layout-sync.js +133 -40
- package/src/components/iframe/content.scss +3 -3
- package/src/components/iframe/index.js +3 -7
- package/src/components/index.js +0 -5
- package/src/components/inner-blocks/index.js +4 -1
- package/src/components/inserter/block-patterns-tab/patterns-filter.js +40 -44
- package/src/components/inserter/category-tabs/index.js +35 -2
- package/src/components/inserter/media-tab/media-panel.js +1 -0
- package/src/components/inserter/menu.js +3 -3
- package/src/components/inserter/preview-panel.js +27 -4
- package/src/components/inserter/style.scss +66 -47
- package/src/components/inserter-draggable-blocks/index.js +11 -3
- package/src/components/inspector-controls/README.md +5 -0
- package/src/components/inspector-controls-tabs/settings-tab.js +0 -2
- package/src/components/inspector-controls-tabs/style.scss +0 -21
- package/src/components/line-height-control/README.md +0 -8
- package/src/components/line-height-control/index.js +1 -21
- package/src/components/line-height-control/stories/index.story.js +0 -1
- package/src/components/line-height-control/test/index.js +1 -7
- package/src/components/link-control/search-input.js +0 -1
- package/src/components/list-view/block-select-button.js +3 -13
- package/src/components/list-view/block.js +10 -3
- package/src/components/list-view/style.scss +2 -1
- package/src/components/list-view/utils.js +13 -2
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +3 -1
- package/src/components/resolution-tool/index.js +1 -0
- package/src/components/responsive-block-control/test/index.js +5 -1
- package/src/components/rich-text/format-toolbar/index.js +1 -1
- package/src/components/rich-text/index.js +1 -1
- package/src/components/skip-to-selected-block/index.js +5 -3
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +6 -7
- package/src/components/tabbed-sidebar/style.scss +1 -19
- package/src/components/url-input/README.md +0 -5
- package/src/components/url-input/button.js +0 -1
- package/src/components/url-input/index.js +1 -15
- package/src/components/url-popover/image-url-input-ui.js +3 -3
- package/src/components/url-popover/link-editor.js +0 -1
- package/src/components/url-popover/style.scss +1 -0
- package/src/components/use-block-drop-zone/index.js +66 -14
- package/src/components/use-on-block-drop/index.js +1 -9
- package/src/components/use-resize-canvas/index.js +1 -3
- package/src/components/use-settings/index.js +2 -1
- package/src/hooks/block-bindings.js +303 -52
- package/src/hooks/block-bindings.scss +13 -2
- package/src/hooks/block-hooks.js +1 -0
- package/src/hooks/block-hooks.scss +1 -0
- package/src/hooks/block-style-variation.js +3 -3
- package/src/hooks/contrast-checker.js +7 -7
- package/src/hooks/duotone.js +4 -4
- package/src/hooks/grid-visualizer.js +5 -7
- package/src/hooks/index.js +2 -1
- package/src/hooks/layout-child.js +12 -3
- package/src/hooks/line-height.js +0 -1
- package/src/hooks/position.js +3 -13
- package/src/hooks/spacing-visualizer.js +1 -1
- package/src/hooks/use-bindings-attributes.js +93 -59
- package/src/hooks/use-editor-wrapper-styles.native.scss +1 -0
- package/src/hooks/use-zoom-out.js +1 -1
- package/src/hooks/utils.js +14 -1
- package/src/index.js +1 -0
- package/src/layouts/constrained.js +10 -2
- package/src/layouts/grid.js +2 -0
- package/src/private-apis.js +1 -8
- package/src/store/actions.js +28 -5
- package/src/store/reducer.js +18 -0
- package/src/store/selectors.js +14 -4
- package/src/style.scss +1 -1
- package/src/utils/get-editor-region.js +1 -1
- package/src/utils/get-px-from-css-unit.js +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -30
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
- package/build/components/inserter/reusable-block-rename-hint.js +0 -71
- package/build/components/inserter/reusable-block-rename-hint.js.map +0 -1
- package/build/components/inspector-controls-tabs/settings-tab-hint.js +0 -53
- package/build/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -23
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
- package/build-module/components/inserter/reusable-block-rename-hint.js +0 -64
- package/build-module/components/inserter/reusable-block-rename-hint.js.map +0 -1
- package/build-module/components/inspector-controls-tabs/settings-tab-hint.js +0 -47
- package/build-module/components/inspector-controls-tabs/settings-tab-hint.js.map +0 -1
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -25
- package/src/components/inserter/reusable-block-rename-hint.js +0 -69
- package/src/components/inspector-controls-tabs/settings-tab-hint.js +0 -52
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fastDeepEqual","useViewportMatch","getTypographyFontSizeValue","getValueFromObjectPath","ROOT_BLOCK_SELECTOR","ROOT_CSS_PROPERTIES_SELECTOR","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","preset","settings","size","STYLE_PATH_TO_CSS_VAR_INFIX","shadow","STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE","useToolsPanelDropdownMenuProps","isMobile","popoverProps","placement","offset","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","find","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","data","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","_getValueFromObjectPa","ref","refPath","split","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","endsWith","type","scopeSelector","scope","selector","scopes","selectors","selectorsScoped","forEach","outer","inner","push","trim","join","scopeFeatureSelectors","featureSelectors","Object","entries","feature","subfeature","subfeatureSelector","appendToSelector","toAppend","includes","newSelectors","map","sel","areGlobalStyleConfigsEqual","original","variation","styles","getBlockStyleVariationSelector","blockSelector","variationClass","ancestorRegex","addVariationClass","_match","group1","group2","part","replace"],"sources":["@wordpress/block-editor/src/components/global-styles/utils.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getTypographyFontSizeValue } from './typography-utils';\nimport { getValueFromObjectPath } from '../../utils/object';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_CSS_PROPERTIES_SELECTOR = ':root';\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tvalueKey: 'colors',\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'shadow', 'presets' ],\n\t\tvalueKey: 'shadow',\n\t\tcssVarInfix: 'shadow',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: ( preset, settings ) =>\n\t\t\tgetTypographyFontSizeValue( preset, settings ),\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'spacing', 'spacingSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'spacing',\n\t\tvalueFunc: ( { size } ) => size,\n\t\tclasses: [],\n\t},\n];\n\nexport const STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'filter.duotone': 'duotone',\n\t'elements.link.color.text': 'color',\n\t'elements.link.:hover.color.text': 'color',\n\t'elements.link.typography.fontFamily': 'font-family',\n\t'elements.link.typography.fontSize': 'font-size',\n\t'elements.button.color.text': 'color',\n\t'elements.button.color.background': 'color',\n\t'elements.caption.color.text': 'color',\n\t'elements.button.typography.fontFamily': 'font-family',\n\t'elements.button.typography.fontSize': 'font-size',\n\t'elements.heading.color': 'color',\n\t'elements.heading.color.background': 'color',\n\t'elements.heading.typography.fontFamily': 'font-family',\n\t'elements.heading.gradient': 'gradient',\n\t'elements.heading.color.gradient': 'gradient',\n\t'elements.h1.color': 'color',\n\t'elements.h1.color.background': 'color',\n\t'elements.h1.typography.fontFamily': 'font-family',\n\t'elements.h1.color.gradient': 'gradient',\n\t'elements.h2.color': 'color',\n\t'elements.h2.color.background': 'color',\n\t'elements.h2.typography.fontFamily': 'font-family',\n\t'elements.h2.color.gradient': 'gradient',\n\t'elements.h3.color': 'color',\n\t'elements.h3.color.background': 'color',\n\t'elements.h3.typography.fontFamily': 'font-family',\n\t'elements.h3.color.gradient': 'gradient',\n\t'elements.h4.color': 'color',\n\t'elements.h4.color.background': 'color',\n\t'elements.h4.typography.fontFamily': 'font-family',\n\t'elements.h4.color.gradient': 'gradient',\n\t'elements.h5.color': 'color',\n\t'elements.h5.color.background': 'color',\n\t'elements.h5.typography.fontFamily': 'font-family',\n\t'elements.h5.color.gradient': 'gradient',\n\t'elements.h6.color': 'color',\n\t'elements.h6.color.background': 'color',\n\t'elements.h6.typography.fontFamily': 'font-family',\n\t'elements.h6.color.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\tshadow: 'shadow',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\n// A static list of block attributes that store global style preset slugs.\nexport const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {\n\t'color.background': 'backgroundColor',\n\t'color.text': 'textColor',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'fontSize',\n\t'typography.fontFamily': 'fontFamily',\n};\n\nexport function useToolsPanelDropdownMenuProps() {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn ! isMobile\n\t\t? {\n\t\t\t\tpopoverProps: {\n\t\t\t\t\tplacement: 'left-start',\n\t\t\t\t\t// For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t\t\t\t\toffset: 259,\n\t\t\t\t},\n\t\t }\n\t\t: {};\n}\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tgetValueFromObjectPath( features, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t...presetPath,\n\t\t] ),\n\t\tgetValueFromObjectPath( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = presets.find(\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === cssVarInfix\n\t);\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === presetType\n\t);\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures.settings,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tgetValueFromObjectPath( features.settings, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t'custom',\n\t\t\t...path,\n\t\t] ) ??\n\t\tgetValueFromObjectPath( features.settings, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\n/**\n * Attempts to fetch the value of a theme.json CSS variable.\n *\n * @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.\n * @param {string} blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/${blockName}' for blocks.\n * @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.\n * @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.\n */\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\tif ( variable?.ref && typeof variable?.ref === 'string' ) {\n\t\t\tconst refPath = variable.ref.split( '.' );\n\t\t\tvariable = getValueFromObjectPath( features, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! variable || !! variable?.ref ) {\n\t\t\t\treturn variable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn variable;\n\t\t}\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param {string} scope Selector to scope to.\n * @param {string} selector Original selector.\n *\n * @return {string} Scoped selector.\n */\nexport function scopeSelector( scope, selector ) {\n\tif ( ! scope || ! selector ) {\n\t\treturn selector;\n\t}\n\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n\n/**\n * Scopes a collection of selectors for features and subfeatures.\n *\n * @example\n * ```js\n * const scope = '.custom-scope';\n * const selectors = {\n * color: '.wp-my-block p',\n * typography: { fontSize: '.wp-my-block caption' },\n * };\n * const result = scopeFeatureSelector( scope, selectors );\n * // result is {\n * // color: '.custom-scope .wp-my-block p',\n * // typography: { fonSize: '.custom-scope .wp-my-block caption' },\n * // }\n * ```\n *\n * @param {string} scope Selector to scope collection of selectors with.\n * @param {Object} selectors Collection of feature selectors e.g.\n *\n * @return {Object|undefined} Scoped collection of feature selectors.\n */\nexport function scopeFeatureSelectors( scope, selectors ) {\n\tif ( ! scope || ! selectors ) {\n\t\treturn;\n\t}\n\n\tconst featureSelectors = {};\n\n\tObject.entries( selectors ).forEach( ( [ feature, selector ] ) => {\n\t\tif ( typeof selector === 'string' ) {\n\t\t\tfeatureSelectors[ feature ] = scopeSelector( scope, selector );\n\t\t}\n\n\t\tif ( typeof selector === 'object' ) {\n\t\t\tfeatureSelectors[ feature ] = {};\n\n\t\t\tObject.entries( selector ).forEach(\n\t\t\t\t( [ subfeature, subfeatureSelector ] ) => {\n\t\t\t\t\tfeatureSelectors[ feature ][ subfeature ] = scopeSelector(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tsubfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn featureSelectors;\n}\n\n/**\n * Appends a sub-selector to an existing one.\n *\n * Given the compounded `selector` \"h1, h2, h3\"\n * and the `toAppend` selector \".some-class\" the result will be\n * \"h1.some-class, h2.some-class, h3.some-class\".\n *\n * @param {string} selector Original selector.\n * @param {string} toAppend Selector to append.\n *\n * @return {string} The new selector.\n */\nexport function appendToSelector( selector, toAppend ) {\n\tif ( ! selector.includes( ',' ) ) {\n\t\treturn selector + toAppend;\n\t}\n\tconst selectors = selector.split( ',' );\n\tconst newSelectors = selectors.map( ( sel ) => sel + toAppend );\n\treturn newSelectors.join( ',' );\n}\n\n/**\n * Compares global style variations according to their styles and settings properties.\n *\n * @example\n * ```js\n * const globalStyles = { styles: { typography: { fontSize: '10px' } }, settings: {} };\n * const variation = { styles: { typography: { fontSize: '10000px' } }, settings: {} };\n * const isEqual = areGlobalStyleConfigsEqual( globalStyles, variation );\n * // false\n * ```\n *\n * @param {Object} original A global styles object.\n * @param {Object} variation A global styles object.\n *\n * @return {boolean} Whether `original` and `variation` match.\n */\nexport function areGlobalStyleConfigsEqual( original, variation ) {\n\tif ( typeof original !== 'object' || typeof variation !== 'object' ) {\n\t\treturn original === variation;\n\t}\n\treturn (\n\t\tfastDeepEqual( original?.styles, variation?.styles ) &&\n\t\tfastDeepEqual( original?.settings, variation?.settings )\n\t);\n}\n\n/**\n * Generates the selector for a block style variation by creating the\n * appropriate CSS class and adding it to the ancestor portion of the block's\n * selector.\n *\n * For example, take the Button block which has a compound selector:\n * `.wp-block-button .wp-block-button__link`. With a variation named 'custom',\n * the class `.is-style-custom` should be added to the `.wp-block-button`\n * ancestor only.\n *\n * This function will take into account comma separated and complex selectors.\n *\n * @param {string} variation Name for the variation.\n * @param {string} blockSelector CSS selector for the block.\n *\n * @return {string} CSS selector for the block style variation.\n */\nexport function getBlockStyleVariationSelector( variation, blockSelector ) {\n\tconst variationClass = `.is-style-${ variation }`;\n\n\tif ( ! blockSelector ) {\n\t\treturn variationClass;\n\t}\n\n\tconst ancestorRegex = /((?::\\([^)]+\\))?\\s*)([^\\s:]+)/;\n\tconst addVariationClass = ( _match, group1, group2 ) => {\n\t\treturn group1 + group2 + variationClass;\n\t};\n\n\tconst result = blockSelector\n\t\t.split( ',' )\n\t\t.map( ( part ) => part.replace( ancestorRegex, addVariationClass ) );\n\n\treturn result.join( ',' );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["fastDeepEqual","useViewportMatch","getTypographyFontSizeValue","getValueFromObjectPath","ROOT_BLOCK_SELECTOR","ROOT_CSS_PROPERTIES_SELECTOR","PRESET_METADATA","path","valueKey","cssVarInfix","classes","classSuffix","propertyName","valueFunc","slug","preset","settings","size","STYLE_PATH_TO_CSS_VAR_INFIX","shadow","STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE","useToolsPanelDropdownMenuProps","isMobile","popoverProps","placement","offset","findInPresetsBy","features","blockName","presetPath","presetProperty","presetValueValue","orderedPresetsByOrigin","presetByOrigin","origins","origin","presets","presetObject","find","highestPresetObjectWithSameSlug","undefined","getPresetVariableFromValue","variableStylePath","presetPropertyValue","metadata","data","getValueFromPresetVariable","variable","presetType","result","getValueFromVariable","getValueFromCustomVariable","_getValueFromObjectPa","ref","refPath","split","USER_VALUE_PREFIX","THEME_VALUE_PREFIX","THEME_VALUE_SUFFIX","parsedVar","startsWith","slice","length","endsWith","type","scopeSelector","scope","selector","scopes","selectors","selectorsScoped","forEach","outer","inner","push","trim","join","scopeFeatureSelectors","featureSelectors","Object","entries","feature","subfeature","subfeatureSelector","appendToSelector","toAppend","includes","newSelectors","map","sel","areGlobalStyleConfigsEqual","original","variation","styles","getBlockStyleVariationSelector","blockSelector","variationClass","ancestorRegex","addVariationClass","_match","group1","group2","part","replace","compileStyleValue","uncompiledValue","VARIABLE_REFERENCE_PREFIX","VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE","VARIABLE_PATH_SEPARATOR_TOKEN_STYLE","getResolvedThemeFilePath","file","themeFileURIs","Array","isArray","uri","themeFileUri","name","href","getResolvedRefValue","ruleValue","tree","resolvedRuleValue","getResolvedValue","resolvedValue","url","_links"],"sources":["@wordpress/block-editor/src/components/global-styles/utils.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getTypographyFontSizeValue } from './typography-utils';\nimport { getValueFromObjectPath } from '../../utils/object';\n\n/* Supporting data. */\nexport const ROOT_BLOCK_SELECTOR = 'body';\nexport const ROOT_CSS_PROPERTIES_SELECTOR = ':root';\n\nexport const PRESET_METADATA = [\n\t{\n\t\tpath: [ 'color', 'palette' ],\n\t\tvalueKey: 'color',\n\t\tcssVarInfix: 'color',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'color', propertyName: 'color' },\n\t\t\t{\n\t\t\t\tclassSuffix: 'background-color',\n\t\t\t\tpropertyName: 'background-color',\n\t\t\t},\n\t\t\t{\n\t\t\t\tclassSuffix: 'border-color',\n\t\t\t\tpropertyName: 'border-color',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'gradients' ],\n\t\tvalueKey: 'gradient',\n\t\tcssVarInfix: 'gradient',\n\t\tclasses: [\n\t\t\t{\n\t\t\t\tclassSuffix: 'gradient-background',\n\t\t\t\tpropertyName: 'background',\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'color', 'duotone' ],\n\t\tvalueKey: 'colors',\n\t\tcssVarInfix: 'duotone',\n\t\tvalueFunc: ( { slug } ) => `url( '#wp-duotone-${ slug }' )`,\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'shadow', 'presets' ],\n\t\tvalueKey: 'shadow',\n\t\tcssVarInfix: 'shadow',\n\t\tclasses: [],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontSizes' ],\n\t\tvalueFunc: ( preset, settings ) =>\n\t\t\tgetTypographyFontSizeValue( preset, settings ),\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'font-size',\n\t\tclasses: [ { classSuffix: 'font-size', propertyName: 'font-size' } ],\n\t},\n\t{\n\t\tpath: [ 'typography', 'fontFamilies' ],\n\t\tvalueKey: 'fontFamily',\n\t\tcssVarInfix: 'font-family',\n\t\tclasses: [\n\t\t\t{ classSuffix: 'font-family', propertyName: 'font-family' },\n\t\t],\n\t},\n\t{\n\t\tpath: [ 'spacing', 'spacingSizes' ],\n\t\tvalueKey: 'size',\n\t\tcssVarInfix: 'spacing',\n\t\tvalueFunc: ( { size } ) => size,\n\t\tclasses: [],\n\t},\n];\n\nexport const STYLE_PATH_TO_CSS_VAR_INFIX = {\n\t'color.background': 'color',\n\t'color.text': 'color',\n\t'filter.duotone': 'duotone',\n\t'elements.link.color.text': 'color',\n\t'elements.link.:hover.color.text': 'color',\n\t'elements.link.typography.fontFamily': 'font-family',\n\t'elements.link.typography.fontSize': 'font-size',\n\t'elements.button.color.text': 'color',\n\t'elements.button.color.background': 'color',\n\t'elements.caption.color.text': 'color',\n\t'elements.button.typography.fontFamily': 'font-family',\n\t'elements.button.typography.fontSize': 'font-size',\n\t'elements.heading.color': 'color',\n\t'elements.heading.color.background': 'color',\n\t'elements.heading.typography.fontFamily': 'font-family',\n\t'elements.heading.gradient': 'gradient',\n\t'elements.heading.color.gradient': 'gradient',\n\t'elements.h1.color': 'color',\n\t'elements.h1.color.background': 'color',\n\t'elements.h1.typography.fontFamily': 'font-family',\n\t'elements.h1.color.gradient': 'gradient',\n\t'elements.h2.color': 'color',\n\t'elements.h2.color.background': 'color',\n\t'elements.h2.typography.fontFamily': 'font-family',\n\t'elements.h2.color.gradient': 'gradient',\n\t'elements.h3.color': 'color',\n\t'elements.h3.color.background': 'color',\n\t'elements.h3.typography.fontFamily': 'font-family',\n\t'elements.h3.color.gradient': 'gradient',\n\t'elements.h4.color': 'color',\n\t'elements.h4.color.background': 'color',\n\t'elements.h4.typography.fontFamily': 'font-family',\n\t'elements.h4.color.gradient': 'gradient',\n\t'elements.h5.color': 'color',\n\t'elements.h5.color.background': 'color',\n\t'elements.h5.typography.fontFamily': 'font-family',\n\t'elements.h5.color.gradient': 'gradient',\n\t'elements.h6.color': 'color',\n\t'elements.h6.color.background': 'color',\n\t'elements.h6.typography.fontFamily': 'font-family',\n\t'elements.h6.color.gradient': 'gradient',\n\t'color.gradient': 'gradient',\n\tshadow: 'shadow',\n\t'typography.fontSize': 'font-size',\n\t'typography.fontFamily': 'font-family',\n};\n\n// A static list of block attributes that store global style preset slugs.\nexport const STYLE_PATH_TO_PRESET_BLOCK_ATTRIBUTE = {\n\t'color.background': 'backgroundColor',\n\t'color.text': 'textColor',\n\t'color.gradient': 'gradient',\n\t'typography.fontSize': 'fontSize',\n\t'typography.fontFamily': 'fontFamily',\n};\n\nexport function useToolsPanelDropdownMenuProps() {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn ! isMobile\n\t\t? {\n\t\t\t\tpopoverProps: {\n\t\t\t\t\tplacement: 'left-start',\n\t\t\t\t\t// For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t\t\t\t\toffset: 259,\n\t\t\t\t},\n\t\t }\n\t\t: {};\n}\n\nfunction findInPresetsBy(\n\tfeatures,\n\tblockName,\n\tpresetPath,\n\tpresetProperty,\n\tpresetValueValue\n) {\n\t// Block presets take priority above root level presets.\n\tconst orderedPresetsByOrigin = [\n\t\tgetValueFromObjectPath( features, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t...presetPath,\n\t\t] ),\n\t\tgetValueFromObjectPath( features, presetPath ),\n\t];\n\n\tfor ( const presetByOrigin of orderedPresetsByOrigin ) {\n\t\tif ( presetByOrigin ) {\n\t\t\t// Preset origins ordered by priority.\n\t\t\tconst origins = [ 'custom', 'theme', 'default' ];\n\t\t\tfor ( const origin of origins ) {\n\t\t\t\tconst presets = presetByOrigin[ origin ];\n\t\t\t\tif ( presets ) {\n\t\t\t\t\tconst presetObject = presets.find(\n\t\t\t\t\t\t( preset ) =>\n\t\t\t\t\t\t\tpreset[ presetProperty ] === presetValueValue\n\t\t\t\t\t);\n\t\t\t\t\tif ( presetObject ) {\n\t\t\t\t\t\tif ( presetProperty === 'slug' ) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// If there is a highest priority preset with the same slug but different value the preset we found was overwritten and should be ignored.\n\t\t\t\t\t\tconst highestPresetObjectWithSameSlug = findInPresetsBy(\n\t\t\t\t\t\t\tfeatures,\n\t\t\t\t\t\t\tblockName,\n\t\t\t\t\t\t\tpresetPath,\n\t\t\t\t\t\t\t'slug',\n\t\t\t\t\t\t\tpresetObject.slug\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\thighestPresetObjectWithSameSlug[\n\t\t\t\t\t\t\t\tpresetProperty\n\t\t\t\t\t\t\t] === presetObject[ presetProperty ]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treturn presetObject;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function getPresetVariableFromValue(\n\tfeatures,\n\tblockName,\n\tvariableStylePath,\n\tpresetPropertyValue\n) {\n\tif ( ! presetPropertyValue ) {\n\t\treturn presetPropertyValue;\n\t}\n\n\tconst cssVarInfix = STYLE_PATH_TO_CSS_VAR_INFIX[ variableStylePath ];\n\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === cssVarInfix\n\t);\n\n\tif ( ! metadata ) {\n\t\t// The property doesn't have preset data\n\t\t// so the value should be returned as it is.\n\t\treturn presetPropertyValue;\n\t}\n\tconst { valueKey, path } = metadata;\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures,\n\t\tblockName,\n\t\tpath,\n\t\tvalueKey,\n\t\tpresetPropertyValue\n\t);\n\n\tif ( ! presetObject ) {\n\t\t// Value wasn't found in the presets,\n\t\t// so it must be a custom value.\n\t\treturn presetPropertyValue;\n\t}\n\n\treturn `var:preset|${ cssVarInfix }|${ presetObject.slug }`;\n}\n\nfunction getValueFromPresetVariable(\n\tfeatures,\n\tblockName,\n\tvariable,\n\t[ presetType, slug ]\n) {\n\tconst metadata = PRESET_METADATA.find(\n\t\t( data ) => data.cssVarInfix === presetType\n\t);\n\tif ( ! metadata ) {\n\t\treturn variable;\n\t}\n\n\tconst presetObject = findInPresetsBy(\n\t\tfeatures.settings,\n\t\tblockName,\n\t\tmetadata.path,\n\t\t'slug',\n\t\tslug\n\t);\n\n\tif ( presetObject ) {\n\t\tconst { valueKey } = metadata;\n\t\tconst result = presetObject[ valueKey ];\n\t\treturn getValueFromVariable( features, blockName, result );\n\t}\n\n\treturn variable;\n}\n\nfunction getValueFromCustomVariable( features, blockName, variable, path ) {\n\tconst result =\n\t\tgetValueFromObjectPath( features.settings, [\n\t\t\t'blocks',\n\t\t\tblockName,\n\t\t\t'custom',\n\t\t\t...path,\n\t\t] ) ??\n\t\tgetValueFromObjectPath( features.settings, [ 'custom', ...path ] );\n\tif ( ! result ) {\n\t\treturn variable;\n\t}\n\t// A variable may reference another variable so we need recursion until we find the value.\n\treturn getValueFromVariable( features, blockName, result );\n}\n\n/**\n * Attempts to fetch the value of a theme.json CSS variable.\n *\n * @param {Object} features GlobalStylesContext config, e.g., user, base or merged. Represents the theme.json tree.\n * @param {string} blockName The name of a block as represented in the styles property. E.g., 'root' for root-level, and 'core/${blockName}' for blocks.\n * @param {string|*} variable An incoming style value. A CSS var value is expected, but it could be any value.\n * @return {string|*|{ref}} The value of the CSS var, if found. If not found, the passed variable argument.\n */\nexport function getValueFromVariable( features, blockName, variable ) {\n\tif ( ! variable || typeof variable !== 'string' ) {\n\t\tif ( variable?.ref && typeof variable?.ref === 'string' ) {\n\t\t\tconst refPath = variable.ref.split( '.' );\n\t\t\tvariable = getValueFromObjectPath( features, refPath );\n\t\t\t// Presence of another ref indicates a reference to another dynamic value.\n\t\t\t// Pointing to another dynamic value is not supported.\n\t\t\tif ( ! variable || !! variable?.ref ) {\n\t\t\t\treturn variable;\n\t\t\t}\n\t\t} else {\n\t\t\treturn variable;\n\t\t}\n\t}\n\tconst USER_VALUE_PREFIX = 'var:';\n\tconst THEME_VALUE_PREFIX = 'var(--wp--';\n\tconst THEME_VALUE_SUFFIX = ')';\n\n\tlet parsedVar;\n\n\tif ( variable.startsWith( USER_VALUE_PREFIX ) ) {\n\t\tparsedVar = variable.slice( USER_VALUE_PREFIX.length ).split( '|' );\n\t} else if (\n\t\tvariable.startsWith( THEME_VALUE_PREFIX ) &&\n\t\tvariable.endsWith( THEME_VALUE_SUFFIX )\n\t) {\n\t\tparsedVar = variable\n\t\t\t.slice( THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length )\n\t\t\t.split( '--' );\n\t} else {\n\t\t// We don't know how to parse the value: either is raw of uses complex CSS such as `calc(1px * var(--wp--variable) )`\n\t\treturn variable;\n\t}\n\n\tconst [ type, ...path ] = parsedVar;\n\tif ( type === 'preset' ) {\n\t\treturn getValueFromPresetVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\tif ( type === 'custom' ) {\n\t\treturn getValueFromCustomVariable(\n\t\t\tfeatures,\n\t\t\tblockName,\n\t\t\tvariable,\n\t\t\tpath\n\t\t);\n\t}\n\treturn variable;\n}\n\n/**\n * Function that scopes a selector with another one. This works a bit like\n * SCSS nesting except the `&` operator isn't supported.\n *\n * @example\n * ```js\n * const scope = '.a, .b .c';\n * const selector = '> .x, .y';\n * const merged = scopeSelector( scope, selector );\n * // merged is '.a > .x, .a .y, .b .c > .x, .b .c .y'\n * ```\n *\n * @param {string} scope Selector to scope to.\n * @param {string} selector Original selector.\n *\n * @return {string} Scoped selector.\n */\nexport function scopeSelector( scope, selector ) {\n\tif ( ! scope || ! selector ) {\n\t\treturn selector;\n\t}\n\n\tconst scopes = scope.split( ',' );\n\tconst selectors = selector.split( ',' );\n\n\tconst selectorsScoped = [];\n\tscopes.forEach( ( outer ) => {\n\t\tselectors.forEach( ( inner ) => {\n\t\t\tselectorsScoped.push( `${ outer.trim() } ${ inner.trim() }` );\n\t\t} );\n\t} );\n\n\treturn selectorsScoped.join( ', ' );\n}\n\n/**\n * Scopes a collection of selectors for features and subfeatures.\n *\n * @example\n * ```js\n * const scope = '.custom-scope';\n * const selectors = {\n * color: '.wp-my-block p',\n * typography: { fontSize: '.wp-my-block caption' },\n * };\n * const result = scopeFeatureSelector( scope, selectors );\n * // result is {\n * // color: '.custom-scope .wp-my-block p',\n * // typography: { fonSize: '.custom-scope .wp-my-block caption' },\n * // }\n * ```\n *\n * @param {string} scope Selector to scope collection of selectors with.\n * @param {Object} selectors Collection of feature selectors e.g.\n *\n * @return {Object|undefined} Scoped collection of feature selectors.\n */\nexport function scopeFeatureSelectors( scope, selectors ) {\n\tif ( ! scope || ! selectors ) {\n\t\treturn;\n\t}\n\n\tconst featureSelectors = {};\n\n\tObject.entries( selectors ).forEach( ( [ feature, selector ] ) => {\n\t\tif ( typeof selector === 'string' ) {\n\t\t\tfeatureSelectors[ feature ] = scopeSelector( scope, selector );\n\t\t}\n\n\t\tif ( typeof selector === 'object' ) {\n\t\t\tfeatureSelectors[ feature ] = {};\n\n\t\t\tObject.entries( selector ).forEach(\n\t\t\t\t( [ subfeature, subfeatureSelector ] ) => {\n\t\t\t\t\tfeatureSelectors[ feature ][ subfeature ] = scopeSelector(\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tsubfeatureSelector\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn featureSelectors;\n}\n\n/**\n * Appends a sub-selector to an existing one.\n *\n * Given the compounded `selector` \"h1, h2, h3\"\n * and the `toAppend` selector \".some-class\" the result will be\n * \"h1.some-class, h2.some-class, h3.some-class\".\n *\n * @param {string} selector Original selector.\n * @param {string} toAppend Selector to append.\n *\n * @return {string} The new selector.\n */\nexport function appendToSelector( selector, toAppend ) {\n\tif ( ! selector.includes( ',' ) ) {\n\t\treturn selector + toAppend;\n\t}\n\tconst selectors = selector.split( ',' );\n\tconst newSelectors = selectors.map( ( sel ) => sel + toAppend );\n\treturn newSelectors.join( ',' );\n}\n\n/**\n * Compares global style variations according to their styles and settings properties.\n *\n * @example\n * ```js\n * const globalStyles = { styles: { typography: { fontSize: '10px' } }, settings: {} };\n * const variation = { styles: { typography: { fontSize: '10000px' } }, settings: {} };\n * const isEqual = areGlobalStyleConfigsEqual( globalStyles, variation );\n * // false\n * ```\n *\n * @param {Object} original A global styles object.\n * @param {Object} variation A global styles object.\n *\n * @return {boolean} Whether `original` and `variation` match.\n */\nexport function areGlobalStyleConfigsEqual( original, variation ) {\n\tif ( typeof original !== 'object' || typeof variation !== 'object' ) {\n\t\treturn original === variation;\n\t}\n\treturn (\n\t\tfastDeepEqual( original?.styles, variation?.styles ) &&\n\t\tfastDeepEqual( original?.settings, variation?.settings )\n\t);\n}\n\n/**\n * Generates the selector for a block style variation by creating the\n * appropriate CSS class and adding it to the ancestor portion of the block's\n * selector.\n *\n * For example, take the Button block which has a compound selector:\n * `.wp-block-button .wp-block-button__link`. With a variation named 'custom',\n * the class `.is-style-custom` should be added to the `.wp-block-button`\n * ancestor only.\n *\n * This function will take into account comma separated and complex selectors.\n *\n * @param {string} variation Name for the variation.\n * @param {string} blockSelector CSS selector for the block.\n *\n * @return {string} CSS selector for the block style variation.\n */\nexport function getBlockStyleVariationSelector( variation, blockSelector ) {\n\tconst variationClass = `.is-style-${ variation }`;\n\n\tif ( ! blockSelector ) {\n\t\treturn variationClass;\n\t}\n\n\tconst ancestorRegex = /((?::\\([^)]+\\))?\\s*)([^\\s:]+)/;\n\tconst addVariationClass = ( _match, group1, group2 ) => {\n\t\treturn group1 + group2 + variationClass;\n\t};\n\n\tconst result = blockSelector\n\t\t.split( ',' )\n\t\t.map( ( part ) => part.replace( ancestorRegex, addVariationClass ) );\n\n\treturn result.join( ',' );\n}\n\n/**\n * Converts style preset values `var:` to CSS custom var values.\n * TODO: Export and use the style engine util: getCSSVarFromStyleValue().\n *\n * Example:\n *\n * compileStyleValue( 'var:preset|color|primary' ) // returns 'var(--wp--color-primary)'\n *\n * @param {string} uncompiledValue A block style value.\n * @return {string} The compiled, or original value.\n */\nexport function compileStyleValue( uncompiledValue ) {\n\tconst VARIABLE_REFERENCE_PREFIX = 'var:';\n\tif (\n\t\t'string' === typeof uncompiledValue &&\n\t\tuncompiledValue?.startsWith?.( VARIABLE_REFERENCE_PREFIX )\n\t) {\n\t\tconst VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE = '|';\n\t\tconst VARIABLE_PATH_SEPARATOR_TOKEN_STYLE = '--';\n\t\tconst variable = uncompiledValue\n\t\t\t.slice( VARIABLE_REFERENCE_PREFIX.length )\n\t\t\t.split( VARIABLE_PATH_SEPARATOR_TOKEN_ATTRIBUTE )\n\t\t\t.join( VARIABLE_PATH_SEPARATOR_TOKEN_STYLE );\n\t\treturn `var(--wp--${ variable })`;\n\t}\n\treturn uncompiledValue;\n}\n\n/**\n * Looks up a theme file URI based on a relative path.\n *\n * @param {string} file A relative path.\n * @param {Array<Object>} themeFileURIs A collection of absolute theme file URIs and their corresponding file paths.\n * @return {string} A resolved theme file URI, if one is found in the themeFileURIs collection.\n */\nexport function getResolvedThemeFilePath( file, themeFileURIs ) {\n\tif ( ! file || ! themeFileURIs || ! Array.isArray( themeFileURIs ) ) {\n\t\treturn file;\n\t}\n\n\tconst uri = themeFileURIs.find(\n\t\t( themeFileUri ) => themeFileUri?.name === file\n\t);\n\n\tif ( ! uri?.href ) {\n\t\treturn file;\n\t}\n\n\treturn uri?.href;\n}\n\n/**\n * Resolves ref values in theme JSON.\n *\n * @param {Object|string} ruleValue A block style value that may contain a reference to a theme.json value.\n * @param {Object} tree A theme.json object.\n * @return {*} The resolved value or incoming ruleValue.\n */\nexport function getResolvedRefValue( ruleValue, tree ) {\n\tif ( ! ruleValue || ! tree ) {\n\t\treturn ruleValue;\n\t}\n\n\tif ( typeof ruleValue !== 'string' && ruleValue?.ref ) {\n\t\tconst refPath = ruleValue.ref.split( '.' );\n\t\tconst resolvedRuleValue = compileStyleValue(\n\t\t\tgetValueFromObjectPath( tree, refPath )\n\t\t);\n\n\t\t/*\n\t\t * Presence of another ref indicates a reference to another dynamic value.\n\t\t * Pointing to another dynamic value is not supported.\n\t\t */\n\t\tif ( resolvedRuleValue?.ref ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif ( ! resolvedRuleValue ) {\n\t\t\treturn ruleValue;\n\t\t}\n\n\t\treturn resolvedRuleValue;\n\t}\n\treturn ruleValue;\n}\n\n/**\n * Resolves ref and relative path values in theme JSON.\n *\n * @param {Object|string} ruleValue A block style value that may contain a reference to a theme.json value.\n * @param {Object} tree A theme.json object.\n * @return {*} The resolved value or incoming ruleValue.\n */\nexport function getResolvedValue( ruleValue, tree ) {\n\tif ( ! ruleValue || ! tree ) {\n\t\treturn ruleValue;\n\t}\n\n\t// Resolve ref values.\n\tconst resolvedValue = getResolvedRefValue( ruleValue, tree );\n\n\t// Resolve relative paths.\n\tif ( resolvedValue?.url ) {\n\t\tresolvedValue.url = getResolvedThemeFilePath(\n\t\t\tresolvedValue.url,\n\t\t\ttree?._links?.[ 'wp:theme-file' ]\n\t\t);\n\t}\n\n\treturn resolvedValue;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import clsx from 'clsx';
|
|
5
|
+
|
|
1
6
|
/**
|
|
2
7
|
* WordPress dependencies
|
|
3
8
|
*/
|
|
4
9
|
import { __ } from '@wordpress/i18n';
|
|
5
|
-
import { ToolbarButton } from '@wordpress/components';
|
|
6
|
-
import {
|
|
10
|
+
import { VisuallyHidden, ToolbarButton, ToolbarGroup } from '@wordpress/components';
|
|
11
|
+
import { chevronLeft, chevronUp, chevronDown, chevronRight } from '@wordpress/icons';
|
|
7
12
|
import { useDispatch } from '@wordpress/data';
|
|
13
|
+
import { useInstanceId } from '@wordpress/compose';
|
|
8
14
|
|
|
9
15
|
/**
|
|
10
16
|
* Internal dependencies
|
|
@@ -14,6 +20,7 @@ import { useGetNumberOfBlocksBeforeCell } from './use-get-number-of-blocks-befor
|
|
|
14
20
|
import { store as blockEditorStore } from '../../store';
|
|
15
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
22
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
23
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
17
24
|
export function GridItemMovers({
|
|
18
25
|
layout,
|
|
19
26
|
parentLayout,
|
|
@@ -35,52 +42,95 @@ export function GridItemMovers({
|
|
|
35
42
|
const columnCount = parentLayout?.columnCount;
|
|
36
43
|
const rowCount = parentLayout?.rowCount;
|
|
37
44
|
const getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(gridClientId, columnCount);
|
|
38
|
-
return /*#__PURE__*/
|
|
45
|
+
return /*#__PURE__*/_jsx(BlockControls, {
|
|
39
46
|
group: "parent",
|
|
47
|
+
children: /*#__PURE__*/_jsxs(ToolbarGroup, {
|
|
48
|
+
className: "block-editor-grid-item-mover__move-button-container",
|
|
49
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
50
|
+
className: "block-editor-grid-item-mover__move-horizontal-button-container is-left",
|
|
51
|
+
children: /*#__PURE__*/_jsx(GridItemMover, {
|
|
52
|
+
icon: chevronLeft,
|
|
53
|
+
label: __('Move left'),
|
|
54
|
+
description: __('Move left'),
|
|
55
|
+
isDisabled: columnStart <= 1,
|
|
56
|
+
onClick: () => {
|
|
57
|
+
onChange({
|
|
58
|
+
columnStart: columnStart - 1
|
|
59
|
+
});
|
|
60
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
61
|
+
moveBlocksToPosition([blockClientId], gridClientId, gridClientId, getNumberOfBlocksBeforeCell(columnStart - 1, rowStart));
|
|
62
|
+
}
|
|
63
|
+
})
|
|
64
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
65
|
+
className: "block-editor-grid-item-mover__move-vertical-button-container",
|
|
66
|
+
children: [/*#__PURE__*/_jsx(GridItemMover, {
|
|
67
|
+
className: "is-up-button",
|
|
68
|
+
icon: chevronUp,
|
|
69
|
+
label: __('Move up'),
|
|
70
|
+
description: __('Move up'),
|
|
71
|
+
isDisabled: rowStart <= 1,
|
|
72
|
+
onClick: () => {
|
|
73
|
+
onChange({
|
|
74
|
+
rowStart: rowStart - 1
|
|
75
|
+
});
|
|
76
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
77
|
+
moveBlocksToPosition([blockClientId], gridClientId, gridClientId, getNumberOfBlocksBeforeCell(columnStart, rowStart - 1));
|
|
78
|
+
}
|
|
79
|
+
}), /*#__PURE__*/_jsx(GridItemMover, {
|
|
80
|
+
className: "is-down-button",
|
|
81
|
+
icon: chevronDown,
|
|
82
|
+
label: __('Move down'),
|
|
83
|
+
description: __('Move down'),
|
|
84
|
+
isDisabled: rowCount && rowEnd >= rowCount,
|
|
85
|
+
onClick: () => {
|
|
86
|
+
onChange({
|
|
87
|
+
rowStart: rowStart + 1
|
|
88
|
+
});
|
|
89
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
90
|
+
moveBlocksToPosition([blockClientId], gridClientId, gridClientId, getNumberOfBlocksBeforeCell(columnStart, rowStart + 1));
|
|
91
|
+
}
|
|
92
|
+
})]
|
|
93
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
94
|
+
className: "block-editor-grid-item-mover__move-horizontal-button-container is-right",
|
|
95
|
+
children: /*#__PURE__*/_jsx(GridItemMover, {
|
|
96
|
+
icon: chevronRight,
|
|
97
|
+
label: __('Move right'),
|
|
98
|
+
description: __('Move right'),
|
|
99
|
+
isDisabled: columnCount && columnEnd >= columnCount,
|
|
100
|
+
onClick: () => {
|
|
101
|
+
onChange({
|
|
102
|
+
columnStart: columnStart + 1
|
|
103
|
+
});
|
|
104
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
105
|
+
moveBlocksToPosition([blockClientId], gridClientId, gridClientId, getNumberOfBlocksBeforeCell(columnStart + 1, rowStart));
|
|
106
|
+
}
|
|
107
|
+
})
|
|
108
|
+
})]
|
|
109
|
+
})
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
function GridItemMover({
|
|
113
|
+
className,
|
|
114
|
+
icon,
|
|
115
|
+
label,
|
|
116
|
+
isDisabled,
|
|
117
|
+
onClick,
|
|
118
|
+
description
|
|
119
|
+
}) {
|
|
120
|
+
const instanceId = useInstanceId(GridItemMover);
|
|
121
|
+
const descriptionId = `block-editor-grid-item-mover-button__description-${instanceId}`;
|
|
122
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
40
123
|
children: [/*#__PURE__*/_jsx(ToolbarButton, {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}), /*#__PURE__*/_jsx(ToolbarButton, {
|
|
52
|
-
icon: arrowDown,
|
|
53
|
-
label: __('Move block down'),
|
|
54
|
-
disabled: rowCount && rowEnd >= rowCount,
|
|
55
|
-
onClick: () => {
|
|
56
|
-
onChange({
|
|
57
|
-
rowStart: rowStart + 1
|
|
58
|
-
});
|
|
59
|
-
__unstableMarkNextChangeAsNotPersistent();
|
|
60
|
-
moveBlocksToPosition([blockClientId], gridClientId, gridClientId, getNumberOfBlocksBeforeCell(columnStart, rowStart + 1));
|
|
61
|
-
}
|
|
62
|
-
}), /*#__PURE__*/_jsx(ToolbarButton, {
|
|
63
|
-
icon: arrowLeft,
|
|
64
|
-
label: __('Move block left'),
|
|
65
|
-
disabled: columnStart <= 1,
|
|
66
|
-
onClick: () => {
|
|
67
|
-
onChange({
|
|
68
|
-
columnStart: columnStart - 1
|
|
69
|
-
});
|
|
70
|
-
__unstableMarkNextChangeAsNotPersistent();
|
|
71
|
-
moveBlocksToPosition([blockClientId], gridClientId, gridClientId, getNumberOfBlocksBeforeCell(columnStart - 1, rowStart));
|
|
72
|
-
}
|
|
73
|
-
}), /*#__PURE__*/_jsx(ToolbarButton, {
|
|
74
|
-
icon: arrowRight,
|
|
75
|
-
label: __('Move block right'),
|
|
76
|
-
disabled: columnCount && columnEnd >= columnCount,
|
|
77
|
-
onClick: () => {
|
|
78
|
-
onChange({
|
|
79
|
-
columnStart: columnStart + 1
|
|
80
|
-
});
|
|
81
|
-
__unstableMarkNextChangeAsNotPersistent();
|
|
82
|
-
moveBlocksToPosition([blockClientId], gridClientId, gridClientId, getNumberOfBlocksBeforeCell(columnStart + 1, rowStart));
|
|
83
|
-
}
|
|
124
|
+
className: clsx('block-editor-grid-item-mover-button', className),
|
|
125
|
+
icon: icon,
|
|
126
|
+
label: label,
|
|
127
|
+
"aria-describedby": descriptionId,
|
|
128
|
+
onClick: isDisabled ? null : onClick,
|
|
129
|
+
disabled: isDisabled,
|
|
130
|
+
accessibleWhenDisabled: true
|
|
131
|
+
}), /*#__PURE__*/_jsx(VisuallyHidden, {
|
|
132
|
+
id: descriptionId,
|
|
133
|
+
children: description
|
|
84
134
|
})]
|
|
85
135
|
});
|
|
86
136
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","ToolbarButton","arrowLeft","arrowUp","arrowDown","arrowRight","useDispatch","BlockControls","useGetNumberOfBlocksBeforeCell","store","blockEditorStore","jsx","_jsx","jsxs","_jsxs","GridItemMovers","layout","parentLayout","onChange","gridClientId","blockClientId","_layout$columnStart","_layout$rowStart","_layout$columnSpan","_layout$rowSpan","moveBlocksToPosition","__unstableMarkNextChangeAsNotPersistent","columnStart","rowStart","columnSpan","rowSpan","columnEnd","rowEnd","columnCount","rowCount","getNumberOfBlocksBeforeCell","group","children","icon","label","disabled","onClick"],"sources":["@wordpress/block-editor/src/components/grid/grid-item-movers.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { ToolbarButton } from '@wordpress/components';\nimport { arrowLeft, arrowUp, arrowDown, arrowRight } from '@wordpress/icons';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport BlockControls from '../block-controls';\nimport { useGetNumberOfBlocksBeforeCell } from './use-get-number-of-blocks-before-cell';\nimport { store as blockEditorStore } from '../../store';\n\nexport function GridItemMovers( {\n\tlayout,\n\tparentLayout,\n\tonChange,\n\tgridClientId,\n\tblockClientId,\n} ) {\n\tconst { moveBlocksToPosition, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst columnStart = layout?.columnStart ?? 1;\n\tconst rowStart = layout?.rowStart ?? 1;\n\tconst columnSpan = layout?.columnSpan ?? 1;\n\tconst rowSpan = layout?.rowSpan ?? 1;\n\tconst columnEnd = columnStart + columnSpan - 1;\n\tconst rowEnd = rowStart + rowSpan - 1;\n\tconst columnCount = parentLayout?.columnCount;\n\tconst rowCount = parentLayout?.rowCount;\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tcolumnCount\n\t);\n\n\treturn (\n\t\t<BlockControls group=\"parent\">\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ arrowUp }\n\t\t\t\tlabel={ __( 'Move block up' ) }\n\t\t\t\tdisabled={ rowStart <= 1 }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\trowStart: rowStart - 1,\n\t\t\t\t\t} );\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t[ blockClientId ],\n\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\tgetNumberOfBlocksBeforeCell( columnStart, rowStart - 1 )\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ arrowDown }\n\t\t\t\tlabel={ __( 'Move block down' ) }\n\t\t\t\tdisabled={ rowCount && rowEnd >= rowCount }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\trowStart: rowStart + 1,\n\t\t\t\t\t} );\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t[ blockClientId ],\n\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\tgetNumberOfBlocksBeforeCell( columnStart, rowStart + 1 )\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ arrowLeft }\n\t\t\t\tlabel={ __( 'Move block left' ) }\n\t\t\t\tdisabled={ columnStart <= 1 }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\tcolumnStart: columnStart - 1,\n\t\t\t\t\t} );\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t[ blockClientId ],\n\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\tgetNumberOfBlocksBeforeCell( columnStart - 1, rowStart )\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ arrowRight }\n\t\t\t\tlabel={ __( 'Move block right' ) }\n\t\t\t\tdisabled={ columnCount && columnEnd >= columnCount }\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\tcolumnStart: columnStart + 1,\n\t\t\t\t\t} );\n\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t[ blockClientId ],\n\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\tgetNumberOfBlocksBeforeCell( columnStart + 1, rowStart )\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t/>\n\t\t</BlockControls>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","__","VisuallyHidden","ToolbarButton","ToolbarGroup","chevronLeft","chevronUp","chevronDown","chevronRight","useDispatch","useInstanceId","BlockControls","useGetNumberOfBlocksBeforeCell","store","blockEditorStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","GridItemMovers","layout","parentLayout","onChange","gridClientId","blockClientId","_layout$columnStart","_layout$rowStart","_layout$columnSpan","_layout$rowSpan","moveBlocksToPosition","__unstableMarkNextChangeAsNotPersistent","columnStart","rowStart","columnSpan","rowSpan","columnEnd","rowEnd","columnCount","rowCount","getNumberOfBlocksBeforeCell","group","children","className","GridItemMover","icon","label","description","isDisabled","onClick","instanceId","descriptionId","disabled","accessibleWhenDisabled","id"],"sources":["@wordpress/block-editor/src/components/grid/grid-item-movers.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tVisuallyHidden,\n\tToolbarButton,\n\tToolbarGroup,\n} from '@wordpress/components';\nimport {\n\tchevronLeft,\n\tchevronUp,\n\tchevronDown,\n\tchevronRight,\n} from '@wordpress/icons';\nimport { useDispatch } from '@wordpress/data';\nimport { useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockControls from '../block-controls';\nimport { useGetNumberOfBlocksBeforeCell } from './use-get-number-of-blocks-before-cell';\nimport { store as blockEditorStore } from '../../store';\n\nexport function GridItemMovers( {\n\tlayout,\n\tparentLayout,\n\tonChange,\n\tgridClientId,\n\tblockClientId,\n} ) {\n\tconst { moveBlocksToPosition, __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst columnStart = layout?.columnStart ?? 1;\n\tconst rowStart = layout?.rowStart ?? 1;\n\tconst columnSpan = layout?.columnSpan ?? 1;\n\tconst rowSpan = layout?.rowSpan ?? 1;\n\tconst columnEnd = columnStart + columnSpan - 1;\n\tconst rowEnd = rowStart + rowSpan - 1;\n\tconst columnCount = parentLayout?.columnCount;\n\tconst rowCount = parentLayout?.rowCount;\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tcolumnCount\n\t);\n\n\treturn (\n\t\t<BlockControls group=\"parent\">\n\t\t\t<ToolbarGroup className=\"block-editor-grid-item-mover__move-button-container\">\n\t\t\t\t<div className=\"block-editor-grid-item-mover__move-horizontal-button-container is-left\">\n\t\t\t\t\t<GridItemMover\n\t\t\t\t\t\ticon={ chevronLeft }\n\t\t\t\t\t\tlabel={ __( 'Move left' ) }\n\t\t\t\t\t\tdescription={ __( 'Move left' ) }\n\t\t\t\t\t\tisDisabled={ columnStart <= 1 }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tcolumnStart: columnStart - 1,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ blockClientId ],\n\t\t\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\t\t\tgetNumberOfBlocksBeforeCell(\n\t\t\t\t\t\t\t\t\tcolumnStart - 1,\n\t\t\t\t\t\t\t\t\trowStart\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"block-editor-grid-item-mover__move-vertical-button-container\">\n\t\t\t\t\t<GridItemMover\n\t\t\t\t\t\tclassName=\"is-up-button\"\n\t\t\t\t\t\ticon={ chevronUp }\n\t\t\t\t\t\tlabel={ __( 'Move up' ) }\n\t\t\t\t\t\tdescription={ __( 'Move up' ) }\n\t\t\t\t\t\tisDisabled={ rowStart <= 1 }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\trowStart: rowStart - 1,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ blockClientId ],\n\t\t\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\t\t\tgetNumberOfBlocksBeforeCell(\n\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\trowStart - 1\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<GridItemMover\n\t\t\t\t\t\tclassName=\"is-down-button\"\n\t\t\t\t\t\ticon={ chevronDown }\n\t\t\t\t\t\tlabel={ __( 'Move down' ) }\n\t\t\t\t\t\tdescription={ __( 'Move down' ) }\n\t\t\t\t\t\tisDisabled={ rowCount && rowEnd >= rowCount }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\trowStart: rowStart + 1,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ blockClientId ],\n\t\t\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\t\t\tgetNumberOfBlocksBeforeCell(\n\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\trowStart + 1\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"block-editor-grid-item-mover__move-horizontal-button-container is-right\">\n\t\t\t\t\t<GridItemMover\n\t\t\t\t\t\ticon={ chevronRight }\n\t\t\t\t\t\tlabel={ __( 'Move right' ) }\n\t\t\t\t\t\tdescription={ __( 'Move right' ) }\n\t\t\t\t\t\tisDisabled={ columnCount && columnEnd >= columnCount }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tcolumnStart: columnStart + 1,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ blockClientId ],\n\t\t\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\t\t\tgridClientId,\n\t\t\t\t\t\t\t\tgetNumberOfBlocksBeforeCell(\n\t\t\t\t\t\t\t\t\tcolumnStart + 1,\n\t\t\t\t\t\t\t\t\trowStart\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</ToolbarGroup>\n\t\t</BlockControls>\n\t);\n}\n\nfunction GridItemMover( {\n\tclassName,\n\ticon,\n\tlabel,\n\tisDisabled,\n\tonClick,\n\tdescription,\n} ) {\n\tconst instanceId = useInstanceId( GridItemMover );\n\tconst descriptionId = `block-editor-grid-item-mover-button__description-${ instanceId }`;\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\tclassName={ clsx(\n\t\t\t\t\t'block-editor-grid-item-mover-button',\n\t\t\t\t\tclassName\n\t\t\t\t) }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ label }\n\t\t\t\taria-describedby={ descriptionId }\n\t\t\t\tonClick={ isDisabled ? null : onClick }\n\t\t\t\tdisabled={ isDisabled }\n\t\t\t\taccessibleWhenDisabled\n\t\t\t/>\n\t\t\t<VisuallyHidden id={ descriptionId }>\n\t\t\t\t{ description }\n\t\t\t</VisuallyHidden>\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ import { useState, useEffect } from '@wordpress/element';
|
|
|
7
7
|
/**
|
|
8
8
|
* Internal dependencies
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
10
|
+
import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
|
|
11
11
|
import BlockPopoverCover from '../block-popover/cover';
|
|
12
12
|
import { getComputedCSS, getGridTracks, getClosestTrack } from './utils';
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -85,7 +85,7 @@ function GridItemResizerInner({
|
|
|
85
85
|
return /*#__PURE__*/_jsx(BlockPopoverCover, {
|
|
86
86
|
className: "block-editor-grid-item-resizer",
|
|
87
87
|
clientId: clientId,
|
|
88
|
-
__unstablePopoverSlot: "block-
|
|
88
|
+
__unstablePopoverSlot: "__unstable-block-tools-after",
|
|
89
89
|
additionalStyles: styles,
|
|
90
90
|
children: /*#__PURE__*/_jsx(ResizableBox, {
|
|
91
91
|
className: "block-editor-grid-item-resizer__box",
|
|
@@ -105,6 +105,18 @@ function GridItemResizerInner({
|
|
|
105
105
|
},
|
|
106
106
|
bounds: bounds,
|
|
107
107
|
boundsByDirection: true,
|
|
108
|
+
onPointerDown: ({
|
|
109
|
+
target,
|
|
110
|
+
pointerId
|
|
111
|
+
}) => {
|
|
112
|
+
/*
|
|
113
|
+
* Captures the pointer to avoid hiccups while dragging over objects
|
|
114
|
+
* like iframes and ensures that the event to end the drag is
|
|
115
|
+
* captured by the target (resize handle) whether or not it’s under
|
|
116
|
+
* the pointer.
|
|
117
|
+
*/
|
|
118
|
+
target.setPointerCapture(pointerId);
|
|
119
|
+
},
|
|
108
120
|
onResizeStart: (event, direction) => {
|
|
109
121
|
/*
|
|
110
122
|
* The container justification and alignment need to be set
|
|
@@ -112,19 +124,6 @@ function GridItemResizerInner({
|
|
|
112
124
|
* so that it resizes in the right direction.
|
|
113
125
|
*/
|
|
114
126
|
setResizeDirection(direction);
|
|
115
|
-
|
|
116
|
-
/*
|
|
117
|
-
* The mouseup event on the resize handle doesn't trigger if the mouse
|
|
118
|
-
* isn't directly above the handle, so we try to detect if it happens
|
|
119
|
-
* outside the grid and dispatch a mouseup event on the handle.
|
|
120
|
-
*/
|
|
121
|
-
blockElement.ownerDocument.addEventListener('mouseup', () => {
|
|
122
|
-
event.target.dispatchEvent(new Event('mouseup', {
|
|
123
|
-
bubbles: true
|
|
124
|
-
}));
|
|
125
|
-
}, {
|
|
126
|
-
once: true
|
|
127
|
-
});
|
|
128
127
|
},
|
|
129
128
|
onResizeStop: (event, direction, boxElement) => {
|
|
130
129
|
const columnGap = parseFloat(getComputedCSS(rootBlockElement, 'column-gap'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ResizableBox","useState","useEffect","__unstableUseBlockElement","useBlockElement","BlockPopoverCover","getComputedCSS","getGridTracks","getClosestTrack","jsx","_jsx","GridItemResizer","clientId","bounds","onChange","parentLayout","blockElement","rootBlockElement","parentElement","isManualPlacement","GridItemResizerInner","isManualGrid","window","__experimentalEnableGridInteractivity","resizeDirection","setResizeDirection","enableSide","setEnableSide","top","bottom","left","right","observer","ResizeObserver","blockClientRect","getBoundingClientRect","rootBlockClientRect","observe","disconnect","justification","alignment","styles","display","justifyContent","alignItems","className","__unstablePopoverSlot","additionalStyles","children","size","width","height","enable","bottomLeft","bottomRight","topLeft","topRight","boundsByDirection","onResizeStart","event","direction","ownerDocument","addEventListener","target","dispatchEvent","Event","bubbles","once","onResizeStop","boxElement","columnGap","parseFloat","rowGap","gridColumnTracks","gridRowTracks","rect","DOMRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","columnStart","rowStart","columnEnd","rowEnd","columnSpan","rowSpan","undefined"],"sources":["@wordpress/block-editor/src/components/grid/grid-item-resizer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ResizableBox } from '@wordpress/components';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport BlockPopoverCover from '../block-popover/cover';\nimport { getComputedCSS, getGridTracks, getClosestTrack } from './utils';\n\nexport function GridItemResizer( {\n\tclientId,\n\tbounds,\n\tonChange,\n\tparentLayout,\n} ) {\n\tconst blockElement = useBlockElement( clientId );\n\tconst rootBlockElement = blockElement?.parentElement;\n\tconst { isManualPlacement } = parentLayout;\n\n\tif ( ! blockElement || ! rootBlockElement ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<GridItemResizerInner\n\t\t\tclientId={ clientId }\n\t\t\tbounds={ bounds }\n\t\t\tblockElement={ blockElement }\n\t\t\trootBlockElement={ rootBlockElement }\n\t\t\tonChange={ onChange }\n\t\t\tisManualGrid={\n\t\t\t\tisManualPlacement &&\n\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction GridItemResizerInner( {\n\tclientId,\n\tbounds,\n\tblockElement,\n\trootBlockElement,\n\tonChange,\n\tisManualGrid,\n} ) {\n\tconst [ resizeDirection, setResizeDirection ] = useState( null );\n\tconst [ enableSide, setEnableSide ] = useState( {\n\t\ttop: false,\n\t\tbottom: false,\n\t\tleft: false,\n\t\tright: false,\n\t} );\n\n\tuseEffect( () => {\n\t\tconst observer = new window.ResizeObserver( () => {\n\t\t\tconst blockClientRect = blockElement.getBoundingClientRect();\n\t\t\tconst rootBlockClientRect =\n\t\t\t\trootBlockElement.getBoundingClientRect();\n\t\t\tsetEnableSide( {\n\t\t\t\ttop: blockClientRect.top > rootBlockClientRect.top,\n\t\t\t\tbottom: blockClientRect.bottom < rootBlockClientRect.bottom,\n\t\t\t\tleft: blockClientRect.left > rootBlockClientRect.left,\n\t\t\t\tright: blockClientRect.right < rootBlockClientRect.right,\n\t\t\t} );\n\t\t} );\n\t\tobserver.observe( blockElement );\n\t\treturn () => observer.disconnect();\n\t}, [ blockElement, rootBlockElement ] );\n\n\tconst justification = {\n\t\tright: 'flex-start',\n\t\tleft: 'flex-end',\n\t};\n\n\tconst alignment = {\n\t\ttop: 'flex-end',\n\t\tbottom: 'flex-start',\n\t};\n\n\tconst styles = {\n\t\tdisplay: 'flex',\n\t\tjustifyContent: 'center',\n\t\talignItems: 'center',\n\t\t...( justification[ resizeDirection ] && {\n\t\t\tjustifyContent: justification[ resizeDirection ],\n\t\t} ),\n\t\t...( alignment[ resizeDirection ] && {\n\t\t\talignItems: alignment[ resizeDirection ],\n\t\t} ),\n\t};\n\n\treturn (\n\t\t<BlockPopoverCover\n\t\t\tclassName=\"block-editor-grid-item-resizer\"\n\t\t\tclientId={ clientId }\n\t\t\t__unstablePopoverSlot=\"block-toolbar\"\n\t\t\tadditionalStyles={ styles }\n\t\t>\n\t\t\t<ResizableBox\n\t\t\t\tclassName=\"block-editor-grid-item-resizer__box\"\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%',\n\t\t\t\t} }\n\t\t\t\tenable={ {\n\t\t\t\t\tbottom: enableSide.bottom,\n\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\tbottomRight: false,\n\t\t\t\t\tleft: enableSide.left,\n\t\t\t\t\tright: enableSide.right,\n\t\t\t\t\ttop: enableSide.top,\n\t\t\t\t\ttopLeft: false,\n\t\t\t\t\ttopRight: false,\n\t\t\t\t} }\n\t\t\t\tbounds={ bounds }\n\t\t\t\tboundsByDirection\n\t\t\t\tonResizeStart={ ( event, direction ) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * The container justification and alignment need to be set\n\t\t\t\t\t * according to the direction the resizer is being dragged in,\n\t\t\t\t\t * so that it resizes in the right direction.\n\t\t\t\t\t */\n\t\t\t\t\tsetResizeDirection( direction );\n\n\t\t\t\t\t/*\n\t\t\t\t\t * The mouseup event on the resize handle doesn't trigger if the mouse\n\t\t\t\t\t * isn't directly above the handle, so we try to detect if it happens\n\t\t\t\t\t * outside the grid and dispatch a mouseup event on the handle.\n\t\t\t\t\t */\n\t\t\t\t\tblockElement.ownerDocument.addEventListener(\n\t\t\t\t\t\t'mouseup',\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tevent.target.dispatchEvent(\n\t\t\t\t\t\t\t\tnew Event( 'mouseup', { bubbles: true } )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ once: true }\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t\tonResizeStop={ ( event, direction, boxElement ) => {\n\t\t\t\t\tconst columnGap = parseFloat(\n\t\t\t\t\t\tgetComputedCSS( rootBlockElement, 'column-gap' )\n\t\t\t\t\t);\n\t\t\t\t\tconst rowGap = parseFloat(\n\t\t\t\t\t\tgetComputedCSS( rootBlockElement, 'row-gap' )\n\t\t\t\t\t);\n\t\t\t\t\tconst gridColumnTracks = getGridTracks(\n\t\t\t\t\t\tgetComputedCSS(\n\t\t\t\t\t\t\trootBlockElement,\n\t\t\t\t\t\t\t'grid-template-columns'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcolumnGap\n\t\t\t\t\t);\n\t\t\t\t\tconst gridRowTracks = getGridTracks(\n\t\t\t\t\t\tgetComputedCSS(\n\t\t\t\t\t\t\trootBlockElement,\n\t\t\t\t\t\t\t'grid-template-rows'\n\t\t\t\t\t\t),\n\t\t\t\t\t\trowGap\n\t\t\t\t\t);\n\t\t\t\t\tconst rect = new window.DOMRect(\n\t\t\t\t\t\tblockElement.offsetLeft + boxElement.offsetLeft,\n\t\t\t\t\t\tblockElement.offsetTop + boxElement.offsetTop,\n\t\t\t\t\t\tboxElement.offsetWidth,\n\t\t\t\t\t\tboxElement.offsetHeight\n\t\t\t\t\t);\n\t\t\t\t\tconst columnStart =\n\t\t\t\t\t\tgetClosestTrack( gridColumnTracks, rect.left ) + 1;\n\t\t\t\t\tconst rowStart =\n\t\t\t\t\t\tgetClosestTrack( gridRowTracks, rect.top ) + 1;\n\t\t\t\t\tconst columnEnd =\n\t\t\t\t\t\tgetClosestTrack( gridColumnTracks, rect.right, 'end' ) +\n\t\t\t\t\t\t1;\n\t\t\t\t\tconst rowEnd =\n\t\t\t\t\t\tgetClosestTrack( gridRowTracks, rect.bottom, 'end' ) +\n\t\t\t\t\t\t1;\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\tcolumnSpan: columnEnd - columnStart + 1,\n\t\t\t\t\t\trowSpan: rowEnd - rowStart + 1,\n\t\t\t\t\t\tcolumnStart: isManualGrid ? columnStart : undefined,\n\t\t\t\t\t\trowStart: isManualGrid ? rowStart : undefined,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</BlockPopoverCover>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ResizableBox","useState","useEffect","useBlockElement","BlockPopoverCover","getComputedCSS","getGridTracks","getClosestTrack","jsx","_jsx","GridItemResizer","clientId","bounds","onChange","parentLayout","blockElement","rootBlockElement","parentElement","isManualPlacement","GridItemResizerInner","isManualGrid","window","__experimentalEnableGridInteractivity","resizeDirection","setResizeDirection","enableSide","setEnableSide","top","bottom","left","right","observer","ResizeObserver","blockClientRect","getBoundingClientRect","rootBlockClientRect","observe","disconnect","justification","alignment","styles","display","justifyContent","alignItems","className","__unstablePopoverSlot","additionalStyles","children","size","width","height","enable","bottomLeft","bottomRight","topLeft","topRight","boundsByDirection","onPointerDown","target","pointerId","setPointerCapture","onResizeStart","event","direction","onResizeStop","boxElement","columnGap","parseFloat","rowGap","gridColumnTracks","gridRowTracks","rect","DOMRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","columnStart","rowStart","columnEnd","rowEnd","columnSpan","rowSpan","undefined"],"sources":["@wordpress/block-editor/src/components/grid/grid-item-resizer.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { ResizableBox } from '@wordpress/components';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport BlockPopoverCover from '../block-popover/cover';\nimport { getComputedCSS, getGridTracks, getClosestTrack } from './utils';\n\nexport function GridItemResizer( {\n\tclientId,\n\tbounds,\n\tonChange,\n\tparentLayout,\n} ) {\n\tconst blockElement = useBlockElement( clientId );\n\tconst rootBlockElement = blockElement?.parentElement;\n\tconst { isManualPlacement } = parentLayout;\n\n\tif ( ! blockElement || ! rootBlockElement ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<GridItemResizerInner\n\t\t\tclientId={ clientId }\n\t\t\tbounds={ bounds }\n\t\t\tblockElement={ blockElement }\n\t\t\trootBlockElement={ rootBlockElement }\n\t\t\tonChange={ onChange }\n\t\t\tisManualGrid={\n\t\t\t\tisManualPlacement &&\n\t\t\t\twindow.__experimentalEnableGridInteractivity\n\t\t\t}\n\t\t/>\n\t);\n}\n\nfunction GridItemResizerInner( {\n\tclientId,\n\tbounds,\n\tblockElement,\n\trootBlockElement,\n\tonChange,\n\tisManualGrid,\n} ) {\n\tconst [ resizeDirection, setResizeDirection ] = useState( null );\n\tconst [ enableSide, setEnableSide ] = useState( {\n\t\ttop: false,\n\t\tbottom: false,\n\t\tleft: false,\n\t\tright: false,\n\t} );\n\n\tuseEffect( () => {\n\t\tconst observer = new window.ResizeObserver( () => {\n\t\t\tconst blockClientRect = blockElement.getBoundingClientRect();\n\t\t\tconst rootBlockClientRect =\n\t\t\t\trootBlockElement.getBoundingClientRect();\n\t\t\tsetEnableSide( {\n\t\t\t\ttop: blockClientRect.top > rootBlockClientRect.top,\n\t\t\t\tbottom: blockClientRect.bottom < rootBlockClientRect.bottom,\n\t\t\t\tleft: blockClientRect.left > rootBlockClientRect.left,\n\t\t\t\tright: blockClientRect.right < rootBlockClientRect.right,\n\t\t\t} );\n\t\t} );\n\t\tobserver.observe( blockElement );\n\t\treturn () => observer.disconnect();\n\t}, [ blockElement, rootBlockElement ] );\n\n\tconst justification = {\n\t\tright: 'flex-start',\n\t\tleft: 'flex-end',\n\t};\n\n\tconst alignment = {\n\t\ttop: 'flex-end',\n\t\tbottom: 'flex-start',\n\t};\n\n\tconst styles = {\n\t\tdisplay: 'flex',\n\t\tjustifyContent: 'center',\n\t\talignItems: 'center',\n\t\t...( justification[ resizeDirection ] && {\n\t\t\tjustifyContent: justification[ resizeDirection ],\n\t\t} ),\n\t\t...( alignment[ resizeDirection ] && {\n\t\t\talignItems: alignment[ resizeDirection ],\n\t\t} ),\n\t};\n\n\treturn (\n\t\t<BlockPopoverCover\n\t\t\tclassName=\"block-editor-grid-item-resizer\"\n\t\t\tclientId={ clientId }\n\t\t\t__unstablePopoverSlot=\"__unstable-block-tools-after\"\n\t\t\tadditionalStyles={ styles }\n\t\t>\n\t\t\t<ResizableBox\n\t\t\t\tclassName=\"block-editor-grid-item-resizer__box\"\n\t\t\t\tsize={ {\n\t\t\t\t\twidth: '100%',\n\t\t\t\t\theight: '100%',\n\t\t\t\t} }\n\t\t\t\tenable={ {\n\t\t\t\t\tbottom: enableSide.bottom,\n\t\t\t\t\tbottomLeft: false,\n\t\t\t\t\tbottomRight: false,\n\t\t\t\t\tleft: enableSide.left,\n\t\t\t\t\tright: enableSide.right,\n\t\t\t\t\ttop: enableSide.top,\n\t\t\t\t\ttopLeft: false,\n\t\t\t\t\ttopRight: false,\n\t\t\t\t} }\n\t\t\t\tbounds={ bounds }\n\t\t\t\tboundsByDirection\n\t\t\t\tonPointerDown={ ( { target, pointerId } ) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * Captures the pointer to avoid hiccups while dragging over objects\n\t\t\t\t\t * like iframes and ensures that the event to end the drag is\n\t\t\t\t\t * captured by the target (resize handle) whether or not it’s under\n\t\t\t\t\t * the pointer.\n\t\t\t\t\t */\n\t\t\t\t\ttarget.setPointerCapture( pointerId );\n\t\t\t\t} }\n\t\t\t\tonResizeStart={ ( event, direction ) => {\n\t\t\t\t\t/*\n\t\t\t\t\t * The container justification and alignment need to be set\n\t\t\t\t\t * according to the direction the resizer is being dragged in,\n\t\t\t\t\t * so that it resizes in the right direction.\n\t\t\t\t\t */\n\t\t\t\t\tsetResizeDirection( direction );\n\t\t\t\t} }\n\t\t\t\tonResizeStop={ ( event, direction, boxElement ) => {\n\t\t\t\t\tconst columnGap = parseFloat(\n\t\t\t\t\t\tgetComputedCSS( rootBlockElement, 'column-gap' )\n\t\t\t\t\t);\n\t\t\t\t\tconst rowGap = parseFloat(\n\t\t\t\t\t\tgetComputedCSS( rootBlockElement, 'row-gap' )\n\t\t\t\t\t);\n\t\t\t\t\tconst gridColumnTracks = getGridTracks(\n\t\t\t\t\t\tgetComputedCSS(\n\t\t\t\t\t\t\trootBlockElement,\n\t\t\t\t\t\t\t'grid-template-columns'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcolumnGap\n\t\t\t\t\t);\n\t\t\t\t\tconst gridRowTracks = getGridTracks(\n\t\t\t\t\t\tgetComputedCSS(\n\t\t\t\t\t\t\trootBlockElement,\n\t\t\t\t\t\t\t'grid-template-rows'\n\t\t\t\t\t\t),\n\t\t\t\t\t\trowGap\n\t\t\t\t\t);\n\t\t\t\t\tconst rect = new window.DOMRect(\n\t\t\t\t\t\tblockElement.offsetLeft + boxElement.offsetLeft,\n\t\t\t\t\t\tblockElement.offsetTop + boxElement.offsetTop,\n\t\t\t\t\t\tboxElement.offsetWidth,\n\t\t\t\t\t\tboxElement.offsetHeight\n\t\t\t\t\t);\n\t\t\t\t\tconst columnStart =\n\t\t\t\t\t\tgetClosestTrack( gridColumnTracks, rect.left ) + 1;\n\t\t\t\t\tconst rowStart =\n\t\t\t\t\t\tgetClosestTrack( gridRowTracks, rect.top ) + 1;\n\t\t\t\t\tconst columnEnd =\n\t\t\t\t\t\tgetClosestTrack( gridColumnTracks, rect.right, 'end' ) +\n\t\t\t\t\t\t1;\n\t\t\t\t\tconst rowEnd =\n\t\t\t\t\t\tgetClosestTrack( gridRowTracks, rect.bottom, 'end' ) +\n\t\t\t\t\t\t1;\n\t\t\t\t\tonChange( {\n\t\t\t\t\t\tcolumnSpan: columnEnd - columnStart + 1,\n\t\t\t\t\t\trowSpan: rowEnd - rowStart + 1,\n\t\t\t\t\t\tcolumnStart: isManualGrid ? columnStart : undefined,\n\t\t\t\t\t\trowStart: isManualGrid ? rowStart : undefined,\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</BlockPopoverCover>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,7 +13,7 @@ import { __experimentalUseDropZone as useDropZone } from '@wordpress/compose';
|
|
|
13
13
|
/**
|
|
14
14
|
* Internal dependencies
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { useBlockElement } from '../block-list/use-block-props/use-block-refs';
|
|
17
17
|
import BlockPopoverCover from '../block-popover/cover';
|
|
18
18
|
import { range, GridRect, getGridInfo } from './utils';
|
|
19
19
|
import { store as blockEditorStore } from '../../store';
|
|
@@ -79,7 +79,7 @@ const GridVisualizerGrid = forwardRef(({
|
|
|
79
79
|
'is-dropping-allowed': isDroppingAllowed
|
|
80
80
|
}),
|
|
81
81
|
clientId: gridClientId,
|
|
82
|
-
__unstablePopoverSlot: "block-
|
|
82
|
+
__unstablePopoverSlot: "__unstable-block-tools-after",
|
|
83
83
|
children: /*#__PURE__*/_jsx("div", {
|
|
84
84
|
ref: ref,
|
|
85
85
|
className: "block-editor-grid-visualizer__grid",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","useState","useEffect","forwardRef","useMemo","useSelect","useDispatch","__experimentalUseDropZone","useDropZone","__unstableUseBlockElement","useBlockElement","BlockPopoverCover","range","GridRect","getGridInfo","store","blockEditorStore","useGetNumberOfBlocksBeforeCell","ButtonBlockAppender","jsx","_jsx","GridVisualizer","clientId","contentRef","parentLayout","isDistractionFree","select","getSettings","gridElement","isManualGrid","isManualPlacement","window","__experimentalEnableGridInteractivity","GridVisualizerGrid","gridClientId","ref","gridInfo","setGridInfo","isDroppingAllowed","setIsDroppingAllowed","observers","element","children","observer","ResizeObserver","observe","push","disconnect","onGlobalDrag","onGlobalDragEnd","document","addEventListener","removeEventListener","className","__unstablePopoverSlot","style","ManualGridVisualizer","Array","from","length","numItems","_","i","GridVisualizerCell","color","currentColor","highlightedRect","setHighlightedRect","gridItems","getBlocks","occupiedRects","rects","block","columnStart","rowStart","columnSpan","rowSpan","attributes","layout","numRows","map","row","numColumns","column","_highlightedRect$cont","isCellOccupied","some","rect","contains","isHighlighted","GridVisualizerDropZone","GridVisualizerAppender","boxShadow","useGridVisualizerDropZone","getBlockAttributes","getBlockRootClientId","updateBlockAttributes","moveBlocksToPosition","__unstableMarkNextChangeAsNotPersistent","getNumberOfBlocksBeforeCell","useDropZoneWithValidation","validateDrag","srcClientId","isInBounds","containsRect","onDragEnter","onDragLeave","prevHighlightedRect","onDrop","rootClientId","onSelect","getDraggedBlockClientIds"],"sources":["@wordpress/block-editor/src/components/grid/grid-visualizer.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, forwardRef, useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalUseDropZone as useDropZone } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport BlockPopoverCover from '../block-popover/cover';\nimport { range, GridRect, getGridInfo } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport { useGetNumberOfBlocksBeforeCell } from './use-get-number-of-blocks-before-cell';\nimport ButtonBlockAppender from '../button-block-appender';\n\nexport function GridVisualizer( { clientId, contentRef, parentLayout } ) {\n\tconst isDistractionFree = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().isDistractionFree,\n\t\t[]\n\t);\n\tconst gridElement = useBlockElement( clientId );\n\n\tif ( isDistractionFree || ! gridElement ) {\n\t\treturn null;\n\t}\n\n\tconst isManualGrid =\n\t\tparentLayout?.isManualPlacement &&\n\t\twindow.__experimentalEnableGridInteractivity;\n\treturn (\n\t\t<GridVisualizerGrid\n\t\t\tgridClientId={ clientId }\n\t\t\tgridElement={ gridElement }\n\t\t\tisManualGrid={ isManualGrid }\n\t\t\tref={ contentRef }\n\t\t/>\n\t);\n}\n\nconst GridVisualizerGrid = forwardRef(\n\t( { gridClientId, gridElement, isManualGrid }, ref ) => {\n\t\tconst [ gridInfo, setGridInfo ] = useState( () =>\n\t\t\tgetGridInfo( gridElement )\n\t\t);\n\t\tconst [ isDroppingAllowed, setIsDroppingAllowed ] = useState( false );\n\n\t\tuseEffect( () => {\n\t\t\tconst observers = [];\n\t\t\tfor ( const element of [ gridElement, ...gridElement.children ] ) {\n\t\t\t\tconst observer = new window.ResizeObserver( () => {\n\t\t\t\t\tsetGridInfo( getGridInfo( gridElement ) );\n\t\t\t\t} );\n\t\t\t\tobserver.observe( element );\n\t\t\t\tobservers.push( observer );\n\t\t\t}\n\t\t\treturn () => {\n\t\t\t\tfor ( const observer of observers ) {\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t}\n\t\t\t};\n\t\t}, [ gridElement ] );\n\n\t\tuseEffect( () => {\n\t\t\tfunction onGlobalDrag() {\n\t\t\t\tsetIsDroppingAllowed( true );\n\t\t\t}\n\t\t\tfunction onGlobalDragEnd() {\n\t\t\t\tsetIsDroppingAllowed( false );\n\t\t\t}\n\t\t\tdocument.addEventListener( 'drag', onGlobalDrag );\n\t\t\tdocument.addEventListener( 'dragend', onGlobalDragEnd );\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener( 'drag', onGlobalDrag );\n\t\t\t\tdocument.removeEventListener( 'dragend', onGlobalDragEnd );\n\t\t\t};\n\t\t}, [] );\n\n\t\treturn (\n\t\t\t<BlockPopoverCover\n\t\t\t\tclassName={ clsx( 'block-editor-grid-visualizer', {\n\t\t\t\t\t'is-dropping-allowed': isDroppingAllowed,\n\t\t\t\t} ) }\n\t\t\t\tclientId={ gridClientId }\n\t\t\t\t__unstablePopoverSlot=\"block-toolbar\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tclassName=\"block-editor-grid-visualizer__grid\"\n\t\t\t\t\tstyle={ gridInfo.style }\n\t\t\t\t>\n\t\t\t\t\t{ isManualGrid ? (\n\t\t\t\t\t\t<ManualGridVisualizer\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tArray.from( { length: gridInfo.numItems }, ( _, i ) => (\n\t\t\t\t\t\t\t<GridVisualizerCell\n\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\tcolor={ gridInfo.currentColor }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) )\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</BlockPopoverCover>\n\t\t);\n\t}\n);\n\nfunction ManualGridVisualizer( { gridClientId, gridInfo } ) {\n\tconst [ highlightedRect, setHighlightedRect ] = useState( null );\n\n\tconst gridItems = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlocks( gridClientId ),\n\t\t[ gridClientId ]\n\t);\n\tconst occupiedRects = useMemo( () => {\n\t\tconst rects = [];\n\t\tfor ( const block of gridItems ) {\n\t\t\tconst {\n\t\t\t\tcolumnStart,\n\t\t\t\trowStart,\n\t\t\t\tcolumnSpan = 1,\n\t\t\t\trowSpan = 1,\n\t\t\t} = block.attributes.style?.layout || {};\n\t\t\tif ( ! columnStart || ! rowStart ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\trects.push(\n\t\t\t\tnew GridRect( {\n\t\t\t\t\tcolumnStart,\n\t\t\t\t\trowStart,\n\t\t\t\t\tcolumnSpan,\n\t\t\t\t\trowSpan,\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\t\treturn rects;\n\t}, [ gridItems ] );\n\n\treturn range( 1, gridInfo.numRows ).map( ( row ) =>\n\t\trange( 1, gridInfo.numColumns ).map( ( column ) => {\n\t\t\tconst isCellOccupied = occupiedRects.some( ( rect ) =>\n\t\t\t\trect.contains( column, row )\n\t\t\t);\n\t\t\tconst isHighlighted =\n\t\t\t\thighlightedRect?.contains( column, row ) ?? false;\n\t\t\treturn (\n\t\t\t\t<GridVisualizerCell\n\t\t\t\t\tkey={ `${ row }-${ column }` }\n\t\t\t\t\tcolor={ gridInfo.currentColor }\n\t\t\t\t\tclassName={ isHighlighted && 'is-highlighted' }\n\t\t\t\t>\n\t\t\t\t\t{ isCellOccupied ? (\n\t\t\t\t\t\t<GridVisualizerDropZone\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\trow={ row }\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t\tsetHighlightedRect={ setHighlightedRect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<GridVisualizerAppender\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\trow={ row }\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t\tsetHighlightedRect={ setHighlightedRect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</GridVisualizerCell>\n\t\t\t);\n\t\t} )\n\t);\n}\n\nfunction GridVisualizerCell( { color, children, className } ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-grid-visualizer__cell',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\tstyle={ {\n\t\t\t\tboxShadow: `inset 0 0 0 1px color-mix(in srgb, ${ color } 20%, #0000)`,\n\t\t\t\tcolor,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction useGridVisualizerDropZone(\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect\n) {\n\tconst { getBlockAttributes, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tmoveBlocksToPosition,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tgridInfo.numColumns\n\t);\n\n\treturn useDropZoneWithValidation( {\n\t\tvalidateDrag( srcClientId ) {\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tconst rect = new GridRect( {\n\t\t\t\tcolumnStart: column,\n\t\t\t\trowStart: row,\n\t\t\t\tcolumnSpan: attributes.style?.layout?.columnSpan,\n\t\t\t\trowSpan: attributes.style?.layout?.rowSpan,\n\t\t\t} );\n\t\t\tconst isInBounds = new GridRect( {\n\t\t\t\tcolumnSpan: gridInfo.numColumns,\n\t\t\t\trowSpan: gridInfo.numRows,\n\t\t\t} ).containsRect( rect );\n\t\t\treturn isInBounds;\n\t\t},\n\t\tonDragEnter( srcClientId ) {\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tsetHighlightedRect(\n\t\t\t\tnew GridRect( {\n\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\trowStart: row,\n\t\t\t\t\tcolumnSpan: attributes.style?.layout?.columnSpan,\n\t\t\t\t\trowSpan: attributes.style?.layout?.rowSpan,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tonDragLeave() {\n\t\t\t// onDragEnter can be called before onDragLeave if the user moves\n\t\t\t// their mouse quickly, so only clear the highlight if it was set\n\t\t\t// by this cell.\n\t\t\tsetHighlightedRect( ( prevHighlightedRect ) =>\n\t\t\t\tprevHighlightedRect?.columnStart === column &&\n\t\t\t\tprevHighlightedRect?.rowStart === row\n\t\t\t\t\t? null\n\t\t\t\t\t: prevHighlightedRect\n\t\t\t);\n\t\t},\n\t\tonDrop( srcClientId ) {\n\t\t\tsetHighlightedRect( null );\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tupdateBlockAttributes( srcClientId, {\n\t\t\t\tstyle: {\n\t\t\t\t\t...attributes.style,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...attributes.style?.layout,\n\t\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\t\trowStart: row,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} );\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tmoveBlocksToPosition(\n\t\t\t\t[ srcClientId ],\n\t\t\t\tgetBlockRootClientId( srcClientId ),\n\t\t\t\tgridClientId,\n\t\t\t\tgetNumberOfBlocksBeforeCell( column, row )\n\t\t\t);\n\t\t},\n\t} );\n}\n\nfunction GridVisualizerDropZone( {\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect,\n} ) {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-grid-visualizer__drop-zone\"\n\t\t\tref={ useGridVisualizerDropZone(\n\t\t\t\tcolumn,\n\t\t\t\trow,\n\t\t\t\tgridClientId,\n\t\t\t\tgridInfo,\n\t\t\t\tsetHighlightedRect\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction GridVisualizerAppender( {\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect,\n} ) {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tmoveBlocksToPosition,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tgridInfo.numColumns\n\t);\n\n\treturn (\n\t\t<ButtonBlockAppender\n\t\t\trootClientId={ gridClientId }\n\t\t\tclassName=\"block-editor-grid-visualizer__appender\"\n\t\t\tref={ useGridVisualizerDropZone(\n\t\t\t\tcolumn,\n\t\t\t\trow,\n\t\t\t\tgridClientId,\n\t\t\t\tgridInfo,\n\t\t\t\tsetHighlightedRect\n\t\t\t) }\n\t\t\tstyle={ {\n\t\t\t\tcolor: gridInfo.currentColor,\n\t\t\t} }\n\t\t\tonSelect={ ( block ) => {\n\t\t\t\tif ( ! block ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\t\t\trowStart: row,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t[ block.clientId ],\n\t\t\t\t\tgridClientId,\n\t\t\t\t\tgridClientId,\n\t\t\t\t\tgetNumberOfBlocksBeforeCell( column, row )\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction useDropZoneWithValidation( {\n\tvalidateDrag,\n\tonDragEnter,\n\tonDragLeave,\n\tonDrop,\n} ) {\n\tconst { getDraggedBlockClientIds } = useSelect( blockEditorStore );\n\treturn useDropZone( {\n\t\tonDragEnter() {\n\t\t\tconst [ srcClientId ] = getDraggedBlockClientIds();\n\t\t\tif ( srcClientId && validateDrag( srcClientId ) ) {\n\t\t\t\tonDragEnter( srcClientId );\n\t\t\t}\n\t\t},\n\t\tonDragLeave() {\n\t\t\tonDragLeave();\n\t\t},\n\t\tonDrop() {\n\t\t\tconst [ srcClientId ] = getDraggedBlockClientIds();\n\t\t\tif ( srcClientId && validateDrag( srcClientId ) ) {\n\t\t\t\tonDrop( srcClientId );\n\t\t\t}\n\t\t},\n\t} );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","useState","useEffect","forwardRef","useMemo","useSelect","useDispatch","__experimentalUseDropZone","useDropZone","useBlockElement","BlockPopoverCover","range","GridRect","getGridInfo","store","blockEditorStore","useGetNumberOfBlocksBeforeCell","ButtonBlockAppender","jsx","_jsx","GridVisualizer","clientId","contentRef","parentLayout","isDistractionFree","select","getSettings","gridElement","isManualGrid","isManualPlacement","window","__experimentalEnableGridInteractivity","GridVisualizerGrid","gridClientId","ref","gridInfo","setGridInfo","isDroppingAllowed","setIsDroppingAllowed","observers","element","children","observer","ResizeObserver","observe","push","disconnect","onGlobalDrag","onGlobalDragEnd","document","addEventListener","removeEventListener","className","__unstablePopoverSlot","style","ManualGridVisualizer","Array","from","length","numItems","_","i","GridVisualizerCell","color","currentColor","highlightedRect","setHighlightedRect","gridItems","getBlocks","occupiedRects","rects","block","columnStart","rowStart","columnSpan","rowSpan","attributes","layout","numRows","map","row","numColumns","column","_highlightedRect$cont","isCellOccupied","some","rect","contains","isHighlighted","GridVisualizerDropZone","GridVisualizerAppender","boxShadow","useGridVisualizerDropZone","getBlockAttributes","getBlockRootClientId","updateBlockAttributes","moveBlocksToPosition","__unstableMarkNextChangeAsNotPersistent","getNumberOfBlocksBeforeCell","useDropZoneWithValidation","validateDrag","srcClientId","isInBounds","containsRect","onDragEnter","onDragLeave","prevHighlightedRect","onDrop","rootClientId","onSelect","getDraggedBlockClientIds"],"sources":["@wordpress/block-editor/src/components/grid/grid-visualizer.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, forwardRef, useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalUseDropZone as useDropZone } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport BlockPopoverCover from '../block-popover/cover';\nimport { range, GridRect, getGridInfo } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport { useGetNumberOfBlocksBeforeCell } from './use-get-number-of-blocks-before-cell';\nimport ButtonBlockAppender from '../button-block-appender';\n\nexport function GridVisualizer( { clientId, contentRef, parentLayout } ) {\n\tconst isDistractionFree = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().isDistractionFree,\n\t\t[]\n\t);\n\tconst gridElement = useBlockElement( clientId );\n\n\tif ( isDistractionFree || ! gridElement ) {\n\t\treturn null;\n\t}\n\n\tconst isManualGrid =\n\t\tparentLayout?.isManualPlacement &&\n\t\twindow.__experimentalEnableGridInteractivity;\n\treturn (\n\t\t<GridVisualizerGrid\n\t\t\tgridClientId={ clientId }\n\t\t\tgridElement={ gridElement }\n\t\t\tisManualGrid={ isManualGrid }\n\t\t\tref={ contentRef }\n\t\t/>\n\t);\n}\n\nconst GridVisualizerGrid = forwardRef(\n\t( { gridClientId, gridElement, isManualGrid }, ref ) => {\n\t\tconst [ gridInfo, setGridInfo ] = useState( () =>\n\t\t\tgetGridInfo( gridElement )\n\t\t);\n\t\tconst [ isDroppingAllowed, setIsDroppingAllowed ] = useState( false );\n\n\t\tuseEffect( () => {\n\t\t\tconst observers = [];\n\t\t\tfor ( const element of [ gridElement, ...gridElement.children ] ) {\n\t\t\t\tconst observer = new window.ResizeObserver( () => {\n\t\t\t\t\tsetGridInfo( getGridInfo( gridElement ) );\n\t\t\t\t} );\n\t\t\t\tobserver.observe( element );\n\t\t\t\tobservers.push( observer );\n\t\t\t}\n\t\t\treturn () => {\n\t\t\t\tfor ( const observer of observers ) {\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t}\n\t\t\t};\n\t\t}, [ gridElement ] );\n\n\t\tuseEffect( () => {\n\t\t\tfunction onGlobalDrag() {\n\t\t\t\tsetIsDroppingAllowed( true );\n\t\t\t}\n\t\t\tfunction onGlobalDragEnd() {\n\t\t\t\tsetIsDroppingAllowed( false );\n\t\t\t}\n\t\t\tdocument.addEventListener( 'drag', onGlobalDrag );\n\t\t\tdocument.addEventListener( 'dragend', onGlobalDragEnd );\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener( 'drag', onGlobalDrag );\n\t\t\t\tdocument.removeEventListener( 'dragend', onGlobalDragEnd );\n\t\t\t};\n\t\t}, [] );\n\n\t\treturn (\n\t\t\t<BlockPopoverCover\n\t\t\t\tclassName={ clsx( 'block-editor-grid-visualizer', {\n\t\t\t\t\t'is-dropping-allowed': isDroppingAllowed,\n\t\t\t\t} ) }\n\t\t\t\tclientId={ gridClientId }\n\t\t\t\t__unstablePopoverSlot=\"__unstable-block-tools-after\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tclassName=\"block-editor-grid-visualizer__grid\"\n\t\t\t\t\tstyle={ gridInfo.style }\n\t\t\t\t>\n\t\t\t\t\t{ isManualGrid ? (\n\t\t\t\t\t\t<ManualGridVisualizer\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tArray.from( { length: gridInfo.numItems }, ( _, i ) => (\n\t\t\t\t\t\t\t<GridVisualizerCell\n\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\tcolor={ gridInfo.currentColor }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) )\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</BlockPopoverCover>\n\t\t);\n\t}\n);\n\nfunction ManualGridVisualizer( { gridClientId, gridInfo } ) {\n\tconst [ highlightedRect, setHighlightedRect ] = useState( null );\n\n\tconst gridItems = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlocks( gridClientId ),\n\t\t[ gridClientId ]\n\t);\n\tconst occupiedRects = useMemo( () => {\n\t\tconst rects = [];\n\t\tfor ( const block of gridItems ) {\n\t\t\tconst {\n\t\t\t\tcolumnStart,\n\t\t\t\trowStart,\n\t\t\t\tcolumnSpan = 1,\n\t\t\t\trowSpan = 1,\n\t\t\t} = block.attributes.style?.layout || {};\n\t\t\tif ( ! columnStart || ! rowStart ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\trects.push(\n\t\t\t\tnew GridRect( {\n\t\t\t\t\tcolumnStart,\n\t\t\t\t\trowStart,\n\t\t\t\t\tcolumnSpan,\n\t\t\t\t\trowSpan,\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\t\treturn rects;\n\t}, [ gridItems ] );\n\n\treturn range( 1, gridInfo.numRows ).map( ( row ) =>\n\t\trange( 1, gridInfo.numColumns ).map( ( column ) => {\n\t\t\tconst isCellOccupied = occupiedRects.some( ( rect ) =>\n\t\t\t\trect.contains( column, row )\n\t\t\t);\n\t\t\tconst isHighlighted =\n\t\t\t\thighlightedRect?.contains( column, row ) ?? false;\n\t\t\treturn (\n\t\t\t\t<GridVisualizerCell\n\t\t\t\t\tkey={ `${ row }-${ column }` }\n\t\t\t\t\tcolor={ gridInfo.currentColor }\n\t\t\t\t\tclassName={ isHighlighted && 'is-highlighted' }\n\t\t\t\t>\n\t\t\t\t\t{ isCellOccupied ? (\n\t\t\t\t\t\t<GridVisualizerDropZone\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\trow={ row }\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t\tsetHighlightedRect={ setHighlightedRect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<GridVisualizerAppender\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\trow={ row }\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t\tsetHighlightedRect={ setHighlightedRect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</GridVisualizerCell>\n\t\t\t);\n\t\t} )\n\t);\n}\n\nfunction GridVisualizerCell( { color, children, className } ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-grid-visualizer__cell',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\tstyle={ {\n\t\t\t\tboxShadow: `inset 0 0 0 1px color-mix(in srgb, ${ color } 20%, #0000)`,\n\t\t\t\tcolor,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction useGridVisualizerDropZone(\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect\n) {\n\tconst { getBlockAttributes, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tmoveBlocksToPosition,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tgridInfo.numColumns\n\t);\n\n\treturn useDropZoneWithValidation( {\n\t\tvalidateDrag( srcClientId ) {\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tconst rect = new GridRect( {\n\t\t\t\tcolumnStart: column,\n\t\t\t\trowStart: row,\n\t\t\t\tcolumnSpan: attributes.style?.layout?.columnSpan,\n\t\t\t\trowSpan: attributes.style?.layout?.rowSpan,\n\t\t\t} );\n\t\t\tconst isInBounds = new GridRect( {\n\t\t\t\tcolumnSpan: gridInfo.numColumns,\n\t\t\t\trowSpan: gridInfo.numRows,\n\t\t\t} ).containsRect( rect );\n\t\t\treturn isInBounds;\n\t\t},\n\t\tonDragEnter( srcClientId ) {\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tsetHighlightedRect(\n\t\t\t\tnew GridRect( {\n\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\trowStart: row,\n\t\t\t\t\tcolumnSpan: attributes.style?.layout?.columnSpan,\n\t\t\t\t\trowSpan: attributes.style?.layout?.rowSpan,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tonDragLeave() {\n\t\t\t// onDragEnter can be called before onDragLeave if the user moves\n\t\t\t// their mouse quickly, so only clear the highlight if it was set\n\t\t\t// by this cell.\n\t\t\tsetHighlightedRect( ( prevHighlightedRect ) =>\n\t\t\t\tprevHighlightedRect?.columnStart === column &&\n\t\t\t\tprevHighlightedRect?.rowStart === row\n\t\t\t\t\t? null\n\t\t\t\t\t: prevHighlightedRect\n\t\t\t);\n\t\t},\n\t\tonDrop( srcClientId ) {\n\t\t\tsetHighlightedRect( null );\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tupdateBlockAttributes( srcClientId, {\n\t\t\t\tstyle: {\n\t\t\t\t\t...attributes.style,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...attributes.style?.layout,\n\t\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\t\trowStart: row,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} );\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tmoveBlocksToPosition(\n\t\t\t\t[ srcClientId ],\n\t\t\t\tgetBlockRootClientId( srcClientId ),\n\t\t\t\tgridClientId,\n\t\t\t\tgetNumberOfBlocksBeforeCell( column, row )\n\t\t\t);\n\t\t},\n\t} );\n}\n\nfunction GridVisualizerDropZone( {\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect,\n} ) {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-grid-visualizer__drop-zone\"\n\t\t\tref={ useGridVisualizerDropZone(\n\t\t\t\tcolumn,\n\t\t\t\trow,\n\t\t\t\tgridClientId,\n\t\t\t\tgridInfo,\n\t\t\t\tsetHighlightedRect\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction GridVisualizerAppender( {\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect,\n} ) {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tmoveBlocksToPosition,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tgridInfo.numColumns\n\t);\n\n\treturn (\n\t\t<ButtonBlockAppender\n\t\t\trootClientId={ gridClientId }\n\t\t\tclassName=\"block-editor-grid-visualizer__appender\"\n\t\t\tref={ useGridVisualizerDropZone(\n\t\t\t\tcolumn,\n\t\t\t\trow,\n\t\t\t\tgridClientId,\n\t\t\t\tgridInfo,\n\t\t\t\tsetHighlightedRect\n\t\t\t) }\n\t\t\tstyle={ {\n\t\t\t\tcolor: gridInfo.currentColor,\n\t\t\t} }\n\t\t\tonSelect={ ( block ) => {\n\t\t\t\tif ( ! block ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\t\t\trowStart: row,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t[ block.clientId ],\n\t\t\t\t\tgridClientId,\n\t\t\t\t\tgridClientId,\n\t\t\t\t\tgetNumberOfBlocksBeforeCell( column, row )\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction useDropZoneWithValidation( {\n\tvalidateDrag,\n\tonDragEnter,\n\tonDragLeave,\n\tonDrop,\n} ) {\n\tconst { getDraggedBlockClientIds } = useSelect( blockEditorStore );\n\treturn useDropZone( {\n\t\tonDragEnter() {\n\t\t\tconst [ srcClientId ] = getDraggedBlockClientIds();\n\t\t\tif ( srcClientId && validateDrag( srcClientId ) ) {\n\t\t\t\tonDragEnter( srcClientId );\n\t\t\t}\n\t\t},\n\t\tonDragLeave() {\n\t\t\tonDragLeave();\n\t\t},\n\t\tonDrop() {\n\t\t\tconst [ srcClientId ] = getDraggedBlockClientIds();\n\t\t\tif ( srcClientId && validateDrag( srcClientId ) ) {\n\t\t\t\tonDrop( srcClientId );\n\t\t\t}\n\t\t},\n\t} );\n}\n"],"mappings":"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","ignoreList":[]}
|