@wordpress/block-editor 11.4.0 → 11.6.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 +8 -0
- package/build/components/block-inspector/index.js +11 -10
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-inspector/useBlockInspectorAnimationSettings.js +46 -0
- package/build/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
- package/build/components/block-list/block-invalid-warning.js +63 -80
- package/build/components/block-list/block-invalid-warning.js.map +1 -1
- package/build/components/block-lock/modal.js +1 -0
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +2 -2
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +1 -1
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/index.js +2 -1
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.native.js +1 -0
- package/build/components/block-switcher/block-transformations-menu.native.js.map +1 -1
- package/build/components/child-layout-control/index.js +107 -0
- package/build/components/child-layout-control/index.js.map +1 -0
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js +6 -3
- package/build/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build/components/date-format-picker/index.js +3 -3
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/global-styles/border-panel.js +306 -0
- package/build/components/global-styles/border-panel.js.map +1 -0
- package/build/components/global-styles/dimensions-panel.js +594 -0
- package/build/components/global-styles/dimensions-panel.js.map +1 -0
- package/build/components/global-styles/hooks.js +127 -37
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +36 -2
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +87 -27
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +21 -14
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +2 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/index.native.js +23 -0
- package/build/components/index.native.js.map +1 -1
- package/build/components/inserter/index.js +29 -17
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/media-tab/hooks.js +10 -11
- package/build/components/inserter/media-tab/hooks.js.map +1 -1
- package/build/components/inserter/media-tab/media-list.js +5 -108
- package/build/components/inserter/media-tab/media-list.js.map +1 -1
- package/build/components/inserter/media-tab/media-preview.js +242 -0
- package/build/components/inserter/media-tab/media-preview.js.map +1 -0
- package/build/components/inserter/menu.js +1 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -2
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-results.js +10 -3
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter/tabs.js +1 -1
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js +1 -1
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build/components/inspector-controls/fill.js +38 -9
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/link-control/index.js +1 -1
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-item.js +5 -2
- package/build/components/link-control/search-item.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +1 -1
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/link-control/settings.js +1 -0
- package/build/components/link-control/settings.js.map +1 -1
- package/build/components/list-view/block.js +17 -3
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +2 -2
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/expander.js +2 -1
- package/build/components/list-view/expander.js.map +1 -1
- package/build/components/list-view/leaf.js +10 -6
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +1 -2
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/list-view/use-list-view-scroll-into-view.js +51 -0
- package/build/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
- package/build/components/off-canvas-editor/appender.js +33 -13
- package/build/components/off-canvas-editor/appender.js.map +1 -1
- package/build/components/off-canvas-editor/branch.js +6 -3
- package/build/components/off-canvas-editor/branch.js.map +1 -1
- package/build/components/off-canvas-editor/index.js +8 -2
- package/build/components/off-canvas-editor/index.js.map +1 -1
- package/build/components/off-canvas-editor/leaf-more-menu.js +34 -4
- package/build/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
- package/build/components/provider/use-block-sync.js +17 -3
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/responsive-block-control/index.js +1 -0
- package/build/components/responsive-block-control/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +0 -3
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/index.js +9 -43
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-delete.js +73 -0
- package/build/components/rich-text/use-delete.js.map +1 -0
- package/build/components/rich-text/use-input-rules.js +14 -6
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +4 -1
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/hooks/align.js +3 -1
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/border.js +91 -240
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/custom-class-name.js +4 -4
- package/build/hooks/custom-class-name.js.map +1 -1
- package/build/hooks/custom-class-name.native.js +3 -4
- package/build/hooks/custom-class-name.native.js.map +1 -1
- package/build/hooks/dimensions.js +72 -190
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +94 -25
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/gap.js +0 -202
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/layout.js +33 -27
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/margin.js +7 -163
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +7 -163
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/supports.js +7 -1
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.js +52 -66
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/utils.js +101 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/layouts/constrained.js +6 -2
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +1 -0
- package/build/layouts/flex.js.map +1 -1
- package/build/private-apis.js +4 -1
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +28 -14
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.js +28 -1
- package/build/store/defaults.js.map +1 -1
- package/build/store/reducer.js +53 -47
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +24 -4
- package/build/store/selectors.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +49 -10
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/components/block-inspector/index.js +9 -9
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js +37 -0
- package/build-module/components/block-inspector/useBlockInspectorAnimationSettings.js.map +1 -0
- package/build-module/components/block-list/block-invalid-warning.js +66 -78
- package/build-module/components/block-list/block-invalid-warning.js.map +1 -1
- package/build-module/components/block-lock/modal.js +1 -0
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +2 -2
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +1 -1
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/index.js +2 -1
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.native.js +1 -0
- package/build-module/components/block-switcher/block-transformations-menu.native.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +98 -0
- package/build-module/components/child-layout-control/index.js.map +1 -0
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js +6 -3
- package/build-module/components/convert-to-group-buttons/use-convert-to-group-button-props.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +4 -4
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/global-styles/border-panel.js +291 -0
- package/build-module/components/global-styles/border-panel.js.map +1 -0
- package/build-module/components/global-styles/dimensions-panel.js +574 -0
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -0
- package/build-module/components/global-styles/hooks.js +123 -34
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +3 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +88 -27
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +21 -14
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +2 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/index.native.js +2 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inserter/index.js +28 -16
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/media-tab/hooks.js +10 -11
- package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-list.js +6 -105
- package/build-module/components/inserter/media-tab/media-list.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-preview.js +222 -0
- package/build-module/components/inserter/media-tab/media-preview.js.map +1 -0
- package/build-module/components/inserter/menu.js +1 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +4 -2
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-results.js +10 -3
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter/tabs.js +1 -1
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js +1 -1
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +39 -9
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/link-control/index.js +1 -1
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-item.js +4 -2
- package/build-module/components/link-control/search-item.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +1 -1
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/link-control/settings.js +1 -0
- package/build-module/components/link-control/settings.js.map +1 -1
- package/build-module/components/list-view/block.js +16 -3
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +2 -2
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/expander.js +2 -1
- package/build-module/components/list-view/expander.js.map +1 -1
- package/build-module/components/list-view/leaf.js +8 -4
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +1 -2
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/list-view/use-list-view-scroll-into-view.js +42 -0
- package/build-module/components/list-view/use-list-view-scroll-into-view.js.map +1 -0
- package/build-module/components/off-canvas-editor/appender.js +33 -14
- package/build-module/components/off-canvas-editor/appender.js.map +1 -1
- package/build-module/components/off-canvas-editor/branch.js +6 -3
- package/build-module/components/off-canvas-editor/branch.js.map +1 -1
- package/build-module/components/off-canvas-editor/index.js +8 -2
- package/build-module/components/off-canvas-editor/index.js.map +1 -1
- package/build-module/components/off-canvas-editor/leaf-more-menu.js +36 -7
- package/build-module/components/off-canvas-editor/leaf-more-menu.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +17 -3
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/responsive-block-control/index.js +1 -0
- package/build-module/components/responsive-block-control/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +0 -3
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/index.js +9 -43
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-delete.js +62 -0
- package/build-module/components/rich-text/use-delete.js.map +1 -0
- package/build-module/components/rich-text/use-input-rules.js +14 -6
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +4 -1
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/hooks/align.js +3 -1
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/border.js +93 -240
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/custom-class-name.js +4 -4
- package/build-module/hooks/custom-class-name.js.map +1 -1
- package/build-module/hooks/custom-class-name.native.js +3 -4
- package/build-module/hooks/custom-class-name.native.js.map +1 -1
- package/build-module/hooks/dimensions.js +75 -187
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +86 -24
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/gap.js +0 -183
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/layout.js +33 -27
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/margin.js +4 -143
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +4 -143
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/supports.js +7 -1
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.js +54 -66
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/utils.js +96 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/layouts/constrained.js +6 -2
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +1 -0
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +28 -14
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.js +28 -1
- package/build-module/store/defaults.js.map +1 -1
- package/build-module/store/reducer.js +53 -45
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +22 -4
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +49 -10
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-style/style-rtl.css +39 -27
- package/build-style/style.css +39 -27
- package/package.json +31 -31
- package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +24 -24
- package/src/components/block-inspector/index.js +11 -14
- package/src/components/block-inspector/style.scss +3 -0
- package/src/components/block-inspector/useBlockInspectorAnimationSettings.js +53 -0
- package/src/components/block-list/block-invalid-warning.js +72 -64
- package/src/components/block-lock/modal.js +1 -0
- package/src/components/block-lock/style.scss +0 -9
- package/src/components/block-mobile-toolbar/test/__snapshots__/block-actions-menu.native.js.snap +20 -20
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +35 -17
- package/src/components/block-preview/test/index.js +0 -2
- package/src/components/block-settings-menu/block-settings-dropdown.js +4 -1
- package/src/components/block-settings-menu-controls/index.js +2 -1
- package/src/components/block-styles/index.js +5 -1
- package/src/components/block-styles/style.scss +2 -2
- package/src/components/block-switcher/block-transformations-menu.native.js +1 -0
- package/src/components/child-layout-control/index.js +106 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +17 -15
- package/src/components/convert-to-group-buttons/use-convert-to-group-button-props.js +48 -38
- package/src/components/date-format-picker/index.js +6 -8
- package/src/components/date-format-picker/style.scss +0 -5
- package/src/components/global-styles/border-panel.js +285 -0
- package/src/components/global-styles/dimensions-panel.js +627 -0
- package/src/components/global-styles/hooks.js +160 -44
- package/src/components/global-styles/index.js +7 -1
- package/src/components/global-styles/test/use-global-styles-output.js +1 -1
- package/src/components/global-styles/typography-panel.js +81 -9
- package/src/components/global-styles/use-global-styles-output.js +17 -16
- package/src/components/global-styles/utils.js +2 -0
- package/src/components/index.native.js +5 -0
- package/src/components/inner-blocks/test/__snapshots__/index.js.snap +1 -1
- package/src/components/inserter/index.js +30 -11
- package/src/components/inserter/media-tab/hooks.js +9 -8
- package/src/components/inserter/media-tab/media-list.js +3 -122
- package/src/components/inserter/media-tab/media-preview.js +268 -0
- package/src/components/inserter/menu.js +0 -1
- package/src/components/inserter/quick-inserter.js +2 -0
- package/src/components/inserter/search-results.js +7 -1
- package/src/components/inserter/style.scss +25 -0
- package/src/components/inserter/tabs.js +1 -9
- package/src/components/inserter/test/__snapshots__/index.native.js.snap +15 -15
- package/src/components/inspector-controls/block-support-tools-panel.js +0 -1
- package/src/components/inspector-controls/fill.js +32 -8
- package/src/components/link-control/index.js +1 -1
- package/src/components/link-control/search-item.js +3 -1
- package/src/components/link-control/settings-drawer.js +2 -1
- package/src/components/link-control/settings.js +1 -0
- package/src/components/link-control/style.scss +18 -12
- package/src/components/link-control/test/index.js +3 -5
- package/src/components/list-view/block.js +19 -1
- package/src/components/list-view/branch.js +1 -2
- package/src/components/list-view/expander.js +1 -0
- package/src/components/list-view/leaf.js +43 -29
- package/src/components/list-view/use-block-selection.js +0 -2
- package/src/components/list-view/use-list-view-scroll-into-view.js +48 -0
- package/src/components/media-replace-flow/style.scss +7 -9
- package/src/components/off-canvas-editor/appender.js +44 -21
- package/src/components/off-canvas-editor/branch.js +4 -1
- package/src/components/off-canvas-editor/index.js +7 -1
- package/src/components/off-canvas-editor/leaf-more-menu.js +57 -15
- package/src/components/provider/use-block-sync.js +21 -4
- package/src/components/responsive-block-control/index.js +1 -0
- package/src/components/rich-text/format-toolbar-container.js +1 -7
- package/src/components/rich-text/index.js +8 -44
- package/src/components/rich-text/use-delete.js +59 -0
- package/src/components/rich-text/use-input-rules.js +13 -5
- package/src/components/spacing-sizes-control/style.scss +1 -1
- package/src/components/url-popover/stories/index.js +1 -0
- package/src/components/url-popover/test/index.js +0 -2
- package/src/components/writing-flow/use-selection-observer.js +5 -1
- package/src/hooks/align.js +1 -1
- package/src/hooks/border.js +94 -225
- package/src/hooks/custom-class-name.js +4 -4
- package/src/hooks/custom-class-name.native.js +3 -4
- package/src/hooks/dimensions.js +85 -269
- package/src/hooks/duotone.js +100 -30
- package/src/hooks/gap.js +0 -208
- package/src/hooks/layout.js +38 -22
- package/src/hooks/margin.js +1 -164
- package/src/hooks/padding.js +1 -163
- package/src/hooks/supports.js +6 -0
- package/src/hooks/test/__snapshots__/align.native.js.snap +24 -24
- package/src/hooks/test/duotone.js +102 -0
- package/src/hooks/test/style.js +2 -1
- package/src/hooks/test/use-typography-props.js +2 -0
- package/src/hooks/typography.js +68 -88
- package/src/hooks/utils.js +126 -0
- package/src/layouts/constrained.js +23 -17
- package/src/layouts/flex.js +1 -0
- package/src/private-apis.js +2 -0
- package/src/store/actions.js +16 -6
- package/src/store/defaults.js +14 -1
- package/src/store/reducer.js +68 -43
- package/src/store/selectors.js +28 -4
- package/src/store/test/actions.js +4 -2
- package/src/utils/parse-css-unit-to-px.js +48 -13
- package/src/utils/test/parse-css-unit-to-px.js +13 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/build/hooks/border-radius.js +0 -100
- package/build/hooks/border-radius.js.map +0 -1
- package/build/hooks/child-layout.js +0 -213
- package/build/hooks/child-layout.js.map +0 -1
- package/build/hooks/min-height.js +0 -139
- package/build/hooks/min-height.js.map +0 -1
- package/build-module/hooks/border-radius.js +0 -84
- package/build-module/hooks/border-radius.js.map +0 -1
- package/build-module/hooks/child-layout.js +0 -193
- package/build-module/hooks/child-layout.js.map +0 -1
- package/build-module/hooks/min-height.js +0 -116
- package/build-module/hooks/min-height.js.map +0 -1
- package/src/hooks/border-radius.js +0 -70
- package/src/hooks/child-layout.js +0 -195
- package/src/hooks/min-height.js +0 -104
|
@@ -10,66 +10,20 @@ import classnames from 'classnames';
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { getBlockSupport } from '@wordpress/blocks';
|
|
13
|
-
import {
|
|
13
|
+
import { __experimentalHasSplitBorders as hasSplitBorders } from '@wordpress/components';
|
|
14
14
|
import { createHigherOrderComponent } from '@wordpress/compose';
|
|
15
|
-
import { Platform } from '@wordpress/element';
|
|
15
|
+
import { Platform, useCallback, useMemo } from '@wordpress/element';
|
|
16
16
|
import { addFilter } from '@wordpress/hooks';
|
|
17
|
-
import { __ } from '@wordpress/i18n';
|
|
18
17
|
/**
|
|
19
18
|
* Internal dependencies
|
|
20
19
|
*/
|
|
21
20
|
|
|
22
|
-
import { BorderRadiusEdit, hasBorderRadiusValue, resetBorderRadius } from './border-radius';
|
|
23
21
|
import { getColorClassName } from '../components/colors';
|
|
24
22
|
import InspectorControls from '../components/inspector-controls';
|
|
25
23
|
import useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';
|
|
26
|
-
import
|
|
27
|
-
import {
|
|
24
|
+
import { cleanEmptyObject, shouldSkipSerialization, useBlockSettings } from './utils';
|
|
25
|
+
import { useHasBorderPanel, BorderPanel as StylesBorderPanel } from '../components/global-styles';
|
|
28
26
|
export const BORDER_SUPPORT_KEY = '__experimentalBorder';
|
|
29
|
-
const borderSides = ['top', 'right', 'bottom', 'left'];
|
|
30
|
-
|
|
31
|
-
const hasBorderValue = props => {
|
|
32
|
-
const {
|
|
33
|
-
borderColor,
|
|
34
|
-
style
|
|
35
|
-
} = props.attributes;
|
|
36
|
-
return isDefinedBorder(style === null || style === void 0 ? void 0 : style.border) || !!borderColor;
|
|
37
|
-
}; // The border color, style, and width are omitted so they get undefined. The
|
|
38
|
-
// border radius is separate and must retain its selection.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const resetBorder = _ref => {
|
|
42
|
-
var _style$border;
|
|
43
|
-
|
|
44
|
-
let {
|
|
45
|
-
attributes = {},
|
|
46
|
-
setAttributes
|
|
47
|
-
} = _ref;
|
|
48
|
-
const {
|
|
49
|
-
style
|
|
50
|
-
} = attributes;
|
|
51
|
-
setAttributes({
|
|
52
|
-
borderColor: undefined,
|
|
53
|
-
style: { ...style,
|
|
54
|
-
border: cleanEmptyObject({
|
|
55
|
-
radius: style === null || style === void 0 ? void 0 : (_style$border = style.border) === null || _style$border === void 0 ? void 0 : _style$border.radius
|
|
56
|
-
})
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
const resetBorderFilter = newAttributes => {
|
|
62
|
-
var _newAttributes$style, _newAttributes$style$;
|
|
63
|
-
|
|
64
|
-
return { ...newAttributes,
|
|
65
|
-
borderColor: undefined,
|
|
66
|
-
style: { ...newAttributes.style,
|
|
67
|
-
border: {
|
|
68
|
-
radius: (_newAttributes$style = newAttributes.style) === null || _newAttributes$style === void 0 ? void 0 : (_newAttributes$style$ = _newAttributes$style.border) === null || _newAttributes$style$ === void 0 ? void 0 : _newAttributes$style$.radius
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
27
|
|
|
74
28
|
const getColorByProperty = (colors, property, value) => {
|
|
75
29
|
let matchedColor;
|
|
@@ -84,12 +38,12 @@ const getColorByProperty = (colors, property, value) => {
|
|
|
84
38
|
return matchedColor;
|
|
85
39
|
};
|
|
86
40
|
|
|
87
|
-
export const getMultiOriginColor =
|
|
41
|
+
export const getMultiOriginColor = _ref => {
|
|
88
42
|
let {
|
|
89
43
|
colors,
|
|
90
44
|
namedColor,
|
|
91
45
|
customColor
|
|
92
|
-
} =
|
|
46
|
+
} = _ref;
|
|
93
47
|
|
|
94
48
|
// Search each origin (default, theme, or user) for matching color by name.
|
|
95
49
|
if (namedColor) {
|
|
@@ -114,60 +68,6 @@ export const getMultiOriginColor = _ref2 => {
|
|
|
114
68
|
};
|
|
115
69
|
};
|
|
116
70
|
|
|
117
|
-
const getBorderObject = (attributes, colors) => {
|
|
118
|
-
const {
|
|
119
|
-
borderColor,
|
|
120
|
-
style
|
|
121
|
-
} = attributes;
|
|
122
|
-
const {
|
|
123
|
-
border: borderStyles
|
|
124
|
-
} = style || {}; // If we have a named color for a flat border. Fetch that color object and
|
|
125
|
-
// apply that color's value to the color property within the style object.
|
|
126
|
-
|
|
127
|
-
if (borderColor) {
|
|
128
|
-
const {
|
|
129
|
-
color
|
|
130
|
-
} = getMultiOriginColor({
|
|
131
|
-
colors,
|
|
132
|
-
namedColor: borderColor
|
|
133
|
-
});
|
|
134
|
-
return color ? { ...borderStyles,
|
|
135
|
-
color
|
|
136
|
-
} : borderStyles;
|
|
137
|
-
} // Individual side border color slugs are stored within the border style
|
|
138
|
-
// object. If we don't have a border styles object we have nothing further
|
|
139
|
-
// to hydrate.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (!borderStyles) {
|
|
143
|
-
return borderStyles;
|
|
144
|
-
} // If we have named colors for the individual side borders, retrieve their
|
|
145
|
-
// related color objects and apply the real color values to the split
|
|
146
|
-
// border objects.
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const hydratedBorderStyles = { ...borderStyles
|
|
150
|
-
};
|
|
151
|
-
borderSides.forEach(side => {
|
|
152
|
-
var _hydratedBorderStyles;
|
|
153
|
-
|
|
154
|
-
const colorSlug = getColorSlugFromVariable((_hydratedBorderStyles = hydratedBorderStyles[side]) === null || _hydratedBorderStyles === void 0 ? void 0 : _hydratedBorderStyles.color);
|
|
155
|
-
|
|
156
|
-
if (colorSlug) {
|
|
157
|
-
const {
|
|
158
|
-
color
|
|
159
|
-
} = getMultiOriginColor({
|
|
160
|
-
colors,
|
|
161
|
-
namedColor: colorSlug
|
|
162
|
-
});
|
|
163
|
-
hydratedBorderStyles[side] = { ...hydratedBorderStyles[side],
|
|
164
|
-
color
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
return hydratedBorderStyles;
|
|
169
|
-
};
|
|
170
|
-
|
|
171
71
|
function getColorSlugFromVariable(value) {
|
|
172
72
|
const namedColor = /var:preset\|color\|(.+)/.exec(value);
|
|
173
73
|
|
|
@@ -178,142 +78,95 @@ function getColorSlugFromVariable(value) {
|
|
|
178
78
|
return null;
|
|
179
79
|
}
|
|
180
80
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
} = attributes;
|
|
190
|
-
const {
|
|
191
|
-
colors
|
|
192
|
-
} = useMultipleOriginColorsAndGradients();
|
|
193
|
-
const isSupported = hasBorderSupport(props.name);
|
|
194
|
-
const isColorSupported = useSetting('border.color') && hasBorderSupport(props.name, 'color');
|
|
195
|
-
const isRadiusSupported = useSetting('border.radius') && hasBorderSupport(props.name, 'radius');
|
|
196
|
-
const isStyleSupported = useSetting('border.style') && hasBorderSupport(props.name, 'style');
|
|
197
|
-
const isWidthSupported = useSetting('border.width') && hasBorderSupport(props.name, 'width');
|
|
198
|
-
const isDisabled = [!isColorSupported, !isRadiusSupported, !isStyleSupported, !isWidthSupported].every(Boolean);
|
|
199
|
-
|
|
200
|
-
if (isDisabled || !isSupported) {
|
|
201
|
-
return null;
|
|
81
|
+
function styleToAttributes(style) {
|
|
82
|
+
var _style$border;
|
|
83
|
+
|
|
84
|
+
if (hasSplitBorders(style === null || style === void 0 ? void 0 : style.border)) {
|
|
85
|
+
return {
|
|
86
|
+
style,
|
|
87
|
+
borderColor: undefined
|
|
88
|
+
};
|
|
202
89
|
}
|
|
203
90
|
|
|
204
|
-
const
|
|
205
|
-
const
|
|
91
|
+
const borderColorValue = style === null || style === void 0 ? void 0 : (_style$border = style.border) === null || _style$border === void 0 ? void 0 : _style$border.color;
|
|
92
|
+
const borderColorSlug = borderColorValue !== null && borderColorValue !== void 0 && borderColorValue.startsWith('var:preset|color|') ? borderColorSlug.substring('var:preset|color|'.length) : undefined;
|
|
93
|
+
const updatedStyle = { ...style
|
|
94
|
+
};
|
|
95
|
+
updatedStyle.border = { ...updatedStyle.border,
|
|
96
|
+
color: borderColorSlug ? undefined : borderColorValue
|
|
97
|
+
};
|
|
98
|
+
return {
|
|
99
|
+
style: cleanEmptyObject(updatedStyle),
|
|
100
|
+
borderColor: borderColorSlug
|
|
101
|
+
};
|
|
102
|
+
}
|
|
206
103
|
|
|
207
|
-
|
|
208
|
-
|
|
104
|
+
function attributesToStyle(attributes) {
|
|
105
|
+
var _attributes$style, _attributes$style2, _attributes$style3, _attributes$style3$bo;
|
|
209
106
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
// we update the color property.
|
|
221
|
-
//
|
|
222
|
-
// This deliberately overwrites `newBorderStyles` to avoid mutating
|
|
223
|
-
// the passed object which causes problems otherwise.
|
|
224
|
-
newBorderStyles = {
|
|
225
|
-
top: { ...newBorder.top
|
|
226
|
-
},
|
|
227
|
-
right: { ...newBorder.right
|
|
228
|
-
},
|
|
229
|
-
bottom: { ...newBorder.bottom
|
|
230
|
-
},
|
|
231
|
-
left: { ...newBorder.left
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
borderSides.forEach(side => {
|
|
235
|
-
var _newBorder$side;
|
|
236
|
-
|
|
237
|
-
if ((_newBorder$side = newBorder[side]) !== null && _newBorder$side !== void 0 && _newBorder$side.color) {
|
|
238
|
-
var _newBorder$side2;
|
|
239
|
-
|
|
240
|
-
const colorObject = getMultiOriginColor({
|
|
241
|
-
colors,
|
|
242
|
-
customColor: (_newBorder$side2 = newBorder[side]) === null || _newBorder$side2 === void 0 ? void 0 : _newBorder$side2.color
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
if (colorObject.slug) {
|
|
246
|
-
newBorderStyles[side].color = `var:preset|color|${colorObject.slug}`;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
} else if (newBorder !== null && newBorder !== void 0 && newBorder.color) {
|
|
251
|
-
// We have a flat border configuration. Apply named color slug to
|
|
252
|
-
// `borderColor` attribute and clear color style property if found.
|
|
253
|
-
const customColor = newBorder === null || newBorder === void 0 ? void 0 : newBorder.color;
|
|
254
|
-
const colorObject = getMultiOriginColor({
|
|
255
|
-
colors,
|
|
256
|
-
customColor
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
if (colorObject.slug) {
|
|
260
|
-
newBorderColor = colorObject.slug;
|
|
261
|
-
newBorderStyles.color = undefined;
|
|
262
|
-
}
|
|
263
|
-
} // Ensure previous border radius styles are maintained and clean
|
|
264
|
-
// overall result for empty objects or properties.
|
|
107
|
+
if (hasSplitBorders((_attributes$style = attributes.style) === null || _attributes$style === void 0 ? void 0 : _attributes$style.border)) {
|
|
108
|
+
return attributes.style;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return { ...attributes.style,
|
|
112
|
+
border: { ...((_attributes$style2 = attributes.style) === null || _attributes$style2 === void 0 ? void 0 : _attributes$style2.border),
|
|
113
|
+
color: attributes.borderColor ? 'var:preset|color|' + attributes.borderColor : (_attributes$style3 = attributes.style) === null || _attributes$style3 === void 0 ? void 0 : (_attributes$style3$bo = _attributes$style3.border) === null || _attributes$style3$bo === void 0 ? void 0 : _attributes$style3$bo.color
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
265
117
|
|
|
118
|
+
function BordersInspectorControl(_ref2) {
|
|
119
|
+
let {
|
|
120
|
+
children,
|
|
121
|
+
resetAllFilter
|
|
122
|
+
} = _ref2;
|
|
123
|
+
const attributesResetAllFilter = useCallback(attributes => {
|
|
124
|
+
const existingStyle = attributesToStyle(attributes);
|
|
125
|
+
const updatedStyle = resetAllFilter(existingStyle);
|
|
126
|
+
return { ...attributes,
|
|
127
|
+
...styleToAttributes(updatedStyle)
|
|
128
|
+
};
|
|
129
|
+
}, [resetAllFilter]);
|
|
130
|
+
return createElement(InspectorControls, {
|
|
131
|
+
group: "border",
|
|
132
|
+
resetAllFilter: attributesResetAllFilter
|
|
133
|
+
}, children);
|
|
134
|
+
}
|
|
266
135
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
136
|
+
export function BorderPanel(props) {
|
|
137
|
+
const {
|
|
138
|
+
clientId,
|
|
139
|
+
name,
|
|
140
|
+
attributes,
|
|
141
|
+
setAttributes
|
|
142
|
+
} = props;
|
|
143
|
+
const settings = useBlockSettings(name);
|
|
144
|
+
const isEnabled = useHasBorderPanel(settings);
|
|
145
|
+
const value = useMemo(() => {
|
|
146
|
+
return attributesToStyle({
|
|
147
|
+
style: attributes.style,
|
|
148
|
+
borderColor: attributes.borderColor
|
|
276
149
|
});
|
|
150
|
+
}, [attributes.style, attributes.borderColor]);
|
|
151
|
+
|
|
152
|
+
const onChange = newStyle => {
|
|
153
|
+
setAttributes(styleToAttributes(newStyle));
|
|
277
154
|
};
|
|
278
155
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
onChange: onBorderChange,
|
|
294
|
-
popoverOffset: 40,
|
|
295
|
-
popoverPlacement: "left-start",
|
|
296
|
-
size: "__unstable-large",
|
|
297
|
-
value: hydratedBorder,
|
|
298
|
-
__experimentalIsRenderedInSidebar: true
|
|
299
|
-
})), isRadiusSupported && createElement(ToolsPanelItem, {
|
|
300
|
-
hasValue: () => hasBorderRadiusValue(props),
|
|
301
|
-
label: __('Radius'),
|
|
302
|
-
onDeselect: () => resetBorderRadius(props),
|
|
303
|
-
isShownByDefault: defaultBorderControls === null || defaultBorderControls === void 0 ? void 0 : defaultBorderControls.radius,
|
|
304
|
-
resetAllFilter: newAttributes => {
|
|
305
|
-
var _newAttributes$style2;
|
|
306
|
-
|
|
307
|
-
return { ...newAttributes,
|
|
308
|
-
style: { ...newAttributes.style,
|
|
309
|
-
border: { ...((_newAttributes$style2 = newAttributes.style) === null || _newAttributes$style2 === void 0 ? void 0 : _newAttributes$style2.border),
|
|
310
|
-
radius: undefined
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
};
|
|
314
|
-
},
|
|
315
|
-
panelId: clientId
|
|
316
|
-
}, createElement(BorderRadiusEdit, props)));
|
|
156
|
+
if (!isEnabled) {
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const defaultControls = getBlockSupport(props.name, [BORDER_SUPPORT_KEY, '__experimentalDefaultControls']);
|
|
161
|
+
return createElement(StylesBorderPanel, {
|
|
162
|
+
as: BordersInspectorControl,
|
|
163
|
+
panelId: clientId,
|
|
164
|
+
name: name,
|
|
165
|
+
settings: settings,
|
|
166
|
+
value: value,
|
|
167
|
+
onChange: onChange,
|
|
168
|
+
defaultControls: defaultControls
|
|
169
|
+
});
|
|
317
170
|
}
|
|
318
171
|
/**
|
|
319
172
|
* Determine whether there is block support for border properties.
|
|
@@ -422,7 +275,7 @@ function addSaveProps(props, blockType, attributes) {
|
|
|
422
275
|
|
|
423
276
|
|
|
424
277
|
export function getBorderClasses(attributes) {
|
|
425
|
-
var _style$
|
|
278
|
+
var _style$border2;
|
|
426
279
|
|
|
427
280
|
const {
|
|
428
281
|
borderColor,
|
|
@@ -430,7 +283,7 @@ export function getBorderClasses(attributes) {
|
|
|
430
283
|
} = attributes;
|
|
431
284
|
const borderColorClass = getColorClassName('border-color', borderColor);
|
|
432
285
|
return classnames({
|
|
433
|
-
'has-border-color': borderColor || (style === null || style === void 0 ? void 0 : (_style$
|
|
286
|
+
'has-border-color': borderColor || (style === null || style === void 0 ? void 0 : (_style$border2 = style.border) === null || _style$border2 === void 0 ? void 0 : _style$border2.color),
|
|
434
287
|
[borderColorClass]: !!borderColorClass
|
|
435
288
|
});
|
|
436
289
|
}
|
|
@@ -473,7 +326,7 @@ function addEditProps(settings) {
|
|
|
473
326
|
|
|
474
327
|
|
|
475
328
|
export const withBorderColorPaletteStyles = createHigherOrderComponent(BlockListBlock => props => {
|
|
476
|
-
var _style$
|
|
329
|
+
var _style$border3, _style$border3$top, _style$border4, _style$border4$right, _style$border5, _style$border5$bottom, _style$border6, _style$border6$left, _props$wrapperProps;
|
|
477
330
|
|
|
478
331
|
const {
|
|
479
332
|
name,
|
|
@@ -501,25 +354,25 @@ export const withBorderColorPaletteStyles = createHigherOrderComponent(BlockList
|
|
|
501
354
|
color: borderTopColor
|
|
502
355
|
} = getMultiOriginColor({
|
|
503
356
|
colors,
|
|
504
|
-
namedColor: getColorSlugFromVariable(style === null || style === void 0 ? void 0 : (_style$
|
|
357
|
+
namedColor: getColorSlugFromVariable(style === null || style === void 0 ? void 0 : (_style$border3 = style.border) === null || _style$border3 === void 0 ? void 0 : (_style$border3$top = _style$border3.top) === null || _style$border3$top === void 0 ? void 0 : _style$border3$top.color)
|
|
505
358
|
});
|
|
506
359
|
const {
|
|
507
360
|
color: borderRightColor
|
|
508
361
|
} = getMultiOriginColor({
|
|
509
362
|
colors,
|
|
510
|
-
namedColor: getColorSlugFromVariable(style === null || style === void 0 ? void 0 : (_style$
|
|
363
|
+
namedColor: getColorSlugFromVariable(style === null || style === void 0 ? void 0 : (_style$border4 = style.border) === null || _style$border4 === void 0 ? void 0 : (_style$border4$right = _style$border4.right) === null || _style$border4$right === void 0 ? void 0 : _style$border4$right.color)
|
|
511
364
|
});
|
|
512
365
|
const {
|
|
513
366
|
color: borderBottomColor
|
|
514
367
|
} = getMultiOriginColor({
|
|
515
368
|
colors,
|
|
516
|
-
namedColor: getColorSlugFromVariable(style === null || style === void 0 ? void 0 : (_style$
|
|
369
|
+
namedColor: getColorSlugFromVariable(style === null || style === void 0 ? void 0 : (_style$border5 = style.border) === null || _style$border5 === void 0 ? void 0 : (_style$border5$bottom = _style$border5.bottom) === null || _style$border5$bottom === void 0 ? void 0 : _style$border5$bottom.color)
|
|
517
370
|
});
|
|
518
371
|
const {
|
|
519
372
|
color: borderLeftColor
|
|
520
373
|
} = getMultiOriginColor({
|
|
521
374
|
colors,
|
|
522
|
-
namedColor: getColorSlugFromVariable(style === null || style === void 0 ? void 0 : (_style$
|
|
375
|
+
namedColor: getColorSlugFromVariable(style === null || style === void 0 ? void 0 : (_style$border6 = style.border) === null || _style$border6 === void 0 ? void 0 : (_style$border6$left = _style$border6.left) === null || _style$border6$left === void 0 ? void 0 : _style$border6$left.color)
|
|
523
376
|
});
|
|
524
377
|
const extraStyles = {
|
|
525
378
|
borderTopColor: borderTopColor || borderColorValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/border.js"],"names":["classnames","getBlockSupport","__experimentalBorderBoxControl","BorderBoxControl","__experimentalHasSplitBorders","hasSplitBorders","__experimentalIsDefinedBorder","isDefinedBorder","__experimentalToolsPanelItem","ToolsPanelItem","createHigherOrderComponent","Platform","addFilter","__","BorderRadiusEdit","hasBorderRadiusValue","resetBorderRadius","getColorClassName","InspectorControls","useMultipleOriginColorsAndGradients","useSetting","cleanEmptyObject","shouldSkipSerialization","BORDER_SUPPORT_KEY","borderSides","hasBorderValue","props","borderColor","style","attributes","border","resetBorder","setAttributes","undefined","radius","resetBorderFilter","newAttributes","getColorByProperty","colors","property","value","matchedColor","some","origin","color","getMultiOriginColor","namedColor","customColor","colorObject","getBorderObject","borderStyles","hydratedBorderStyles","forEach","side","colorSlug","getColorSlugFromVariable","exec","BorderPanel","clientId","isSupported","hasBorderSupport","name","isColorSupported","isRadiusSupported","isStyleSupported","isWidthSupported","isDisabled","every","Boolean","defaultBorderControls","showBorderByDefault","width","onBorderChange","newBorder","newBorderStyles","newBorderColor","top","right","bottom","left","slug","newStyle","hydratedBorder","blockName","feature","OS","support","removeBorderAttribute","attribute","addAttributes","settings","type","addSaveProps","blockType","borderClasses","getBorderClasses","newClassName","className","borderColorClass","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","withBorderColorPaletteStyles","BlockListBlock","borderColorValue","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","extraStyles","wrapperProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport {\n\t__experimentalBorderBoxControl as BorderBoxControl,\n\t__experimentalHasSplitBorders as hasSplitBorders,\n\t__experimentalIsDefinedBorder as isDefinedBorder,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Platform } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBorderRadiusEdit,\n\thasBorderRadiusValue,\n\tresetBorderRadius,\n} from './border-radius';\nimport { getColorClassName } from '../components/colors';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport useSetting from '../components/use-setting';\nimport { cleanEmptyObject, shouldSkipSerialization } from './utils';\n\nexport const BORDER_SUPPORT_KEY = '__experimentalBorder';\n\nconst borderSides = [ 'top', 'right', 'bottom', 'left' ];\n\nconst hasBorderValue = ( props ) => {\n\tconst { borderColor, style } = props.attributes;\n\treturn isDefinedBorder( style?.border ) || !! borderColor;\n};\n\n// The border color, style, and width are omitted so they get undefined. The\n// border radius is separate and must retain its selection.\nconst resetBorder = ( { attributes = {}, setAttributes } ) => {\n\tconst { style } = attributes;\n\tsetAttributes( {\n\t\tborderColor: undefined,\n\t\tstyle: {\n\t\t\t...style,\n\t\t\tborder: cleanEmptyObject( {\n\t\t\t\tradius: style?.border?.radius,\n\t\t\t} ),\n\t\t},\n\t} );\n};\n\nconst resetBorderFilter = ( newAttributes ) => ( {\n\t...newAttributes,\n\tborderColor: undefined,\n\tstyle: {\n\t\t...newAttributes.style,\n\t\tborder: {\n\t\t\tradius: newAttributes.style?.border?.radius,\n\t\t},\n\t},\n} );\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\nconst getBorderObject = ( attributes, colors ) => {\n\tconst { borderColor, style } = attributes;\n\tconst { border: borderStyles } = style || {};\n\n\t// If we have a named color for a flat border. Fetch that color object and\n\t// apply that color's value to the color property within the style object.\n\tif ( borderColor ) {\n\t\tconst { color } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: borderColor,\n\t\t} );\n\n\t\treturn color ? { ...borderStyles, color } : borderStyles;\n\t}\n\n\t// Individual side border color slugs are stored within the border style\n\t// object. If we don't have a border styles object we have nothing further\n\t// to hydrate.\n\tif ( ! borderStyles ) {\n\t\treturn borderStyles;\n\t}\n\n\t// If we have named colors for the individual side borders, retrieve their\n\t// related color objects and apply the real color values to the split\n\t// border objects.\n\tconst hydratedBorderStyles = { ...borderStyles };\n\tborderSides.forEach( ( side ) => {\n\t\tconst colorSlug = getColorSlugFromVariable(\n\t\t\thydratedBorderStyles[ side ]?.color\n\t\t);\n\t\tif ( colorSlug ) {\n\t\t\tconst { color } = getMultiOriginColor( {\n\t\t\t\tcolors,\n\t\t\t\tnamedColor: colorSlug,\n\t\t\t} );\n\t\t\thydratedBorderStyles[ side ] = {\n\t\t\t\t...hydratedBorderStyles[ side ],\n\t\t\t\tcolor,\n\t\t\t};\n\t\t}\n\t} );\n\n\treturn hydratedBorderStyles;\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\nexport function BorderPanel( props ) {\n\tconst { attributes, clientId, setAttributes } = props;\n\tconst { style } = attributes;\n\tconst { colors } = useMultipleOriginColorsAndGradients();\n\n\tconst isSupported = hasBorderSupport( props.name );\n\tconst isColorSupported =\n\t\tuseSetting( 'border.color' ) && hasBorderSupport( props.name, 'color' );\n\tconst isRadiusSupported =\n\t\tuseSetting( 'border.radius' ) &&\n\t\thasBorderSupport( props.name, 'radius' );\n\tconst isStyleSupported =\n\t\tuseSetting( 'border.style' ) && hasBorderSupport( props.name, 'style' );\n\tconst isWidthSupported =\n\t\tuseSetting( 'border.width' ) && hasBorderSupport( props.name, 'width' );\n\n\tconst isDisabled = [\n\t\t! isColorSupported,\n\t\t! isRadiusSupported,\n\t\t! isStyleSupported,\n\t\t! isWidthSupported,\n\t].every( Boolean );\n\n\tif ( isDisabled || ! isSupported ) {\n\t\treturn null;\n\t}\n\n\tconst defaultBorderControls = getBlockSupport( props.name, [\n\t\tBORDER_SUPPORT_KEY,\n\t\t'__experimentalDefaultControls',\n\t] );\n\n\tconst showBorderByDefault =\n\t\tdefaultBorderControls?.color || defaultBorderControls?.width;\n\n\tconst onBorderChange = ( newBorder ) => {\n\t\t// Filter out named colors and apply them to appropriate block\n\t\t// attributes so that CSS classes can be used to apply those colors.\n\t\t// e.g. has-primary-border-top-color.\n\n\t\tlet newBorderStyles = { ...newBorder };\n\t\tlet newBorderColor;\n\n\t\tif ( hasSplitBorders( newBorder ) ) {\n\t\t\t// For each side check if the side has a color value set\n\t\t\t// If so, determine if it belongs to a named color, in which case\n\t\t\t// we update the color property.\n\t\t\t//\n\t\t\t// This deliberately overwrites `newBorderStyles` to avoid mutating\n\t\t\t// the passed object which causes problems otherwise.\n\t\t\tnewBorderStyles = {\n\t\t\t\ttop: { ...newBorder.top },\n\t\t\t\tright: { ...newBorder.right },\n\t\t\t\tbottom: { ...newBorder.bottom },\n\t\t\t\tleft: { ...newBorder.left },\n\t\t\t};\n\n\t\t\tborderSides.forEach( ( side ) => {\n\t\t\t\tif ( newBorder[ side ]?.color ) {\n\t\t\t\t\tconst colorObject = getMultiOriginColor( {\n\t\t\t\t\t\tcolors,\n\t\t\t\t\t\tcustomColor: newBorder[ side ]?.color,\n\t\t\t\t\t} );\n\n\t\t\t\t\tif ( colorObject.slug ) {\n\t\t\t\t\t\tnewBorderStyles[\n\t\t\t\t\t\t\tside\n\t\t\t\t\t\t].color = `var:preset|color|${ colorObject.slug }`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t} else if ( newBorder?.color ) {\n\t\t\t// We have a flat border configuration. Apply named color slug to\n\t\t\t// `borderColor` attribute and clear color style property if found.\n\t\t\tconst customColor = newBorder?.color;\n\t\t\tconst colorObject = getMultiOriginColor( { colors, customColor } );\n\n\t\t\tif ( colorObject.slug ) {\n\t\t\t\tnewBorderColor = colorObject.slug;\n\t\t\t\tnewBorderStyles.color = undefined;\n\t\t\t}\n\t\t}\n\n\t\t// Ensure previous border radius styles are maintained and clean\n\t\t// overall result for empty objects or properties.\n\t\tconst newStyle = cleanEmptyObject( {\n\t\t\t...style,\n\t\t\tborder: { radius: style?.border?.radius, ...newBorderStyles },\n\t\t} );\n\n\t\tsetAttributes( {\n\t\t\tstyle: newStyle,\n\t\t\tborderColor: newBorderColor,\n\t\t} );\n\t};\n\n\tconst hydratedBorder = getBorderObject( attributes, colors );\n\n\treturn (\n\t\t<InspectorControls group=\"border\">\n\t\t\t{ ( isWidthSupported || isColorSupported ) && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => hasBorderValue( props ) }\n\t\t\t\t\tlabel={ __( 'Border' ) }\n\t\t\t\t\tonDeselect={ () => resetBorder( props ) }\n\t\t\t\t\tisShownByDefault={ showBorderByDefault }\n\t\t\t\t\tresetAllFilter={ resetBorderFilter }\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<BorderBoxControl\n\t\t\t\t\t\tcolors={ colors }\n\t\t\t\t\t\tenableAlpha={ true }\n\t\t\t\t\t\tenableStyle={ isStyleSupported }\n\t\t\t\t\t\tonChange={ onBorderChange }\n\t\t\t\t\t\tpopoverOffset={ 40 }\n\t\t\t\t\t\tpopoverPlacement=\"left-start\"\n\t\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t\tvalue={ hydratedBorder }\n\t\t\t\t\t\t__experimentalIsRenderedInSidebar={ true }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t\t{ isRadiusSupported && (\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\thasValue={ () => hasBorderRadiusValue( props ) }\n\t\t\t\t\tlabel={ __( 'Radius' ) }\n\t\t\t\t\tonDeselect={ () => resetBorderRadius( props ) }\n\t\t\t\t\tisShownByDefault={ defaultBorderControls?.radius }\n\t\t\t\t\tresetAllFilter={ ( newAttributes ) => ( {\n\t\t\t\t\t\t...newAttributes,\n\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t...newAttributes.style,\n\t\t\t\t\t\t\tborder: {\n\t\t\t\t\t\t\t\t...newAttributes.style?.border,\n\t\t\t\t\t\t\t\tradius: undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t} ) }\n\t\t\t\t\tpanelId={ clientId }\n\t\t\t\t>\n\t\t\t\t\t<BorderRadiusEdit { ...props } />\n\t\t\t\t</ToolsPanelItem>\n\t\t\t) }\n\t\t</InspectorControls>\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\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\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 * 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} blockType 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, blockType, attributes ) {\n\tif (\n\t\t! hasBorderSupport( blockType, 'color' ) ||\n\t\tshouldSkipSerialization( blockType, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst borderClasses = getBorderClasses( attributes );\n\tconst newClassName = classnames( 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 classnames( {\n\t\t'has-border-color': borderColor || style?.border?.color,\n\t\t[ borderColorClass ]: !! borderColorClass,\n\t} );\n}\n\n/**\n * Filters the registered block settings to apply border color styles and\n * classnames to the block edit wrapper.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif (\n\t\t! hasBorderSupport( settings, 'color' ) ||\n\t\tshouldSkipSerialization( settings, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * This adds inline styles for color palette colors.\n * Ideally, this is not needed and themes should load their palettes on the editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withBorderColorPaletteStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { borderColor, style } = attributes;\n\t\tconst { colors } = useMultipleOriginColorsAndGradients();\n\n\t\tif (\n\t\t\t! hasBorderSupport( name, 'color' ) ||\n\t\t\tshouldSkipSerialization( name, BORDER_SUPPORT_KEY, 'color' )\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst { color: borderColorValue } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: borderColor,\n\t\t} );\n\t\tconst { color: borderTopColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.top?.color ),\n\t\t} );\n\t\tconst { color: borderRightColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.right?.color ),\n\t\t} );\n\n\t\tconst { color: borderBottomColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable(\n\t\t\t\tstyle?.border?.bottom?.color\n\t\t\t),\n\t\t} );\n\t\tconst { color: borderLeftColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.left?.color ),\n\t\t} );\n\n\t\tconst extraStyles = {\n\t\t\tborderTopColor: borderTopColor || borderColorValue,\n\t\t\tborderRightColor: borderRightColor || borderColorValue,\n\t\t\tborderBottomColor: borderBottomColor || borderColorValue,\n\t\t\tborderLeftColor: borderLeftColor || borderColorValue,\n\t\t};\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\twrapperProps = {\n\t\t\t...props.wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...props.wrapperProps?.style,\n\t\t\t\t...extraStyles,\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addAttributes',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/border/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/border/with-border-color-palette-styles',\n\twithBorderColorPaletteStyles\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/border.js"],"names":["classnames","getBlockSupport","__experimentalHasSplitBorders","hasSplitBorders","createHigherOrderComponent","Platform","useCallback","useMemo","addFilter","getColorClassName","InspectorControls","useMultipleOriginColorsAndGradients","cleanEmptyObject","shouldSkipSerialization","useBlockSettings","useHasBorderPanel","BorderPanel","StylesBorderPanel","BORDER_SUPPORT_KEY","getColorByProperty","colors","property","value","matchedColor","some","origin","color","getMultiOriginColor","namedColor","customColor","colorObject","undefined","getColorSlugFromVariable","exec","styleToAttributes","style","border","borderColor","borderColorValue","borderColorSlug","startsWith","substring","length","updatedStyle","attributesToStyle","attributes","BordersInspectorControl","children","resetAllFilter","attributesResetAllFilter","existingStyle","props","clientId","name","setAttributes","settings","isEnabled","onChange","newStyle","defaultControls","hasBorderSupport","blockName","feature","OS","support","radius","width","removeBorderAttribute","attribute","addAttributes","type","addSaveProps","blockType","borderClasses","getBorderClasses","newClassName","className","borderColorClass","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","withBorderColorPaletteStyles","BlockListBlock","borderTopColor","top","borderRightColor","right","borderBottomColor","bottom","borderLeftColor","left","extraStyles","wrapperProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { __experimentalHasSplitBorders as hasSplitBorders } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Platform, useCallback, useMemo } from '@wordpress/element';\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport { getColorClassName } from '../components/colors';\nimport InspectorControls from '../components/inspector-controls';\nimport useMultipleOriginColorsAndGradients from '../components/colors-gradients/use-multiple-origin-colors-and-gradients';\nimport {\n\tcleanEmptyObject,\n\tshouldSkipSerialization,\n\tuseBlockSettings,\n} from './utils';\nimport {\n\tuseHasBorderPanel,\n\tBorderPanel as StylesBorderPanel,\n} from '../components/global-styles';\n\nexport const BORDER_SUPPORT_KEY = '__experimentalBorder';\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? borderColorSlug.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( { 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>\n\t\t\t{ children }\n\t\t</InspectorControls>\n\t);\n}\n\nexport function BorderPanel( props ) {\n\tconst { clientId, name, attributes, setAttributes } = props;\n\tconst settings = useBlockSettings( name );\n\tconst isEnabled = useHasBorderPanel( settings );\n\tconst value = useMemo( () => {\n\t\treturn attributesToStyle( {\n\t\t\tstyle: attributes.style,\n\t\t\tborderColor: attributes.borderColor,\n\t\t} );\n\t}, [ attributes.style, attributes.borderColor ] );\n\n\tconst onChange = ( newStyle ) => {\n\t\tsetAttributes( styleToAttributes( newStyle ) );\n\t};\n\n\tif ( ! isEnabled ) {\n\t\treturn null;\n\t}\n\n\tconst defaultControls = getBlockSupport( props.name, [\n\t\tBORDER_SUPPORT_KEY,\n\t\t'__experimentalDefaultControls',\n\t] );\n\n\treturn (\n\t\t<StylesBorderPanel\n\t\t\tas={ BordersInspectorControl }\n\t\t\tpanelId={ clientId }\n\t\t\tname={ name }\n\t\t\tsettings={ settings }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tdefaultControls={ defaultControls }\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\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\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 * 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} blockType 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, blockType, attributes ) {\n\tif (\n\t\t! hasBorderSupport( blockType, 'color' ) ||\n\t\tshouldSkipSerialization( blockType, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst borderClasses = getBorderClasses( attributes );\n\tconst newClassName = classnames( 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 classnames( {\n\t\t'has-border-color': borderColor || style?.border?.color,\n\t\t[ borderColorClass ]: !! borderColorClass,\n\t} );\n}\n\n/**\n * Filters the registered block settings to apply border color styles and\n * classnames to the block edit wrapper.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addEditProps( settings ) {\n\tif (\n\t\t! hasBorderSupport( settings, 'color' ) ||\n\t\tshouldSkipSerialization( settings, BORDER_SUPPORT_KEY, 'color' )\n\t) {\n\t\treturn settings;\n\t}\n\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\n/**\n * This adds inline styles for color palette colors.\n * Ideally, this is not needed and themes should load their palettes on the editor.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withBorderColorPaletteStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { borderColor, style } = attributes;\n\t\tconst { colors } = useMultipleOriginColorsAndGradients();\n\n\t\tif (\n\t\t\t! hasBorderSupport( name, 'color' ) ||\n\t\t\tshouldSkipSerialization( name, BORDER_SUPPORT_KEY, 'color' )\n\t\t) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst { color: borderColorValue } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: borderColor,\n\t\t} );\n\t\tconst { color: borderTopColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.top?.color ),\n\t\t} );\n\t\tconst { color: borderRightColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.right?.color ),\n\t\t} );\n\n\t\tconst { color: borderBottomColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable(\n\t\t\t\tstyle?.border?.bottom?.color\n\t\t\t),\n\t\t} );\n\t\tconst { color: borderLeftColor } = getMultiOriginColor( {\n\t\t\tcolors,\n\t\t\tnamedColor: getColorSlugFromVariable( style?.border?.left?.color ),\n\t\t} );\n\n\t\tconst extraStyles = {\n\t\t\tborderTopColor: borderTopColor || borderColorValue,\n\t\t\tborderRightColor: borderRightColor || borderColorValue,\n\t\t\tborderBottomColor: borderBottomColor || borderColorValue,\n\t\t\tborderLeftColor: borderLeftColor || borderColorValue,\n\t\t};\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\twrapperProps = {\n\t\t\t...props.wrapperProps,\n\t\t\tstyle: {\n\t\t\t\t...props.wrapperProps?.style,\n\t\t\t\t...extraStyles,\n\t\t\t},\n\t\t};\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addAttributes',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/border/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/border/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/border/with-border-color-palette-styles',\n\twithBorderColorPaletteStyles\n);\n"]}
|
|
@@ -19,8 +19,7 @@ import { createHigherOrderComponent } from '@wordpress/compose';
|
|
|
19
19
|
|
|
20
20
|
import { InspectorControls } from '../components';
|
|
21
21
|
/**
|
|
22
|
-
* Filters registered block settings, extending attributes
|
|
23
|
-
* of the first node.
|
|
22
|
+
* Filters registered block settings, extending attributes to include `className`.
|
|
24
23
|
*
|
|
25
24
|
* @param {Object} settings Original block settings.
|
|
26
25
|
*
|
|
@@ -42,6 +41,7 @@ export function addAttribute(settings) {
|
|
|
42
41
|
/**
|
|
43
42
|
* Override the default edit UI to include a new block inspector control for
|
|
44
43
|
* assigning the custom class name, if block supports custom class name.
|
|
44
|
+
* The control is displayed within the Advanced panel in the block inspector.
|
|
45
45
|
*
|
|
46
46
|
* @param {WPComponent} BlockEdit Original component.
|
|
47
47
|
*
|
|
@@ -73,8 +73,8 @@ export const withInspectorControl = createHigherOrderComponent(BlockEdit => {
|
|
|
73
73
|
};
|
|
74
74
|
}, 'withInspectorControl');
|
|
75
75
|
/**
|
|
76
|
-
* Override props assigned to save component to inject
|
|
77
|
-
* supports
|
|
76
|
+
* Override props assigned to save component to inject the className, if block
|
|
77
|
+
* supports customClassName. This is only applied if the block's save result is an
|
|
78
78
|
* element and not a markup string.
|
|
79
79
|
*
|
|
80
80
|
* @param {Object} extraProps Additional props applied to save element.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/custom-class-name.js"],"names":["classnames","addFilter","TextControl","__","hasBlockSupport","createHigherOrderComponent","InspectorControls","addAttribute","settings","attributes","className","type","withInspectorControl","BlockEdit","props","hasCustomClassName","name","isSelected","nextValue","setAttributes","undefined","addSaveProps","extraProps","blockType","addTransforms","result","source","index","results","length","innerBlocks","originClassName"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,0BAAT,QAA2C,oBAA3C;AAEA;AACA;AACA;;AACA,SAASC,iBAAT,QAAkC,eAAlC;AAEA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/custom-class-name.js"],"names":["classnames","addFilter","TextControl","__","hasBlockSupport","createHigherOrderComponent","InspectorControls","addAttribute","settings","attributes","className","type","withInspectorControl","BlockEdit","props","hasCustomClassName","name","isSelected","nextValue","setAttributes","undefined","addSaveProps","extraProps","blockType","addTransforms","result","source","index","results","length","innerBlocks","originClassName"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { TextControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\n\n/**\n * Filters registered block settings, extending attributes to include `className`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\tif ( hasBlockSupport( settings, 'customClassName', true ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tclassName: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include a new block inspector control for\n * assigning the custom class name, if block supports custom class name.\n * The control is displayed within the Advanced panel in the block inspector.\n *\n * @param {WPComponent} BlockEdit Original component.\n *\n * @return {WPComponent} Wrapped component.\n */\nexport const withInspectorControl = createHigherOrderComponent(\n\t( BlockEdit ) => {\n\t\treturn ( props ) => {\n\t\t\tconst hasCustomClassName = hasBlockSupport(\n\t\t\t\tprops.name,\n\t\t\t\t'customClassName',\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tif ( hasCustomClassName && props.isSelected ) {\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BlockEdit { ...props } />\n\t\t\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Additional CSS class(es)' ) }\n\t\t\t\t\t\t\t\tvalue={ props.attributes.className || '' }\n\t\t\t\t\t\t\t\tonChange={ ( nextValue ) => {\n\t\t\t\t\t\t\t\t\tprops.setAttributes( {\n\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\tnextValue !== ''\n\t\t\t\t\t\t\t\t\t\t\t\t? nextValue\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Separate multiple classes with spaces.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn <BlockEdit { ...props } />;\n\t\t};\n\t},\n\t'withInspectorControl'\n);\n\n/**\n * Override props assigned to save component to inject the className, if block\n * supports customClassName. This is only applied if the block's save result is an\n * element and not a markup string.\n *\n * @param {Object} extraProps Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Current block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( extraProps, blockType, attributes ) {\n\tif (\n\t\thasBlockSupport( blockType, 'customClassName', true ) &&\n\t\tattributes.className\n\t) {\n\t\textraProps.className = classnames(\n\t\t\textraProps.className,\n\t\t\tattributes.className\n\t\t);\n\t}\n\n\treturn extraProps;\n}\n\nexport function addTransforms( result, source, index, results ) {\n\tif ( ! hasBlockSupport( result.name, 'customClassName', true ) ) {\n\t\treturn result;\n\t}\n\n\t// If the condition verifies we are probably in the presence of a wrapping transform\n\t// e.g: nesting paragraphs in a group or columns and in that case the class should not be kept.\n\tif ( results.length === 1 && result.innerBlocks.length === source.length ) {\n\t\treturn result;\n\t}\n\n\t// If we are transforming one block to multiple blocks or multiple blocks to one block,\n\t// we ignore the class during the transform.\n\tif (\n\t\t( results.length === 1 && source.length > 1 ) ||\n\t\t( results.length > 1 && source.length === 1 )\n\t) {\n\t\treturn result;\n\t}\n\n\t// If we are in presence of transform between one or more block in the source\n\t// that have one or more blocks in the result\n\t// we apply the class on source N to the result N,\n\t// if source N does not exists we do nothing.\n\tif ( source[ index ] ) {\n\t\tconst originClassName = source[ index ]?.attributes.className;\n\t\tif ( originClassName ) {\n\t\t\treturn {\n\t\t\t\t...result,\n\t\t\t\tattributes: {\n\t\t\t\t\t...result.attributes,\n\t\t\t\t\tclassName: originClassName,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\treturn result;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/custom-class-name/attribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/custom-class-name/with-inspector-control',\n\twithInspectorControl\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/custom-class-name/save-props',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.switchToBlockType.transformedBlock',\n\t'core/color/addTransforms',\n\taddTransforms\n);\n"]}
|