@wordpress/block-editor 9.7.0 → 9.8.1-next.957ca95e4c.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 +2 -0
- package/build/components/block-alignment-control/use-available-alignments.js +1 -1
- package/build/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build/components/block-edit-visually-button/index.js +46 -0
- package/build/components/block-edit-visually-button/index.js.map +1 -0
- package/build/components/block-list/block-list-compact.native.js +73 -0
- package/build/components/block-list/block-list-compact.native.js.map +1 -0
- package/build/components/block-list/use-block-props/use-focus-first-element.js +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-popover/inbetween.js +4 -2
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +11 -7
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-settings-menu/index.js +2 -6
- package/build/components/block-settings-menu/index.js.map +1 -1
- package/build/components/block-switcher/index.js +10 -16
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-toolbar/index.js +5 -1
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +10 -2
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +126 -0
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -0
- package/build/components/border-radius-control/all-input-control.js +31 -3
- package/build/components/border-radius-control/all-input-control.js.map +1 -1
- package/build/components/border-radius-control/index.js +20 -6
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/border-radius-control/input-controls.js +21 -6
- package/build/components/border-radius-control/input-controls.js.map +1 -1
- package/build/components/border-radius-control/utils.js +13 -16
- package/build/components/border-radius-control/utils.js.map +1 -1
- package/build/components/colors/with-colors.js +17 -4
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/colors-gradients/control.js +1 -0
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/copy-handler/index.js +6 -0
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +2 -7
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/duotone/components.js +5 -5
- package/build/components/duotone/components.js.map +1 -1
- package/build/components/font-family/index.js +1 -1
- package/build/components/font-family/index.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js +17 -4
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/index.js +9 -0
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/index.native.js +6 -2
- package/build/components/inner-blocks/index.native.js.map +1 -1
- package/build/components/inserter/search-items.js +22 -4
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/link-control/link-preview.js +0 -1
- package/build/components/link-control/link-preview.js.map +1 -1
- package/build/components/list-view/block-select-button.js +5 -2
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/use-block-selection.js +1 -7
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/rich-text/index.js +10 -0
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-enter.js +0 -4
- package/build/components/rich-text/use-enter.js.map +1 -1
- package/build/components/rich-text/use-format-types.js +8 -11
- package/build/components/rich-text/use-format-types.js.map +1 -1
- package/build/components/spacing-sizes-control/all-input-control.js +53 -0
- package/build/components/spacing-sizes-control/all-input-control.js.map +1 -0
- package/build/components/spacing-sizes-control/axial-input-controls.js +69 -0
- package/build/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
- package/build/components/spacing-sizes-control/index.js +100 -0
- package/build/components/spacing-sizes-control/index.js.map +1 -0
- package/build/components/spacing-sizes-control/input-controls.js +52 -0
- package/build/components/spacing-sizes-control/input-controls.js.map +1 -0
- package/build/components/spacing-sizes-control/linked-button.js +38 -0
- package/build/components/spacing-sizes-control/linked-button.js.map +1 -0
- package/build/components/spacing-sizes-control/spacing-input-control.js +213 -0
- package/build/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
- package/build/components/spacing-sizes-control/utils.js +233 -0
- package/build/components/spacing-sizes-control/utils.js.map +1 -0
- package/build/components/text-decoration-control/index.js +28 -17
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +21 -14
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/url-input/index.js +1 -1
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/writing-flow/index.js +2 -0
- package/build/components/writing-flow/index.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js +4 -2
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js +7 -10
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +10 -2
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/hooks/align.js +3 -1
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/anchor.js +3 -7
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border-radius.js +2 -7
- package/build/hooks/border-radius.js.map +1 -1
- package/build/hooks/border.js +2 -2
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +4 -1
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/dimensions.js +15 -0
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +4 -4
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/font-appearance.js +2 -1
- package/build/hooks/font-appearance.js.map +1 -1
- package/build/hooks/font-family.js +3 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +3 -1
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/gap.js +25 -6
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/generated-class-name.js +1 -7
- package/build/hooks/generated-class-name.js.map +1 -1
- package/build/hooks/layout.js +23 -13
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/letter-spacing.js +2 -1
- package/build/hooks/letter-spacing.js.map +1 -1
- package/build/hooks/line-height.js +2 -1
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/lock.js +3 -7
- package/build/hooks/lock.js.map +1 -1
- package/build/hooks/margin.js +28 -12
- package/build/hooks/margin.js.map +1 -1
- package/build/hooks/padding.js +19 -8
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/style.js +4 -50
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/text-decoration.js +2 -1
- package/build/hooks/text-decoration.js.map +1 -1
- package/build/hooks/text-transform.js +2 -1
- package/build/hooks/text-transform.js.map +1 -1
- package/build/layouts/constrained.js +225 -0
- package/build/layouts/constrained.js.map +1 -0
- package/build/layouts/flex.js +1 -1
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +18 -152
- package/build/layouts/flow.js.map +1 -1
- package/build/layouts/index.js +3 -1
- package/build/layouts/index.js.map +1 -1
- package/build/layouts/utils.js +43 -0
- package/build/layouts/utils.js.map +1 -1
- package/build/store/actions.js +25 -3
- package/build/store/actions.js.map +1 -1
- package/build/store/selectors.js +4 -6
- package/build/store/selectors.js.map +1 -1
- package/build-module/components/block-alignment-control/use-available-alignments.js +1 -1
- package/build-module/components/block-alignment-control/use-available-alignments.js.map +1 -1
- package/build-module/components/block-edit-visually-button/index.js +35 -0
- package/build-module/components/block-edit-visually-button/index.js.map +1 -0
- package/build-module/components/block-list/block-list-compact.native.js +58 -0
- package/build-module/components/block-list/block-list-compact.native.js.map +1 -0
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +4 -2
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +9 -7
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-settings-menu/index.js +3 -6
- package/build-module/components/block-settings-menu/index.js.map +1 -1
- package/build-module/components/block-switcher/index.js +10 -16
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +4 -1
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +8 -2
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +114 -0
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -0
- package/build-module/components/border-radius-control/all-input-control.js +32 -4
- package/build-module/components/border-radius-control/all-input-control.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +20 -6
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/border-radius-control/input-controls.js +22 -7
- package/build-module/components/border-radius-control/input-controls.js.map +1 -1
- package/build-module/components/border-radius-control/utils.js +13 -16
- package/build-module/components/border-radius-control/utils.js.map +1 -1
- package/build-module/components/colors/with-colors.js +16 -3
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +1 -0
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/copy-handler/index.js +7 -1
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +2 -6
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/duotone/components.js +5 -5
- package/build-module/components/duotone/components.js.map +1 -1
- package/build-module/components/font-family/index.js +1 -1
- package/build-module/components/font-family/index.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js +16 -3
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/index.native.js +5 -2
- package/build-module/components/inner-blocks/index.native.js.map +1 -1
- package/build-module/components/inserter/search-items.js +19 -5
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/link-control/link-preview.js +0 -1
- package/build-module/components/link-control/link-preview.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +5 -2
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js +1 -6
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/rich-text/index.js +10 -0
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-enter.js +0 -4
- package/build-module/components/rich-text/use-enter.js.map +1 -1
- package/build-module/components/rich-text/use-format-types.js +8 -10
- package/build-module/components/rich-text/use-format-types.js.map +1 -1
- package/build-module/components/spacing-sizes-control/all-input-control.js +41 -0
- package/build-module/components/spacing-sizes-control/all-input-control.js.map +1 -0
- package/build-module/components/spacing-sizes-control/axial-input-controls.js +57 -0
- package/build-module/components/spacing-sizes-control/axial-input-controls.js.map +1 -0
- package/build-module/components/spacing-sizes-control/index.js +83 -0
- package/build-module/components/spacing-sizes-control/index.js.map +1 -0
- package/build-module/components/spacing-sizes-control/input-controls.js +41 -0
- package/build-module/components/spacing-sizes-control/input-controls.js.map +1 -0
- package/build-module/components/spacing-sizes-control/linked-button.js +28 -0
- package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -0
- package/build-module/components/spacing-sizes-control/spacing-input-control.js +197 -0
- package/build-module/components/spacing-sizes-control/spacing-input-control.js.map +1 -0
- package/build-module/components/spacing-sizes-control/utils.js +203 -0
- package/build-module/components/spacing-sizes-control/utils.js.map +1 -0
- package/build-module/components/text-decoration-control/index.js +25 -18
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +19 -15
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/url-input/index.js +1 -1
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/writing-flow/index.js +2 -0
- package/build-module/components/writing-flow/index.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js +4 -2
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js +7 -10
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +10 -2
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/hooks/align.js +4 -2
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/anchor.js +3 -6
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border-radius.js +2 -7
- package/build-module/hooks/border-radius.js.map +1 -1
- package/build-module/hooks/border.js +2 -2
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +4 -1
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/dimensions.js +13 -0
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +4 -4
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/font-appearance.js +2 -1
- package/build-module/hooks/font-appearance.js.map +1 -1
- package/build-module/hooks/font-family.js +3 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +3 -1
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/gap.js +21 -4
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/generated-class-name.js +1 -6
- package/build-module/hooks/generated-class-name.js.map +1 -1
- package/build-module/hooks/layout.js +24 -14
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/letter-spacing.js +2 -1
- package/build-module/hooks/letter-spacing.js.map +1 -1
- package/build-module/hooks/line-height.js +2 -1
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/lock.js +3 -6
- package/build-module/hooks/lock.js.map +1 -1
- package/build-module/hooks/margin.js +26 -12
- package/build-module/hooks/margin.js.map +1 -1
- package/build-module/hooks/padding.js +17 -8
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/style.js +7 -53
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/text-decoration.js +2 -1
- package/build-module/hooks/text-decoration.js.map +1 -1
- package/build-module/hooks/text-transform.js +2 -1
- package/build-module/hooks/text-transform.js.map +1 -1
- package/build-module/layouts/constrained.js +207 -0
- package/build-module/layouts/constrained.js.map +1 -0
- package/build-module/layouts/flex.js +1 -1
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +20 -147
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/layouts/index.js +2 -1
- package/build-module/layouts/index.js.map +1 -1
- package/build-module/layouts/utils.js +40 -0
- package/build-module/layouts/utils.js.map +1 -1
- package/build-module/store/actions.js +25 -3
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/selectors.js +5 -7
- package/build-module/store/selectors.js.map +1 -1
- package/build-style/style-rtl.css +157 -61
- package/build-style/style.css +157 -61
- package/package.json +30 -28
- package/src/components/block-alignment-control/use-available-alignments.js +1 -1
- package/src/components/block-edit-visually-button/index.js +39 -0
- package/src/components/block-list/block-list-compact.native.js +62 -0
- package/src/components/block-list/style.scss +29 -6
- package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -1
- package/src/components/block-popover/inbetween.js +4 -1
- package/src/components/block-popover/index.js +22 -15
- package/src/components/block-settings-menu/index.js +11 -15
- package/src/components/block-switcher/index.js +9 -13
- package/src/components/block-switcher/test/index.js +2 -2
- package/src/components/block-toolbar/index.js +2 -0
- package/src/components/block-tools/selected-block-popover.js +7 -0
- package/src/components/block-tools/use-block-toolbar-popover-props.js +123 -0
- package/src/components/border-radius-control/all-input-control.js +41 -4
- package/src/components/border-radius-control/index.js +25 -5
- package/src/components/border-radius-control/input-controls.js +40 -13
- package/src/components/border-radius-control/test/utils.js +22 -60
- package/src/components/border-radius-control/utils.js +12 -16
- package/src/components/button-block-appender/style.scss +23 -0
- package/src/components/colors/with-colors.js +11 -1
- package/src/components/colors-gradients/control.js +1 -0
- package/src/components/copy-handler/index.js +18 -0
- package/src/components/date-format-picker/index.js +12 -14
- package/src/components/date-format-picker/style.scss +0 -4
- package/src/components/duotone/components.js +5 -5
- package/src/components/duotone-control/style.scss +0 -4
- package/src/components/font-appearance-control/style.scss +0 -2
- package/src/components/font-family/index.js +1 -1
- package/src/components/font-sizes/with-font-sizes.js +11 -1
- package/src/components/index.js +1 -0
- package/src/components/inner-blocks/index.native.js +5 -1
- package/src/components/inserter/search-items.js +17 -5
- package/src/components/link-control/link-preview.js +0 -1
- package/src/components/link-control/test/index.js +540 -893
- package/src/components/list-view/block-select-button.js +7 -2
- package/src/components/list-view/style.scss +11 -4
- package/src/components/list-view/use-block-selection.js +2 -8
- package/src/components/media-replace-flow/style.scss +1 -0
- package/src/components/rich-text/index.js +9 -0
- package/src/components/rich-text/use-enter.js +0 -3
- package/src/components/rich-text/use-format-types.js +6 -6
- package/src/components/spacing-sizes-control/all-input-control.js +40 -0
- package/src/components/spacing-sizes-control/axial-input-controls.js +62 -0
- package/src/components/spacing-sizes-control/index.js +91 -0
- package/src/components/spacing-sizes-control/input-controls.js +46 -0
- package/src/components/spacing-sizes-control/linked-button.js +25 -0
- package/src/components/spacing-sizes-control/spacing-input-control.js +285 -0
- package/src/components/spacing-sizes-control/style.scss +122 -0
- package/src/components/spacing-sizes-control/test/utils.js +182 -0
- package/src/components/spacing-sizes-control/utils.js +222 -0
- package/src/components/text-decoration-control/index.js +41 -30
- package/src/components/text-decoration-control/stories/index.js +37 -0
- package/src/components/text-transform-control/index.js +27 -27
- package/src/components/text-transform-control/stories/index.js +37 -0
- package/src/components/url-input/index.js +1 -1
- package/src/components/url-input/style.scss +2 -2
- package/src/components/url-popover/style.scss +0 -3
- package/src/components/writing-flow/index.js +2 -0
- package/src/components/writing-flow/use-multi-selection.js +4 -1
- package/src/components/writing-flow/use-select-all.js +10 -13
- package/src/components/writing-flow/use-selection-observer.js +10 -2
- package/src/hooks/align.js +2 -2
- package/src/hooks/anchor.js +1 -6
- package/src/hooks/border-radius.js +2 -6
- package/src/hooks/border.js +2 -2
- package/src/hooks/color.js +13 -3
- package/src/hooks/dimensions.js +14 -0
- package/src/hooks/duotone.js +4 -4
- package/src/hooks/font-appearance.js +1 -0
- package/src/hooks/font-family.js +2 -0
- package/src/hooks/font-size.js +2 -0
- package/src/hooks/gap.js +42 -19
- package/src/hooks/generated-class-name.js +6 -9
- package/src/hooks/layout.js +47 -16
- package/src/hooks/letter-spacing.js +1 -0
- package/src/hooks/line-height.js +1 -0
- package/src/hooks/lock.js +1 -6
- package/src/hooks/margin.js +49 -17
- package/src/hooks/padding.js +41 -14
- package/src/hooks/style.js +5 -56
- package/src/hooks/test/gap.js +16 -0
- package/src/hooks/text-decoration.js +1 -0
- package/src/hooks/text-transform.js +1 -0
- package/src/hooks/typography.scss +0 -7
- package/src/layouts/constrained.js +220 -0
- package/src/layouts/flex.js +1 -1
- package/src/layouts/flow.js +17 -173
- package/src/layouts/index.js +2 -1
- package/src/layouts/test/constrained.js +21 -0
- package/src/layouts/utils.js +34 -0
- package/src/store/actions.js +32 -4
- package/src/store/selectors.js +5 -4
- package/src/style.scss +1 -2
- package/build/components/block-settings-menu/block-edit-visually-button.js +0 -70
- package/build/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
- package/build-module/components/block-settings-menu/block-edit-visually-button.js +0 -56
- package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +0 -1
- package/src/components/block-settings-menu/block-edit-visually-button.js +0 -52
- package/src/components/text-decoration-control/style.scss +0 -18
- package/src/components/text-transform-control/style.scss +0 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["BlockToolbar","hideDragHandle","blockClientIds","blockClientId","blockType","hasFixedToolbar","hasReducedUI","isValid","isVisual","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","classes","name"],"mappings":";;;;;;;;;AASA;;;;AANA;;AAKA;;AAEA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-toolbar/index.js"],"names":["BlockToolbar","hideDragHandle","blockClientIds","blockClientId","blockType","hasFixedToolbar","hasReducedUI","isValid","isVisual","select","getBlockName","getBlockMode","getSelectedBlockClientIds","isBlockValid","getBlockRootClientId","getSettings","blockEditorStore","selectedBlockClientIds","selectedBlockClientId","blockRootClientId","settings","rootClientId","every","id","toggleBlockHighlight","nodeRef","showMovers","gestures","showMoversGestures","ref","onChange","isFocused","displayHeaderToolbar","shouldShowMovers","length","shouldShowVisualToolbar","isMultiToolbar","classes","name"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { getBlockType, hasBlockSupport } from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockSwitcher from '../block-switcher';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowMoversGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport __unstableBlockNameContext from './block-name-context';\n\nconst BlockToolbar = ( { hideDragHandle } ) => {\n\tconst {\n\t\tblockClientIds,\n\t\tblockClientId,\n\t\tblockType,\n\t\thasFixedToolbar,\n\t\thasReducedUI,\n\t\tisValid,\n\t\tisVisual,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockRootClientId,\n\t\t\tgetSettings,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst blockRootClientId = getBlockRootClientId( selectedBlockClientId );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockType:\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\tgetBlockType( getBlockName( selectedBlockClientId ) ),\n\t\t\thasFixedToolbar: settings.hasFixedToolbar,\n\t\t\thasReducedUI: settings.hasReducedUI,\n\t\t\trootClientId: blockRootClientId,\n\t\t\tisValid: selectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockValid( id )\n\t\t\t),\n\t\t\tisVisual: selectedBlockClientIds.every(\n\t\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t\t),\n\t\t};\n\t}, [] );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst { toggleBlockHighlight } = useDispatch( blockEditorStore );\n\tconst nodeRef = useRef();\n\tconst { showMovers, gestures: showMoversGestures } = useShowMoversGestures(\n\t\t{\n\t\t\tref: nodeRef,\n\t\t\tonChange( isFocused ) {\n\t\t\t\tif ( isFocused && hasReducedUI ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttoggleBlockHighlight( blockClientId, isFocused );\n\t\t\t},\n\t\t}\n\t);\n\n\t// Account for the cases where the block toolbar is rendered within the\n\t// header area and not contextually to the block.\n\tconst displayHeaderToolbar =\n\t\tuseViewportMatch( 'medium', '<' ) || hasFixedToolbar;\n\n\tif ( blockType ) {\n\t\tif ( ! hasBlockSupport( blockType, '__experimentalToolbar', true ) ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst shouldShowMovers = displayHeaderToolbar || showMovers;\n\n\tif ( blockClientIds.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst shouldShowVisualToolbar = isValid && isVisual;\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\n\tconst classes = classnames(\n\t\t'block-editor-block-toolbar',\n\t\tshouldShowMovers && 'is-showing-movers'\n\t);\n\n\treturn (\n\t\t<div className={ classes }>\n\t\t\t{ ! isMultiToolbar && ! displayHeaderToolbar && (\n\t\t\t\t<BlockParentSelector clientIds={ blockClientIds } />\n\t\t\t) }\n\t\t\t<div ref={ nodeRef } { ...showMoversGestures }>\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) && (\n\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t<BlockSwitcher clientIds={ blockClientIds } />\n\t\t\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\tclientId={ blockClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<BlockMover\n\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\thideDragHandle={ hideDragHandle || hasReducedUI }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ shouldShowVisualToolbar && isMultiToolbar && (\n\t\t\t\t<BlockGroupToolbar />\n\t\t\t) }\n\t\t\t{ shouldShowVisualToolbar && (\n\t\t\t\t<>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t/>\n\t\t\t\t\t<__unstableBlockNameContext.Provider\n\t\t\t\t\t\tvalue={ blockType?.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t</__unstableBlockNameContext.Provider>\n\t\t\t\t</>\n\t\t\t) }\n\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t</div>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n */\nexport default BlockToolbar;\n"]}
|
|
@@ -9,6 +9,8 @@ exports.default = WrappedBlockPopover;
|
|
|
9
9
|
|
|
10
10
|
var _element = require("@wordpress/element");
|
|
11
11
|
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
12
14
|
var _lodash = require("lodash");
|
|
13
15
|
|
|
14
16
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
@@ -29,6 +31,8 @@ var _store = require("../../store");
|
|
|
29
31
|
|
|
30
32
|
var _blockPopover = _interopRequireDefault(require("../block-popover"));
|
|
31
33
|
|
|
34
|
+
var _useBlockToolbarPopoverProps = _interopRequireDefault(require("./use-block-toolbar-popover-props"));
|
|
35
|
+
|
|
32
36
|
/**
|
|
33
37
|
* External dependencies
|
|
34
38
|
*/
|
|
@@ -110,12 +114,16 @@ function SelectedBlockPopover(_ref) {
|
|
|
110
114
|
// to it when re-mounting.
|
|
111
115
|
|
|
112
116
|
const initialToolbarItemIndexRef = (0, _element.useRef)();
|
|
117
|
+
const popoverProps = (0, _useBlockToolbarPopoverProps.default)({
|
|
118
|
+
contentElement: __unstableContentRef === null || __unstableContentRef === void 0 ? void 0 : __unstableContentRef.current,
|
|
119
|
+
clientId
|
|
120
|
+
});
|
|
113
121
|
|
|
114
122
|
if (!shouldShowBreadcrumb && !shouldShowContextualToolbar) {
|
|
115
123
|
return null;
|
|
116
124
|
}
|
|
117
125
|
|
|
118
|
-
return (0, _element.createElement)(_blockPopover.default, {
|
|
126
|
+
return (0, _element.createElement)(_blockPopover.default, (0, _extends2.default)({
|
|
119
127
|
clientId: capturingClientId || clientId,
|
|
120
128
|
bottomClientId: lastClientId,
|
|
121
129
|
className: (0, _classnames.default)('block-editor-block-list__block-popover', {
|
|
@@ -123,7 +131,7 @@ function SelectedBlockPopover(_ref) {
|
|
|
123
131
|
}),
|
|
124
132
|
__unstablePopoverSlot: __unstablePopoverSlot,
|
|
125
133
|
__unstableContentRef: __unstableContentRef
|
|
126
|
-
}, shouldShowContextualToolbar && (0, _element.createElement)(_blockContextualToolbar.default // If the toolbar is being shown because of being forced
|
|
134
|
+
}, popoverProps), shouldShowContextualToolbar && (0, _element.createElement)(_blockContextualToolbar.default // If the toolbar is being shown because of being forced
|
|
127
135
|
// it should focus the toolbar right after the mount.
|
|
128
136
|
, {
|
|
129
137
|
focusOnMount: isToolbarForced.current,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/selected-block-popover.js"],"names":["selector","select","isNavigationMode","isMultiSelecting","hasMultiSelection","isTyping","getSettings","getLastMultiSelectedBlockClientId","blockEditorStore","hasFixedToolbar","lastClientId","SelectedBlockPopover","clientId","rootClientId","isEmptyDefaultBlock","capturingClientId","__unstablePopoverSlot","__unstableContentRef","isInsertionPointVisible","isBlockInsertionPointVisible","getBlockInsertionPoint","getBlockOrder","insertionPoint","order","index","isLargeViewport","isToolbarForced","stopTyping","showEmptyBlockSideInserter","shouldShowBreadcrumb","shouldShowContextualToolbar","canFocusHiddenToolbar","current","isDisabled","initialToolbarItemIndexRef","wrapperSelector","getSelectedBlockClientId","getFirstMultiSelectedBlockClientId","getBlockRootClientId","getBlock","getBlockParents","__experimentalGetBlockListSettingsForBlocks","name","attributes","blockParentsClientIds","parentBlockListSettings","parentClientId","__experimentalCaptureToolbars","WrappedBlockPopover","selected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useEffect } from '@wordpress/element';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockSelectionButton from './block-selection-button';\nimport BlockContextualToolbar from './block-contextual-toolbar';\nimport { store as blockEditorStore } from '../../store';\nimport BlockPopover from '../block-popover';\n\nfunction selector( select ) {\n\tconst {\n\t\tisNavigationMode,\n\t\tisMultiSelecting,\n\t\thasMultiSelection,\n\t\tisTyping,\n\t\tgetSettings,\n\t\tgetLastMultiSelectedBlockClientId,\n\t} = select( blockEditorStore );\n\treturn {\n\t\tisNavigationMode: isNavigationMode(),\n\t\tisMultiSelecting: isMultiSelecting(),\n\t\tisTyping: isTyping(),\n\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\tlastClientId: hasMultiSelection()\n\t\t\t? getLastMultiSelectedBlockClientId()\n\t\t\t: null,\n\t};\n}\n\nfunction SelectedBlockPopover( {\n\tclientId,\n\trootClientId,\n\tisEmptyDefaultBlock,\n\tcapturingClientId,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst {\n\t\tisNavigationMode,\n\t\tisMultiSelecting,\n\t\tisTyping,\n\t\thasFixedToolbar,\n\t\tlastClientId,\n\t} = useSelect( selector, [] );\n\tconst isInsertionPointVisible = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tif ( ! isBlockInsertionPointVisible() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\t\t\treturn order[ insertionPoint.index ] === clientId;\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isToolbarForced = useRef( false );\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\tconst showEmptyBlockSideInserter =\n\t\t! isTyping && ! isNavigationMode && isEmptyDefaultBlock;\n\tconst shouldShowBreadcrumb = isNavigationMode;\n\tconst shouldShowContextualToolbar =\n\t\t! isNavigationMode &&\n\t\t! hasFixedToolbar &&\n\t\tisLargeViewport &&\n\t\t! isMultiSelecting &&\n\t\t! showEmptyBlockSideInserter &&\n\t\t! isTyping;\n\tconst canFocusHiddenToolbar =\n\t\t! isNavigationMode &&\n\t\t! shouldShowContextualToolbar &&\n\t\t! hasFixedToolbar &&\n\t\t! isEmptyDefaultBlock;\n\n\tuseShortcut(\n\t\t'core/block-editor/focus-toolbar',\n\t\t() => {\n\t\t\tisToolbarForced.current = true;\n\t\t\tstopTyping( true );\n\t\t},\n\t\t{\n\t\t\tisDisabled: ! canFocusHiddenToolbar,\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\tisToolbarForced.current = false;\n\t} );\n\n\t// Stores the active toolbar item index so the block toolbar can return focus\n\t// to it when re-mounting.\n\tconst initialToolbarItemIndexRef = useRef();\n\n\tif ( ! shouldShowBreadcrumb && ! shouldShowContextualToolbar ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ capturingClientId || clientId }\n\t\t\tbottomClientId={ lastClientId }\n\t\t\tclassName={ classnames( 'block-editor-block-list__block-popover', {\n\t\t\t\t'is-insertion-point-visible': isInsertionPointVisible,\n\t\t\t} ) }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t>\n\t\t\t{ shouldShowContextualToolbar && (\n\t\t\t\t<BlockContextualToolbar\n\t\t\t\t\t// If the toolbar is being shown because of being forced\n\t\t\t\t\t// it should focus the toolbar right after the mount.\n\t\t\t\t\tfocusOnMount={ isToolbarForced.current }\n\t\t\t\t\t__experimentalInitialIndex={\n\t\t\t\t\t\tinitialToolbarItemIndexRef.current\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalOnIndexChange={ ( index ) => {\n\t\t\t\t\t\tinitialToolbarItemIndexRef.current = index;\n\t\t\t\t\t} }\n\t\t\t\t\t// Resets the index whenever the active block changes so\n\t\t\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ shouldShowBreadcrumb && (\n\t\t\t\t<BlockSelectionButton\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</BlockPopover>\n\t);\n}\n\nfunction wrapperSelector( select ) {\n\tconst {\n\t\tgetSelectedBlockClientId,\n\t\tgetFirstMultiSelectedBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlock,\n\t\tgetBlockParents,\n\t\t__experimentalGetBlockListSettingsForBlocks,\n\t} = select( blockEditorStore );\n\n\tconst clientId =\n\t\tgetSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();\n\n\tif ( ! clientId ) {\n\t\treturn;\n\t}\n\n\tconst { name, attributes = {} } = getBlock( clientId ) || {};\n\tconst blockParentsClientIds = getBlockParents( clientId );\n\n\t// Get Block List Settings for all ancestors of the current Block clientId.\n\tconst parentBlockListSettings = __experimentalGetBlockListSettingsForBlocks(\n\t\tblockParentsClientIds\n\t);\n\n\t// Get the clientId of the topmost parent with the capture toolbars setting.\n\tconst capturingClientId = find(\n\t\tblockParentsClientIds,\n\t\t( parentClientId ) =>\n\t\t\tparentBlockListSettings[ parentClientId ]\n\t\t\t\t?.__experimentalCaptureToolbars\n\t);\n\n\treturn {\n\t\tclientId,\n\t\trootClientId: getBlockRootClientId( clientId ),\n\t\tname,\n\t\tisEmptyDefaultBlock:\n\t\t\tname && isUnmodifiedDefaultBlock( { name, attributes } ),\n\t\tcapturingClientId,\n\t};\n}\n\nexport default function WrappedBlockPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst selected = useSelect( wrapperSelector, [] );\n\n\tif ( ! selected ) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tclientId,\n\t\trootClientId,\n\t\tname,\n\t\tisEmptyDefaultBlock,\n\t\tcapturingClientId,\n\t} = selected;\n\n\tif ( ! name ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SelectedBlockPopover\n\t\t\tclientId={ clientId }\n\t\t\trootClientId={ rootClientId }\n\t\t\tisEmptyDefaultBlock={ isEmptyDefaultBlock }\n\t\t\tcapturingClientId={ capturingClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t/>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/selected-block-popover.js"],"names":["selector","select","isNavigationMode","isMultiSelecting","hasMultiSelection","isTyping","getSettings","getLastMultiSelectedBlockClientId","blockEditorStore","hasFixedToolbar","lastClientId","SelectedBlockPopover","clientId","rootClientId","isEmptyDefaultBlock","capturingClientId","__unstablePopoverSlot","__unstableContentRef","isInsertionPointVisible","isBlockInsertionPointVisible","getBlockInsertionPoint","getBlockOrder","insertionPoint","order","index","isLargeViewport","isToolbarForced","stopTyping","showEmptyBlockSideInserter","shouldShowBreadcrumb","shouldShowContextualToolbar","canFocusHiddenToolbar","current","isDisabled","initialToolbarItemIndexRef","popoverProps","contentElement","wrapperSelector","getSelectedBlockClientId","getFirstMultiSelectedBlockClientId","getBlockRootClientId","getBlock","getBlockParents","__experimentalGetBlockListSettingsForBlocks","name","attributes","blockParentsClientIds","parentBlockListSettings","parentClientId","__experimentalCaptureToolbars","WrappedBlockPopover","selected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find } from 'lodash';\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useRef, useEffect } from '@wordpress/element';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockSelectionButton from './block-selection-button';\nimport BlockContextualToolbar from './block-contextual-toolbar';\nimport { store as blockEditorStore } from '../../store';\nimport BlockPopover from '../block-popover';\nimport useBlockToolbarPopoverProps from './use-block-toolbar-popover-props';\n\nfunction selector( select ) {\n\tconst {\n\t\tisNavigationMode,\n\t\tisMultiSelecting,\n\t\thasMultiSelection,\n\t\tisTyping,\n\t\tgetSettings,\n\t\tgetLastMultiSelectedBlockClientId,\n\t} = select( blockEditorStore );\n\treturn {\n\t\tisNavigationMode: isNavigationMode(),\n\t\tisMultiSelecting: isMultiSelecting(),\n\t\tisTyping: isTyping(),\n\t\thasFixedToolbar: getSettings().hasFixedToolbar,\n\t\tlastClientId: hasMultiSelection()\n\t\t\t? getLastMultiSelectedBlockClientId()\n\t\t\t: null,\n\t};\n}\n\nfunction SelectedBlockPopover( {\n\tclientId,\n\trootClientId,\n\tisEmptyDefaultBlock,\n\tcapturingClientId,\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst {\n\t\tisNavigationMode,\n\t\tisMultiSelecting,\n\t\tisTyping,\n\t\thasFixedToolbar,\n\t\tlastClientId,\n\t} = useSelect( selector, [] );\n\tconst isInsertionPointVisible = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\tif ( ! isBlockInsertionPointVisible() ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\t\t\treturn order[ insertionPoint.index ] === clientId;\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst isLargeViewport = useViewportMatch( 'medium' );\n\tconst isToolbarForced = useRef( false );\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\tconst showEmptyBlockSideInserter =\n\t\t! isTyping && ! isNavigationMode && isEmptyDefaultBlock;\n\tconst shouldShowBreadcrumb = isNavigationMode;\n\tconst shouldShowContextualToolbar =\n\t\t! isNavigationMode &&\n\t\t! hasFixedToolbar &&\n\t\tisLargeViewport &&\n\t\t! isMultiSelecting &&\n\t\t! showEmptyBlockSideInserter &&\n\t\t! isTyping;\n\tconst canFocusHiddenToolbar =\n\t\t! isNavigationMode &&\n\t\t! shouldShowContextualToolbar &&\n\t\t! hasFixedToolbar &&\n\t\t! isEmptyDefaultBlock;\n\n\tuseShortcut(\n\t\t'core/block-editor/focus-toolbar',\n\t\t() => {\n\t\t\tisToolbarForced.current = true;\n\t\t\tstopTyping( true );\n\t\t},\n\t\t{\n\t\t\tisDisabled: ! canFocusHiddenToolbar,\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\tisToolbarForced.current = false;\n\t} );\n\n\t// Stores the active toolbar item index so the block toolbar can return focus\n\t// to it when re-mounting.\n\tconst initialToolbarItemIndexRef = useRef();\n\n\tconst popoverProps = useBlockToolbarPopoverProps( {\n\t\tcontentElement: __unstableContentRef?.current,\n\t\tclientId,\n\t} );\n\n\tif ( ! shouldShowBreadcrumb && ! shouldShowContextualToolbar ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockPopover\n\t\t\tclientId={ capturingClientId || clientId }\n\t\t\tbottomClientId={ lastClientId }\n\t\t\tclassName={ classnames( 'block-editor-block-list__block-popover', {\n\t\t\t\t'is-insertion-point-visible': isInsertionPointVisible,\n\t\t\t} ) }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t\t{ ...popoverProps }\n\t\t>\n\t\t\t{ shouldShowContextualToolbar && (\n\t\t\t\t<BlockContextualToolbar\n\t\t\t\t\t// If the toolbar is being shown because of being forced\n\t\t\t\t\t// it should focus the toolbar right after the mount.\n\t\t\t\t\tfocusOnMount={ isToolbarForced.current }\n\t\t\t\t\t__experimentalInitialIndex={\n\t\t\t\t\t\tinitialToolbarItemIndexRef.current\n\t\t\t\t\t}\n\t\t\t\t\t__experimentalOnIndexChange={ ( index ) => {\n\t\t\t\t\t\tinitialToolbarItemIndexRef.current = index;\n\t\t\t\t\t} }\n\t\t\t\t\t// Resets the index whenever the active block changes so\n\t\t\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ shouldShowBreadcrumb && (\n\t\t\t\t<BlockSelectionButton\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</BlockPopover>\n\t);\n}\n\nfunction wrapperSelector( select ) {\n\tconst {\n\t\tgetSelectedBlockClientId,\n\t\tgetFirstMultiSelectedBlockClientId,\n\t\tgetBlockRootClientId,\n\t\tgetBlock,\n\t\tgetBlockParents,\n\t\t__experimentalGetBlockListSettingsForBlocks,\n\t} = select( blockEditorStore );\n\n\tconst clientId =\n\t\tgetSelectedBlockClientId() || getFirstMultiSelectedBlockClientId();\n\n\tif ( ! clientId ) {\n\t\treturn;\n\t}\n\n\tconst { name, attributes = {} } = getBlock( clientId ) || {};\n\tconst blockParentsClientIds = getBlockParents( clientId );\n\n\t// Get Block List Settings for all ancestors of the current Block clientId.\n\tconst parentBlockListSettings = __experimentalGetBlockListSettingsForBlocks(\n\t\tblockParentsClientIds\n\t);\n\n\t// Get the clientId of the topmost parent with the capture toolbars setting.\n\tconst capturingClientId = find(\n\t\tblockParentsClientIds,\n\t\t( parentClientId ) =>\n\t\t\tparentBlockListSettings[ parentClientId ]\n\t\t\t\t?.__experimentalCaptureToolbars\n\t);\n\n\treturn {\n\t\tclientId,\n\t\trootClientId: getBlockRootClientId( clientId ),\n\t\tname,\n\t\tisEmptyDefaultBlock:\n\t\t\tname && isUnmodifiedDefaultBlock( { name, attributes } ),\n\t\tcapturingClientId,\n\t};\n}\n\nexport default function WrappedBlockPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n} ) {\n\tconst selected = useSelect( wrapperSelector, [] );\n\n\tif ( ! selected ) {\n\t\treturn null;\n\t}\n\n\tconst {\n\t\tclientId,\n\t\trootClientId,\n\t\tname,\n\t\tisEmptyDefaultBlock,\n\t\tcapturingClientId,\n\t} = selected;\n\n\tif ( ! name ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SelectedBlockPopover\n\t\t\tclientId={ clientId }\n\t\t\trootClientId={ rootClientId }\n\t\t\tisEmptyDefaultBlock={ isEmptyDefaultBlock }\n\t\t\tcapturingClientId={ capturingClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useBlockToolbarPopoverProps;
|
|
7
|
+
|
|
8
|
+
var _compose = require("@wordpress/compose");
|
|
9
|
+
|
|
10
|
+
var _data = require("@wordpress/data");
|
|
11
|
+
|
|
12
|
+
var _element = require("@wordpress/element");
|
|
13
|
+
|
|
14
|
+
var _store = require("../../store");
|
|
15
|
+
|
|
16
|
+
var _useBlockRefs = require("../block-list/use-block-props/use-block-refs");
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* WordPress dependencies
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Internal dependencies
|
|
24
|
+
*/
|
|
25
|
+
// By default the toolbar sets the `shift` prop. If the user scrolls the page
|
|
26
|
+
// down the toolbar will stay on screen by adopting a sticky position at the
|
|
27
|
+
// top of the viewport.
|
|
28
|
+
const DEFAULT_PROPS = {
|
|
29
|
+
__unstableForcePosition: true,
|
|
30
|
+
__unstableShift: true
|
|
31
|
+
}; // When there isn't enough height between the top of the block and the editor
|
|
32
|
+
// canvas, the `shift` prop is set to `false`, as it will cause the block to be
|
|
33
|
+
// obscured. The `flip` behavior is enabled (by setting `forcePosition` to
|
|
34
|
+
// `false`), which positions the toolbar below the block.
|
|
35
|
+
|
|
36
|
+
const RESTRICTED_HEIGHT_PROPS = {
|
|
37
|
+
__unstableForcePosition: false,
|
|
38
|
+
__unstableShift: false
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Get the popover props for the block toolbar, determined by the space at the top of the canvas and the toolbar height.
|
|
42
|
+
*
|
|
43
|
+
* @param {Element} contentElement The DOM element that represents the editor content or canvas.
|
|
44
|
+
* @param {Element} selectedBlockElement The outer DOM element of the first selected block.
|
|
45
|
+
* @param {number} toolbarHeight The height of the toolbar in pixels.
|
|
46
|
+
*
|
|
47
|
+
* @return {Object} The popover props used to determine the position of the toolbar.
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
function getProps(contentElement, selectedBlockElement, toolbarHeight) {
|
|
51
|
+
if (!contentElement || !selectedBlockElement) {
|
|
52
|
+
return DEFAULT_PROPS;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const blockRect = selectedBlockElement.getBoundingClientRect();
|
|
56
|
+
const contentRect = contentElement.getBoundingClientRect();
|
|
57
|
+
|
|
58
|
+
if (blockRect.top - contentRect.top > toolbarHeight) {
|
|
59
|
+
return DEFAULT_PROPS;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return RESTRICTED_HEIGHT_PROPS;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Determines the desired popover positioning behavior, returning a set of appropriate props.
|
|
66
|
+
*
|
|
67
|
+
* @param {Object} elements
|
|
68
|
+
* @param {Element} elements.contentElement The DOM element that represents the editor content or canvas.
|
|
69
|
+
* @param {string} elements.clientId The clientId of the first selected block.
|
|
70
|
+
*
|
|
71
|
+
* @return {Object} The popover props used to determine the position of the toolbar.
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
function useBlockToolbarPopoverProps(_ref) {
|
|
76
|
+
let {
|
|
77
|
+
contentElement,
|
|
78
|
+
clientId
|
|
79
|
+
} = _ref;
|
|
80
|
+
const selectedBlockElement = (0, _useBlockRefs.__unstableUseBlockElement)(clientId);
|
|
81
|
+
const [toolbarHeight, setToolbarHeight] = (0, _element.useState)(0);
|
|
82
|
+
const [props, setProps] = (0, _element.useState)(() => getProps(contentElement, selectedBlockElement, toolbarHeight));
|
|
83
|
+
const blockIndex = (0, _data.useSelect)(select => select(_store.store).getBlockIndex(clientId), [clientId]);
|
|
84
|
+
const popoverRef = (0, _compose.useRefEffect)(popoverNode => {
|
|
85
|
+
setToolbarHeight(popoverNode.offsetHeight);
|
|
86
|
+
}, []);
|
|
87
|
+
const updateProps = (0, _element.useCallback)(() => setProps(getProps(contentElement, selectedBlockElement, toolbarHeight)), [contentElement, selectedBlockElement, toolbarHeight]); // Update props when the block is moved. This also ensures the props are
|
|
88
|
+
// correct on initial mount, and when the selected block or content element
|
|
89
|
+
// changes (since the callback ref will update).
|
|
90
|
+
|
|
91
|
+
(0, _element.useLayoutEffect)(updateProps, [blockIndex, updateProps]); // Update props when the viewport is resized or the block is resized.
|
|
92
|
+
|
|
93
|
+
(0, _element.useLayoutEffect)(() => {
|
|
94
|
+
var _contentElement$owner, _contentView$addEvent, _selectedBlockElement;
|
|
95
|
+
|
|
96
|
+
if (!contentElement || !selectedBlockElement) {
|
|
97
|
+
return;
|
|
98
|
+
} // Update the toolbar props on viewport resize.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
const contentView = contentElement === null || contentElement === void 0 ? void 0 : (_contentElement$owner = contentElement.ownerDocument) === null || _contentElement$owner === void 0 ? void 0 : _contentElement$owner.defaultView;
|
|
102
|
+
contentView === null || contentView === void 0 ? void 0 : (_contentView$addEvent = contentView.addEventHandler) === null || _contentView$addEvent === void 0 ? void 0 : _contentView$addEvent.call(contentView, 'resize', updateProps); // Update the toolbar props on block resize.
|
|
103
|
+
|
|
104
|
+
let resizeObserver;
|
|
105
|
+
const blockView = selectedBlockElement === null || selectedBlockElement === void 0 ? void 0 : (_selectedBlockElement = selectedBlockElement.ownerDocument) === null || _selectedBlockElement === void 0 ? void 0 : _selectedBlockElement.defaultView;
|
|
106
|
+
|
|
107
|
+
if (blockView.ResizeObserver) {
|
|
108
|
+
resizeObserver = new blockView.ResizeObserver(updateProps);
|
|
109
|
+
resizeObserver.observe(selectedBlockElement);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return () => {
|
|
113
|
+
var _contentView$removeEv;
|
|
114
|
+
|
|
115
|
+
contentView === null || contentView === void 0 ? void 0 : (_contentView$removeEv = contentView.removeEventHandler) === null || _contentView$removeEv === void 0 ? void 0 : _contentView$removeEv.call(contentView, 'resize', updateProps);
|
|
116
|
+
|
|
117
|
+
if (resizeObserver) {
|
|
118
|
+
resizeObserver.disconnect();
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}, [updateProps, contentElement, selectedBlockElement]);
|
|
122
|
+
return { ...props,
|
|
123
|
+
ref: popoverRef
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=use-block-toolbar-popover-props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-tools/use-block-toolbar-popover-props.js"],"names":["DEFAULT_PROPS","__unstableForcePosition","__unstableShift","RESTRICTED_HEIGHT_PROPS","getProps","contentElement","selectedBlockElement","toolbarHeight","blockRect","getBoundingClientRect","contentRect","top","useBlockToolbarPopoverProps","clientId","setToolbarHeight","props","setProps","blockIndex","select","blockEditorStore","getBlockIndex","popoverRef","popoverNode","offsetHeight","updateProps","contentView","ownerDocument","defaultView","addEventHandler","resizeObserver","blockView","ResizeObserver","observe","removeEventHandler","disconnect","ref"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\nimport { useCallback, useLayoutEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { __unstableUseBlockElement as useBlockElement } from '../block-list/use-block-props/use-block-refs';\n\n// By default the toolbar sets the `shift` prop. If the user scrolls the page\n// down the toolbar will stay on screen by adopting a sticky position at the\n// top of the viewport.\nconst DEFAULT_PROPS = { __unstableForcePosition: true, __unstableShift: true };\n\n// When there isn't enough height between the top of the block and the editor\n// canvas, the `shift` prop is set to `false`, as it will cause the block to be\n// obscured. The `flip` behavior is enabled (by setting `forcePosition` to\n// `false`), which positions the toolbar below the block.\nconst RESTRICTED_HEIGHT_PROPS = {\n\t__unstableForcePosition: false,\n\t__unstableShift: false,\n};\n\n/**\n * Get the popover props for the block toolbar, determined by the space at the top of the canvas and the toolbar height.\n *\n * @param {Element} contentElement The DOM element that represents the editor content or canvas.\n * @param {Element} selectedBlockElement The outer DOM element of the first selected block.\n * @param {number} toolbarHeight The height of the toolbar in pixels.\n *\n * @return {Object} The popover props used to determine the position of the toolbar.\n */\nfunction getProps( contentElement, selectedBlockElement, toolbarHeight ) {\n\tif ( ! contentElement || ! selectedBlockElement ) {\n\t\treturn DEFAULT_PROPS;\n\t}\n\n\tconst blockRect = selectedBlockElement.getBoundingClientRect();\n\tconst contentRect = contentElement.getBoundingClientRect();\n\n\tif ( blockRect.top - contentRect.top > toolbarHeight ) {\n\t\treturn DEFAULT_PROPS;\n\t}\n\n\treturn RESTRICTED_HEIGHT_PROPS;\n}\n\n/**\n * Determines the desired popover positioning behavior, returning a set of appropriate props.\n *\n * @param {Object} elements\n * @param {Element} elements.contentElement The DOM element that represents the editor content or canvas.\n * @param {string} elements.clientId The clientId of the first selected block.\n *\n * @return {Object} The popover props used to determine the position of the toolbar.\n */\nexport default function useBlockToolbarPopoverProps( {\n\tcontentElement,\n\tclientId,\n} ) {\n\tconst selectedBlockElement = useBlockElement( clientId );\n\tconst [ toolbarHeight, setToolbarHeight ] = useState( 0 );\n\tconst [ props, setProps ] = useState( () =>\n\t\tgetProps( contentElement, selectedBlockElement, toolbarHeight )\n\t);\n\tconst blockIndex = useSelect(\n\t\t( select ) => select( blockEditorStore ).getBlockIndex( clientId ),\n\t\t[ clientId ]\n\t);\n\n\tconst popoverRef = useRefEffect( ( popoverNode ) => {\n\t\tsetToolbarHeight( popoverNode.offsetHeight );\n\t}, [] );\n\n\tconst updateProps = useCallback(\n\t\t() =>\n\t\t\tsetProps(\n\t\t\t\tgetProps( contentElement, selectedBlockElement, toolbarHeight )\n\t\t\t),\n\t\t[ contentElement, selectedBlockElement, toolbarHeight ]\n\t);\n\n\t// Update props when the block is moved. This also ensures the props are\n\t// correct on initial mount, and when the selected block or content element\n\t// changes (since the callback ref will update).\n\tuseLayoutEffect( updateProps, [ blockIndex, updateProps ] );\n\n\t// Update props when the viewport is resized or the block is resized.\n\tuseLayoutEffect( () => {\n\t\tif ( ! contentElement || ! selectedBlockElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Update the toolbar props on viewport resize.\n\t\tconst contentView = contentElement?.ownerDocument?.defaultView;\n\t\tcontentView?.addEventHandler?.( 'resize', updateProps );\n\n\t\t// Update the toolbar props on block resize.\n\t\tlet resizeObserver;\n\t\tconst blockView = selectedBlockElement?.ownerDocument?.defaultView;\n\t\tif ( blockView.ResizeObserver ) {\n\t\t\tresizeObserver = new blockView.ResizeObserver( updateProps );\n\t\t\tresizeObserver.observe( selectedBlockElement );\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontentView?.removeEventHandler?.( 'resize', updateProps );\n\n\t\t\tif ( resizeObserver ) {\n\t\t\t\tresizeObserver.disconnect();\n\t\t\t}\n\t\t};\n\t}, [ updateProps, contentElement, selectedBlockElement ] );\n\n\treturn {\n\t\t...props,\n\t\tref: popoverRef,\n\t};\n}\n"]}
|
|
@@ -27,19 +27,47 @@ var _utils = require("./utils");
|
|
|
27
27
|
function AllInputControl(_ref) {
|
|
28
28
|
let {
|
|
29
29
|
onChange,
|
|
30
|
+
selectedUnits,
|
|
31
|
+
setSelectedUnits,
|
|
30
32
|
values,
|
|
31
33
|
...props
|
|
32
34
|
} = _ref;
|
|
33
|
-
|
|
35
|
+
let allValue = (0, _utils.getAllValue)(values);
|
|
36
|
+
|
|
37
|
+
if (allValue === undefined) {
|
|
38
|
+
// If we don't have any value set the unit to any current selection
|
|
39
|
+
// or the most common unit from the individual radii values.
|
|
40
|
+
allValue = (0, _utils.getAllUnit)(selectedUnits);
|
|
41
|
+
}
|
|
42
|
+
|
|
34
43
|
const hasValues = (0, _utils.hasDefinedValues)(values);
|
|
35
44
|
const isMixed = hasValues && (0, _utils.hasMixedValues)(values);
|
|
36
|
-
const allPlaceholder = isMixed ? (0, _i18n.__)('Mixed') : null;
|
|
45
|
+
const allPlaceholder = isMixed ? (0, _i18n.__)('Mixed') : null; // Filter out CSS-unit-only values to prevent invalid styles.
|
|
46
|
+
|
|
47
|
+
const handleOnChange = next => {
|
|
48
|
+
const isNumeric = !isNaN(parseFloat(next));
|
|
49
|
+
const nextValue = isNumeric ? next : undefined;
|
|
50
|
+
onChange(nextValue);
|
|
51
|
+
}; // Store current unit selection for use as fallback for individual
|
|
52
|
+
// radii controls.
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
const handleOnUnitChange = unit => {
|
|
56
|
+
setSelectedUnits({
|
|
57
|
+
topLeft: unit,
|
|
58
|
+
topRight: unit,
|
|
59
|
+
bottomLeft: unit,
|
|
60
|
+
bottomRight: unit
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
|
|
37
64
|
return (0, _element.createElement)(_components.__experimentalUnitControl, (0, _extends2.default)({}, props, {
|
|
38
65
|
"aria-label": (0, _i18n.__)('Border radius'),
|
|
39
66
|
disableUnits: isMixed,
|
|
40
67
|
isOnly: true,
|
|
41
68
|
value: allValue,
|
|
42
|
-
onChange:
|
|
69
|
+
onChange: handleOnChange,
|
|
70
|
+
onUnitChange: handleOnUnitChange,
|
|
43
71
|
placeholder: allPlaceholder
|
|
44
72
|
}));
|
|
45
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/border-radius-control/all-input-control.js"],"names":["AllInputControl","onChange","values","props","allValue","hasValues","isMixed","allPlaceholder"],"mappings":";;;;;;;;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/border-radius-control/all-input-control.js"],"names":["AllInputControl","onChange","selectedUnits","setSelectedUnits","values","props","allValue","undefined","hasValues","isMixed","allPlaceholder","handleOnChange","next","isNumeric","isNaN","parseFloat","nextValue","handleOnUnitChange","unit","topLeft","topRight","bottomLeft","bottomRight"],"mappings":";;;;;;;;;;;;;AAGA;;AACA;;AAKA;;AATA;AACA;AACA;;AAIA;AACA;AACA;AAQe,SAASA,eAAT,OAMX;AAAA,MANqC;AACxCC,IAAAA,QADwC;AAExCC,IAAAA,aAFwC;AAGxCC,IAAAA,gBAHwC;AAIxCC,IAAAA,MAJwC;AAKxC,OAAGC;AALqC,GAMrC;AACH,MAAIC,QAAQ,GAAG,wBAAaF,MAAb,CAAf;;AAEA,MAAKE,QAAQ,KAAKC,SAAlB,EAA8B;AAC7B;AACA;AACAD,IAAAA,QAAQ,GAAG,uBAAYJ,aAAZ,CAAX;AACA;;AAED,QAAMM,SAAS,GAAG,6BAAkBJ,MAAlB,CAAlB;AACA,QAAMK,OAAO,GAAGD,SAAS,IAAI,2BAAgBJ,MAAhB,CAA7B;AACA,QAAMM,cAAc,GAAGD,OAAO,GAAG,cAAI,OAAJ,CAAH,GAAmB,IAAjD,CAXG,CAaH;;AACA,QAAME,cAAc,GAAKC,IAAF,IAAY;AAClC,UAAMC,SAAS,GAAG,CAAEC,KAAK,CAAEC,UAAU,CAAEH,IAAF,CAAZ,CAAzB;AACA,UAAMI,SAAS,GAAGH,SAAS,GAAGD,IAAH,GAAUL,SAArC;AACAN,IAAAA,QAAQ,CAAEe,SAAF,CAAR;AACA,GAJD,CAdG,CAoBH;AACA;;;AACA,QAAMC,kBAAkB,GAAKC,IAAF,IAAY;AACtCf,IAAAA,gBAAgB,CAAE;AACjBgB,MAAAA,OAAO,EAAED,IADQ;AAEjBE,MAAAA,QAAQ,EAAEF,IAFO;AAGjBG,MAAAA,UAAU,EAAEH,IAHK;AAIjBI,MAAAA,WAAW,EAAEJ;AAJI,KAAF,CAAhB;AAMA,GAPD;;AASA,SACC,4BAAC,qCAAD,6BACMb,KADN;AAEC,kBAAa,cAAI,eAAJ,CAFd;AAGC,IAAA,YAAY,EAAGI,OAHhB;AAIC,IAAA,MAAM,MAJP;AAKC,IAAA,KAAK,EAAGH,QALT;AAMC,IAAA,QAAQ,EAAGK,cANZ;AAOC,IAAA,YAAY,EAAGM,kBAPhB;AAQC,IAAA,WAAW,EAAGP;AARf,KADD;AAYA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __experimentalUnitControl as UnitControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetAllValue,\n\tgetAllUnit,\n\thasMixedValues,\n\thasDefinedValues,\n} from './utils';\n\nexport default function AllInputControl( {\n\tonChange,\n\tselectedUnits,\n\tsetSelectedUnits,\n\tvalues,\n\t...props\n} ) {\n\tlet allValue = getAllValue( values );\n\n\tif ( allValue === undefined ) {\n\t\t// If we don't have any value set the unit to any current selection\n\t\t// or the most common unit from the individual radii values.\n\t\tallValue = getAllUnit( selectedUnits );\n\t}\n\n\tconst hasValues = hasDefinedValues( values );\n\tconst isMixed = hasValues && hasMixedValues( values );\n\tconst allPlaceholder = isMixed ? __( 'Mixed' ) : null;\n\n\t// Filter out CSS-unit-only values to prevent invalid styles.\n\tconst handleOnChange = ( next ) => {\n\t\tconst isNumeric = ! isNaN( parseFloat( next ) );\n\t\tconst nextValue = isNumeric ? next : undefined;\n\t\tonChange( nextValue );\n\t};\n\n\t// Store current unit selection for use as fallback for individual\n\t// radii controls.\n\tconst handleOnUnitChange = ( unit ) => {\n\t\tsetSelectedUnits( {\n\t\t\ttopLeft: unit,\n\t\t\ttopRight: unit,\n\t\t\tbottomLeft: unit,\n\t\t\tbottomRight: unit,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<UnitControl\n\t\t\t{ ...props }\n\t\t\taria-label={ __( 'Border radius' ) }\n\t\t\tdisableUnits={ isMixed }\n\t\t\tisOnly\n\t\t\tvalue={ allValue }\n\t\t\tonChange={ handleOnChange }\n\t\t\tonUnitChange={ handleOnUnitChange }\n\t\t\tplaceholder={ allPlaceholder }\n\t\t/>\n\t);\n}\n"]}
|
|
@@ -31,10 +31,10 @@ var _utils = require("./utils");
|
|
|
31
31
|
* Internal dependencies
|
|
32
32
|
*/
|
|
33
33
|
const DEFAULT_VALUES = {
|
|
34
|
-
topLeft:
|
|
35
|
-
topRight:
|
|
36
|
-
bottomLeft:
|
|
37
|
-
bottomRight:
|
|
34
|
+
topLeft: undefined,
|
|
35
|
+
topRight: undefined,
|
|
36
|
+
bottomLeft: undefined,
|
|
37
|
+
bottomRight: undefined
|
|
38
38
|
};
|
|
39
39
|
const MIN_BORDER_RADIUS_VALUE = 0;
|
|
40
40
|
const MAX_BORDER_RADIUS_VALUES = {
|
|
@@ -57,11 +57,21 @@ function BorderRadiusControl(_ref) {
|
|
|
57
57
|
onChange,
|
|
58
58
|
values
|
|
59
59
|
} = _ref;
|
|
60
|
-
const [isLinked, setIsLinked] = (0, _element.useState)(!(0, _utils.hasDefinedValues)(values) || !(0, _utils.hasMixedValues)(values));
|
|
60
|
+
const [isLinked, setIsLinked] = (0, _element.useState)(!(0, _utils.hasDefinedValues)(values) || !(0, _utils.hasMixedValues)(values)); // Tracking selected units via internal state allows filtering of CSS unit
|
|
61
|
+
// only values from being saved while maintaining preexisting unit selection
|
|
62
|
+
// behaviour. Filtering CSS unit only values prevents invalid style values.
|
|
63
|
+
|
|
64
|
+
const [selectedUnits, setSelectedUnits] = (0, _element.useState)({
|
|
65
|
+
flat: typeof values === 'string' ? (0, _components.__experimentalParseQuantityAndUnitFromRawValue)(values)[1] : undefined,
|
|
66
|
+
topLeft: (0, _components.__experimentalParseQuantityAndUnitFromRawValue)(values === null || values === void 0 ? void 0 : values.topLeft)[1],
|
|
67
|
+
topRight: (0, _components.__experimentalParseQuantityAndUnitFromRawValue)(values === null || values === void 0 ? void 0 : values.topRight)[1],
|
|
68
|
+
bottomLeft: (0, _components.__experimentalParseQuantityAndUnitFromRawValue)(values === null || values === void 0 ? void 0 : values.bottomLeft)[1],
|
|
69
|
+
bottomRight: (0, _components.__experimentalParseQuantityAndUnitFromRawValue)(values === null || values === void 0 ? void 0 : values.bottomRight)[1]
|
|
70
|
+
});
|
|
61
71
|
const units = (0, _components.__experimentalUseCustomUnits)({
|
|
62
72
|
availableUnits: (0, _useSetting.default)('spacing.units') || ['px', 'em', 'rem']
|
|
63
73
|
});
|
|
64
|
-
const unit = (0, _utils.getAllUnit)(
|
|
74
|
+
const unit = (0, _utils.getAllUnit)(selectedUnits);
|
|
65
75
|
const unitConfig = units && units.find(item => item.value === unit);
|
|
66
76
|
const step = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.step) || 1;
|
|
67
77
|
const [allValue] = (0, _components.__experimentalParseQuantityAndUnitFromRawValue)((0, _utils.getAllValue)(values));
|
|
@@ -83,6 +93,8 @@ function BorderRadiusControl(_ref) {
|
|
|
83
93
|
values: values,
|
|
84
94
|
min: MIN_BORDER_RADIUS_VALUE,
|
|
85
95
|
onChange: onChange,
|
|
96
|
+
selectedUnits: selectedUnits,
|
|
97
|
+
setSelectedUnits: setSelectedUnits,
|
|
86
98
|
units: units
|
|
87
99
|
}), (0, _element.createElement)(_components.RangeControl, {
|
|
88
100
|
label: (0, _i18n.__)('Border radius'),
|
|
@@ -98,6 +110,8 @@ function BorderRadiusControl(_ref) {
|
|
|
98
110
|
})) : (0, _element.createElement)(_inputControls.default, {
|
|
99
111
|
min: MIN_BORDER_RADIUS_VALUE,
|
|
100
112
|
onChange: onChange,
|
|
113
|
+
selectedUnits: selectedUnits,
|
|
114
|
+
setSelectedUnits: setSelectedUnits,
|
|
101
115
|
values: values || DEFAULT_VALUES,
|
|
102
116
|
units: units
|
|
103
117
|
}), (0, _element.createElement)(_linkedButton.default, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/border-radius-control/index.js"],"names":["DEFAULT_VALUES","topLeft","topRight","bottomLeft","bottomRight","MIN_BORDER_RADIUS_VALUE","MAX_BORDER_RADIUS_VALUES","px","em","rem","BorderRadiusControl","onChange","values","isLinked","setIsLinked","units","availableUnits","unit","unitConfig","find","item","value","step","allValue","toggleLinked","handleSliderChange","next"
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/border-radius-control/index.js"],"names":["DEFAULT_VALUES","topLeft","undefined","topRight","bottomLeft","bottomRight","MIN_BORDER_RADIUS_VALUE","MAX_BORDER_RADIUS_VALUES","px","em","rem","BorderRadiusControl","onChange","values","isLinked","setIsLinked","selectedUnits","setSelectedUnits","flat","units","availableUnits","unit","unitConfig","find","item","value","step","allValue","toggleLinked","handleSliderChange","next"],"mappings":";;;;;;;;;AASA;;AANA;;AAOA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AAnBA;AACA;AACA;;AAUA;AACA;AACA;AAYA,MAAMA,cAAc,GAAG;AACtBC,EAAAA,OAAO,EAAEC,SADa;AAEtBC,EAAAA,QAAQ,EAAED,SAFY;AAGtBE,EAAAA,UAAU,EAAEF,SAHU;AAItBG,EAAAA,WAAW,EAAEH;AAJS,CAAvB;AAMA,MAAMI,uBAAuB,GAAG,CAAhC;AACA,MAAMC,wBAAwB,GAAG;AAChCC,EAAAA,EAAE,EAAE,GAD4B;AAEhCC,EAAAA,EAAE,EAAE,EAF4B;AAGhCC,EAAAA,GAAG,EAAE;AAH2B,CAAjC;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,mBAAT,OAAqD;AAAA,MAAvB;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAAuB;AACnE,QAAM,CAAEC,QAAF,EAAYC,WAAZ,IAA4B,uBACjC,CAAE,6BAAkBF,MAAlB,CAAF,IAAgC,CAAE,2BAAgBA,MAAhB,CADD,CAAlC,CADmE,CAKnE;AACA;AACA;;AACA,QAAM,CAAEG,aAAF,EAAiBC,gBAAjB,IAAsC,uBAAU;AACrDC,IAAAA,IAAI,EACH,OAAOL,MAAP,KAAkB,QAAlB,GACG,gEAAkCA,MAAlC,EAA4C,CAA5C,CADH,GAEGX,SAJiD;AAKrDD,IAAAA,OAAO,EAAE,gEAAkCY,MAAlC,aAAkCA,MAAlC,uBAAkCA,MAAM,CAAEZ,OAA1C,EAAqD,CAArD,CAL4C;AAMrDE,IAAAA,QAAQ,EAAE,gEAAkCU,MAAlC,aAAkCA,MAAlC,uBAAkCA,MAAM,CAAEV,QAA1C,EAAsD,CAAtD,CAN2C;AAOrDC,IAAAA,UAAU,EAAE,gEAAkCS,MAAlC,aAAkCA,MAAlC,uBAAkCA,MAAM,CAAET,UAA1C,EAAwD,CAAxD,CAPyC;AAQrDC,IAAAA,WAAW,EAAE,gEACZQ,MADY,aACZA,MADY,uBACZA,MAAM,CAAER,WADI,EAEV,CAFU;AARwC,GAAV,CAA5C;AAaA,QAAMc,KAAK,GAAG,8CAAgB;AAC7BC,IAAAA,cAAc,EAAE,yBAAY,eAAZ,KAAiC,CAAE,IAAF,EAAQ,IAAR,EAAc,KAAd;AADpB,GAAhB,CAAd;AAIA,QAAMC,IAAI,GAAG,uBAAYL,aAAZ,CAAb;AACA,QAAMM,UAAU,GAAGH,KAAK,IAAIA,KAAK,CAACI,IAAN,CAAcC,IAAF,IAAYA,IAAI,CAACC,KAAL,KAAeJ,IAAvC,CAA5B;AACA,QAAMK,IAAI,GAAG,CAAAJ,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEI,IAAZ,KAAoB,CAAjC;AAEA,QAAM,CAAEC,QAAF,IAAe,gEACpB,wBAAad,MAAb,CADoB,CAArB;;AAIA,QAAMe,YAAY,GAAG,MAAMb,WAAW,CAAE,CAAED,QAAJ,CAAtC;;AAEA,QAAMe,kBAAkB,GAAKC,IAAF,IAAY;AACtClB,IAAAA,QAAQ,CAAEkB,IAAI,KAAK5B,SAAT,GAAsB,GAAG4B,IAAM,GAAGT,IAAM,EAAxC,GAA4CnB,SAA9C,CAAR;AACA,GAFD;;AAIA,SACC;AAAU,IAAA,SAAS,EAAC;AAApB,KACC,4BAAC,uBAAD,CAAa,WAAb;AAAyB,IAAA,EAAE,EAAC;AAA5B,KACG,cAAI,QAAJ,CADH,CADD,EAIC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGY,QAAQ,GACT,qDACC,4BAAC,wBAAD;AACC,IAAA,SAAS,EAAC,gDADX;AAEC,IAAA,MAAM,EAAGD,MAFV;AAGC,IAAA,GAAG,EAAGP,uBAHP;AAIC,IAAA,QAAQ,EAAGM,QAJZ;AAKC,IAAA,aAAa,EAAGI,aALjB;AAMC,IAAA,gBAAgB,EAAGC,gBANpB;AAOC,IAAA,KAAK,EAAGE;AAPT,IADD,EAUC,4BAAC,wBAAD;AACC,IAAA,KAAK,EAAG,cAAI,eAAJ,CADT;AAEC,IAAA,mBAAmB,MAFpB;AAGC,IAAA,SAAS,EAAC,iDAHX;AAIC,IAAA,KAAK,EAAGQ,QAAH,aAAGA,QAAH,cAAGA,QAAH,GAAe,EAJrB;AAKC,IAAA,GAAG,EAAGrB,uBALP;AAMC,IAAA,GAAG,EAAGC,wBAAwB,CAAEc,IAAF,CAN/B;AAOC,IAAA,eAAe,EAAG,CAPnB;AAQC,IAAA,cAAc,EAAG,KARlB;AASC,IAAA,QAAQ,EAAGQ,kBATZ;AAUC,IAAA,IAAI,EAAGH;AAVR,IAVD,CADS,GAyBT,4BAAC,sBAAD;AACC,IAAA,GAAG,EAAGpB,uBADP;AAEC,IAAA,QAAQ,EAAGM,QAFZ;AAGC,IAAA,aAAa,EAAGI,aAHjB;AAIC,IAAA,gBAAgB,EAAGC,gBAJpB;AAKC,IAAA,MAAM,EAAGJ,MAAM,IAAIb,cALpB;AAMC,IAAA,KAAK,EAAGmB;AANT,IA1BF,EAmCC,4BAAC,qBAAD;AAAc,IAAA,OAAO,EAAGS,YAAxB;AAAuC,IAAA,QAAQ,EAAGd;AAAlD,IAnCD,CAJD,CADD;AA4CA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tBaseControl,\n\tRangeControl,\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUseCustomUnits as useCustomUnits,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport AllInputControl from './all-input-control';\nimport InputControls from './input-controls';\nimport LinkedButton from './linked-button';\nimport useSetting from '../use-setting';\nimport {\n\tgetAllValue,\n\tgetAllUnit,\n\thasDefinedValues,\n\thasMixedValues,\n} from './utils';\n\nconst DEFAULT_VALUES = {\n\ttopLeft: undefined,\n\ttopRight: undefined,\n\tbottomLeft: undefined,\n\tbottomRight: undefined,\n};\nconst MIN_BORDER_RADIUS_VALUE = 0;\nconst MAX_BORDER_RADIUS_VALUES = {\n\tpx: 100,\n\tem: 20,\n\trem: 20,\n};\n\n/**\n * Control to display border radius options.\n *\n * @param {Object} props Component props.\n * @param {Function} props.onChange Callback to handle onChange.\n * @param {Object} props.values Border radius values.\n *\n * @return {WPElement} Custom border radius control.\n */\nexport default function BorderRadiusControl( { onChange, values } ) {\n\tconst [ isLinked, setIsLinked ] = useState(\n\t\t! hasDefinedValues( values ) || ! hasMixedValues( values )\n\t);\n\n\t// Tracking selected units via internal state allows filtering of CSS unit\n\t// only values from being saved while maintaining preexisting unit selection\n\t// behaviour. Filtering CSS unit only values prevents invalid style values.\n\tconst [ selectedUnits, setSelectedUnits ] = useState( {\n\t\tflat:\n\t\t\ttypeof values === 'string'\n\t\t\t\t? parseQuantityAndUnitFromRawValue( values )[ 1 ]\n\t\t\t\t: undefined,\n\t\ttopLeft: parseQuantityAndUnitFromRawValue( values?.topLeft )[ 1 ],\n\t\ttopRight: parseQuantityAndUnitFromRawValue( values?.topRight )[ 1 ],\n\t\tbottomLeft: parseQuantityAndUnitFromRawValue( values?.bottomLeft )[ 1 ],\n\t\tbottomRight: parseQuantityAndUnitFromRawValue(\n\t\t\tvalues?.bottomRight\n\t\t)[ 1 ],\n\t} );\n\n\tconst units = useCustomUnits( {\n\t\tavailableUnits: useSetting( 'spacing.units' ) || [ 'px', 'em', 'rem' ],\n\t} );\n\n\tconst unit = getAllUnit( selectedUnits );\n\tconst unitConfig = units && units.find( ( item ) => item.value === unit );\n\tconst step = unitConfig?.step || 1;\n\n\tconst [ allValue ] = parseQuantityAndUnitFromRawValue(\n\t\tgetAllValue( values )\n\t);\n\n\tconst toggleLinked = () => setIsLinked( ! isLinked );\n\n\tconst handleSliderChange = ( next ) => {\n\t\tonChange( next !== undefined ? `${ next }${ unit }` : undefined );\n\t};\n\n\treturn (\n\t\t<fieldset className=\"components-border-radius-control\">\n\t\t\t<BaseControl.VisualLabel as=\"legend\">\n\t\t\t\t{ __( 'Radius' ) }\n\t\t\t</BaseControl.VisualLabel>\n\t\t\t<div className=\"components-border-radius-control__wrapper\">\n\t\t\t\t{ isLinked ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<AllInputControl\n\t\t\t\t\t\t\tclassName=\"components-border-radius-control__unit-control\"\n\t\t\t\t\t\t\tvalues={ values }\n\t\t\t\t\t\t\tmin={ MIN_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tselectedUnits={ selectedUnits }\n\t\t\t\t\t\t\tsetSelectedUnits={ setSelectedUnits }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\tlabel={ __( 'Border radius' ) }\n\t\t\t\t\t\t\thideLabelFromVision\n\t\t\t\t\t\t\tclassName=\"components-border-radius-control__range-control\"\n\t\t\t\t\t\t\tvalue={ allValue ?? '' }\n\t\t\t\t\t\t\tmin={ MIN_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\t\tmax={ MAX_BORDER_RADIUS_VALUES[ unit ] }\n\t\t\t\t\t\t\tinitialPosition={ 0 }\n\t\t\t\t\t\t\twithInputField={ false }\n\t\t\t\t\t\t\tonChange={ handleSliderChange }\n\t\t\t\t\t\t\tstep={ step }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<InputControls\n\t\t\t\t\t\tmin={ MIN_BORDER_RADIUS_VALUE }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\tselectedUnits={ selectedUnits }\n\t\t\t\t\t\tsetSelectedUnits={ setSelectedUnits }\n\t\t\t\t\t\tvalues={ values || DEFAULT_VALUES }\n\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<LinkedButton onClick={ toggleLinked } isLinked={ isLinked } />\n\t\t\t</div>\n\t\t</fieldset>\n\t);\n}\n"]}
|
|
@@ -28,6 +28,8 @@ const CORNERS = {
|
|
|
28
28
|
function BoxInputControls(_ref) {
|
|
29
29
|
let {
|
|
30
30
|
onChange,
|
|
31
|
+
selectedUnits,
|
|
32
|
+
setSelectedUnits,
|
|
31
33
|
values: valuesProp,
|
|
32
34
|
...props
|
|
33
35
|
} = _ref;
|
|
@@ -35,11 +37,21 @@ function BoxInputControls(_ref) {
|
|
|
35
37
|
const createHandleOnChange = corner => next => {
|
|
36
38
|
if (!onChange) {
|
|
37
39
|
return;
|
|
38
|
-
}
|
|
40
|
+
} // Filter out CSS-unit-only values to prevent invalid styles.
|
|
39
41
|
|
|
42
|
+
|
|
43
|
+
const isNumeric = !isNaN(parseFloat(next));
|
|
44
|
+
const nextValue = isNumeric ? next : undefined;
|
|
40
45
|
onChange({ ...values,
|
|
41
|
-
[corner]:
|
|
46
|
+
[corner]: nextValue
|
|
42
47
|
});
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const createHandleOnUnitChange = side => next => {
|
|
51
|
+
const newUnits = { ...selectedUnits
|
|
52
|
+
};
|
|
53
|
+
newUnits[side] = next;
|
|
54
|
+
setSelectedUnits(newUnits);
|
|
43
55
|
}; // For shorthand style & backwards compatibility, handle flat string value.
|
|
44
56
|
|
|
45
57
|
|
|
@@ -55,17 +67,20 @@ function BoxInputControls(_ref) {
|
|
|
55
67
|
return (0, _element.createElement)("div", {
|
|
56
68
|
className: "components-border-radius-control__input-controls-wrapper"
|
|
57
69
|
}, Object.entries(CORNERS).map(_ref2 => {
|
|
58
|
-
let [
|
|
70
|
+
let [corner, label] = _ref2;
|
|
71
|
+
const [parsedQuantity, parsedUnit] = (0, _components.__experimentalParseQuantityAndUnitFromRawValue)(values[corner]);
|
|
72
|
+
const computedUnit = values[corner] ? parsedUnit : selectedUnits[corner] || selectedUnits.flat;
|
|
59
73
|
return (0, _element.createElement)(_components.Tooltip, {
|
|
60
74
|
text: label,
|
|
61
75
|
position: "top",
|
|
62
|
-
key:
|
|
76
|
+
key: corner
|
|
63
77
|
}, (0, _element.createElement)("div", {
|
|
64
78
|
className: "components-border-radius-control__tooltip-wrapper"
|
|
65
79
|
}, (0, _element.createElement)(_components.__experimentalUnitControl, (0, _extends2.default)({}, props, {
|
|
66
80
|
"aria-label": label,
|
|
67
|
-
value:
|
|
68
|
-
onChange: createHandleOnChange(
|
|
81
|
+
value: [parsedQuantity, computedUnit].join(''),
|
|
82
|
+
onChange: createHandleOnChange(corner),
|
|
83
|
+
onUnitChange: createHandleOnUnitChange(corner)
|
|
69
84
|
}))));
|
|
70
85
|
}));
|
|
71
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/border-radius-control/input-controls.js"],"names":["CORNERS","topLeft","topRight","bottomLeft","bottomRight","BoxInputControls","onChange","values","valuesProp","props","createHandleOnChange","corner","next","undefined","Object","entries","map","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/border-radius-control/input-controls.js"],"names":["CORNERS","topLeft","topRight","bottomLeft","bottomRight","BoxInputControls","onChange","selectedUnits","setSelectedUnits","values","valuesProp","props","createHandleOnChange","corner","next","isNumeric","isNaN","parseFloat","nextValue","undefined","createHandleOnUnitChange","side","newUnits","Object","entries","map","label","parsedQuantity","parsedUnit","computedUnit","flat","join"],"mappings":";;;;;;;;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;AAQA,MAAMA,OAAO,GAAG;AACfC,EAAAA,OAAO,EAAE,cAAI,UAAJ,CADM;AAEfC,EAAAA,QAAQ,EAAE,cAAI,WAAJ,CAFK;AAGfC,EAAAA,UAAU,EAAE,cAAI,aAAJ,CAHG;AAIfC,EAAAA,WAAW,EAAE,cAAI,cAAJ;AAJE,CAAhB;;AAOe,SAASC,gBAAT,OAMX;AAAA,MANsC;AACzCC,IAAAA,QADyC;AAEzCC,IAAAA,aAFyC;AAGzCC,IAAAA,gBAHyC;AAIzCC,IAAAA,MAAM,EAAEC,UAJiC;AAKzC,OAAGC;AALsC,GAMtC;;AACH,QAAMC,oBAAoB,GAAKC,MAAF,IAAgBC,IAAF,IAAY;AACtD,QAAK,CAAER,QAAP,EAAkB;AACjB;AACA,KAHqD,CAKtD;;;AACA,UAAMS,SAAS,GAAG,CAAEC,KAAK,CAAEC,UAAU,CAAEH,IAAF,CAAZ,CAAzB;AACA,UAAMI,SAAS,GAAGH,SAAS,GAAGD,IAAH,GAAUK,SAArC;AAEAb,IAAAA,QAAQ,CAAE,EACT,GAAGG,MADM;AAET,OAAEI,MAAF,GAAYK;AAFH,KAAF,CAAR;AAIA,GAbD;;AAeA,QAAME,wBAAwB,GAAKC,IAAF,IAAcP,IAAF,IAAY;AACxD,UAAMQ,QAAQ,GAAG,EAAE,GAAGf;AAAL,KAAjB;AACAe,IAAAA,QAAQ,CAAED,IAAF,CAAR,GAAmBP,IAAnB;AACAN,IAAAA,gBAAgB,CAAEc,QAAF,CAAhB;AACA,GAJD,CAhBG,CAsBH;;;AACA,QAAMb,MAAM,GACX,OAAOC,UAAP,KAAsB,QAAtB,GACGA,UADH,GAEG;AACAT,IAAAA,OAAO,EAAES,UADT;AAEAR,IAAAA,QAAQ,EAAEQ,UAFV;AAGAP,IAAAA,UAAU,EAAEO,UAHZ;AAIAN,IAAAA,WAAW,EAAEM;AAJb,GAHJ,CAvBG,CAiCH;AACA;AACA;;AACA,SACC;AAAK,IAAA,SAAS,EAAC;AAAf,KACGa,MAAM,CAACC,OAAP,CAAgBxB,OAAhB,EAA0ByB,GAA1B,CAA+B,SAAyB;AAAA,QAAvB,CAAEZ,MAAF,EAAUa,KAAV,CAAuB;AACzD,UAAM,CAAEC,cAAF,EAAkBC,UAAlB,IACL,gEAAkCnB,MAAM,CAAEI,MAAF,CAAxC,CADD;AAGA,UAAMgB,YAAY,GAAGpB,MAAM,CAAEI,MAAF,CAAN,GAClBe,UADkB,GAElBrB,aAAa,CAAEM,MAAF,CAAb,IAA2BN,aAAa,CAACuB,IAF5C;AAIA,WACC,4BAAC,mBAAD;AAAS,MAAA,IAAI,EAAGJ,KAAhB;AAAwB,MAAA,QAAQ,EAAC,KAAjC;AAAuC,MAAA,GAAG,EAAGb;AAA7C,OACC;AAAK,MAAA,SAAS,EAAC;AAAf,OACC,4BAAC,qCAAD,6BACMF,KADN;AAEC,oBAAae,KAFd;AAGC,MAAA,KAAK,EAAG,CAAEC,cAAF,EAAkBE,YAAlB,EAAiCE,IAAjC,CACP,EADO,CAHT;AAMC,MAAA,QAAQ,EAAGnB,oBAAoB,CAAEC,MAAF,CANhC;AAOC,MAAA,YAAY,EAAGO,wBAAwB,CACtCP,MADsC;AAPxC,OADD,CADD,CADD;AAiBA,GAzBC,CADH,CADD;AA8BA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalParseQuantityAndUnitFromRawValue as parseQuantityAndUnitFromRawValue,\n\t__experimentalUnitControl as UnitControl,\n\tTooltip,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\nconst CORNERS = {\n\ttopLeft: __( 'Top left' ),\n\ttopRight: __( 'Top right' ),\n\tbottomLeft: __( 'Bottom left' ),\n\tbottomRight: __( 'Bottom right' ),\n};\n\nexport default function BoxInputControls( {\n\tonChange,\n\tselectedUnits,\n\tsetSelectedUnits,\n\tvalues: valuesProp,\n\t...props\n} ) {\n\tconst createHandleOnChange = ( corner ) => ( next ) => {\n\t\tif ( ! onChange ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Filter out CSS-unit-only values to prevent invalid styles.\n\t\tconst isNumeric = ! isNaN( parseFloat( next ) );\n\t\tconst nextValue = isNumeric ? next : undefined;\n\n\t\tonChange( {\n\t\t\t...values,\n\t\t\t[ corner ]: nextValue,\n\t\t} );\n\t};\n\n\tconst createHandleOnUnitChange = ( side ) => ( next ) => {\n\t\tconst newUnits = { ...selectedUnits };\n\t\tnewUnits[ side ] = next;\n\t\tsetSelectedUnits( newUnits );\n\t};\n\n\t// For shorthand style & backwards compatibility, handle flat string value.\n\tconst values =\n\t\ttypeof valuesProp !== 'string'\n\t\t\t? valuesProp\n\t\t\t: {\n\t\t\t\t\ttopLeft: valuesProp,\n\t\t\t\t\ttopRight: valuesProp,\n\t\t\t\t\tbottomLeft: valuesProp,\n\t\t\t\t\tbottomRight: valuesProp,\n\t\t\t };\n\n\t// Controls are wrapped in tooltips as visible labels aren't desired here.\n\t// Tooltip rendering also requires the UnitControl to be wrapped. See:\n\t// https://github.com/WordPress/gutenberg/pull/24966#issuecomment-685875026\n\treturn (\n\t\t<div className=\"components-border-radius-control__input-controls-wrapper\">\n\t\t\t{ Object.entries( CORNERS ).map( ( [ corner, label ] ) => {\n\t\t\t\tconst [ parsedQuantity, parsedUnit ] =\n\t\t\t\t\tparseQuantityAndUnitFromRawValue( values[ corner ] );\n\n\t\t\t\tconst computedUnit = values[ corner ]\n\t\t\t\t\t? parsedUnit\n\t\t\t\t\t: selectedUnits[ corner ] || selectedUnits.flat;\n\n\t\t\t\treturn (\n\t\t\t\t\t<Tooltip text={ label } position=\"top\" key={ corner }>\n\t\t\t\t\t\t<div className=\"components-border-radius-control__tooltip-wrapper\">\n\t\t\t\t\t\t\t<UnitControl\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t\tvalue={ [ parsedQuantity, computedUnit ].join(\n\t\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tonChange={ createHandleOnChange( corner ) }\n\t\t\t\t\t\t\t\tonUnitChange={ createHandleOnUnitChange(\n\t\t\t\t\t\t\t\t\tcorner\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</div>\n\t);\n}\n"]}
|
|
@@ -33,27 +33,24 @@ function mode(inputArray) {
|
|
|
33
33
|
return arr.sort((a, b) => inputArray.filter(v => v === b).length - inputArray.filter(v => v === a).length).shift();
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* Returns the most common CSS unit
|
|
37
|
-
* Falls back to `px` as a default unit.
|
|
36
|
+
* Returns the most common CSS unit from the current CSS unit selections.
|
|
38
37
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
38
|
+
* - If a single flat border radius is set, its unit will be used
|
|
39
|
+
* - If individual corner selections, the most common of those will be used
|
|
40
|
+
* - Failing any unit selections a default of 'px' is returned.
|
|
41
|
+
*
|
|
42
|
+
* @param {Object} selectedUnits Unit selections for flat radius & each corner.
|
|
43
|
+
* @return {string} Most common CSS unit from current selections. Default: `px`.
|
|
41
44
|
*/
|
|
42
45
|
|
|
43
46
|
|
|
44
47
|
function getAllUnit() {
|
|
45
|
-
let
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const allUnits = Object.values(values).map(value => {
|
|
53
|
-
const [, unit] = (0, _components.__experimentalParseQuantityAndUnitFromRawValue)(value);
|
|
54
|
-
return unit;
|
|
55
|
-
});
|
|
56
|
-
return mode(allUnits) || 'px';
|
|
48
|
+
let selectedUnits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
49
|
+
const {
|
|
50
|
+
flat,
|
|
51
|
+
...cornerUnits
|
|
52
|
+
} = selectedUnits;
|
|
53
|
+
return flat || mode(Object.values(cornerUnits).filter(Boolean)) || 'px';
|
|
57
54
|
}
|
|
58
55
|
/**
|
|
59
56
|
* Gets the 'all' input value and unit from values data.
|