@wordpress/block-editor 14.1.0 → 14.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +1 -10
- package/build/components/block-alignment-matrix-control/index.js +2 -2
- package/build/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +8 -2
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-canvas/index.js +8 -1
- package/build/components/block-canvas/index.js.map +1 -1
- package/build/components/block-compare/block-view.js +4 -1
- package/build/components/block-compare/block-view.js.map +1 -1
- package/build/components/block-draggable/index.js +4 -4
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-draggable/use-scroll-when-dragging.js +25 -25
- package/build/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
- package/build/components/block-edit/multiple-usage-warning.js +8 -2
- package/build/components/block-edit/multiple-usage-warning.js.map +1 -1
- package/build/components/block-inspector/index.js +27 -9
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-invalid-warning.js +6 -3
- package/build/components/block-list/block-invalid-warning.js.map +1 -1
- package/build/components/block-list/block.js +5 -1
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +5 -1
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -0
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js +46 -0
- package/build/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
- package/build/components/block-lock/toolbar.js +3 -3
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-mover/button.js +4 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +4 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-navigation/dropdown.js +4 -1
- package/build/components/block-navigation/dropdown.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +1 -4
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +22 -7
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-patterns-list/index.js +11 -14
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-patterns-paging/index.js +12 -3
- package/build/components/block-patterns-paging/index.js.map +1 -1
- package/build/components/block-popover/index.js +2 -15
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-quick-navigation/index.js +4 -1
- package/build/components/block-quick-navigation/index.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +4 -0
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/index.js +22 -17
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-switcher/pattern-transformations-menu.js +1 -4
- package/build/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.js +12 -11
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +6 -2
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +8 -2
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/block-toolbar-popover.js +10 -6
- package/build/components/block-tools/block-toolbar-popover.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +2 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +4 -9
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-tools/zoom-out-popover.js +3 -4
- package/build/components/block-tools/zoom-out-popover.js.map +1 -1
- package/build/components/block-tools/zoom-out-toolbar.js +14 -5
- package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build/components/block-variation-picker/index.js +4 -1
- package/build/components/block-variation-picker/index.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +4 -1
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/button-block-appender/index.js +14 -3
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +4 -1
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/content-lock/index.js +13 -0
- package/build/components/content-lock/index.js.map +1 -0
- package/build/components/content-lock/modify-content-lock-menu-item.js +64 -0
- package/build/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
- package/build/components/editor-styles/index.js +4 -3
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +8 -12
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.js +8 -5
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/color-panel.native.js +1 -1
- package/build/components/global-styles/color-panel.native.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +34 -37
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +4 -1
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/global-styles/shadow-panel-components.js +13 -7
- package/build/components/global-styles/shadow-panel-components.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +17 -6
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/utils.js +4 -6
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-item-movers.js +2 -2
- package/build/components/grid/grid-item-movers.js.map +1 -1
- package/build/components/iframe/index.js +5 -5
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/index.js +2 -4
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +3 -3
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
- package/build/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +4 -1
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/library.js +2 -4
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +3 -3
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/media-tab/media-list.js +1 -4
- package/build/components/inserter/media-tab/media-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +8 -2
- package/build/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build/components/inserter/media-tab/media-tab.js +4 -1
- package/build/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build/components/inserter/menu.js +7 -24
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -1
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter-list-item/index.js +4 -4
- package/build/components/inserter-list-item/index.js.map +1 -1
- package/build/components/inserter-listbox/index.js +3 -7
- package/build/components/inserter-listbox/index.js.map +1 -1
- package/build/components/inserter-listbox/item.js +4 -1
- package/build/components/inserter-listbox/item.js.map +1 -1
- package/build/components/inspector-controls/groups.js +2 -0
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls-tabs/index.js +4 -1
- package/build/components/inspector-controls-tabs/index.js.map +1 -1
- package/build/components/inspector-controls-tabs/settings-tab.js +3 -1
- package/build/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build/components/inspector-popover-header/index.js +8 -2
- package/build/components/inspector-popover-header/index.js.map +1 -1
- package/build/components/letter-spacing-control/index.js +7 -4
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/link-control/index.js +19 -10
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +4 -1
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/list-view/block-select-button.js +4 -1
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/media-placeholder/index.js +28 -7
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +8 -1
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/provider/use-block-sync.js +19 -19
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/rich-text/event-listeners/paste-handler.js +12 -1
- package/build/components/rich-text/event-listeners/paste-handler.js.map +1 -1
- package/build/components/rich-text/index.js +38 -30
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-mark-persistent.js +5 -5
- package/build/components/rich-text/use-mark-persistent.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +4 -1
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/tool-selector/index.js +4 -1
- package/build/components/tool-selector/index.js.map +1 -1
- package/build/components/url-input/button.js +12 -3
- package/build/components/url-input/button.js.map +1 -1
- package/build/components/url-input/index.js +4 -1
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +4 -6
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/writing-flow/index.js +2 -1
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +4 -1
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-event-redirect.js +66 -0
- package/build/components/writing-flow/use-event-redirect.js.map +1 -0
- package/build/components/writing-flow/use-input.js +31 -1
- package/build/components/writing-flow/use-input.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +14 -1
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +20 -6
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +4 -4
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/components/writing-flow/utils.js +27 -0
- package/build/components/writing-flow/utils.js.map +1 -1
- package/build/hooks/block-bindings.js +32 -29
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/content-lock-ui.js +8 -26
- package/build/hooks/content-lock-ui.js.map +1 -1
- package/build/hooks/duotone.js +0 -4
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/layout.js +4 -1
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/spacing-visualizer.js +3 -3
- package/build/hooks/spacing-visualizer.js.map +1 -1
- package/build/hooks/style.js +1 -5
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +19 -20
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/use-zoom-out.js +7 -7
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/layouts/constrained.js +41 -41
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +4 -1
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/utils.js +1 -7
- package/build/layouts/utils.js.map +1 -1
- package/build/private-apis.js +2 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +2 -7
- package/build/store/actions.js.map +1 -1
- package/build/store/private-actions.js +1 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-keys.js +2 -1
- package/build/store/private-keys.js.map +1 -1
- package/build/store/private-selectors.js +13 -15
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +1 -8
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +19 -43
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +48 -0
- package/build/store/utils.js.map +1 -1
- package/build/utils/block-bindings.js +16 -11
- package/build/utils/block-bindings.js.map +1 -1
- package/build/utils/dom.js +101 -0
- package/build/utils/dom.js.map +1 -1
- package/build/utils/get-font-styles-and-weights.js +4 -4
- package/build/utils/get-font-styles-and-weights.js.map +1 -1
- package/build/utils/transform-styles/index.js +120 -16
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +8 -2
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-canvas/index.js +9 -1
- package/build-module/components/block-canvas/index.js.map +1 -1
- package/build-module/components/block-compare/block-view.js +4 -1
- package/build-module/components/block-compare/block-view.js.map +1 -1
- package/build-module/components/block-draggable/index.js +4 -4
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-draggable/use-scroll-when-dragging.js +25 -25
- package/build-module/components/block-draggable/use-scroll-when-dragging.js.map +1 -1
- package/build-module/components/block-edit/multiple-usage-warning.js +8 -2
- package/build-module/components/block-edit/multiple-usage-warning.js.map +1 -1
- package/build-module/components/block-inspector/index.js +27 -9
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-invalid-warning.js +6 -3
- package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
- package/build-module/components/block-list/block.js +5 -1
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +5 -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-focus-first-element.js +1 -0
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js +40 -0
- package/build-module/components/block-list/use-block-props/use-zoom-out-mode-exit.js.map +1 -0
- package/build-module/components/block-lock/toolbar.js +3 -3
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-navigation/dropdown.js +4 -1
- package/build-module/components/block-navigation/dropdown.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +1 -4
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +23 -8
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +11 -14
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-patterns-paging/index.js +12 -3
- package/build-module/components/block-patterns-paging/index.js.map +1 -1
- package/build-module/components/block-popover/index.js +2 -15
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-quick-navigation/index.js +4 -1
- package/build-module/components/block-quick-navigation/index.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +4 -0
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +22 -17
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-switcher/pattern-transformations-menu.js +1 -4
- package/build-module/components/block-switcher/pattern-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +12 -11
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +6 -2
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +8 -2
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/block-toolbar-popover.js +10 -6
- package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +2 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +4 -9
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-popover.js +3 -4
- package/build-module/components/block-tools/zoom-out-popover.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js +15 -6
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build-module/components/block-variation-picker/index.js +4 -1
- package/build-module/components/block-variation-picker/index.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +4 -1
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/button-block-appender/index.js +15 -4
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +4 -1
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/content-lock/index.js +2 -0
- package/build-module/components/content-lock/index.js.map +1 -0
- package/build-module/components/content-lock/modify-content-lock-menu-item.js +57 -0
- package/build-module/components/content-lock/modify-content-lock-menu-item.js.map +1 -0
- package/build-module/components/editor-styles/index.js +4 -3
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +8 -12
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +7 -4
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/color-panel.native.js +2 -2
- package/build-module/components/global-styles/color-panel.native.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +36 -39
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +4 -1
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/global-styles/shadow-panel-components.js +13 -7
- package/build-module/components/global-styles/shadow-panel-components.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +17 -6
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/utils.js +4 -6
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-item-movers.js +3 -3
- package/build-module/components/grid/grid-item-movers.js.map +1 -1
- package/build-module/components/iframe/index.js +5 -5
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +2 -4
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +3 -3
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +4 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +4 -1
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -4
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +3 -3
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-list.js +1 -4
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +8 -2
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-tab.js +4 -1
- package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
- package/build-module/components/inserter/menu.js +7 -24
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +4 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter-list-item/index.js +4 -4
- package/build-module/components/inserter-list-item/index.js.map +1 -1
- package/build-module/components/inserter-listbox/index.js +3 -7
- package/build-module/components/inserter-listbox/index.js.map +1 -1
- package/build-module/components/inserter-listbox/item.js +4 -1
- package/build-module/components/inserter-listbox/item.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +2 -0
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/index.js +4 -1
- package/build-module/components/inspector-controls-tabs/index.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/settings-tab.js +3 -1
- package/build-module/components/inspector-controls-tabs/settings-tab.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js +2 -1
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.js.map +1 -1
- package/build-module/components/inspector-popover-header/index.js +8 -2
- package/build-module/components/inspector-popover-header/index.js.map +1 -1
- package/build-module/components/letter-spacing-control/index.js +7 -4
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/link-control/index.js +19 -10
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +4 -1
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +4 -1
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +28 -7
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +8 -1
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +19 -19
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/paste-handler.js +12 -1
- package/build-module/components/rich-text/event-listeners/paste-handler.js.map +1 -1
- package/build-module/components/rich-text/index.js +39 -31
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-mark-persistent.js +5 -5
- package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +4 -1
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/tool-selector/index.js +4 -1
- package/build-module/components/tool-selector/index.js.map +1 -1
- package/build-module/components/url-input/button.js +12 -3
- package/build-module/components/url-input/button.js.map +1 -1
- package/build-module/components/url-input/index.js +4 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +4 -6
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/writing-flow/index.js +2 -1
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +4 -1
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-event-redirect.js +60 -0
- package/build-module/components/writing-flow/use-event-redirect.js.map +1 -0
- package/build-module/components/writing-flow/use-input.js +31 -1
- package/build-module/components/writing-flow/use-input.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +14 -1
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +16 -2
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +4 -4
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/components/writing-flow/utils.js +26 -0
- package/build-module/components/writing-flow/utils.js.map +1 -1
- package/build-module/hooks/block-bindings.js +34 -31
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +10 -30
- package/build-module/hooks/content-lock-ui.js.map +1 -1
- package/build-module/hooks/duotone.js +0 -4
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/layout.js +4 -1
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/spacing-visualizer.js +3 -3
- package/build-module/hooks/spacing-visualizer.js.map +1 -1
- package/build-module/hooks/style.js +1 -5
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +19 -20
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +7 -7
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/layouts/constrained.js +43 -43
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +4 -1
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/utils.js +1 -7
- package/build-module/layouts/utils.js.map +1 -1
- package/build-module/private-apis.js +3 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +2 -7
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-actions.js +1 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-keys.js +1 -0
- package/build-module/store/private-keys.js.map +1 -1
- package/build-module/store/private-selectors.js +12 -15
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +1 -7
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +22 -46
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +46 -0
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/block-bindings.js +17 -12
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-module/utils/dom.js +99 -0
- package/build-module/utils/dom.js.map +1 -1
- package/build-module/utils/get-font-styles-and-weights.js +4 -4
- package/build-module/utils/get-font-styles-and-weights.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +120 -16
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +2 -11
- package/build-style/content.css +2 -11
- package/build-style/style-rtl.css +17 -38
- package/build-style/style.css +17 -38
- package/build-types/utils/dom.d.ts +25 -0
- package/build-types/utils/dom.d.ts.map +1 -1
- package/package.json +34 -32
- package/src/components/block-alignment-matrix-control/index.js +1 -1
- package/src/components/block-breadcrumb/index.js +4 -0
- package/src/components/block-breadcrumb/style.scss +1 -1
- package/src/components/block-canvas/index.js +9 -1
- package/src/components/block-compare/block-view.js +7 -1
- package/src/components/block-draggable/content.scss +1 -1
- package/src/components/block-draggable/index.js +4 -4
- package/src/components/block-draggable/style.scss +1 -1
- package/src/components/block-draggable/use-scroll-when-dragging.js +25 -25
- package/src/components/block-edit/multiple-usage-warning.js +4 -0
- package/src/components/block-inspector/index.js +22 -6
- package/src/components/block-list/block-invalid-warning.js +4 -2
- package/src/components/block-list/block.js +6 -2
- package/src/components/block-list/content.scss +2 -3
- package/src/components/block-list/use-block-props/index.js +3 -0
- package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -0
- package/src/components/block-list/use-block-props/use-zoom-out-mode-exit.js +44 -0
- package/src/components/block-lock/style.scss +1 -1
- package/src/components/block-lock/toolbar.js +3 -3
- package/src/components/block-mover/button.js +2 -0
- package/src/components/block-mover/index.js +2 -0
- package/src/components/block-mover/style.scss +1 -1
- package/src/components/block-navigation/dropdown.js +2 -0
- package/src/components/block-pattern-setup/index.js +3 -7
- package/src/components/block-pattern-setup/setup-toolbar.js +17 -4
- package/src/components/block-pattern-setup/style.scss +2 -2
- package/src/components/block-patterns-list/index.js +15 -13
- package/src/components/block-patterns-list/style.scss +2 -2
- package/src/components/block-patterns-paging/index.js +6 -0
- package/src/components/block-popover/index.js +7 -28
- package/src/components/block-popover/style.scss +1 -1
- package/src/components/block-quick-navigation/index.js +2 -0
- package/src/components/block-settings-menu-controls/index.js +7 -1
- package/src/components/block-switcher/index.js +26 -20
- package/src/components/block-switcher/pattern-transformations-menu.js +3 -7
- package/src/components/block-switcher/style.scss +5 -6
- package/src/components/block-toolbar/index.js +17 -8
- package/src/components/block-toolbar/shuffle.js +9 -7
- package/src/components/block-tools/block-selection-button.js +4 -0
- package/src/components/block-tools/block-toolbar-popover.js +10 -6
- package/src/components/block-tools/style.scss +3 -4
- package/src/components/block-tools/use-block-toolbar-popover-props.js +2 -1
- package/src/components/block-tools/zoom-out-mode-inserters.js +2 -5
- package/src/components/block-tools/zoom-out-popover.js +3 -7
- package/src/components/block-tools/zoom-out-toolbar.js +20 -6
- package/src/components/block-variation-picker/README.md +2 -2
- package/src/components/block-variation-picker/index.js +6 -1
- package/src/components/block-variation-transforms/index.js +2 -0
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/button-block-appender/content.scss +0 -1
- package/src/components/button-block-appender/index.js +14 -3
- package/src/components/color-palette/test/control.js +15 -2
- package/src/components/colors-gradients/dropdown.js +5 -1
- package/src/components/colors-gradients/style.scss +4 -4
- package/src/components/content-lock/index.js +1 -0
- package/src/components/content-lock/modify-content-lock-menu-item.js +58 -0
- package/src/components/default-block-appender/content.scss +0 -1
- package/src/components/editor-styles/index.js +4 -3
- package/src/components/global-styles/background-panel.js +6 -14
- package/src/components/global-styles/color-panel.js +8 -4
- package/src/components/global-styles/color-panel.native.js +2 -2
- package/src/components/global-styles/dimensions-panel.js +40 -40
- package/src/components/global-styles/filters-panel.js +5 -1
- package/src/components/global-styles/shadow-panel-components.js +12 -8
- package/src/components/global-styles/style.scss +3 -4
- package/src/components/global-styles/test/typography-utils.js +96 -5
- package/src/components/global-styles/test/utils.js +10 -0
- package/src/components/global-styles/typography-utils.js +22 -6
- package/src/components/global-styles/utils.js +4 -6
- package/src/components/grid/grid-item-movers.js +3 -3
- package/src/components/grid/style.scss +1 -1
- package/src/components/iframe/index.js +5 -5
- package/src/components/inner-blocks/index.js +2 -2
- package/src/components/inner-blocks/use-inner-block-template-sync.js +3 -3
- package/src/components/inserter/block-patterns-explorer/pattern-explorer-sidebar.js +2 -0
- package/src/components/inserter/block-patterns-tab/index.js +2 -0
- package/src/components/inserter/library.js +0 -2
- package/src/components/inserter/media-tab/hooks.js +3 -3
- package/src/components/inserter/media-tab/media-list.js +1 -4
- package/src/components/inserter/media-tab/media-preview.js +12 -2
- package/src/components/inserter/media-tab/media-tab.js +2 -0
- package/src/components/inserter/menu.js +15 -29
- package/src/components/inserter/quick-inserter.js +2 -0
- package/src/components/inserter/style.scss +6 -8
- package/src/components/inserter-list-item/index.js +4 -4
- package/src/components/inserter-list-item/style.scss +1 -3
- package/src/components/inserter-listbox/index.js +2 -8
- package/src/components/inserter-listbox/item.js +9 -1
- package/src/components/inspector-controls/groups.js +2 -0
- package/src/components/inspector-controls-tabs/index.js +2 -0
- package/src/components/inspector-controls-tabs/settings-tab.js +1 -0
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +5 -2
- package/src/components/inspector-popover-header/index.js +4 -0
- package/src/components/letter-spacing-control/README.md +8 -1
- package/src/components/letter-spacing-control/index.js +7 -4
- package/src/components/link-control/index.js +17 -8
- package/src/components/link-control/settings-drawer.js +2 -0
- package/src/components/link-control/style.scss +1 -3
- package/src/components/list-view/block-select-button.js +2 -0
- package/src/components/list-view/style.scss +14 -16
- package/src/components/media-placeholder/index.js +14 -0
- package/src/components/media-replace-flow/index.js +12 -1
- package/src/components/provider/use-block-sync.js +20 -20
- package/src/components/responsive-block-control/README.md +3 -27
- package/src/components/rich-text/content.scss +1 -1
- package/src/components/rich-text/event-listeners/paste-handler.js +6 -1
- package/src/components/rich-text/index.js +54 -41
- package/src/components/rich-text/style.scss +1 -1
- package/src/components/rich-text/use-mark-persistent.js +5 -5
- package/src/components/skip-to-selected-block/index.js +2 -0
- package/src/components/spacing-sizes-control/style.scss +1 -0
- package/src/components/tool-selector/index.js +2 -0
- package/src/components/url-input/button.js +6 -0
- package/src/components/url-input/index.js +2 -0
- package/src/components/url-popover/stories/index.story.js +7 -1
- package/src/components/use-block-drop-zone/index.js +4 -4
- package/src/components/warning/content.scss +3 -10
- package/src/components/writing-flow/index.js +2 -0
- package/src/components/writing-flow/use-arrow-nav.js +9 -2
- package/src/components/writing-flow/use-event-redirect.js +72 -0
- package/src/components/writing-flow/use-input.js +36 -1
- package/src/components/writing-flow/use-select-all.js +18 -1
- package/src/components/writing-flow/use-selection-observer.js +23 -3
- package/src/components/writing-flow/use-tab-nav.js +4 -4
- package/src/components/writing-flow/utils.js +30 -0
- package/src/hooks/block-bindings.js +42 -43
- package/src/hooks/block-bindings.scss +1 -9
- package/src/hooks/content-lock-ui.js +11 -36
- package/src/hooks/duotone.js +0 -4
- package/src/hooks/layout.js +2 -0
- package/src/hooks/layout.scss +3 -11
- package/src/hooks/spacing-visualizer.js +3 -3
- package/src/hooks/style.js +1 -4
- package/src/hooks/use-bindings-attributes.js +23 -24
- package/src/hooks/use-zoom-out.js +7 -7
- package/src/layouts/constrained.js +50 -47
- package/src/layouts/flex.js +2 -0
- package/src/layouts/test/grid.js +2 -2
- package/src/layouts/test/utils.js +6 -8
- package/src/layouts/utils.js +1 -9
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +4 -6
- package/src/store/private-actions.js +1 -0
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +12 -11
- package/src/store/reducer.js +0 -5
- package/src/store/selectors.js +32 -51
- package/src/store/utils.js +50 -0
- package/src/utils/block-bindings.js +15 -16
- package/src/utils/dom.js +117 -0
- package/src/utils/get-font-styles-and-weights.js +12 -4
- package/src/utils/test/get-font-styles-and-weights.js +148 -0
- package/src/utils/test/transform-styles.js +259 -50
- package/src/utils/transform-styles/index.js +132 -21
- package/tsconfig.json +1 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/src/utils/test/__snapshots__/transform-styles.js.snap +0 -109
|
@@ -62,14 +62,16 @@ describe( 'transformStyles', () => {
|
|
|
62
62
|
],
|
|
63
63
|
'.my-namespace'
|
|
64
64
|
);
|
|
65
|
+
const expected =
|
|
66
|
+
':root :where(body) .my-namespace { color: pink; } :root :where(body) .my-namespace { color: orange; }';
|
|
65
67
|
|
|
66
|
-
expect( output ).
|
|
68
|
+
expect( output ).toEqual( [ expected ] );
|
|
67
69
|
} );
|
|
68
70
|
} );
|
|
69
71
|
|
|
70
|
-
describe( '
|
|
71
|
-
it( 'should
|
|
72
|
-
const input =
|
|
72
|
+
describe( 'root selectors', () => {
|
|
73
|
+
it( 'should append prefix after `:root :where(body)` selectors', () => {
|
|
74
|
+
const input = ':root :where(body) { color: red; }';
|
|
73
75
|
const output = transformStyles(
|
|
74
76
|
[
|
|
75
77
|
{
|
|
@@ -78,12 +80,13 @@ describe( 'transformStyles', () => {
|
|
|
78
80
|
],
|
|
79
81
|
'.my-namespace'
|
|
80
82
|
);
|
|
83
|
+
const expected = ':root :where(body) .my-namespace { color: red; }';
|
|
81
84
|
|
|
82
|
-
expect( output ).
|
|
85
|
+
expect( output ).toEqual( [ expected ] );
|
|
83
86
|
} );
|
|
84
87
|
|
|
85
|
-
it( 'should
|
|
86
|
-
const input =
|
|
88
|
+
it( 'should append prefix after `:where(body)` selectors', () => {
|
|
89
|
+
const input = ':where(body) { color: red; }';
|
|
87
90
|
const output = transformStyles(
|
|
88
91
|
[
|
|
89
92
|
{
|
|
@@ -92,27 +95,142 @@ describe( 'transformStyles', () => {
|
|
|
92
95
|
],
|
|
93
96
|
'.my-namespace'
|
|
94
97
|
);
|
|
98
|
+
const expected = ':where(body) .my-namespace { color: red; }';
|
|
95
99
|
|
|
96
|
-
expect( output ).
|
|
100
|
+
expect( output ).toEqual( [ expected ] );
|
|
97
101
|
} );
|
|
98
102
|
|
|
99
|
-
it( 'should
|
|
100
|
-
const input = `
|
|
103
|
+
it( 'should append prefix after body selectors', () => {
|
|
104
|
+
const input = `body { color: red; }`;
|
|
105
|
+
const output = transformStyles(
|
|
106
|
+
[
|
|
107
|
+
{
|
|
108
|
+
css: input,
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
'.my-namespace'
|
|
112
|
+
);
|
|
113
|
+
const expected = 'body .my-namespace { color: red; }';
|
|
114
|
+
|
|
115
|
+
expect( output ).toEqual( [ expected ] );
|
|
116
|
+
} );
|
|
117
|
+
|
|
118
|
+
it( 'should append prefix after html selectors', () => {
|
|
119
|
+
const input = `html { color: red; }`;
|
|
120
|
+
const output = transformStyles(
|
|
121
|
+
[
|
|
122
|
+
{
|
|
123
|
+
css: input,
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
'.my-namespace'
|
|
127
|
+
);
|
|
128
|
+
const expected = 'html .my-namespace { color: red; }';
|
|
129
|
+
|
|
130
|
+
expect( output ).toEqual( [ expected ] );
|
|
131
|
+
} );
|
|
132
|
+
|
|
133
|
+
it( 'should append prefix after html selectors, but before selectors that contain the word html', () => {
|
|
134
|
+
const input = `html [data-type="core/html"] .test { color: red; }`;
|
|
135
|
+
const output = transformStyles(
|
|
136
|
+
[
|
|
137
|
+
{
|
|
138
|
+
css: input,
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
'.my-namespace'
|
|
142
|
+
);
|
|
143
|
+
const expected =
|
|
144
|
+
'html .my-namespace [data-type="core/html"] .test { color: red; }';
|
|
145
|
+
|
|
146
|
+
expect( output ).toEqual( [ expected ] );
|
|
147
|
+
} );
|
|
148
|
+
|
|
149
|
+
it( 'should append prefix after :root selectors', () => {
|
|
150
|
+
const input = ':root { color: red; }';
|
|
151
|
+
const output = transformStyles(
|
|
152
|
+
[
|
|
153
|
+
{
|
|
154
|
+
css: input,
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
'.my-namespace'
|
|
158
|
+
);
|
|
159
|
+
const expected = ':root .my-namespace { color: red; }';
|
|
160
|
+
|
|
161
|
+
expect( output ).toEqual( [ expected ] );
|
|
162
|
+
} );
|
|
163
|
+
|
|
164
|
+
it( 'should append prefix after root selector when the selector contains a combinator without spaces around it', () => {
|
|
165
|
+
const input = `
|
|
166
|
+
body> .some-style { color: red; }
|
|
167
|
+
body>.some-style { color: blue; }
|
|
168
|
+
body >.some-style { color: yellow; }
|
|
169
|
+
html body > .some-style { color: purple; }
|
|
170
|
+
html body.with-class+.some-style { color: silver; }
|
|
171
|
+
html body.with-class~.some-style { color: goldenrod; }
|
|
172
|
+
`;
|
|
173
|
+
const output = transformStyles(
|
|
174
|
+
[
|
|
175
|
+
{
|
|
176
|
+
css: input,
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
'.my-namespace'
|
|
180
|
+
);
|
|
181
|
+
const expected = `
|
|
182
|
+
body .my-namespace>.some-style { color: red; }
|
|
183
|
+
body .my-namespace>.some-style { color: blue; }
|
|
184
|
+
body .my-namespace>.some-style { color: yellow; }
|
|
185
|
+
html body .my-namespace>.some-style { color: purple; }
|
|
186
|
+
html body.with-class .my-namespace+.some-style { color: silver; }
|
|
187
|
+
html body.with-class .my-namespace~.some-style { color: goldenrod; }
|
|
188
|
+
`;
|
|
189
|
+
|
|
190
|
+
expect( output ).toEqual( [ expected ] );
|
|
191
|
+
} );
|
|
192
|
+
|
|
193
|
+
it( 'appends after multiple root selectors', () => {
|
|
194
|
+
const input = `
|
|
195
|
+
:root html[lang="th"] body { color: red; }
|
|
196
|
+
:root html[lang="th"] { color: orange; }
|
|
197
|
+
:root html[lang="th"] body .some-class { color: green; }
|
|
198
|
+
`;
|
|
199
|
+
const output = transformStyles(
|
|
200
|
+
[
|
|
201
|
+
{
|
|
202
|
+
css: input,
|
|
203
|
+
},
|
|
204
|
+
],
|
|
205
|
+
'.my-namespace'
|
|
206
|
+
);
|
|
207
|
+
const expected = `
|
|
208
|
+
:root html[lang="th"] body .my-namespace { color: red; }
|
|
209
|
+
:root html[lang="th"] .my-namespace { color: orange; }
|
|
210
|
+
:root html[lang="th"] body .my-namespace .some-class { color: green; }
|
|
211
|
+
`;
|
|
212
|
+
|
|
213
|
+
expect( output ).toEqual( [ expected ] );
|
|
214
|
+
} );
|
|
215
|
+
|
|
216
|
+
it( 'should not double prefix a root selector', () => {
|
|
217
|
+
const input = 'body .my-namespace h1 { color: goldenrod; }';
|
|
101
218
|
const output = transformStyles(
|
|
102
219
|
[
|
|
103
220
|
{
|
|
104
221
|
css: input,
|
|
105
|
-
ignoredSelectors: [ 'body' ],
|
|
106
222
|
},
|
|
107
223
|
],
|
|
108
224
|
'.my-namespace'
|
|
109
225
|
);
|
|
110
226
|
|
|
111
|
-
expect( output ).
|
|
227
|
+
expect( output ).toEqual( [ input ] );
|
|
112
228
|
} );
|
|
229
|
+
} );
|
|
113
230
|
|
|
114
|
-
|
|
115
|
-
|
|
231
|
+
describe( 'selector wrap', () => {
|
|
232
|
+
it( 'should wrap regular selectors', () => {
|
|
233
|
+
const input = `h1 { color: red; }`;
|
|
116
234
|
const output = transformStyles(
|
|
117
235
|
[
|
|
118
236
|
{
|
|
@@ -121,23 +239,56 @@ describe( 'transformStyles', () => {
|
|
|
121
239
|
],
|
|
122
240
|
'.my-namespace'
|
|
123
241
|
);
|
|
242
|
+
const expected = '.my-namespace h1 { color: red; }';
|
|
124
243
|
|
|
125
|
-
expect( output ).
|
|
244
|
+
expect( output ).toEqual( [ expected ] );
|
|
245
|
+
} );
|
|
246
|
+
|
|
247
|
+
it( 'should wrap multiple selectors', () => {
|
|
248
|
+
const input = `h1, h2 { color: red; }`;
|
|
249
|
+
const output = transformStyles(
|
|
250
|
+
[
|
|
251
|
+
{
|
|
252
|
+
css: input,
|
|
253
|
+
},
|
|
254
|
+
],
|
|
255
|
+
'.my-namespace'
|
|
256
|
+
);
|
|
257
|
+
const expected =
|
|
258
|
+
'.my-namespace h1, .my-namespace h2 { color: red; }';
|
|
259
|
+
|
|
260
|
+
expect( output ).toEqual( [ expected ] );
|
|
261
|
+
} );
|
|
262
|
+
|
|
263
|
+
it( 'should ignore ignored selectors', () => {
|
|
264
|
+
const input = `h1, body { color: red; }`;
|
|
265
|
+
const output = transformStyles(
|
|
266
|
+
[
|
|
267
|
+
{
|
|
268
|
+
css: input,
|
|
269
|
+
ignoredSelectors: [ 'body' ],
|
|
270
|
+
},
|
|
271
|
+
],
|
|
272
|
+
'.my-namespace'
|
|
273
|
+
);
|
|
274
|
+
const expected = '.my-namespace h1, body { color: red; }';
|
|
275
|
+
|
|
276
|
+
expect( output ).toEqual( [ expected ] );
|
|
126
277
|
} );
|
|
127
278
|
|
|
128
279
|
it( `should not try to replace 'body' in the middle of a classname`, () => {
|
|
129
|
-
const
|
|
130
|
-
const input = `.has-body-text { color: red; }`;
|
|
280
|
+
const input = '.has-body-text { color: red; }';
|
|
131
281
|
const output = transformStyles(
|
|
132
282
|
[
|
|
133
283
|
{
|
|
134
284
|
css: input,
|
|
135
285
|
},
|
|
136
286
|
],
|
|
137
|
-
|
|
287
|
+
'.my-namespace'
|
|
138
288
|
);
|
|
289
|
+
const expected = '.my-namespace .has-body-text { color: red; }';
|
|
139
290
|
|
|
140
|
-
expect( output ).toEqual( [
|
|
291
|
+
expect( output ).toEqual( [ expected ] );
|
|
141
292
|
} );
|
|
142
293
|
|
|
143
294
|
it( 'should ignore keyframes', () => {
|
|
@@ -156,7 +307,7 @@ describe( 'transformStyles', () => {
|
|
|
156
307
|
'.my-namespace'
|
|
157
308
|
);
|
|
158
309
|
|
|
159
|
-
expect( output ).
|
|
310
|
+
expect( output ).toEqual( [ input ] );
|
|
160
311
|
} );
|
|
161
312
|
|
|
162
313
|
it( 'should wrap selectors inside container queries', () => {
|
|
@@ -172,8 +323,12 @@ describe( 'transformStyles', () => {
|
|
|
172
323
|
],
|
|
173
324
|
'.my-namespace'
|
|
174
325
|
);
|
|
326
|
+
const expected = `
|
|
327
|
+
@container (width > 400px) {
|
|
328
|
+
.my-namespace h1 { color: red; }
|
|
329
|
+
}`;
|
|
175
330
|
|
|
176
|
-
expect( output ).
|
|
331
|
+
expect( output ).toEqual( [ expected ] );
|
|
177
332
|
} );
|
|
178
333
|
|
|
179
334
|
it( 'should ignore font-face selectors', () => {
|
|
@@ -191,14 +346,11 @@ describe( 'transformStyles', () => {
|
|
|
191
346
|
'.my-namespace'
|
|
192
347
|
);
|
|
193
348
|
|
|
194
|
-
expect( output ).
|
|
349
|
+
expect( output ).toEqual( [ input ] );
|
|
195
350
|
} );
|
|
196
351
|
|
|
197
|
-
it( 'should
|
|
198
|
-
const input =
|
|
199
|
-
:root {
|
|
200
|
-
--my-color: #ff0000;
|
|
201
|
-
}`;
|
|
352
|
+
it( 'should not double wrap selectors', () => {
|
|
353
|
+
const input = ' .my-namespace h1, .red { color: red; }';
|
|
202
354
|
const output = transformStyles(
|
|
203
355
|
[
|
|
204
356
|
{
|
|
@@ -207,57 +359,111 @@ describe( 'transformStyles', () => {
|
|
|
207
359
|
],
|
|
208
360
|
'.my-namespace'
|
|
209
361
|
);
|
|
362
|
+
const expected = ` .my-namespace h1, .my-namespace .red { color: red; }`;
|
|
210
363
|
|
|
211
|
-
expect( output ).
|
|
364
|
+
expect( output ).toEqual( [ expected ] );
|
|
212
365
|
} );
|
|
213
366
|
|
|
214
|
-
it( 'should not double wrap selectors', () => {
|
|
215
|
-
const input =
|
|
367
|
+
it( 'should not double wrap selectors when the prefix can be misinterpreted as a regular expression', () => {
|
|
368
|
+
const input =
|
|
369
|
+
' :where(.editor-styles-wrapper) h1, .red { color: red; }';
|
|
370
|
+
const output = transformStyles(
|
|
371
|
+
[
|
|
372
|
+
{
|
|
373
|
+
css: input,
|
|
374
|
+
},
|
|
375
|
+
],
|
|
376
|
+
':where(.editor-styles-wrapper)'
|
|
377
|
+
);
|
|
378
|
+
const expected = ` :where(.editor-styles-wrapper) h1, :where(.editor-styles-wrapper) .red { color: red; }`;
|
|
379
|
+
|
|
380
|
+
expect( output ).toEqual( [ expected ] );
|
|
381
|
+
} );
|
|
216
382
|
|
|
383
|
+
it( 'should allow specification of ignoredSelectors per css input', () => {
|
|
384
|
+
const input = '.ignored { color: red; }';
|
|
217
385
|
const output = transformStyles(
|
|
218
386
|
[
|
|
387
|
+
{
|
|
388
|
+
css: input,
|
|
389
|
+
ignoredSelectors: [ '.ignored' ],
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
css: input,
|
|
393
|
+
ignoredSelectors: [ /^\.ignored/ ],
|
|
394
|
+
},
|
|
219
395
|
{
|
|
220
396
|
css: input,
|
|
221
397
|
},
|
|
222
398
|
],
|
|
223
|
-
'.
|
|
399
|
+
'.not'
|
|
224
400
|
);
|
|
401
|
+
const expected1 = input;
|
|
402
|
+
const expected2 = input;
|
|
403
|
+
const expected3 = '.not .ignored { color: red; }';
|
|
225
404
|
|
|
226
|
-
expect( output ).
|
|
405
|
+
expect( output ).toEqual( [ expected1, expected2, expected3 ] );
|
|
227
406
|
} );
|
|
228
407
|
|
|
229
|
-
it( '
|
|
230
|
-
const
|
|
231
|
-
const
|
|
232
|
-
const
|
|
408
|
+
it( 'allows specification of ignoredSelectors globally via the transformOptions param', () => {
|
|
409
|
+
const input1 = '.ignored { color: red; }';
|
|
410
|
+
const input2 = '.modified { color: red; }';
|
|
411
|
+
const input3 = '.regexed { color: red; }';
|
|
412
|
+
const output = transformStyles(
|
|
413
|
+
[
|
|
414
|
+
{
|
|
415
|
+
css: input1,
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
css: input2,
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
css: input3,
|
|
422
|
+
},
|
|
423
|
+
],
|
|
424
|
+
'.prefix',
|
|
425
|
+
{ ignoredSelectors: [ '.ignored', /\.regexed/ ] }
|
|
426
|
+
);
|
|
233
427
|
|
|
428
|
+
expect( output ).toEqual( [
|
|
429
|
+
input1,
|
|
430
|
+
'.prefix .modified { color: red; }',
|
|
431
|
+
input3,
|
|
432
|
+
] );
|
|
433
|
+
} );
|
|
434
|
+
|
|
435
|
+
it( 'should not try to wrap items within `:where` selectors', () => {
|
|
436
|
+
const input =
|
|
437
|
+
':where(.wp-element-button:active, .wp-block-button__link:active) { color: blue; }';
|
|
234
438
|
const output = transformStyles(
|
|
235
439
|
[
|
|
236
440
|
{
|
|
237
441
|
css: input,
|
|
238
442
|
},
|
|
239
443
|
],
|
|
240
|
-
|
|
444
|
+
'.my-namespace'
|
|
241
445
|
);
|
|
446
|
+
const expected =
|
|
447
|
+
'.my-namespace :where(.wp-element-button:active, .wp-block-button__link:active) { color: blue; }';
|
|
242
448
|
|
|
243
|
-
expect( output ).toEqual( expected );
|
|
449
|
+
expect( output ).toEqual( [ expected ] );
|
|
244
450
|
} );
|
|
245
451
|
|
|
246
452
|
it( 'should not try to prefix pseudo elements on `:where` selectors', () => {
|
|
247
|
-
const input =
|
|
248
|
-
|
|
249
|
-
const expected = [ `${ prefix } ${ input }` ];
|
|
250
|
-
|
|
453
|
+
const input =
|
|
454
|
+
':where(.wp-element-button, .wp-block-button__link)::before { color: blue; }';
|
|
251
455
|
const output = transformStyles(
|
|
252
456
|
[
|
|
253
457
|
{
|
|
254
458
|
css: input,
|
|
255
459
|
},
|
|
256
460
|
],
|
|
257
|
-
|
|
461
|
+
'.my-namespace'
|
|
258
462
|
);
|
|
463
|
+
const expected =
|
|
464
|
+
'.my-namespace :where(.wp-element-button, .wp-block-button__link)::before { color: blue; }';
|
|
259
465
|
|
|
260
|
-
expect( output ).toEqual( expected );
|
|
466
|
+
expect( output ).toEqual( [ expected ] );
|
|
261
467
|
} );
|
|
262
468
|
} );
|
|
263
469
|
|
|
@@ -274,7 +480,7 @@ describe( 'transformStyles', () => {
|
|
|
274
480
|
},
|
|
275
481
|
] );
|
|
276
482
|
|
|
277
|
-
expect( output ).
|
|
483
|
+
expect( output ).toEqual( [ input ] );
|
|
278
484
|
} );
|
|
279
485
|
|
|
280
486
|
describe( 'URL rewrite', () => {
|
|
@@ -286,8 +492,10 @@ describe( 'transformStyles', () => {
|
|
|
286
492
|
baseURL: 'http://wp-site.local/themes/gut/css/',
|
|
287
493
|
},
|
|
288
494
|
] );
|
|
495
|
+
const expected =
|
|
496
|
+
'h1 { background: url(http://wp-site.local/themes/gut/css/images/test.png); }';
|
|
289
497
|
|
|
290
|
-
expect( output ).
|
|
498
|
+
expect( output ).toEqual( [ expected ] );
|
|
291
499
|
} );
|
|
292
500
|
|
|
293
501
|
it( 'should replace complex relative paths', () => {
|
|
@@ -298,8 +506,10 @@ describe( 'transformStyles', () => {
|
|
|
298
506
|
baseURL: 'http://wp-site.local/themes/gut/css/',
|
|
299
507
|
},
|
|
300
508
|
] );
|
|
509
|
+
const expected =
|
|
510
|
+
'h1 { background: url(http://wp-site.local/themes/gut/images/test.png); }';
|
|
301
511
|
|
|
302
|
-
expect( output ).
|
|
512
|
+
expect( output ).toEqual( [ expected ] );
|
|
303
513
|
} );
|
|
304
514
|
|
|
305
515
|
it( 'should not replace absolute paths', () => {
|
|
@@ -310,8 +520,7 @@ describe( 'transformStyles', () => {
|
|
|
310
520
|
baseURL: 'http://wp-site.local/themes/gut/css/',
|
|
311
521
|
},
|
|
312
522
|
] );
|
|
313
|
-
|
|
314
|
-
expect( output ).toMatchSnapshot();
|
|
523
|
+
expect( output ).toEqual( [ input ] );
|
|
315
524
|
} );
|
|
316
525
|
|
|
317
526
|
it( 'should not replace remote paths', () => {
|
|
@@ -323,7 +532,7 @@ describe( 'transformStyles', () => {
|
|
|
323
532
|
},
|
|
324
533
|
] );
|
|
325
534
|
|
|
326
|
-
expect( output ).
|
|
535
|
+
expect( output ).toEqual( [ input ] );
|
|
327
536
|
} );
|
|
328
537
|
} );
|
|
329
538
|
} );
|
|
@@ -1,39 +1,142 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
|
+
import * as parsel from 'parsel-js';
|
|
4
5
|
import postcss, { CssSyntaxError } from 'postcss';
|
|
5
|
-
import
|
|
6
|
+
import prefixSelector from 'postcss-prefix-selector';
|
|
6
7
|
import rebaseUrl from 'postcss-urlrebase';
|
|
7
8
|
|
|
8
9
|
const cacheByWrapperSelector = new Map();
|
|
9
10
|
|
|
11
|
+
const ROOT_SELECTOR_TOKENS = [
|
|
12
|
+
{ type: 'type', content: 'body' },
|
|
13
|
+
{ type: 'type', content: 'html' },
|
|
14
|
+
{ type: 'pseudo-class', content: ':root' },
|
|
15
|
+
{ type: 'pseudo-class', content: ':where(body)' },
|
|
16
|
+
{ type: 'pseudo-class', content: ':where(:root)' },
|
|
17
|
+
{ type: 'pseudo-class', content: ':where(html)' },
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Prefixes root selectors in a way that ensures consistent specificity.
|
|
22
|
+
* This requires special handling, since prefixing a classname before
|
|
23
|
+
* html, body, or :root will generally result in an invalid selector.
|
|
24
|
+
*
|
|
25
|
+
* Some libraries will simply replace the root selector with the prefix
|
|
26
|
+
* instead, but this results in inconsistent specificity.
|
|
27
|
+
*
|
|
28
|
+
* This function instead inserts the prefix after the root tags but before
|
|
29
|
+
* any other part of the selector. This results in consistent specificity:
|
|
30
|
+
* - If a `:where()` selector is used for the prefix, all selectors output
|
|
31
|
+
* by `transformStyles` will have no specificity increase.
|
|
32
|
+
* - If a classname, id, or something else is used as the prefix, all selectors
|
|
33
|
+
* will have the same specificity bump when transformed.
|
|
34
|
+
*
|
|
35
|
+
* @param {string} prefix The prefix.
|
|
36
|
+
* @param {string} selector The selector.
|
|
37
|
+
*
|
|
38
|
+
* @return {string} The prefixed root selector.
|
|
39
|
+
*/
|
|
40
|
+
function prefixRootSelector( prefix, selector ) {
|
|
41
|
+
// Use a tokenizer, since regular expressions are unreliable.
|
|
42
|
+
const tokenized = parsel.tokenize( selector );
|
|
43
|
+
|
|
44
|
+
// Find the last token that contains a root selector by walking back
|
|
45
|
+
// through the tokens.
|
|
46
|
+
const lastRootIndex = tokenized.findLastIndex( ( { content, type } ) => {
|
|
47
|
+
return ROOT_SELECTOR_TOKENS.some(
|
|
48
|
+
( rootSelector ) =>
|
|
49
|
+
content === rootSelector.content && type === rootSelector.type
|
|
50
|
+
);
|
|
51
|
+
} );
|
|
52
|
+
|
|
53
|
+
// Walk forwards to find the combinator after the last root.
|
|
54
|
+
// This is where the root ends and the rest of the selector begins,
|
|
55
|
+
// and the index to insert before.
|
|
56
|
+
// Doing it this way takes into account that a root selector like
|
|
57
|
+
// 'body' may have additional id/class/pseudo-class/attribute-selector
|
|
58
|
+
// parts chained to it, which is difficult to quantify using a regex.
|
|
59
|
+
let insertionPoint = -1;
|
|
60
|
+
for ( let i = lastRootIndex + 1; i < tokenized.length; i++ ) {
|
|
61
|
+
if ( tokenized[ i ].type === 'combinator' ) {
|
|
62
|
+
insertionPoint = i;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Tokenize and insert the prefix with a ' ' combinator before it.
|
|
68
|
+
const tokenizedPrefix = parsel.tokenize( prefix );
|
|
69
|
+
tokenized.splice(
|
|
70
|
+
// Insert at the insertion point, or the end.
|
|
71
|
+
insertionPoint === -1 ? tokenized.length : insertionPoint,
|
|
72
|
+
0,
|
|
73
|
+
{
|
|
74
|
+
type: 'combinator',
|
|
75
|
+
content: ' ',
|
|
76
|
+
},
|
|
77
|
+
...tokenizedPrefix
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
return parsel.stringify( tokenized );
|
|
81
|
+
}
|
|
82
|
+
|
|
10
83
|
function transformStyle(
|
|
11
84
|
{ css, ignoredSelectors = [], baseURL },
|
|
12
|
-
wrapperSelector = ''
|
|
85
|
+
wrapperSelector = '',
|
|
86
|
+
transformOptions
|
|
13
87
|
) {
|
|
14
|
-
// When there is no wrapper selector
|
|
88
|
+
// When there is no wrapper selector and no base URL, there is no need
|
|
15
89
|
// to transform the CSS. This is most cases because in the default
|
|
16
90
|
// iframed editor, no wrapping is needed, and not many styles
|
|
17
91
|
// provide a base URL.
|
|
18
92
|
if ( ! wrapperSelector && ! baseURL ) {
|
|
19
93
|
return css;
|
|
20
94
|
}
|
|
21
|
-
|
|
22
|
-
.replace( /:root :where\(body\)/g, 'body' )
|
|
23
|
-
.replace( /:where\(body\)/g, 'body' );
|
|
95
|
+
|
|
24
96
|
try {
|
|
97
|
+
const excludedSelectors = [
|
|
98
|
+
...ignoredSelectors,
|
|
99
|
+
...( transformOptions?.ignoredSelectors ?? [] ),
|
|
100
|
+
wrapperSelector,
|
|
101
|
+
];
|
|
102
|
+
|
|
25
103
|
return postcss(
|
|
26
104
|
[
|
|
27
105
|
wrapperSelector &&
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
106
|
+
prefixSelector( {
|
|
107
|
+
prefix: wrapperSelector,
|
|
108
|
+
transform( prefix, selector, prefixedSelector ) {
|
|
109
|
+
// For backwards compatibility, don't use the `exclude` option
|
|
110
|
+
// of postcss-prefix-selector, instead handle it here to match
|
|
111
|
+
// the behavior of the old library (postcss-prefix-wrap) that
|
|
112
|
+
// `transformStyle` previously used.
|
|
113
|
+
if (
|
|
114
|
+
excludedSelectors.some( ( excludedSelector ) =>
|
|
115
|
+
excludedSelector instanceof RegExp
|
|
116
|
+
? selector.match( excludedSelector )
|
|
117
|
+
: selector.includes( excludedSelector )
|
|
118
|
+
)
|
|
119
|
+
) {
|
|
120
|
+
return selector;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const hasRootSelector = ROOT_SELECTOR_TOKENS.some(
|
|
124
|
+
( rootSelector ) =>
|
|
125
|
+
selector.startsWith( rootSelector.content )
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
// Reorganize root selectors such that the root part comes before the prefix,
|
|
129
|
+
// but the prefix still comes before the remaining part of the selector.
|
|
130
|
+
if ( hasRootSelector ) {
|
|
131
|
+
return prefixRootSelector( prefix, selector );
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return prefixedSelector;
|
|
135
|
+
},
|
|
33
136
|
} ),
|
|
34
137
|
baseURL && rebaseUrl( { rootUrl: baseURL } ),
|
|
35
138
|
].filter( Boolean )
|
|
36
|
-
).process(
|
|
139
|
+
).process( css, {} ).css; // use sync PostCSS API
|
|
37
140
|
} catch ( error ) {
|
|
38
141
|
if ( error instanceof CssSyntaxError ) {
|
|
39
142
|
// eslint-disable-next-line no-console
|
|
@@ -54,18 +157,26 @@ function transformStyle(
|
|
|
54
157
|
}
|
|
55
158
|
|
|
56
159
|
/**
|
|
57
|
-
* Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.
|
|
58
|
-
*
|
|
59
160
|
* @typedef {Object} EditorStyle
|
|
60
|
-
* @property {string}
|
|
61
|
-
* @property {?string}
|
|
62
|
-
* @property {?string[]}
|
|
161
|
+
* @property {string} css the CSS block(s), as a single string.
|
|
162
|
+
* @property {?string} baseURL the base URL to be used as the reference when rewritting urls.
|
|
163
|
+
* @property {?string[]} ignoredSelectors the selectors not to wrap.
|
|
164
|
+
*/
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @typedef {Object} TransformOptions
|
|
168
|
+
* @property {?string[]} ignoredSelectors the selectors not to wrap.
|
|
169
|
+
*/
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.
|
|
63
173
|
*
|
|
64
|
-
* @param
|
|
65
|
-
* @param
|
|
174
|
+
* @param {EditorStyle[]} styles CSS rules.
|
|
175
|
+
* @param {string} wrapperSelector Wrapper selector.
|
|
176
|
+
* @param {TransformOptions} transformOptions Additional options for style transformation.
|
|
66
177
|
* @return {Array} converted rules.
|
|
67
178
|
*/
|
|
68
|
-
const transformStyles = ( styles, wrapperSelector = '' ) => {
|
|
179
|
+
const transformStyles = ( styles, wrapperSelector = '', transformOptions ) => {
|
|
69
180
|
let cache = cacheByWrapperSelector.get( wrapperSelector );
|
|
70
181
|
if ( ! cache ) {
|
|
71
182
|
cache = new WeakMap();
|
|
@@ -74,7 +185,7 @@ const transformStyles = ( styles, wrapperSelector = '' ) => {
|
|
|
74
185
|
return styles.map( ( style ) => {
|
|
75
186
|
let css = cache.get( style );
|
|
76
187
|
if ( ! css ) {
|
|
77
|
-
css = transformStyle( style, wrapperSelector );
|
|
188
|
+
css = transformStyle( style, wrapperSelector, transformOptions );
|
|
78
189
|
cache.set( style, css );
|
|
79
190
|
}
|
|
80
191
|
return css;
|