@wordpress/block-editor 14.9.0 → 14.10.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 +2 -0
- package/LICENSE.md +1 -1
- package/README.md +40 -0
- package/build/components/audio-player/index.native.js +1 -1
- package/build/components/audio-player/index.native.js.map +1 -1
- package/build/components/background-image-control/index.js +4 -0
- package/build/components/background-image-control/index.js.map +1 -1
- package/build/components/block-alignment-matrix-control/index.js +32 -0
- package/build/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build/components/block-card/index.js +45 -8
- package/build/components/block-card/index.js.map +1 -1
- package/build/components/block-edit/edit.js +147 -10
- package/build/components/block-edit/edit.js.map +1 -1
- package/build/components/block-list/index.js +1 -2
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +2 -2
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/zoom-out-separator.js +20 -3
- package/build/components/block-list/zoom-out-separator.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +5 -8
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/utils.js +3 -3
- package/build/components/block-styles/utils.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +19 -6
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/button-block-appender/index.js +1 -5
- package/build/components/button-block-appender/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +6 -0
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +51 -11
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/contrast-checker/index.native.js +1 -1
- package/build/components/contrast-checker/index.native.js.map +1 -1
- package/build/components/date-format-picker/index.js +7 -16
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/font-appearance-control/index.js +9 -0
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/font-family/index.js +10 -1
- package/build/components/font-family/index.js.map +1 -1
- package/build/components/global-styles/color-panel.js +3 -0
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/typography-utils.js +1 -1
- package/build/components/global-styles/typography-utils.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +2 -2
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/grid/grid-visualizer.js +9 -0
- package/build/components/grid/grid-visualizer.js.map +1 -1
- package/build/components/grid/utils.js +12 -1
- package/build/components/grid/utils.js.map +1 -1
- package/build/components/iframe/index.js +1 -1
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js +11 -11
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/index.js +1 -1
- package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js +1 -1
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
- package/build/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
- package/build/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
- package/build/components/inserter/category-tabs/index.js +1 -2
- package/build/components/inserter/category-tabs/index.js.map +1 -1
- package/build/components/inserter/index.js +6 -15
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +2 -13
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/keyboard-shortcuts/index.js +2 -2
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/line-height-control/index.js +9 -0
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/media-placeholder/index.js +2 -2
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +26 -26
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/plain-text/index.js +34 -0
- package/build/components/plain-text/index.js.map +1 -1
- package/build/components/provider/index.js +61 -5
- package/build/components/provider/index.js.map +1 -1
- package/build/components/provider/use-media-upload-settings.js +28 -0
- package/build/components/provider/use-media-upload-settings.js.map +1 -0
- package/build/components/resolution-tool/index.js +3 -1
- package/build/components/resolution-tool/index.js.map +1 -1
- package/build/components/responsive-block-control/index.js +1 -1
- package/build/components/responsive-block-control/index.js.map +1 -1
- package/build/components/rich-text/event-listeners/delete.js +7 -1
- package/build/components/rich-text/event-listeners/delete.js.map +1 -1
- package/build/components/rich-text/index.js +2 -2
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +2 -1
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/hooks/background.js +2 -0
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-bindings.js +15 -14
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/border.js +3 -3
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +1 -1
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/dimensions.js +2 -2
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/font-family.js +1 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/gap.js +2 -2
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/index.js +0 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/index.native.js +7 -0
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/style.js +7 -7
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/supports.js +7 -7
- package/build/hooks/supports.js.map +1 -1
- package/build/hooks/typography.js +6 -6
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/use-zoom-out.js +12 -1
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/hooks/utils.js +1 -1
- package/build/hooks/utils.js.map +1 -1
- package/build/store/private-actions.js +1 -1
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +11 -1
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +93 -12
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +6 -8
- package/build/store/selectors.js.map +1 -1
- package/build/utils/block-bindings.js +95 -0
- package/build/utils/block-bindings.js.map +1 -1
- package/build-module/components/audio-player/index.native.js +2 -2
- package/build-module/components/audio-player/index.native.js.map +1 -1
- package/build-module/components/background-image-control/index.js +5 -1
- package/build-module/components/background-image-control/index.js.map +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js +32 -0
- package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build-module/components/block-card/index.js +45 -8
- package/build-module/components/block-card/index.js.map +1 -1
- package/build-module/components/block-edit/edit.js +148 -11
- package/build-module/components/block-edit/edit.js.map +1 -1
- package/build-module/components/block-list/index.js +2 -3
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +1 -1
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/zoom-out-separator.js +20 -3
- package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +5 -8
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/utils.js +3 -3
- package/build-module/components/block-styles/utils.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +19 -6
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/button-block-appender/index.js +2 -6
- package/build-module/components/button-block-appender/index.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +7 -1
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +51 -11
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/contrast-checker/index.native.js +2 -2
- package/build-module/components/contrast-checker/index.native.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +7 -16
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +8 -0
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/font-family/index.js +10 -1
- package/build-module/components/font-family/index.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +3 -0
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-utils.js +1 -1
- package/build-module/components/global-styles/typography-utils.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +2 -2
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/grid/grid-visualizer.js +9 -0
- package/build-module/components/grid/grid-visualizer.js.map +1 -1
- package/build-module/components/grid/utils.js +12 -1
- package/build-module/components/grid/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +1 -1
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js +12 -12
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/index.js +1 -1
- package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js +1 -1
- package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
- package/build-module/components/inserter/block-patterns-tab/pattern-category-previews.js.map +1 -1
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
- package/build-module/components/inserter/block-patterns-tab/patterns-filter.js.map +1 -1
- package/build-module/components/inserter/category-tabs/index.js +1 -2
- package/build-module/components/inserter/category-tabs/index.js.map +1 -1
- package/build-module/components/inserter/index.js +6 -15
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +2 -13
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/keyboard-shortcuts/index.js +2 -2
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/line-height-control/index.js +8 -0
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +3 -3
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +28 -28
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/plain-text/index.js +34 -0
- package/build-module/components/plain-text/index.js.map +1 -1
- package/build-module/components/provider/index.js +62 -5
- package/build-module/components/provider/index.js.map +1 -1
- package/build-module/components/provider/use-media-upload-settings.js +22 -0
- package/build-module/components/provider/use-media-upload-settings.js.map +1 -0
- package/build-module/components/resolution-tool/index.js +3 -1
- package/build-module/components/resolution-tool/index.js.map +1 -1
- package/build-module/components/responsive-block-control/index.js +1 -1
- package/build-module/components/responsive-block-control/index.js.map +1 -1
- package/build-module/components/rich-text/event-listeners/delete.js +7 -1
- package/build-module/components/rich-text/event-listeners/delete.js.map +1 -1
- package/build-module/components/rich-text/index.js +1 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +2 -1
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/hooks/background.js +2 -0
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-bindings.js +13 -12
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/border.js +3 -3
- package/build-module/hooks/border.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 +2 -2
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/font-family.js +1 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/gap.js +2 -2
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/index.js +0 -1
- 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/style.js +7 -7
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/supports.js +7 -7
- package/build-module/hooks/supports.js.map +1 -1
- package/build-module/hooks/typography.js +6 -6
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +12 -2
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/hooks/utils.js +1 -1
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/store/private-actions.js +1 -1
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +11 -1
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +93 -12
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +6 -8
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/block-bindings.js +90 -0
- package/build-module/utils/block-bindings.js.map +1 -1
- package/build-style/style-rtl.css +27 -9
- package/build-style/style.css +27 -9
- package/package.json +33 -33
- package/src/components/audio-player/index.native.js +2 -2
- package/src/components/background-image-control/index.js +4 -0
- package/src/components/background-image-control/style.scss +4 -2
- package/src/components/block-alignment-matrix-control/README.md +29 -6
- package/src/components/block-alignment-matrix-control/index.js +31 -0
- package/src/components/block-alignment-matrix-control/stories/index.story.js +78 -0
- package/src/components/block-card/README.md +7 -0
- package/src/components/block-card/index.js +41 -12
- package/src/components/block-card/stories/index.story.js +79 -0
- package/src/components/block-card/style.scss +9 -1
- package/src/components/block-edit/edit.js +218 -11
- package/src/components/block-list/index.js +2 -7
- package/src/components/block-list/use-block-props/index.js +1 -1
- package/src/components/block-list/zoom-out-separator.js +30 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +17 -20
- package/src/components/block-styles/utils.js +3 -3
- package/src/components/block-title/stories/index.story.js +76 -0
- package/src/components/block-tools/style.scss +1 -0
- package/src/components/block-tools/zoom-out-mode-inserters.js +21 -3
- package/src/components/border-radius-control/README.md +59 -0
- package/src/components/border-radius-control/stories/index.story.js +58 -0
- package/src/components/button-block-appender/index.js +2 -7
- package/src/components/child-layout-control/index.js +14 -0
- package/src/components/colors-gradients/dropdown.js +57 -8
- package/src/components/colors-gradients/style.scss +5 -0
- package/src/components/contrast-checker/index.native.js +2 -2
- package/src/components/contrast-checker/stories/index.story.js +117 -0
- package/src/components/date-format-picker/README.md +6 -13
- package/src/components/date-format-picker/index.js +10 -17
- package/src/components/date-format-picker/stories/index.story.js +69 -0
- package/src/components/date-format-picker/style.scss +3 -1
- package/src/components/default-block-appender/content.scss +1 -0
- package/src/components/dimensions-tool/stories/aspect-ratio-tool.story.js +2 -1
- package/src/components/dimensions-tool/stories/index.story.js +2 -1
- package/src/components/dimensions-tool/stories/scale-tool.story.js +2 -1
- package/src/components/dimensions-tool/stories/width-height-tool.story.js +2 -1
- package/src/components/font-appearance-control/index.js +15 -0
- package/src/components/font-family/README.md +1 -0
- package/src/components/font-family/index.js +17 -1
- package/src/components/font-family/stories/index.story.js +1 -0
- package/src/components/global-styles/color-panel.js +3 -0
- package/src/components/global-styles/test/use-global-styles-output.js +1 -1
- package/src/components/global-styles/typography-utils.js +1 -1
- package/src/components/global-styles/use-global-styles-output.js +2 -2
- package/src/components/grid/grid-visualizer.js +11 -0
- package/src/components/grid/utils.js +19 -1
- package/src/components/iframe/index.js +1 -1
- package/src/components/inner-blocks/use-inner-block-template-sync.js +17 -10
- package/src/components/inserter/block-patterns-explorer/index.js +2 -3
- package/src/components/inserter/block-patterns-tab/index.js +3 -1
- package/src/components/inserter/block-patterns-tab/pattern-category-previews.js +4 -4
- package/src/components/inserter/block-patterns-tab/patterns-filter.js +2 -2
- package/src/components/inserter/category-tabs/index.js +3 -2
- package/src/components/inserter/index.js +1 -13
- package/src/components/inserter/quick-inserter.js +2 -25
- package/src/components/keyboard-shortcuts/index.js +2 -2
- package/src/components/line-height-control/README.md +1 -0
- package/src/components/line-height-control/index.js +12 -0
- package/src/components/line-height-control/stories/index.story.js +1 -0
- package/src/components/line-height-control/test/index.js +7 -1
- package/src/components/list-view/style.scss +10 -5
- package/src/components/media-placeholder/index.js +3 -3
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +28 -36
- package/src/components/media-replace-flow/style.scss +6 -6
- package/src/components/plain-text/README.md +2 -2
- package/src/components/plain-text/index.js +34 -0
- package/src/components/plain-text/stories/index.story.js +75 -0
- package/src/components/provider/index.js +81 -4
- package/src/components/provider/use-media-upload-settings.js +25 -0
- package/src/components/resolution-tool/index.js +2 -0
- package/src/components/resolution-tool/stories/index.story.js +36 -8
- package/src/components/responsive-block-control/index.js +1 -1
- package/src/components/rich-text/event-listeners/delete.js +6 -1
- package/src/components/rich-text/index.js +1 -1
- package/src/components/text-alignment-control/README.md +49 -0
- package/src/components/text-alignment-control/stories/index.story.js +56 -18
- package/src/components/text-decoration-control/README.md +0 -1
- package/src/components/text-decoration-control/stories/index.story.js +51 -16
- package/src/components/text-transform-control/README.md +3 -4
- package/src/components/text-transform-control/stories/index.story.js +53 -16
- package/src/components/use-block-drop-zone/index.js +8 -1
- package/src/components/warning/stories/index.story.js +86 -0
- package/src/hooks/background.js +6 -0
- package/src/hooks/block-bindings.js +17 -18
- package/src/hooks/border.js +9 -3
- package/src/hooks/color.js +1 -1
- package/src/hooks/dimensions.js +2 -2
- package/src/hooks/font-family.js +1 -1
- package/src/hooks/gap.js +2 -2
- package/src/hooks/index.js +0 -1
- package/src/hooks/index.native.js +1 -0
- package/src/hooks/style.js +13 -7
- package/src/hooks/supports.js +7 -7
- package/src/hooks/test/style.js +2 -1
- package/src/hooks/typography.js +6 -6
- package/src/hooks/use-zoom-out.js +10 -2
- package/src/hooks/utils.js +1 -1
- package/src/store/private-actions.js +1 -0
- package/src/store/private-selectors.js +15 -5
- package/src/store/reducer.js +112 -19
- package/src/store/selectors.js +6 -8
- package/src/store/test/private-selectors.js +53 -9
- package/src/store/test/reducer.js +172 -166
- package/src/store/test/selectors.js +23 -0
- package/src/utils/block-bindings.js +95 -0
- package/tsconfig.json +2 -5
- package/build/hooks/use-bindings-attributes.js +0 -262
- package/build/hooks/use-bindings-attributes.js.map +0 -1
- package/build-module/hooks/use-bindings-attributes.js +0 -253
- package/build-module/hooks/use-bindings-attributes.js.map +0 -1
- package/src/hooks/use-bindings-attributes.js +0 -322
|
@@ -4,6 +4,11 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
exports.canBindAttribute = canBindAttribute;
|
|
8
|
+
exports.canBindBlock = canBindBlock;
|
|
9
|
+
exports.getBindableAttributes = getBindableAttributes;
|
|
10
|
+
exports.hasPatternOverridesDefaultBinding = hasPatternOverridesDefaultBinding;
|
|
11
|
+
exports.replacePatternOverridesDefaultBinding = replacePatternOverridesDefaultBinding;
|
|
7
12
|
exports.useBlockBindingsUtils = useBlockBindingsUtils;
|
|
8
13
|
var _data = require("@wordpress/data");
|
|
9
14
|
var _store = require("../store");
|
|
@@ -16,10 +21,100 @@ var _blockEdit = require("../components/block-edit");
|
|
|
16
21
|
* Internal dependencies
|
|
17
22
|
*/
|
|
18
23
|
|
|
24
|
+
const DEFAULT_ATTRIBUTE = '__default';
|
|
25
|
+
const PATTERN_OVERRIDES_SOURCE = 'core/pattern-overrides';
|
|
26
|
+
const BLOCK_BINDINGS_ALLOWED_BLOCKS = {
|
|
27
|
+
'core/paragraph': ['content'],
|
|
28
|
+
'core/heading': ['content'],
|
|
29
|
+
'core/image': ['id', 'url', 'title', 'alt'],
|
|
30
|
+
'core/button': ['url', 'text', 'linkTarget', 'rel']
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Checks if the given object is empty.
|
|
35
|
+
*
|
|
36
|
+
* @param {?Object} object The object to check.
|
|
37
|
+
*
|
|
38
|
+
* @return {boolean} Whether the object is empty.
|
|
39
|
+
*/
|
|
19
40
|
function isObjectEmpty(object) {
|
|
20
41
|
return !object || Object.keys(object).length === 0;
|
|
21
42
|
}
|
|
22
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Based on the given block name, checks if it is possible to bind the block.
|
|
46
|
+
*
|
|
47
|
+
* @param {string} blockName The name of the block.
|
|
48
|
+
*
|
|
49
|
+
* @return {boolean} Whether it is possible to bind the block to sources.
|
|
50
|
+
*/
|
|
51
|
+
function canBindBlock(blockName) {
|
|
52
|
+
return blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Based on the given block name and attribute name, checks if it is possible to bind the block attribute.
|
|
57
|
+
*
|
|
58
|
+
* @param {string} blockName The name of the block.
|
|
59
|
+
* @param {string} attributeName The name of attribute.
|
|
60
|
+
*
|
|
61
|
+
* @return {boolean} Whether it is possible to bind the block attribute.
|
|
62
|
+
*/
|
|
63
|
+
function canBindAttribute(blockName, attributeName) {
|
|
64
|
+
return canBindBlock(blockName) && BLOCK_BINDINGS_ALLOWED_BLOCKS[blockName].includes(attributeName);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Gets the bindable attributes for a given block.
|
|
69
|
+
*
|
|
70
|
+
* @param {string} blockName The name of the block.
|
|
71
|
+
*
|
|
72
|
+
* @return {string[]} The bindable attributes for the block.
|
|
73
|
+
*/
|
|
74
|
+
function getBindableAttributes(blockName) {
|
|
75
|
+
return BLOCK_BINDINGS_ALLOWED_BLOCKS[blockName];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Checks if the block has the `__default` binding for pattern overrides.
|
|
80
|
+
*
|
|
81
|
+
* @param {?Record<string, object>} bindings A block's bindings from the metadata attribute.
|
|
82
|
+
*
|
|
83
|
+
* @return {boolean} Whether the block has the `__default` binding for pattern overrides.
|
|
84
|
+
*/
|
|
85
|
+
function hasPatternOverridesDefaultBinding(bindings) {
|
|
86
|
+
return bindings?.[DEFAULT_ATTRIBUTE]?.source === PATTERN_OVERRIDES_SOURCE;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Returns the bindings with the `__default` binding for pattern overrides
|
|
91
|
+
* replaced with the full-set of supported attributes. e.g.:
|
|
92
|
+
*
|
|
93
|
+
* - bindings passed in: `{ __default: { source: 'core/pattern-overrides' } }`
|
|
94
|
+
* - bindings returned: `{ content: { source: 'core/pattern-overrides' } }`
|
|
95
|
+
*
|
|
96
|
+
* @param {string} blockName The block name (e.g. 'core/paragraph').
|
|
97
|
+
* @param {?Record<string, object>} bindings A block's bindings from the metadata attribute.
|
|
98
|
+
*
|
|
99
|
+
* @return {Object} The bindings with default replaced for pattern overrides.
|
|
100
|
+
*/
|
|
101
|
+
function replacePatternOverridesDefaultBinding(blockName, bindings) {
|
|
102
|
+
// The `__default` binding currently only works for pattern overrides.
|
|
103
|
+
if (hasPatternOverridesDefaultBinding(bindings)) {
|
|
104
|
+
const supportedAttributes = BLOCK_BINDINGS_ALLOWED_BLOCKS[blockName];
|
|
105
|
+
const bindingsWithDefaults = {};
|
|
106
|
+
for (const attributeName of supportedAttributes) {
|
|
107
|
+
// If the block has mixed binding sources, retain any non pattern override bindings.
|
|
108
|
+
const bindingSource = bindings[attributeName] ? bindings[attributeName] : {
|
|
109
|
+
source: PATTERN_OVERRIDES_SOURCE
|
|
110
|
+
};
|
|
111
|
+
bindingsWithDefaults[attributeName] = bindingSource;
|
|
112
|
+
}
|
|
113
|
+
return bindingsWithDefaults;
|
|
114
|
+
}
|
|
115
|
+
return bindings;
|
|
116
|
+
}
|
|
117
|
+
|
|
23
118
|
/**
|
|
24
119
|
* Contains utils to update the block `bindings` metadata.
|
|
25
120
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_data","require","_store","_blockEdit","isObjectEmpty","object","Object","keys","length","useBlockBindingsUtils","clientId","contextClientId","useBlockEditContext","blockClientId","updateBlockAttributes","useDispatch","blockEditorStore","getBlockAttributes","useRegistry","select","updateBlockBindings","bindings","metadata","currentBindings","newBindings","entries","forEach","attribute","binding","newMetadata","undefined","removeAllBlockBindings"],"sources":["@wordpress/block-editor/src/utils/block-bindings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { useBlockEditContext } from '../components/block-edit';\n\nfunction isObjectEmpty( object ) {\n\treturn ! object || Object.keys( object ).length === 0;\n}\n\n/**\n * Contains utils to update the block `bindings` metadata.\n *\n * @typedef {Object} WPBlockBindingsUtils\n *\n * @property {Function} updateBlockBindings Updates the value of the bindings connected to block attributes.\n * @property {Function} removeAllBlockBindings Removes the bindings property of the `metadata` attribute.\n */\n\n/**\n * Retrieves the existing utils needed to update the block `bindings` metadata.\n * They can be used to create, modify, or remove connections from the existing block attributes.\n *\n * It contains the following utils:\n * - `updateBlockBindings`: Updates the value of the bindings connected to block attributes. It can be used to remove a specific binding by setting the value to `undefined`.\n * - `removeAllBlockBindings`: Removes the bindings property of the `metadata` attribute.\n *\n * @since 6.7.0 Introduced in WordPress core.\n *\n * @param {?string} clientId Optional block client ID. If not set, it will use the current block client ID from the context.\n *\n * @return {?WPBlockBindingsUtils} Object containing the block bindings utils.\n *\n * @example\n * ```js\n * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n * const { updateBlockBindings, removeAllBlockBindings } = useBlockBindingsUtils();\n *\n * // Update url and alt attributes.\n * updateBlockBindings( {\n * url: {\n * source: 'core/post-meta',\n * args: {\n * key: 'url_custom_field',\n * },\n * },\n * alt: {\n * source: 'core/post-meta',\n * args: {\n * key: 'text_custom_field',\n * },\n * },\n * } );\n *\n * // Remove binding from url attribute.\n * updateBlockBindings( { url: undefined } );\n *\n * // Remove bindings from all attributes.\n * removeAllBlockBindings();\n * ```\n */\nexport function useBlockBindingsUtils( clientId ) {\n\tconst { clientId: contextClientId } = useBlockEditContext();\n\tconst blockClientId = clientId || contextClientId;\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { getBlockAttributes } = useRegistry().select( blockEditorStore );\n\n\t/**\n\t * Updates the value of the bindings connected to block attributes.\n\t * It removes the binding when the new value is `undefined`.\n\t *\n\t * @param {Object} bindings Bindings including the attributes to update and the new object.\n\t * @param {string} bindings.source The source name to connect to.\n\t * @param {Object} [bindings.args] Object containing the arguments needed by the source.\n\t *\n\t * @example\n\t * ```js\n\t * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n\t *\n\t * const { updateBlockBindings } = useBlockBindingsUtils();\n\t * updateBlockBindings( {\n\t * url: {\n\t * source: 'core/post-meta',\n\t * args: {\n\t * key: 'url_custom_field',\n\t * },\n\t * \t },\n\t * alt: {\n\t * source: 'core/post-meta',\n\t * args: {\n\t * key: 'text_custom_field',\n\t * },\n\t * \t }\n\t * } );\n\t * ```\n\t */\n\tconst updateBlockBindings = ( bindings ) => {\n\t\tconst { metadata: { bindings: currentBindings, ...metadata } = {} } =\n\t\t\tgetBlockAttributes( blockClientId );\n\t\tconst newBindings = { ...currentBindings };\n\n\t\tObject.entries( bindings ).forEach( ( [ attribute, binding ] ) => {\n\t\t\tif ( ! binding && newBindings[ attribute ] ) {\n\t\t\t\tdelete newBindings[ attribute ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnewBindings[ attribute ] = binding;\n\t\t} );\n\n\t\tconst newMetadata = {\n\t\t\t...metadata,\n\t\t\tbindings: newBindings,\n\t\t};\n\n\t\tif ( isObjectEmpty( newMetadata.bindings ) ) {\n\t\t\tdelete newMetadata.bindings;\n\t\t}\n\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\tmetadata: isObjectEmpty( newMetadata ) ? undefined : newMetadata,\n\t\t} );\n\t};\n\n\t/**\n\t * Removes the bindings property of the `metadata` attribute.\n\t *\n\t * @example\n\t * ```js\n\t * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n\t *\n\t * const { removeAllBlockBindings } = useBlockBindingsUtils();\n\t * removeAllBlockBindings();\n\t * ```\n\t */\n\tconst removeAllBlockBindings = () => {\n\t\tconst { metadata: { bindings, ...metadata } = {} } =\n\t\t\tgetBlockAttributes( blockClientId );\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\tmetadata: isObjectEmpty( metadata ) ? undefined : metadata,\n\t\t} );\n\t};\n\n\treturn { updateBlockBindings, removeAllBlockBindings };\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAGA;AACA;AACA;;AAIA,SAASG,aAAaA,CAAEC,MAAM,EAAG;EAChC,OAAO,CAAEA,MAAM,IAAIC,MAAM,CAACC,IAAI,CAAEF,MAAO,CAAC,CAACG,MAAM,KAAK,CAAC;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAEC,QAAQ,EAAG;EACjD,MAAM;IAAEA,QAAQ,EAAEC;EAAgB,CAAC,GAAG,IAAAC,8BAAmB,EAAC,CAAC;EAC3D,MAAMC,aAAa,GAAGH,QAAQ,IAAIC,eAAe;EACjD,MAAM;IAAEG;EAAsB,CAAC,GAAG,IAAAC,iBAAW,EAAEC,YAAiB,CAAC;EACjE,MAAM;IAAEC;EAAmB,CAAC,GAAG,IAAAC,iBAAW,EAAC,CAAC,CAACC,MAAM,CAAEH,YAAiB,CAAC;;EAEvE;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACC,MAAMI,mBAAmB,GAAKC,QAAQ,IAAM;IAC3C,MAAM;MAAEC,QAAQ,EAAE;QAAED,QAAQ,EAAEE,eAAe;QAAE,GAAGD;MAAS,CAAC,GAAG,CAAC;IAAE,CAAC,GAClEL,kBAAkB,CAAEJ,aAAc,CAAC;IACpC,MAAMW,WAAW,GAAG;MAAE,GAAGD;IAAgB,CAAC;IAE1CjB,MAAM,CAACmB,OAAO,CAAEJ,QAAS,CAAC,CAACK,OAAO,CAAE,CAAE,CAAEC,SAAS,EAAEC,OAAO,CAAE,KAAM;MACjE,IAAK,CAAEA,OAAO,IAAIJ,WAAW,CAAEG,SAAS,CAAE,EAAG;QAC5C,OAAOH,WAAW,CAAEG,SAAS,CAAE;QAC/B;MACD;MACAH,WAAW,CAAEG,SAAS,CAAE,GAAGC,OAAO;IACnC,CAAE,CAAC;IAEH,MAAMC,WAAW,GAAG;MACnB,GAAGP,QAAQ;MACXD,QAAQ,EAAEG;IACX,CAAC;IAED,IAAKpB,aAAa,CAAEyB,WAAW,CAACR,QAAS,CAAC,EAAG;MAC5C,OAAOQ,WAAW,CAACR,QAAQ;IAC5B;IAEAP,qBAAqB,CAAED,aAAa,EAAE;MACrCS,QAAQ,EAAElB,aAAa,CAAEyB,WAAY,CAAC,GAAGC,SAAS,GAAGD;IACtD,CAAE,CAAC;EACJ,CAAC;;EAED;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACC,MAAME,sBAAsB,GAAGA,CAAA,KAAM;IACpC,MAAM;MAAET,QAAQ,EAAE;QAAED,QAAQ;QAAE,GAAGC;MAAS,CAAC,GAAG,CAAC;IAAE,CAAC,GACjDL,kBAAkB,CAAEJ,aAAc,CAAC;IACpCC,qBAAqB,CAAED,aAAa,EAAE;MACrCS,QAAQ,EAAElB,aAAa,CAAEkB,QAAS,CAAC,GAAGQ,SAAS,GAAGR;IACnD,CAAE,CAAC;EACJ,CAAC;EAED,OAAO;IAAEF,mBAAmB;IAAEW;EAAuB,CAAC;AACvD","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_data","require","_store","_blockEdit","DEFAULT_ATTRIBUTE","PATTERN_OVERRIDES_SOURCE","BLOCK_BINDINGS_ALLOWED_BLOCKS","isObjectEmpty","object","Object","keys","length","canBindBlock","blockName","canBindAttribute","attributeName","includes","getBindableAttributes","hasPatternOverridesDefaultBinding","bindings","source","replacePatternOverridesDefaultBinding","supportedAttributes","bindingsWithDefaults","bindingSource","useBlockBindingsUtils","clientId","contextClientId","useBlockEditContext","blockClientId","updateBlockAttributes","useDispatch","blockEditorStore","getBlockAttributes","useRegistry","select","updateBlockBindings","metadata","currentBindings","newBindings","entries","forEach","attribute","binding","newMetadata","undefined","removeAllBlockBindings"],"sources":["@wordpress/block-editor/src/utils/block-bindings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { useBlockEditContext } from '../components/block-edit';\n\nconst DEFAULT_ATTRIBUTE = '__default';\nconst PATTERN_OVERRIDES_SOURCE = 'core/pattern-overrides';\nconst BLOCK_BINDINGS_ALLOWED_BLOCKS = {\n\t'core/paragraph': [ 'content' ],\n\t'core/heading': [ 'content' ],\n\t'core/image': [ 'id', 'url', 'title', 'alt' ],\n\t'core/button': [ 'url', 'text', 'linkTarget', 'rel' ],\n};\n\n/**\n * Checks if the given object is empty.\n *\n * @param {?Object} object The object to check.\n *\n * @return {boolean} Whether the object is empty.\n */\nfunction isObjectEmpty( object ) {\n\treturn ! object || Object.keys( object ).length === 0;\n}\n\n/**\n * Based on the given block name, checks if it is possible to bind the block.\n *\n * @param {string} blockName The name of the block.\n *\n * @return {boolean} Whether it is possible to bind the block to sources.\n */\nexport function canBindBlock( blockName ) {\n\treturn blockName in BLOCK_BINDINGS_ALLOWED_BLOCKS;\n}\n\n/**\n * Based on the given block name and attribute name, checks if it is possible to bind the block attribute.\n *\n * @param {string} blockName The name of the block.\n * @param {string} attributeName The name of attribute.\n *\n * @return {boolean} Whether it is possible to bind the block attribute.\n */\nexport function canBindAttribute( blockName, attributeName ) {\n\treturn (\n\t\tcanBindBlock( blockName ) &&\n\t\tBLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ].includes( attributeName )\n\t);\n}\n\n/**\n * Gets the bindable attributes for a given block.\n *\n * @param {string} blockName The name of the block.\n *\n * @return {string[]} The bindable attributes for the block.\n */\nexport function getBindableAttributes( blockName ) {\n\treturn BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ];\n}\n\n/**\n * Checks if the block has the `__default` binding for pattern overrides.\n *\n * @param {?Record<string, object>} bindings A block's bindings from the metadata attribute.\n *\n * @return {boolean} Whether the block has the `__default` binding for pattern overrides.\n */\nexport function hasPatternOverridesDefaultBinding( bindings ) {\n\treturn bindings?.[ DEFAULT_ATTRIBUTE ]?.source === PATTERN_OVERRIDES_SOURCE;\n}\n\n/**\n * Returns the bindings with the `__default` binding for pattern overrides\n * replaced with the full-set of supported attributes. e.g.:\n *\n * - bindings passed in: `{ __default: { source: 'core/pattern-overrides' } }`\n * - bindings returned: `{ content: { source: 'core/pattern-overrides' } }`\n *\n * @param {string} blockName The block name (e.g. 'core/paragraph').\n * @param {?Record<string, object>} bindings A block's bindings from the metadata attribute.\n *\n * @return {Object} The bindings with default replaced for pattern overrides.\n */\nexport function replacePatternOverridesDefaultBinding( blockName, bindings ) {\n\t// The `__default` binding currently only works for pattern overrides.\n\tif ( hasPatternOverridesDefaultBinding( bindings ) ) {\n\t\tconst supportedAttributes = BLOCK_BINDINGS_ALLOWED_BLOCKS[ blockName ];\n\t\tconst bindingsWithDefaults = {};\n\t\tfor ( const attributeName of supportedAttributes ) {\n\t\t\t// If the block has mixed binding sources, retain any non pattern override bindings.\n\t\t\tconst bindingSource = bindings[ attributeName ]\n\t\t\t\t? bindings[ attributeName ]\n\t\t\t\t: { source: PATTERN_OVERRIDES_SOURCE };\n\t\t\tbindingsWithDefaults[ attributeName ] = bindingSource;\n\t\t}\n\n\t\treturn bindingsWithDefaults;\n\t}\n\n\treturn bindings;\n}\n\n/**\n * Contains utils to update the block `bindings` metadata.\n *\n * @typedef {Object} WPBlockBindingsUtils\n *\n * @property {Function} updateBlockBindings Updates the value of the bindings connected to block attributes.\n * @property {Function} removeAllBlockBindings Removes the bindings property of the `metadata` attribute.\n */\n\n/**\n * Retrieves the existing utils needed to update the block `bindings` metadata.\n * They can be used to create, modify, or remove connections from the existing block attributes.\n *\n * It contains the following utils:\n * - `updateBlockBindings`: Updates the value of the bindings connected to block attributes. It can be used to remove a specific binding by setting the value to `undefined`.\n * - `removeAllBlockBindings`: Removes the bindings property of the `metadata` attribute.\n *\n * @since 6.7.0 Introduced in WordPress core.\n *\n * @param {?string} clientId Optional block client ID. If not set, it will use the current block client ID from the context.\n *\n * @return {?WPBlockBindingsUtils} Object containing the block bindings utils.\n *\n * @example\n * ```js\n * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n * const { updateBlockBindings, removeAllBlockBindings } = useBlockBindingsUtils();\n *\n * // Update url and alt attributes.\n * updateBlockBindings( {\n * url: {\n * source: 'core/post-meta',\n * args: {\n * key: 'url_custom_field',\n * },\n * },\n * alt: {\n * source: 'core/post-meta',\n * args: {\n * key: 'text_custom_field',\n * },\n * },\n * } );\n *\n * // Remove binding from url attribute.\n * updateBlockBindings( { url: undefined } );\n *\n * // Remove bindings from all attributes.\n * removeAllBlockBindings();\n * ```\n */\nexport function useBlockBindingsUtils( clientId ) {\n\tconst { clientId: contextClientId } = useBlockEditContext();\n\tconst blockClientId = clientId || contextClientId;\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { getBlockAttributes } = useRegistry().select( blockEditorStore );\n\n\t/**\n\t * Updates the value of the bindings connected to block attributes.\n\t * It removes the binding when the new value is `undefined`.\n\t *\n\t * @param {Object} bindings Bindings including the attributes to update and the new object.\n\t * @param {string} bindings.source The source name to connect to.\n\t * @param {Object} [bindings.args] Object containing the arguments needed by the source.\n\t *\n\t * @example\n\t * ```js\n\t * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n\t *\n\t * const { updateBlockBindings } = useBlockBindingsUtils();\n\t * updateBlockBindings( {\n\t * url: {\n\t * source: 'core/post-meta',\n\t * args: {\n\t * key: 'url_custom_field',\n\t * },\n\t * \t },\n\t * alt: {\n\t * source: 'core/post-meta',\n\t * args: {\n\t * key: 'text_custom_field',\n\t * },\n\t * \t }\n\t * } );\n\t * ```\n\t */\n\tconst updateBlockBindings = ( bindings ) => {\n\t\tconst { metadata: { bindings: currentBindings, ...metadata } = {} } =\n\t\t\tgetBlockAttributes( blockClientId );\n\t\tconst newBindings = { ...currentBindings };\n\n\t\tObject.entries( bindings ).forEach( ( [ attribute, binding ] ) => {\n\t\t\tif ( ! binding && newBindings[ attribute ] ) {\n\t\t\t\tdelete newBindings[ attribute ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnewBindings[ attribute ] = binding;\n\t\t} );\n\n\t\tconst newMetadata = {\n\t\t\t...metadata,\n\t\t\tbindings: newBindings,\n\t\t};\n\n\t\tif ( isObjectEmpty( newMetadata.bindings ) ) {\n\t\t\tdelete newMetadata.bindings;\n\t\t}\n\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\tmetadata: isObjectEmpty( newMetadata ) ? undefined : newMetadata,\n\t\t} );\n\t};\n\n\t/**\n\t * Removes the bindings property of the `metadata` attribute.\n\t *\n\t * @example\n\t * ```js\n\t * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n\t *\n\t * const { removeAllBlockBindings } = useBlockBindingsUtils();\n\t * removeAllBlockBindings();\n\t * ```\n\t */\n\tconst removeAllBlockBindings = () => {\n\t\tconst { metadata: { bindings, ...metadata } = {} } =\n\t\t\tgetBlockAttributes( blockClientId );\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\tmetadata: isObjectEmpty( metadata ) ? undefined : metadata,\n\t\t} );\n\t};\n\n\treturn { updateBlockBindings, removeAllBlockBindings };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,7 +11,7 @@ import { View } from '@wordpress/primitives';
|
|
|
11
11
|
import { Icon } from '@wordpress/components';
|
|
12
12
|
import { withPreferredColorScheme } from '@wordpress/compose';
|
|
13
13
|
import { __ } from '@wordpress/i18n';
|
|
14
|
-
import { audio,
|
|
14
|
+
import { audio, cautionFilled } from '@wordpress/icons';
|
|
15
15
|
import { requestImageFailedRetryDialog, requestImageUploadCancelDialog } from '@wordpress/react-native-bridge';
|
|
16
16
|
import { getProtocol } from '@wordpress/url';
|
|
17
17
|
import { useState } from '@wordpress/element';
|
|
@@ -119,7 +119,7 @@ function Player({
|
|
|
119
119
|
}), /*#__PURE__*/_jsxs(View, {
|
|
120
120
|
style: styles.subtitleContainer,
|
|
121
121
|
children: [isUploadFailed && /*#__PURE__*/_jsx(Icon, {
|
|
122
|
-
icon:
|
|
122
|
+
icon: cautionFilled,
|
|
123
123
|
style: {
|
|
124
124
|
...styles.errorIcon,
|
|
125
125
|
...uploadFailedStyle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Text","TouchableWithoutFeedback","Linking","Alert","Platform","default","VideoPlayer","View","Icon","withPreferredColorScheme","__","audio","warning","requestImageFailedRetryDialog","requestImageUploadCancelDialog","getProtocol","useState","styles","parseAudioUrl","useEditorColorScheme","jsx","_jsx","jsxs","_jsxs","isIOS","OS","Player","isUploadInProgress","isUploadFailed","attributes","isSelected","id","src","paused","setPaused","onPressListen","player","presentFullscreenPlayer","canOpenURL","then","supported","alert","openURL","catch","containerStyle","container","containerDark","iconStyle","icon","iconDark","iconDisabledStyle","iconDisabled","iconDisabledDark","isDisabled","finalIconStyle","iconContainerStyle","iconContainer","iconContainerDark","titleContainerStyle","titleContainer","titleContainerIOS","titleContainerAndroid","titleStyle","title","titleDark","uploadFailedStyle","uploadFailed","uploadFailedDark","subtitleStyle","subtitle","subtitleDark","finalSubtitleStyle","buttonBackgroundStyle","buttonBackground","buttonBackgroundDark","extension","result","getSubtitleValue","onAudioUploadCancelDialog","accessible","disabled","onPress","children","style","size","subtitleContainer","errorIcon","accessibilityLabel","accessibilityRole","accessibilityHint","buttonText","source","uri","ref","controls","ignoreSilentSwitch","onFullscreenPlayerWillPresent","onFullscreenPlayerDidDismiss"],"sources":["@wordpress/block-editor/src/components/audio-player/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tText,\n\tTouchableWithoutFeedback,\n\tLinking,\n\tAlert,\n\tPlatform,\n} from 'react-native';\nimport { default as VideoPlayer } from 'react-native-video';\n\n/**\n * WordPress dependencies\n */\nimport { View } from '@wordpress/primitives';\nimport { Icon } from '@wordpress/components';\nimport { withPreferredColorScheme } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { audio, warning } from '@wordpress/icons';\nimport {\n\trequestImageFailedRetryDialog,\n\trequestImageUploadCancelDialog,\n} from '@wordpress/react-native-bridge';\nimport { getProtocol } from '@wordpress/url';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\nimport { parseAudioUrl } from './audio-url-parser.native';\nimport { useEditorColorScheme } from '../global-styles/use-global-styles-context';\n\nconst isIOS = Platform.OS === 'ios';\n\nfunction Player( {\n\tisUploadInProgress,\n\tisUploadFailed,\n\tattributes,\n\tisSelected,\n} ) {\n\tconst { id, src } = attributes;\n\tconst [ paused, setPaused ] = useState( true );\n\n\tconst onPressListen = () => {\n\t\tif ( src ) {\n\t\t\tif ( isIOS && this.player ) {\n\t\t\t\tthis.player.presentFullscreenPlayer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tLinking.canOpenURL( src )\n\t\t\t\t.then( ( supported ) => {\n\t\t\t\t\tif ( ! supported ) {\n\t\t\t\t\t\tAlert.alert(\n\t\t\t\t\t\t\t__( 'Problem opening the audio' ),\n\t\t\t\t\t\t\t__( 'No application can handle this request.' )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Linking.openURL( src );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tAlert.alert(\n\t\t\t\t\t\t__( 'Problem opening the audio' ),\n\t\t\t\t\t\t__( 'An unknown error occurred. Please try again.' )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t}\n\t};\n\n\tconst containerStyle = useEditorColorScheme(\n\t\tstyles.container,\n\t\tstyles.containerDark\n\t);\n\n\tconst iconStyle = useEditorColorScheme( styles.icon, styles.iconDark );\n\n\tconst iconDisabledStyle = useEditorColorScheme(\n\t\tstyles.iconDisabled,\n\t\tstyles.iconDisabledDark\n\t);\n\n\tconst isDisabled = isUploadFailed || isUploadInProgress;\n\n\tconst finalIconStyle = {\n\t\t...iconStyle,\n\t\t...( isDisabled && iconDisabledStyle ),\n\t};\n\n\tconst iconContainerStyle = useEditorColorScheme(\n\t\tstyles.iconContainer,\n\t\tstyles.iconContainerDark\n\t);\n\n\tconst titleContainerStyle = {\n\t\t...styles.titleContainer,\n\t\t...( isIOS ? styles.titleContainerIOS : styles.titleContainerAndroid ),\n\t};\n\n\tconst titleStyle = useEditorColorScheme( styles.title, styles.titleDark );\n\n\tconst uploadFailedStyle = useEditorColorScheme(\n\t\tstyles.uploadFailed,\n\t\tstyles.uploadFailedDark\n\t);\n\n\tconst subtitleStyle = useEditorColorScheme(\n\t\tstyles.subtitle,\n\t\tstyles.subtitleDark\n\t);\n\n\tconst finalSubtitleStyle = {\n\t\t...subtitleStyle,\n\t\t...( isUploadFailed && uploadFailedStyle ),\n\t};\n\n\tconst buttonBackgroundStyle = useEditorColorScheme(\n\t\tstyles.buttonBackground,\n\t\tstyles.buttonBackgroundDark\n\t);\n\n\tlet title = '';\n\tlet extension = '';\n\n\tif ( src ) {\n\t\tconst result = parseAudioUrl( src );\n\t\textension = result.extension;\n\t\ttitle = result.title;\n\t}\n\n\tconst getSubtitleValue = () => {\n\t\tif ( isUploadInProgress ) {\n\t\t\treturn __( 'Uploading…' );\n\t\t}\n\t\tif ( isUploadFailed ) {\n\t\t\treturn __( 'Failed to insert audio file. Please tap for options.' );\n\t\t}\n\t\treturn (\n\t\t\textension +\n\t\t\t// translators: displays audio file extension. e.g. MP3 audio file\n\t\t\t__( 'audio file' )\n\t\t);\n\t};\n\n\tfunction onAudioUploadCancelDialog() {\n\t\tif ( isUploadInProgress ) {\n\t\t\trequestImageUploadCancelDialog( id );\n\t\t} else if ( id && getProtocol( src ) === 'file:' ) {\n\t\t\trequestImageFailedRetryDialog( id );\n\t\t}\n\t}\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\taccessible={ ! isSelected }\n\t\t\tdisabled={ ! isSelected }\n\t\t\tonPress={ onAudioUploadCancelDialog }\n\t\t>\n\t\t\t<View style={ containerStyle }>\n\t\t\t\t<View style={ iconContainerStyle }>\n\t\t\t\t\t<Icon icon={ audio } style={ finalIconStyle } size={ 24 } />\n\t\t\t\t</View>\n\t\t\t\t<View style={ titleContainerStyle }>\n\t\t\t\t\t<Text style={ titleStyle }>{ title }</Text>\n\t\t\t\t\t<View style={ styles.subtitleContainer }>\n\t\t\t\t\t\t{ isUploadFailed && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={ warning }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t...styles.errorIcon,\n\t\t\t\t\t\t\t\t\t...uploadFailedStyle,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tsize={ 16 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Text style={ finalSubtitleStyle }>\n\t\t\t\t\t\t\t{ getSubtitleValue() }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t\t{ ! isDisabled && (\n\t\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\t\taccessibilityLabel={ __( 'Audio Player' ) }\n\t\t\t\t\t\taccessibilityRole=\"button\"\n\t\t\t\t\t\taccessibilityHint={ __(\n\t\t\t\t\t\t\t'Double tap to listen the audio file'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonPress={ onPressListen }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={ buttonBackgroundStyle }>\n\t\t\t\t\t\t\t<Text style={ styles.buttonText }>\n\t\t\t\t\t\t\t\t{ __( 'OPEN' ) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t\t) }\n\t\t\t\t{ isIOS && (\n\t\t\t\t\t<VideoPlayer\n\t\t\t\t\t\tsource={ { uri: src } }\n\t\t\t\t\t\tpaused={ paused }\n\t\t\t\t\t\tref={ ( ref ) => {\n\t\t\t\t\t\t\tthis.player = ref;\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tcontrols={ false }\n\t\t\t\t\t\tignoreSilentSwitch=\"ignore\"\n\t\t\t\t\t\tonFullscreenPlayerWillPresent={ () => {\n\t\t\t\t\t\t\tsetPaused( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonFullscreenPlayerDidDismiss={ () => {\n\t\t\t\t\t\t\tsetPaused( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n}\n\nexport default withPreferredColorScheme( Player );\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Text","TouchableWithoutFeedback","Linking","Alert","Platform","default","VideoPlayer","View","Icon","withPreferredColorScheme","__","audio","cautionFilled","requestImageFailedRetryDialog","requestImageUploadCancelDialog","getProtocol","useState","styles","parseAudioUrl","useEditorColorScheme","jsx","_jsx","jsxs","_jsxs","isIOS","OS","Player","isUploadInProgress","isUploadFailed","attributes","isSelected","id","src","paused","setPaused","onPressListen","player","presentFullscreenPlayer","canOpenURL","then","supported","alert","openURL","catch","containerStyle","container","containerDark","iconStyle","icon","iconDark","iconDisabledStyle","iconDisabled","iconDisabledDark","isDisabled","finalIconStyle","iconContainerStyle","iconContainer","iconContainerDark","titleContainerStyle","titleContainer","titleContainerIOS","titleContainerAndroid","titleStyle","title","titleDark","uploadFailedStyle","uploadFailed","uploadFailedDark","subtitleStyle","subtitle","subtitleDark","finalSubtitleStyle","buttonBackgroundStyle","buttonBackground","buttonBackgroundDark","extension","result","getSubtitleValue","onAudioUploadCancelDialog","accessible","disabled","onPress","children","style","size","subtitleContainer","errorIcon","accessibilityLabel","accessibilityRole","accessibilityHint","buttonText","source","uri","ref","controls","ignoreSilentSwitch","onFullscreenPlayerWillPresent","onFullscreenPlayerDidDismiss"],"sources":["@wordpress/block-editor/src/components/audio-player/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport {\n\tText,\n\tTouchableWithoutFeedback,\n\tLinking,\n\tAlert,\n\tPlatform,\n} from 'react-native';\nimport { default as VideoPlayer } from 'react-native-video';\n\n/**\n * WordPress dependencies\n */\nimport { View } from '@wordpress/primitives';\nimport { Icon } from '@wordpress/components';\nimport { withPreferredColorScheme } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\nimport { audio, cautionFilled } from '@wordpress/icons';\nimport {\n\trequestImageFailedRetryDialog,\n\trequestImageUploadCancelDialog,\n} from '@wordpress/react-native-bridge';\nimport { getProtocol } from '@wordpress/url';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport styles from './styles.scss';\nimport { parseAudioUrl } from './audio-url-parser.native';\nimport { useEditorColorScheme } from '../global-styles/use-global-styles-context';\n\nconst isIOS = Platform.OS === 'ios';\n\nfunction Player( {\n\tisUploadInProgress,\n\tisUploadFailed,\n\tattributes,\n\tisSelected,\n} ) {\n\tconst { id, src } = attributes;\n\tconst [ paused, setPaused ] = useState( true );\n\n\tconst onPressListen = () => {\n\t\tif ( src ) {\n\t\t\tif ( isIOS && this.player ) {\n\t\t\t\tthis.player.presentFullscreenPlayer();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tLinking.canOpenURL( src )\n\t\t\t\t.then( ( supported ) => {\n\t\t\t\t\tif ( ! supported ) {\n\t\t\t\t\t\tAlert.alert(\n\t\t\t\t\t\t\t__( 'Problem opening the audio' ),\n\t\t\t\t\t\t\t__( 'No application can handle this request.' )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn Linking.openURL( src );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tAlert.alert(\n\t\t\t\t\t\t__( 'Problem opening the audio' ),\n\t\t\t\t\t\t__( 'An unknown error occurred. Please try again.' )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t}\n\t};\n\n\tconst containerStyle = useEditorColorScheme(\n\t\tstyles.container,\n\t\tstyles.containerDark\n\t);\n\n\tconst iconStyle = useEditorColorScheme( styles.icon, styles.iconDark );\n\n\tconst iconDisabledStyle = useEditorColorScheme(\n\t\tstyles.iconDisabled,\n\t\tstyles.iconDisabledDark\n\t);\n\n\tconst isDisabled = isUploadFailed || isUploadInProgress;\n\n\tconst finalIconStyle = {\n\t\t...iconStyle,\n\t\t...( isDisabled && iconDisabledStyle ),\n\t};\n\n\tconst iconContainerStyle = useEditorColorScheme(\n\t\tstyles.iconContainer,\n\t\tstyles.iconContainerDark\n\t);\n\n\tconst titleContainerStyle = {\n\t\t...styles.titleContainer,\n\t\t...( isIOS ? styles.titleContainerIOS : styles.titleContainerAndroid ),\n\t};\n\n\tconst titleStyle = useEditorColorScheme( styles.title, styles.titleDark );\n\n\tconst uploadFailedStyle = useEditorColorScheme(\n\t\tstyles.uploadFailed,\n\t\tstyles.uploadFailedDark\n\t);\n\n\tconst subtitleStyle = useEditorColorScheme(\n\t\tstyles.subtitle,\n\t\tstyles.subtitleDark\n\t);\n\n\tconst finalSubtitleStyle = {\n\t\t...subtitleStyle,\n\t\t...( isUploadFailed && uploadFailedStyle ),\n\t};\n\n\tconst buttonBackgroundStyle = useEditorColorScheme(\n\t\tstyles.buttonBackground,\n\t\tstyles.buttonBackgroundDark\n\t);\n\n\tlet title = '';\n\tlet extension = '';\n\n\tif ( src ) {\n\t\tconst result = parseAudioUrl( src );\n\t\textension = result.extension;\n\t\ttitle = result.title;\n\t}\n\n\tconst getSubtitleValue = () => {\n\t\tif ( isUploadInProgress ) {\n\t\t\treturn __( 'Uploading…' );\n\t\t}\n\t\tif ( isUploadFailed ) {\n\t\t\treturn __( 'Failed to insert audio file. Please tap for options.' );\n\t\t}\n\t\treturn (\n\t\t\textension +\n\t\t\t// translators: displays audio file extension. e.g. MP3 audio file\n\t\t\t__( 'audio file' )\n\t\t);\n\t};\n\n\tfunction onAudioUploadCancelDialog() {\n\t\tif ( isUploadInProgress ) {\n\t\t\trequestImageUploadCancelDialog( id );\n\t\t} else if ( id && getProtocol( src ) === 'file:' ) {\n\t\t\trequestImageFailedRetryDialog( id );\n\t\t}\n\t}\n\n\treturn (\n\t\t<TouchableWithoutFeedback\n\t\t\taccessible={ ! isSelected }\n\t\t\tdisabled={ ! isSelected }\n\t\t\tonPress={ onAudioUploadCancelDialog }\n\t\t>\n\t\t\t<View style={ containerStyle }>\n\t\t\t\t<View style={ iconContainerStyle }>\n\t\t\t\t\t<Icon icon={ audio } style={ finalIconStyle } size={ 24 } />\n\t\t\t\t</View>\n\t\t\t\t<View style={ titleContainerStyle }>\n\t\t\t\t\t<Text style={ titleStyle }>{ title }</Text>\n\t\t\t\t\t<View style={ styles.subtitleContainer }>\n\t\t\t\t\t\t{ isUploadFailed && (\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={ cautionFilled }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t...styles.errorIcon,\n\t\t\t\t\t\t\t\t\t...uploadFailedStyle,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tsize={ 16 }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Text style={ finalSubtitleStyle }>\n\t\t\t\t\t\t\t{ getSubtitleValue() }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t\t{ ! isDisabled && (\n\t\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\t\taccessibilityLabel={ __( 'Audio Player' ) }\n\t\t\t\t\t\taccessibilityRole=\"button\"\n\t\t\t\t\t\taccessibilityHint={ __(\n\t\t\t\t\t\t\t'Double tap to listen the audio file'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tonPress={ onPressListen }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={ buttonBackgroundStyle }>\n\t\t\t\t\t\t\t<Text style={ styles.buttonText }>\n\t\t\t\t\t\t\t\t{ __( 'OPEN' ) }\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t\t) }\n\t\t\t\t{ isIOS && (\n\t\t\t\t\t<VideoPlayer\n\t\t\t\t\t\tsource={ { uri: src } }\n\t\t\t\t\t\tpaused={ paused }\n\t\t\t\t\t\tref={ ( ref ) => {\n\t\t\t\t\t\t\tthis.player = ref;\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tcontrols={ false }\n\t\t\t\t\t\tignoreSilentSwitch=\"ignore\"\n\t\t\t\t\t\tonFullscreenPlayerWillPresent={ () => {\n\t\t\t\t\t\t\tsetPaused( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonFullscreenPlayerDidDismiss={ () => {\n\t\t\t\t\t\t\tsetPaused( true );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</View>\n\t\t</TouchableWithoutFeedback>\n\t);\n}\n\nexport default withPreferredColorScheme( Player );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ import clsx from 'clsx';
|
|
|
7
7
|
/**
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
|
-
import { ToggleControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalUnitControl as UnitControl, __experimentalVStack as VStack, DropZone, FlexItem, FocalPointPicker, MenuItem, VisuallyHidden, __experimentalItemGroup as ItemGroup, __experimentalHStack as HStack, __experimentalTruncate as Truncate, Dropdown, Placeholder, Spinner, __experimentalDropdownContentWrapper as DropdownContentWrapper } from '@wordpress/components';
|
|
10
|
+
import { ToggleControl, __experimentalToggleGroupControl as ToggleGroupControl, __experimentalToggleGroupControlOption as ToggleGroupControlOption, __experimentalUnitControl as UnitControl, __experimentalVStack as VStack, DropZone, FlexItem, FocalPointPicker, MenuItem, VisuallyHidden, __experimentalItemGroup as ItemGroup, __experimentalHStack as HStack, __experimentalTruncate as Truncate, Dropdown, Placeholder, Spinner, __experimentalDropdownContentWrapper as DropdownContentWrapper, Button } from '@wordpress/components';
|
|
11
11
|
import { __, _x, sprintf } from '@wordpress/i18n';
|
|
12
12
|
import { store as noticesStore } from '@wordpress/notices';
|
|
13
13
|
import { getFilename } from '@wordpress/url';
|
|
@@ -304,6 +304,10 @@ function BackgroundImageControls({
|
|
|
304
304
|
label: imgLabel
|
|
305
305
|
}),
|
|
306
306
|
variant: "secondary",
|
|
307
|
+
renderToggle: props => /*#__PURE__*/_jsx(Button, {
|
|
308
|
+
...props,
|
|
309
|
+
__next40pxDefaultSize: true
|
|
310
|
+
}),
|
|
307
311
|
onError: onUploadError,
|
|
308
312
|
onReset: () => {
|
|
309
313
|
closeAndFocus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalVStack","VStack","DropZone","FlexItem","FocalPointPicker","MenuItem","VisuallyHidden","__experimentalItemGroup","ItemGroup","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Dropdown","Placeholder","Spinner","__experimentalDropdownContentWrapper","DropdownContentWrapper","__","_x","sprintf","store","noticesStore","getFilename","useRef","useState","useEffect","useMemo","useDispatch","useSelect","focus","isBlobURL","getResolvedValue","hasBackgroundImageValue","setImmutably","MediaReplaceFlow","blockEditorStore","globalStylesDataKey","globalStylesLinksDataKey","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","backgroundSizeHelpText","value","undefined","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","children","justify","style","backgroundImage","flexGrow","numberOfLines","BackgroundControlsPanel","url","onToggle","hasImageValue","imgLabel","popoverProps","renderToggle","onClick","renderContent","paddingSize","LoadingSpinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","getSettings","id","title","background","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","backgroundSize","positionValue","backgroundPosition","source","onFilesDrop","filesList","length","mediaUpload","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","ref","mediaId","mediaURL","accept","onSelect","name","variant","onReset","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","spacing","__nextHasNoMarginBottom","checked","size","isBlock","help","__unstableInputWidth","min","placeholder","disabled","BackgroundImagePanel","settings","globalStyles","_links","select","_settings","resolvedInheritedValue","resolvedValues","Object","entries","forEach","key","backgroundValue","styles","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen"],"sources":["@wordpress/block-editor/src/components/background-image-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useRef, useState, useEffect, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { getResolvedValue } from '../global-styles/utils';\nimport { hasBackgroundImageValue } from '../global-styles/background-panel';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\n\nimport {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n} from '../../store/private-keys';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\n\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\n\n/**\n * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction LoadingSpinner() {\n\treturn (\n\t\t<Placeholder className=\"block-editor-global-styles-background-panel__loading\">\n\t\t\t<Spinner />\n\t\t</Placeholder>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tonResetImage = noop,\n\tdisplayInPanel,\n\tdefaultValues,\n} ) {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetIsUploading( false );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tstyle?.background?.backgroundSize || defaultValues?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t/*\n\t\t\t\t\t * A background image uploaded and set in the editor receives a default background position of '50% 0',\n\t\t\t\t\t * when the background image size is the equivalent of \"Tile\".\n\t\t\t\t\t * This is to increase the chance that the image's focus point is visible.\n\t\t\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t\t\t */\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t\tbackgroundSize: sizeValue,\n\t\t\t} )\n\t\t);\n\t\tsetIsUploading( false );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\n\t\tif ( filesList?.length > 1 ) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only one image can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\tbackgroundImage: 'none',\n\t\t\t} )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t{ isUploading && <LoadingSpinner /> }\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tonReset={ () => {\n\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\tonResetImage();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst isUploadedImage = style?.background?.backgroundImage?.id;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * Set default values for uploaded images.\n\t * The default values are passed by the consumer.\n\t * Block-level controls may have different defaults to root-level controls.\n\t * A falsy value is treated by default as `auto` (Tile).\n\t */\n\tlet currentValueForToggle =\n\t\t! sizeValue && isUploadedImage\n\t\t\t? defaultValues?.backgroundSize\n\t\t\t: sizeValue || 'auto';\n\t/*\n\t * The incoming value could be a value + unit, e.g. '20px'.\n\t * In this case set the value to 'tile'.\n\t */\n\tcurrentValueForToggle = ! [ 'cover', 'contain', 'auto' ].includes(\n\t\tcurrentValueForToggle\n\t)\n\t\t? 'auto'\n\t\t: currentValueForToggle;\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\t// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.\n\tconst backgroundPositionValue =\n\t\t! positionValue && isUploadedImage && 'contain' === sizeValue\n\t\t\t? defaultValues?.backgroundPosition\n\t\t\t: positionValue;\n\n\treturn (\n\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ imageValue }\n\t\t\t\tvalue={ backgroundPositionToCoords( backgroundPositionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundImagePanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tdefaultValues = {},\n} ) {\n\t/*\n\t * Resolve any inherited \"ref\" pointers.\n\t * Should the block editor need resolved, inherited values\n\t * across all controls, this could be abstracted into a hook,\n\t * e.g., useResolveGlobalStyle\n\t */\n\tconst { globalStyles, _links } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\t\treturn {\n\t\t\tglobalStyles: _settings[ globalStylesDataKey ],\n\t\t\t_links: _settings[ globalStylesLinksDataKey ],\n\t\t};\n\t}, [] );\n\tconst resolvedInheritedValue = useMemo( () => {\n\t\tconst resolvedValues = {\n\t\t\tbackground: {},\n\t\t};\n\n\t\tif ( ! inheritedValue?.background ) {\n\t\t\treturn inheritedValue;\n\t\t}\n\n\t\tObject.entries( inheritedValue?.background ).forEach(\n\t\t\t( [ key, backgroundValue ] ) => {\n\t\t\t\tresolvedValues.background[ key ] = getResolvedValue(\n\t\t\t\t\tbackgroundValue,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t\t\t_links,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\treturn resolvedValues;\n\t}, [ globalStyles, _links, inheritedValue ] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...resolvedInheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( resolvedInheritedValue );\n\n\tconst imageValue =\n\t\tvalue?.background?.backgroundImage ||\n\t\tinheritedValue?.background?.backgroundImage;\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t'none' !== imageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( false );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t{\n\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t}\n\t\t\t) }\n\t\t>\n\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\tlabel={ title }\n\t\t\t\t\tfilename={ title }\n\t\t\t\t\turl={ url }\n\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t>\n\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</BackgroundControlsPanel>\n\t\t\t) : (\n\t\t\t\t<BackgroundImageControls\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t} }\n\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["clsx","ToggleControl","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalVStack","VStack","DropZone","FlexItem","FocalPointPicker","MenuItem","VisuallyHidden","__experimentalItemGroup","ItemGroup","__experimentalHStack","HStack","__experimentalTruncate","Truncate","Dropdown","Placeholder","Spinner","__experimentalDropdownContentWrapper","DropdownContentWrapper","Button","__","_x","sprintf","store","noticesStore","getFilename","useRef","useState","useEffect","useMemo","useDispatch","useSelect","focus","isBlobURL","getResolvedValue","hasBackgroundImageValue","setImmutably","MediaReplaceFlow","blockEditorStore","globalStylesDataKey","globalStylesLinksDataKey","jsx","_jsx","jsxs","_jsxs","IMAGE_BACKGROUND_TYPE","BACKGROUND_POPOVER_PROPS","placement","offset","shift","className","noop","backgroundSizeHelpText","value","undefined","coordsToBackgroundPosition","isNaN","x","y","backgroundPositionToCoords","split","map","v","parseFloat","InspectorImagePreviewItem","as","imgUrl","toggleProps","filename","label","onToggleCallback","isOpen","children","justify","style","backgroundImage","flexGrow","numberOfLines","BackgroundControlsPanel","url","onToggle","hasImageValue","imgLabel","popoverProps","renderToggle","onClick","renderContent","paddingSize","LoadingSpinner","BackgroundImageControls","onChange","inheritedValue","onRemoveImage","onResetImage","displayInPanel","defaultValues","isUploading","setIsUploading","getSettings","id","title","background","replaceContainerRef","createErrorNotice","onUploadError","message","type","resetBackgroundImage","onSelectMedia","media","media_type","sizeValue","backgroundSize","positionValue","backgroundPosition","source","onFilesDrop","filesList","length","mediaUpload","allowedTypes","onFileChange","image","onError","hasValue","closeAndFocus","toggleButton","tabbable","find","current","click","onRemove","canRemove","ref","mediaId","mediaURL","accept","onSelect","name","variant","props","__next40pxDefaultSize","onReset","BackgroundSizeControls","repeatValue","backgroundRepeat","imageValue","isUploadedImage","attachmentValue","backgroundAttachment","currentValueForToggle","includes","repeatCheckedValue","updateBackgroundSize","next","nextRepeat","nextPosition","updateBackgroundPosition","toggleIsRepeated","toggleScrollWithPage","backgroundPositionValue","spacing","__nextHasNoMarginBottom","checked","size","isBlock","help","__unstableInputWidth","min","placeholder","disabled","BackgroundImagePanel","settings","globalStyles","_links","select","_settings","resolvedInheritedValue","resolvedValues","Object","entries","forEach","key","backgroundValue","styles","resetBackground","shouldShowBackgroundImageControls","isDropDownOpen","setIsDropDownOpen"],"sources":["@wordpress/block-editor/src/components/background-image-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tToggleControl,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalVStack as VStack,\n\tDropZone,\n\tFlexItem,\n\tFocalPointPicker,\n\tMenuItem,\n\tVisuallyHidden,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n\tDropdown,\n\tPlaceholder,\n\tSpinner,\n\t__experimentalDropdownContentWrapper as DropdownContentWrapper,\n\tButton,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { getFilename } from '@wordpress/url';\nimport { useRef, useState, useEffect, useMemo } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { focus } from '@wordpress/dom';\nimport { isBlobURL } from '@wordpress/blob';\n\n/**\n * Internal dependencies\n */\nimport { getResolvedValue } from '../global-styles/utils';\nimport { hasBackgroundImageValue } from '../global-styles/background-panel';\nimport { setImmutably } from '../../utils/object';\nimport MediaReplaceFlow from '../media-replace-flow';\nimport { store as blockEditorStore } from '../../store';\n\nimport {\n\tglobalStylesDataKey,\n\tglobalStylesLinksDataKey,\n} from '../../store/private-keys';\n\nconst IMAGE_BACKGROUND_TYPE = 'image';\n\nconst BACKGROUND_POPOVER_PROPS = {\n\tplacement: 'left-start',\n\toffset: 36,\n\tshift: true,\n\tclassName: 'block-editor-global-styles-background-panel__popover',\n};\nconst noop = () => {};\n\n/**\n * Get the help text for the background size control.\n *\n * @param {string} value backgroundSize value.\n * @return {string} Translated help text.\n */\nfunction backgroundSizeHelpText( value ) {\n\tif ( value === 'cover' || value === undefined ) {\n\t\treturn __( 'Image covers the space evenly.' );\n\t}\n\tif ( value === 'contain' ) {\n\t\treturn __( 'Image is contained without distortion.' );\n\t}\n\treturn __( 'Image has a fixed width.' );\n}\n\n/**\n * Converts decimal x and y coords from FocalPointPicker to percentage-based values\n * to use as backgroundPosition value.\n *\n * @param {{x?:number, y?:number}} value FocalPointPicker coords.\n * @return {string} \t\t\t\t backgroundPosition value.\n */\nexport const coordsToBackgroundPosition = ( value ) => {\n\tif ( ! value || ( isNaN( value.x ) && isNaN( value.y ) ) ) {\n\t\treturn undefined;\n\t}\n\n\tconst x = isNaN( value.x ) ? 0.5 : value.x;\n\tconst y = isNaN( value.y ) ? 0.5 : value.y;\n\n\treturn `${ x * 100 }% ${ y * 100 }%`;\n};\n\n/**\n * Converts backgroundPosition value to x and y coords for FocalPointPicker.\n *\n * @param {string} value backgroundPosition value.\n * @return {{x?:number, y?:number}} FocalPointPicker coords.\n */\nexport const backgroundPositionToCoords = ( value ) => {\n\tif ( ! value ) {\n\t\treturn { x: undefined, y: undefined };\n\t}\n\n\tlet [ x, y ] = value.split( ' ' ).map( ( v ) => parseFloat( v ) / 100 );\n\tx = isNaN( x ) ? undefined : x;\n\ty = isNaN( y ) ? x : y;\n\n\treturn { x, y };\n};\n\nfunction InspectorImagePreviewItem( {\n\tas = 'span',\n\timgUrl,\n\ttoggleProps = {},\n\tfilename,\n\tlabel,\n\tclassName,\n\tonToggleCallback = noop,\n} ) {\n\tuseEffect( () => {\n\t\tif ( typeof toggleProps?.isOpen !== 'undefined' ) {\n\t\t\tonToggleCallback( toggleProps?.isOpen );\n\t\t}\n\t}, [ toggleProps?.isOpen, onToggleCallback ] );\n\treturn (\n\t\t<ItemGroup as={ as } className={ className } { ...toggleProps }>\n\t\t\t<HStack\n\t\t\t\tjustify=\"flex-start\"\n\t\t\t\tas=\"span\"\n\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-preview-inner\"\n\t\t\t>\n\t\t\t\t{ imgUrl && (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator-wrapper\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-image-indicator\"\n\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\tbackgroundImage: `url(${ imgUrl })`,\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t) }\n\t\t\t\t<FlexItem as=\"span\" style={ imgUrl ? {} : { flexGrow: 1 } }>\n\t\t\t\t\t<Truncate\n\t\t\t\t\t\tnumberOfLines={ 1 }\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__inspector-media-replace-title\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t\t<VisuallyHidden as=\"span\">\n\t\t\t\t\t\t{ imgUrl\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: file name */\n\t\t\t\t\t\t\t\t\t__( 'Background image: %s' ),\n\t\t\t\t\t\t\t\t\tfilename || label\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __( 'No background image selected' ) }\n\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\nfunction BackgroundControlsPanel( {\n\tlabel,\n\tfilename,\n\turl: imgUrl,\n\tchildren,\n\tonToggle: onToggleCallback = noop,\n\thasImageValue,\n} ) {\n\tif ( ! hasImageValue ) {\n\t\treturn;\n\t}\n\n\tconst imgLabel =\n\t\tlabel || getFilename( imgUrl ) || __( 'Add background image' );\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ BACKGROUND_POPOVER_PROPS }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst toggleProps = {\n\t\t\t\t\tonClick: onToggle,\n\t\t\t\t\tclassName:\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__dropdown-toggle',\n\t\t\t\t\t'aria-expanded': isOpen,\n\t\t\t\t\t'aria-label': __(\n\t\t\t\t\t\t'Background size, position and repeat options.'\n\t\t\t\t\t),\n\t\t\t\t\tisOpen,\n\t\t\t\t};\n\t\t\t\treturn (\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\timgUrl={ imgUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t\ttoggleProps={ toggleProps }\n\t\t\t\t\t\tas=\"button\"\n\t\t\t\t\t\tonToggleCallback={ onToggleCallback }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<DropdownContentWrapper\n\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__dropdown-content-wrapper\"\n\t\t\t\t\tpaddingSize=\"medium\"\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DropdownContentWrapper>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction LoadingSpinner() {\n\treturn (\n\t\t<Placeholder className=\"block-editor-global-styles-background-panel__loading\">\n\t\t\t<Spinner />\n\t\t</Placeholder>\n\t);\n}\n\nfunction BackgroundImageControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tonRemoveImage = noop,\n\tonResetImage = noop,\n\tdisplayInPanel,\n\tdefaultValues,\n} ) {\n\tconst [ isUploading, setIsUploading ] = useState( false );\n\tconst { getSettings } = useSelect( blockEditorStore );\n\n\tconst { id, title, url } = style?.background?.backgroundImage || {\n\t\t...inheritedValue?.background?.backgroundImage,\n\t};\n\tconst replaceContainerRef = useRef();\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tconst onUploadError = ( message ) => {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetIsUploading( false );\n\t};\n\n\tconst resetBackgroundImage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundImage' ],\n\t\t\t\tundefined\n\t\t\t)\n\t\t);\n\n\tconst onSelectMedia = ( media ) => {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tresetBackgroundImage();\n\t\t\tsetIsUploading( false );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetIsUploading( true );\n\t\t\treturn;\n\t\t}\n\n\t\t// For media selections originated from a file upload.\n\t\tif (\n\t\t\t( media.media_type &&\n\t\t\t\tmedia.media_type !== IMAGE_BACKGROUND_TYPE ) ||\n\t\t\t( ! media.media_type &&\n\t\t\t\tmedia.type &&\n\t\t\t\tmedia.type !== IMAGE_BACKGROUND_TYPE )\n\t\t) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only images can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tstyle?.background?.backgroundSize || defaultValues?.backgroundSize;\n\t\tconst positionValue = style?.background?.backgroundPosition;\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundImage: {\n\t\t\t\t\turl: media.url,\n\t\t\t\t\tid: media.id,\n\t\t\t\t\tsource: 'file',\n\t\t\t\t\ttitle: media.title || undefined,\n\t\t\t\t},\n\t\t\t\tbackgroundPosition:\n\t\t\t\t\t/*\n\t\t\t\t\t * A background image uploaded and set in the editor receives a default background position of '50% 0',\n\t\t\t\t\t * when the background image size is the equivalent of \"Tile\".\n\t\t\t\t\t * This is to increase the chance that the image's focus point is visible.\n\t\t\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t\t\t */\n\t\t\t\t\t! positionValue && ( 'auto' === sizeValue || ! sizeValue )\n\t\t\t\t\t\t? '50% 0'\n\t\t\t\t\t\t: positionValue,\n\t\t\t\tbackgroundSize: sizeValue,\n\t\t\t} )\n\t\t);\n\t\tsetIsUploading( false );\n\t};\n\n\t// Drag and drop callback, restricting image to one.\n\tconst onFilesDrop = ( filesList ) => {\n\t\tif ( filesList?.length > 1 ) {\n\t\t\tonUploadError(\n\t\t\t\t__( 'Only one image can be used as a background image.' )\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tgetSettings().mediaUpload( {\n\t\t\tallowedTypes: [ IMAGE_BACKGROUND_TYPE ],\n\t\t\tfilesList,\n\t\t\tonFileChange( [ image ] ) {\n\t\t\t\tonSelectMedia( image );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst hasValue = hasBackgroundImageValue( style );\n\n\tconst closeAndFocus = () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find(\n\t\t\treplaceContainerRef.current\n\t\t);\n\t\t// Focus the toggle button and close the dropdown menu.\n\t\t// This ensures similar behaviour as to selecting an image, where the dropdown is\n\t\t// closed and focus is redirected to the dropdown toggle button.\n\t\ttoggleButton?.focus();\n\t\ttoggleButton?.click();\n\t};\n\n\tconst onRemove = () =>\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\tbackgroundImage: 'none',\n\t\t\t} )\n\t\t);\n\tconst canRemove = ! hasValue && hasBackgroundImageValue( inheritedValue );\n\tconst imgLabel =\n\t\ttitle || getFilename( url ) || __( 'Add background image' );\n\n\treturn (\n\t\t<div\n\t\t\tref={ replaceContainerRef }\n\t\t\tclassName=\"block-editor-global-styles-background-panel__image-tools-panel-item\"\n\t\t>\n\t\t\t{ isUploading && <LoadingSpinner /> }\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ id }\n\t\t\t\tmediaURL={ url }\n\t\t\t\tallowedTypes={ [ IMAGE_BACKGROUND_TYPE ] }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tclassName: clsx( {\n\t\t\t\t\t\t'block-editor-global-styles-background-panel__media-replace-popover':\n\t\t\t\t\t\t\tdisplayInPanel,\n\t\t\t\t\t} ),\n\t\t\t\t} }\n\t\t\t\tname={\n\t\t\t\t\t<InspectorImagePreviewItem\n\t\t\t\t\t\tclassName=\"block-editor-global-styles-background-panel__image-preview\"\n\t\t\t\t\t\timgUrl={ url }\n\t\t\t\t\t\tfilename={ title }\n\t\t\t\t\t\tlabel={ imgLabel }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t\trenderToggle={ ( props ) => (\n\t\t\t\t\t<Button { ...props } __next40pxDefaultSize />\n\t\t\t\t) }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tonReset={ () => {\n\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\tonResetImage();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ canRemove && (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tcloseAndFocus();\n\t\t\t\t\t\t\tonRemove();\n\t\t\t\t\t\t\tonRemoveImage();\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Remove' ) }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) }\n\t\t\t</MediaReplaceFlow>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ onFilesDrop }\n\t\t\t\tlabel={ __( 'Drop to upload' ) }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BackgroundSizeControls( {\n\tonChange,\n\tstyle,\n\tinheritedValue,\n\tdefaultValues,\n} ) {\n\tconst sizeValue =\n\t\tstyle?.background?.backgroundSize ||\n\t\tinheritedValue?.background?.backgroundSize;\n\tconst repeatValue =\n\t\tstyle?.background?.backgroundRepeat ||\n\t\tinheritedValue?.background?.backgroundRepeat;\n\tconst imageValue =\n\t\tstyle?.background?.backgroundImage?.url ||\n\t\tinheritedValue?.background?.backgroundImage?.url;\n\tconst isUploadedImage = style?.background?.backgroundImage?.id;\n\tconst positionValue =\n\t\tstyle?.background?.backgroundPosition ||\n\t\tinheritedValue?.background?.backgroundPosition;\n\tconst attachmentValue =\n\t\tstyle?.background?.backgroundAttachment ||\n\t\tinheritedValue?.background?.backgroundAttachment;\n\n\t/*\n\t * Set default values for uploaded images.\n\t * The default values are passed by the consumer.\n\t * Block-level controls may have different defaults to root-level controls.\n\t * A falsy value is treated by default as `auto` (Tile).\n\t */\n\tlet currentValueForToggle =\n\t\t! sizeValue && isUploadedImage\n\t\t\t? defaultValues?.backgroundSize\n\t\t\t: sizeValue || 'auto';\n\t/*\n\t * The incoming value could be a value + unit, e.g. '20px'.\n\t * In this case set the value to 'tile'.\n\t */\n\tcurrentValueForToggle = ! [ 'cover', 'contain', 'auto' ].includes(\n\t\tcurrentValueForToggle\n\t)\n\t\t? 'auto'\n\t\t: currentValueForToggle;\n\t/*\n\t * If the current value is `cover` and the repeat value is `undefined`, then\n\t * the toggle should be unchecked as the default state. Otherwise, the toggle\n\t * should reflect the current repeat value.\n\t */\n\tconst repeatCheckedValue = ! (\n\t\trepeatValue === 'no-repeat' ||\n\t\t( currentValueForToggle === 'cover' && repeatValue === undefined )\n\t);\n\n\tconst updateBackgroundSize = ( next ) => {\n\t\t// When switching to 'contain' toggle the repeat off.\n\t\tlet nextRepeat = repeatValue;\n\t\tlet nextPosition = positionValue;\n\n\t\tif ( next === 'contain' ) {\n\t\t\tnextRepeat = 'no-repeat';\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif ( next === 'cover' ) {\n\t\t\tnextRepeat = undefined;\n\t\t\tnextPosition = undefined;\n\t\t}\n\n\t\tif (\n\t\t\t( currentValueForToggle === 'cover' ||\n\t\t\t\tcurrentValueForToggle === 'contain' ) &&\n\t\t\tnext === 'auto'\n\t\t) {\n\t\t\tnextRepeat = undefined;\n\t\t\t/*\n\t\t\t * A background image uploaded and set in the editor (an image with a record id),\n\t\t\t * receives a default background position of '50% 0',\n\t\t\t * when the toggle switches to \"Tile\". This is to increase the chance that\n\t\t\t * the image's focus point is visible.\n\t\t\t * This is in-editor only to assist with the user experience.\n\t\t\t */\n\t\t\tif ( !! style?.background?.backgroundImage?.id ) {\n\t\t\t\tnextPosition = '50% 0';\n\t\t\t}\n\t\t}\n\n\t\t/*\n\t\t * Next will be null when the input is cleared,\n\t\t * in which case the value should be 'auto'.\n\t\t */\n\t\tif ( ! next && currentValueForToggle === 'auto' ) {\n\t\t\tnext = 'auto';\n\t\t}\n\n\t\tonChange(\n\t\t\tsetImmutably( style, [ 'background' ], {\n\t\t\t\t...style?.background,\n\t\t\t\tbackgroundPosition: nextPosition,\n\t\t\t\tbackgroundRepeat: nextRepeat,\n\t\t\t\tbackgroundSize: next,\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst updateBackgroundPosition = ( next ) => {\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundPosition' ],\n\t\t\t\tcoordsToBackgroundPosition( next )\n\t\t\t)\n\t\t);\n\t};\n\n\tconst toggleIsRepeated = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundRepeat' ],\n\t\t\t\trepeatCheckedValue === true ? 'no-repeat' : 'repeat'\n\t\t\t)\n\t\t);\n\n\tconst toggleScrollWithPage = () =>\n\t\tonChange(\n\t\t\tsetImmutably(\n\t\t\t\tstyle,\n\t\t\t\t[ 'background', 'backgroundAttachment' ],\n\t\t\t\tattachmentValue === 'fixed' ? 'scroll' : 'fixed'\n\t\t\t)\n\t\t);\n\n\t// Set a default background position for non-site-wide, uploaded images with a size of 'contain'.\n\tconst backgroundPositionValue =\n\t\t! positionValue && isUploadedImage && 'contain' === sizeValue\n\t\t\t? defaultValues?.backgroundPosition\n\t\t\t: positionValue;\n\n\treturn (\n\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t<FocalPointPicker\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Focal point' ) }\n\t\t\t\turl={ imageValue }\n\t\t\t\tvalue={ backgroundPositionToCoords( backgroundPositionValue ) }\n\t\t\t\tonChange={ updateBackgroundPosition }\n\t\t\t/>\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Fixed background' ) }\n\t\t\t\tchecked={ attachmentValue === 'fixed' }\n\t\t\t\tonChange={ toggleScrollWithPage }\n\t\t\t/>\n\t\t\t<ToggleGroupControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\tlabel={ __( 'Size' ) }\n\t\t\t\tvalue={ currentValueForToggle }\n\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\tisBlock\n\t\t\t\thelp={ backgroundSizeHelpText(\n\t\t\t\t\tsizeValue || defaultValues?.backgroundSize\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"cover\"\n\t\t\t\t\tvalue=\"cover\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Cover',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"contain\"\n\t\t\t\t\tvalue=\"contain\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Contain',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\tkey=\"tile\"\n\t\t\t\t\tvalue=\"auto\"\n\t\t\t\t\tlabel={ _x(\n\t\t\t\t\t\t'Tile',\n\t\t\t\t\t\t'Size option for background image control'\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t</ToggleGroupControl>\n\t\t\t<HStack justify=\"flex-start\" spacing={ 2 } as=\"span\">\n\t\t\t\t<UnitControl\n\t\t\t\t\taria-label={ __( 'Background image width' ) }\n\t\t\t\t\tonChange={ updateBackgroundSize }\n\t\t\t\t\tvalue={ sizeValue }\n\t\t\t\t\tsize=\"__unstable-large\"\n\t\t\t\t\t__unstableInputWidth=\"100px\"\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tplaceholder={ __( 'Auto' ) }\n\t\t\t\t\tdisabled={\n\t\t\t\t\t\tcurrentValueForToggle !== 'auto' ||\n\t\t\t\t\t\tcurrentValueForToggle === undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<ToggleControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tlabel={ __( 'Repeat' ) }\n\t\t\t\t\tchecked={ repeatCheckedValue }\n\t\t\t\t\tonChange={ toggleIsRepeated }\n\t\t\t\t\tdisabled={ currentValueForToggle === 'cover' }\n\t\t\t\t/>\n\t\t\t</HStack>\n\t\t</VStack>\n\t);\n}\n\nexport default function BackgroundImagePanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n\tsettings,\n\tdefaultValues = {},\n} ) {\n\t/*\n\t * Resolve any inherited \"ref\" pointers.\n\t * Should the block editor need resolved, inherited values\n\t * across all controls, this could be abstracted into a hook,\n\t * e.g., useResolveGlobalStyle\n\t */\n\tconst { globalStyles, _links } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\t\treturn {\n\t\t\tglobalStyles: _settings[ globalStylesDataKey ],\n\t\t\t_links: _settings[ globalStylesLinksDataKey ],\n\t\t};\n\t}, [] );\n\tconst resolvedInheritedValue = useMemo( () => {\n\t\tconst resolvedValues = {\n\t\t\tbackground: {},\n\t\t};\n\n\t\tif ( ! inheritedValue?.background ) {\n\t\t\treturn inheritedValue;\n\t\t}\n\n\t\tObject.entries( inheritedValue?.background ).forEach(\n\t\t\t( [ key, backgroundValue ] ) => {\n\t\t\t\tresolvedValues.background[ key ] = getResolvedValue(\n\t\t\t\t\tbackgroundValue,\n\t\t\t\t\t{\n\t\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t\t\t_links,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t);\n\t\treturn resolvedValues;\n\t}, [ globalStyles, _links, inheritedValue ] );\n\n\tconst resetBackground = () =>\n\t\tonChange( setImmutably( value, [ 'background' ], {} ) );\n\n\tconst { title, url } = value?.background?.backgroundImage || {\n\t\t...resolvedInheritedValue?.background?.backgroundImage,\n\t};\n\tconst hasImageValue =\n\t\thasBackgroundImageValue( value ) ||\n\t\thasBackgroundImageValue( resolvedInheritedValue );\n\n\tconst imageValue =\n\t\tvalue?.background?.backgroundImage ||\n\t\tinheritedValue?.background?.backgroundImage;\n\n\tconst shouldShowBackgroundImageControls =\n\t\thasImageValue &&\n\t\t'none' !== imageValue &&\n\t\t( settings?.background?.backgroundSize ||\n\t\t\tsettings?.background?.backgroundPosition ||\n\t\t\tsettings?.background?.backgroundRepeat );\n\n\tconst [ isDropDownOpen, setIsDropDownOpen ] = useState( false );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-global-styles-background-panel__inspector-media-replace-container',\n\t\t\t\t{\n\t\t\t\t\t'is-open': isDropDownOpen,\n\t\t\t\t}\n\t\t\t) }\n\t\t>\n\t\t\t{ shouldShowBackgroundImageControls ? (\n\t\t\t\t<BackgroundControlsPanel\n\t\t\t\t\tlabel={ title }\n\t\t\t\t\tfilename={ title }\n\t\t\t\t\turl={ url }\n\t\t\t\t\tonToggle={ setIsDropDownOpen }\n\t\t\t\t\thasImageValue={ hasImageValue }\n\t\t\t\t>\n\t\t\t\t\t<VStack spacing={ 3 } className=\"single-column\">\n\t\t\t\t\t\t<BackgroundImageControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t\tdisplayInPanel\n\t\t\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BackgroundSizeControls\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tstyle={ value }\n\t\t\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VStack>\n\t\t\t\t</BackgroundControlsPanel>\n\t\t\t) : (\n\t\t\t\t<BackgroundImageControls\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tstyle={ value }\n\t\t\t\t\tinheritedValue={ resolvedInheritedValue }\n\t\t\t\t\tdefaultValues={ defaultValues }\n\t\t\t\t\tonResetImage={ () => {\n\t\t\t\t\t\tsetIsDropDownOpen( false );\n\t\t\t\t\t\tresetBackground();\n\t\t\t\t\t} }\n\t\t\t\t\tonRemoveImage={ () => setIsDropDownOpen( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,6 +6,38 @@ import { DOWN } from '@wordpress/keycodes';
|
|
|
6
6
|
import { ToolbarButton, Dropdown, AlignmentMatrixControl } from '@wordpress/components';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
const noop = () => {};
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The alignment matrix control allows users to quickly adjust inner block alignment.
|
|
12
|
+
*
|
|
13
|
+
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-alignment-matrix-control/README.md
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```jsx
|
|
17
|
+
* function Example() {
|
|
18
|
+
* return (
|
|
19
|
+
* <BlockControls>
|
|
20
|
+
* <BlockAlignmentMatrixControl
|
|
21
|
+
* label={ __( 'Change content position' ) }
|
|
22
|
+
* value="center"
|
|
23
|
+
* onChange={ ( nextPosition ) =>
|
|
24
|
+
* setAttributes( { contentPosition: nextPosition } )
|
|
25
|
+
* }
|
|
26
|
+
* />
|
|
27
|
+
* </BlockControls>
|
|
28
|
+
* );
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @param {Object} props Component props.
|
|
33
|
+
* @param {string} props.label Label for the control. Defaults to 'Change matrix alignment'.
|
|
34
|
+
* @param {Function} props.onChange Function to execute upon change of matrix state.
|
|
35
|
+
* @param {string} props.value Content alignment location. One of: 'center', 'center center',
|
|
36
|
+
* 'center left', 'center right', 'top center', 'top left',
|
|
37
|
+
* 'top right', 'bottom center', 'bottom left', 'bottom right'.
|
|
38
|
+
* @param {boolean} props.isDisabled Whether the control should be disabled.
|
|
39
|
+
* @return {Element} The BlockAlignmentMatrixControl component.
|
|
40
|
+
*/
|
|
9
41
|
function BlockAlignmentMatrixControl(props) {
|
|
10
42
|
const {
|
|
11
43
|
label = __('Change matrix alignment'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","DOWN","ToolbarButton","Dropdown","AlignmentMatrixControl","jsx","_jsx","noop","BlockAlignmentMatrixControl","props","label","onChange","value","isDisabled","icon","Icon","popoverProps","placement","renderToggle","onToggle","isOpen","openOnArrowDown","event","keyCode","preventDefault","onClick","onKeyDown","showTooltip","disabled","renderContent","hasFocusBorder"],"sources":["@wordpress/block-editor/src/components/block-alignment-matrix-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tToolbarButton,\n\tDropdown,\n\tAlignmentMatrixControl,\n} from '@wordpress/components';\n\nconst noop = () => {};\n\nfunction BlockAlignmentMatrixControl( props ) {\n\tconst {\n\t\tlabel = __( 'Change matrix alignment' ),\n\t\tonChange = noop,\n\t\tvalue = 'center',\n\t\tisDisabled,\n\t} = props;\n\n\tconst icon = <AlignmentMatrixControl.Icon value={ value } />;\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tonToggle();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<AlignmentMatrixControl\n\t\t\t\t\thasFocusBorder={ false }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default BlockAlignmentMatrixControl;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,IAAI,QAAQ,qBAAqB;AAC1C,SACCC,aAAa,EACbC,QAAQ,EACRC,sBAAsB,QAChB,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE/B,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["__","DOWN","ToolbarButton","Dropdown","AlignmentMatrixControl","jsx","_jsx","noop","BlockAlignmentMatrixControl","props","label","onChange","value","isDisabled","icon","Icon","popoverProps","placement","renderToggle","onToggle","isOpen","openOnArrowDown","event","keyCode","preventDefault","onClick","onKeyDown","showTooltip","disabled","renderContent","hasFocusBorder"],"sources":["@wordpress/block-editor/src/components/block-alignment-matrix-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tToolbarButton,\n\tDropdown,\n\tAlignmentMatrixControl,\n} from '@wordpress/components';\n\nconst noop = () => {};\n\n/**\n * The alignment matrix control allows users to quickly adjust inner block alignment.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-alignment-matrix-control/README.md\n *\n * @example\n * ```jsx\n * function Example() {\n * return (\n * <BlockControls>\n * <BlockAlignmentMatrixControl\n * label={ __( 'Change content position' ) }\n * value=\"center\"\n * onChange={ ( nextPosition ) =>\n * setAttributes( { contentPosition: nextPosition } )\n * }\n * />\n * </BlockControls>\n * );\n * }\n * ```\n *\n * @param {Object} props Component props.\n * @param {string} props.label Label for the control. Defaults to 'Change matrix alignment'.\n * @param {Function} props.onChange Function to execute upon change of matrix state.\n * @param {string} props.value Content alignment location. One of: 'center', 'center center',\n * 'center left', 'center right', 'top center', 'top left',\n * 'top right', 'bottom center', 'bottom left', 'bottom right'.\n * @param {boolean} props.isDisabled Whether the control should be disabled.\n * @return {Element} The BlockAlignmentMatrixControl component.\n */\nfunction BlockAlignmentMatrixControl( props ) {\n\tconst {\n\t\tlabel = __( 'Change matrix alignment' ),\n\t\tonChange = noop,\n\t\tvalue = 'center',\n\t\tisDisabled,\n\t} = props;\n\n\tconst icon = <AlignmentMatrixControl.Icon value={ value } />;\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tonToggle();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<AlignmentMatrixControl\n\t\t\t\t\thasFocusBorder={ false }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default BlockAlignmentMatrixControl;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,IAAI,QAAQ,qBAAqB;AAC1C,SACCC,aAAa,EACbC,QAAQ,EACRC,sBAAsB,QAChB,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE/B,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,2BAA2BA,CAAEC,KAAK,EAAG;EAC7C,MAAM;IACLC,KAAK,GAAGV,EAAE,CAAE,yBAA0B,CAAC;IACvCW,QAAQ,GAAGJ,IAAI;IACfK,KAAK,GAAG,QAAQ;IAChBC;EACD,CAAC,GAAGJ,KAAK;EAET,MAAMK,IAAI,gBAAGR,IAAA,CAACF,sBAAsB,CAACW,IAAI;IAACH,KAAK,EAAGA;EAAO,CAAE,CAAC;EAE5D,oBACCN,IAAA,CAACH,QAAQ;IACRa,YAAY,EAAG;MAAEC,SAAS,EAAE;IAAe,CAAG;IAC9CC,YAAY,EAAGA,CAAE;MAAEC,QAAQ;MAAEC;IAAO,CAAC,KAAM;MAC1C,MAAMC,eAAe,GAAKC,KAAK,IAAM;QACpC,IAAK,CAAEF,MAAM,IAAIE,KAAK,CAACC,OAAO,KAAKtB,IAAI,EAAG;UACzCqB,KAAK,CAACE,cAAc,CAAC,CAAC;UACtBL,QAAQ,CAAC,CAAC;QACX;MACD,CAAC;MAED,oBACCb,IAAA,CAACJ,aAAa;QACbuB,OAAO,EAAGN,QAAU;QACpB,iBAAc,MAAM;QACpB,iBAAgBC,MAAQ;QACxBM,SAAS,EAAGL,eAAiB;QAC7BX,KAAK,EAAGA,KAAO;QACfI,IAAI,EAAGA,IAAM;QACba,WAAW;QACXC,QAAQ,EAAGf;MAAY,CACvB,CAAC;IAEJ,CAAG;IACHgB,aAAa,EAAGA,CAAA,kBACfvB,IAAA,CAACF,sBAAsB;MACtB0B,cAAc,EAAG,KAAO;MACxBnB,QAAQ,EAAGA,QAAU;MACrBC,KAAK,EAAGA;IAAO,CACf;EACC,CACH,CAAC;AAEJ;AAEA,eAAeJ,2BAA2B","ignoreList":[]}
|
|
@@ -6,18 +6,52 @@ import clsx from 'clsx';
|
|
|
6
6
|
/**
|
|
7
7
|
* WordPress dependencies
|
|
8
8
|
*/
|
|
9
|
+
import { Button, __experimentalText as Text, __experimentalVStack as VStack, privateApis as componentsPrivateApis } from '@wordpress/components';
|
|
10
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
9
11
|
import deprecated from '@wordpress/deprecated';
|
|
10
|
-
import {
|
|
12
|
+
import { __, isRTL } from '@wordpress/i18n';
|
|
11
13
|
import { chevronLeft, chevronRight } from '@wordpress/icons';
|
|
12
|
-
import { __, _x, isRTL, sprintf } from '@wordpress/i18n';
|
|
13
|
-
import { useSelect, useDispatch } from '@wordpress/data';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Internal dependencies
|
|
17
17
|
*/
|
|
18
|
-
import
|
|
18
|
+
import { unlock } from '../../lock-unlock';
|
|
19
19
|
import { store as blockEditorStore } from '../../store';
|
|
20
|
+
import BlockIcon from '../block-icon';
|
|
20
21
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
const {
|
|
23
|
+
Badge
|
|
24
|
+
} = unlock(componentsPrivateApis);
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* A card component that displays block information including title, icon, and description.
|
|
28
|
+
* Can be used to show block metadata and navigation controls for parent blocks.
|
|
29
|
+
*
|
|
30
|
+
* @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-card/README.md
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```jsx
|
|
34
|
+
* function Example() {
|
|
35
|
+
* return (
|
|
36
|
+
* <BlockCard
|
|
37
|
+
* title="My Block"
|
|
38
|
+
* icon="smiley"
|
|
39
|
+
* description="A simple block example"
|
|
40
|
+
* name="Custom Block"
|
|
41
|
+
* />
|
|
42
|
+
* );
|
|
43
|
+
* }
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @param {Object} props Component props.
|
|
47
|
+
* @param {string} props.title The title of the block.
|
|
48
|
+
* @param {string|Object} props.icon The icon of the block. This can be any of [WordPress' Dashicons](https://developer.wordpress.org/resource/dashicons/), or a custom `svg` element.
|
|
49
|
+
* @param {string} props.description The description of the block.
|
|
50
|
+
* @param {Object} [props.blockType] Deprecated: Object containing block type data.
|
|
51
|
+
* @param {string} [props.className] Additional classes to apply to the card.
|
|
52
|
+
* @param {string} [props.name] Custom block name to display before the title.
|
|
53
|
+
* @return {Element} Block card component.
|
|
54
|
+
*/
|
|
21
55
|
function BlockCard({
|
|
22
56
|
title,
|
|
23
57
|
icon,
|
|
@@ -74,11 +108,14 @@ function BlockCard({
|
|
|
74
108
|
showColors: true
|
|
75
109
|
}), /*#__PURE__*/_jsxs(VStack, {
|
|
76
110
|
spacing: 1,
|
|
77
|
-
children: [/*#__PURE__*/
|
|
111
|
+
children: [/*#__PURE__*/_jsxs("h2", {
|
|
78
112
|
className: "block-editor-block-card__title",
|
|
79
|
-
children:
|
|
80
|
-
|
|
81
|
-
|
|
113
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
114
|
+
className: "block-editor-block-card__name",
|
|
115
|
+
children: !!name?.length ? name : title
|
|
116
|
+
}), !!name?.length && /*#__PURE__*/_jsx(Badge, {
|
|
117
|
+
children: title
|
|
118
|
+
})]
|
|
82
119
|
}), description && /*#__PURE__*/_jsx(Text, {
|
|
83
120
|
className: "block-editor-block-card__description",
|
|
84
121
|
children: description
|