@wordpress/block-editor 7.0.2 → 8.0.1
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 +11 -0
- package/README.md +45 -1
- package/build/components/autocomplete/index.js +1 -1
- package/build/components/autocomplete/index.js.map +1 -1
- package/build/components/block-actions/index.js +8 -4
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js +61 -14
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-control/use-available-alignments.js +25 -3
- package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build/components/block-controls/fill.js +2 -2
- package/build/components/block-controls/fill.js.map +1 -1
- package/build/components/block-controls/hook.js +3 -3
- package/build/components/block-controls/hook.js.map +1 -1
- package/build/components/block-icon/index.js +5 -1
- package/build/components/block-icon/index.js.map +1 -1
- package/build/components/block-icon/index.native.js +9 -11
- package/build/components/block-icon/index.native.js.map +1 -1
- package/build/components/block-inspector/index.js +8 -0
- package/build/components/block-inspector/index.js.map +1 -1
- package/build/components/block-list/block-html.js +5 -0
- package/build/components/block-list/block-html.js.map +1 -1
- package/build/components/block-list/block.js +12 -5
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +4 -3
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.native.js +1 -1
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/use-multi-selection.js +21 -8
- package/build/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build/components/block-list-appender/index.js +9 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-mover/index.js +4 -4
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-mover/index.native.js +4 -4
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-navigation/dropdown.js +0 -1
- package/build/components/block-navigation/dropdown.js.map +1 -1
- package/build/components/block-patterns-list/index.js +1 -8
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-preview/auto.js +1 -1
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings/container.native.js +5 -2
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +26 -5
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +10 -3
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/preview.native.js +2 -2
- package/build/components/block-styles/preview.native.js.map +1 -1
- package/build/components/block-switcher/block-styles-menu.js +1 -1
- package/build/components/block-switcher/block-styles-menu.js.map +1 -1
- package/build/components/block-switcher/index.js +10 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-title/index.js +3 -2
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-tools/block-popover.js +2 -4
- package/build/components/block-tools/block-popover.js.map +1 -1
- package/build/components/block-tools/index.js +4 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +96 -7
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/utils.js +17 -8
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/colors/utils.js +11 -3
- package/build/components/colors/utils.js.map +1 -1
- package/build/components/colors-gradients/control.js +22 -57
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +83 -7
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/contrast-checker/index.js +18 -12
- package/build/components/contrast-checker/index.js.map +1 -1
- package/build/components/copy-handler/index.js +9 -3
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/default-block-appender/index.js +2 -2
- package/build/components/default-block-appender/index.js.map +1 -1
- package/build/components/duotone-control/index.js +41 -39
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/editor-styles/index.js +9 -3
- package/build/components/editor-styles/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +32 -21
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/iframe/index.js +6 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js +126 -0
- package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
- package/build/components/image-editor/constants.js +16 -0
- package/build/components/image-editor/constants.js.map +1 -0
- package/build/components/image-editor/context.js +59 -0
- package/build/components/image-editor/context.js.map +1 -0
- package/build/components/image-editor/cropper.js +83 -0
- package/build/components/image-editor/cropper.js.map +1 -0
- package/build/components/image-editor/form-controls.js +36 -0
- package/build/components/image-editor/form-controls.js.map +1 -0
- package/build/components/image-editor/index.js +60 -0
- package/build/components/image-editor/index.js.map +1 -0
- package/build/components/image-editor/rotation-button.js +37 -0
- package/build/components/image-editor/rotation-button.js.map +1 -0
- package/build/components/image-editor/use-save-image.js +84 -0
- package/build/components/image-editor/use-save-image.js.map +1 -0
- package/build/components/image-editor/use-transform-image.js +135 -0
- package/build/components/image-editor/use-transform-image.js.map +1 -0
- package/build/components/image-editor/zoom-dropdown.js +55 -0
- package/build/components/image-editor/zoom-dropdown.js.map +1 -0
- package/build/components/image-size-control/use-dimension-handler.js +14 -3
- package/build/components/image-size-control/use-dimension-handler.js.map +1 -1
- package/build/components/index.js +36 -20
- package/build/components/index.js.map +1 -1
- package/build/components/index.native.js +2 -2
- package/build/components/index.native.js.map +1 -1
- package/build/components/inner-blocks/button-block-appender.js +11 -1
- package/build/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +8 -5
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inner-blocks/index.native.js +4 -3
- package/build/components/inner-blocks/index.native.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js +24 -13
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/explorer.js +62 -0
- package/build/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/patterns-list.js +111 -0
- package/build/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
- package/build/components/inserter/block-patterns-explorer/sidebar.js +78 -0
- package/build/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
- package/build/components/inserter/block-patterns-tab.js +74 -35
- package/build/components/inserter/block-patterns-tab.js.map +1 -1
- package/build/components/inserter/block-types-tab.native.js +3 -11
- package/build/components/inserter/block-types-tab.native.js.map +1 -1
- package/build/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
- package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build/components/inserter/hooks/use-clipboard-block.native.js +5 -4
- package/build/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
- package/build/components/inserter/index.js +12 -4
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +1 -7
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/library.js +2 -0
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +2 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/menu.native.js +11 -15
- package/build/components/inserter/menu.native.js.map +1 -1
- package/build/components/inserter/pattern-panel.js +19 -10
- package/build/components/inserter/pattern-panel.js.map +1 -1
- package/build/components/inserter/preview-panel.js +1 -1
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -1
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.native.js +5 -6
- package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build/components/inserter/search-results.native.js +6 -11
- package/build/components/inserter/search-results.native.js.map +1 -1
- package/build/components/inserter/utils.native.js +44 -0
- package/build/components/inserter/utils.native.js.map +1 -0
- package/build/components/inspector-controls/block-support-slot-container.js +28 -0
- package/build/components/inspector-controls/block-support-slot-container.js.map +1 -0
- package/build/components/inspector-controls/block-support-tools-panel.js +78 -0
- package/build/components/inspector-controls/block-support-tools-panel.js.map +1 -0
- package/build/components/inspector-controls/fill.js +16 -1
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/inspector-controls/groups.js +5 -1
- package/build/components/inspector-controls/groups.js.map +1 -1
- package/build/components/inspector-controls/slot.js +15 -0
- package/build/components/inspector-controls/slot.js.map +1 -1
- package/build/components/letter-spacing-control/index.js +9 -6
- package/build/components/letter-spacing-control/index.js.map +1 -1
- package/build/components/link-control/index.js +93 -34
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/link-preview.js +45 -15
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/link-control/search-input.js +25 -7
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/list-view/block-contents.js +1 -20
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/block.js +54 -69
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/branch.js +102 -76
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/index.js +45 -20
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/leaf.js +2 -2
- package/build/components/list-view/leaf.js.map +1 -1
- package/build/components/list-view/list-item.js +3 -2
- package/build/components/list-view/list-item.js.map +1 -1
- package/build/components/list-view/use-list-view-client-ids.js +13 -54
- package/build/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build/components/media-placeholder/index.js +29 -20
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +5 -3
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +1 -4
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/observe-typing/index.js +1 -1
- package/build/components/observe-typing/index.js.map +1 -1
- package/build/components/plain-text/index.native.js +30 -1
- package/build/components/plain-text/index.native.js.map +1 -1
- package/build/components/rich-text/embed-handler-picker.native.js +66 -0
- package/build/components/rich-text/embed-handler-picker.native.js.map +1 -0
- package/build/components/rich-text/format-edit.js +28 -2
- package/build/components/rich-text/format-edit.js.map +1 -1
- package/build/components/rich-text/format-toolbar/index.js +32 -11
- package/build/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build/components/rich-text/index.js +5 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +41 -2
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +28 -9
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/rich-text/utils.js +22 -0
- package/build/components/rich-text/utils.js.map +1 -1
- package/build/components/typewriter/index.js +1 -1
- package/build/components/typewriter/index.js.map +1 -1
- package/build/components/url-input/index.js +25 -11
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +13 -10
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +2 -1
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-setting/index.js +48 -9
- package/build/components/use-setting/index.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js +6 -0
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +10 -1
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/hooks/align.js +13 -10
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/anchor.js +1 -1
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border.js +5 -5
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color-panel.js +5 -2
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color.js +1 -1
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/dimensions.js +23 -27
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +60 -16
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/font-appearance.js +49 -6
- package/build/hooks/font-appearance.js.map +1 -1
- package/build/hooks/font-family.js +123 -32
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +51 -9
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/gap.js +2 -1
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/index.js +10 -0
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/index.native.js +8 -0
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/letter-spacing.js +44 -7
- package/build/hooks/letter-spacing.js.map +1 -1
- package/build/hooks/line-height.js +45 -8
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/lock.js +43 -0
- package/build/hooks/lock.js.map +1 -0
- package/build/hooks/margin.js +1 -1
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +1 -1
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/style.js +7 -4
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/text-decoration.js +42 -6
- package/build/hooks/text-decoration.js.map +1 -1
- package/build/hooks/text-transform.js +42 -6
- package/build/hooks/text-transform.js.map +1 -1
- package/build/hooks/typography.js +108 -8
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/use-cached-truthy.js +29 -0
- package/build/hooks/use-cached-truthy.js.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/flex.js +160 -34
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +75 -8
- package/build/layouts/flow.js.map +1 -1
- package/build/store/actions.js +323 -265
- package/build/store/actions.js.map +1 -1
- package/build/store/defaults.native.js +13 -1
- package/build/store/defaults.native.js.map +1 -1
- package/build/store/index.js +1 -3
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +33 -22
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +172 -38
- package/build/store/selectors.js.map +1 -1
- package/build/utils/index.js +10 -1
- package/build/utils/index.js.map +1 -1
- package/build/utils/parse-css-unit-to-px.js +51 -1
- package/build/utils/parse-css-unit-to-px.js.map +1 -1
- package/build/utils/transform-styles/transforms/wrap.js +16 -0
- package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-module/components/autocomplete/index.js +2 -2
- package/build-module/components/autocomplete/index.js.map +1 -1
- package/build-module/components/block-actions/index.js +8 -4
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js +64 -17
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-control/use-available-alignments.js +25 -3
- package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build-module/components/block-controls/fill.js +2 -2
- package/build-module/components/block-controls/fill.js.map +1 -1
- package/build-module/components/block-controls/hook.js +3 -3
- package/build-module/components/block-controls/hook.js.map +1 -1
- package/build-module/components/block-icon/index.js +5 -1
- package/build-module/components/block-icon/index.js.map +1 -1
- package/build-module/components/block-icon/index.native.js +10 -11
- package/build-module/components/block-icon/index.native.js.map +1 -1
- package/build-module/components/block-inspector/index.js +8 -0
- package/build-module/components/block-inspector/index.js.map +1 -1
- package/build-module/components/block-list/block-html.js +5 -0
- package/build-module/components/block-list/block-html.js.map +1 -1
- package/build-module/components/block-list/block.js +12 -5
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +4 -3
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.native.js +1 -1
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-multi-selection.js +21 -8
- package/build-module/components/block-list/use-block-props/use-multi-selection.js.map +1 -1
- package/build-module/components/block-list-appender/index.js +9 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-mover/index.js +4 -4
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +4 -4
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-navigation/dropdown.js +0 -1
- package/build-module/components/block-navigation/dropdown.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +1 -6
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +1 -1
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +6 -3
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +28 -7
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +10 -3
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/preview.native.js +2 -2
- package/build-module/components/block-styles/preview.native.js.map +1 -1
- package/build-module/components/block-switcher/block-styles-menu.js +1 -1
- package/build-module/components/block-switcher/block-styles-menu.js.map +1 -1
- package/build-module/components/block-switcher/index.js +10 -3
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-title/index.js +3 -2
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-tools/block-popover.js +3 -5
- package/build-module/components/block-tools/block-popover.js.map +1 -1
- package/build-module/components/block-tools/index.js +4 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +96 -8
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +16 -9
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/colors/utils.js +9 -3
- package/build-module/components/colors/utils.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +26 -63
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +84 -7
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/contrast-checker/index.js +13 -10
- package/build-module/components/contrast-checker/index.js.map +1 -1
- package/build-module/components/copy-handler/index.js +9 -3
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/default-block-appender/index.js +2 -2
- package/build-module/components/default-block-appender/index.js.map +1 -1
- package/build-module/components/duotone-control/index.js +43 -39
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/editor-styles/index.js +7 -3
- package/build-module/components/editor-styles/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +28 -21
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +6 -4
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js +115 -0
- package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -0
- package/build-module/components/image-editor/constants.js +7 -0
- package/build-module/components/image-editor/constants.js.map +1 -0
- package/build-module/components/image-editor/context.js +44 -0
- package/build-module/components/image-editor/context.js.map +1 -0
- package/build-module/components/image-editor/cropper.js +69 -0
- package/build-module/components/image-editor/cropper.js.map +1 -0
- package/build-module/components/image-editor/form-controls.js +26 -0
- package/build-module/components/image-editor/form-controls.js.map +1 -0
- package/build-module/components/image-editor/index.js +37 -0
- package/build-module/components/image-editor/index.js.map +1 -0
- package/build-module/components/image-editor/rotation-button.js +26 -0
- package/build-module/components/image-editor/rotation-button.js.map +1 -0
- package/build-module/components/image-editor/use-save-image.js +70 -0
- package/build-module/components/image-editor/use-save-image.js.map +1 -0
- package/build-module/components/image-editor/use-transform-image.js +127 -0
- package/build-module/components/image-editor/use-transform-image.js.map +1 -0
- package/build-module/components/image-editor/zoom-dropdown.js +43 -0
- package/build-module/components/image-editor/zoom-dropdown.js.map +1 -0
- package/build-module/components/image-size-control/use-dimension-handler.js +13 -2
- package/build-module/components/image-size-control/use-dimension-handler.js.map +1 -1
- package/build-module/components/index.js +4 -3
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/index.native.js +1 -1
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/button-block-appender.js +10 -1
- package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +9 -6
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.native.js +5 -4
- package/build-module/components/inner-blocks/index.native.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js +24 -13
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/explorer.js +50 -0
- package/build-module/components/inserter/block-patterns-explorer/explorer.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js +92 -0
- package/build-module/components/inserter/block-patterns-explorer/patterns-list.js.map +1 -0
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js +69 -0
- package/build-module/components/inserter/block-patterns-explorer/sidebar.js.map +1 -0
- package/build-module/components/inserter/block-patterns-tab.js +75 -36
- package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.native.js +2 -10
- package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js +4 -7
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build-module/components/inserter/hooks/use-clipboard-block.native.js +5 -4
- package/build-module/components/inserter/hooks/use-clipboard-block.native.js.map +1 -1
- package/build-module/components/inserter/index.js +12 -4
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +1 -7
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -0
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +2 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/menu.native.js +10 -15
- package/build-module/components/inserter/menu.native.js.map +1 -1
- package/build-module/components/inserter/pattern-panel.js +21 -13
- package/build-module/components/inserter/pattern-panel.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +1 -1
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.native.js +4 -5
- package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build-module/components/inserter/search-results.native.js +5 -10
- package/build-module/components/inserter/search-results.native.js.map +1 -1
- package/build-module/components/inserter/utils.native.js +35 -0
- package/build-module/components/inserter/utils.native.js.map +1 -0
- package/build-module/components/inspector-controls/block-support-slot-container.js +18 -0
- package/build-module/components/inspector-controls/block-support-slot-container.js.map +1 -0
- package/build-module/components/inspector-controls/block-support-tools-panel.js +67 -0
- package/build-module/components/inspector-controls/block-support-tools-panel.js.map +1 -0
- package/build-module/components/inspector-controls/fill.js +16 -2
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/inspector-controls/groups.js +5 -1
- package/build-module/components/inspector-controls/groups.js.map +1 -1
- package/build-module/components/inspector-controls/slot.js +13 -0
- package/build-module/components/inspector-controls/slot.js.map +1 -1
- package/build-module/components/letter-spacing-control/index.js +9 -6
- package/build-module/components/letter-spacing-control/index.js.map +1 -1
- package/build-module/components/link-control/index.js +93 -35
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +46 -17
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/link-control/search-input.js +24 -7
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/list-view/block-contents.js +1 -18
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/block.js +56 -71
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/branch.js +102 -78
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/index.js +48 -23
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/leaf.js +2 -2
- package/build-module/components/list-view/leaf.js.map +1 -1
- package/build-module/components/list-view/list-item.js +3 -2
- package/build-module/components/list-view/list-item.js.map +1 -1
- package/build-module/components/list-view/use-list-view-client-ids.js +13 -54
- package/build-module/components/list-view/use-list-view-client-ids.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +29 -20
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +5 -3
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +1 -4
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/observe-typing/index.js +1 -1
- package/build-module/components/observe-typing/index.js.map +1 -1
- package/build-module/components/plain-text/index.native.js +29 -2
- package/build-module/components/plain-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/embed-handler-picker.native.js +54 -0
- package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -0
- package/build-module/components/rich-text/format-edit.js +28 -3
- package/build-module/components/rich-text/format-edit.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar/index.js +29 -11
- package/build-module/components/rich-text/format-toolbar/index.js.map +1 -1
- package/build-module/components/rich-text/index.js +4 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +41 -3
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +28 -9
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/rich-text/utils.js +20 -0
- package/build-module/components/rich-text/utils.js.map +1 -1
- package/build-module/components/typewriter/index.js +1 -1
- package/build-module/components/typewriter/index.js.map +1 -1
- package/build-module/components/url-input/index.js +25 -11
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +13 -10
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +3 -2
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-setting/index.js +48 -9
- package/build-module/components/use-setting/index.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js +6 -0
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +10 -1
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/hooks/align.js +13 -10
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/anchor.js +1 -1
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border.js +5 -5
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color-panel.js +6 -3
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color.js +1 -1
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/dimensions.js +24 -27
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +59 -16
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/font-appearance.js +45 -6
- package/build-module/hooks/font-appearance.js.map +1 -1
- package/build-module/hooks/font-family.js +117 -33
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +47 -9
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/gap.js +2 -1
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/index.js +2 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/index.native.js +1 -0
- package/build-module/hooks/index.native.js.map +1 -1
- package/build-module/hooks/letter-spacing.js +40 -7
- package/build-module/hooks/letter-spacing.js.map +1 -1
- package/build-module/hooks/line-height.js +41 -8
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/lock.js +33 -0
- package/build-module/hooks/lock.js.map +1 -0
- package/build-module/hooks/margin.js +1 -1
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +1 -1
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/style.js +7 -4
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/text-decoration.js +38 -6
- package/build-module/hooks/text-decoration.js.map +1 -1
- package/build-module/hooks/text-transform.js +38 -6
- package/build-module/hooks/text-transform.js.map +1 -1
- package/build-module/hooks/typography.js +117 -17
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/use-cached-truthy.js +21 -0
- package/build-module/hooks/use-cached-truthy.js.map +1 -0
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/flex.js +163 -38
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +74 -8
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/store/actions.js +286 -241
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/defaults.native.js +12 -1
- package/build-module/store/defaults.native.js.map +1 -1
- package/build-module/store/index.js +1 -2
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/reducer.js +33 -22
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +160 -34
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/index.js +1 -0
- package/build-module/utils/index.js.map +1 -1
- package/build-module/utils/parse-css-unit-to-px.js +48 -1
- package/build-module/utils/parse-css-unit-to-px.js.map +1 -1
- package/build-module/utils/transform-styles/transforms/wrap.js +16 -0
- package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-style/style-rtl.css +267 -144
- package/build-style/style.css +267 -144
- package/package.json +28 -27
- package/src/components/autocomplete/index.js +5 -2
- package/src/components/block-actions/index.js +9 -5
- package/src/components/block-alignment-control/style.scss +5 -0
- package/src/components/block-alignment-control/test/__snapshots__/index.js.snap +15 -1
- package/src/components/block-alignment-control/test/index.native.js +37 -0
- package/src/components/block-alignment-control/ui.js +98 -27
- package/src/components/block-alignment-control/use-available-alignments.js +31 -10
- package/src/components/block-controls/fill.js +5 -2
- package/src/components/block-controls/hook.js +3 -3
- package/src/components/block-draggable/style.scss +19 -4
- package/src/components/block-icon/index.js +4 -1
- package/src/components/block-icon/index.native.js +10 -16
- package/src/components/block-inspector/index.js +10 -0
- package/src/components/block-list/block-html.js +5 -0
- package/src/components/block-list/block.js +11 -3
- package/src/components/block-list/block.native.js +5 -3
- package/src/components/block-list/index.native.js +1 -1
- package/src/components/block-list/style.scss +15 -0
- package/src/components/block-list/use-block-props/use-multi-selection.js +27 -7
- package/src/components/block-list-appender/index.js +8 -0
- package/src/components/block-mover/index.js +4 -4
- package/src/components/block-mover/index.native.js +4 -4
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -6
- package/src/components/block-mover/test/index.native.js +26 -28
- package/src/components/block-navigation/dropdown.js +0 -1
- package/src/components/block-patterns-list/index.js +1 -8
- package/src/components/block-patterns-list/style.scss +22 -12
- package/src/components/block-preview/README.md +1 -1
- package/src/components/block-preview/auto.js +1 -1
- package/src/components/block-preview/style.scss +0 -17
- package/src/components/block-settings/container.native.js +7 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +26 -13
- package/src/components/block-settings-menu-controls/index.js +9 -6
- package/src/components/block-styles/preview.native.js +2 -2
- package/src/components/block-switcher/block-styles-menu.js +1 -1
- package/src/components/block-switcher/index.js +7 -3
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +1 -1
- package/src/components/block-switcher/test/index.js +3 -0
- package/src/components/block-title/index.js +5 -2
- package/src/components/block-tools/block-popover.js +3 -5
- package/src/components/block-tools/index.js +5 -2
- package/src/components/block-tools/insertion-point.js +97 -9
- package/src/components/block-tools/style.scss +4 -35
- package/src/components/block-types-list/style.scss +0 -3
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/test/utils.js +216 -0
- package/src/components/border-radius-control/utils.js +18 -10
- package/src/components/color-palette/test/__snapshots__/control.js.snap +128 -71
- package/src/components/colors/test/utils.js +41 -0
- package/src/components/colors/utils.js +9 -5
- package/src/components/colors-gradients/control.js +70 -110
- package/src/components/colors-gradients/panel-color-gradient-settings.js +79 -7
- package/src/components/colors-gradients/style.scss +10 -18
- package/src/components/colors-gradients/test/control.js +41 -66
- package/src/components/contrast-checker/index.js +14 -10
- package/src/components/copy-handler/index.js +6 -1
- package/src/components/default-block-appender/index.js +2 -2
- package/src/components/default-block-appender/test/__snapshots__/index.js.snap +3 -3
- package/src/components/duotone-control/index.js +49 -41
- package/src/components/duotone-control/style.scss +27 -12
- package/src/components/editor-styles/index.js +7 -4
- package/src/components/font-appearance-control/index.js +41 -33
- package/src/components/font-appearance-control/style.scss +1 -1
- package/src/components/iframe/index.js +4 -4
- package/src/components/image-editor/aspect-ratio-dropdown.js +129 -0
- package/src/components/image-editor/constants.js +6 -0
- package/src/components/image-editor/context.js +56 -0
- package/src/components/image-editor/cropper.js +74 -0
- package/src/components/image-editor/form-controls.js +22 -0
- package/src/components/image-editor/index.js +52 -0
- package/src/components/image-editor/rotation-button.js +24 -0
- package/src/components/image-editor/use-save-image.js +97 -0
- package/src/components/image-editor/use-transform-image.js +162 -0
- package/src/components/image-editor/zoom-dropdown.js +40 -0
- package/src/components/image-size-control/use-dimension-handler.js +18 -1
- package/src/components/index.js +7 -6
- package/src/components/index.native.js +1 -4
- package/src/components/inner-blocks/button-block-appender.js +9 -0
- package/src/components/inner-blocks/index.js +8 -4
- package/src/components/inner-blocks/index.native.js +7 -4
- package/src/components/inner-blocks/use-nested-settings-update.js +26 -11
- package/src/components/inserter/block-patterns-explorer/explorer.js +50 -0
- package/src/components/inserter/block-patterns-explorer/patterns-list.js +122 -0
- package/src/components/inserter/block-patterns-explorer/sidebar.js +73 -0
- package/src/components/inserter/block-patterns-tab.js +107 -73
- package/src/components/inserter/block-types-tab.native.js +3 -15
- package/src/components/inserter/hooks/use-block-type-impressions.native.js +14 -21
- package/src/components/inserter/hooks/use-clipboard-block.native.js +3 -2
- package/src/components/inserter/index.js +15 -3
- package/src/components/inserter/index.native.js +2 -19
- package/src/components/inserter/library.js +2 -0
- package/src/components/inserter/menu.js +4 -1
- package/src/components/inserter/menu.native.js +9 -14
- package/src/components/inserter/pattern-panel.js +33 -16
- package/src/components/inserter/preview-panel.js +1 -1
- package/src/components/inserter/quick-inserter.js +1 -1
- package/src/components/inserter/reusable-blocks-tab.native.js +4 -6
- package/src/components/inserter/search-results.native.js +5 -15
- package/src/components/inserter/style.scss +80 -16
- package/src/components/inserter/test/block-types-tab.native.js +1 -1
- package/src/components/inserter/test/fixtures/index.native.js +12 -0
- package/src/components/inserter/utils.native.js +35 -0
- package/src/components/inserter-list-item/style.scss +4 -2
- package/src/components/inspector-controls/block-support-slot-container.js +10 -0
- package/src/components/inspector-controls/block-support-tools-panel.js +60 -0
- package/src/components/inspector-controls/fill.js +23 -2
- package/src/components/inspector-controls/groups.js +8 -0
- package/src/components/inspector-controls/slot.js +15 -0
- package/src/components/letter-spacing-control/index.js +12 -6
- package/src/components/link-control/README.md +47 -14
- package/src/components/link-control/index.js +102 -31
- package/src/components/link-control/link-preview.js +53 -20
- package/src/components/link-control/search-input.js +21 -7
- package/src/components/link-control/style.scss +66 -19
- package/src/components/link-control/test/index.js +311 -4
- package/src/components/list-view/block-contents.js +17 -38
- package/src/components/list-view/block.js +73 -84
- package/src/components/list-view/branch.js +123 -94
- package/src/components/list-view/index.js +82 -30
- package/src/components/list-view/leaf.js +2 -2
- package/src/components/list-view/list-item.js +5 -4
- package/src/components/list-view/style.scss +70 -33
- package/src/components/list-view/use-list-view-client-ids.js +9 -68
- package/src/components/media-placeholder/index.js +26 -19
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +4 -1
- package/src/components/media-upload/README.md +1 -1
- package/src/components/navigable-toolbar/index.js +1 -4
- package/src/components/observe-typing/index.js +3 -2
- package/src/components/plain-text/index.native.js +26 -4
- package/src/components/rich-text/embed-handler-picker.native.js +68 -0
- package/src/components/rich-text/format-edit.js +36 -2
- package/src/components/rich-text/format-toolbar/index.js +25 -6
- package/src/components/rich-text/index.js +12 -8
- package/src/components/rich-text/index.native.js +35 -1
- package/src/components/rich-text/use-paste-handler.js +30 -12
- package/src/components/rich-text/utils.js +16 -0
- package/src/components/skip-to-selected-block/README.md +39 -0
- package/src/components/typewriter/index.js +3 -2
- package/src/components/url-input/index.js +26 -10
- package/src/components/use-moving-animation/index.js +9 -8
- package/src/components/use-on-block-drop/index.js +5 -1
- package/src/components/use-setting/index.js +49 -11
- package/src/components/writing-flow/use-multi-selection.js +6 -0
- package/src/components/writing-flow/use-tab-nav.js +17 -3
- package/src/hooks/align.js +19 -10
- package/src/hooks/anchor.js +2 -2
- package/src/hooks/border.js +8 -11
- package/src/hooks/color-panel.js +4 -1
- package/src/hooks/color.js +7 -4
- package/src/hooks/dimensions.js +48 -59
- package/src/hooks/duotone.js +68 -19
- package/src/hooks/font-appearance.js +38 -7
- package/src/hooks/font-family.js +129 -33
- package/src/hooks/font-size.js +42 -6
- package/src/hooks/gap.js +2 -1
- package/src/hooks/index.js +2 -0
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/layout.scss +8 -0
- package/src/hooks/letter-spacing.js +35 -7
- package/src/hooks/line-height.js +37 -9
- package/src/hooks/lock.js +34 -0
- package/src/hooks/margin.js +1 -1
- package/src/hooks/padding.js +1 -1
- package/src/hooks/style.js +15 -11
- package/src/hooks/text-decoration.js +34 -6
- package/src/hooks/text-transform.js +34 -6
- package/src/hooks/typography.js +165 -15
- package/src/hooks/typography.scss +16 -0
- package/src/hooks/use-cached-truthy.js +20 -0
- package/src/index.js +1 -0
- package/src/layouts/flex.js +179 -50
- package/src/layouts/flow.js +54 -8
- package/src/store/actions.js +239 -377
- package/src/store/defaults.native.js +12 -0
- package/src/store/index.js +1 -2
- package/src/store/reducer.js +54 -18
- package/src/store/selectors.js +173 -47
- package/src/store/test/actions.js +407 -705
- package/src/store/test/reducer.js +22 -54
- package/src/store/test/selectors.js +79 -21
- package/src/style.scss +2 -1
- package/src/utils/index.js +1 -0
- package/src/utils/parse-css-unit-to-px.js +43 -1
- package/src/utils/test/parse-css-unit-to-px.js +148 -165
- package/src/utils/transform-styles/transforms/test/wrap.js +1 -1
- package/src/utils/transform-styles/transforms/wrap.js +16 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/duotone-control/duotone-picker-popover.js +0 -44
- package/build/components/duotone-control/duotone-picker-popover.js.map +0 -1
- package/build/components/list-view/block-slot.js +0 -121
- package/build/components/list-view/block-slot.js.map +0 -1
- package/build/components/list-view/editor.js +0 -35
- package/build/components/list-view/editor.js.map +0 -1
- package/build/components/text-decoration-and-transform/index.js +0 -39
- package/build/components/text-decoration-and-transform/index.js.map +0 -1
- package/build/store/controls.js +0 -44
- package/build/store/controls.js.map +0 -1
- package/build-module/components/duotone-control/duotone-picker-popover.js +0 -35
- package/build-module/components/duotone-control/duotone-picker-popover.js.map +0 -1
- package/build-module/components/list-view/block-slot.js +0 -96
- package/build-module/components/list-view/block-slot.js.map +0 -1
- package/build-module/components/list-view/editor.js +0 -25
- package/build-module/components/list-view/editor.js.map +0 -1
- package/build-module/components/text-decoration-and-transform/index.js +0 -30
- package/build-module/components/text-decoration-and-transform/index.js.map +0 -1
- package/build-module/store/controls.js +0 -32
- package/build-module/store/controls.js.map +0 -1
- package/src/components/duotone-control/duotone-picker-popover.js +0 -36
- package/src/components/list-view/block-slot.js +0 -120
- package/src/components/list-view/editor.js +0 -29
- package/src/components/text-decoration-and-transform/index.js +0 -36
- package/src/components/text-decoration-and-transform/style.scss +0 -3
- package/src/store/controls.js +0 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/writing-flow/use-tab-nav.js"],"names":["isFormElement","element","tagName","useTabNav","container","focusCaptureBeforeRef","focusCaptureAfterRef","lastFocus","hasMultiSelection","getSelectedBlockClientId","blockEditorStore","setNavigationMode","isNavigationMode","select","focusCaptureTabIndex","undefined","noCapture","onFocusCapture","event","current","focus","isBefore","target","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","action","tabbable","before","after","ref","node","onKeyDown","defaultPrevented","keyCode","ESCAPE","preventDefault","TAB","isShift","shiftKey","direction","next","preventScroll","onFocusOut","preventScrollOnTab","getAttribute","ownerDocument","defaultView","addEventListener","removeEventListener","mergedRefs"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { focus } from '@wordpress/dom';\nimport { TAB, ESCAPE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nfunction isFormElement( element ) {\n\tconst { tagName } = element;\n\treturn (\n\t\ttagName === 'INPUT' ||\n\t\ttagName === 'BUTTON' ||\n\t\ttagName === 'SELECT' ||\n\t\ttagName === 'TEXTAREA'\n\t);\n}\n\nexport default function useTabNav() {\n\tconst container = useRef();\n\tconst focusCaptureBeforeRef = useRef();\n\tconst focusCaptureAfterRef = useRef();\n\tconst lastFocus = useRef();\n\tconst { hasMultiSelection, getSelectedBlockClientId } = useSelect(\n\t\tblockEditorStore\n\t);\n\tconst { setNavigationMode } = useDispatch( blockEditorStore );\n\tconst isNavigationMode = useSelect(\n\t\t( select ) => select( blockEditorStore ).isNavigationMode(),\n\t\t[]\n\t);\n\n\t// Don't allow tabbing to this element in Navigation mode.\n\tconst focusCaptureTabIndex = ! isNavigationMode ? '0' : undefined;\n\n\t// Reference that holds the a flag for enabling or disabling\n\t// capturing on the focus capture elements.\n\tconst noCapture = useRef();\n\n\tfunction onFocusCapture( event ) {\n\t\t// Do not capture incoming focus if set by us in WritingFlow.\n\t\tif ( noCapture.current ) {\n\t\t\tnoCapture.current = null;\n\t\t} else if ( hasMultiSelection() ) {\n\t\t\tcontainer.current.focus();\n\t\t} else if ( getSelectedBlockClientId() ) {\n\t\t\tlastFocus.current.focus();\n\t\t} else {\n\t\t\tsetNavigationMode( true );\n\n\t\t\tconst isBefore =\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tevent.target.compareDocumentPosition( container.current ) &\n\t\t\t\tevent.target.DOCUMENT_POSITION_FOLLOWING;\n\t\t\tconst action = isBefore ? 'findNext' : 'findPrevious';\n\n\t\t\tfocus.tabbable[ action ]( event.target ).focus();\n\t\t}\n\t}\n\n\tconst before = (\n\t\t<div\n\t\t\tref={ focusCaptureBeforeRef }\n\t\t\ttabIndex={ focusCaptureTabIndex }\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={ focusCaptureTabIndex }\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\tif ( event.keyCode === ESCAPE && ! hasMultiSelection() ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetNavigationMode( true );\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\tconst isShift = event.shiftKey;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\n\t\t\tif ( ! hasMultiSelection() && ! getSelectedBlockClientId() ) {\n\t\t\t\t// Preserve the behaviour of entering navigation mode when\n\t\t\t\t// tabbing into the content without a block selection.\n\t\t\t\t// `onFocusCapture` already did this previously, but we need to\n\t\t\t\t// do it again here because after clearing block selection,\n\t\t\t\t// focus land on the writing flow container and pressing Tab\n\t\t\t\t// will no longer send focus through the focus capture element.\n\t\t\t\tif ( event.target === node ) setNavigationMode( true );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Allow tabbing between form elements rendered in a block,\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( event.target ) &&\n\t\t\t\tisFormElement( focus.tabbable[ direction ]( event.target ) )\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 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\tnoCapture.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\tlastFocus.current = event.target;\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 ( container.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( [ container, ref ] );\n\n\treturn [ before, mergedRefs, after ];\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/writing-flow/use-tab-nav.js"],"names":["isFormElement","element","tagName","useTabNav","container","focusCaptureBeforeRef","focusCaptureAfterRef","lastFocus","hasMultiSelection","getSelectedBlockClientId","getBlockCount","blockEditorStore","setNavigationMode","isNavigationMode","select","focusCaptureTabIndex","undefined","noCapture","onFocusCapture","event","current","focus","isBefore","target","compareDocumentPosition","DOCUMENT_POSITION_FOLLOWING","action","tabbable","before","after","ref","node","onKeyDown","defaultPrevented","keyCode","ESCAPE","preventDefault","TAB","isShift","shiftKey","direction","next","preventScroll","onFocusOut","ownerDocument","relatedTarget","activeElement","body","preventScrollOnTab","getAttribute","defaultView","addEventListener","removeEventListener","mergedRefs"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { focus } from '@wordpress/dom';\nimport { TAB, ESCAPE } from '@wordpress/keycodes';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nfunction isFormElement( element ) {\n\tconst { tagName } = element;\n\treturn (\n\t\ttagName === 'INPUT' ||\n\t\ttagName === 'BUTTON' ||\n\t\ttagName === 'SELECT' ||\n\t\ttagName === 'TEXTAREA'\n\t);\n}\n\nexport default function useTabNav() {\n\tconst container = useRef();\n\tconst focusCaptureBeforeRef = useRef();\n\tconst focusCaptureAfterRef = useRef();\n\tconst lastFocus = useRef();\n\tconst {\n\t\thasMultiSelection,\n\t\tgetSelectedBlockClientId,\n\t\tgetBlockCount,\n\t} = useSelect( blockEditorStore );\n\tconst { setNavigationMode } = useDispatch( blockEditorStore );\n\tconst isNavigationMode = useSelect(\n\t\t( select ) => select( blockEditorStore ).isNavigationMode(),\n\t\t[]\n\t);\n\n\t// Don't allow tabbing to this element in Navigation mode.\n\tconst focusCaptureTabIndex = ! isNavigationMode ? '0' : undefined;\n\n\t// Reference that holds the a flag for enabling or disabling\n\t// capturing on the focus capture elements.\n\tconst noCapture = useRef();\n\n\tfunction onFocusCapture( event ) {\n\t\t// Do not capture incoming focus if set by us in WritingFlow.\n\t\tif ( noCapture.current ) {\n\t\t\tnoCapture.current = null;\n\t\t} else if ( hasMultiSelection() ) {\n\t\t\tcontainer.current.focus();\n\t\t} else if ( getSelectedBlockClientId() ) {\n\t\t\tlastFocus.current.focus();\n\t\t} else {\n\t\t\tsetNavigationMode( true );\n\n\t\t\tconst isBefore =\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tevent.target.compareDocumentPosition( container.current ) &\n\t\t\t\tevent.target.DOCUMENT_POSITION_FOLLOWING;\n\t\t\tconst action = isBefore ? 'findNext' : 'findPrevious';\n\n\t\t\tfocus.tabbable[ action ]( event.target ).focus();\n\t\t}\n\t}\n\n\tconst before = (\n\t\t<div\n\t\t\tref={ focusCaptureBeforeRef }\n\t\t\ttabIndex={ focusCaptureTabIndex }\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={ focusCaptureTabIndex }\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\tif ( event.keyCode === ESCAPE && ! hasMultiSelection() ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetNavigationMode( true );\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\tconst isShift = event.shiftKey;\n\t\t\tconst direction = isShift ? 'findPrevious' : 'findNext';\n\n\t\t\tif ( ! hasMultiSelection() && ! getSelectedBlockClientId() ) {\n\t\t\t\t// Preserve the behaviour of entering navigation mode when\n\t\t\t\t// tabbing into the content without a block selection.\n\t\t\t\t// `onFocusCapture` already did this previously, but we need to\n\t\t\t\t// do it again here because after clearing block selection,\n\t\t\t\t// focus land on the writing flow container and pressing Tab\n\t\t\t\t// will no longer send focus through the focus capture element.\n\t\t\t\tif ( event.target === node ) setNavigationMode( true );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Allow tabbing between form elements rendered in a block,\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( event.target ) &&\n\t\t\t\tisFormElement( focus.tabbable[ direction ]( event.target ) )\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 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\tnoCapture.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\tlastFocus.current = event.target;\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\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 ( container.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( [ container, ref ] );\n\n\treturn [ before, mergedRefs, after ];\n}\n"]}
|
package/build/hooks/align.js
CHANGED
|
@@ -77,7 +77,7 @@ function getValidAlignments(blockAlign, hasWideBlockSupport = true, hasWideEnabl
|
|
|
77
77
|
validAlignments = ALL_ALIGNMENTS.filter(value => blockAlign.includes(value));
|
|
78
78
|
} else if (blockAlign === true) {
|
|
79
79
|
// `true` includes all alignments...
|
|
80
|
-
validAlignments = ALL_ALIGNMENTS;
|
|
80
|
+
validAlignments = [...ALL_ALIGNMENTS];
|
|
81
81
|
} else {
|
|
82
82
|
validAlignments = [];
|
|
83
83
|
}
|
|
@@ -130,19 +130,22 @@ function addAttribute(settings) {
|
|
|
130
130
|
const withToolbarControls = (0, _compose.createHigherOrderComponent)(BlockEdit => props => {
|
|
131
131
|
const {
|
|
132
132
|
name: blockName
|
|
133
|
-
} = props; // Compute the block
|
|
134
|
-
// if the theme supports wide alignments or not
|
|
135
|
-
//
|
|
136
|
-
//
|
|
133
|
+
} = props; // Compute the block valid alignments by taking into account,
|
|
134
|
+
// if the theme supports wide alignments or not and the layout's
|
|
135
|
+
// availble alignments. We do that for conditionally rendering
|
|
136
|
+
// Slot.
|
|
137
137
|
|
|
138
138
|
const blockAllowedAlignments = getValidAlignments((0, _blocks.getBlockSupport)(blockName, 'align'), (0, _blocks.hasBlockSupport)(blockName, 'alignWide', true));
|
|
139
|
+
const validAlignments = (0, _useAvailableAlignments.default)(blockAllowedAlignments).map(({
|
|
140
|
+
name
|
|
141
|
+
}) => name);
|
|
139
142
|
|
|
140
143
|
const updateAlignment = nextAlign => {
|
|
141
144
|
if (!nextAlign) {
|
|
142
145
|
var _blockType$attributes, _blockType$attributes2;
|
|
143
146
|
|
|
144
147
|
const blockType = (0, _blocks.getBlockType)(props.name);
|
|
145
|
-
const blockDefaultAlign = (_blockType$attributes = blockType.attributes) === null || _blockType$attributes === void 0 ? void 0 : (_blockType$attributes2 = _blockType$attributes.align) === null || _blockType$attributes2 === void 0 ? void 0 : _blockType$attributes2.default;
|
|
148
|
+
const blockDefaultAlign = blockType === null || blockType === void 0 ? void 0 : (_blockType$attributes = blockType.attributes) === null || _blockType$attributes === void 0 ? void 0 : (_blockType$attributes2 = _blockType$attributes.align) === null || _blockType$attributes2 === void 0 ? void 0 : _blockType$attributes2.default;
|
|
146
149
|
|
|
147
150
|
if (blockDefaultAlign) {
|
|
148
151
|
nextAlign = '';
|
|
@@ -154,13 +157,13 @@ const withToolbarControls = (0, _compose.createHigherOrderComponent)(BlockEdit =
|
|
|
154
157
|
});
|
|
155
158
|
};
|
|
156
159
|
|
|
157
|
-
return (0, _element.createElement)(_element.Fragment, null,
|
|
160
|
+
return (0, _element.createElement)(_element.Fragment, null, !!validAlignments.length && (0, _element.createElement)(_components.BlockControls, {
|
|
158
161
|
group: "block",
|
|
159
|
-
|
|
162
|
+
__experimentalShareWithChildBlocks: true
|
|
160
163
|
}, (0, _element.createElement)(_components.BlockAlignmentControl, {
|
|
161
164
|
value: props.attributes.align,
|
|
162
165
|
onChange: updateAlignment,
|
|
163
|
-
controls:
|
|
166
|
+
controls: validAlignments
|
|
164
167
|
})), (0, _element.createElement)(BlockEdit, props));
|
|
165
168
|
}, 'withToolbarControls');
|
|
166
169
|
/**
|
|
@@ -190,7 +193,7 @@ const withDataAlign = (0, _compose.createHigherOrderComponent)(BlockListBlock =>
|
|
|
190
193
|
|
|
191
194
|
let wrapperProps = props.wrapperProps;
|
|
192
195
|
|
|
193
|
-
if (validAlignments.
|
|
196
|
+
if (validAlignments.some(alignment => alignment.name === align)) {
|
|
194
197
|
wrapperProps = { ...wrapperProps,
|
|
195
198
|
'data-align': align
|
|
196
199
|
};
|
package/build/hooks/align.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/align.js"],"names":["ALL_ALIGNMENTS","WIDE_ALIGNMENTS","getValidAlignments","blockAlign","hasWideBlockSupport","hasWideEnabled","validAlignments","Array","isArray","filter","value","includes","addAttribute","settings","attributes","align","type","enum","withToolbarControls","BlockEdit","props","name","blockName","blockAllowedAlignments","updateAlignment","nextAlign","blockType","blockDefaultAlign","default","setAttributes","length","withDataAlign","BlockListBlock","undefined","wrapperProps","addAssignedAlign","isAlignValid","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { has, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { BlockControls, BlockAlignmentControl } from '../components';\nimport useAvailableAlignments from '../components/block-alignment-control/use-available-alignments';\n\n/**\n * An array which includes all possible valid alignments,\n * used to validate if an alignment is valid or not.\n *\n * @constant\n * @type {string[]}\n */\nconst ALL_ALIGNMENTS = [ 'left', 'center', 'right', 'wide', 'full' ];\n\n/**\n * An array which includes all wide alignments.\n * In order for this alignments to be valid they need to be supported by the block,\n * and by the theme.\n *\n * @constant\n * @type {string[]}\n */\nconst WIDE_ALIGNMENTS = [ 'wide', 'full' ];\n\n/**\n * Returns the valid alignments.\n * Takes into consideration the aligns supported by a block, if the block supports wide controls or not and if theme supports wide controls or not.\n * Exported just for testing purposes, not exported outside the module.\n *\n * @param {?boolean|string[]} blockAlign Aligns supported by the block.\n * @param {?boolean} hasWideBlockSupport True if block supports wide alignments. And False otherwise.\n * @param {?boolean} hasWideEnabled True if theme supports wide alignments. And False otherwise.\n *\n * @return {string[]} Valid alignments.\n */\nexport function getValidAlignments(\n\tblockAlign,\n\thasWideBlockSupport = true,\n\thasWideEnabled = true\n) {\n\tlet validAlignments;\n\tif ( Array.isArray( blockAlign ) ) {\n\t\tvalidAlignments = ALL_ALIGNMENTS.filter( ( value ) =>\n\t\t\tblockAlign.includes( value )\n\t\t);\n\t} else if ( blockAlign === true ) {\n\t\t// `true` includes all alignments...\n\t\tvalidAlignments = ALL_ALIGNMENTS;\n\t} else {\n\t\tvalidAlignments = [];\n\t}\n\n\tif (\n\t\t! hasWideEnabled ||\n\t\t( blockAlign === true && ! hasWideBlockSupport )\n\t) {\n\t\treturn without( validAlignments, ...WIDE_ALIGNMENTS );\n\t}\n\n\treturn validAlignments;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `align`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// allow blocks to specify their own attribute definition with default values if needed.\n\tif ( has( settings.attributes, [ 'align', 'type' ] ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'align' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\t// Allow for '' since it is used by updateAlignment function\n\t\t\t\t// in withToolbarControls for special cases with defined default values.\n\t\t\t\tenum: [ ...ALL_ALIGNMENTS, '' ],\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include new toolbar controls for block\n * alignment, if block defines support.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withToolbarControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\t// Compute the block allowed alignments without taking into account,\n\t\t// if the theme supports wide alignments or not\n\t\t// and without checking the layout for availble alignments.\n\t\t// BlockAlignmentToolbar takes both of these into account.\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( blockName, 'align' ),\n\t\t\thasBlockSupport( blockName, 'alignWide', true )\n\t\t);\n\n\t\tconst updateAlignment = ( nextAlign ) => {\n\t\t\tif ( ! nextAlign ) {\n\t\t\t\tconst blockType = getBlockType( props.name );\n\t\t\t\tconst blockDefaultAlign = blockType.attributes?.align?.default;\n\t\t\t\tif ( blockDefaultAlign ) {\n\t\t\t\t\tnextAlign = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tprops.setAttributes( { align: nextAlign } );\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ blockAllowedAlignments.length > 0 && (\n\t\t\t\t\t<BlockControls group=\"block\" __experimentalExposeToChildren>\n\t\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\t\tvalue={ props.attributes.align }\n\t\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t\t\tcontrols={ blockAllowedAlignments }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\n/**\n * Override the default block element to add alignment wrapper props.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withDataAlign = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { align } = attributes;\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( name, 'align' ),\n\t\t\thasBlockSupport( name, 'alignWide', true )\n\t\t);\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t);\n\n\t\t// If an alignment is not assigned, there's no need to go through the\n\t\t// effort to validate or assign its value.\n\t\tif ( align === undefined ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\tif ( validAlignments.includes( align ) ) {\n\t\t\twrapperProps = { ...wrapperProps, 'data-align': align };\n\t\t}\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\n/**\n * Override props assigned to save component to inject alignment class name if\n * block supports it.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addAssignedAlign( props, blockType, attributes ) {\n\tconst { align } = attributes;\n\tconst blockAlign = getBlockSupport( blockType, 'align' );\n\tconst hasWideBlockSupport = hasBlockSupport( blockType, 'alignWide', true );\n\n\t// Compute valid alignments without taking into account if\n\t// the theme supports wide alignments or not.\n\t// This way changing themes does not impact the block save.\n\tconst isAlignValid = getValidAlignments(\n\t\tblockAlign,\n\t\thasWideBlockSupport\n\t).includes( align );\n\tif ( isAlignValid ) {\n\t\tprops.className = classnames( `align${ align }`, props.className );\n\t}\n\n\treturn props;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/align/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/align/with-data-align',\n\twithDataAlign\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/align/with-toolbar-controls',\n\twithToolbarControls\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/align/addAssignedAlign',\n\taddAssignedAlign\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/align.js"],"names":["ALL_ALIGNMENTS","WIDE_ALIGNMENTS","getValidAlignments","blockAlign","hasWideBlockSupport","hasWideEnabled","validAlignments","Array","isArray","filter","value","includes","addAttribute","settings","attributes","align","type","enum","withToolbarControls","BlockEdit","props","name","blockName","blockAllowedAlignments","map","updateAlignment","nextAlign","blockType","blockDefaultAlign","default","setAttributes","length","withDataAlign","BlockListBlock","undefined","wrapperProps","some","alignment","addAssignedAlign","isAlignValid","className"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { has, without } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport {\n\tgetBlockSupport,\n\tgetBlockType,\n\thasBlockSupport,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { BlockControls, BlockAlignmentControl } from '../components';\nimport useAvailableAlignments from '../components/block-alignment-control/use-available-alignments';\n\n/**\n * An array which includes all possible valid alignments,\n * used to validate if an alignment is valid or not.\n *\n * @constant\n * @type {string[]}\n */\nconst ALL_ALIGNMENTS = [ 'left', 'center', 'right', 'wide', 'full' ];\n\n/**\n * An array which includes all wide alignments.\n * In order for this alignments to be valid they need to be supported by the block,\n * and by the theme.\n *\n * @constant\n * @type {string[]}\n */\nconst WIDE_ALIGNMENTS = [ 'wide', 'full' ];\n\n/**\n * Returns the valid alignments.\n * Takes into consideration the aligns supported by a block, if the block supports wide controls or not and if theme supports wide controls or not.\n * Exported just for testing purposes, not exported outside the module.\n *\n * @param {?boolean|string[]} blockAlign Aligns supported by the block.\n * @param {?boolean} hasWideBlockSupport True if block supports wide alignments. And False otherwise.\n * @param {?boolean} hasWideEnabled True if theme supports wide alignments. And False otherwise.\n *\n * @return {string[]} Valid alignments.\n */\nexport function getValidAlignments(\n\tblockAlign,\n\thasWideBlockSupport = true,\n\thasWideEnabled = true\n) {\n\tlet validAlignments;\n\tif ( Array.isArray( blockAlign ) ) {\n\t\tvalidAlignments = ALL_ALIGNMENTS.filter( ( value ) =>\n\t\t\tblockAlign.includes( value )\n\t\t);\n\t} else if ( blockAlign === true ) {\n\t\t// `true` includes all alignments...\n\t\tvalidAlignments = [ ...ALL_ALIGNMENTS ];\n\t} else {\n\t\tvalidAlignments = [];\n\t}\n\n\tif (\n\t\t! hasWideEnabled ||\n\t\t( blockAlign === true && ! hasWideBlockSupport )\n\t) {\n\t\treturn without( validAlignments, ...WIDE_ALIGNMENTS );\n\t}\n\n\treturn validAlignments;\n}\n\n/**\n * Filters registered block settings, extending attributes to include `align`.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// allow blocks to specify their own attribute definition with default values if needed.\n\tif ( has( settings.attributes, [ 'align', 'type' ] ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'align' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\talign: {\n\t\t\t\ttype: 'string',\n\t\t\t\t// Allow for '' since it is used by updateAlignment function\n\t\t\t\t// in withToolbarControls for special cases with defined default values.\n\t\t\t\tenum: [ ...ALL_ALIGNMENTS, '' ],\n\t\t\t},\n\t\t};\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override the default edit UI to include new toolbar controls for block\n * alignment, if block defines support.\n *\n * @param {Function} BlockEdit Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withToolbarControls = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name: blockName } = props;\n\t\t// Compute the block valid alignments by taking into account,\n\t\t// if the theme supports wide alignments or not and the layout's\n\t\t// availble alignments. We do that for conditionally rendering\n\t\t// Slot.\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( blockName, 'align' ),\n\t\t\thasBlockSupport( blockName, 'alignWide', true )\n\t\t);\n\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t).map( ( { name } ) => name );\n\n\t\tconst updateAlignment = ( nextAlign ) => {\n\t\t\tif ( ! nextAlign ) {\n\t\t\t\tconst blockType = getBlockType( props.name );\n\t\t\t\tconst blockDefaultAlign = blockType?.attributes?.align?.default;\n\t\t\t\tif ( blockDefaultAlign ) {\n\t\t\t\t\tnextAlign = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tprops.setAttributes( { align: nextAlign } );\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ !! validAlignments.length && (\n\t\t\t\t\t<BlockControls\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t__experimentalShareWithChildBlocks\n\t\t\t\t\t>\n\t\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\t\tvalue={ props.attributes.align }\n\t\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t\t\tcontrols={ validAlignments }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BlockControls>\n\t\t\t\t) }\n\t\t\t\t<BlockEdit { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\n/**\n * Override the default block element to add alignment wrapper props.\n *\n * @param {Function} BlockListBlock Original component.\n *\n * @return {Function} Wrapped component.\n */\nexport const withDataAlign = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { align } = attributes;\n\t\tconst blockAllowedAlignments = getValidAlignments(\n\t\t\tgetBlockSupport( name, 'align' ),\n\t\t\thasBlockSupport( name, 'alignWide', true )\n\t\t);\n\t\tconst validAlignments = useAvailableAlignments(\n\t\t\tblockAllowedAlignments\n\t\t);\n\n\t\t// If an alignment is not assigned, there's no need to go through the\n\t\t// effort to validate or assign its value.\n\t\tif ( align === undefined ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tlet wrapperProps = props.wrapperProps;\n\t\tif (\n\t\t\tvalidAlignments.some( ( alignment ) => alignment.name === align )\n\t\t) {\n\t\t\twrapperProps = { ...wrapperProps, 'data-align': align };\n\t\t}\n\n\t\treturn <BlockListBlock { ...props } wrapperProps={ wrapperProps } />;\n\t}\n);\n\n/**\n * Override props assigned to save component to inject alignment class name if\n * block supports it.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addAssignedAlign( props, blockType, attributes ) {\n\tconst { align } = attributes;\n\tconst blockAlign = getBlockSupport( blockType, 'align' );\n\tconst hasWideBlockSupport = hasBlockSupport( blockType, 'alignWide', true );\n\n\t// Compute valid alignments without taking into account if\n\t// the theme supports wide alignments or not.\n\t// This way changing themes does not impact the block save.\n\tconst isAlignValid = getValidAlignments(\n\t\tblockAlign,\n\t\thasWideBlockSupport\n\t).includes( align );\n\tif ( isAlignValid ) {\n\t\tprops.className = classnames( `align${ align }`, props.className );\n\t}\n\n\treturn props;\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/align/addAttribute',\n\taddAttribute\n);\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/editor/align/with-data-align',\n\twithDataAlign\n);\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/align/with-toolbar-controls',\n\twithToolbarControls\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/align/addAssignedAlign',\n\taddAssignedAlign\n);\n"]}
|
package/build/hooks/anchor.js
CHANGED
|
@@ -90,7 +90,7 @@ const withInspectorControl = (0, _compose.createHigherOrderComponent)(BlockEdit
|
|
|
90
90
|
className: "html-anchor-control",
|
|
91
91
|
label: (0, _i18n.__)('HTML anchor'),
|
|
92
92
|
help: (0, _element.createElement)(_element.Fragment, null, (0, _i18n.__)('Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.'), isWeb && (0, _element.createElement)(_components.ExternalLink, {
|
|
93
|
-
href: 'https://wordpress.org/support/article/page-jumps/'
|
|
93
|
+
href: (0, _i18n.__)('https://wordpress.org/support/article/page-jumps/')
|
|
94
94
|
}, (0, _i18n.__)('Learn more about anchors'))),
|
|
95
95
|
value: props.attributes.anchor || '',
|
|
96
96
|
placeholder: !isWeb ? (0, _i18n.__)('Add an anchor') : null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/anchor.js"],"names":["ANCHOR_REGEX","addAttribute","settings","attributes","anchor","type","source","attribute","selector","withInspectorControl","BlockEdit","props","hasAnchor","name","isSelected","isWeb","Platform","OS","textControl","nextValue","replace","setAttributes","addSaveProps","extraProps","blockType","id"],"mappings":";;;;;;;;;AAaA;;AAVA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAMA;;AAlBA;AACA;AACA;;AAGA;AACA;AACA;;AAQA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA,MAAMA,YAAY,GAAG,QAArB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,YAAT,CAAuBC,QAAvB,EAAkC;AACxC;AACA,MAAK,iBAAKA,QAAQ,CAACC,UAAd,EAA0B,CAAE,QAAF,EAAY,MAAZ,CAA1B,CAAL,EAAwD;AACvD,WAAOD,QAAP;AACA;;AACD,MAAK,6BAAiBA,QAAjB,EAA2B,QAA3B,CAAL,EAA6C;AAC5C;AACAA,IAAAA,QAAQ,CAACC,UAAT,GAAsB,EACrB,GAAGD,QAAQ,CAACC,UADS;AAErBC,MAAAA,MAAM,EAAE;AACPC,QAAAA,IAAI,EAAE,QADC;AAEPC,QAAAA,MAAM,EAAE,WAFD;AAGPC,QAAAA,SAAS,EAAE,IAHJ;AAIPC,QAAAA,QAAQ,EAAE;AAJH;AAFa,KAAtB;AASA;;AAED,SAAON,QAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMO,oBAAoB,GAAG,yCACjCC,SAAF,IAAiB;AAChB,SAASC,KAAF,IAAa;AACnB,UAAMC,SAAS,GAAG,6BAAiBD,KAAK,CAACE,IAAvB,EAA6B,QAA7B,CAAlB;;AAEA,QAAKD,SAAS,IAAID,KAAK,CAACG,UAAxB,EAAqC;AACpC,YAAMC,KAAK,GAAGC,kBAASC,EAAT,KAAgB,KAA9B;AACA,YAAMC,WAAW,GAChB,4BAAC,uBAAD;AACC,QAAA,SAAS,EAAC,qBADX;AAEC,QAAA,KAAK,EAAG,cAAI,aAAJ,CAFT;AAGC,QAAA,IAAI,EACH,qDACG,cACD,kLADC,CADH,EAKGH,KAAK,IACN,4BAAC,wBAAD;AACC,UAAA,IAAI,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/anchor.js"],"names":["ANCHOR_REGEX","addAttribute","settings","attributes","anchor","type","source","attribute","selector","withInspectorControl","BlockEdit","props","hasAnchor","name","isSelected","isWeb","Platform","OS","textControl","nextValue","replace","setAttributes","addSaveProps","extraProps","blockType","id"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { has } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { PanelBody, TextControl, ExternalLink } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\n\n/**\n * Regular expression matching invalid anchor characters for replacement.\n *\n * @type {RegExp}\n */\nconst ANCHOR_REGEX = /[\\s#]/g;\n\n/**\n * Filters registered block settings, extending attributes with anchor using ID\n * of the first node.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addAttribute( settings ) {\n\t// allow blocks to specify their own attribute definition with default values if needed.\n\tif ( has( settings.attributes, [ 'anchor', 'type' ] ) ) {\n\t\treturn settings;\n\t}\n\tif ( hasBlockSupport( settings, 'anchor' ) ) {\n\t\t// Gracefully handle if settings.attributes is undefined.\n\t\tsettings.attributes = {\n\t\t\t...settings.attributes,\n\t\t\tanchor: {\n\t\t\t\ttype: 'string',\n\t\t\t\tsource: 'attribute',\n\t\t\t\tattribute: 'id',\n\t\t\t\tselector: '*',\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 anchor ID, if block supports anchor.\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 hasAnchor = hasBlockSupport( props.name, 'anchor' );\n\n\t\t\tif ( hasAnchor && props.isSelected ) {\n\t\t\t\tconst isWeb = Platform.OS === 'web';\n\t\t\t\tconst textControl = (\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\tclassName=\"html-anchor-control\"\n\t\t\t\t\t\tlabel={ __( 'HTML anchor' ) }\n\t\t\t\t\t\thelp={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t'Enter a word or two — without spaces — to make a unique web address just for this block, called an “anchor.” Then, you’ll be able to link directly to this section of your page.'\n\t\t\t\t\t\t\t\t) }\n\n\t\t\t\t\t\t\t\t{ isWeb && (\n\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/support/article/page-jumps/'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Learn more about anchors' ) }\n\t\t\t\t\t\t\t\t\t</ExternalLink>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ props.attributes.anchor || '' }\n\t\t\t\t\t\tplaceholder={ ! isWeb ? __( 'Add an anchor' ) : null }\n\t\t\t\t\t\tonChange={ ( nextValue ) => {\n\t\t\t\t\t\t\tnextValue = nextValue.replace( ANCHOR_REGEX, '-' );\n\t\t\t\t\t\t\tprops.setAttributes( {\n\t\t\t\t\t\t\t\tanchor: nextValue,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tautoCapitalize=\"none\"\n\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t/>\n\t\t\t\t);\n\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{ isWeb && (\n\t\t\t\t\t\t\t<InspectorControls __experimentalGroup=\"advanced\">\n\t\t\t\t\t\t\t\t{ textControl }\n\t\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ /*\n\t\t\t\t\t\t * We plan to remove scoping anchors to 'core/heading' to support\n\t\t\t\t\t\t * anchors for all eligble blocks. Additionally we plan to explore\n\t\t\t\t\t\t * leveraging InspectorAdvancedControls instead of a custom\n\t\t\t\t\t\t * PanelBody title. https://git.io/Jtcov\n\t\t\t\t\t\t */ }\n\t\t\t\t\t\t{ ! isWeb && props.name === 'core/heading' && (\n\t\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t\t<PanelBody title={ __( 'Heading settings' ) }>\n\t\t\t\t\t\t\t\t\t{ textControl }\n\t\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t\t) }\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 anchor ID, if block\n * supports anchor. 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 ( hasBlockSupport( blockType, 'anchor' ) ) {\n\t\textraProps.id = attributes.anchor === '' ? null : attributes.anchor;\n\t}\n\n\treturn extraProps;\n}\n\naddFilter( 'blocks.registerBlockType', 'core/anchor/attribute', addAttribute );\naddFilter(\n\t'editor.BlockEdit',\n\t'core/editor/anchor/with-inspector-control',\n\twithInspectorControl\n);\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/anchor/save-props',\n\taddSaveProps\n);\n"]}
|
package/build/hooks/border.js
CHANGED
|
@@ -43,10 +43,10 @@ exports.BORDER_SUPPORT_KEY = BORDER_SUPPORT_KEY;
|
|
|
43
43
|
function BorderPanel(props) {
|
|
44
44
|
const isDisabled = useIsBorderDisabled(props);
|
|
45
45
|
const isSupported = hasBorderSupport(props.name);
|
|
46
|
-
const isColorSupported = (0, _useSetting.default)('border.
|
|
47
|
-
const isRadiusSupported = (0, _useSetting.default)('border.
|
|
48
|
-
const isStyleSupported = (0, _useSetting.default)('border.
|
|
49
|
-
const isWidthSupported = (0, _useSetting.default)('border.
|
|
46
|
+
const isColorSupported = (0, _useSetting.default)('border.color') && hasBorderSupport(props.name, 'color');
|
|
47
|
+
const isRadiusSupported = (0, _useSetting.default)('border.radius') && hasBorderSupport(props.name, 'radius');
|
|
48
|
+
const isStyleSupported = (0, _useSetting.default)('border.style') && hasBorderSupport(props.name, 'style');
|
|
49
|
+
const isWidthSupported = (0, _useSetting.default)('border.width') && hasBorderSupport(props.name, 'width');
|
|
50
50
|
|
|
51
51
|
if (isDisabled || !isSupported) {
|
|
52
52
|
return null;
|
|
@@ -108,7 +108,7 @@ function shouldSkipSerialization(blockType) {
|
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
const useIsBorderDisabled = () => {
|
|
111
|
-
const configs = [!(0, _useSetting.default)('border.
|
|
111
|
+
const configs = [!(0, _useSetting.default)('border.color'), !(0, _useSetting.default)('border.radius'), !(0, _useSetting.default)('border.style'), !(0, _useSetting.default)('border.width')];
|
|
112
112
|
return configs.every(Boolean);
|
|
113
113
|
};
|
|
114
114
|
//# sourceMappingURL=border.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/border.js"],"names":["BORDER_SUPPORT_KEY","BorderPanel","props","isDisabled","useIsBorderDisabled","isSupported","hasBorderSupport","name","isColorSupported","isRadiusSupported","isStyleSupported","isWidthSupported","blockName","feature","Platform","OS","support","color","radius","width","style","shouldSkipSerialization","blockType","__experimentalSkipSerialization","configs","every","Boolean"],"mappings":";;;;;;;;;;;;AAKA;;AAFA;;AACA;;AAEA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAhBA;AACA;AACA;;AAMA;AACA;AACA;AAQO,MAAMA,kBAAkB,GAAG,sBAA3B;;;AAEA,SAASC,WAAT,CAAsBC,KAAtB,EAA8B;AACpC,QAAMC,UAAU,GAAGC,mBAAmB,CAAEF,KAAF,CAAtC;AACA,QAAMG,WAAW,GAAGC,gBAAgB,CAAEJ,KAAK,CAACK,IAAR,CAApC;AAEA,QAAMC,gBAAgB,GACrB,yBAAY,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/border.js"],"names":["BORDER_SUPPORT_KEY","BorderPanel","props","isDisabled","useIsBorderDisabled","isSupported","hasBorderSupport","name","isColorSupported","isRadiusSupported","isStyleSupported","isWidthSupported","blockName","feature","Platform","OS","support","color","radius","width","style","shouldSkipSerialization","blockType","__experimentalSkipSerialization","configs","every","Boolean"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { PanelBody } from '@wordpress/components';\nimport { Platform } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport InspectorControls from '../components/inspector-controls';\nimport useSetting from '../components/use-setting';\nimport { BorderColorEdit } from './border-color';\nimport { BorderRadiusEdit } from './border-radius';\nimport { BorderStyleEdit } from './border-style';\nimport { BorderWidthEdit } from './border-width';\n\nexport const BORDER_SUPPORT_KEY = '__experimentalBorder';\n\nexport function BorderPanel( props ) {\n\tconst isDisabled = useIsBorderDisabled( props );\n\tconst isSupported = hasBorderSupport( props.name );\n\n\tconst isColorSupported =\n\t\tuseSetting( 'border.color' ) && hasBorderSupport( props.name, 'color' );\n\n\tconst isRadiusSupported =\n\t\tuseSetting( 'border.radius' ) &&\n\t\thasBorderSupport( props.name, 'radius' );\n\n\tconst isStyleSupported =\n\t\tuseSetting( 'border.style' ) && hasBorderSupport( props.name, 'style' );\n\n\tconst isWidthSupported =\n\t\tuseSetting( 'border.width' ) && hasBorderSupport( props.name, 'width' );\n\n\tif ( isDisabled || ! isSupported ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<PanelBody\n\t\t\t\tclassName=\"block-editor-hooks__border-controls\"\n\t\t\t\ttitle={ __( 'Border' ) }\n\t\t\t\tinitialOpen={ false }\n\t\t\t>\n\t\t\t\t{ ( isWidthSupported || isStyleSupported ) && (\n\t\t\t\t\t<div className=\"block-editor-hooks__border-controls-row\">\n\t\t\t\t\t\t{ isWidthSupported && <BorderWidthEdit { ...props } /> }\n\t\t\t\t\t\t{ isStyleSupported && <BorderStyleEdit { ...props } /> }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ isColorSupported && <BorderColorEdit { ...props } /> }\n\t\t\t\t{ isRadiusSupported && <BorderRadiusEdit { ...props } /> }\n\t\t\t</PanelBody>\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 * Check whether serialization of border classes and styles should be skipped.\n *\n * @param {string|Object} blockType Block name or block type object.\n *\n * @return {boolean} Whether serialization of border properties should occur.\n */\nexport function shouldSkipSerialization( blockType ) {\n\tconst support = getBlockSupport( blockType, BORDER_SUPPORT_KEY );\n\n\treturn support?.__experimentalSkipSerialization;\n}\n\n/**\n * Determines if all border support features have been disabled.\n *\n * @return {boolean} If border support is completely disabled.\n */\nconst useIsBorderDisabled = () => {\n\tconst configs = [\n\t\t! useSetting( 'border.color' ),\n\t\t! useSetting( 'border.radius' ),\n\t\t! useSetting( 'border.style' ),\n\t\t! useSetting( 'border.width' ),\n\t];\n\n\treturn configs.every( Boolean );\n};\n"]}
|
|
@@ -33,7 +33,8 @@ function getComputedStyle(node) {
|
|
|
33
33
|
function ColorPanel({
|
|
34
34
|
settings,
|
|
35
35
|
clientId,
|
|
36
|
-
enableContrastChecking = true
|
|
36
|
+
enableContrastChecking = true,
|
|
37
|
+
showTitle = true
|
|
37
38
|
}) {
|
|
38
39
|
const [detectedBackgroundColor, setDetectedBackgroundColor] = (0, _element.useState)();
|
|
39
40
|
const [detectedColor, setDetectedColor] = (0, _element.useState)();
|
|
@@ -61,7 +62,9 @@ function ColorPanel({
|
|
|
61
62
|
return (0, _element.createElement)(_inspectorControls.default, null, (0, _element.createElement)(_panelColorGradientSettings.default, {
|
|
62
63
|
title: (0, _i18n.__)('Color'),
|
|
63
64
|
initialOpen: false,
|
|
64
|
-
settings: settings
|
|
65
|
+
settings: settings,
|
|
66
|
+
showTitle: showTitle,
|
|
67
|
+
__experimentalHasMultipleOrigins: true
|
|
65
68
|
}, enableContrastChecking && (0, _element.createElement)(_contrastChecker.default, {
|
|
66
69
|
backgroundColor: detectedBackgroundColor,
|
|
67
70
|
textColor: detectedColor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/color-panel.js"],"names":["getComputedStyle","node","ownerDocument","defaultView","ColorPanel","settings","clientId","enableContrastChecking","detectedBackgroundColor","setDetectedBackgroundColor","detectedColor","setDetectedColor","ref","current","color","backgroundColorNode","backgroundColor","parentNode","nodeType","ELEMENT_NODE"],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/color-panel.js"],"names":["getComputedStyle","node","ownerDocument","defaultView","ColorPanel","settings","clientId","enableContrastChecking","showTitle","detectedBackgroundColor","setDetectedBackgroundColor","detectedColor","setDetectedColor","ref","current","color","backgroundColorNode","backgroundColor","parentNode","nodeType","ELEMENT_NODE"],"mappings":";;;;;;;;;AAGA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AAZA;AACA;AACA;;AAIA;AACA;AACA;AAMA,SAASA,gBAAT,CAA2BC,IAA3B,EAAkC;AACjC,SAAOA,IAAI,CAACC,aAAL,CAAmBC,WAAnB,CAA+BH,gBAA/B,CAAiDC,IAAjD,CAAP;AACA;;AAEc,SAASG,UAAT,CAAqB;AACnCC,EAAAA,QADmC;AAEnCC,EAAAA,QAFmC;AAGnCC,EAAAA,sBAAsB,GAAG,IAHU;AAInCC,EAAAA,SAAS,GAAG;AAJuB,CAArB,EAKX;AACH,QAAM,CAAEC,uBAAF,EAA2BC,0BAA3B,IAA0D,wBAAhE;AACA,QAAM,CAAEC,aAAF,EAAiBC,gBAAjB,IAAsC,wBAA5C;AACA,QAAMC,GAAG,GAAG,yCAAaP,QAAb,CAAZ;AAEA,0BAAW,MAAM;AAChB,QAAK,CAAEC,sBAAP,EAAgC;AAC/B;AACA;;AAED,QAAK,CAAEM,GAAG,CAACC,OAAX,EAAqB;AACpB;AACA;;AACDF,IAAAA,gBAAgB,CAAEZ,gBAAgB,CAAEa,GAAG,CAACC,OAAN,CAAhB,CAAgCC,KAAlC,CAAhB;AAEA,QAAIC,mBAAmB,GAAGH,GAAG,CAACC,OAA9B;AACA,QAAIG,eAAe,GAAGjB,gBAAgB,CAAEgB,mBAAF,CAAhB,CACpBC,eADF;;AAEA,WACCA,eAAe,KAAK,kBAApB,IACAD,mBAAmB,CAACE,UADpB,IAEAF,mBAAmB,CAACE,UAApB,CAA+BC,QAA/B,KACCH,mBAAmB,CAACE,UAApB,CAA+BE,YAJjC,EAKE;AACDJ,MAAAA,mBAAmB,GAAGA,mBAAmB,CAACE,UAA1C;AACAD,MAAAA,eAAe,GAAGjB,gBAAgB,CAAEgB,mBAAF,CAAhB,CAChBC,eADF;AAEA;;AAEDP,IAAAA,0BAA0B,CAAEO,eAAF,CAA1B;AACA,GAzBD;AA2BA,SACC,4BAAC,0BAAD,QACC,4BAAC,mCAAD;AACC,IAAA,KAAK,EAAG,cAAI,OAAJ,CADT;AAEC,IAAA,WAAW,EAAG,KAFf;AAGC,IAAA,QAAQ,EAAGZ,QAHZ;AAIC,IAAA,SAAS,EAAGG,SAJb;AAKC,IAAA,gCAAgC;AALjC,KAOGD,sBAAsB,IACvB,4BAAC,wBAAD;AACC,IAAA,eAAe,EAAGE,uBADnB;AAEC,IAAA,SAAS,EAAGE;AAFb,IARF,CADD,CADD;AAkBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport PanelColorGradientSettings from '../components/colors-gradients/panel-color-gradient-settings';\nimport ContrastChecker from '../components/contrast-checker';\nimport InspectorControls from '../components/inspector-controls';\nimport { __unstableUseBlockRef as useBlockRef } from '../components/block-list/use-block-props/use-block-refs';\n\nfunction getComputedStyle( node ) {\n\treturn node.ownerDocument.defaultView.getComputedStyle( node );\n}\n\nexport default function ColorPanel( {\n\tsettings,\n\tclientId,\n\tenableContrastChecking = true,\n\tshowTitle = true,\n} ) {\n\tconst [ detectedBackgroundColor, setDetectedBackgroundColor ] = useState();\n\tconst [ detectedColor, setDetectedColor ] = useState();\n\tconst ref = useBlockRef( clientId );\n\n\tuseEffect( () => {\n\t\tif ( ! enableContrastChecking ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! ref.current ) {\n\t\t\treturn;\n\t\t}\n\t\tsetDetectedColor( getComputedStyle( ref.current ).color );\n\n\t\tlet backgroundColorNode = ref.current;\n\t\tlet backgroundColor = getComputedStyle( backgroundColorNode )\n\t\t\t.backgroundColor;\n\t\twhile (\n\t\t\tbackgroundColor === 'rgba(0, 0, 0, 0)' &&\n\t\t\tbackgroundColorNode.parentNode &&\n\t\t\tbackgroundColorNode.parentNode.nodeType ===\n\t\t\t\tbackgroundColorNode.parentNode.ELEMENT_NODE\n\t\t) {\n\t\t\tbackgroundColorNode = backgroundColorNode.parentNode;\n\t\t\tbackgroundColor = getComputedStyle( backgroundColorNode )\n\t\t\t\t.backgroundColor;\n\t\t}\n\n\t\tsetDetectedBackgroundColor( backgroundColor );\n\t} );\n\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<PanelColorGradientSettings\n\t\t\t\ttitle={ __( 'Color' ) }\n\t\t\t\tinitialOpen={ false }\n\t\t\t\tsettings={ settings }\n\t\t\t\tshowTitle={ showTitle }\n\t\t\t\t__experimentalHasMultipleOrigins\n\t\t\t>\n\t\t\t\t{ enableContrastChecking && (\n\t\t\t\t\t<ContrastChecker\n\t\t\t\t\t\tbackgroundColor={ detectedBackgroundColor }\n\t\t\t\t\t\ttextColor={ detectedColor }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</PanelColorGradientSettings>\n\t\t</InspectorControls>\n\t);\n}\n"]}
|
package/build/hooks/color.js
CHANGED
|
@@ -329,7 +329,7 @@ function ColorEdit(props) {
|
|
|
329
329
|
const onChangeLinkColor = value => {
|
|
330
330
|
const colorObject = (0, _colors.getColorObjectByColorValue)(solids, value);
|
|
331
331
|
const newLinkColorValue = colorObject !== null && colorObject !== void 0 && colorObject.slug ? `var:preset|color|${colorObject.slug}` : value;
|
|
332
|
-
const newStyle = immutableSet(style, ['elements', 'link', 'color', 'text'], newLinkColorValue);
|
|
332
|
+
const newStyle = (0, _utils.cleanEmptyObject)(immutableSet(style, ['elements', 'link', 'color', 'text'], newLinkColorValue));
|
|
333
333
|
props.setAttributes({
|
|
334
334
|
style: newStyle
|
|
335
335
|
});
|
package/build/hooks/color.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/hooks/color.js"],"names":["COLOR_SUPPORT_KEY","EMPTY_ARRAY","hasColorSupport","blockType","colorSupport","link","gradient","background","text","shouldSkipSerialization","__experimentalSkipSerialization","hasLinkColorSupport","Platform","OS","hasGradientSupport","gradients","hasBackgroundColorSupport","hasTextColorSupport","addAttributes","settings","attributes","backgroundColor","Object","assign","type","textColor","addSaveProps","props","hasGradient","style","backgroundClass","gradientClass","textClass","newClassName","className","color","elements","undefined","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","getLinkColorFromAttributeValue","colors","value","attributeParsed","exec","immutableSet","object","path","clone","ColorEdit","name","blockName","solids","areCustomSolidsEnabled","areCustomGradientsEnabled","isLinkEnabled","isTextEnabled","isBackgroundEnabled","localAttributes","current","hasLinkColor","length","hasTextColor","hasBackgroundColor","hasGradientColor","gradientValue","onChangeColor","colorObject","attributeName","newStyle","slug","newNamedColor","newAttributes","setAttributes","onChangeGradient","onChangeLinkColor","newLinkColorValue","clientId","label","onColorChange","colorValue","onGradientChange","clearable","withColorPaletteStyles","BlockListBlock","extraStyles","wrapperProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { isObject, setWith, clone } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, Platform } from '@wordpress/element';\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n} from '../components/colors';\nimport {\n\t__experimentalGetGradientClass,\n\tgetGradientValueBySlug,\n\tgetGradientSlugByValue,\n} from '../components/gradients';\nimport { cleanEmptyObject } from './utils';\nimport ColorPanel from './color-panel';\nimport useSetting from '../components/use-setting';\n\nexport const COLOR_SUPPORT_KEY = 'color';\nconst EMPTY_ARRAY = [];\n\nconst hasColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\treturn (\n\t\tcolorSupport &&\n\t\t( colorSupport.link === true ||\n\t\t\tcolorSupport.gradient === true ||\n\t\t\tcolorSupport.background !== false ||\n\t\t\tcolorSupport.text !== false )\n\t);\n};\n\nconst shouldSkipSerialization = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport?.__experimentalSkipSerialization;\n};\n\nconst hasLinkColorSupport = ( blockType ) => {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn isObject( colorSupport ) && !! colorSupport.link;\n};\n\nconst hasGradientSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn isObject( colorSupport ) && !! colorSupport.gradients;\n};\n\nconst hasBackgroundColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport && colorSupport.background !== false;\n};\n\nconst hasTextColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport && colorSupport.text !== false;\n};\n\n/**\n * Filters registered block settings, extending attributes to include\n * `backgroundColor` and `textColor` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasColorSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\t// allow blocks to specify their own attribute definition with default values if needed.\n\tif ( ! settings.attributes.backgroundColor ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\tif ( ! settings.attributes.textColor ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\tif ( hasGradientSupport( settings ) && ! settings.attributes.gradient ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject colors classnames.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( props, blockType, attributes ) {\n\tif (\n\t\t! hasColorSupport( blockType ) ||\n\t\tshouldSkipSerialization( blockType )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst hasGradient = hasGradientSupport( blockType );\n\n\t// I'd have prefered to avoid the \"style\" attribute usage here\n\tconst { backgroundColor, textColor, gradient, style } = attributes;\n\n\tconst backgroundClass = getColorClassName(\n\t\t'background-color',\n\t\tbackgroundColor\n\t);\n\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\tconst textClass = getColorClassName( 'color', textColor );\n\tconst newClassName = classnames(\n\t\tprops.className,\n\t\ttextClass,\n\t\tgradientClass,\n\t\t{\n\t\t\t// Don't apply the background class if there's a custom gradient\n\t\t\t[ backgroundClass ]:\n\t\t\t\t( ! hasGradient || ! style?.color?.gradient ) &&\n\t\t\t\t!! backgroundClass,\n\t\t\t'has-text-color': textColor || style?.color?.text,\n\t\t\t'has-background':\n\t\t\t\tbackgroundColor ||\n\t\t\t\tstyle?.color?.background ||\n\t\t\t\t( hasGradient && ( gradient || style?.color?.gradient ) ),\n\t\t\t'has-link-color': style?.elements?.link?.color,\n\t\t}\n\t);\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to extand the block edit wrapper\n * to apply the desired styles and classnames properly.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addEditProps( settings ) {\n\tif (\n\t\t! hasColorSupport( settings ) ||\n\t\tshouldSkipSerialization( settings )\n\t) {\n\t\treturn settings;\n\t}\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\nconst getLinkColorFromAttributeValue = ( colors, value ) => {\n\tconst attributeParsed = /var:preset\\|color\\|(.+)/.exec( value );\n\tif ( attributeParsed && attributeParsed[ 1 ] ) {\n\t\treturn getColorObjectByAttributeValues( colors, attributeParsed[ 1 ] )\n\t\t\t.color;\n\t}\n\treturn value;\n};\n\nfunction immutableSet( object, path, value ) {\n\treturn setWith( object ? clone( object ) : {}, path, value, clone );\n}\n\n/**\n * Inspector control panel containing the color related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Color edit element.\n */\nexport function ColorEdit( props ) {\n\tconst { name: blockName, attributes } = props;\n\tconst solids = useSetting( 'color.palette' ) || EMPTY_ARRAY;\n\tconst gradients = useSetting( 'color.gradients' ) || EMPTY_ARRAY;\n\tconst areCustomSolidsEnabled = useSetting( 'color.custom' );\n\tconst areCustomGradientsEnabled = useSetting( 'color.customGradient' );\n\tconst isLinkEnabled = useSetting( 'color.link' );\n\tconst isTextEnabled = useSetting( 'color.text' );\n\tconst isBackgroundEnabled = useSetting( 'color.background' );\n\n\t// Shouldn't be needed but right now the ColorGradientsPanel\n\t// can trigger both onChangeColor and onChangeBackground\n\t// synchronously causing our two callbacks to override changes\n\t// from each other.\n\tconst localAttributes = useRef( attributes );\n\tuseEffect( () => {\n\t\tlocalAttributes.current = attributes;\n\t}, [ attributes ] );\n\n\tif ( ! hasColorSupport( blockName ) ) {\n\t\treturn null;\n\t}\n\n\tconst hasLinkColor =\n\t\thasLinkColorSupport( blockName ) &&\n\t\tisLinkEnabled &&\n\t\t( solids.length > 0 || areCustomSolidsEnabled );\n\tconst hasTextColor =\n\t\thasTextColorSupport( blockName ) &&\n\t\tisTextEnabled &&\n\t\t( solids.length > 0 || areCustomSolidsEnabled );\n\tconst hasBackgroundColor =\n\t\thasBackgroundColorSupport( blockName ) &&\n\t\tisBackgroundEnabled &&\n\t\t( solids.length > 0 || areCustomSolidsEnabled );\n\tconst hasGradientColor =\n\t\thasGradientSupport( blockName ) &&\n\t\t( gradients.length > 0 || areCustomGradientsEnabled );\n\n\tif (\n\t\t! hasLinkColor &&\n\t\t! hasTextColor &&\n\t\t! hasBackgroundColor &&\n\t\t! hasGradientColor\n\t) {\n\t\treturn null;\n\t}\n\n\tconst { style, textColor, backgroundColor, gradient } = attributes;\n\tlet gradientValue;\n\tif ( hasGradientColor && gradient ) {\n\t\tgradientValue = getGradientValueBySlug( gradients, gradient );\n\t} else if ( hasGradientColor ) {\n\t\tgradientValue = style?.color?.gradient;\n\t}\n\n\tconst onChangeColor = ( name ) => ( value ) => {\n\t\tconst colorObject = getColorObjectByColorValue( solids, value );\n\t\tconst attributeName = name + 'Color';\n\t\tconst newStyle = {\n\t\t\t...localAttributes.current.style,\n\t\t\tcolor: {\n\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t[ name ]: colorObject?.slug ? undefined : value,\n\t\t\t},\n\t\t};\n\n\t\tconst newNamedColor = colorObject?.slug ? colorObject.slug : undefined;\n\t\tconst newAttributes = {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t[ attributeName ]: newNamedColor,\n\t\t};\n\n\t\tprops.setAttributes( newAttributes );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...newAttributes,\n\t\t};\n\t};\n\n\tconst onChangeGradient = ( value ) => {\n\t\tconst slug = getGradientSlugByValue( gradients, value );\n\t\tlet newAttributes;\n\t\tif ( slug ) {\n\t\t\tconst newStyle = {\n\t\t\t\t...localAttributes.current?.style,\n\t\t\t\tcolor: {\n\t\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t\tgradient: undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t\tnewAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t\tgradient: slug,\n\t\t\t};\n\t\t} else {\n\t\t\tconst newStyle = {\n\t\t\t\t...localAttributes.current?.style,\n\t\t\t\tcolor: {\n\t\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t\tgradient: value,\n\t\t\t\t},\n\t\t\t};\n\t\t\tnewAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t\tgradient: undefined,\n\t\t\t};\n\t\t}\n\t\tprops.setAttributes( newAttributes );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...newAttributes,\n\t\t};\n\t};\n\n\tconst onChangeLinkColor = ( value ) => {\n\t\tconst colorObject = getColorObjectByColorValue( solids, value );\n\t\tconst newLinkColorValue = colorObject?.slug\n\t\t\t? `var:preset|color|${ colorObject.slug }`\n\t\t\t: value;\n\t\tconst newStyle = immutableSet(\n\t\t\tstyle,\n\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\tnewLinkColorValue\n\t\t);\n\t\tprops.setAttributes( { style: newStyle } );\n\t};\n\n\treturn (\n\t\t<ColorPanel\n\t\t\tenableContrastChecking={\n\t\t\t\t// Turn on contrast checker for web only since it's not supported on mobile yet.\n\t\t\t\tPlatform.OS === 'web' && ! gradient && ! style?.color?.gradient\n\t\t\t}\n\t\t\tclientId={ props.clientId }\n\t\t\tsettings={ [\n\t\t\t\t...( hasTextColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Text color' ),\n\t\t\t\t\t\t\t\tonColorChange: onChangeColor( 'text' ),\n\t\t\t\t\t\t\t\tcolorValue: getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\t\tsolids,\n\t\t\t\t\t\t\t\t\ttextColor,\n\t\t\t\t\t\t\t\t\tstyle?.color?.text\n\t\t\t\t\t\t\t\t).color,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t\t...( hasBackgroundColor || hasGradientColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Background color' ),\n\t\t\t\t\t\t\t\tonColorChange: hasBackgroundColor\n\t\t\t\t\t\t\t\t\t? onChangeColor( 'background' )\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\tcolorValue: getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\t\tsolids,\n\t\t\t\t\t\t\t\t\tbackgroundColor,\n\t\t\t\t\t\t\t\t\tstyle?.color?.background\n\t\t\t\t\t\t\t\t).color,\n\t\t\t\t\t\t\t\tgradientValue,\n\t\t\t\t\t\t\t\tonGradientChange: hasGradientColor\n\t\t\t\t\t\t\t\t\t? onChangeGradient\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t\t...( hasLinkColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Link Color' ),\n\t\t\t\t\t\t\t\tonColorChange: onChangeLinkColor,\n\t\t\t\t\t\t\t\tcolorValue: getLinkColorFromAttributeValue(\n\t\t\t\t\t\t\t\t\tsolids,\n\t\t\t\t\t\t\t\t\tstyle?.elements?.link?.color?.text\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tclearable: !! style?.elements?.link?.color\n\t\t\t\t\t\t\t\t\t?.text,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t] }\n\t\t/>\n\t);\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 withColorPaletteStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { backgroundColor, textColor } = attributes;\n\t\tconst colors = useSetting( 'color.palette' ) || EMPTY_ARRAY;\n\t\tif ( ! hasColorSupport( name ) || shouldSkipSerialization( name ) ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst extraStyles = {\n\t\t\tcolor: textColor\n\t\t\t\t? getColorObjectByAttributeValues( colors, textColor )?.color\n\t\t\t\t: undefined,\n\t\t\tbackgroundColor: backgroundColor\n\t\t\t\t? getColorObjectByAttributeValues( colors, backgroundColor )\n\t\t\t\t\t\t?.color\n\t\t\t\t: undefined,\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...extraStyles,\n\t\t\t\t...props.wrapperProps?.style,\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/color/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/color/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/color/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/color/with-color-palette-styles',\n\twithColorPaletteStyles\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/hooks/color.js"],"names":["COLOR_SUPPORT_KEY","EMPTY_ARRAY","hasColorSupport","blockType","colorSupport","link","gradient","background","text","shouldSkipSerialization","__experimentalSkipSerialization","hasLinkColorSupport","Platform","OS","hasGradientSupport","gradients","hasBackgroundColorSupport","hasTextColorSupport","addAttributes","settings","attributes","backgroundColor","Object","assign","type","textColor","addSaveProps","props","hasGradient","style","backgroundClass","gradientClass","textClass","newClassName","className","color","elements","undefined","addEditProps","existingGetEditWrapperProps","getEditWrapperProps","getLinkColorFromAttributeValue","colors","value","attributeParsed","exec","immutableSet","object","path","clone","ColorEdit","name","blockName","solids","areCustomSolidsEnabled","areCustomGradientsEnabled","isLinkEnabled","isTextEnabled","isBackgroundEnabled","localAttributes","current","hasLinkColor","length","hasTextColor","hasBackgroundColor","hasGradientColor","gradientValue","onChangeColor","colorObject","attributeName","newStyle","slug","newNamedColor","newAttributes","setAttributes","onChangeGradient","onChangeLinkColor","newLinkColorValue","clientId","label","onColorChange","colorValue","onGradientChange","clearable","withColorPaletteStyles","BlockListBlock","extraStyles","wrapperProps"],"mappings":";;;;;;;;;;;;AAYA;;;;AATA;;AACA;;AAKA;;AACA;;AACA;;AAEA;;AAKA;;AAKA;;AAKA;;AACA;;AACA;;AA9BA;AACA;AACA;;AAIA;AACA;AACA;;AAOA;AACA;AACA;AAeO,MAAMA,iBAAiB,GAAG,OAA1B;;AACP,MAAMC,WAAW,GAAG,EAApB;;AAEA,MAAMC,eAAe,GAAKC,SAAF,IAAiB;AACxC,QAAMC,YAAY,GAAG,6BAAiBD,SAAjB,EAA4BH,iBAA5B,CAArB;AACA,SACCI,YAAY,KACVA,YAAY,CAACC,IAAb,KAAsB,IAAtB,IACDD,YAAY,CAACE,QAAb,KAA0B,IADzB,IAEDF,YAAY,CAACG,UAAb,KAA4B,KAF3B,IAGDH,YAAY,CAACI,IAAb,KAAsB,KAJX,CADb;AAOA,CATD;;AAWA,MAAMC,uBAAuB,GAAKN,SAAF,IAAiB;AAChD,QAAMC,YAAY,GAAG,6BAAiBD,SAAjB,EAA4BH,iBAA5B,CAArB;AAEA,SAAOI,YAAP,aAAOA,YAAP,uBAAOA,YAAY,CAAEM,+BAArB;AACA,CAJD;;AAMA,MAAMC,mBAAmB,GAAKR,SAAF,IAAiB;AAC5C,MAAKS,kBAASC,EAAT,KAAgB,KAArB,EAA6B;AAC5B,WAAO,KAAP;AACA;;AAED,QAAMT,YAAY,GAAG,6BAAiBD,SAAjB,EAA4BH,iBAA5B,CAArB;AAEA,SAAO,sBAAUI,YAAV,KAA4B,CAAC,CAAEA,YAAY,CAACC,IAAnD;AACA,CARD;;AAUA,MAAMS,kBAAkB,GAAKX,SAAF,IAAiB;AAC3C,QAAMC,YAAY,GAAG,6BAAiBD,SAAjB,EAA4BH,iBAA5B,CAArB;AAEA,SAAO,sBAAUI,YAAV,KAA4B,CAAC,CAAEA,YAAY,CAACW,SAAnD;AACA,CAJD;;AAMA,MAAMC,yBAAyB,GAAKb,SAAF,IAAiB;AAClD,QAAMC,YAAY,GAAG,6BAAiBD,SAAjB,EAA4BH,iBAA5B,CAArB;AAEA,SAAOI,YAAY,IAAIA,YAAY,CAACG,UAAb,KAA4B,KAAnD;AACA,CAJD;;AAMA,MAAMU,mBAAmB,GAAKd,SAAF,IAAiB;AAC5C,QAAMC,YAAY,GAAG,6BAAiBD,SAAjB,EAA4BH,iBAA5B,CAArB;AAEA,SAAOI,YAAY,IAAIA,YAAY,CAACI,IAAb,KAAsB,KAA7C;AACA,CAJD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASU,aAAT,CAAwBC,QAAxB,EAAmC;AAClC,MAAK,CAAEjB,eAAe,CAAEiB,QAAF,CAAtB,EAAqC;AACpC,WAAOA,QAAP;AACA,GAHiC,CAKlC;;;AACA,MAAK,CAAEA,QAAQ,CAACC,UAAT,CAAoBC,eAA3B,EAA6C;AAC5CC,IAAAA,MAAM,CAACC,MAAP,CAAeJ,QAAQ,CAACC,UAAxB,EAAoC;AACnCC,MAAAA,eAAe,EAAE;AAChBG,QAAAA,IAAI,EAAE;AADU;AADkB,KAApC;AAKA;;AACD,MAAK,CAAEL,QAAQ,CAACC,UAAT,CAAoBK,SAA3B,EAAuC;AACtCH,IAAAA,MAAM,CAACC,MAAP,CAAeJ,QAAQ,CAACC,UAAxB,EAAoC;AACnCK,MAAAA,SAAS,EAAE;AACVD,QAAAA,IAAI,EAAE;AADI;AADwB,KAApC;AAKA;;AAED,MAAKV,kBAAkB,CAAEK,QAAF,CAAlB,IAAkC,CAAEA,QAAQ,CAACC,UAAT,CAAoBd,QAA7D,EAAwE;AACvEgB,IAAAA,MAAM,CAACC,MAAP,CAAeJ,QAAQ,CAACC,UAAxB,EAAoC;AACnCd,MAAAA,QAAQ,EAAE;AACTkB,QAAAA,IAAI,EAAE;AADG;AADyB,KAApC;AAKA;;AAED,SAAOL,QAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASO,YAAT,CAAuBC,KAAvB,EAA8BxB,SAA9B,EAAyCiB,UAAzC,EAAsD;AAAA;;AAC5D,MACC,CAAElB,eAAe,CAAEC,SAAF,CAAjB,IACAM,uBAAuB,CAAEN,SAAF,CAFxB,EAGE;AACD,WAAOwB,KAAP;AACA;;AAED,QAAMC,WAAW,GAAGd,kBAAkB,CAAEX,SAAF,CAAtC,CAR4D,CAU5D;;AACA,QAAM;AAAEkB,IAAAA,eAAF;AAAmBI,IAAAA,SAAnB;AAA8BnB,IAAAA,QAA9B;AAAwCuB,IAAAA;AAAxC,MAAkDT,UAAxD;AAEA,QAAMU,eAAe,GAAG,+BACvB,kBADuB,EAEvBT,eAFuB,CAAxB;AAIA,QAAMU,aAAa,GAAG,+CAAgCzB,QAAhC,CAAtB;AACA,QAAM0B,SAAS,GAAG,+BAAmB,OAAnB,EAA4BP,SAA5B,CAAlB;AACA,QAAMQ,YAAY,GAAG,yBACpBN,KAAK,CAACO,SADc,EAEpBF,SAFoB,EAGpBD,aAHoB,EAIpB;AACC;AACA,KAAED,eAAF,GACC,CAAE,CAAEF,WAAF,IAAiB,EAAEC,KAAF,aAAEA,KAAF,+BAAEA,KAAK,CAAEM,KAAT,yCAAE,aAAc7B,QAAhB,CAAnB,KACA,CAAC,CAAEwB,eAJL;AAKC,sBAAkBL,SAAS,KAAII,KAAJ,aAAIA,KAAJ,wCAAIA,KAAK,CAAEM,KAAX,kDAAI,cAAc3B,IAAlB,CAL5B;AAMC,sBACCa,eAAe,KACfQ,KADe,aACfA,KADe,wCACfA,KAAK,CAAEM,KADQ,kDACf,cAAc5B,UADC,CAAf,IAEEqB,WAAW,KAAMtB,QAAQ,KAAIuB,KAAJ,aAAIA,KAAJ,wCAAIA,KAAK,CAAEM,KAAX,kDAAI,cAAc7B,QAAlB,CAAd,CATf;AAUC,sBAAkBuB,KAAlB,aAAkBA,KAAlB,0CAAkBA,KAAK,CAAEO,QAAzB,4EAAkB,gBAAiB/B,IAAnC,yDAAkB,qBAAuB8B;AAV1C,GAJoB,CAArB;AAiBAR,EAAAA,KAAK,CAACO,SAAN,GAAkBD,YAAY,GAAGA,YAAH,GAAkBI,SAAhD;AAEA,SAAOV,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASW,YAAT,CAAuBnB,QAAvB,EAAkC;AACxC,MACC,CAAEjB,eAAe,CAAEiB,QAAF,CAAjB,IACAV,uBAAuB,CAAEU,QAAF,CAFxB,EAGE;AACD,WAAOA,QAAP;AACA;;AACD,QAAMoB,2BAA2B,GAAGpB,QAAQ,CAACqB,mBAA7C;;AACArB,EAAAA,QAAQ,CAACqB,mBAAT,GAAiCpB,UAAF,IAAkB;AAChD,QAAIO,KAAK,GAAG,EAAZ;;AACA,QAAKY,2BAAL,EAAmC;AAClCZ,MAAAA,KAAK,GAAGY,2BAA2B,CAAEnB,UAAF,CAAnC;AACA;;AACD,WAAOM,YAAY,CAAEC,KAAF,EAASR,QAAT,EAAmBC,UAAnB,CAAnB;AACA,GAND;;AAQA,SAAOD,QAAP;AACA;;AAED,MAAMsB,8BAA8B,GAAG,CAAEC,MAAF,EAAUC,KAAV,KAAqB;AAC3D,QAAMC,eAAe,GAAG,0BAA0BC,IAA1B,CAAgCF,KAAhC,CAAxB;;AACA,MAAKC,eAAe,IAAIA,eAAe,CAAE,CAAF,CAAvC,EAA+C;AAC9C,WAAO,6CAAiCF,MAAjC,EAAyCE,eAAe,CAAE,CAAF,CAAxD,EACLT,KADF;AAEA;;AACD,SAAOQ,KAAP;AACA,CAPD;;AASA,SAASG,YAAT,CAAuBC,MAAvB,EAA+BC,IAA/B,EAAqCL,KAArC,EAA6C;AAC5C,SAAO,qBAASI,MAAM,GAAG,mBAAOA,MAAP,CAAH,GAAqB,EAApC,EAAwCC,IAAxC,EAA8CL,KAA9C,EAAqDM,aAArD,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASC,SAAT,CAAoBvB,KAApB,EAA4B;AAAA;;AAClC,QAAM;AAAEwB,IAAAA,IAAI,EAAEC,SAAR;AAAmBhC,IAAAA;AAAnB,MAAkCO,KAAxC;AACA,QAAM0B,MAAM,GAAG,yBAAY,eAAZ,KAAiCpD,WAAhD;AACA,QAAMc,SAAS,GAAG,yBAAY,iBAAZ,KAAmCd,WAArD;AACA,QAAMqD,sBAAsB,GAAG,yBAAY,cAAZ,CAA/B;AACA,QAAMC,yBAAyB,GAAG,yBAAY,sBAAZ,CAAlC;AACA,QAAMC,aAAa,GAAG,yBAAY,YAAZ,CAAtB;AACA,QAAMC,aAAa,GAAG,yBAAY,YAAZ,CAAtB;AACA,QAAMC,mBAAmB,GAAG,yBAAY,kBAAZ,CAA5B,CARkC,CAUlC;AACA;AACA;AACA;;AACA,QAAMC,eAAe,GAAG,qBAAQvC,UAAR,CAAxB;AACA,0BAAW,MAAM;AAChBuC,IAAAA,eAAe,CAACC,OAAhB,GAA0BxC,UAA1B;AACA,GAFD,EAEG,CAAEA,UAAF,CAFH;;AAIA,MAAK,CAAElB,eAAe,CAAEkD,SAAF,CAAtB,EAAsC;AACrC,WAAO,IAAP;AACA;;AAED,QAAMS,YAAY,GACjBlD,mBAAmB,CAAEyC,SAAF,CAAnB,IACAI,aADA,KAEEH,MAAM,CAACS,MAAP,GAAgB,CAAhB,IAAqBR,sBAFvB,CADD;AAIA,QAAMS,YAAY,GACjB9C,mBAAmB,CAAEmC,SAAF,CAAnB,IACAK,aADA,KAEEJ,MAAM,CAACS,MAAP,GAAgB,CAAhB,IAAqBR,sBAFvB,CADD;AAIA,QAAMU,kBAAkB,GACvBhD,yBAAyB,CAAEoC,SAAF,CAAzB,IACAM,mBADA,KAEEL,MAAM,CAACS,MAAP,GAAgB,CAAhB,IAAqBR,sBAFvB,CADD;AAIA,QAAMW,gBAAgB,GACrBnD,kBAAkB,CAAEsC,SAAF,CAAlB,KACErC,SAAS,CAAC+C,MAAV,GAAmB,CAAnB,IAAwBP,yBAD1B,CADD;;AAIA,MACC,CAAEM,YAAF,IACA,CAAEE,YADF,IAEA,CAAEC,kBAFF,IAGA,CAAEC,gBAJH,EAKE;AACD,WAAO,IAAP;AACA;;AAED,QAAM;AAAEpC,IAAAA,KAAF;AAASJ,IAAAA,SAAT;AAAoBJ,IAAAA,eAApB;AAAqCf,IAAAA;AAArC,MAAkDc,UAAxD;AACA,MAAI8C,aAAJ;;AACA,MAAKD,gBAAgB,IAAI3D,QAAzB,EAAoC;AACnC4D,IAAAA,aAAa,GAAG,uCAAwBnD,SAAxB,EAAmCT,QAAnC,CAAhB;AACA,GAFD,MAEO,IAAK2D,gBAAL,EAAwB;AAAA;;AAC9BC,IAAAA,aAAa,GAAGrC,KAAH,aAAGA,KAAH,wCAAGA,KAAK,CAAEM,KAAV,kDAAG,cAAc7B,QAA9B;AACA;;AAED,QAAM6D,aAAa,GAAKhB,IAAF,IAAcR,KAAF,IAAa;AAAA;;AAC9C,UAAMyB,WAAW,GAAG,wCAA4Bf,MAA5B,EAAoCV,KAApC,CAApB;AACA,UAAM0B,aAAa,GAAGlB,IAAI,GAAG,OAA7B;AACA,UAAMmB,QAAQ,GAAG,EAChB,GAAGX,eAAe,CAACC,OAAhB,CAAwB/B,KADX;AAEhBM,MAAAA,KAAK,EAAE,EACN,6BAAGwB,eAAe,CAACC,OAAnB,oFAAG,sBAAyB/B,KAA5B,2DAAG,uBAAgCM,KAAnC,CADM;AAEN,SAAEgB,IAAF,GAAUiB,WAAW,SAAX,IAAAA,WAAW,WAAX,IAAAA,WAAW,CAAEG,IAAb,GAAoBlC,SAApB,GAAgCM;AAFpC;AAFS,KAAjB;AAQA,UAAM6B,aAAa,GAAGJ,WAAW,SAAX,IAAAA,WAAW,WAAX,IAAAA,WAAW,CAAEG,IAAb,GAAoBH,WAAW,CAACG,IAAhC,GAAuClC,SAA7D;AACA,UAAMoC,aAAa,GAAG;AACrB5C,MAAAA,KAAK,EAAE,6BAAkByC,QAAlB,CADc;AAErB,OAAED,aAAF,GAAmBG;AAFE,KAAtB;AAKA7C,IAAAA,KAAK,CAAC+C,aAAN,CAAqBD,aAArB;AACAd,IAAAA,eAAe,CAACC,OAAhB,GAA0B,EACzB,GAAGD,eAAe,CAACC,OADM;AAEzB,SAAGa;AAFsB,KAA1B;AAIA,GAtBD;;AAwBA,QAAME,gBAAgB,GAAKhC,KAAF,IAAa;AACrC,UAAM4B,IAAI,GAAG,uCAAwBxD,SAAxB,EAAmC4B,KAAnC,CAAb;AACA,QAAI8B,aAAJ;;AACA,QAAKF,IAAL,EAAY;AAAA;;AACX,YAAMD,QAAQ,GAAG,EAChB,8BAAGX,eAAe,CAACC,OAAnB,2DAAG,uBAAyB/B,KAA5B,CADgB;AAEhBM,QAAAA,KAAK,EAAE,EACN,8BAAGwB,eAAe,CAACC,OAAnB,qFAAG,uBAAyB/B,KAA5B,2DAAG,uBAAgCM,KAAnC,CADM;AAEN7B,UAAAA,QAAQ,EAAE+B;AAFJ;AAFS,OAAjB;AAOAoC,MAAAA,aAAa,GAAG;AACf5C,QAAAA,KAAK,EAAE,6BAAkByC,QAAlB,CADQ;AAEfhE,QAAAA,QAAQ,EAAEiE;AAFK,OAAhB;AAIA,KAZD,MAYO;AAAA;;AACN,YAAMD,QAAQ,GAAG,EAChB,8BAAGX,eAAe,CAACC,OAAnB,2DAAG,uBAAyB/B,KAA5B,CADgB;AAEhBM,QAAAA,KAAK,EAAE,EACN,8BAAGwB,eAAe,CAACC,OAAnB,qFAAG,uBAAyB/B,KAA5B,2DAAG,uBAAgCM,KAAnC,CADM;AAEN7B,UAAAA,QAAQ,EAAEqC;AAFJ;AAFS,OAAjB;AAOA8B,MAAAA,aAAa,GAAG;AACf5C,QAAAA,KAAK,EAAE,6BAAkByC,QAAlB,CADQ;AAEfhE,QAAAA,QAAQ,EAAE+B;AAFK,OAAhB;AAIA;;AACDV,IAAAA,KAAK,CAAC+C,aAAN,CAAqBD,aAArB;AACAd,IAAAA,eAAe,CAACC,OAAhB,GAA0B,EACzB,GAAGD,eAAe,CAACC,OADM;AAEzB,SAAGa;AAFsB,KAA1B;AAIA,GAjCD;;AAmCA,QAAMG,iBAAiB,GAAKjC,KAAF,IAAa;AACtC,UAAMyB,WAAW,GAAG,wCAA4Bf,MAA5B,EAAoCV,KAApC,CAApB;AACA,UAAMkC,iBAAiB,GAAGT,WAAW,SAAX,IAAAA,WAAW,WAAX,IAAAA,WAAW,CAAEG,IAAb,GACtB,oBAAoBH,WAAW,CAACG,IAAM,EADhB,GAEvB5B,KAFH;AAIA,UAAM2B,QAAQ,GAAG,6BAChBxB,YAAY,CACXjB,KADW,EAEX,CAAE,UAAF,EAAc,MAAd,EAAsB,OAAtB,EAA+B,MAA/B,CAFW,EAGXgD,iBAHW,CADI,CAAjB;AAOAlD,IAAAA,KAAK,CAAC+C,aAAN,CAAqB;AAAE7C,MAAAA,KAAK,EAAEyC;AAAT,KAArB;AACA,GAdD;;AAgBA,SACC,4BAAC,mBAAD;AACC,IAAA,sBAAsB,EACrB;AACA1D,sBAASC,EAAT,KAAgB,KAAhB,IAAyB,CAAEP,QAA3B,IAAuC,EAAEuB,KAAF,aAAEA,KAAF,gCAAEA,KAAK,CAAEM,KAAT,0CAAE,cAAc7B,QAAhB,CAHzC;AAKC,IAAA,QAAQ,EAAGqB,KAAK,CAACmD,QALlB;AAMC,IAAA,QAAQ,EAAG,CACV,IAAKf,YAAY,GACd,CACA;AACCgB,MAAAA,KAAK,EAAE,cAAI,YAAJ,CADR;AAECC,MAAAA,aAAa,EAAEb,aAAa,CAAE,MAAF,CAF7B;AAGCc,MAAAA,UAAU,EAAE,6CACX5B,MADW,EAEX5B,SAFW,EAGXI,KAHW,aAGXA,KAHW,wCAGXA,KAAK,CAAEM,KAHI,kDAGX,cAAc3B,IAHH,EAIV2B;AAPH,KADA,CADc,GAYd,EAZH,CADU,EAcV,IAAK6B,kBAAkB,IAAIC,gBAAtB,GACF,CACA;AACCc,MAAAA,KAAK,EAAE,cAAI,kBAAJ,CADR;AAECC,MAAAA,aAAa,EAAEhB,kBAAkB,GAC9BG,aAAa,CAAE,YAAF,CADiB,GAE9B9B,SAJJ;AAKC4C,MAAAA,UAAU,EAAE,6CACX5B,MADW,EAEXhC,eAFW,EAGXQ,KAHW,aAGXA,KAHW,wCAGXA,KAAK,CAAEM,KAHI,kDAGX,cAAc5B,UAHH,EAIV4B,KATH;AAUC+B,MAAAA,aAVD;AAWCgB,MAAAA,gBAAgB,EAAEjB,gBAAgB,GAC/BU,gBAD+B,GAE/BtC;AAbJ,KADA,CADE,GAkBF,EAlBH,CAdU,EAiCV,IAAKwB,YAAY,GACd,CACA;AACCkB,MAAAA,KAAK,EAAE,cAAI,YAAJ,CADR;AAECC,MAAAA,aAAa,EAAEJ,iBAFhB;AAGCK,MAAAA,UAAU,EAAExC,8BAA8B,CACzCY,MADyC,EAEzCxB,KAFyC,aAEzCA,KAFyC,2CAEzCA,KAAK,CAAEO,QAFkC,8EAEzC,iBAAiB/B,IAFwB,oFAEzC,sBAAuB8B,KAFkB,2DAEzC,uBAA8B3B,IAFW,CAH3C;AAOC2E,MAAAA,SAAS,EAAE,CAAC,EAAEtD,KAAF,aAAEA,KAAF,mCAAEA,KAAK,CAAEO,QAAT,sEAAE,iBAAiB/B,IAAnB,4EAAE,sBAAuB8B,KAAzB,mDAAE,uBACX3B,IADS;AAPb,KADA,CADc,GAad,EAbH,CAjCU;AANZ,IADD;AAyDA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAM4E,sBAAsB,GAAG,yCACnCC,cAAF,IAAwB1D,KAAF,IAAa;AAAA;;AAClC,QAAM;AAAEwB,IAAAA,IAAF;AAAQ/B,IAAAA;AAAR,MAAuBO,KAA7B;AACA,QAAM;AAAEN,IAAAA,eAAF;AAAmBI,IAAAA;AAAnB,MAAiCL,UAAvC;AACA,QAAMsB,MAAM,GAAG,yBAAY,eAAZ,KAAiCzC,WAAhD;;AACA,MAAK,CAAEC,eAAe,CAAEiD,IAAF,CAAjB,IAA6B1C,uBAAuB,CAAE0C,IAAF,CAAzD,EAAoE;AACnE,WAAO,4BAAC,cAAD,EAAqBxB,KAArB,CAAP;AACA;;AAED,QAAM2D,WAAW,GAAG;AACnBnD,IAAAA,KAAK,EAAEV,SAAS,4BACb,6CAAiCiB,MAAjC,EAAyCjB,SAAzC,CADa,0DACb,sBAAsDU,KADzC,GAEbE,SAHgB;AAInBhB,IAAAA,eAAe,EAAEA,eAAe,6BAC7B,6CAAiCqB,MAAjC,EAAyCrB,eAAzC,CAD6B,2DAC7B,uBACEc,KAF2B,GAG7BE;AAPgB,GAApB;AAUA,MAAIkD,YAAY,GAAG5D,KAAK,CAAC4D,YAAzB;AACAA,EAAAA,YAAY,GAAG,EACd,GAAG5D,KAAK,CAAC4D,YADK;AAEd1D,IAAAA,KAAK,EAAE,EACN,GAAGyD,WADG;AAEN,iCAAG3D,KAAK,CAAC4D,YAAT,wDAAG,oBAAoB1D,KAAvB;AAFM;AAFO,GAAf;AAQA,SAAO,4BAAC,cAAD,6BAAqBF,KAArB;AAA6B,IAAA,YAAY,EAAG4D;AAA5C,KAAP;AACA,CA7BoC,CAA/B;;AAgCP,sBACC,0BADD,EAEC,yBAFD,EAGCrE,aAHD;AAMA,sBACC,kCADD,EAEC,yBAFD,EAGCQ,YAHD;AAMA,sBACC,0BADD,EAEC,yBAFD,EAGCY,YAHD;AAMA,sBACC,uBADD,EAEC,sCAFD,EAGC8C,sBAHD","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { isObject, setWith, clone } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\nimport { getBlockSupport } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, Platform } from '@wordpress/element';\nimport { createHigherOrderComponent } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n} from '../components/colors';\nimport {\n\t__experimentalGetGradientClass,\n\tgetGradientValueBySlug,\n\tgetGradientSlugByValue,\n} from '../components/gradients';\nimport { cleanEmptyObject } from './utils';\nimport ColorPanel from './color-panel';\nimport useSetting from '../components/use-setting';\n\nexport const COLOR_SUPPORT_KEY = 'color';\nconst EMPTY_ARRAY = [];\n\nconst hasColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\treturn (\n\t\tcolorSupport &&\n\t\t( colorSupport.link === true ||\n\t\t\tcolorSupport.gradient === true ||\n\t\t\tcolorSupport.background !== false ||\n\t\t\tcolorSupport.text !== false )\n\t);\n};\n\nconst shouldSkipSerialization = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport?.__experimentalSkipSerialization;\n};\n\nconst hasLinkColorSupport = ( blockType ) => {\n\tif ( Platform.OS !== 'web' ) {\n\t\treturn false;\n\t}\n\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn isObject( colorSupport ) && !! colorSupport.link;\n};\n\nconst hasGradientSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn isObject( colorSupport ) && !! colorSupport.gradients;\n};\n\nconst hasBackgroundColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport && colorSupport.background !== false;\n};\n\nconst hasTextColorSupport = ( blockType ) => {\n\tconst colorSupport = getBlockSupport( blockType, COLOR_SUPPORT_KEY );\n\n\treturn colorSupport && colorSupport.text !== false;\n};\n\n/**\n * Filters registered block settings, extending attributes to include\n * `backgroundColor` and `textColor` attribute.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nfunction addAttributes( settings ) {\n\tif ( ! hasColorSupport( settings ) ) {\n\t\treturn settings;\n\t}\n\n\t// allow blocks to specify their own attribute definition with default values if needed.\n\tif ( ! settings.attributes.backgroundColor ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tbackgroundColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\tif ( ! settings.attributes.textColor ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\ttextColor: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\tif ( hasGradientSupport( settings ) && ! settings.attributes.gradient ) {\n\t\tObject.assign( settings.attributes, {\n\t\t\tgradient: {\n\t\t\t\ttype: 'string',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn settings;\n}\n\n/**\n * Override props assigned to save component to inject colors classnames.\n *\n * @param {Object} props Additional props applied to save element.\n * @param {Object} blockType Block type.\n * @param {Object} attributes Block attributes.\n *\n * @return {Object} Filtered props applied to save element.\n */\nexport function addSaveProps( props, blockType, attributes ) {\n\tif (\n\t\t! hasColorSupport( blockType ) ||\n\t\tshouldSkipSerialization( blockType )\n\t) {\n\t\treturn props;\n\t}\n\n\tconst hasGradient = hasGradientSupport( blockType );\n\n\t// I'd have prefered to avoid the \"style\" attribute usage here\n\tconst { backgroundColor, textColor, gradient, style } = attributes;\n\n\tconst backgroundClass = getColorClassName(\n\t\t'background-color',\n\t\tbackgroundColor\n\t);\n\tconst gradientClass = __experimentalGetGradientClass( gradient );\n\tconst textClass = getColorClassName( 'color', textColor );\n\tconst newClassName = classnames(\n\t\tprops.className,\n\t\ttextClass,\n\t\tgradientClass,\n\t\t{\n\t\t\t// Don't apply the background class if there's a custom gradient\n\t\t\t[ backgroundClass ]:\n\t\t\t\t( ! hasGradient || ! style?.color?.gradient ) &&\n\t\t\t\t!! backgroundClass,\n\t\t\t'has-text-color': textColor || style?.color?.text,\n\t\t\t'has-background':\n\t\t\t\tbackgroundColor ||\n\t\t\t\tstyle?.color?.background ||\n\t\t\t\t( hasGradient && ( gradient || style?.color?.gradient ) ),\n\t\t\t'has-link-color': style?.elements?.link?.color,\n\t\t}\n\t);\n\tprops.className = newClassName ? newClassName : undefined;\n\n\treturn props;\n}\n\n/**\n * Filters registered block settings to extand the block edit wrapper\n * to apply the desired styles and classnames properly.\n *\n * @param {Object} settings Original block settings.\n *\n * @return {Object} Filtered block settings.\n */\nexport function addEditProps( settings ) {\n\tif (\n\t\t! hasColorSupport( settings ) ||\n\t\tshouldSkipSerialization( settings )\n\t) {\n\t\treturn settings;\n\t}\n\tconst existingGetEditWrapperProps = settings.getEditWrapperProps;\n\tsettings.getEditWrapperProps = ( attributes ) => {\n\t\tlet props = {};\n\t\tif ( existingGetEditWrapperProps ) {\n\t\t\tprops = existingGetEditWrapperProps( attributes );\n\t\t}\n\t\treturn addSaveProps( props, settings, attributes );\n\t};\n\n\treturn settings;\n}\n\nconst getLinkColorFromAttributeValue = ( colors, value ) => {\n\tconst attributeParsed = /var:preset\\|color\\|(.+)/.exec( value );\n\tif ( attributeParsed && attributeParsed[ 1 ] ) {\n\t\treturn getColorObjectByAttributeValues( colors, attributeParsed[ 1 ] )\n\t\t\t.color;\n\t}\n\treturn value;\n};\n\nfunction immutableSet( object, path, value ) {\n\treturn setWith( object ? clone( object ) : {}, path, value, clone );\n}\n\n/**\n * Inspector control panel containing the color related configuration\n *\n * @param {Object} props\n *\n * @return {WPElement} Color edit element.\n */\nexport function ColorEdit( props ) {\n\tconst { name: blockName, attributes } = props;\n\tconst solids = useSetting( 'color.palette' ) || EMPTY_ARRAY;\n\tconst gradients = useSetting( 'color.gradients' ) || EMPTY_ARRAY;\n\tconst areCustomSolidsEnabled = useSetting( 'color.custom' );\n\tconst areCustomGradientsEnabled = useSetting( 'color.customGradient' );\n\tconst isLinkEnabled = useSetting( 'color.link' );\n\tconst isTextEnabled = useSetting( 'color.text' );\n\tconst isBackgroundEnabled = useSetting( 'color.background' );\n\n\t// Shouldn't be needed but right now the ColorGradientsPanel\n\t// can trigger both onChangeColor and onChangeBackground\n\t// synchronously causing our two callbacks to override changes\n\t// from each other.\n\tconst localAttributes = useRef( attributes );\n\tuseEffect( () => {\n\t\tlocalAttributes.current = attributes;\n\t}, [ attributes ] );\n\n\tif ( ! hasColorSupport( blockName ) ) {\n\t\treturn null;\n\t}\n\n\tconst hasLinkColor =\n\t\thasLinkColorSupport( blockName ) &&\n\t\tisLinkEnabled &&\n\t\t( solids.length > 0 || areCustomSolidsEnabled );\n\tconst hasTextColor =\n\t\thasTextColorSupport( blockName ) &&\n\t\tisTextEnabled &&\n\t\t( solids.length > 0 || areCustomSolidsEnabled );\n\tconst hasBackgroundColor =\n\t\thasBackgroundColorSupport( blockName ) &&\n\t\tisBackgroundEnabled &&\n\t\t( solids.length > 0 || areCustomSolidsEnabled );\n\tconst hasGradientColor =\n\t\thasGradientSupport( blockName ) &&\n\t\t( gradients.length > 0 || areCustomGradientsEnabled );\n\n\tif (\n\t\t! hasLinkColor &&\n\t\t! hasTextColor &&\n\t\t! hasBackgroundColor &&\n\t\t! hasGradientColor\n\t) {\n\t\treturn null;\n\t}\n\n\tconst { style, textColor, backgroundColor, gradient } = attributes;\n\tlet gradientValue;\n\tif ( hasGradientColor && gradient ) {\n\t\tgradientValue = getGradientValueBySlug( gradients, gradient );\n\t} else if ( hasGradientColor ) {\n\t\tgradientValue = style?.color?.gradient;\n\t}\n\n\tconst onChangeColor = ( name ) => ( value ) => {\n\t\tconst colorObject = getColorObjectByColorValue( solids, value );\n\t\tconst attributeName = name + 'Color';\n\t\tconst newStyle = {\n\t\t\t...localAttributes.current.style,\n\t\t\tcolor: {\n\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t[ name ]: colorObject?.slug ? undefined : value,\n\t\t\t},\n\t\t};\n\n\t\tconst newNamedColor = colorObject?.slug ? colorObject.slug : undefined;\n\t\tconst newAttributes = {\n\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t[ attributeName ]: newNamedColor,\n\t\t};\n\n\t\tprops.setAttributes( newAttributes );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...newAttributes,\n\t\t};\n\t};\n\n\tconst onChangeGradient = ( value ) => {\n\t\tconst slug = getGradientSlugByValue( gradients, value );\n\t\tlet newAttributes;\n\t\tif ( slug ) {\n\t\t\tconst newStyle = {\n\t\t\t\t...localAttributes.current?.style,\n\t\t\t\tcolor: {\n\t\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t\tgradient: undefined,\n\t\t\t\t},\n\t\t\t};\n\t\t\tnewAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t\tgradient: slug,\n\t\t\t};\n\t\t} else {\n\t\t\tconst newStyle = {\n\t\t\t\t...localAttributes.current?.style,\n\t\t\t\tcolor: {\n\t\t\t\t\t...localAttributes.current?.style?.color,\n\t\t\t\t\tgradient: value,\n\t\t\t\t},\n\t\t\t};\n\t\t\tnewAttributes = {\n\t\t\t\tstyle: cleanEmptyObject( newStyle ),\n\t\t\t\tgradient: undefined,\n\t\t\t};\n\t\t}\n\t\tprops.setAttributes( newAttributes );\n\t\tlocalAttributes.current = {\n\t\t\t...localAttributes.current,\n\t\t\t...newAttributes,\n\t\t};\n\t};\n\n\tconst onChangeLinkColor = ( value ) => {\n\t\tconst colorObject = getColorObjectByColorValue( solids, value );\n\t\tconst newLinkColorValue = colorObject?.slug\n\t\t\t? `var:preset|color|${ colorObject.slug }`\n\t\t\t: value;\n\n\t\tconst newStyle = cleanEmptyObject(\n\t\t\timmutableSet(\n\t\t\t\tstyle,\n\t\t\t\t[ 'elements', 'link', 'color', 'text' ],\n\t\t\t\tnewLinkColorValue\n\t\t\t)\n\t\t);\n\t\tprops.setAttributes( { style: newStyle } );\n\t};\n\n\treturn (\n\t\t<ColorPanel\n\t\t\tenableContrastChecking={\n\t\t\t\t// Turn on contrast checker for web only since it's not supported on mobile yet.\n\t\t\t\tPlatform.OS === 'web' && ! gradient && ! style?.color?.gradient\n\t\t\t}\n\t\t\tclientId={ props.clientId }\n\t\t\tsettings={ [\n\t\t\t\t...( hasTextColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Text color' ),\n\t\t\t\t\t\t\t\tonColorChange: onChangeColor( 'text' ),\n\t\t\t\t\t\t\t\tcolorValue: getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\t\tsolids,\n\t\t\t\t\t\t\t\t\ttextColor,\n\t\t\t\t\t\t\t\t\tstyle?.color?.text\n\t\t\t\t\t\t\t\t).color,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t\t...( hasBackgroundColor || hasGradientColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Background color' ),\n\t\t\t\t\t\t\t\tonColorChange: hasBackgroundColor\n\t\t\t\t\t\t\t\t\t? onChangeColor( 'background' )\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\tcolorValue: getColorObjectByAttributeValues(\n\t\t\t\t\t\t\t\t\tsolids,\n\t\t\t\t\t\t\t\t\tbackgroundColor,\n\t\t\t\t\t\t\t\t\tstyle?.color?.background\n\t\t\t\t\t\t\t\t).color,\n\t\t\t\t\t\t\t\tgradientValue,\n\t\t\t\t\t\t\t\tonGradientChange: hasGradientColor\n\t\t\t\t\t\t\t\t\t? onChangeGradient\n\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t\t...( hasLinkColor\n\t\t\t\t\t? [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlabel: __( 'Link Color' ),\n\t\t\t\t\t\t\t\tonColorChange: onChangeLinkColor,\n\t\t\t\t\t\t\t\tcolorValue: getLinkColorFromAttributeValue(\n\t\t\t\t\t\t\t\t\tsolids,\n\t\t\t\t\t\t\t\t\tstyle?.elements?.link?.color?.text\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tclearable: !! style?.elements?.link?.color\n\t\t\t\t\t\t\t\t\t?.text,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t ]\n\t\t\t\t\t: [] ),\n\t\t\t] }\n\t\t/>\n\t);\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 withColorPaletteStyles = createHigherOrderComponent(\n\t( BlockListBlock ) => ( props ) => {\n\t\tconst { name, attributes } = props;\n\t\tconst { backgroundColor, textColor } = attributes;\n\t\tconst colors = useSetting( 'color.palette' ) || EMPTY_ARRAY;\n\t\tif ( ! hasColorSupport( name ) || shouldSkipSerialization( name ) ) {\n\t\t\treturn <BlockListBlock { ...props } />;\n\t\t}\n\n\t\tconst extraStyles = {\n\t\t\tcolor: textColor\n\t\t\t\t? getColorObjectByAttributeValues( colors, textColor )?.color\n\t\t\t\t: undefined,\n\t\t\tbackgroundColor: backgroundColor\n\t\t\t\t? getColorObjectByAttributeValues( colors, backgroundColor )\n\t\t\t\t\t\t?.color\n\t\t\t\t: undefined,\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...extraStyles,\n\t\t\t\t...props.wrapperProps?.style,\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/color/addAttribute',\n\taddAttributes\n);\n\naddFilter(\n\t'blocks.getSaveContent.extraProps',\n\t'core/color/addSaveProps',\n\taddSaveProps\n);\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'core/color/addEditProps',\n\taddEditProps\n);\n\naddFilter(\n\t'editor.BlockListBlock',\n\t'core/color/with-color-palette-styles',\n\twithColorPaletteStyles\n);\n"]}
|
|
@@ -27,8 +27,6 @@ var _margin = require("./margin");
|
|
|
27
27
|
|
|
28
28
|
var _padding = require("./padding");
|
|
29
29
|
|
|
30
|
-
var _utils = require("./utils");
|
|
31
|
-
|
|
32
30
|
/**
|
|
33
31
|
* WordPress dependencies
|
|
34
32
|
*/
|
|
@@ -62,46 +60,44 @@ function DimensionsPanel(props) {
|
|
|
62
60
|
return null;
|
|
63
61
|
}
|
|
64
62
|
|
|
65
|
-
const defaultSpacingControls = (0, _blocks.getBlockSupport)(props.name, [SPACING_SUPPORT_KEY, '__experimentalDefaultControls']);
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
blockGap: undefined,
|
|
75
|
-
margin: undefined,
|
|
76
|
-
padding: undefined
|
|
63
|
+
const defaultSpacingControls = (0, _blocks.getBlockSupport)(props.name, [SPACING_SUPPORT_KEY, '__experimentalDefaultControls']);
|
|
64
|
+
|
|
65
|
+
const createResetAllFilter = attribute => newAttributes => {
|
|
66
|
+
var _newAttributes$style;
|
|
67
|
+
|
|
68
|
+
return { ...newAttributes,
|
|
69
|
+
style: { ...newAttributes.style,
|
|
70
|
+
spacing: { ...((_newAttributes$style = newAttributes.style) === null || _newAttributes$style === void 0 ? void 0 : _newAttributes$style.spacing),
|
|
71
|
+
[attribute]: undefined
|
|
77
72
|
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
80
75
|
};
|
|
81
76
|
|
|
82
77
|
return (0, _element.createElement)(_inspectorControls.default, {
|
|
83
|
-
|
|
84
|
-
}, (0, _element.createElement)(_components.__experimentalToolsPanel, {
|
|
85
|
-
label: (0, _i18n.__)('Dimensions options'),
|
|
86
|
-
header: (0, _i18n.__)('Dimensions'),
|
|
87
|
-
resetAll: resetAll
|
|
78
|
+
__experimentalGroup: "dimensions"
|
|
88
79
|
}, !isPaddingDisabled && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
|
|
89
80
|
hasValue: () => (0, _padding.hasPaddingValue)(props),
|
|
90
81
|
label: (0, _i18n.__)('Padding'),
|
|
91
82
|
onDeselect: () => (0, _padding.resetPadding)(props),
|
|
92
|
-
|
|
83
|
+
resetAllFilter: createResetAllFilter('padding'),
|
|
84
|
+
isShownByDefault: defaultSpacingControls === null || defaultSpacingControls === void 0 ? void 0 : defaultSpacingControls.padding,
|
|
85
|
+
panelId: props.clientId
|
|
93
86
|
}, (0, _element.createElement)(_padding.PaddingEdit, props)), !isMarginDisabled && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
|
|
94
87
|
hasValue: () => (0, _margin.hasMarginValue)(props),
|
|
95
88
|
label: (0, _i18n.__)('Margin'),
|
|
96
89
|
onDeselect: () => (0, _margin.resetMargin)(props),
|
|
97
|
-
|
|
90
|
+
resetAllFilter: createResetAllFilter('margin'),
|
|
91
|
+
isShownByDefault: defaultSpacingControls === null || defaultSpacingControls === void 0 ? void 0 : defaultSpacingControls.margin,
|
|
92
|
+
panelId: props.clientId
|
|
98
93
|
}, (0, _element.createElement)(_margin.MarginEdit, props)), !isGapDisabled && (0, _element.createElement)(_components.__experimentalToolsPanelItem, {
|
|
99
|
-
className: "single-column",
|
|
100
94
|
hasValue: () => (0, _gap.hasGapValue)(props),
|
|
101
|
-
label: (0, _i18n.__)('Block
|
|
95
|
+
label: (0, _i18n.__)('Block spacing'),
|
|
102
96
|
onDeselect: () => (0, _gap.resetGap)(props),
|
|
103
|
-
|
|
104
|
-
|
|
97
|
+
resetAllFilter: createResetAllFilter('blockGap'),
|
|
98
|
+
isShownByDefault: defaultSpacingControls === null || defaultSpacingControls === void 0 ? void 0 : defaultSpacingControls.blockGap,
|
|
99
|
+
panelId: props.clientId
|
|
100
|
+
}, (0, _element.createElement)(_gap.GapEdit, props)));
|
|
105
101
|
}
|
|
106
102
|
/**
|
|
107
103
|
* Determine whether there is dimensions related block support.
|