@wordpress/block-editor 12.21.0 → 12.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +4 -0
- package/build/components/block-actions/index.js +2 -4
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-heading-level-dropdown/index.js +5 -5
- package/build/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build/components/block-heading-level-dropdown/index.native.js +5 -4
- package/build/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build/components/block-list/block-crash-boundary.native.js +49 -0
- package/build/components/block-list/block-crash-boundary.native.js.map +1 -0
- package/build/components/block-list/block-crash-warning.native.js +24 -0
- package/build/components/block-list/block-crash-warning.native.js.map +1 -0
- package/build/components/block-list/block.js +11 -3
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +7 -2
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-mover/button.js +4 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.js +5 -1
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-patterns-list/index.js +4 -1
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-settings/container.native.js +2 -1
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +36 -32
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +1 -3
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-switcher/index.js +4 -3
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +8 -5
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-toolbar/shuffle.js +19 -10
- package/build/components/block-toolbar/shuffle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +48 -8
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +14 -2
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +108 -11
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +11 -0
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build/components/global-styles/advanced-panel.js +9 -2
- package/build/components/global-styles/advanced-panel.js.map +1 -1
- package/build/components/global-styles/background-panel.js +444 -0
- package/build/components/global-styles/background-panel.js.map +1 -0
- package/build/components/global-styles/color-panel.js +2 -1
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/dimensions-panel.js +8 -33
- package/build/components/global-styles/dimensions-panel.js.map +1 -1
- package/build/components/global-styles/get-global-styles-changes.js +3 -0
- package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build/components/global-styles/hooks.js +1 -1
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/index.js +13 -0
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +16 -15
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +2 -3
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/iframe/index.js +43 -34
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/index.js +3 -6
- package/build/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
- package/build/components/inserter/block-patterns-explorer/pattern-list.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build/components/inserter/library.js +2 -0
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +11 -11
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/mobile-tab-navigation.js +1 -1
- package/build/components/inserter/mobile-tab-navigation.js.map +1 -1
- package/build/components/inserter/search-items.js +36 -15
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter/search-results.js +2 -3
- package/build/components/inserter/search-results.js.map +1 -1
- package/build/components/inserter/tabs.js +1 -2
- package/build/components/inserter/tabs.js.map +1 -1
- package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js +36 -0
- package/build/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
- package/build/components/keyboard-shortcuts/index.js +11 -0
- package/build/components/keyboard-shortcuts/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +18 -12
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/block.js +4 -11
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/list-view/index.js +17 -2
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-list-view-collapse-items.js +47 -0
- package/build/components/list-view/use-list-view-collapse-items.js.map +1 -0
- package/build/components/list-view/utils.js +5 -3
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/rich-text/index.js +14 -11
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +17 -11
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +2 -2
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/rich-text/with-deprecations.js +0 -3
- package/build/components/rich-text/with-deprecations.js.map +1 -1
- package/build/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/build/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +50 -36
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/use-block-display-information/index.js +4 -6
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/components/use-moving-animation/index.js +4 -0
- package/build/components/use-moving-animation/index.js.map +1 -1
- package/build/components/warning/index.native.js +9 -4
- package/build/components/warning/index.native.js.map +1 -1
- package/build/hooks/anchor.js +9 -10
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/background.js +85 -402
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/index.js +9 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout-child.js +28 -6
- package/build/hooks/layout-child.js.map +1 -1
- package/build/hooks/layout.js +21 -10
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/position.js +1 -1
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/use-zoom-out.js +47 -0
- package/build/hooks/use-zoom-out.js.map +1 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/private-apis.js +6 -1
- package/build/private-apis.js.map +1 -1
- package/build/private-apis.native.js +5 -1
- package/build/private-apis.native.js.map +1 -1
- package/build/store/private-actions.js +13 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-keys.js +2 -1
- package/build/store/private-keys.js.map +1 -1
- package/build/store/private-selectors.js +24 -3
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +53 -26
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +34 -32
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +7 -1
- package/build/store/utils.js.map +1 -1
- package/build/utils/transform-styles/index.js +2 -1
- package/build/utils/transform-styles/index.js.map +1 -1
- package/build-module/components/block-actions/index.js +2 -4
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.js +5 -5
- package/build-module/components/block-heading-level-dropdown/index.js.map +1 -1
- package/build-module/components/block-heading-level-dropdown/index.native.js +5 -4
- package/build-module/components/block-heading-level-dropdown/index.native.js.map +1 -1
- package/build-module/components/block-list/block-crash-boundary.native.js +42 -0
- package/build-module/components/block-list/block-crash-boundary.native.js.map +1 -0
- package/build-module/components/block-list/block-crash-warning.native.js +15 -0
- package/build-module/components/block-list/block-crash-warning.native.js.map +1 -0
- package/build-module/components/block-list/block.js +11 -3
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +7 -2
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-mover/button.js +4 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.js +5 -1
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +4 -1
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +3 -2
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +37 -33
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +1 -3
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +4 -3
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +8 -5
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-toolbar/shuffle.js +19 -10
- package/build-module/components/block-toolbar/shuffle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +50 -10
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +14 -2
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +109 -12
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +12 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build-module/components/global-styles/advanced-panel.js +9 -2
- package/build-module/components/global-styles/advanced-panel.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +430 -0
- package/build-module/components/global-styles/background-panel.js.map +1 -0
- package/build-module/components/global-styles/color-panel.js +2 -1
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/dimensions-panel.js +9 -34
- package/build-module/components/global-styles/dimensions-panel.js.map +1 -1
- package/build-module/components/global-styles/get-global-styles-changes.js +3 -0
- package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +1 -1
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -0
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +17 -16
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +1 -2
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/iframe/index.js +43 -34
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/index.js +3 -6
- package/build-module/components/inserter/block-patterns-explorer/index.js.map +1 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js +3 -1
- package/build-module/components/inserter/block-patterns-explorer/pattern-list.js.map +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-preview-panel.js +5 -0
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -0
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +11 -11
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/mobile-tab-navigation.js +1 -1
- package/build-module/components/inserter/mobile-tab-navigation.js.map +1 -1
- package/build-module/components/inserter/search-items.js +33 -15
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter/search-results.js +2 -3
- package/build-module/components/inserter/search-results.js.map +1 -1
- package/build-module/components/inserter/tabs.js +1 -2
- package/build-module/components/inserter/tabs.js.map +1 -1
- package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js +28 -0
- package/build-module/components/inspector-controls-tabs/advanced-controls-panel.native.js.map +1 -0
- package/build-module/components/keyboard-shortcuts/index.js +11 -0
- package/build-module/components/keyboard-shortcuts/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +19 -13
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/block.js +6 -13
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/list-view/index.js +17 -2
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-list-view-collapse-items.js +40 -0
- package/build-module/components/list-view/use-list-view-collapse-items.js.map +1 -0
- package/build-module/components/list-view/utils.js +2 -1
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/rich-text/index.js +15 -12
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +16 -11
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +2 -2
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/rich-text/with-deprecations.js +0 -3
- package/build-module/components/rich-text/with-deprecations.js.map +1 -1
- package/build-module/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/build-module/components/spacing-sizes-control/sides-dropdown/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +50 -36
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js +5 -7
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/components/use-moving-animation/index.js +4 -0
- package/build-module/components/use-moving-animation/index.js.map +1 -1
- package/build-module/components/warning/index.native.js +9 -4
- package/build-module/components/warning/index.native.js.map +1 -1
- package/build-module/hooks/anchor.js +10 -11
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/background.js +82 -397
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/index.js +3 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout-child.js +28 -6
- package/build-module/hooks/layout-child.js.map +1 -1
- package/build-module/hooks/layout.js +21 -10
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/position.js +1 -1
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +41 -0
- package/build-module/hooks/use-zoom-out.js.map +1 -0
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/private-apis.js +7 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/private-apis.native.js +5 -1
- package/build-module/private-apis.native.js.map +1 -1
- package/build-module/store/private-actions.js +12 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-keys.js +1 -0
- package/build-module/store/private-keys.js.map +1 -1
- package/build-module/store/private-selectors.js +22 -4
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +52 -26
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +35 -33
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +6 -1
- package/build-module/store/utils.js.map +1 -1
- package/build-module/utils/transform-styles/index.js +2 -1
- package/build-module/utils/transform-styles/index.js.map +1 -1
- package/build-style/content-rtl.css +18 -1
- package/build-style/content.css +18 -1
- package/build-style/style-rtl.css +92 -99
- package/build-style/style.css +92 -99
- package/package.json +31 -31
- package/src/components/block-actions/index.js +2 -8
- package/src/components/block-bindings-toolbar-indicator/style.scss +10 -8
- package/src/components/block-heading-level-dropdown/README.md +5 -5
- package/src/components/block-heading-level-dropdown/index.js +5 -5
- package/src/components/block-heading-level-dropdown/index.native.js +5 -4
- package/src/components/block-list/block-crash-boundary.native.js +43 -0
- package/src/components/block-list/block-crash-warning.native.js +19 -0
- package/src/components/block-list/block.js +19 -3
- package/src/components/block-list/block.native.js +14 -7
- package/src/components/block-list/content.scss +16 -0
- package/src/components/block-mover/button.js +4 -1
- package/src/components/block-mover/index.js +8 -1
- package/src/components/block-patterns-list/index.js +22 -17
- package/src/components/block-preview/style.scss +28 -0
- package/src/components/block-settings/container.native.js +5 -1
- package/src/components/block-settings-menu/block-settings-dropdown.js +49 -58
- package/src/components/block-settings-menu-controls/README.md +0 -9
- package/src/components/block-settings-menu-controls/index.js +1 -6
- package/src/components/block-switcher/index.js +5 -3
- package/src/components/block-switcher/style.scss +1 -1
- package/src/components/block-toolbar/index.js +25 -20
- package/src/components/block-toolbar/shuffle.js +20 -14
- package/src/components/block-toolbar/style.scss +1 -1
- package/src/components/block-toolbar/test/index.native.js +1 -7
- package/src/components/block-tools/block-selection-button.js +66 -9
- package/src/components/block-tools/index.js +18 -1
- package/src/components/button-block-appender/content.scss +5 -1
- package/src/components/child-layout-control/index.js +147 -35
- package/src/components/convert-to-group-buttons/toolbar.js +13 -1
- package/src/components/default-block-appender/content.scss +2 -2
- package/src/components/global-styles/advanced-panel.js +8 -2
- package/src/components/global-styles/background-panel.js +591 -0
- package/src/components/global-styles/color-panel.js +2 -1
- package/src/components/global-styles/dimensions-panel.js +9 -34
- package/src/components/global-styles/get-global-styles-changes.js +3 -0
- package/src/components/global-styles/hooks.js +1 -0
- package/src/components/global-styles/index.js +4 -0
- package/src/components/global-styles/style.scss +78 -1
- package/src/{hooks/test/background.js → components/global-styles/test/background-panel.js} +36 -1
- package/src/components/global-styles/test/get-global-styles-changes.js +22 -3
- package/src/components/global-styles/test/use-global-styles-output.js +40 -9
- package/src/components/global-styles/use-global-styles-output.js +30 -17
- package/src/components/global-styles/utils.js +1 -18
- package/src/components/iframe/index.js +79 -53
- package/src/components/inserter/block-patterns-explorer/index.js +2 -9
- package/src/components/inserter/block-patterns-explorer/pattern-list.js +7 -1
- package/src/components/inserter/block-patterns-tab/index.js +1 -0
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +5 -0
- package/src/components/inserter/library.js +4 -0
- package/src/components/inserter/menu.js +12 -11
- package/src/components/inserter/mobile-tab-navigation.js +1 -1
- package/src/components/inserter/search-items.js +37 -15
- package/src/components/inserter/search-results.js +1 -2
- package/src/components/inserter/style.scss +6 -12
- package/src/components/inserter/tabs.js +1 -2
- package/src/components/inspector-controls-tabs/advanced-controls-panel.native.js +31 -0
- package/src/components/keyboard-shortcuts/index.js +11 -0
- package/src/components/link-control/style.scss +0 -5
- package/src/components/list-view/block-select-button.js +15 -19
- package/src/components/list-view/block.js +12 -21
- package/src/components/list-view/index.js +18 -1
- package/src/components/list-view/style.scss +38 -28
- package/src/components/list-view/use-list-view-collapse-items.js +33 -0
- package/src/components/list-view/utils.js +4 -1
- package/src/components/rich-text/README.md +6 -0
- package/src/components/rich-text/index.js +30 -13
- package/src/components/rich-text/index.native.js +14 -11
- package/src/components/rich-text/native/get-format-colors.native.js +1 -1
- package/src/components/rich-text/native/index.native.js +2 -2
- package/src/components/rich-text/with-deprecations.js +0 -3
- package/src/components/spacing-sizes-control/sides-dropdown/index.js +1 -1
- package/src/components/url-popover/image-url-input-ui.js +68 -51
- package/src/components/use-block-display-information/index.js +8 -10
- package/src/components/use-moving-animation/index.js +1 -0
- package/src/components/warning/index.native.js +19 -15
- package/src/hooks/anchor.js +43 -61
- package/src/hooks/background.js +100 -516
- package/src/hooks/index.js +3 -0
- package/src/hooks/layout-child.js +44 -8
- package/src/hooks/layout.js +22 -18
- package/src/hooks/position.js +1 -1
- package/src/hooks/test/__snapshots__/anchor.native.js.snap +7 -0
- package/src/hooks/test/anchor.native.js +32 -0
- package/src/hooks/use-zoom-out.js +36 -0
- package/src/index.js +1 -0
- package/src/private-apis.js +13 -1
- package/src/private-apis.native.js +4 -0
- package/src/store/private-actions.js +12 -0
- package/src/store/private-keys.js +1 -0
- package/src/store/private-selectors.js +54 -27
- package/src/store/reducer.js +63 -41
- package/src/store/selectors.js +195 -180
- package/src/store/test/private-actions.js +10 -0
- package/src/store/test/private-selectors.js +13 -0
- package/src/store/test/reducer.js +26 -0
- package/src/store/test/selectors.js +90 -199
- package/src/store/utils.js +13 -0
- package/src/style.scss +0 -2
- package/src/utils/transform-styles/index.js +2 -1
- package/tsconfig.json +1 -0
- package/build/utils/calculate-scale.js +0 -17
- package/build/utils/calculate-scale.js.map +0 -1
- package/build-module/utils/calculate-scale.js +0 -11
- package/build-module/utils/calculate-scale.js.map +0 -1
- package/src/hooks/anchor.scss +0 -4
- package/src/hooks/background.scss +0 -75
- package/src/utils/calculate-scale.js +0 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalInputControl","InputControl","__experimentalHStack","HStack","__","useEffect","helpText","selfStretch","parentLayout","orientation","ChildLayoutControl","value","childLayout","onChange","flexSize","columnSpan","rowSpan","type","parentType","default","defaultParentType","parentLayoutType","createElement","Fragment","__nextHasNoMarginBottom","size","label","childLayoutOrientation","help","newFlexSize","isBlock","key","min"],"sources":["@wordpress/block-editor/src/components/child-layout-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalInputControl as InputControl,\n\t__experimentalHStack as HStack,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\n\nfunction helpText( selfStretch, parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\tif ( selfStretch === 'fill' ) {\n\t\treturn __( 'Stretch to fill available space.' );\n\t}\n\tif ( selfStretch === 'fixed' && orientation === 'horizontal' ) {\n\t\treturn __( 'Specify a fixed width.' );\n\t} else if ( selfStretch === 'fixed' ) {\n\t\treturn __( 'Specify a fixed height.' );\n\t}\n\treturn __( 'Fit contents.' );\n}\n\n/**\n * Form to edit the child layout value.\n *\n * @param {Object} props Props.\n * @param {Object} props.value The child layout value.\n * @param {Function} props.onChange Function to update the child layout value.\n * @param {Object} props.parentLayout The parent layout value.\n *\n * @return {Element} child layout edit element.\n */\nexport default function ChildLayoutControl( {\n\tvalue: childLayout = {},\n\tonChange,\n\tparentLayout,\n} ) {\n\tconst { selfStretch, flexSize, columnSpan, rowSpan } = childLayout;\n\tconst {\n\t\ttype: parentType,\n\t\tdefault: { type: defaultParentType = 'default' } = {},\n\t} = parentLayout ?? {};\n\tconst parentLayoutType = parentType || defaultParentType;\n\n\tuseEffect( () => {\n\t\tif ( selfStretch === 'fixed' && ! flexSize ) {\n\t\t\tonChange( {\n\t\t\t\t...childLayout,\n\t\t\t\tselfStretch: 'fit',\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t{ parentLayoutType === 'flex' && (\n\t\t\t\t<>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ childLayoutOrientation( parentLayout ) }\n\t\t\t\t\t\tvalue={ selfStretch || 'fit' }\n\t\t\t\t\t\thelp={ helpText( selfStretch, parentLayout ) }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tconst newFlexSize =\n\t\t\t\t\t\t\t\tvalue !== 'fixed' ? null : flexSize;\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tselfStretch: value,\n\t\t\t\t\t\t\t\tflexSize: newFlexSize,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fit' }\n\t\t\t\t\t\t\tvalue={ 'fit' }\n\t\t\t\t\t\t\tlabel={ __( 'Fit' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fill' }\n\t\t\t\t\t\t\tvalue={ 'fill' }\n\t\t\t\t\t\t\tlabel={ __( 'Fill' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fixed' }\n\t\t\t\t\t\t\tvalue={ 'fixed' }\n\t\t\t\t\t\t\tlabel={ __( 'Fixed' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t{ selfStretch === 'fixed' && (\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tselfStretch,\n\t\t\t\t\t\t\t\t\tflexSize: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ flexSize }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t{ parentLayoutType === 'grid' && (\n\t\t\t\t<HStack>\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ __( 'Column Span' ) }\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\tcolumnSpan: value,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ columnSpan }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t/>\n\t\t\t\t\t<InputControl\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ __( 'Row Span' ) }\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\trowSpan: value,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tvalue={ rowSpan }\n\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function childLayoutOrientation( parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\treturn orientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalUnitControl","UnitControl","__experimentalInputControl","InputControl","__experimentalHStack","HStack","__experimentalVStack","VStack","__experimentalToolsPanelItem","ToolsPanelItem","Flex","FlexItem","__","useEffect","helpText","selfStretch","parentLayout","orientation","ChildLayoutControl","value","childLayout","onChange","isShownByDefault","panelId","flexSize","columnStart","rowStart","columnSpan","rowSpan","type","parentType","default","defaultParentType","parentLayoutType","hasFlexValue","flexResetLabel","resetFlex","undefined","hasStartValue","hasSpanValue","resetGridStarts","resetGridSpans","createElement","Fragment","as","spacing","hasValue","label","onDeselect","__nextHasNoMarginBottom","size","childLayoutOrientation","help","newFlexSize","isBlock","key","min","window","__experimentalEnableGridInteractivity","style","width","max","columnCount"],"sources":["@wordpress/block-editor/src/components/child-layout-control/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOption as ToggleGroupControlOption,\n\t__experimentalUnitControl as UnitControl,\n\t__experimentalInputControl as InputControl,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tFlex,\n\tFlexItem,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useEffect } from '@wordpress/element';\n\nfunction helpText( selfStretch, parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\tif ( selfStretch === 'fill' ) {\n\t\treturn __( 'Stretch to fill available space.' );\n\t}\n\tif ( selfStretch === 'fixed' && orientation === 'horizontal' ) {\n\t\treturn __( 'Specify a fixed width.' );\n\t} else if ( selfStretch === 'fixed' ) {\n\t\treturn __( 'Specify a fixed height.' );\n\t}\n\treturn __( 'Fit contents.' );\n}\n\n/**\n * Form to edit the child layout value.\n *\n * @param {Object} props Props.\n * @param {Object} props.value The child layout value.\n * @param {Function} props.onChange Function to update the child layout value.\n * @param {Object} props.parentLayout The parent layout value.\n *\n * @param {boolean} props.isShownByDefault\n * @param {string} props.panelId\n * @return {Element} child layout edit element.\n */\nexport default function ChildLayoutControl( {\n\tvalue: childLayout = {},\n\tonChange,\n\tparentLayout,\n\tisShownByDefault,\n\tpanelId,\n} ) {\n\tconst {\n\t\tselfStretch,\n\t\tflexSize,\n\t\tcolumnStart,\n\t\trowStart,\n\t\tcolumnSpan,\n\t\trowSpan,\n\t} = childLayout;\n\tconst {\n\t\ttype: parentType,\n\t\tdefault: { type: defaultParentType = 'default' } = {},\n\t\torientation = 'horizontal',\n\t} = parentLayout ?? {};\n\tconst parentLayoutType = parentType || defaultParentType;\n\n\tconst hasFlexValue = () => !! selfStretch;\n\tconst flexResetLabel =\n\t\torientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n\tconst resetFlex = () => {\n\t\tonChange( {\n\t\t\tselfStretch: undefined,\n\t\t\tflexSize: undefined,\n\t\t} );\n\t};\n\n\tconst hasStartValue = () => !! columnStart || !! rowStart;\n\tconst hasSpanValue = () => !! columnSpan || !! rowSpan;\n\tconst resetGridStarts = () => {\n\t\tonChange( {\n\t\t\tcolumnStart: undefined,\n\t\t\trowStart: undefined,\n\t\t} );\n\t};\n\tconst resetGridSpans = () => {\n\t\tonChange( {\n\t\t\tcolumnSpan: undefined,\n\t\t\trowSpan: undefined,\n\t\t} );\n\t};\n\n\tuseEffect( () => {\n\t\tif ( selfStretch === 'fixed' && ! flexSize ) {\n\t\t\tonChange( {\n\t\t\t\t...childLayout,\n\t\t\t\tselfStretch: 'fit',\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t{ parentLayoutType === 'flex' && (\n\t\t\t\t<VStack\n\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\tspacing={ 2 }\n\t\t\t\t\thasValue={ hasFlexValue }\n\t\t\t\t\tlabel={ flexResetLabel }\n\t\t\t\t\tonDeselect={ resetFlex }\n\t\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<ToggleGroupControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\tlabel={ childLayoutOrientation( parentLayout ) }\n\t\t\t\t\t\tvalue={ selfStretch || 'fit' }\n\t\t\t\t\t\thelp={ helpText( selfStretch, parentLayout ) }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tconst newFlexSize =\n\t\t\t\t\t\t\t\tvalue !== 'fixed' ? null : flexSize;\n\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\tselfStretch: value,\n\t\t\t\t\t\t\t\tflexSize: newFlexSize,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tisBlock\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fit' }\n\t\t\t\t\t\t\tvalue={ 'fit' }\n\t\t\t\t\t\t\tlabel={ __( 'Fit' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fill' }\n\t\t\t\t\t\t\tvalue={ 'fill' }\n\t\t\t\t\t\t\tlabel={ __( 'Fill' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ToggleGroupControlOption\n\t\t\t\t\t\t\tkey={ 'fixed' }\n\t\t\t\t\t\t\tvalue={ 'fixed' }\n\t\t\t\t\t\t\tlabel={ __( 'Fixed' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToggleGroupControl>\n\t\t\t\t\t{ selfStretch === 'fixed' && (\n\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tselfStretch,\n\t\t\t\t\t\t\t\t\tflexSize: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ flexSize }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</VStack>\n\t\t\t) }\n\t\t\t{ parentLayoutType === 'grid' && (\n\t\t\t\t<>\n\t\t\t\t\t<HStack\n\t\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\t\thasValue={ hasSpanValue }\n\t\t\t\t\t\tlabel={ __( 'Grid span' ) }\n\t\t\t\t\t\tonDeselect={ resetGridSpans }\n\t\t\t\t\t\tisShownByDefault={ isShownByDefault }\n\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\tlabel={ __( 'Column span' ) }\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t\tcolumnSpan: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ columnSpan }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\tlabel={ __( 'Row span' ) }\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\trowSpan: value,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tvalue={ rowSpan }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</HStack>\n\t\t\t\t\t{ window.__experimentalEnableGridInteractivity && (\n\t\t\t\t\t\t// Use Flex with an explicit width on the FlexItem instead of HStack to\n\t\t\t\t\t\t// work around an issue in webkit where inputs with a max attribute are\n\t\t\t\t\t\t// sized incorrectly.\n\t\t\t\t\t\t<Flex\n\t\t\t\t\t\t\tas={ ToolsPanelItem }\n\t\t\t\t\t\t\thasValue={ hasStartValue }\n\t\t\t\t\t\t\tlabel={ __( 'Grid placement' ) }\n\t\t\t\t\t\t\tonDeselect={ resetGridStarts }\n\t\t\t\t\t\t\tisShownByDefault={ false }\n\t\t\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Column' ) }\n\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t\tcolumnStart: value,\n\t\t\t\t\t\t\t\t\t\t\trowStart,\n\t\t\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tvalue={ columnStart }\n\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\tmax={ parentLayout?.columnCount }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t\t<FlexItem style={ { width: '50%' } }>\n\t\t\t\t\t\t\t\t<InputControl\n\t\t\t\t\t\t\t\t\tsize={ '__unstable-large' }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'Row' ) }\n\t\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\tonChange( {\n\t\t\t\t\t\t\t\t\t\t\tcolumnStart,\n\t\t\t\t\t\t\t\t\t\t\trowStart: value,\n\t\t\t\t\t\t\t\t\t\t\tcolumnSpan,\n\t\t\t\t\t\t\t\t\t\t\trowSpan,\n\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tvalue={ rowStart }\n\t\t\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\t\t\tmax={ parentLayout?.columnCount }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</FlexItem>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport function childLayoutOrientation( parentLayout ) {\n\tconst { orientation = 'horizontal' } = parentLayout;\n\n\treturn orientation === 'horizontal' ? __( 'Width' ) : __( 'Height' );\n}\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { createElement } from "react";
|
|
|
5
5
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
6
6
|
import { switchToBlockType, store as blocksStore } from '@wordpress/blocks';
|
|
7
7
|
import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
|
|
8
|
-
import { group, row, stack } from '@wordpress/icons';
|
|
8
|
+
import { group, row, stack, grid } from '@wordpress/icons';
|
|
9
9
|
import { _x } from '@wordpress/i18n';
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -24,6 +24,9 @@ const layouts = {
|
|
|
24
24
|
stack: {
|
|
25
25
|
type: 'flex',
|
|
26
26
|
orientation: 'vertical'
|
|
27
|
+
},
|
|
28
|
+
grid: {
|
|
29
|
+
type: 'grid'
|
|
27
30
|
}
|
|
28
31
|
};
|
|
29
32
|
function BlockGroupToolbar() {
|
|
@@ -65,6 +68,7 @@ function BlockGroupToolbar() {
|
|
|
65
68
|
};
|
|
66
69
|
const onConvertToRow = () => onConvertToGroup('row');
|
|
67
70
|
const onConvertToStack = () => onConvertToGroup('stack');
|
|
71
|
+
const onConvertToGrid = () => onConvertToGroup('grid');
|
|
68
72
|
|
|
69
73
|
// Don't render the button if the current selection cannot be grouped.
|
|
70
74
|
// A good example is selecting multiple button blocks within a Buttons block:
|
|
@@ -79,6 +83,9 @@ function BlockGroupToolbar() {
|
|
|
79
83
|
const canInsertStack = !!variations.find(({
|
|
80
84
|
name
|
|
81
85
|
}) => name === 'group-stack');
|
|
86
|
+
const canInsertGrid = !!variations.find(({
|
|
87
|
+
name
|
|
88
|
+
}) => name === 'group-grid');
|
|
82
89
|
return createElement(ToolbarGroup, null, createElement(ToolbarButton, {
|
|
83
90
|
icon: group,
|
|
84
91
|
label: _x('Group', 'verb'),
|
|
@@ -91,6 +98,10 @@ function BlockGroupToolbar() {
|
|
|
91
98
|
icon: stack,
|
|
92
99
|
label: _x('Stack', 'verb'),
|
|
93
100
|
onClick: onConvertToStack
|
|
101
|
+
}), canInsertGrid && createElement(ToolbarButton, {
|
|
102
|
+
icon: grid,
|
|
103
|
+
label: _x('Grid', 'verb'),
|
|
104
|
+
onClick: onConvertToGrid
|
|
94
105
|
}));
|
|
95
106
|
}
|
|
96
107
|
export default BlockGroupToolbar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDispatch","useSelect","switchToBlockType","store","blocksStore","ToolbarButton","ToolbarGroup","group","row","stack","_x","useConvertToGroupButtonProps","blockEditorStore","layouts","type","flexWrap","orientation","BlockGroupToolbar","blocksSelection","clientIds","groupingBlockName","isGroupable","replaceBlocks","canRemove","variations","select","canRemoveBlocks","getBlockVariations","onConvertToGroup","layout","newBlocks","length","attributes","onConvertToRow","onConvertToStack","canInsertRow","find","name","canInsertStack","createElement","icon","label","onClick"],"sources":["@wordpress/block-editor/src/components/convert-to-group-buttons/toolbar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { switchToBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { group, row, stack } from '@wordpress/icons';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useConvertToGroupButtonProps } from '../convert-to-group-buttons';\nimport { store as blockEditorStore } from '../../store';\n\nconst layouts = {\n\tgroup: { type: 'constrained' },\n\trow: { type: 'flex', flexWrap: 'nowrap' },\n\tstack: { type: 'flex', orientation: 'vertical' },\n};\n\nfunction BlockGroupToolbar() {\n\tconst { blocksSelection, clientIds, groupingBlockName, isGroupable } =\n\t\tuseConvertToGroupButtonProps();\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\tconst { canRemove, variations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\tvariations: getBlockVariations(\n\t\t\t\t\tgroupingBlockName,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, groupingBlockName ]\n\t);\n\n\tconst onConvertToGroup = ( layout ) => {\n\t\tconst newBlocks = switchToBlockType(\n\t\t\tblocksSelection,\n\t\t\tgroupingBlockName\n\t\t);\n\n\t\tif ( typeof layout !== 'string' ) {\n\t\t\tlayout = 'group';\n\t\t}\n\n\t\tif ( newBlocks && newBlocks.length > 0 ) {\n\t\t\t// Because the block is not in the store yet we can't use\n\t\t\t// updateBlockAttributes so need to manually update attributes.\n\t\t\tnewBlocks[ 0 ].attributes.layout = layouts[ layout ];\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t}\n\t};\n\n\tconst onConvertToRow = () => onConvertToGroup( 'row' );\n\tconst onConvertToStack = () => onConvertToGroup( 'stack' );\n\n\t// Don't render the button if the current selection cannot be grouped.\n\t// A good example is selecting multiple button blocks within a Buttons block:\n\t// The group block is not a valid child of Buttons, so we should not show the button.\n\t// Any blocks that are locked against removal also cannot be grouped.\n\tif ( ! isGroupable || ! canRemove ) {\n\t\treturn null;\n\t}\n\n\tconst canInsertRow = !! variations.find(\n\t\t( { name } ) => name === 'group-row'\n\t);\n\tconst canInsertStack = !! variations.find(\n\t\t( { name } ) => name === 'group-stack'\n\t);\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ group }\n\t\t\t\tlabel={ _x( 'Group', 'verb' ) }\n\t\t\t\tonClick={ onConvertToGroup }\n\t\t\t/>\n\t\t\t{ canInsertRow && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ row }\n\t\t\t\t\tlabel={ _x( 'Row', 'single horizontal line' ) }\n\t\t\t\t\tonClick={ onConvertToRow }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canInsertStack && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ stack }\n\t\t\t\t\tlabel={ _x( 'Stack', 'verb' ) }\n\t\t\t\t\tonClick={ onConvertToStack }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default BlockGroupToolbar;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;AACxD,SAASC,iBAAiB,EAAEC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AAC3E,SAASC,aAAa,EAAEC,YAAY,QAAQ,uBAAuB;AACnE,SAASC,KAAK,EAAEC,GAAG,EAAEC,KAAK,QAAQ,kBAAkB;
|
|
1
|
+
{"version":3,"names":["useDispatch","useSelect","switchToBlockType","store","blocksStore","ToolbarButton","ToolbarGroup","group","row","stack","grid","_x","useConvertToGroupButtonProps","blockEditorStore","layouts","type","flexWrap","orientation","BlockGroupToolbar","blocksSelection","clientIds","groupingBlockName","isGroupable","replaceBlocks","canRemove","variations","select","canRemoveBlocks","getBlockVariations","onConvertToGroup","layout","newBlocks","length","attributes","onConvertToRow","onConvertToStack","onConvertToGrid","canInsertRow","find","name","canInsertStack","canInsertGrid","createElement","icon","label","onClick"],"sources":["@wordpress/block-editor/src/components/convert-to-group-buttons/toolbar.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { switchToBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { group, row, stack, grid } from '@wordpress/icons';\nimport { _x } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { useConvertToGroupButtonProps } from '../convert-to-group-buttons';\nimport { store as blockEditorStore } from '../../store';\n\nconst layouts = {\n\tgroup: { type: 'constrained' },\n\trow: { type: 'flex', flexWrap: 'nowrap' },\n\tstack: { type: 'flex', orientation: 'vertical' },\n\tgrid: { type: 'grid' },\n};\n\nfunction BlockGroupToolbar() {\n\tconst { blocksSelection, clientIds, groupingBlockName, isGroupable } =\n\t\tuseConvertToGroupButtonProps();\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\tconst { canRemove, variations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canRemoveBlocks } = select( blockEditorStore );\n\t\t\tconst { getBlockVariations } = select( blocksStore );\n\n\t\t\treturn {\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds ),\n\t\t\t\tvariations: getBlockVariations(\n\t\t\t\t\tgroupingBlockName,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, groupingBlockName ]\n\t);\n\n\tconst onConvertToGroup = ( layout ) => {\n\t\tconst newBlocks = switchToBlockType(\n\t\t\tblocksSelection,\n\t\t\tgroupingBlockName\n\t\t);\n\n\t\tif ( typeof layout !== 'string' ) {\n\t\t\tlayout = 'group';\n\t\t}\n\n\t\tif ( newBlocks && newBlocks.length > 0 ) {\n\t\t\t// Because the block is not in the store yet we can't use\n\t\t\t// updateBlockAttributes so need to manually update attributes.\n\t\t\tnewBlocks[ 0 ].attributes.layout = layouts[ layout ];\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t}\n\t};\n\n\tconst onConvertToRow = () => onConvertToGroup( 'row' );\n\tconst onConvertToStack = () => onConvertToGroup( 'stack' );\n\tconst onConvertToGrid = () => onConvertToGroup( 'grid' );\n\n\t// Don't render the button if the current selection cannot be grouped.\n\t// A good example is selecting multiple button blocks within a Buttons block:\n\t// The group block is not a valid child of Buttons, so we should not show the button.\n\t// Any blocks that are locked against removal also cannot be grouped.\n\tif ( ! isGroupable || ! canRemove ) {\n\t\treturn null;\n\t}\n\n\tconst canInsertRow = !! variations.find(\n\t\t( { name } ) => name === 'group-row'\n\t);\n\tconst canInsertStack = !! variations.find(\n\t\t( { name } ) => name === 'group-stack'\n\t);\n\tconst canInsertGrid = !! variations.find(\n\t\t( { name } ) => name === 'group-grid'\n\t);\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ group }\n\t\t\t\tlabel={ _x( 'Group', 'verb' ) }\n\t\t\t\tonClick={ onConvertToGroup }\n\t\t\t/>\n\t\t\t{ canInsertRow && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ row }\n\t\t\t\t\tlabel={ _x( 'Row', 'single horizontal line' ) }\n\t\t\t\t\tonClick={ onConvertToRow }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canInsertStack && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ stack }\n\t\t\t\t\tlabel={ _x( 'Stack', 'verb' ) }\n\t\t\t\t\tonClick={ onConvertToStack }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ canInsertGrid && (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ grid }\n\t\t\t\t\tlabel={ _x( 'Grid', 'verb' ) }\n\t\t\t\t\tonClick={ onConvertToGrid }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default BlockGroupToolbar;\n"],"mappings":"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"}
|
|
@@ -24,9 +24,12 @@ export default function AdvancedPanel({
|
|
|
24
24
|
css: newValue
|
|
25
25
|
});
|
|
26
26
|
if (cssError) {
|
|
27
|
+
// Check if the new value is valid CSS, and pass a wrapping selector
|
|
28
|
+
// to ensure that `transformStyles` validates the CSS. Note that the
|
|
29
|
+
// wrapping selector here is not used in the actual output of any styles.
|
|
27
30
|
const [transformed] = transformStyles([{
|
|
28
31
|
css: newValue
|
|
29
|
-
}], '.
|
|
32
|
+
}], '.for-validation-only');
|
|
30
33
|
if (transformed) {
|
|
31
34
|
setCSSError(null);
|
|
32
35
|
}
|
|
@@ -37,9 +40,13 @@ export default function AdvancedPanel({
|
|
|
37
40
|
setCSSError(null);
|
|
38
41
|
return;
|
|
39
42
|
}
|
|
43
|
+
|
|
44
|
+
// Check if the new value is valid CSS, and pass a wrapping selector
|
|
45
|
+
// to ensure that `transformStyles` validates the CSS. Note that the
|
|
46
|
+
// wrapping selector here is not used in the actual output of any styles.
|
|
40
47
|
const [transformed] = transformStyles([{
|
|
41
48
|
css: event.target.value
|
|
42
|
-
}], '.
|
|
49
|
+
}], '.for-validation-only');
|
|
43
50
|
setCSSError(transformed === null ? __('There is an error with your CSS structure.') : null);
|
|
44
51
|
}
|
|
45
52
|
return createElement(VStack, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TextareaControl","Notice","__experimentalVStack","VStack","useState","__","default","transformStyles","AdvancedPanel","value","onChange","inheritedValue","cssError","setCSSError","customCSS","css","handleOnChange","newValue","transformed","handleOnBlur","event","target","createElement","spacing","status","onRemove","label","__nextHasNoMarginBottom","onBlur","className","spellCheck"],"sources":["@wordpress/block-editor/src/components/global-styles/advanced-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tTextareaControl,\n\tNotice,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { default as transformStyles } from '../../utils/transform-styles';\n\nexport default function AdvancedPanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n} ) {\n\t// Custom CSS\n\tconst [ cssError, setCSSError ] = useState( null );\n\tconst customCSS = inheritedValue?.css;\n\tfunction handleOnChange( newValue ) {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tcss: newValue,\n\t\t} );\n\t\tif ( cssError ) {\n\t\t\tconst [ transformed ] = transformStyles(\n\t\t\t\t[ { css: newValue } ],\n\t\t\t\t'.
|
|
1
|
+
{"version":3,"names":["TextareaControl","Notice","__experimentalVStack","VStack","useState","__","default","transformStyles","AdvancedPanel","value","onChange","inheritedValue","cssError","setCSSError","customCSS","css","handleOnChange","newValue","transformed","handleOnBlur","event","target","createElement","spacing","status","onRemove","label","__nextHasNoMarginBottom","onBlur","className","spellCheck"],"sources":["@wordpress/block-editor/src/components/global-styles/advanced-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tTextareaControl,\n\tNotice,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { default as transformStyles } from '../../utils/transform-styles';\n\nexport default function AdvancedPanel( {\n\tvalue,\n\tonChange,\n\tinheritedValue = value,\n} ) {\n\t// Custom CSS\n\tconst [ cssError, setCSSError ] = useState( null );\n\tconst customCSS = inheritedValue?.css;\n\tfunction handleOnChange( newValue ) {\n\t\tonChange( {\n\t\t\t...value,\n\t\t\tcss: newValue,\n\t\t} );\n\t\tif ( cssError ) {\n\t\t\t// Check if the new value is valid CSS, and pass a wrapping selector\n\t\t\t// to ensure that `transformStyles` validates the CSS. Note that the\n\t\t\t// wrapping selector here is not used in the actual output of any styles.\n\t\t\tconst [ transformed ] = transformStyles(\n\t\t\t\t[ { css: newValue } ],\n\t\t\t\t'.for-validation-only'\n\t\t\t);\n\t\t\tif ( transformed ) {\n\t\t\t\tsetCSSError( null );\n\t\t\t}\n\t\t}\n\t}\n\tfunction handleOnBlur( event ) {\n\t\tif ( ! event?.target?.value ) {\n\t\t\tsetCSSError( null );\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if the new value is valid CSS, and pass a wrapping selector\n\t\t// to ensure that `transformStyles` validates the CSS. Note that the\n\t\t// wrapping selector here is not used in the actual output of any styles.\n\t\tconst [ transformed ] = transformStyles(\n\t\t\t[ { css: event.target.value } ],\n\t\t\t'.for-validation-only'\n\t\t);\n\n\t\tsetCSSError(\n\t\t\ttransformed === null\n\t\t\t\t? __( 'There is an error with your CSS structure.' )\n\t\t\t\t: null\n\t\t);\n\t}\n\n\treturn (\n\t\t<VStack spacing={ 3 }>\n\t\t\t{ cssError && (\n\t\t\t\t<Notice status=\"error\" onRemove={ () => setCSSError( null ) }>\n\t\t\t\t\t{ cssError }\n\t\t\t\t</Notice>\n\t\t\t) }\n\t\t\t<TextareaControl\n\t\t\t\tlabel={ __( 'Additional CSS' ) }\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tvalue={ customCSS }\n\t\t\t\tonChange={ ( newValue ) => handleOnChange( newValue ) }\n\t\t\t\tonBlur={ handleOnBlur }\n\t\t\t\tclassName=\"block-editor-global-styles-advanced-panel__custom-css-input\"\n\t\t\t\tspellCheck={ false }\n\t\t\t/>\n\t\t</VStack>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,eAAe,EACfC,MAAM,EACNC,oBAAoB,IAAIC,MAAM,QACxB,uBAAuB;AAC9B,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,OAAO,IAAIC,eAAe,QAAQ,8BAA8B;AAEzE,eAAe,SAASC,aAAaA,CAAE;EACtCC,KAAK;EACLC,QAAQ;EACRC,cAAc,GAAGF;AAClB,CAAC,EAAG;EACH;EACA,MAAM,CAAEG,QAAQ,EAAEC,WAAW,CAAE,GAAGT,QAAQ,CAAE,IAAK,CAAC;EAClD,MAAMU,SAAS,GAAGH,cAAc,EAAEI,GAAG;EACrC,SAASC,cAAcA,CAAEC,QAAQ,EAAG;IACnCP,QAAQ,CAAE;MACT,GAAGD,KAAK;MACRM,GAAG,EAAEE;IACN,CAAE,CAAC;IACH,IAAKL,QAAQ,EAAG;MACf;MACA;MACA;MACA,MAAM,CAAEM,WAAW,CAAE,GAAGX,eAAe,CACtC,CAAE;QAAEQ,GAAG,EAAEE;MAAS,CAAC,CAAE,EACrB,sBACD,CAAC;MACD,IAAKC,WAAW,EAAG;QAClBL,WAAW,CAAE,IAAK,CAAC;MACpB;IACD;EACD;EACA,SAASM,YAAYA,CAAEC,KAAK,EAAG;IAC9B,IAAK,CAAEA,KAAK,EAAEC,MAAM,EAAEZ,KAAK,EAAG;MAC7BI,WAAW,CAAE,IAAK,CAAC;MACnB;IACD;;IAEA;IACA;IACA;IACA,MAAM,CAAEK,WAAW,CAAE,GAAGX,eAAe,CACtC,CAAE;MAAEQ,GAAG,EAAEK,KAAK,CAACC,MAAM,CAACZ;IAAM,CAAC,CAAE,EAC/B,sBACD,CAAC;IAEDI,WAAW,CACVK,WAAW,KAAK,IAAI,GACjBb,EAAE,CAAE,4CAA6C,CAAC,GAClD,IACJ,CAAC;EACF;EAEA,OACCiB,aAAA,CAACnB,MAAM;IAACoB,OAAO,EAAG;EAAG,GAClBX,QAAQ,IACTU,aAAA,CAACrB,MAAM;IAACuB,MAAM,EAAC,OAAO;IAACC,QAAQ,EAAGA,CAAA,KAAMZ,WAAW,CAAE,IAAK;EAAG,GAC1DD,QACK,CACR,EACDU,aAAA,CAACtB,eAAe;IACf0B,KAAK,EAAGrB,EAAE,CAAE,gBAAiB,CAAG;IAChCsB,uBAAuB;IACvBlB,KAAK,EAAGK,SAAW;IACnBJ,QAAQ,EAAKO,QAAQ,IAAMD,cAAc,CAAEC,QAAS,CAAG;IACvDW,MAAM,EAAGT,YAAc;IACvBU,SAAS,EAAC,6DAA6D;IACvEC,UAAU,EAAG;EAAO,CACpB,CACM,CAAC;AAEX"}
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import { createElement } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* External dependencies
|
|
4
|
+
*/
|
|
5
|
+
import classnames from 'classnames';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* WordPress dependencies
|
|
9
|
+
*/
|
|
10
|
+
import { __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, 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 } from '@wordpress/components';
|
|
11
|
+
import { __, sprintf } from '@wordpress/i18n';
|
|
12
|
+
import { store as noticesStore } from '@wordpress/notices';
|
|
13
|
+
import { getFilename } from '@wordpress/url';
|
|
14
|
+
import { useCallback, Platform, useRef } from '@wordpress/element';
|
|
15
|
+
import { useDispatch, useSelect } from '@wordpress/data';
|
|
16
|
+
import { focus } from '@wordpress/dom';
|
|
17
|
+
import { isBlobURL } from '@wordpress/blob';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Internal dependencies
|
|
21
|
+
*/
|
|
22
|
+
import { TOOLSPANEL_DROPDOWNMENU_PROPS } from './utils';
|
|
23
|
+
import { setImmutably } from '../../utils/object';
|
|
24
|
+
import MediaReplaceFlow from '../media-replace-flow';
|
|
25
|
+
import { store as blockEditorStore } from '../../store';
|
|
26
|
+
const IMAGE_BACKGROUND_TYPE = 'image';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Checks site settings to see if the background panel may be used.
|
|
30
|
+
* `settings.background.backgroundSize` exists also,
|
|
31
|
+
* but can only be used if settings?.background?.backgroundImage is `true`.
|
|
32
|
+
*
|
|
33
|
+
* @param {Object} settings Site settings
|
|
34
|
+
* @return {boolean} Whether site settings has activated background panel.
|
|
35
|
+
*/
|
|
36
|
+
export function useHasBackgroundPanel(settings) {
|
|
37
|
+
return Platform.OS === 'web' && settings?.background?.backgroundImage;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Checks if there is a current value in the background size block support
|
|
42
|
+
* attributes. Background size values include background size as well
|
|
43
|
+
* as background position.
|
|
44
|
+
*
|
|
45
|
+
* @param {Object} style Style attribute.
|
|
46
|
+
* @return {boolean} Whether the block has a background size value set.
|
|
47
|
+
*/
|
|
48
|
+
export function hasBackgroundSizeValue(style) {
|
|
49
|
+
return style?.background?.backgroundPosition !== undefined || style?.background?.backgroundSize !== undefined;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Checks if there is a current value in the background image block support
|
|
54
|
+
* attributes.
|
|
55
|
+
*
|
|
56
|
+
* @param {Object} style Style attribute.
|
|
57
|
+
* @return {boolean} Whether the block has a background image value set.
|
|
58
|
+
*/
|
|
59
|
+
export function hasBackgroundImageValue(style) {
|
|
60
|
+
return !!style?.background?.backgroundImage?.id || !!style?.background?.backgroundImage?.url;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Get the help text for the background size control.
|
|
65
|
+
*
|
|
66
|
+
* @param {string} value backgroundSize value.
|
|
67
|
+
* @return {string} Translated help text.
|
|
68
|
+
*/
|
|
69
|
+
function backgroundSizeHelpText(value) {
|
|
70
|
+
if (value === 'cover' || value === undefined) {
|
|
71
|
+
return __('Image covers the space evenly.');
|
|
72
|
+
}
|
|
73
|
+
if (value === 'contain') {
|
|
74
|
+
return __('Image is contained without distortion.');
|
|
75
|
+
}
|
|
76
|
+
return __('Specify a fixed width.');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Converts decimal x and y coords from FocalPointPicker to percentage-based values
|
|
81
|
+
* to use as backgroundPosition value.
|
|
82
|
+
*
|
|
83
|
+
* @param {{x?:number, y?:number}} value FocalPointPicker coords.
|
|
84
|
+
* @return {string} backgroundPosition value.
|
|
85
|
+
*/
|
|
86
|
+
export const coordsToBackgroundPosition = value => {
|
|
87
|
+
if (!value || isNaN(value.x) && isNaN(value.y)) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
const x = isNaN(value.x) ? 0.5 : value.x;
|
|
91
|
+
const y = isNaN(value.y) ? 0.5 : value.y;
|
|
92
|
+
return `${x * 100}% ${y * 100}%`;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Converts backgroundPosition value to x and y coords for FocalPointPicker.
|
|
97
|
+
*
|
|
98
|
+
* @param {string} value backgroundPosition value.
|
|
99
|
+
* @return {{x?:number, y?:number}} FocalPointPicker coords.
|
|
100
|
+
*/
|
|
101
|
+
export const backgroundPositionToCoords = value => {
|
|
102
|
+
if (!value) {
|
|
103
|
+
return {
|
|
104
|
+
x: undefined,
|
|
105
|
+
y: undefined
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
let [x, y] = value.split(' ').map(v => parseFloat(v) / 100);
|
|
109
|
+
x = isNaN(x) ? undefined : x;
|
|
110
|
+
y = isNaN(y) ? x : y;
|
|
111
|
+
return {
|
|
112
|
+
x,
|
|
113
|
+
y
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
function InspectorImagePreview({
|
|
117
|
+
label,
|
|
118
|
+
filename,
|
|
119
|
+
url: imgUrl
|
|
120
|
+
}) {
|
|
121
|
+
const imgLabel = label || getFilename(imgUrl);
|
|
122
|
+
return createElement(ItemGroup, {
|
|
123
|
+
as: "span"
|
|
124
|
+
}, createElement(HStack, {
|
|
125
|
+
justify: "flex-start",
|
|
126
|
+
as: "span"
|
|
127
|
+
}, createElement("span", {
|
|
128
|
+
className: classnames('block-editor-global-styles-background-panel__inspector-image-indicator-wrapper', {
|
|
129
|
+
'has-image': imgUrl
|
|
130
|
+
}),
|
|
131
|
+
"aria-hidden": true
|
|
132
|
+
}, imgUrl && createElement("span", {
|
|
133
|
+
className: "block-editor-global-styles-background-panel__inspector-image-indicator",
|
|
134
|
+
style: {
|
|
135
|
+
backgroundImage: `url(${imgUrl})`
|
|
136
|
+
}
|
|
137
|
+
})), createElement(FlexItem, {
|
|
138
|
+
as: "span"
|
|
139
|
+
}, createElement(Truncate, {
|
|
140
|
+
numberOfLines: 1,
|
|
141
|
+
className: "block-editor-global-styles-background-panel__inspector-media-replace-title"
|
|
142
|
+
}, imgLabel), createElement(VisuallyHidden, {
|
|
143
|
+
as: "span"
|
|
144
|
+
}, filename ? sprintf( /* translators: %s: file name */
|
|
145
|
+
__('Selected image: %s'), filename) : __('No image selected')))));
|
|
146
|
+
}
|
|
147
|
+
function BackgroundImageToolsPanelItem({
|
|
148
|
+
panelId,
|
|
149
|
+
isShownByDefault,
|
|
150
|
+
onChange,
|
|
151
|
+
style,
|
|
152
|
+
inheritedValue
|
|
153
|
+
}) {
|
|
154
|
+
const mediaUpload = useSelect(select => select(blockEditorStore).getSettings().mediaUpload, []);
|
|
155
|
+
const {
|
|
156
|
+
id,
|
|
157
|
+
title,
|
|
158
|
+
url
|
|
159
|
+
} = style?.background?.backgroundImage || {
|
|
160
|
+
...inheritedValue?.background?.backgroundImage
|
|
161
|
+
};
|
|
162
|
+
const replaceContainerRef = useRef();
|
|
163
|
+
const {
|
|
164
|
+
createErrorNotice
|
|
165
|
+
} = useDispatch(noticesStore);
|
|
166
|
+
const onUploadError = message => {
|
|
167
|
+
createErrorNotice(message, {
|
|
168
|
+
type: 'snackbar'
|
|
169
|
+
});
|
|
170
|
+
};
|
|
171
|
+
const resetBackgroundImage = () => onChange(setImmutably(style, ['background', 'backgroundImage'], undefined));
|
|
172
|
+
const onSelectMedia = media => {
|
|
173
|
+
if (!media || !media.url) {
|
|
174
|
+
resetBackgroundImage();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (isBlobURL(media.url)) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// For media selections originated from a file upload.
|
|
182
|
+
if (media.media_type && media.media_type !== IMAGE_BACKGROUND_TYPE || !media.media_type && media.type && media.type !== IMAGE_BACKGROUND_TYPE) {
|
|
183
|
+
onUploadError(__('Only images can be used as a background image.'));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
onChange(setImmutably(style, ['background', 'backgroundImage'], {
|
|
187
|
+
url: media.url,
|
|
188
|
+
id: media.id,
|
|
189
|
+
source: 'file',
|
|
190
|
+
title: media.title || undefined
|
|
191
|
+
}));
|
|
192
|
+
};
|
|
193
|
+
const onFilesDrop = filesList => {
|
|
194
|
+
mediaUpload({
|
|
195
|
+
allowedTypes: ['image'],
|
|
196
|
+
filesList,
|
|
197
|
+
onFileChange([image]) {
|
|
198
|
+
if (isBlobURL(image?.url)) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
onSelectMedia(image);
|
|
202
|
+
},
|
|
203
|
+
onError: onUploadError
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
const resetAllFilter = useCallback(previousValue => {
|
|
207
|
+
return {
|
|
208
|
+
...previousValue,
|
|
209
|
+
style: {
|
|
210
|
+
...previousValue.style,
|
|
211
|
+
background: undefined
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
}, []);
|
|
215
|
+
const hasValue = hasBackgroundImageValue(style) || hasBackgroundImageValue(inheritedValue);
|
|
216
|
+
return createElement(ToolsPanelItem, {
|
|
217
|
+
className: "single-column",
|
|
218
|
+
hasValue: () => hasValue,
|
|
219
|
+
label: __('Background image'),
|
|
220
|
+
onDeselect: resetBackgroundImage,
|
|
221
|
+
isShownByDefault: isShownByDefault,
|
|
222
|
+
resetAllFilter: resetAllFilter,
|
|
223
|
+
panelId: panelId
|
|
224
|
+
}, createElement("div", {
|
|
225
|
+
className: "block-editor-global-styles-background-panel__inspector-media-replace-container",
|
|
226
|
+
ref: replaceContainerRef
|
|
227
|
+
}, createElement(MediaReplaceFlow, {
|
|
228
|
+
mediaId: id,
|
|
229
|
+
mediaURL: url,
|
|
230
|
+
allowedTypes: [IMAGE_BACKGROUND_TYPE],
|
|
231
|
+
accept: "image/*",
|
|
232
|
+
onSelect: onSelectMedia,
|
|
233
|
+
name: createElement(InspectorImagePreview, {
|
|
234
|
+
label: __('Background image'),
|
|
235
|
+
filename: title || __('Untitled'),
|
|
236
|
+
url: url
|
|
237
|
+
}),
|
|
238
|
+
variant: "secondary"
|
|
239
|
+
}, hasValue && createElement(MenuItem, {
|
|
240
|
+
onClick: () => {
|
|
241
|
+
const [toggleButton] = focus.tabbable.find(replaceContainerRef.current);
|
|
242
|
+
// Focus the toggle button and close the dropdown menu.
|
|
243
|
+
// This ensures similar behaviour as to selecting an image, where the dropdown is
|
|
244
|
+
// closed and focus is redirected to the dropdown toggle button.
|
|
245
|
+
toggleButton?.focus();
|
|
246
|
+
toggleButton?.click();
|
|
247
|
+
resetBackgroundImage();
|
|
248
|
+
}
|
|
249
|
+
}, __('Reset '))), createElement(DropZone, {
|
|
250
|
+
onFilesDrop: onFilesDrop,
|
|
251
|
+
label: __('Drop to upload')
|
|
252
|
+
})));
|
|
253
|
+
}
|
|
254
|
+
function BackgroundSizeToolsPanelItem({
|
|
255
|
+
panelId,
|
|
256
|
+
isShownByDefault,
|
|
257
|
+
onChange,
|
|
258
|
+
style,
|
|
259
|
+
inheritedValue,
|
|
260
|
+
defaultValues
|
|
261
|
+
}) {
|
|
262
|
+
const sizeValue = style?.background?.backgroundSize || inheritedValue?.background?.backgroundSize;
|
|
263
|
+
const repeatValue = style?.background?.backgroundRepeat || inheritedValue?.background?.backgroundRepeat;
|
|
264
|
+
const imageValue = style?.background?.backgroundImage?.url || inheritedValue?.background?.backgroundImage?.url;
|
|
265
|
+
const positionValue = style?.background?.backgroundPosition || inheritedValue?.background?.backgroundPosition;
|
|
266
|
+
|
|
267
|
+
/*
|
|
268
|
+
* An `undefined` value is replaced with any supplied
|
|
269
|
+
* default control value for the toggle group control.
|
|
270
|
+
* An empty string is treated as `auto` - this allows a user
|
|
271
|
+
* to select "Size" and then enter a custom value, with an
|
|
272
|
+
* empty value being treated as `auto`.
|
|
273
|
+
*/
|
|
274
|
+
const currentValueForToggle = sizeValue !== undefined && sizeValue !== 'cover' && sizeValue !== 'contain' || sizeValue === '' ? 'auto' : sizeValue || defaultValues?.backgroundSize;
|
|
275
|
+
|
|
276
|
+
/*
|
|
277
|
+
* If the current value is `cover` and the repeat value is `undefined`, then
|
|
278
|
+
* the toggle should be unchecked as the default state. Otherwise, the toggle
|
|
279
|
+
* should reflect the current repeat value.
|
|
280
|
+
*/
|
|
281
|
+
const repeatCheckedValue = !(repeatValue === 'no-repeat' || currentValueForToggle === 'cover' && repeatValue === undefined);
|
|
282
|
+
const hasValue = hasBackgroundSizeValue(style);
|
|
283
|
+
const resetAllFilter = useCallback(previousValue => {
|
|
284
|
+
return {
|
|
285
|
+
...previousValue,
|
|
286
|
+
style: {
|
|
287
|
+
...previousValue.style,
|
|
288
|
+
background: {
|
|
289
|
+
...previousValue.style?.background,
|
|
290
|
+
backgroundRepeat: undefined,
|
|
291
|
+
backgroundSize: undefined
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
}, []);
|
|
296
|
+
const updateBackgroundSize = next => {
|
|
297
|
+
// When switching to 'contain' toggle the repeat off.
|
|
298
|
+
let nextRepeat = repeatValue;
|
|
299
|
+
if (next === 'contain') {
|
|
300
|
+
nextRepeat = 'no-repeat';
|
|
301
|
+
}
|
|
302
|
+
if (next === 'cover') {
|
|
303
|
+
nextRepeat = undefined;
|
|
304
|
+
}
|
|
305
|
+
if ((currentValueForToggle === 'cover' || currentValueForToggle === 'contain') && next === 'auto') {
|
|
306
|
+
nextRepeat = undefined;
|
|
307
|
+
}
|
|
308
|
+
onChange(setImmutably(style, ['background'], {
|
|
309
|
+
...style?.background,
|
|
310
|
+
backgroundRepeat: nextRepeat,
|
|
311
|
+
backgroundSize: next
|
|
312
|
+
}));
|
|
313
|
+
};
|
|
314
|
+
const updateBackgroundPosition = next => {
|
|
315
|
+
onChange(setImmutably(style, ['background', 'backgroundPosition'], coordsToBackgroundPosition(next)));
|
|
316
|
+
};
|
|
317
|
+
const toggleIsRepeated = () => onChange(setImmutably(style, ['background', 'backgroundRepeat'], repeatCheckedValue === true ? 'no-repeat' : undefined));
|
|
318
|
+
const resetBackgroundSize = () => onChange(setImmutably(style, ['background'], {
|
|
319
|
+
...style?.background,
|
|
320
|
+
backgroundPosition: undefined,
|
|
321
|
+
backgroundRepeat: undefined,
|
|
322
|
+
backgroundSize: undefined
|
|
323
|
+
}));
|
|
324
|
+
return createElement(VStack, {
|
|
325
|
+
as: ToolsPanelItem,
|
|
326
|
+
spacing: 2,
|
|
327
|
+
className: "single-column",
|
|
328
|
+
hasValue: () => hasValue,
|
|
329
|
+
label: __('Size'),
|
|
330
|
+
onDeselect: resetBackgroundSize,
|
|
331
|
+
isShownByDefault: isShownByDefault,
|
|
332
|
+
resetAllFilter: resetAllFilter,
|
|
333
|
+
panelId: panelId
|
|
334
|
+
}, createElement(FocalPointPicker, {
|
|
335
|
+
__next40pxDefaultSize: true,
|
|
336
|
+
label: __('Position'),
|
|
337
|
+
url: imageValue,
|
|
338
|
+
value: backgroundPositionToCoords(positionValue),
|
|
339
|
+
onChange: updateBackgroundPosition
|
|
340
|
+
}), createElement(ToggleGroupControl, {
|
|
341
|
+
size: '__unstable-large',
|
|
342
|
+
label: __('Size'),
|
|
343
|
+
value: currentValueForToggle,
|
|
344
|
+
onChange: updateBackgroundSize,
|
|
345
|
+
isBlock: true,
|
|
346
|
+
help: backgroundSizeHelpText(sizeValue)
|
|
347
|
+
}, createElement(ToggleGroupControlOption, {
|
|
348
|
+
key: 'cover',
|
|
349
|
+
value: 'cover',
|
|
350
|
+
label: __('Cover')
|
|
351
|
+
}), createElement(ToggleGroupControlOption, {
|
|
352
|
+
key: 'contain',
|
|
353
|
+
value: 'contain',
|
|
354
|
+
label: __('Contain')
|
|
355
|
+
}), createElement(ToggleGroupControlOption, {
|
|
356
|
+
key: 'fixed',
|
|
357
|
+
value: 'auto',
|
|
358
|
+
label: __('Fixed')
|
|
359
|
+
})), sizeValue !== undefined && sizeValue !== 'cover' && sizeValue !== 'contain' ? createElement(UnitControl, {
|
|
360
|
+
size: '__unstable-large',
|
|
361
|
+
onChange: updateBackgroundSize,
|
|
362
|
+
value: sizeValue
|
|
363
|
+
}) : null, currentValueForToggle !== 'cover' && createElement(ToggleControl, {
|
|
364
|
+
label: __('Repeat'),
|
|
365
|
+
checked: repeatCheckedValue,
|
|
366
|
+
onChange: toggleIsRepeated
|
|
367
|
+
}));
|
|
368
|
+
}
|
|
369
|
+
function BackgroundToolsPanel({
|
|
370
|
+
resetAllFilter,
|
|
371
|
+
onChange,
|
|
372
|
+
value,
|
|
373
|
+
panelId,
|
|
374
|
+
children
|
|
375
|
+
}) {
|
|
376
|
+
const resetAll = () => {
|
|
377
|
+
const updatedValue = resetAllFilter(value);
|
|
378
|
+
onChange(updatedValue);
|
|
379
|
+
};
|
|
380
|
+
return createElement(VStack, {
|
|
381
|
+
as: ToolsPanel,
|
|
382
|
+
spacing: 6,
|
|
383
|
+
label: __('Background'),
|
|
384
|
+
resetAll: resetAll,
|
|
385
|
+
panelId: panelId,
|
|
386
|
+
dropdownMenuProps: TOOLSPANEL_DROPDOWNMENU_PROPS
|
|
387
|
+
}, children);
|
|
388
|
+
}
|
|
389
|
+
const DEFAULT_CONTROLS = {
|
|
390
|
+
backgroundImage: true,
|
|
391
|
+
backgroundSize: true
|
|
392
|
+
};
|
|
393
|
+
export default function BackgroundPanel({
|
|
394
|
+
as: Wrapper = BackgroundToolsPanel,
|
|
395
|
+
value,
|
|
396
|
+
onChange,
|
|
397
|
+
inheritedValue = value,
|
|
398
|
+
settings,
|
|
399
|
+
panelId,
|
|
400
|
+
defaultControls = DEFAULT_CONTROLS,
|
|
401
|
+
defaultValues = {}
|
|
402
|
+
}) {
|
|
403
|
+
const resetAllFilter = useCallback(previousValue => {
|
|
404
|
+
return {
|
|
405
|
+
...previousValue,
|
|
406
|
+
background: {}
|
|
407
|
+
};
|
|
408
|
+
}, []);
|
|
409
|
+
const shouldShowBackgroundSizeControls = settings?.background?.backgroundSize;
|
|
410
|
+
return createElement(Wrapper, {
|
|
411
|
+
resetAllFilter: resetAllFilter,
|
|
412
|
+
value: value,
|
|
413
|
+
onChange: onChange,
|
|
414
|
+
panelId: panelId
|
|
415
|
+
}, createElement(BackgroundImageToolsPanelItem, {
|
|
416
|
+
onChange: onChange,
|
|
417
|
+
panelId: panelId,
|
|
418
|
+
isShownByDefault: defaultControls.backgroundImage,
|
|
419
|
+
style: value,
|
|
420
|
+
inheritedValue: inheritedValue
|
|
421
|
+
}), shouldShowBackgroundSizeControls && createElement(BackgroundSizeToolsPanelItem, {
|
|
422
|
+
onChange: onChange,
|
|
423
|
+
panelId: panelId,
|
|
424
|
+
isShownByDefault: defaultControls.backgroundSize,
|
|
425
|
+
style: value,
|
|
426
|
+
inheritedValue: inheritedValue,
|
|
427
|
+
defaultValues: defaultValues
|
|
428
|
+
}));
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=background-panel.js.map
|