@wordpress/block-editor 17.0.2-next.v.202608281122.0 → 17.1.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 +29 -1
- package/build/components/background-image-control/index.cjs +18 -1
- package/build/components/background-image-control/index.cjs.map +2 -2
- package/build/components/block-allowed-blocks/modal.cjs +2 -1
- package/build/components/block-allowed-blocks/modal.cjs.map +3 -3
- package/build/components/block-edit/edit.cjs.map +1 -1
- package/build/components/block-inspector/index.cjs +3 -12
- package/build/components/block-inspector/index.cjs.map +2 -2
- package/build/components/block-list/use-block-props/use-is-hovered.cjs +17 -4
- package/build/components/block-list/use-block-props/use-is-hovered.cjs.map +2 -2
- package/build/components/block-preview/index.cjs +1 -2
- package/build/components/block-preview/index.cjs.map +2 -2
- package/build/components/block-switcher/index.cjs +2 -1
- package/build/components/block-switcher/index.cjs.map +3 -3
- package/build/components/block-toolbar/pattern-overrides-dropdown.cjs +2 -1
- package/build/components/block-toolbar/pattern-overrides-dropdown.cjs.map +3 -3
- package/build/components/global-styles/border-panel.cjs +19 -42
- package/build/components/global-styles/border-panel.cjs.map +2 -2
- package/build/components/global-styles/image-settings-panel.cjs.map +1 -1
- package/build/components/iframe/index.cjs.map +1 -1
- package/build/components/inserter/hooks/use-patterns-paging.cjs.map +1 -1
- package/build/components/inserter-draggable-blocks/index.cjs.map +1 -1
- package/build/components/inspector-controls-tabs/content-tab.cjs +2 -3
- package/build/components/inspector-controls-tabs/content-tab.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/styles-tab.cjs +1 -3
- package/build/components/inspector-controls-tabs/styles-tab.cjs.map +2 -2
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs +1 -2
- package/build/components/inspector-controls-tabs/use-inspector-controls-tabs.cjs.map +2 -2
- package/build/components/inspector-popover-header/index.cjs +5 -4
- package/build/components/inspector-popover-header/index.cjs.map +3 -3
- package/build/components/link-control/index.cjs.map +2 -2
- package/build/components/link-control/search-input.cjs.map +1 -1
- package/build/components/list-view/block-select-button.cjs +9 -1
- package/build/components/list-view/block-select-button.cjs.map +2 -2
- package/build/components/list-view/block.cjs +2 -1
- package/build/components/list-view/block.cjs.map +2 -2
- package/build/components/list-view/use-list-view-drop-zone.cjs.map +1 -1
- package/build/components/media-replace-flow/index.cjs +4 -1
- package/build/components/media-replace-flow/index.cjs.map +2 -2
- package/build/components/navigable-toolbar/index.cjs +3 -0
- package/build/components/navigable-toolbar/index.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/enter.cjs +23 -11
- package/build/components/rich-text/event-listeners/enter.cjs.map +2 -2
- package/build/components/rich-text/event-listeners/index.cjs +0 -2
- package/build/components/rich-text/event-listeners/index.cjs.map +3 -3
- package/build/components/rich-text/event-listeners/input-rules.cjs +4 -2
- package/build/components/rich-text/event-listeners/input-rules.cjs.map +2 -2
- package/build/components/use-block-drop-zone/index.cjs.map +1 -1
- package/build/components/writing-flow/index.cjs +5 -0
- package/build/components/writing-flow/index.cjs.map +3 -3
- package/build/components/writing-flow/use-arrow-nav.cjs.map +1 -1
- package/build/components/writing-flow/use-input.cjs +12 -2
- package/build/components/writing-flow/use-input.cjs.map +2 -2
- package/build/components/writing-flow/use-tab-nav.cjs +84 -41
- package/build/components/writing-flow/use-tab-nav.cjs.map +3 -3
- package/build/components/{rich-text/event-listeners/undo-automatic-change.cjs → writing-flow/use-undo-automatic-change.cjs} +18 -15
- package/build/components/writing-flow/use-undo-automatic-change.cjs.map +7 -0
- package/build/hooks/border.cjs +2 -46
- package/build/hooks/border.cjs.map +2 -2
- package/build/hooks/generate-fields-from-attributes.cjs.map +1 -1
- package/build/hooks/index.cjs +0 -2
- package/build/hooks/index.cjs.map +3 -3
- package/build/hooks/style.cjs +2 -2
- package/build/hooks/style.cjs.map +2 -2
- package/build/layouts/flex.cjs +3 -0
- package/build/layouts/flex.cjs.map +2 -2
- package/build/store/actions.cjs +12 -9
- package/build/store/actions.cjs.map +3 -3
- package/build-module/components/background-image-control/index.mjs +18 -1
- package/build-module/components/background-image-control/index.mjs.map +2 -2
- package/build-module/components/block-allowed-blocks/modal.mjs +2 -2
- package/build-module/components/block-allowed-blocks/modal.mjs.map +2 -2
- package/build-module/components/block-edit/edit.mjs.map +1 -1
- package/build-module/components/block-inspector/index.mjs +3 -12
- package/build-module/components/block-inspector/index.mjs.map +2 -2
- package/build-module/components/block-list/use-block-props/use-is-hovered.mjs +17 -4
- package/build-module/components/block-list/use-block-props/use-is-hovered.mjs.map +2 -2
- package/build-module/components/block-preview/index.mjs +1 -2
- package/build-module/components/block-preview/index.mjs.map +2 -2
- package/build-module/components/block-switcher/index.mjs +2 -2
- package/build-module/components/block-switcher/index.mjs.map +2 -2
- package/build-module/components/block-toolbar/pattern-overrides-dropdown.mjs +3 -6
- package/build-module/components/block-toolbar/pattern-overrides-dropdown.mjs.map +2 -2
- package/build-module/components/global-styles/border-panel.mjs +19 -42
- package/build-module/components/global-styles/border-panel.mjs.map +2 -2
- package/build-module/components/global-styles/image-settings-panel.mjs.map +1 -1
- package/build-module/components/iframe/index.mjs.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-paging.mjs.map +1 -1
- package/build-module/components/inserter-draggable-blocks/index.mjs.map +1 -1
- package/build-module/components/inspector-controls-tabs/content-tab.mjs +3 -4
- package/build-module/components/inspector-controls-tabs/content-tab.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs +1 -3
- package/build-module/components/inspector-controls-tabs/styles-tab.mjs.map +2 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs +1 -2
- package/build-module/components/inspector-controls-tabs/use-inspector-controls-tabs.mjs.map +2 -2
- package/build-module/components/inspector-popover-header/index.mjs +6 -7
- package/build-module/components/inspector-popover-header/index.mjs.map +2 -2
- package/build-module/components/link-control/index.mjs.map +2 -2
- package/build-module/components/link-control/search-input.mjs.map +1 -1
- package/build-module/components/list-view/block-select-button.mjs +9 -1
- package/build-module/components/list-view/block-select-button.mjs.map +2 -2
- package/build-module/components/list-view/block.mjs +2 -1
- package/build-module/components/list-view/block.mjs.map +2 -2
- package/build-module/components/list-view/use-list-view-drop-zone.mjs.map +1 -1
- package/build-module/components/media-replace-flow/index.mjs +4 -1
- package/build-module/components/media-replace-flow/index.mjs.map +2 -2
- package/build-module/components/navigable-toolbar/index.mjs +3 -0
- package/build-module/components/navigable-toolbar/index.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/enter.mjs +23 -11
- package/build-module/components/rich-text/event-listeners/enter.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/index.mjs +0 -2
- package/build-module/components/rich-text/event-listeners/index.mjs.map +2 -2
- package/build-module/components/rich-text/event-listeners/input-rules.mjs +4 -2
- package/build-module/components/rich-text/event-listeners/input-rules.mjs.map +2 -2
- package/build-module/components/use-block-drop-zone/index.mjs.map +1 -1
- package/build-module/components/writing-flow/index.mjs +5 -0
- package/build-module/components/writing-flow/index.mjs.map +2 -2
- package/build-module/components/writing-flow/use-arrow-nav.mjs.map +1 -1
- package/build-module/components/writing-flow/use-input.mjs +12 -2
- package/build-module/components/writing-flow/use-input.mjs.map +2 -2
- package/build-module/components/writing-flow/use-tab-nav.mjs +86 -43
- package/build-module/components/writing-flow/use-tab-nav.mjs.map +3 -3
- package/build-module/components/writing-flow/use-undo-automatic-change.mjs +36 -0
- package/build-module/components/writing-flow/use-undo-automatic-change.mjs.map +7 -0
- package/build-module/hooks/border.mjs +1 -45
- package/build-module/hooks/border.mjs.map +2 -2
- package/build-module/hooks/generate-fields-from-attributes.mjs.map +1 -1
- package/build-module/hooks/index.mjs +0 -2
- package/build-module/hooks/index.mjs.map +2 -2
- package/build-module/hooks/style.mjs +3 -2
- package/build-module/hooks/style.mjs.map +2 -2
- package/build-module/layouts/flex.mjs +3 -0
- package/build-module/layouts/flex.mjs.map +2 -2
- package/build-module/store/actions.mjs +12 -9
- package/build-module/store/actions.mjs.map +2 -2
- package/build-style/content-rtl.css +9 -20
- package/build-style/content.css +9 -20
- package/build-style/style-rtl.css +100 -221
- package/build-style/style.css +100 -221
- package/package.json +42 -41
- package/src/autocompleters/test/block.js +1 -0
- package/src/components/alignment-control/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +34 -16
- package/src/components/alignment-control/test/{index.jsx → index.jsdom.test.jsx} +2 -1
- package/src/components/background-image-control/index.jsx +32 -1
- package/src/components/background-image-control/style.scss +5 -3
- package/src/components/background-image-control/test/{index.js → index.jsdom.test.js} +1 -0
- package/src/components/block-alignment-control/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +68 -13
- package/src/components/block-alignment-control/test/{index.jsx → index.jsdom.test.jsx} +2 -1
- package/src/components/block-allowed-blocks/modal.jsx +3 -3
- package/src/components/block-bindings/test/{use-block-bindings-utils.js → use-block-bindings-utils.jsdom.test.js} +2 -1
- package/src/components/block-breadcrumb/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +2 -2
- package/src/components/block-breadcrumb/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/block-compare/test/__snapshots__/{block-view.jsx.snap → block-view.jsdom.test.jsx.snap} +2 -2
- package/src/components/block-compare/test/{block-view.jsx → block-view.jsdom.test.jsx} +1 -0
- package/src/components/block-controls/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/block-edit/edit.jsx +1 -1
- package/src/components/block-edit/test/{edit.jsx → edit.jsdom.test.jsx} +1 -0
- package/src/components/block-icon/content.scss +0 -6
- package/src/components/block-icon/style.scss +0 -6
- package/src/components/block-icon/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +6 -2
- package/src/components/block-inspector/index.jsx +3 -11
- package/src/components/block-list/content.scss +4 -1
- package/src/components/block-list/use-block-props/use-is-hovered.js +24 -5
- package/src/components/block-manager/style.scss +2 -0
- package/src/components/block-mover/test/mover-description.js +1 -0
- package/src/components/block-preview/index.jsx +1 -2
- package/src/components/block-preview/test/{index.jsx → index.jsdom.test.jsx} +10 -6
- package/src/components/block-selection-clearer/test/{index.jsx → index.jsdom.test.jsx} +24 -19
- package/src/components/block-settings-menu/test/{block-mode-toggle.jsx → block-mode-toggle.jsdom.test.jsx} +5 -1
- package/src/components/block-styles/test/utils.js +1 -0
- package/src/components/block-switcher/index.jsx +3 -3
- package/src/components/block-switcher/test/{index.jsx → index.jsdom.test.jsx} +8 -4
- package/src/components/block-switcher/test/use-transformed.patterns.js +1 -0
- package/src/components/block-switcher/test/utils.js +1 -0
- package/src/components/block-title/test/{index.jsx → index.jsdom.test.jsx} +7 -3
- package/src/components/block-toolbar/pattern-overrides-dropdown.jsx +3 -6
- package/src/components/block-toolbar/style.scss +1 -1
- package/src/components/block-toolbar/test/{block-toolbar-icon.jsx → block-toolbar-icon.jsdom.test.jsx} +25 -21
- package/src/components/block-variation-picker/content.scss +5 -3
- package/src/components/block-vertical-alignment-control/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +55 -11
- package/src/components/block-vertical-alignment-control/test/{index.jsx → index.jsdom.test.jsx} +2 -1
- package/src/components/block-visibility/test/{use-block-visibility.js → use-block-visibility.jsdom.test.js} +6 -5
- package/src/components/block-visibility/test/utils.js +2 -1
- package/src/components/border-radius-control/test/{index.jsx → index.jsdom.test.jsx} +8 -1
- package/src/components/border-radius-control/test/utils.js +1 -0
- package/src/components/button-block-appender/content.scss +1 -1
- package/src/components/child-layout-control/test/{index.jsx → index.jsdom.test.jsx} +18 -15
- package/src/components/color-palette/test/{control.jsx → control.jsdom.test.jsx} +15 -4
- package/src/components/colors/test/utils.js +1 -0
- package/src/components/colors/test/{with-colors.jsx → with-colors.jsdom.test.jsx} +4 -3
- package/src/components/colors-gradients/test/{control.jsx → control.jsdom.test.jsx} +8 -3
- package/src/components/contrast-checker/test/{index.jsx → index.jsdom.test.jsx} +2 -1
- package/src/components/default-block-appender/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +4 -4
- package/src/components/default-block-appender/test/{index.jsx → index.jsdom.test.jsx} +8 -7
- package/src/components/dimensions-tool/test/{index.jsx → index.jsdom.test.jsx} +27 -22
- package/src/components/dimensions-tool/test/utils.js +1 -0
- package/src/components/duotone-control/test/{index.jsx → index.jsdom.test.jsx} +6 -3
- package/src/components/font-sizes/test/fluid-utils.js +1 -0
- package/src/components/font-sizes/test/utils.js +1 -0
- package/src/components/global-styles/border-panel.jsx +17 -40
- package/src/components/global-styles/image-settings-panel.jsx +1 -1
- package/src/components/global-styles/inheritance/test/{index.jsx → index.jsdom.test.jsx} +5 -2
- package/src/components/global-styles/test/{background-panel.jsx → background-panel.jsdom.test.jsx} +10 -5
- package/src/components/global-styles/test/{border-panel.jsx → border-panel.jsdom.test.jsx} +113 -13
- package/src/components/global-styles/test/{color-panel.jsx → color-panel.jsdom.test.jsx} +5 -0
- package/src/components/global-styles/test/{dimensions-panel.jsx → dimensions-panel.jsdom.test.jsx} +14 -14
- package/src/components/global-styles/test/{filters-panel.jsx → filters-panel.jsdom.test.jsx} +7 -4
- package/src/components/global-styles/test/{inherited-value-context-core.js → inherited-value-context-core.jsdom.test.js} +10 -9
- package/src/components/global-styles/test/{inherited-value-context.jsx → inherited-value-context.jsdom.test.jsx} +18 -17
- package/src/components/global-styles/test/{state-control-badges.jsx → state-control-badges.jsdom.test.jsx} +3 -2
- package/src/components/global-styles/test/{typography-panel-core.jsx → typography-panel-core.jsdom.test.jsx} +5 -2
- package/src/components/global-styles/test/{typography-panel.jsx → typography-panel.jsdom.test.jsx} +17 -12
- package/src/components/global-styles/test/typography-utils.js +1 -0
- package/src/components/global-styles/test/utils.js +1 -0
- package/src/components/grid/style.scss +0 -10
- package/src/components/iframe/index.jsx +3 -3
- package/src/components/image-editor/test/index.js +1 -0
- package/src/components/image-size-control/test/{index.jsx → index.jsdom.test.jsx} +8 -3
- package/src/components/inner-blocks/test/__snapshots__/index.jsdom.test.jsx.snap +15 -0
- package/src/components/inner-blocks/test/{index.jsx → index.jsdom.test.jsx} +2 -0
- package/src/components/inner-content/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/inserter/hooks/use-patterns-paging.js +1 -1
- package/src/components/inserter/media-tab/test/{hooks.js → hooks.jsdom.test.js} +12 -11
- package/src/components/inserter/media-tab/test/{media-panel.jsx → media-panel.jsdom.test.jsx} +15 -12
- package/src/components/inserter/style.scss +2 -2
- package/src/components/inserter/test/get-appender-label.js +12 -11
- package/src/components/inserter/test/search-items.js +1 -0
- package/src/components/inserter-draggable-blocks/index.jsx +1 -1
- package/src/components/inserter-list-item/style.scss +1 -0
- package/src/components/inspector-controls-tabs/content-tab.jsx +7 -14
- package/src/components/inspector-controls-tabs/styles-tab.jsx +1 -4
- package/src/components/inspector-controls-tabs/use-inspector-controls-tabs.js +1 -8
- package/src/components/inspector-popover-header/index.jsx +6 -7
- package/src/components/line-height-control/test/{index.jsx → index.jsdom.test.jsx} +3 -0
- package/src/components/link-control/index.jsx +3 -0
- package/src/components/link-control/search-input.jsx +1 -1
- package/src/components/link-control/style.scss +1 -1
- package/src/components/link-control/test/{index.jsx → index.jsdom.test.jsx} +52 -42
- package/src/components/link-control/test/is-url-like.js +1 -0
- package/src/components/link-control/test/{url-normalization.test.jsx → url-normalization.jsdom.test.jsx} +21 -20
- package/src/components/link-picker/test/{index.jsx → index.jsdom.test.jsx} +31 -30
- package/src/components/list-view/block-select-button.jsx +6 -1
- package/src/components/list-view/block.jsx +6 -4
- package/src/components/list-view/style.scss +55 -35
- package/src/components/list-view/test/use-list-view-drop-zone.js +1 -0
- package/src/components/list-view/test/utils.js +1 -0
- package/src/components/list-view/use-list-view-drop-zone.js +1 -1
- package/src/components/media-placeholder/test/get-computed-accept-attribute.js +1 -0
- package/src/components/media-placeholder/test/{index.jsx → index.jsdom.test.jsx} +8 -2
- package/src/components/media-replace-flow/index.jsx +6 -1
- package/src/components/media-replace-flow/test/{index.jsx → index.jsdom.test.jsx} +3 -0
- package/src/components/navigable-toolbar/index.jsx +4 -0
- package/src/components/navigable-toolbar/test/index.browser.test.js +50 -0
- package/src/components/panel-color-settings/test/{index.jsx → index.jsdom.test.jsx} +3 -0
- package/src/components/preset-input-control/test/{index.jsx → index.jsdom.test.jsx} +8 -2
- package/src/components/preset-input-control/test/utils.js +1 -0
- package/src/components/provider/test/{experimental-provider.jsx → experimental-provider.jsdom.test.jsx} +3 -2
- package/src/components/provider/test/{use-block-sync.jsx → use-block-sync.jsdom.test.jsx} +45 -44
- package/src/components/recursion-provider/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/responsive-block-control/style.scss +1 -0
- package/src/components/responsive-block-control/test/{index.jsx → index.jsdom.test.jsx} +6 -3
- package/src/components/rich-text/event-listeners/enter.js +29 -14
- package/src/components/rich-text/event-listeners/index.js +0 -2
- package/src/components/rich-text/event-listeners/input-rules.js +7 -2
- package/src/components/spacing-sizes-control/test/{index.jsx → index.jsdom.test.jsx} +23 -20
- package/src/components/spacing-sizes-control/test/utils.js +1 -0
- package/src/components/url-input/test/{button.jsx → button.jsdom.test.jsx} +4 -1
- package/src/components/url-input/test/fixtures/validated-input-control-deprecation.js +2 -0
- package/src/components/url-input/test/{index.jsx → index.jsdom.test.jsx} +23 -13
- package/src/components/use-block-display-information/test/{index.jsx → index.jsdom.test.jsx} +14 -10
- package/src/components/use-block-drop-zone/index.js +2 -2
- package/src/components/use-block-drop-zone/test/index.js +1 -0
- package/src/components/use-on-block-drop/test/index.js +28 -31
- package/src/components/warning/test/__snapshots__/{index.jsx.snap → index.jsdom.test.jsx.snap} +2 -2
- package/src/components/warning/test/{index.jsx → index.jsdom.test.jsx} +1 -0
- package/src/components/writing-flow/index.jsx +5 -0
- package/src/components/writing-flow/style.scss +48 -0
- package/src/components/writing-flow/test/{index.js → index.jsdom.test.js} +1 -0
- package/src/components/writing-flow/use-arrow-nav.js +2 -2
- package/src/components/writing-flow/use-input.js +29 -2
- package/src/components/writing-flow/use-tab-nav.jsx +155 -70
- package/src/components/writing-flow/use-undo-automatic-change.js +40 -0
- package/src/elements/test/{index.js → index.jsdom.test.js} +1 -0
- package/src/hooks/border.jsx +0 -53
- package/src/hooks/generate-fields-from-attributes.js +1 -1
- package/src/hooks/index.js +0 -2
- package/src/hooks/style.jsx +3 -2
- package/src/hooks/test/{align.jsx → align.jsdom.test.jsx} +1 -0
- package/src/hooks/test/allowed-blocks.js +1 -0
- package/src/hooks/test/{anchor.js → anchor.jsdom.test.js} +1 -0
- package/src/hooks/test/{auto-inspector-controls.js → auto-inspector-controls.jsdom.test.js} +1 -0
- package/src/hooks/test/{background.jsx → background.jsdom.test.jsx} +5 -2
- package/src/hooks/test/{block-style-state.js → block-style-state.jsdom.test.js} +4 -3
- package/src/hooks/test/{cross-origin-isolation.js → cross-origin-isolation.jsdom.test.js} +18 -25
- package/src/hooks/test/{custom-class-name.jsx → custom-class-name.jsdom.test.jsx} +1 -0
- package/src/hooks/test/{dimensions.js → dimensions.jsdom.test.js} +1 -0
- package/src/hooks/test/{duotone.js → duotone.jsdom.test.js} +1 -0
- package/src/hooks/test/{font-size.js → font-size.jsdom.test.js} +1 -0
- package/src/hooks/test/gap.js +1 -0
- package/src/hooks/test/generate-fields-from-attributes.js +1 -0
- package/src/hooks/test/generated-class-name.js +1 -0
- package/src/hooks/test/{inherited-value-wiring.jsx → inherited-value-wiring.jsdom.test.jsx} +49 -51
- package/src/hooks/test/{layout-child.js → layout-child.jsdom.test.js} +1 -0
- package/src/hooks/test/{layout.js → layout.jsdom.test.js} +1 -0
- package/src/hooks/test/metadata.js +1 -0
- package/src/hooks/test/preset-round-trip.js +2 -0
- package/src/hooks/test/settings.jsx +1 -0
- package/src/hooks/test/state-utils.js +1 -0
- package/src/hooks/test/{style.jsx → style.jsdom.test.jsx} +1 -0
- package/src/hooks/test/{text-align.jsx → text-align.jsdom.test.jsx} +1 -0
- package/src/hooks/test/{use-typography-props.js → use-typography-props.jsdom.test.js} +1 -0
- package/src/hooks/test/{utils.js → utils.jsdom.test.js} +1 -0
- package/src/layouts/flex.jsx +7 -0
- package/src/layouts/test/{constrained.jsx → constrained.jsdom.test.jsx} +6 -3
- package/src/layouts/test/{flex.jsx → flex.jsdom.test.jsx} +52 -2
- package/src/layouts/test/{flow.js → flow.jsdom.test.js} +1 -0
- package/src/layouts/test/{grid.jsx → grid.jsdom.test.jsx} +5 -2
- package/src/layouts/test/utils.js +1 -0
- package/src/store/actions.js +14 -12
- package/src/store/test/{actions.js → actions.jsdom.test.js} +50 -49
- package/src/store/test/array.js +1 -0
- package/src/store/test/get-block-settings.js +1 -0
- package/src/store/test/performance.js +2 -1
- package/src/store/test/private-actions.js +1 -0
- package/src/store/test/private-selectors.js +13 -3
- package/src/store/test/reducer.js +37 -8
- package/src/store/test/{registry-selectors.js → registry-selectors.jsdom.test.js} +9 -0
- package/src/store/test/{selectors.jsx → selectors.jsdom.test.jsx} +13 -3
- package/src/style.scss +1 -1
- package/src/utils/test/block-bindings.js +1 -0
- package/src/utils/test/color-values.js +1 -0
- package/src/utils/test/{dom.jsx → dom.jsdom.test.jsx} +38 -43
- package/src/utils/test/format-font-style.js +1 -0
- package/src/utils/test/format-font-weight.js +1 -0
- package/src/utils/test/get-font-styles-and-weights.js +1 -0
- package/src/utils/test/math.js +1 -0
- package/src/utils/test/object.js +1 -0
- package/src/utils/test/pasting.js +1 -0
- package/src/utils/test/selection.js +1 -0
- package/src/utils/test/sorting.js +1 -0
- package/src/utils/test/transform-styles.js +2 -1
- package/build/components/rich-text/event-listeners/undo-automatic-change.cjs.map +0 -7
- package/build/hooks/block-fields/fields-dropdown-menu.cjs +0 -67
- package/build/hooks/block-fields/fields-dropdown-menu.cjs.map +0 -7
- package/build/hooks/block-fields/index.cjs +0 -238
- package/build/hooks/block-fields/index.cjs.map +0 -7
- package/build/hooks/block-fields/link/index.cjs +0 -174
- package/build/hooks/block-fields/link/index.cjs.map +0 -7
- package/build/hooks/block-fields/media/index.cjs +0 -262
- package/build/hooks/block-fields/media/index.cjs.map +0 -7
- package/build/hooks/block-fields/rich-text/index.cjs +0 -146
- package/build/hooks/block-fields/rich-text/index.cjs.map +0 -7
- package/build/hooks/block-fields/use-inspector-popover-placement.cjs +0 -41
- package/build/hooks/block-fields/use-inspector-popover-placement.cjs.map +0 -7
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs +0 -33
- package/build-module/components/rich-text/event-listeners/undo-automatic-change.mjs.map +0 -7
- package/build-module/hooks/block-fields/fields-dropdown-menu.mjs +0 -46
- package/build-module/hooks/block-fields/fields-dropdown-menu.mjs.map +0 -7
- package/build-module/hooks/block-fields/index.mjs +0 -210
- package/build-module/hooks/block-fields/index.mjs.map +0 -7
- package/build-module/hooks/block-fields/link/index.mjs +0 -141
- package/build-module/hooks/block-fields/link/index.mjs.map +0 -7
- package/build-module/hooks/block-fields/media/index.mjs +0 -241
- package/build-module/hooks/block-fields/media/index.mjs.map +0 -7
- package/build-module/hooks/block-fields/rich-text/index.mjs +0 -115
- package/build-module/hooks/block-fields/rich-text/index.mjs.map +0 -7
- package/build-module/hooks/block-fields/use-inspector-popover-placement.mjs +0 -16
- package/build-module/hooks/block-fields/use-inspector-popover-placement.mjs.map +0 -7
- package/src/components/color-palette/test/__snapshots__/control.jsx.snap +0 -143
- package/src/components/inner-blocks/test/__snapshots__/index.jsx.snap +0 -15
- package/src/components/rich-text/event-listeners/undo-automatic-change.js +0 -39
- package/src/hooks/block-fields/fields-dropdown-menu.jsx +0 -47
- package/src/hooks/block-fields/index.jsx +0 -302
- package/src/hooks/block-fields/link/index.jsx +0 -155
- package/src/hooks/block-fields/link/styles.scss +0 -18
- package/src/hooks/block-fields/media/index.jsx +0 -269
- package/src/hooks/block-fields/media/styles.scss +0 -77
- package/src/hooks/block-fields/rich-text/index.jsx +0 -123
- package/src/hooks/block-fields/rich-text/styles.scss +0 -24
- package/src/hooks/block-fields/styles.scss +0 -33
- package/src/hooks/block-fields/use-inspector-popover-placement.js +0 -16
- /package/src/components/block-icon/test/{index.jsx → index.jsdom.test.jsx} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/writing-flow/use-tab-nav.jsx"],
|
|
4
|
-
"sourcesContent": ["import { focus, isFormElement } from '@wordpress/dom';\nimport { TAB } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useRef } from '@wordpress/element';\nimport { store as blockEditorStore } from '../../store';\nimport { isInSameBlock, isInsideRootBlock } from '../../utils/dom';\nimport { unlock } from '../../lock-unlock';\n\nexport default function useTabNav() {\n\tconst containerRef = /** @type {typeof useRef<HTMLElement>} */ ( useRef )();\n\tconst focusCaptureBeforeRef = useRef();\n\tconst focusCaptureAfterRef = useRef();\n\n\tconst {\n\t\thasMultiSelection,\n\t\tgetSelectedBlockClientId,\n\t\tgetBlockCount,\n\t\tgetBlockOrder,\n\t\tgetLastFocus,\n\t\tgetSectionRootClientId,\n\t\tisZoomOut,\n\t} = unlock( useSelect( blockEditorStore ) );\n\tconst { setLastFocus } = unlock( useDispatch( blockEditorStore ) );\n\n\t// Reference that holds the a flag for enabling or disabling\n\t// capturing on the focus capture elements.\n\tconst noCaptureRef = useRef();\n\n\tfunction onFocusCapture( event ) {\n\t\tconst canvasElement =\n\t\t\tcontainerRef.current.ownerDocument === event.target.ownerDocument\n\t\t\t\t? containerRef.current\n\t\t\t\t: containerRef.current.ownerDocument.defaultView.frameElement;\n\n\t\t// Do not capture incoming focus if set by us in WritingFlow.\n\t\tif ( noCaptureRef.current ) {\n\t\t\tnoCaptureRef.current = null;\n\t\t} else if ( hasMultiSelection() ) {\n\t\t\tcontainerRef.current.focus();\n\t\t} else if ( getSelectedBlockClientId() ) {\n\t\t\tif ( getLastFocus()?.current ) {\n\t\t\t\tgetLastFocus().current.focus();\n\t\t\t} else {\n\t\t\t\t// Handles when the last focus has not been set yet, or has been cleared by new blocks being added via the inserter.\n\t\t\t\tcontainerRef.current\n\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t`[data-block=\"${ getSelectedBlockClientId() }\"]`\n\t\t\t\t\t)\n\t\t\t\t\t.focus();\n\t\t\t}\n\t\t}\n\t\t// In \"compose\" mode without a selected ID, we want to place focus on the section root when tabbing to the canvas.\n\t\telse if ( isZoomOut() ) {\n\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\t\t\tconst sectionBlocks = getBlockOrder( sectionRootClientId );\n\n\t\t\t// If we have section within the section root, focus the first one.\n\t\t\tif ( sectionBlocks.length ) {\n\t\t\t\tcontainerRef.current\n\t\t\t\t\t.querySelector( `[data-block=\"${ sectionBlocks[ 0 ] }\"]` )\n\t\t\t\t\t.focus();\n\t\t\t}\n\t\t\t// If we don't have any section blocks, focus the section root.\n\t\t\telse if ( sectionRootClientId ) {\n\t\t\t\tcontainerRef.current\n\t\t\t\t\t.querySelector( `[data-block=\"${ sectionRootClientId }\"]` )\n\t\t\t\t\t.focus();\n\t\t\t} else {\n\t\t\t\t// If we don't have any section root, focus the canvas.\n\t\t\t\tcanvasElement.focus();\n\t\t\t}\n\t\t} else {\n\t\t\tconst isBefore =\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tevent.target.compareDocumentPosition( canvasElement ) &\n\t\t\t\tevent.target.DOCUMENT_POSITION_FOLLOWING;\n\t\t\tconst tabbables = focus.tabbable.find( containerRef.current );\n\t\t\tif ( tabbables.length ) {\n\t\t\t\tconst next = isBefore\n\t\t\t\t\t? tabbables[ 0 ]\n\t\t\t\t\t: tabbables[ tabbables.length - 1 ];\n\t\t\t\tnext.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tconst before = (\n\t\t<div\n\t\t\tref={ focusCaptureBeforeRef }\n\t\t\ttabIndex=\"0\"\n\t\t\tonFocus={ onFocusCapture }\n\t\t/>\n\t);\n\n\tconst after = (\n\t\t<div\n\t\t\tref={ focusCaptureAfterRef }\n\t\t\ttabIndex=\"0\"\n\t\t\tonFocus={ onFocusCapture }\n\t\t/>\n\t);\n\n\tconst ref = useRefEffect( ( node ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In Edit mode, Tab should focus the first tabbable element after\n\t\t\t// the content, which is normally the sidebar (with block controls)\n\t\t\t// and Shift+Tab should focus the first tabbable element before the\n\t\t\t// content, which is normally the block toolbar.\n\t\t\t// Arrow keys can be used, and Tab and arrow keys can be used in\n\t\t\t// Navigation mode (press Esc), to navigate through blocks.\n\t\t\tif ( event.keyCode !== TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// Bails in case the focus capture elements aren’t present. They\n\t\t\t\t// may be omitted to avoid silent tab stops in preview mode.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/59317\n\t\t\t\t! focusCaptureAfterRef.current ||\n\t\t\t\t! focusCaptureBeforeRef.current\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { target, shiftKey: isShift } = event;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\t\t\tconst nextTabbable = focus.tabbable[ direction ]( target );\n\n\t\t\t// We want to constrain the tabbing to the block and its child blocks.\n\t\t\t// If the preceding form element is within a different block,\n\t\t\t// such as two sibling image blocks in the placeholder state,\n\t\t\t// we want shift + tab from the first form element to move to the image\n\t\t\t// block toolbar and not the previous image block's form element.\n\t\t\tconst currentBlock = target.closest( '[data-block]' );\n\t\t\tconst isElementPartOfSelectedBlock =\n\t\t\t\tcurrentBlock &&\n\t\t\t\tnextTabbable &&\n\t\t\t\t( isInSameBlock( currentBlock, nextTabbable ) ||\n\t\t\t\t\tisInsideRootBlock( currentBlock, nextTabbable ) );\n\n\t\t\t// Allow tabbing from the block wrapper to a form element,\n\t\t\t// and between form elements rendered in a block and its child blocks,\n\t\t\t// such as inside a placeholder. Form elements are generally\n\t\t\t// meant to be UI rather than part of the content. Ideally\n\t\t\t// these are not rendered in the content and perhaps in the\n\t\t\t// future they can be rendered in an iframe or shadow DOM.\n\t\t\tif (\n\t\t\t\tisFormElement( nextTabbable ) &&\n\t\t\t\tisElementPartOfSelectedBlock\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst next = isShift ? focusCaptureBeforeRef : focusCaptureAfterRef;\n\n\t\t\t// Disable focus capturing on the focus capture element, so it\n\t\t\t// doesn't refocus this block and so it allows default behaviour\n\t\t\t// (moving focus to the next tabbable element).\n\t\t\tnoCaptureRef.current = true;\n\n\t\t\t// Focusing the focus capture element, which is located above and\n\t\t\t// below the editor, should not scroll the page all the way up or\n\t\t\t// down.\n\t\t\tnext.current.focus( { preventScroll: true } );\n\t\t}\n\n\t\tfunction onFocusOut( event ) {\n\t\t\t// `focusout` also fires when focus moves between elements within the\n\t\t\t// canvas, but only the element focus left the canvas from is of\n\t\t\t// interest. `contains` is false for a null `relatedTarget`, which is\n\t\t\t// what focus moving to another document reports.\n\t\t\tif ( ! node.contains( event.relatedTarget ) ) {\n\t\t\t\tsetLastFocus( { current: event.target } );\n\t\t\t}\n\n\t\t\tconst { ownerDocument } = node;\n\n\t\t\t// If focus disappears due to there being no blocks, move focus to\n\t\t\t// the writing flow wrapper.\n\t\t\tif (\n\t\t\t\t! event.relatedTarget &&\n\t\t\t\tevent.target.hasAttribute( 'data-block' ) &&\n\t\t\t\townerDocument.activeElement === ownerDocument.body &&\n\t\t\t\tgetBlockCount() === 0\n\t\t\t) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t}\n\n\t\t// When tabbing back to an element in block list, this event handler prevents scrolling if the\n\t\t// focus capture divs (before/after) are outside of the viewport. (For example shift+tab back to a paragraph\n\t\t// when focus is on a sidebar element. This prevents the scrollable writing area from jumping either to the\n\t\t// top or bottom of the document.\n\t\t//\n\t\t// Note that it isn't possible to disable scrolling in the onFocus event. We need to intercept this\n\t\t// earlier in the keypress handler, and call focus( { preventScroll: true } ) instead.\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus#parameters\n\t\tfunction preventScrollOnTab( event ) {\n\t\t\tif ( event.keyCode !== TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( event.target?.getAttribute( 'role' ) === 'region' ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( containerRef.current === event.target ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isShift = event.shiftKey;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\t\t\tconst target = focus.tabbable[ direction ]( event.target );\n\t\t\t// Only do something when the next tabbable is a focus capture div (before/after)\n\t\t\tif (\n\t\t\t\ttarget === focusCaptureBeforeRef.current ||\n\t\t\t\ttarget === focusCaptureAfterRef.current\n\t\t\t) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttarget.focus( { preventScroll: true } );\n\t\t\t}\n\t\t}\n\n\t\tconst { ownerDocument } = node;\n\t\tconst { defaultView } = ownerDocument;\n\t\tdefaultView.addEventListener( 'keydown', preventScrollOnTab );\n\t\tnode.addEventListener( 'keydown', onKeyDown );\n\t\tnode.addEventListener( 'focusout', onFocusOut );\n\t\treturn () => {\n\t\t\tdefaultView.removeEventListener( 'keydown', preventScrollOnTab );\n\t\t\tnode.removeEventListener( 'keydown', onKeyDown );\n\t\t\tnode.removeEventListener( 'focusout', onFocusOut );\n\t\t};\n\t}, [] );\n\n\tconst mergedRefs = useMergeRefs( [ containerRef, ref ] );\n\n\treturn [ before, mergedRefs, after ];\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAqC;AACrC,
|
|
6
|
-
"names": ["import_dom", "blockEditorStore"
|
|
4
|
+
"sourcesContent": ["import { focus, isFormElement } from '@wordpress/dom';\nimport { TAB, withIgnoreIMEEvents } from '@wordpress/keycodes';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect, useMergeRefs, useInstanceId } from '@wordpress/compose';\nimport { useRef } from '@wordpress/element';\nimport { store as blockEditorStore } from '../../store';\nimport { isInSameBlock, isInsideRootBlock } from '../../utils/dom';\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Spans the element over the canvas, so it is always at least partially in\n * view and focussing it never scrolls the content. Fixed positioning would\n * achieve that too, but makes Safari composite the scrollable canvas on a\n * layer sized to the whole document instead of the visible pane.\n */\nconst PREVENT_SCROLL_ON_FOCUS = {\n\tposition: 'absolute',\n\tinset: 0,\n\tpointerEvents: 'none',\n\toutline: 'none',\n};\n\n// Keys that move focus from the canvas stop into the canvas.\nconst ENTRY_KEYS = [ 'Enter', ' ', 'F2', 'Escape' ];\n\nexport default function useTabNav() {\n\tconst containerRef = /** @type {typeof useRef<HTMLElement>} */ ( useRef )();\n\tconst focusCaptureBeforeRef = useRef();\n\tconst focusCaptureAfterRef = useRef();\n\tconst hintId = useInstanceId(\n\t\tuseTabNav,\n\t\t'block-editor-writing-flow__canvas-stop-hint'\n\t);\n\n\tconst {\n\t\thasMultiSelection,\n\t\tgetSelectedBlockClientId,\n\t\tgetBlockCount,\n\t\tgetBlockOrder,\n\t\tgetLastFocus,\n\t\tgetSectionRootClientId,\n\t\tgetEditedContentOnlySection,\n\t\tisZoomOut,\n\t} = unlock( useSelect( blockEditorStore ) );\n\tconst { setLastFocus } = unlock( useDispatch( blockEditorStore ) );\n\n\t// Reference that holds the a flag for enabling or disabling\n\t// capturing on the focus capture elements.\n\tconst noCaptureRef = useRef();\n\n\t// The canvas is a single stop in the page's tab order, and going in is\n\t// an explicit action on it. Focus returns to the place it last left the\n\t// canvas from.\n\tfunction enterCanvas() {\n\t\t// Focus the canvas window first. The stop is in the parent document,\n\t\t// and when Firefox focuses an element in another document, it does\n\t\t// not move window focus, so the caret would be restored but key\n\t\t// presses would keep going to the parent page.\n\t\tcontainerRef.current.ownerDocument.defaultView.focus();\n\n\t\tif ( hasMultiSelection() ) {\n\t\t\tcontainerRef.current.focus();\n\t\t} else if ( getSelectedBlockClientId() ) {\n\t\t\tif ( getLastFocus()?.current ) {\n\t\t\t\tgetLastFocus().current.focus();\n\t\t\t} else {\n\t\t\t\t// Handles when the last focus has not been set yet, or has been cleared by new blocks being added via the inserter.\n\t\t\t\tcontainerRef.current\n\t\t\t\t\t.querySelector(\n\t\t\t\t\t\t`[data-block=\"${ getSelectedBlockClientId() }\"]`\n\t\t\t\t\t)\n\t\t\t\t\t.focus();\n\t\t\t}\n\t\t}\n\t\t// In \"compose\" mode without a selected ID, we want to place focus on the section root when tabbing to the canvas.\n\t\telse if ( isZoomOut() ) {\n\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\t\t\tconst sectionBlocks = getBlockOrder( sectionRootClientId );\n\n\t\t\t// If we have section within the section root, focus the first one.\n\t\t\tif ( sectionBlocks.length ) {\n\t\t\t\tcontainerRef.current\n\t\t\t\t\t.querySelector( `[data-block=\"${ sectionBlocks[ 0 ] }\"]` )\n\t\t\t\t\t.focus();\n\t\t\t}\n\t\t\t// If we don't have any section blocks, focus the section root.\n\t\t\telse if ( sectionRootClientId ) {\n\t\t\t\tcontainerRef.current\n\t\t\t\t\t.querySelector( `[data-block=\"${ sectionRootClientId }\"]` )\n\t\t\t\t\t.focus();\n\t\t\t} else {\n\t\t\t\t// If we don't have any section root, focus the canvas.\n\t\t\t\tcontainerRef.current.focus();\n\t\t\t}\n\t\t} else {\n\t\t\tconst tabbables = focus.tabbable.find( containerRef.current );\n\t\t\tif ( tabbables.length ) {\n\t\t\t\ttabbables[ 0 ].focus();\n\t\t\t} else {\n\t\t\t\t// Nothing in the canvas is tabbable. Entering still enters:\n\t\t\t\t// keys go to the canvas, and a block can be selected with\n\t\t\t\t// the arrow keys or a click.\n\t\t\t\tcontainerRef.current.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction onStopKeyDown( event ) {\n\t\tif (\n\t\t\tevent.defaultPrevented ||\n\t\t\tevent.ctrlKey ||\n\t\t\tevent.metaKey ||\n\t\t\tevent.altKey\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { key } = event;\n\n\t\tif ( ! event.shiftKey && ENTRY_KEYS.includes( key ) ) {\n\t\t\tevent.preventDefault();\n\t\t\tenterCanvas();\n\t\t\treturn;\n\t\t}\n\n\t\t// Shift+Tab leaves the canvas on its own, because the stop is the\n\t\t// first element before it. Plain Tab would move into the content,\n\t\t// so move focus to the first tabbable element past the canvas.\n\t\tif ( key === 'Tab' && ! event.shiftKey ) {\n\t\t\tevent.preventDefault();\n\t\t\tfocus.tabbable.findNext( focusCaptureAfterRef.current )?.focus();\n\t\t}\n\t}\n\n\t// Focus arriving on the stop engages the canvas right away, like a\n\t// text field that starts editing when focused. Only Escape parks\n\t// focus on the stop, giving Tab traction again: from a parked stop,\n\t// Tab moves to the interface around the canvas, not the content.\n\tfunction onStopFocus() {\n\t\tif ( noCaptureRef.current ) {\n\t\t\tnoCaptureRef.current = null;\n\t\t\treturn;\n\t\t}\n\t\tenterCanvas();\n\t}\n\n\tconst before = (\n\t\t<div\n\t\t\tref={ focusCaptureBeforeRef }\n\t\t\ttabIndex=\"0\"\n\t\t\trole=\"button\"\n\t\t\taria-label={ __( 'Editor canvas' ) }\n\t\t\taria-describedby={ hintId }\n\t\t\tclassName=\"block-editor-writing-flow__canvas-stop\"\n\t\t\tstyle={ PREVENT_SCROLL_ON_FOCUS }\n\t\t\tonFocus={ onStopFocus }\n\t\t\tonKeyDown={ onStopKeyDown }\n\t\t\t// Assistive technology activates a button with a click event,\n\t\t\t// not a key press. Pointer clicks pass through the element, so\n\t\t\t// a click can only come from such an activation.\n\t\t\tonClick={ enterCanvas }\n\t\t>\n\t\t\t{ /* The hint is also the button's description for assistive\n\t\t\t technology. Content hidden with `display: none` still\n\t\t\t works for `aria-describedby`. */ }\n\t\t\t<div\n\t\t\t\tclassName=\"block-editor-writing-flow__canvas-stop-hint\"\n\t\t\t\tid={ hintId }\n\t\t\t>\n\t\t\t\t{ __( 'Press Enter to edit the document' ) }\n\t\t\t</div>\n\t\t</div>\n\t);\n\n\t// Focus landing on the element after the canvas enters it, the same\n\t// as focus landing on the stop before it.\n\tfunction onFocusCapture() {\n\t\t// Do not act on focus set by the tab handler below, which moves\n\t\t// focus here so that the default behaviour (moving focus to the\n\t\t// next tabbable element) continues from this element.\n\t\tif ( noCaptureRef.current ) {\n\t\t\tnoCaptureRef.current = null;\n\t\t\treturn;\n\t\t}\n\t\tenterCanvas();\n\t}\n\n\tconst after = (\n\t\t<div\n\t\t\tref={ focusCaptureAfterRef }\n\t\t\ttabIndex=\"0\"\n\t\t\tonFocus={ onFocusCapture }\n\t\t\tstyle={ PREVENT_SCROLL_ON_FOCUS }\n\t\t/>\n\t);\n\n\tconst ref = useRefEffect( ( node ) => {\n\t\tfunction onKeyDown( event ) {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Escape steps out of the canvas onto its stop. Everything with\n\t\t\t// a stronger claim on the key runs first: handlers deeper in\n\t\t\t// the tree, capture handlers, and listeners registered earlier\n\t\t\t// on this node, like the automatic change undo. If the key is\n\t\t\t// still unclaimed here, nothing else wants it.\n\t\t\tif (\n\t\t\t\tevent.key === 'Escape' &&\n\t\t\t\t! event.shiftKey &&\n\t\t\t\t! event.ctrlKey &&\n\t\t\t\t! event.metaKey &&\n\t\t\t\t! event.altKey\n\t\t\t) {\n\t\t\t\t// While a content-only section is being edited, Escape first\n\t\t\t\t// stops editing it. That handler lives in the parent\n\t\t\t\t// document and runs after this one, so leave the key to it.\n\t\t\t\tif ( getEditedContentOnlySection() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( focusCaptureBeforeRef.current ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t// Park on the stop instead of engaging the canvas,\n\t\t\t\t\t// which is what focus arriving on it normally does.\n\t\t\t\t\tnoCaptureRef.current = true;\n\t\t\t\t\tfocusCaptureBeforeRef.current.focus();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In Edit mode, Tab should focus the first tabbable element after\n\t\t\t// the content, which is normally the sidebar (with block controls)\n\t\t\t// and Shift+Tab should focus the first tabbable element before the\n\t\t\t// content, which is normally the block toolbar.\n\t\t\t// Arrow keys can be used to navigate through blocks.\n\t\t\tif ( event.keyCode !== TAB ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// Bails in case the focus capture elements aren’t present. They\n\t\t\t\t// may be omitted to avoid silent tab stops in preview mode.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/59317\n\t\t\t\t! focusCaptureAfterRef.current ||\n\t\t\t\t! focusCaptureBeforeRef.current\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { target, shiftKey: isShift } = event;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\t\t\tconst nextTabbable = focus.tabbable[ direction ]( target );\n\n\t\t\t// We want to constrain the tabbing to the block and its child blocks.\n\t\t\t// If the preceding form element is within a different block,\n\t\t\t// such as two sibling image blocks in the placeholder state,\n\t\t\t// we want shift + tab from the first form element to move to the image\n\t\t\t// block toolbar and not the previous image block's form element.\n\t\t\tconst currentBlock = target.closest( '[data-block]' );\n\t\t\tconst isElementPartOfSelectedBlock =\n\t\t\t\tcurrentBlock &&\n\t\t\t\tnextTabbable &&\n\t\t\t\t( isInSameBlock( currentBlock, nextTabbable ) ||\n\t\t\t\t\tisInsideRootBlock( currentBlock, nextTabbable ) );\n\n\t\t\t// Allow tabbing from the block wrapper to a form element,\n\t\t\t// and between form elements rendered in a block and its child blocks,\n\t\t\t// such as inside a placeholder. Form elements are generally\n\t\t\t// meant to be UI rather than part of the content. Ideally\n\t\t\t// these are not rendered in the content and perhaps in the\n\t\t\t// future they can be rendered in an iframe or shadow DOM.\n\t\t\tif (\n\t\t\t\tisFormElement( nextTabbable ) &&\n\t\t\t\tisElementPartOfSelectedBlock\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst next = isShift ? focusCaptureBeforeRef : focusCaptureAfterRef;\n\n\t\t\t// Disable the focus forwarding on the focus capture element, so\n\t\t\t// it allows default behaviour (moving focus to the next tabbable\n\t\t\t// element).\n\t\t\tnoCaptureRef.current = true;\n\n\t\t\tnext.current.focus();\n\t\t}\n\n\t\tfunction onFocusOut( event ) {\n\t\t\t// `focusout` also fires when focus moves between elements within the\n\t\t\t// canvas, but only the element focus left the canvas from is of\n\t\t\t// interest. `contains` is false for a null `relatedTarget`, which is\n\t\t\t// what focus moving to another document reports.\n\t\t\tif ( ! node.contains( event.relatedTarget ) ) {\n\t\t\t\tsetLastFocus( { current: event.target } );\n\t\t\t}\n\n\t\t\tconst { ownerDocument } = node;\n\n\t\t\t// If focus disappears due to there being no blocks, move focus to\n\t\t\t// the writing flow wrapper.\n\t\t\tif (\n\t\t\t\t! event.relatedTarget &&\n\t\t\t\tevent.target.hasAttribute( 'data-block' ) &&\n\t\t\t\townerDocument.activeElement === ownerDocument.body &&\n\t\t\t\tgetBlockCount() === 0\n\t\t\t) {\n\t\t\t\tnode.focus();\n\t\t\t}\n\t\t}\n\n\t\t// During an IME composition, Escape and Tab control the input\n\t\t// method, not the editor.\n\t\tconst onKeyDownOutsideIME = withIgnoreIMEEvents( onKeyDown );\n\n\t\tnode.addEventListener( 'keydown', onKeyDownOutsideIME );\n\t\tnode.addEventListener( 'focusout', onFocusOut );\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'keydown', onKeyDownOutsideIME );\n\t\t\tnode.removeEventListener( 'focusout', onFocusOut );\n\t\t};\n\t}, [] );\n\n\tconst mergedRefs = useMergeRefs( [ containerRef, ref ] );\n\n\treturn [ before, mergedRefs, after ];\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_dom", "blockEditorStore"]
|
|
7
7
|
}
|
|
@@ -17,18 +17,18 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
|
|
20
|
-
// packages/block-editor/src/components/
|
|
21
|
-
var
|
|
22
|
-
__export(
|
|
23
|
-
default: () =>
|
|
20
|
+
// packages/block-editor/src/components/writing-flow/use-undo-automatic-change.js
|
|
21
|
+
var use_undo_automatic_change_exports = {};
|
|
22
|
+
__export(use_undo_automatic_change_exports, {
|
|
23
|
+
default: () => useUndoAutomaticChange
|
|
24
24
|
});
|
|
25
|
-
module.exports = __toCommonJS(
|
|
25
|
+
module.exports = __toCommonJS(use_undo_automatic_change_exports);
|
|
26
26
|
var import_keycodes = require("@wordpress/keycodes");
|
|
27
|
-
var
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
var import_data = require("@wordpress/data");
|
|
28
|
+
var import_compose = require("@wordpress/compose");
|
|
29
|
+
var import_store = require("../../store/index.cjs");
|
|
30
|
+
function useUndoAutomaticChange() {
|
|
31
|
+
const { didAutomaticChange, getSettings } = (0, import_data.useSelect)(import_store.store);
|
|
32
32
|
function onKeyDown(event) {
|
|
33
33
|
const { keyCode } = event;
|
|
34
34
|
if (event.defaultPrevented) {
|
|
@@ -37,8 +37,6 @@ var undo_automatic_change_default = (props) => (element) => {
|
|
|
37
37
|
if (keyCode !== import_keycodes.BACKSPACE && keyCode !== import_keycodes.ESCAPE) {
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
|
-
const { registry } = props.current;
|
|
41
|
-
const { didAutomaticChange, getSettings } = registry.select(import_store.store);
|
|
42
40
|
const { __experimentalUndo } = getSettings();
|
|
43
41
|
if (!__experimentalUndo) {
|
|
44
42
|
return;
|
|
@@ -49,6 +47,11 @@ var undo_automatic_change_default = (props) => (element) => {
|
|
|
49
47
|
event.preventDefault();
|
|
50
48
|
__experimentalUndo();
|
|
51
49
|
}
|
|
52
|
-
return
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
return (0, import_compose.useRefEffect)((element) => {
|
|
51
|
+
element.addEventListener("keydown", onKeyDown);
|
|
52
|
+
return () => {
|
|
53
|
+
element.removeEventListener("keydown", onKeyDown);
|
|
54
|
+
};
|
|
55
|
+
}, []);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=use-undo-automatic-change.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/writing-flow/use-undo-automatic-change.js"],
|
|
4
|
+
"sourcesContent": ["import { BACKSPACE, ESCAPE } from '@wordpress/keycodes';\nimport { useSelect } from '@wordpress/data';\nimport { useRefEffect } from '@wordpress/compose';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function useUndoAutomaticChange() {\n\tconst { didAutomaticChange, getSettings } = useSelect( blockEditorStore );\n\n\tfunction onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode !== BACKSPACE && keyCode !== ESCAPE ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { __experimentalUndo } = getSettings();\n\n\t\tif ( ! __experimentalUndo ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! didAutomaticChange() ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\t\t__experimentalUndo();\n\t}\n\n\treturn useRefEffect( ( element ) => {\n\t\telement.addEventListener( 'keydown', onKeyDown );\n\t\treturn () => {\n\t\t\telement.removeEventListener( 'keydown', onKeyDown );\n\t\t};\n\t}, [] );\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAkC;AAClC,kBAA0B;AAC1B,qBAA6B;AAC7B,mBAA0C;AAE3B,SAAR,yBAA0C;AAChD,QAAM,EAAE,oBAAoB,YAAY,QAAI,uBAAW,aAAAA,KAAiB;AAExE,WAAS,UAAW,OAAQ;AAC3B,UAAM,EAAE,QAAQ,IAAI;AAEpB,QAAK,MAAM,kBAAmB;AAC7B;AAAA,IACD;AAEA,QAAK,YAAY,6BAAa,YAAY,wBAAS;AAClD;AAAA,IACD;AAEA,UAAM,EAAE,mBAAmB,IAAI,YAAY;AAE3C,QAAK,CAAE,oBAAqB;AAC3B;AAAA,IACD;AAEA,QAAK,CAAE,mBAAmB,GAAI;AAC7B;AAAA,IACD;AAEA,UAAM,eAAe;AACrB,uBAAmB;AAAA,EACpB;AAEA,aAAO,6BAAc,CAAE,YAAa;AACnC,YAAQ,iBAAkB,WAAW,SAAU;AAC/C,WAAO,MAAM;AACZ,cAAQ,oBAAqB,WAAW,SAAU;AAAA,IACnD;AAAA,EACD,GAAG,CAAC,CAAE;AACP;",
|
|
6
|
+
"names": ["blockEditorStore"]
|
|
7
|
+
}
|
package/build/hooks/border.cjs
CHANGED
|
@@ -38,8 +38,7 @@ __export(border_exports, {
|
|
|
38
38
|
getMultiOriginColor: () => getMultiOriginColor,
|
|
39
39
|
hasBorderSupport: () => hasBorderSupport,
|
|
40
40
|
hasShadowSupport: () => hasShadowSupport,
|
|
41
|
-
removeBorderAttribute: () => removeBorderAttribute
|
|
42
|
-
useBorderPanelLabel: () => useBorderPanelLabel
|
|
41
|
+
removeBorderAttribute: () => removeBorderAttribute
|
|
43
42
|
});
|
|
44
43
|
module.exports = __toCommonJS(border_exports);
|
|
45
44
|
var import_clsx = __toESM(require("clsx"));
|
|
@@ -48,7 +47,6 @@ var import_components = require("@wordpress/components");
|
|
|
48
47
|
var import_element = require("@wordpress/element");
|
|
49
48
|
var import_hooks = require("@wordpress/hooks");
|
|
50
49
|
var import_data = require("@wordpress/data");
|
|
51
|
-
var import_i18n = require("@wordpress/i18n");
|
|
52
50
|
var import_colors = require("../components/colors/index.cjs");
|
|
53
51
|
var import_inspector_controls = __toESM(require("../components/inspector-controls/index.cjs"));
|
|
54
52
|
var import_use_multiple_origin_colors_and_gradients = __toESM(require("../components/colors-gradients/use-multiple-origin-colors-and-gradients.cjs"));
|
|
@@ -57,11 +55,9 @@ var import_global_styles = require("../components/global-styles/index.cjs");
|
|
|
57
55
|
var import_inherited_value_context = require("../components/global-styles/inherited-value-context.cjs");
|
|
58
56
|
var import_store = require("../store/index.cjs");
|
|
59
57
|
var import_block_style_state = require("./block-style-state.cjs");
|
|
60
|
-
var import_lock_unlock = require("../lock-unlock.cjs");
|
|
61
58
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
62
59
|
var BORDER_SUPPORT_KEY = "__experimentalBorder";
|
|
63
60
|
var SHADOW_SUPPORT_KEY = "shadow";
|
|
64
|
-
var EMPTY_ARRAY = [];
|
|
65
61
|
var getColorByProperty = (colors, property, value) => {
|
|
66
62
|
let matchedColor;
|
|
67
63
|
colors.some(
|
|
@@ -227,45 +223,6 @@ function hasBorderSupport(blockName, feature = "any") {
|
|
|
227
223
|
function hasShadowSupport(blockName) {
|
|
228
224
|
return (0, import_blocks.hasBlockSupport)(blockName, SHADOW_SUPPORT_KEY);
|
|
229
225
|
}
|
|
230
|
-
function useBorderPanelLabel({
|
|
231
|
-
clientId,
|
|
232
|
-
hasBorderControl,
|
|
233
|
-
hasShadowControl
|
|
234
|
-
} = {}) {
|
|
235
|
-
const [color, radius, style, width, shadow] = (0, import_data.useSelect)(
|
|
236
|
-
(select) => {
|
|
237
|
-
if (!clientId) {
|
|
238
|
-
return EMPTY_ARRAY;
|
|
239
|
-
}
|
|
240
|
-
const { getBlockSettings } = (0, import_lock_unlock.unlock)(select(import_store.store));
|
|
241
|
-
return getBlockSettings(
|
|
242
|
-
clientId,
|
|
243
|
-
"border.color",
|
|
244
|
-
"border.radius",
|
|
245
|
-
"border.style",
|
|
246
|
-
"border.width",
|
|
247
|
-
"shadow"
|
|
248
|
-
);
|
|
249
|
-
},
|
|
250
|
-
[clientId]
|
|
251
|
-
);
|
|
252
|
-
const settings = (0, import_element.useMemo)(
|
|
253
|
-
() => ({ border: { color, radius, style, width }, shadow }),
|
|
254
|
-
[color, radius, style, width, shadow]
|
|
255
|
-
);
|
|
256
|
-
const controls = (0, import_global_styles.useHasBorderPanelControls)(settings);
|
|
257
|
-
if (!hasBorderControl && !hasShadowControl && clientId) {
|
|
258
|
-
hasBorderControl = controls?.hasBorderColor || controls?.hasBorderStyle || controls?.hasBorderWidth || controls?.hasBorderRadius;
|
|
259
|
-
hasShadowControl = controls?.hasShadow;
|
|
260
|
-
}
|
|
261
|
-
if (hasBorderControl && hasShadowControl) {
|
|
262
|
-
return (0, import_i18n.__)("Border & Shadow");
|
|
263
|
-
}
|
|
264
|
-
if (hasShadowControl) {
|
|
265
|
-
return (0, import_i18n.__)("Shadow");
|
|
266
|
-
}
|
|
267
|
-
return (0, import_i18n.__)("Border");
|
|
268
|
-
}
|
|
269
226
|
function removeBorderAttribute(style, attribute) {
|
|
270
227
|
return (0, import_utils.cleanEmptyObject)({
|
|
271
228
|
...style,
|
|
@@ -368,7 +325,6 @@ var border_default = {
|
|
|
368
325
|
getMultiOriginColor,
|
|
369
326
|
hasBorderSupport,
|
|
370
327
|
hasShadowSupport,
|
|
371
|
-
removeBorderAttribute
|
|
372
|
-
useBorderPanelLabel
|
|
328
|
+
removeBorderAttribute
|
|
373
329
|
});
|
|
374
330
|
//# sourceMappingURL=border.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/border.jsx"],
|
|
4
|
-
"sourcesContent": ["import clsx from 'clsx';\nimport { hasBlockSupport, getBlockSupport } from '@wordpress/blocks';\nimport { __experimentalHasSplitBorders as hasSplitBorders } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\nimport { useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { getColorClassName } from '../components/colors';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport { cleanEmptyObject, shouldSkipSerialization } from './utils';\nimport {\n\tuseHasBorderPanel,\n\tuseHasBorderPanelControls,\n\tBorderPanel as StylesBorderPanel,\n} from '../components/global-styles';\nimport { useResolvedStyle } from '../components/global-styles/inherited-value-context';\nimport { store as blockEditorStore } from '../store';\nimport {\n\tgetStyleForState,\n\tisDefaultBlockStyleState,\n\tsetStyleForState,\n\tuseBlockStyleState,\n} from './block-style-state';\nimport { unlock } from '../lock-unlock';\n\nexport const BORDER_SUPPORT_KEY = '__experimentalBorder';\nexport const SHADOW_SUPPORT_KEY = 'shadow';\n\nconst EMPTY_ARRAY = [];\n\nconst getColorByProperty = ( colors, property, value ) => {\n\tlet matchedColor;\n\n\tcolors.some( ( origin ) =>\n\t\torigin.colors.some( ( color ) => {\n\t\t\tif ( color[ property ] === value ) {\n\t\t\t\tmatchedColor = color;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} )\n\t);\n\n\treturn matchedColor;\n};\n\nexport const getMultiOriginColor = ( { colors, namedColor, customColor } ) => {\n\t// Search each origin (default, theme, or user) for matching color by name.\n\tif ( namedColor ) {\n\t\tconst colorObject = getColorByProperty( colors, 'slug', namedColor );\n\t\tif ( colorObject ) {\n\t\t\treturn colorObject;\n\t\t}\n\t}\n\n\t// Skip if no custom color or matching named color.\n\tif ( ! customColor ) {\n\t\treturn { color: undefined };\n\t}\n\n\t// Attempt to find color via custom color value or build new object.\n\tconst colorObject = getColorByProperty( colors, 'color', customColor );\n\treturn colorObject ? colorObject : { color: customColor };\n};\n\nfunction getColorSlugFromVariable( value ) {\n\tconst namedColor = /var:preset\\|color\\|(.+)/.exec( value );\n\tif ( namedColor && namedColor[ 1 ] ) {\n\t\treturn namedColor[ 1 ];\n\t}\n\treturn null;\n}\n\nfunction styleToAttributes( style ) {\n\tif ( hasSplitBorders( style?.border ) ) {\n\t\treturn {\n\t\t\tstyle,\n\t\t\tborderColor: undefined,\n\t\t};\n\t}\n\n\tconst borderColorValue = style?.border?.color;\n\tconst borderColorSlug = borderColorValue?.startsWith( 'var:preset|color|' )\n\t\t? borderColorValue.substring( 'var:preset|color|'.length )\n\t\t: undefined;\n\tconst updatedStyle = { ...style };\n\tupdatedStyle.border = {\n\t\t...updatedStyle.border,\n\t\tcolor: borderColorSlug ? undefined : borderColorValue,\n\t};\n\treturn {\n\t\tstyle: cleanEmptyObject( updatedStyle ),\n\t\tborderColor: borderColorSlug,\n\t};\n}\n\nfunction attributesToStyle( attributes ) {\n\tif ( hasSplitBorders( attributes.style?.border ) ) {\n\t\treturn attributes.style;\n\t}\n\treturn {\n\t\t...attributes.style,\n\t\tborder: {\n\t\t\t...attributes.style?.border,\n\t\t\tcolor: attributes.borderColor\n\t\t\t\t? 'var:preset|color|' + attributes.borderColor\n\t\t\t\t: attributes.style?.border?.color,\n\t\t},\n\t};\n}\n\nfunction BordersInspectorControl( { label, children, resetAllFilter } ) {\n\tconst attributesResetAllFilter = useCallback(\n\t\t( attributes ) => {\n\t\t\tconst existingStyle = attributesToStyle( attributes );\n\t\t\tconst updatedStyle = resetAllFilter( existingStyle );\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\t...styleToAttributes( updatedStyle ),\n\t\t\t};\n\t\t},\n\t\t[ resetAllFilter ]\n\t);\n\n\treturn (\n\t\t<InspectorControls\n\t\t\tgroup=\"border\"\n\t\t\tresetAllFilter={ attributesResetAllFilter }\n\t\t\tlabel={ label }\n\t\t>\n\t\t\t{ children }\n\t\t</InspectorControls>\n\t);\n}\n\nexport function BorderPanel( { clientId, name, setAttributes, settings } ) {\n\tconst selectedState = useBlockStyleState();\n\tconst isEnabled = useHasBorderPanel( settings );\n\tconst { style, borderColor, className } = useSelect(\n\t\t( select ) => {\n\t\t\t// Early return to avoid subscription when disabled\n\t\t\tif ( ! isEnabled ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tstyle: _style,\n\t\t\t\tborderColor: _borderColor,\n\t\t\t\tclassName: _className,\n\t\t\t} = select( blockEditorStore ).getBlockAttributes( clientId ) || {};\n\t\t\treturn {\n\t\t\t\tstyle: _style,\n\t\t\t\tborderColor: _borderColor,\n\t\t\t\tclassName: _className,\n\t\t\t};\n\t\t},\n\t\t[ clientId, isEnabled ]\n\t);\n\n\tconst { value: inheritedValue } = useResolvedStyle(\n\t\tname,\n\t\tclassName,\n\t\tselectedState\n\t);\n\n\tconst isStateSelected = ! isDefaultBlockStyleState( selectedState );\n\n\tconst value = useMemo( () => {\n\t\tif ( isStateSelected ) {\n\t\t\treturn getStyleForState( style, selectedState );\n\t\t}\n\t\treturn attributesToStyle( { style, borderColor } );\n\t}, [ isStateSelected, selectedState, style, borderColor ] );\n\n\tconst onChange = isStateSelected\n\t\t? ( newStyle ) => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tstyle: setStyleForState( style, selectedState, newStyle ),\n\t\t\t\t} );\n\t\t }\n\t\t: ( newStyle ) => {\n\t\t\t\tsetAttributes( styleToAttributes( newStyle ) );\n\t\t };\n\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst defaultControls = {\n\t\t...getBlockSupport( name, [\n\t\t\tBORDER_SUPPORT_KEY,\n\t\t\t'__experimentalDefaultControls',\n\t\t] ),\n\t\t...getBlockSupport( name, [\n\t\t\tSHADOW_SUPPORT_KEY,\n\t\t\t'__experimentalDefaultControls',\n\t\t] ),\n\t};\n\n\treturn (\n\t\t<StylesBorderPanel\n\t\t\tas={ BordersInspectorControl }\n\t\t\tpanelId={ clientId }\n\t\t\tsettings={ settings }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tdefaultControls={ defaultControls }\n\t\t\tinheritedValue={ inheritedValue }\n\t\t/>\n\t);\n}\n\n/**\n * Determine whether there is block support for border properties.\n *\n * @param {string} blockName Block name.\n * @param {string} feature Border feature to check support for.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasBorderSupport( blockName, feature = 'any' ) {\n\tconst support = getBlockSupport( blockName, BORDER_SUPPORT_KEY );\n\n\tif ( support === true ) {\n\t\treturn true;\n\t}\n\n\tif ( feature === 'any' ) {\n\t\treturn !! (\n\t\t\tsupport?.color ||\n\t\t\tsupport?.radius ||\n\t\t\tsupport?.width ||\n\t\t\tsupport?.style\n\t\t);\n\t}\n\n\treturn !! support?.[ feature ];\n}\n\n/**\n * Determine whether there is block support for shadow properties.\n *\n * @param {string} blockName Block name.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasShadowSupport( blockName ) {\n\treturn hasBlockSupport( blockName, SHADOW_SUPPORT_KEY );\n}\n\nexport function useBorderPanelLabel( {\n\tclientId,\n\thasBorderControl,\n\thasShadowControl,\n} = {} ) {\n\tconst [ color, radius, style, width, shadow ] = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! clientId ) {\n\t\t\t\treturn EMPTY_ARRAY;\n\t\t\t}\n\t\t\tconst { getBlockSettings } = unlock( select( blockEditorStore ) );\n\t\t\treturn getBlockSettings(\n\t\t\t\tclientId,\n\t\t\t\t'border.color',\n\t\t\t\t'border.radius',\n\t\t\t\t'border.style',\n\t\t\t\t'border.width',\n\t\t\t\t'shadow'\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( { border: { color, radius, style, width }, shadow } ),\n\t\t[ color, radius, style, width, shadow ]\n\t);\n\tconst controls = useHasBorderPanelControls( settings );\n\n\tif ( ! hasBorderControl && ! hasShadowControl && clientId ) {\n\t\thasBorderControl =\n\t\t\tcontrols?.hasBorderColor ||\n\t\t\tcontrols?.hasBorderStyle ||\n\t\t\tcontrols?.hasBorderWidth ||\n\t\t\tcontrols?.hasBorderRadius;\n\t\thasShadowControl = controls?.hasShadow;\n\t}\n\n\tif ( hasBorderControl && hasShadowControl ) {\n\t\treturn __( 'Border & Shadow' );\n\t}\n\n\tif ( hasShadowControl ) {\n\t\treturn __( 'Shadow' );\n\t}\n\n\treturn __( 'Border' );\n}\n\n/**\n * Returns a new style object where the specified border attribute has been\n * removed.\n *\n * @param {Object} style Styles from block attributes.\n * @param {string} attribute The border style attribute to clear.\n *\n * @return {Object} Style object with the specified attribute removed.\n */\nexport function removeBorderAttribute( style, attribute ) {\n\treturn cleanEmptyObject( {\n\t\t...style,\n\t\tborder: {\n\t\t\t...style?.border,\n\t\t\t[ attribute ]: undefined,\n\t\t},\n\t} );\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * `borderColor` if needed.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Updated block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBorderSupport( settings, 'color' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify default value if needed.\n\tif ( settings.attributes.borderColor ) {\n\t\treturn settings;\n\t}\n\n\t// Add new borderColor attribute to block settings.\n\treturn {\n\t\t...settings,\n\t\tattributes: {\n\t\t\t...settings.attributes,\n\t\t\tborderColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * Override props assigned to save component to inject border color.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object|string} blockNameOrType Block type definition.\n * @param {Object} attributes Block's attributes.\n *\n * @return {Object} Filtered props to apply to save element.\n */\nfunction addSaveProps( props, blockNameOrType, attributes ) {\n\tif (\n\t\t! hasBorderSupport( blockNameOrType, 'color' ) ||\n\t\tshouldSkipSerialization( blockNameOrType, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst borderClasses = getBorderClasses( attributes );\n\tconst newClassName = clsx( props.className, borderClasses );\n\n\t// If we are clearing the last of the previous classes in `className`\n\t// set it to `undefined` to avoid rendering empty DOM attributes.\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Generates a CSS class name consisting of all the applicable border color\n * classes given the current block attributes.\n *\n * @param {Object} attributes Block's attributes.\n *\n * @return {string} CSS class name.\n */\nexport function getBorderClasses( attributes ) {\n\tconst { borderColor, style } = attributes;\n\tconst borderColorClass = getColorClassName( 'border-color', borderColor );\n\n\treturn clsx( {\n\t\t'has-border-color': borderColor || style?.border?.color,\n\t\t[ borderColorClass ]: !! borderColorClass,\n\t} );\n}\n\nfunction useBlockProps( { name, borderColor, style } ) {\n\tconst { colors } = useMultipleOriginColorsAndGradients();\n\n\tif (\n\t\t! hasBorderSupport( name, 'color' ) ||\n\t\tshouldSkipSerialization( name, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn {};\n\t}\n\n\tconst { color: borderColorValue } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: borderColor,\n\t} );\n\tconst { color: borderTopColor } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: getColorSlugFromVariable( style?.border?.top?.color ),\n\t} );\n\tconst { color: borderRightColor } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: getColorSlugFromVariable( style?.border?.right?.color ),\n\t} );\n\n\tconst { color: borderBottomColor } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: getColorSlugFromVariable( style?.border?.bottom?.color ),\n\t} );\n\tconst { color: borderLeftColor } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: getColorSlugFromVariable( style?.border?.left?.color ),\n\t} );\n\n\tconst extraStyles = {\n\t\tborderTopColor: borderTopColor || borderColorValue,\n\t\tborderRightColor: borderRightColor || borderColorValue,\n\t\tborderBottomColor: borderBottomColor || borderColorValue,\n\t\tborderLeftColor: borderLeftColor || borderColorValue,\n\t};\n\n\treturn addSaveProps(\n\t\t{ style: cleanEmptyObject( extraStyles ) || {} },\n\t\tname,\n\t\t{ borderColor, style }\n\t);\n}\n\nexport default {\n\tuseBlockProps,\n\taddSaveProps,\n\tattributeKeys: [ 'borderColor', 'style' ],\n\thasSupport( name ) {\n\t\treturn hasBorderSupport( name, 'color' );\n\t},\n};\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addAttributes',\n\taddAttributes\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
4
|
+
"sourcesContent": ["import clsx from 'clsx';\nimport { hasBlockSupport, getBlockSupport } from '@wordpress/blocks';\nimport { __experimentalHasSplitBorders as hasSplitBorders } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\nimport { useSelect } from '@wordpress/data';\nimport { getColorClassName } from '../components/colors';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport { cleanEmptyObject, shouldSkipSerialization } from './utils';\nimport {\n\tuseHasBorderPanel,\n\tBorderPanel as StylesBorderPanel,\n} from '../components/global-styles';\nimport { useResolvedStyle } from '../components/global-styles/inherited-value-context';\nimport { store as blockEditorStore } from '../store';\nimport {\n\tgetStyleForState,\n\tisDefaultBlockStyleState,\n\tsetStyleForState,\n\tuseBlockStyleState,\n} from './block-style-state';\n\nexport const BORDER_SUPPORT_KEY = '__experimentalBorder';\nexport const SHADOW_SUPPORT_KEY = 'shadow';\n\nconst getColorByProperty = ( colors, property, value ) => {\n\tlet matchedColor;\n\n\tcolors.some( ( origin ) =>\n\t\torigin.colors.some( ( color ) => {\n\t\t\tif ( color[ property ] === value ) {\n\t\t\t\tmatchedColor = color;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t} )\n\t);\n\n\treturn matchedColor;\n};\n\nexport const getMultiOriginColor = ( { colors, namedColor, customColor } ) => {\n\t// Search each origin (default, theme, or user) for matching color by name.\n\tif ( namedColor ) {\n\t\tconst colorObject = getColorByProperty( colors, 'slug', namedColor );\n\t\tif ( colorObject ) {\n\t\t\treturn colorObject;\n\t\t}\n\t}\n\n\t// Skip if no custom color or matching named color.\n\tif ( ! customColor ) {\n\t\treturn { color: undefined };\n\t}\n\n\t// Attempt to find color via custom color value or build new object.\n\tconst colorObject = getColorByProperty( colors, 'color', customColor );\n\treturn colorObject ? colorObject : { color: customColor };\n};\n\nfunction getColorSlugFromVariable( value ) {\n\tconst namedColor = /var:preset\\|color\\|(.+)/.exec( value );\n\tif ( namedColor && namedColor[ 1 ] ) {\n\t\treturn namedColor[ 1 ];\n\t}\n\treturn null;\n}\n\nfunction styleToAttributes( style ) {\n\tif ( hasSplitBorders( style?.border ) ) {\n\t\treturn {\n\t\t\tstyle,\n\t\t\tborderColor: undefined,\n\t\t};\n\t}\n\n\tconst borderColorValue = style?.border?.color;\n\tconst borderColorSlug = borderColorValue?.startsWith( 'var:preset|color|' )\n\t\t? borderColorValue.substring( 'var:preset|color|'.length )\n\t\t: undefined;\n\tconst updatedStyle = { ...style };\n\tupdatedStyle.border = {\n\t\t...updatedStyle.border,\n\t\tcolor: borderColorSlug ? undefined : borderColorValue,\n\t};\n\treturn {\n\t\tstyle: cleanEmptyObject( updatedStyle ),\n\t\tborderColor: borderColorSlug,\n\t};\n}\n\nfunction attributesToStyle( attributes ) {\n\tif ( hasSplitBorders( attributes.style?.border ) ) {\n\t\treturn attributes.style;\n\t}\n\treturn {\n\t\t...attributes.style,\n\t\tborder: {\n\t\t\t...attributes.style?.border,\n\t\t\tcolor: attributes.borderColor\n\t\t\t\t? 'var:preset|color|' + attributes.borderColor\n\t\t\t\t: attributes.style?.border?.color,\n\t\t},\n\t};\n}\n\nfunction BordersInspectorControl( { label, children, resetAllFilter } ) {\n\tconst attributesResetAllFilter = useCallback(\n\t\t( attributes ) => {\n\t\t\tconst existingStyle = attributesToStyle( attributes );\n\t\t\tconst updatedStyle = resetAllFilter( existingStyle );\n\t\t\treturn {\n\t\t\t\t...attributes,\n\t\t\t\t...styleToAttributes( updatedStyle ),\n\t\t\t};\n\t\t},\n\t\t[ resetAllFilter ]\n\t);\n\n\treturn (\n\t\t<InspectorControls\n\t\t\tgroup=\"border\"\n\t\t\tresetAllFilter={ attributesResetAllFilter }\n\t\t\tlabel={ label }\n\t\t>\n\t\t\t{ children }\n\t\t</InspectorControls>\n\t);\n}\n\nexport function BorderPanel( { clientId, name, setAttributes, settings } ) {\n\tconst selectedState = useBlockStyleState();\n\tconst isEnabled = useHasBorderPanel( settings );\n\tconst { style, borderColor, className } = useSelect(\n\t\t( select ) => {\n\t\t\t// Early return to avoid subscription when disabled\n\t\t\tif ( ! isEnabled ) {\n\t\t\t\treturn {};\n\t\t\t}\n\t\t\tconst {\n\t\t\t\tstyle: _style,\n\t\t\t\tborderColor: _borderColor,\n\t\t\t\tclassName: _className,\n\t\t\t} = select( blockEditorStore ).getBlockAttributes( clientId ) || {};\n\t\t\treturn {\n\t\t\t\tstyle: _style,\n\t\t\t\tborderColor: _borderColor,\n\t\t\t\tclassName: _className,\n\t\t\t};\n\t\t},\n\t\t[ clientId, isEnabled ]\n\t);\n\n\tconst { value: inheritedValue } = useResolvedStyle(\n\t\tname,\n\t\tclassName,\n\t\tselectedState\n\t);\n\n\tconst isStateSelected = ! isDefaultBlockStyleState( selectedState );\n\n\tconst value = useMemo( () => {\n\t\tif ( isStateSelected ) {\n\t\t\treturn getStyleForState( style, selectedState );\n\t\t}\n\t\treturn attributesToStyle( { style, borderColor } );\n\t}, [ isStateSelected, selectedState, style, borderColor ] );\n\n\tconst onChange = isStateSelected\n\t\t? ( newStyle ) => {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tstyle: setStyleForState( style, selectedState, newStyle ),\n\t\t\t\t} );\n\t\t }\n\t\t: ( newStyle ) => {\n\t\t\t\tsetAttributes( styleToAttributes( newStyle ) );\n\t\t };\n\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst defaultControls = {\n\t\t...getBlockSupport( name, [\n\t\t\tBORDER_SUPPORT_KEY,\n\t\t\t'__experimentalDefaultControls',\n\t\t] ),\n\t\t...getBlockSupport( name, [\n\t\t\tSHADOW_SUPPORT_KEY,\n\t\t\t'__experimentalDefaultControls',\n\t\t] ),\n\t};\n\n\treturn (\n\t\t<StylesBorderPanel\n\t\t\tas={ BordersInspectorControl }\n\t\t\tpanelId={ clientId }\n\t\t\tsettings={ settings }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tdefaultControls={ defaultControls }\n\t\t\tinheritedValue={ inheritedValue }\n\t\t/>\n\t);\n}\n\n/**\n * Determine whether there is block support for border properties.\n *\n * @param {string} blockName Block name.\n * @param {string} feature Border feature to check support for.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasBorderSupport( blockName, feature = 'any' ) {\n\tconst support = getBlockSupport( blockName, BORDER_SUPPORT_KEY );\n\n\tif ( support === true ) {\n\t\treturn true;\n\t}\n\n\tif ( feature === 'any' ) {\n\t\treturn !! (\n\t\t\tsupport?.color ||\n\t\t\tsupport?.radius ||\n\t\t\tsupport?.width ||\n\t\t\tsupport?.style\n\t\t);\n\t}\n\n\treturn !! support?.[ feature ];\n}\n\n/**\n * Determine whether there is block support for shadow properties.\n *\n * @param {string} blockName Block name.\n *\n * @return {boolean} Whether there is support.\n */\nexport function hasShadowSupport( blockName ) {\n\treturn hasBlockSupport( blockName, SHADOW_SUPPORT_KEY );\n}\n\n/**\n * Returns a new style object where the specified border attribute has been\n * removed.\n *\n * @param {Object} style Styles from block attributes.\n * @param {string} attribute The border style attribute to clear.\n *\n * @return {Object} Style object with the specified attribute removed.\n */\nexport function removeBorderAttribute( style, attribute ) {\n\treturn cleanEmptyObject( {\n\t\t...style,\n\t\tborder: {\n\t\t\t...style?.border,\n\t\t\t[ attribute ]: undefined,\n\t\t},\n\t} );\n}\n\n/**\n * Filters registered block settings, extending attributes to include\n * `borderColor` if needed.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Updated block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasBorderSupport( settings, 'color' ) ) {\n\t\treturn settings;\n\t}\n\n\t// Allow blocks to specify default value if needed.\n\tif ( settings.attributes.borderColor ) {\n\t\treturn settings;\n\t}\n\n\t// Add new borderColor attribute to block settings.\n\treturn {\n\t\t...settings,\n\t\tattributes: {\n\t\t\t...settings.attributes,\n\t\t\tborderColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t},\n\t};\n}\n\n/**\n * Override props assigned to save component to inject border color.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object|string} blockNameOrType Block type definition.\n * @param {Object} attributes Block's attributes.\n *\n * @return {Object} Filtered props to apply to save element.\n */\nfunction addSaveProps( props, blockNameOrType, attributes ) {\n\tif (\n\t\t! hasBorderSupport( blockNameOrType, 'color' ) ||\n\t\tshouldSkipSerialization( blockNameOrType, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst borderClasses = getBorderClasses( attributes );\n\tconst newClassName = clsx( props.className, borderClasses );\n\n\t// If we are clearing the last of the previous classes in `className`\n\t// set it to `undefined` to avoid rendering empty DOM attributes.\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Generates a CSS class name consisting of all the applicable border color\n * classes given the current block attributes.\n *\n * @param {Object} attributes Block's attributes.\n *\n * @return {string} CSS class name.\n */\nexport function getBorderClasses( attributes ) {\n\tconst { borderColor, style } = attributes;\n\tconst borderColorClass = getColorClassName( 'border-color', borderColor );\n\n\treturn clsx( {\n\t\t'has-border-color': borderColor || style?.border?.color,\n\t\t[ borderColorClass ]: !! borderColorClass,\n\t} );\n}\n\nfunction useBlockProps( { name, borderColor, style } ) {\n\tconst { colors } = useMultipleOriginColorsAndGradients();\n\n\tif (\n\t\t! hasBorderSupport( name, 'color' ) ||\n\t\tshouldSkipSerialization( name, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn {};\n\t}\n\n\tconst { color: borderColorValue } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: borderColor,\n\t} );\n\tconst { color: borderTopColor } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: getColorSlugFromVariable( style?.border?.top?.color ),\n\t} );\n\tconst { color: borderRightColor } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: getColorSlugFromVariable( style?.border?.right?.color ),\n\t} );\n\n\tconst { color: borderBottomColor } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: getColorSlugFromVariable( style?.border?.bottom?.color ),\n\t} );\n\tconst { color: borderLeftColor } = getMultiOriginColor( {\n\t\tcolors,\n\t\tnamedColor: getColorSlugFromVariable( style?.border?.left?.color ),\n\t} );\n\n\tconst extraStyles = {\n\t\tborderTopColor: borderTopColor || borderColorValue,\n\t\tborderRightColor: borderRightColor || borderColorValue,\n\t\tborderBottomColor: borderBottomColor || borderColorValue,\n\t\tborderLeftColor: borderLeftColor || borderColorValue,\n\t};\n\n\treturn addSaveProps(\n\t\t{ style: cleanEmptyObject( extraStyles ) || {} },\n\t\tname,\n\t\t{ borderColor, style }\n\t);\n}\n\nexport default {\n\tuseBlockProps,\n\taddSaveProps,\n\tattributeKeys: [ 'borderColor', 'style' ],\n\thasSupport( name ) {\n\t\treturn hasBorderSupport( name, 'color' );\n\t},\n};\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addAttributes',\n\taddAttributes\n);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["colorObject", "hasSplitBorders", "InspectorControls", "blockEditorStore", "StylesBorderPanel", "clsx", "useMultipleOriginColorsAndGradients"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/generate-fields-from-attributes.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * Generates DataForm field definitions from block attributes.\n *\n * This utility enables PHP-only blocks to have auto-generated inspector controls\n * by converting block attribute definitions into DataForm field definitions.\n *\n * Attribute schema validation is performed by `wp_mark_auto_generate_control_attributes()`\n * function, which marks eligible attributes with the `autoGenerateControl` flag. This\n * function processes only those pre-validated attributes.\n * See https://github.com/WordPress/wordpress-develop/blob/8f6d31266deecd7eea258bd3d45597355cce13d0/src/wp-includes/block-supports/auto-register.php#L30\n *\n * @param {Object} attributes - Block type attributes from block registration\n * @return {{ fields: Array, form: Object }}
|
|
4
|
+
"sourcesContent": ["/**\n * Generates DataForm field definitions from block attributes.\n *\n * This utility enables PHP-only blocks to have auto-generated inspector controls\n * by converting block attribute definitions into DataForm field definitions.\n *\n * Attribute schema validation is performed by `wp_mark_auto_generate_control_attributes()`\n * function, which marks eligible attributes with the `autoGenerateControl` flag. This\n * function processes only those pre-validated attributes.\n * See https://github.com/WordPress/wordpress-develop/blob/8f6d31266deecd7eea258bd3d45597355cce13d0/src/wp-includes/block-supports/auto-register.php#L30\n *\n * @param {Object} attributes - Block type attributes from block registration\n * @return {{ fields: Array, form: Object }} DataForm fields and form definitions\n */\nexport function generateFieldsFromAttributes( attributes ) {\n\tconst fields = [];\n\tconst fieldIds = [];\n\n\tObject.entries( attributes ).forEach( ( [ name, def ] ) => {\n\t\tif ( ! def.autoGenerateControl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst field = createFieldFromAttribute( name, def );\n\t\tif ( field ) {\n\t\t\tfields.push( field );\n\t\t\tfieldIds.push( name );\n\t\t}\n\t} );\n\n\treturn {\n\t\tfields,\n\t\tform: { fields: fieldIds },\n\t};\n}\n\n/**\n * Creates a DataForm field definition from a block attribute definition.\n *\n * @param {string} name - The attribute name\n * @param {Object} def - The attribute definition from block.json\n * @return {Object|null} DataForm field definition or null if type not supported\n */\nfunction createFieldFromAttribute( name, def ) {\n\tconst type = def.type;\n\tconst field = {\n\t\tid: name,\n\t\tlabel: def.label || name,\n\t\t// Only 'string' needs mapping to 'text'; others are 1:1 with DataForm types.\n\t\t// This mapping will be unnecessary once #74105 lands.\n\t\ttype: type === 'string' ? 'text' : type,\n\t};\n\n\t// Add elements for enums (DataForm shows select UI when elements are present)\n\tif ( def.enum && Array.isArray( def.enum ) ) {\n\t\tfield.elements = def.enum.map( ( value ) => ( {\n\t\t\tvalue,\n\t\t\tlabel: String( value ),\n\t\t} ) );\n\t}\n\n\treturn field;\n}\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAcO,SAAS,6BAA8B,YAAa;AAC1D,QAAM,SAAS,CAAC;AAChB,QAAM,WAAW,CAAC;AAElB,SAAO,QAAS,UAAW,EAAE,QAAS,CAAE,CAAE,MAAM,GAAI,MAAO;AAC1D,QAAK,CAAE,IAAI,qBAAsB;AAChC;AAAA,IACD;AAEA,UAAM,QAAQ,yBAA0B,MAAM,GAAI;AAClD,QAAK,OAAQ;AACZ,aAAO,KAAM,KAAM;AACnB,eAAS,KAAM,IAAK;AAAA,IACrB;AAAA,EACD,CAAE;AAEF,SAAO;AAAA,IACN;AAAA,IACA,MAAM,EAAE,QAAQ,SAAS;AAAA,EAC1B;AACD;AASA,SAAS,yBAA0B,MAAM,KAAM;AAC9C,QAAM,OAAO,IAAI;AACjB,QAAM,QAAQ;AAAA,IACb,IAAI;AAAA,IACJ,OAAO,IAAI,SAAS;AAAA;AAAA;AAAA,IAGpB,MAAM,SAAS,WAAW,SAAS;AAAA,EACpC;AAGA,MAAK,IAAI,QAAQ,MAAM,QAAS,IAAI,IAAK,GAAI;AAC5C,UAAM,WAAW,IAAI,KAAK,IAAK,CAAE,WAAa;AAAA,MAC7C;AAAA,MACA,OAAO,OAAQ,KAAM;AAAA,IACtB,EAAI;AAAA,EACL;AAEA,SAAO;AACR;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/build/hooks/index.cjs
CHANGED
|
@@ -58,7 +58,6 @@ var import_lock = require("./lock.cjs");
|
|
|
58
58
|
var import_allowed_blocks = __toESM(require("./allowed-blocks.cjs"));
|
|
59
59
|
var import_anchor = __toESM(require("./anchor.cjs"));
|
|
60
60
|
var import_aria_label = __toESM(require("./aria-label.cjs"));
|
|
61
|
-
var import_block_fields = __toESM(require("./block-fields/index.cjs"));
|
|
62
61
|
var import_custom_class_name = __toESM(require("./custom-class-name.cjs"));
|
|
63
62
|
var import_generated_class_name = require("./generated-class-name.cjs");
|
|
64
63
|
var import_style = __toESM(require("./style.cjs"));
|
|
@@ -113,7 +112,6 @@ var import_utils2 = require("./utils.cjs");
|
|
|
113
112
|
import_block_bindings.default,
|
|
114
113
|
import_layout_child.default,
|
|
115
114
|
import_allowed_blocks.default,
|
|
116
|
-
import_block_fields.default,
|
|
117
115
|
import_list_view.default,
|
|
118
116
|
import_auto_inspector_controls.default
|
|
119
117
|
].filter(Boolean)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/index.js"],
|
|
4
|
-
"sourcesContent": ["import {\n\tcreateBlockEditFilter,\n\tcreateBlockListBlockFilter,\n\tcreateBlockSaveFilter,\n} from './utils';\nimport './compat';\nimport './cross-origin-isolation';\nimport align from './align';\nimport background from './background';\nimport './lock';\nimport allowedBlocks from './allowed-blocks';\nimport anchor from './anchor';\nimport ariaLabel from './aria-label';\nimport
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAIO;AACP,oBAAO;AACP,oCAAO;AACP,mBAAkB;AAClB,wBAAuB;AACvB,kBAAO;AACP,4BAA0B;AAC1B,oBAAmB;AACnB,wBAAsB;AACtB
|
|
6
|
-
"names": ["import_dimensions", "import_layout", "import_background", "import_block_style_variation", "import_utils", "align", "textAlign", "anchor", "customClassName", "style", "customCSS", "duotone", "fitText", "position", "layout", "blockHooks", "blockBindingsPanel", "childLayout", "allowedBlocks", "
|
|
4
|
+
"sourcesContent": ["import {\n\tcreateBlockEditFilter,\n\tcreateBlockListBlockFilter,\n\tcreateBlockSaveFilter,\n} from './utils';\nimport './compat';\nimport './cross-origin-isolation';\nimport align from './align';\nimport background from './background';\nimport './lock';\nimport allowedBlocks from './allowed-blocks';\nimport anchor from './anchor';\nimport ariaLabel from './aria-label';\nimport customClassName from './custom-class-name';\nimport './generated-class-name';\nimport style from './style';\nimport './settings';\nimport color from './color';\nimport dimensions from './dimensions';\nimport duotone from './duotone';\nimport fontFamily from './font-family';\nimport fontSize from './font-size';\nimport textAlign from './text-align';\nimport fitText from './fit-text';\nimport border from './border';\nimport customCSS from './custom-css';\nimport position from './position';\nimport blockStyleVariation from './block-style-variation';\nimport layout from './layout';\nimport childLayout from './layout-child';\nimport './metadata';\nimport blockHooks from './block-hooks';\nimport blockBindingsPanel from './block-bindings';\nimport listView from './list-view';\nimport './block-renaming';\nimport './grid-visualizer';\nimport AutoRegisterControls from './auto-inspector-controls';\n\ncreateBlockEditFilter(\n\t[\n\t\talign,\n\t\ttextAlign,\n\t\tanchor,\n\t\tcustomClassName,\n\t\tstyle,\n\t\tcustomCSS,\n\t\tduotone,\n\t\tfitText,\n\t\tposition,\n\t\tlayout,\n\t\tblockHooks,\n\t\tblockBindingsPanel,\n\t\tchildLayout,\n\t\tallowedBlocks,\n\t\tlistView,\n\t\tAutoRegisterControls,\n\t].filter( Boolean )\n);\ncreateBlockListBlockFilter( [\n\talign,\n\ttextAlign,\n\tbackground,\n\tstyle,\n\tcolor,\n\tdimensions,\n\tduotone,\n\tfontFamily,\n\tfontSize,\n\tfitText,\n\tborder,\n\tcustomCSS,\n\tposition,\n\tblockStyleVariation,\n\tchildLayout,\n] );\ncreateBlockSaveFilter( [\n\talign,\n\ttextAlign,\n\tanchor,\n\tariaLabel,\n\tcustomClassName,\n\tborder,\n\tcustomCSS,\n\tfitText,\n\tcolor,\n\tstyle,\n\tfontFamily,\n\tfontSize,\n] );\n\nexport { useCustomSides } from './dimensions';\nexport { getDimensionsClassesAndStyles } from './use-dimensions-props';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getShadowClassesAndStyles } from './use-shadow-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\nexport { setBackgroundStyleDefaults } from './background';\nexport { useZoomOut } from './use-zoom-out';\nexport { BlockStyleVariationOverridesWithConfig } from './block-style-variation';\nexport { useStyleOverride } from './utils';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAIO;AACP,oBAAO;AACP,oCAAO;AACP,mBAAkB;AAClB,wBAAuB;AACvB,kBAAO;AACP,4BAA0B;AAC1B,oBAAmB;AACnB,wBAAsB;AACtB,+BAA4B;AAC5B,kCAAO;AACP,mBAAkB;AAClB,sBAAO;AACP,mBAAkB;AAClB,wBAAuB;AACvB,qBAAoB;AACpB,yBAAuB;AACvB,uBAAqB;AACrB,wBAAsB;AACtB,sBAAoB;AACpB,oBAAmB;AACnB,wBAAsB;AACtB,sBAAqB;AACrB,mCAAgC;AAChC,oBAAmB;AACnB,0BAAwB;AACxB,sBAAO;AACP,yBAAuB;AACvB,4BAA+B;AAC/B,uBAAqB;AACrB,4BAAO;AACP,6BAAO;AACP,qCAAiC;AAsDjC,IAAAA,qBAA+B;AAC/B,kCAA8C;AAC9C,IAAAC,iBAAkD;AAClD,8BAA0D;AAC1D,8BAA0C;AAC1C,6BAAwD;AACxD,+BAA2C;AAC3C,kCAA8C;AAC9C,iBAA+B;AAC/B,+BAAgC;AAChC,IAAAC,qBAA2C;AAC3C,0BAA2B;AAC3B,IAAAC,gCAAuD;AACvD,IAAAC,gBAAiC;AAAA,IAjEjC;AAAA,EACC;AAAA,IACC,aAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,yBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,+BAAAC;AAAA,EACD,EAAE,OAAQ,OAAQ;AACnB;AAAA,IACA,yCAA4B;AAAA,EAC3B,aAAAf;AAAA,EACA,kBAAAC;AAAA,EACA,kBAAAe;AAAA,EACA,aAAAZ;AAAA,EACA,aAAAa;AAAA,EACA,kBAAAC;AAAA,EACA,eAAAZ;AAAA,EACA,mBAAAa;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAb;AAAA,EACA,cAAAc;AAAA,EACA,kBAAAhB;AAAA,EACA,gBAAAG;AAAA,EACA,6BAAAc;AAAA,EACA,oBAAAV;AACD,CAAE;AAAA,IACF,oCAAuB;AAAA,EACtB,aAAAZ;AAAA,EACA,kBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,kBAAAqB;AAAA,EACA,yBAAApB;AAAA,EACA,cAAAkB;AAAA,EACA,kBAAAhB;AAAA,EACA,gBAAAE;AAAA,EACA,aAAAU;AAAA,EACA,aAAAb;AAAA,EACA,mBAAAe;AAAA,EACA,iBAAAC;AACD,CAAE;",
|
|
6
|
+
"names": ["import_dimensions", "import_layout", "import_background", "import_block_style_variation", "import_utils", "align", "textAlign", "anchor", "customClassName", "style", "customCSS", "duotone", "fitText", "position", "layout", "blockHooks", "blockBindingsPanel", "childLayout", "allowedBlocks", "listView", "AutoRegisterControls", "background", "color", "dimensions", "fontFamily", "fontSize", "border", "blockStyleVariation", "ariaLabel"]
|
|
7
7
|
}
|
package/build/hooks/style.cjs
CHANGED
|
@@ -574,7 +574,7 @@ function getElementCSSRules(blockElementStyles, blockName, baseSelector) {
|
|
|
574
574
|
});
|
|
575
575
|
return rules.length > 0 ? rules.join("") : void 0;
|
|
576
576
|
}
|
|
577
|
-
function useBlockProps({ name, style }) {
|
|
577
|
+
function useBlockProps({ clientId, name, style }) {
|
|
578
578
|
const blockElementsContainerIdentifier = (0, import_compose.useInstanceId)(
|
|
579
579
|
STYLE_BLOCK_PROPS_REFERENCE,
|
|
580
580
|
"wp-elements"
|
|
@@ -611,7 +611,7 @@ function useBlockProps({ name, style }) {
|
|
|
611
611
|
style,
|
|
612
612
|
viewportSettings
|
|
613
613
|
]);
|
|
614
|
-
(0, import_utils.
|
|
614
|
+
(0, import_utils.usePrivateStyleOverride)({ css: styles, clientId });
|
|
615
615
|
return addSaveProps(
|
|
616
616
|
{ className: blockElementsContainerIdentifier },
|
|
617
617
|
name,
|