@wordpress/block-editor 13.4.0 → 14.1.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 +13 -0
- package/README.md +20 -15
- package/build/autocompleters/block.js +1 -1
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-breadcrumb/index.js +3 -1
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-draggable/index.js +2 -2
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +2 -2
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-refs.js +24 -32
- package/build/components/block-list/use-block-props/use-block-refs.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +11 -4
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-mover/index.js +1 -2
- package/build/components/block-mover/index.js.map +1 -1
- package/build/components/block-popover/cover.js +1 -1
- package/build/components/block-popover/cover.js.map +1 -1
- package/build/components/block-popover/inbetween.js +2 -2
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +2 -2
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-settings-menu/block-mode-toggle.js +28 -34
- package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +1 -2
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +1 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/insertion-point.js +14 -3
- package/build/components/block-tools/insertion-point.js.map +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/build/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build/components/block-tools/use-show-block-tools.js +2 -1
- package/build/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build/components/block-tools/zoom-out-mode-inserters.js +22 -19
- package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build/components/block-tools/zoom-out-toolbar.js +0 -1
- package/build/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build/components/border-radius-control/index.js +1 -0
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/child-layout-control/index.js +3 -1
- package/build/components/child-layout-control/index.js.map +1 -1
- package/build/components/convert-to-group-buttons/index.js +1 -1
- package/build/components/convert-to-group-buttons/index.js.map +1 -1
- package/build/components/date-format-picker/index.js +2 -0
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/dimensions-tool/scale-tool.js +1 -0
- package/build/components/dimensions-tool/scale-tool.js.map +1 -1
- package/build/components/font-appearance-control/index.js +3 -0
- package/build/components/font-appearance-control/index.js.map +1 -1
- package/build/components/font-family/index.js +15 -0
- package/build/components/font-family/index.js.map +1 -1
- package/build/components/global-styles/background-panel.js +153 -77
- package/build/components/global-styles/background-panel.js.map +1 -1
- package/build/components/global-styles/get-global-styles-changes.js +3 -1
- package/build/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build/components/global-styles/hooks.js +0 -7
- package/build/components/global-styles/hooks.js.map +1 -1
- package/build/components/global-styles/image-settings-panel.js +1 -0
- package/build/components/global-styles/image-settings-panel.js.map +1 -1
- package/build/components/global-styles/index.js +0 -6
- package/build/components/global-styles/index.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +0 -1
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/global-styles/use-global-styles-output.js +59 -40
- package/build/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build/components/global-styles/utils.js +80 -0
- package/build/components/global-styles/utils.js.map +1 -1
- package/build/components/grid/grid-item-movers.js +30 -26
- package/build/components/grid/grid-item-movers.js.map +1 -1
- package/build/components/grid/grid-item-resizer.js +14 -15
- package/build/components/grid/grid-item-resizer.js.map +1 -1
- package/build/components/grid/grid-visualizer.js +21 -6
- package/build/components/grid/grid-visualizer.js.map +1 -1
- package/build/components/grid/use-grid-layout-sync.js +56 -20
- package/build/components/grid/use-grid-layout-sync.js.map +1 -1
- package/build/components/height-control/index.js +1 -0
- package/build/components/height-control/index.js.map +1 -1
- package/build/components/iframe/index.js +2 -4
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/zoom-dropdown.js +11 -7
- package/build/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build/components/inner-blocks/button-block-appender.js +8 -8
- package/build/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build/components/inner-blocks/default-block-appender.js +7 -25
- package/build/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build/components/inner-blocks/index.js +9 -11
- package/build/components/inner-blocks/index.js.map +1 -1
- package/build/components/inserter/category-tabs/index.js +29 -2
- package/build/components/inserter/category-tabs/index.js.map +1 -1
- package/build/components/inserter/library.js +4 -2
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js +32 -14
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -0
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/line-height-control/index.js +3 -15
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/search-input.js +0 -1
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/media-placeholder/index.js +9 -4
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +3 -1
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/index.native.js +4 -1
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/multi-selection-inspector/index.js +12 -12
- package/build/components/multi-selection-inspector/index.js.map +1 -1
- package/build/components/resolution-tool/index.js +1 -0
- package/build/components/resolution-tool/index.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js +4 -2
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
- package/build/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build/components/text-alignment-control/index.js +13 -8
- package/build/components/text-alignment-control/index.js.map +1 -1
- package/build/components/text-decoration-control/index.js +13 -8
- package/build/components/text-decoration-control/index.js.map +1 -1
- package/build/components/text-transform-control/index.js +13 -8
- package/build/components/text-transform-control/index.js.map +1 -1
- package/build/components/url-input/button.js +0 -1
- package/build/components/url-input/button.js.map +1 -1
- package/build/components/url-input/index.js +1 -11
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/url-popover/image-url-input-ui.js +2 -0
- package/build/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build/components/url-popover/link-editor.js +0 -1
- package/build/components/url-popover/link-editor.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js +42 -4
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +3 -6
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-resize-canvas/index.js +1 -3
- package/build/components/use-resize-canvas/index.js.map +1 -1
- package/build/components/use-settings/index.js +2 -1
- package/build/components/use-settings/index.js.map +1 -1
- package/build/components/writing-mode-control/index.js +13 -8
- package/build/components/writing-mode-control/index.js.map +1 -1
- package/build/hooks/background.js +19 -23
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-bindings.js +209 -39
- package/build/hooks/block-bindings.js.map +1 -1
- package/build/hooks/block-hooks.js +1 -0
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/block-style-variation.js +2 -2
- package/build/hooks/block-style-variation.js.map +1 -1
- package/build/hooks/contrast-checker.js +6 -6
- package/build/hooks/contrast-checker.js.map +1 -1
- package/build/hooks/duotone.js +3 -3
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +7 -1
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/line-height.js +0 -1
- package/build/hooks/line-height.js.map +1 -1
- package/build/hooks/spacing-visualizer.js +1 -1
- package/build/hooks/spacing-visualizer.js.map +1 -1
- package/build/hooks/use-bindings-attributes.js +4 -0
- package/build/hooks/use-bindings-attributes.js.map +1 -1
- package/build/hooks/use-zoom-out.js +1 -1
- package/build/hooks/use-zoom-out.js.map +1 -1
- package/build/hooks/utils.js +20 -0
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/layouts/constrained.js +1 -0
- package/build/layouts/constrained.js.map +1 -1
- package/build/layouts/flex.js +2 -0
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/grid.js +3 -0
- package/build/layouts/grid.js.map +1 -1
- package/build/private-apis.js +3 -2
- package/build/private-apis.js.map +1 -1
- package/build/store/actions.js +9 -1
- package/build/store/actions.js.map +1 -1
- package/build/store/private-selectors.js +30 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +10 -1
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +4 -4
- package/build/store/selectors.js.map +1 -1
- package/build/utils/block-bindings.js +112 -0
- package/build/utils/block-bindings.js.map +1 -0
- package/build/utils/get-editor-region.js +1 -1
- package/build/utils/get-editor-region.js.map +1 -1
- package/build/utils/get-px-from-css-unit.js +1 -1
- package/build/utils/get-px-from-css-unit.js.map +1 -1
- package/build-module/autocompleters/block.js +1 -1
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js +4 -2
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-draggable/index.js +3 -3
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +2 -2
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-refs.js +24 -34
- package/build-module/components/block-list/use-block-props/use-block-refs.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +11 -4
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-mover/index.js +1 -2
- package/build-module/components/block-mover/index.js.map +1 -1
- package/build-module/components/block-popover/cover.js +1 -1
- package/build-module/components/block-popover/cover.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +1 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +1 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-mode-toggle.js +29 -34
- package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +1 -2
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +1 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/insertion-point.js +14 -3
- package/build-module/components/block-tools/insertion-point.js.map +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/build-module/components/block-tools/use-block-toolbar-popover-props.js.map +1 -1
- package/build-module/components/block-tools/use-show-block-tools.js +2 -1
- package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-mode-inserters.js +23 -20
- package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js +0 -1
- package/build-module/components/block-tools/zoom-out-toolbar.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +1 -0
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/child-layout-control/index.js +3 -1
- package/build-module/components/child-layout-control/index.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/index.js +1 -1
- package/build-module/components/convert-to-group-buttons/index.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +2 -0
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/dimensions-tool/scale-tool.js +1 -0
- package/build-module/components/dimensions-tool/scale-tool.js.map +1 -1
- package/build-module/components/font-appearance-control/index.js +3 -0
- package/build-module/components/font-appearance-control/index.js.map +1 -1
- package/build-module/components/font-family/index.js +14 -0
- package/build-module/components/font-family/index.js.map +1 -1
- package/build-module/components/global-styles/background-panel.js +156 -80
- package/build-module/components/global-styles/background-panel.js.map +1 -1
- package/build-module/components/global-styles/get-global-styles-changes.js +3 -1
- package/build-module/components/global-styles/get-global-styles-changes.js.map +1 -1
- package/build-module/components/global-styles/hooks.js +0 -6
- package/build-module/components/global-styles/hooks.js.map +1 -1
- package/build-module/components/global-styles/image-settings-panel.js +1 -0
- package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
- package/build-module/components/global-styles/index.js +1 -1
- package/build-module/components/global-styles/index.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +0 -1
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/global-styles/use-global-styles-output.js +61 -42
- package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
- package/build-module/components/global-styles/utils.js +77 -0
- package/build-module/components/global-styles/utils.js.map +1 -1
- package/build-module/components/grid/grid-item-movers.js +30 -26
- package/build-module/components/grid/grid-item-movers.js.map +1 -1
- package/build-module/components/grid/grid-item-resizer.js +14 -15
- package/build-module/components/grid/grid-item-resizer.js.map +1 -1
- package/build-module/components/grid/grid-visualizer.js +21 -6
- package/build-module/components/grid/grid-visualizer.js.map +1 -1
- package/build-module/components/grid/use-grid-layout-sync.js +56 -20
- package/build-module/components/grid/use-grid-layout-sync.js.map +1 -1
- package/build-module/components/height-control/index.js +1 -0
- package/build-module/components/height-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +2 -4
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/zoom-dropdown.js +12 -8
- package/build-module/components/image-editor/zoom-dropdown.js.map +1 -1
- package/build-module/components/inner-blocks/button-block-appender.js +7 -6
- package/build-module/components/inner-blocks/button-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/default-block-appender.js +6 -23
- package/build-module/components/inner-blocks/default-block-appender.js.map +1 -1
- package/build-module/components/inner-blocks/index.js +9 -11
- package/build-module/components/inner-blocks/index.js.map +1 -1
- package/build-module/components/inserter/category-tabs/index.js +30 -3
- package/build-module/components/inserter/category-tabs/index.js.map +1 -1
- package/build-module/components/inserter/library.js +4 -2
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js +32 -14
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +5 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/line-height-control/index.js +3 -14
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/search-input.js +0 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +9 -4
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +3 -1
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +4 -1
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/multi-selection-inspector/index.js +12 -12
- package/build-module/components/multi-selection-inspector/index.js.map +1 -1
- package/build-module/components/resolution-tool/index.js +1 -0
- package/build-module/components/resolution-tool/index.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js +5 -3
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js +8 -8
- package/build-module/components/spacing-sizes-control/input-controls/spacing-input-control.js.map +1 -1
- package/build-module/components/text-alignment-control/index.js +13 -8
- package/build-module/components/text-alignment-control/index.js.map +1 -1
- package/build-module/components/text-decoration-control/index.js +13 -8
- package/build-module/components/text-decoration-control/index.js.map +1 -1
- package/build-module/components/text-transform-control/index.js +13 -8
- package/build-module/components/text-transform-control/index.js.map +1 -1
- package/build-module/components/url-input/button.js +0 -1
- package/build-module/components/url-input/button.js.map +1 -1
- package/build-module/components/url-input/index.js +1 -11
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/url-popover/image-url-input-ui.js +2 -0
- package/build-module/components/url-popover/image-url-input-ui.js.map +1 -1
- package/build-module/components/url-popover/link-editor.js +0 -1
- package/build-module/components/url-popover/link-editor.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js +42 -4
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +3 -6
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-resize-canvas/index.js +1 -3
- package/build-module/components/use-resize-canvas/index.js.map +1 -1
- package/build-module/components/use-settings/index.js +2 -1
- package/build-module/components/use-settings/index.js.map +1 -1
- package/build-module/components/writing-mode-control/index.js +13 -8
- package/build-module/components/writing-mode-control/index.js.map +1 -1
- package/build-module/hooks/background.js +19 -23
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-bindings.js +214 -43
- package/build-module/hooks/block-bindings.js.map +1 -1
- package/build-module/hooks/block-hooks.js +1 -0
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/block-style-variation.js +3 -3
- package/build-module/hooks/block-style-variation.js.map +1 -1
- package/build-module/hooks/contrast-checker.js +7 -7
- package/build-module/hooks/contrast-checker.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/index.js +2 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/line-height.js +0 -1
- package/build-module/hooks/line-height.js.map +1 -1
- package/build-module/hooks/spacing-visualizer.js +1 -1
- package/build-module/hooks/spacing-visualizer.js.map +1 -1
- package/build-module/hooks/use-bindings-attributes.js +3 -0
- package/build-module/hooks/use-bindings-attributes.js.map +1 -1
- package/build-module/hooks/use-zoom-out.js +1 -1
- package/build-module/hooks/use-zoom-out.js.map +1 -1
- package/build-module/hooks/utils.js +19 -0
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/constrained.js +1 -0
- package/build-module/layouts/constrained.js.map +1 -1
- package/build-module/layouts/flex.js +2 -0
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/grid.js +3 -0
- package/build-module/layouts/grid.js.map +1 -1
- package/build-module/private-apis.js +4 -3
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/actions.js +9 -1
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/private-selectors.js +27 -0
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +9 -1
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +4 -4
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/block-bindings.js +105 -0
- package/build-module/utils/block-bindings.js.map +1 -0
- package/build-module/utils/get-editor-region.js +1 -1
- package/build-module/utils/get-editor-region.js.map +1 -1
- package/build-module/utils/get-px-from-css-unit.js +1 -1
- package/build-module/utils/get-px-from-css-unit.js.map +1 -1
- package/build-style/content-rtl.css +12 -26
- package/build-style/content.css +12 -26
- package/build-style/default-editor-styles-rtl.css +5 -2
- package/build-style/default-editor-styles.css +5 -2
- package/build-style/style-rtl.css +123 -83
- package/build-style/style.css +123 -83
- package/package.json +32 -32
- package/src/autocompleters/block.js +2 -1
- package/src/autocompleters/style.scss +4 -0
- package/src/components/block-breadcrumb/index.js +4 -2
- package/src/components/block-canvas/style.scss +1 -0
- package/src/components/block-draggable/index.js +3 -3
- package/src/components/block-list/content.scss +5 -13
- package/src/components/block-list/use-block-props/index.js +2 -2
- package/src/components/block-list/use-block-props/use-block-refs.js +27 -43
- package/src/components/block-list/use-in-between-inserter.js +17 -5
- package/src/components/block-mover/index.js +5 -2
- package/src/components/block-popover/cover.js +1 -1
- package/src/components/block-popover/inbetween.js +1 -1
- package/src/components/block-popover/index.js +1 -1
- package/src/components/block-settings-menu/block-mode-toggle.js +28 -31
- package/src/components/block-settings-menu/test/block-mode-toggle.js +26 -23
- package/src/components/block-tools/block-selection-button.js +1 -2
- package/src/components/block-tools/index.js +5 -6
- package/src/components/block-tools/insertion-point.js +11 -0
- package/src/components/block-tools/style.scss +1 -1
- package/src/components/block-tools/use-block-toolbar-popover-props.js +1 -1
- package/src/components/block-tools/use-show-block-tools.js +4 -1
- package/src/components/block-tools/zoom-out-mode-inserters.js +21 -19
- package/src/components/block-tools/zoom-out-toolbar.js +0 -1
- package/src/components/block-variation-transforms/style.scss +1 -1
- package/src/components/border-radius-control/index.js +1 -0
- package/src/components/border-radius-control/style.scss +0 -10
- package/src/components/button-block-appender/content.scss +1 -1
- package/src/components/child-layout-control/index.js +2 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +2 -2
- package/src/components/colors-gradients/test/control.js +3 -2
- package/src/components/convert-to-group-buttons/index.js +1 -1
- package/src/components/date-format-picker/index.js +2 -0
- package/src/components/dimensions-tool/scale-tool.js +1 -0
- package/src/components/font-appearance-control/index.js +3 -0
- package/src/components/font-family/README.md +17 -0
- package/src/components/font-family/index.js +19 -0
- package/src/components/font-family/stories/index.story.js +54 -0
- package/src/components/global-styles/background-panel.js +180 -93
- package/src/components/global-styles/get-global-styles-changes.js +4 -1
- package/src/components/global-styles/hooks.js +0 -5
- package/src/components/global-styles/image-settings-panel.js +1 -0
- package/src/components/global-styles/index.js +0 -1
- package/src/components/global-styles/style.scss +13 -12
- package/src/components/global-styles/test/use-global-styles-output.js +68 -7
- package/src/components/global-styles/test/utils.js +120 -0
- package/src/components/global-styles/typography-panel.js +0 -1
- package/src/components/global-styles/use-global-styles-output.js +71 -53
- package/src/components/global-styles/utils.js +90 -0
- package/src/components/grid/grid-item-movers.js +46 -44
- package/src/components/grid/grid-item-resizer.js +11 -17
- package/src/components/grid/grid-visualizer.js +23 -8
- package/src/components/grid/style.scss +60 -10
- package/src/components/grid/use-grid-layout-sync.js +68 -14
- package/src/components/height-control/index.js +1 -0
- package/src/components/iframe/content.scss +2 -2
- package/src/components/iframe/index.js +1 -3
- package/src/components/image-editor/zoom-dropdown.js +17 -9
- package/src/components/inner-blocks/button-block-appender.js +5 -7
- package/src/components/inner-blocks/default-block-appender.js +4 -23
- package/src/components/inner-blocks/index.js +10 -9
- package/src/components/inserter/category-tabs/index.js +35 -2
- package/src/components/inserter/library.js +2 -0
- package/src/components/inserter/menu.js +34 -29
- package/src/components/inserter/quick-inserter.js +4 -1
- package/src/components/inserter/style.scss +17 -12
- package/src/components/inserter-list-item/style.scss +1 -0
- package/src/components/inspector-controls/README.md +5 -0
- package/src/components/line-height-control/README.md +4 -5
- package/src/components/line-height-control/index.js +4 -21
- package/src/components/line-height-control/stories/index.story.js +0 -1
- package/src/components/line-height-control/test/index.js +1 -7
- package/src/components/link-control/search-input.js +0 -1
- package/src/components/link-control/style.scss +1 -1
- package/src/components/media-placeholder/index.js +12 -7
- package/src/components/media-replace-flow/README.md +7 -0
- package/src/components/media-replace-flow/index.js +3 -1
- package/src/components/media-upload/README.md +2 -0
- package/src/components/media-upload/index.native.js +2 -0
- package/src/components/multi-selection-inspector/index.js +8 -9
- package/src/components/resolution-tool/index.js +1 -0
- package/src/components/responsive-block-control/README.md +1 -0
- package/src/components/responsive-block-control/test/index.js +6 -1
- package/src/components/skip-to-selected-block/index.js +5 -3
- package/src/components/spacing-sizes-control/input-controls/spacing-input-control.js +11 -10
- package/src/components/spacing-sizes-control/style.scss +16 -16
- package/src/components/tabbed-sidebar/style.scss +1 -19
- package/src/components/text-alignment-control/index.js +20 -8
- package/src/components/text-decoration-control/index.js +20 -8
- package/src/components/text-decoration-control/stories/index.story.js +0 -4
- package/src/components/text-transform-control/index.js +20 -8
- package/src/components/text-transform-control/stories/index.story.js +0 -4
- package/src/components/url-input/README.md +0 -5
- package/src/components/url-input/button.js +0 -1
- package/src/components/url-input/index.js +1 -15
- package/src/components/url-input/style.scss +2 -2
- package/src/components/url-popover/image-url-input-ui.js +2 -0
- package/src/components/url-popover/link-editor.js +0 -1
- package/src/components/use-block-drop-zone/index.js +86 -16
- package/src/components/use-on-block-drop/index.js +1 -9
- package/src/components/use-resize-canvas/index.js +1 -3
- package/src/components/use-settings/index.js +2 -1
- package/src/components/writing-mode-control/index.js +20 -8
- package/src/hooks/background.js +21 -27
- package/src/hooks/block-bindings.js +248 -54
- package/src/hooks/block-bindings.scss +13 -2
- package/src/hooks/block-hooks.js +1 -0
- package/src/hooks/block-hooks.scss +1 -0
- package/src/hooks/block-style-variation.js +3 -3
- package/src/hooks/contrast-checker.js +7 -7
- package/src/hooks/duotone.js +4 -4
- package/src/hooks/index.js +2 -1
- package/src/hooks/line-height.js +0 -1
- package/src/hooks/spacing-visualizer.js +1 -1
- package/src/hooks/test/background.js +60 -0
- package/src/hooks/use-bindings-attributes.js +4 -0
- package/src/hooks/use-editor-wrapper-styles.native.scss +1 -0
- package/src/hooks/use-zoom-out.js +1 -1
- package/src/hooks/utils.js +14 -1
- package/src/index.js +1 -0
- package/src/layouts/constrained.js +1 -0
- package/src/layouts/flex.js +2 -0
- package/src/layouts/grid.js +3 -0
- package/src/private-apis.js +3 -2
- package/src/store/actions.js +13 -5
- package/src/store/private-selectors.js +36 -0
- package/src/store/reducer.js +7 -0
- package/src/store/selectors.js +4 -4
- package/src/store/test/private-selectors.js +89 -0
- package/src/style.scss +1 -2
- package/src/utils/block-bindings.js +98 -0
- package/src/utils/get-editor-region.js +1 -1
- package/src/utils/get-px-from-css-unit.js +1 -1
- package/src/utils/test/transform-styles.js +49 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/global-styles/theme-file-uri-utils.js +0 -80
- package/build/components/global-styles/theme-file-uri-utils.js.map +0 -1
- package/build/components/inner-blocks/with-client-id.js +0 -28
- package/build/components/inner-blocks/with-client-id.js.map +0 -1
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -30
- package/build/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
- package/build/components/segmented-text-control/index.js +0 -63
- package/build/components/segmented-text-control/index.js.map +0 -1
- package/build-module/components/global-styles/theme-file-uri-utils.js +0 -73
- package/build-module/components/global-styles/theme-file-uri-utils.js.map +0 -1
- package/build-module/components/inner-blocks/with-client-id.js +0 -21
- package/build-module/components/inner-blocks/with-client-id.js.map +0 -1
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -23
- package/build-module/components/inserter/block-patterns-tab/pattern-category-preview-panel.js.map +0 -1
- package/build-module/components/segmented-text-control/index.js +0 -58
- package/build-module/components/segmented-text-control/index.js.map +0 -1
- package/src/components/global-styles/test/theme-file-uri-utils.js +0 -66
- package/src/components/global-styles/theme-file-uri-utils.js +0 -77
- package/src/components/inner-blocks/with-client-id.js +0 -19
- package/src/components/inserter/block-patterns-tab/pattern-category-preview-panel.js +0 -25
- package/src/components/segmented-text-control/index.js +0 -63
- package/src/components/segmented-text-control/style.scss +0 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_icons","
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_icons","_components","_jsxRuntime","TEXT_TRANSFORMS","label","__","value","icon","reset","formatUppercase","formatLowercase","formatCapitalize","TextTransformControl","className","onChange","jsx","__experimentalToggleGroupControl","isDeselectable","__nextHasNoMarginBottom","__next40pxDefaultSize","clsx","newValue","undefined","children","map","option","__experimentalToggleGroupControlOptionIcon"],"sources":["@wordpress/block-editor/src/components/text-transform-control/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\treset,\n\tformatCapitalize,\n\tformatLowercase,\n\tformatUppercase,\n} from '@wordpress/icons';\nimport {\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n} from '@wordpress/components';\n\nconst TEXT_TRANSFORMS = [\n\t{\n\t\tlabel: __( 'None' ),\n\t\tvalue: 'none',\n\t\ticon: reset,\n\t},\n\t{\n\t\tlabel: __( 'Uppercase' ),\n\t\tvalue: 'uppercase',\n\t\ticon: formatUppercase,\n\t},\n\t{\n\t\tlabel: __( 'Lowercase' ),\n\t\tvalue: 'lowercase',\n\t\ticon: formatLowercase,\n\t},\n\t{\n\t\tlabel: __( 'Capitalize' ),\n\t\tvalue: 'capitalize',\n\t\ticon: formatCapitalize,\n\t},\n];\n\n/**\n * Control to facilitate text transform selections.\n *\n * @param {Object} props Component props.\n * @param {string} props.className Class name to add to the control.\n * @param {string} props.value Currently selected text transform.\n * @param {Function} props.onChange Handles change in text transform selection.\n *\n * @return {Element} Text transform control.\n */\nexport default function TextTransformControl( { className, value, onChange } ) {\n\treturn (\n\t\t<ToggleGroupControl\n\t\t\tisDeselectable\n\t\t\t__nextHasNoMarginBottom\n\t\t\t__next40pxDefaultSize\n\t\t\tlabel={ __( 'Letter case' ) }\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-text-transform-control',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\tvalue={ value }\n\t\t\tonChange={ ( newValue ) => {\n\t\t\t\tonChange( newValue === value ? undefined : newValue );\n\t\t\t} }\n\t\t>\n\t\t\t{ TEXT_TRANSFORMS.map( ( option ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ option.value }\n\t\t\t\t\t\tvalue={ option.value }\n\t\t\t\t\t\ticon={ option.icon }\n\t\t\t\t\t\tlabel={ option.label }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</ToggleGroupControl>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAMA,IAAAG,WAAA,GAAAH,OAAA;AAG+B,IAAAI,WAAA,GAAAJ,OAAA;AAlB/B;AACA;AACA;;AAGA;AACA;AACA;;AAaA,MAAMK,eAAe,GAAG,CACvB;EACCC,KAAK,EAAE,IAAAC,QAAE,EAAE,MAAO,CAAC;EACnBC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAEC;AACP,CAAC,EACD;EACCJ,KAAK,EAAE,IAAAC,QAAE,EAAE,WAAY,CAAC;EACxBC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAEE;AACP,CAAC,EACD;EACCL,KAAK,EAAE,IAAAC,QAAE,EAAE,WAAY,CAAC;EACxBC,KAAK,EAAE,WAAW;EAClBC,IAAI,EAAEG;AACP,CAAC,EACD;EACCN,KAAK,EAAE,IAAAC,QAAE,EAAE,YAAa,CAAC;EACzBC,KAAK,EAAE,YAAY;EACnBC,IAAI,EAAEI;AACP,CAAC,CACD;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASC,oBAAoBA,CAAE;EAAEC,SAAS;EAAEP,KAAK;EAAEQ;AAAS,CAAC,EAAG;EAC9E,oBACC,IAAAZ,WAAA,CAAAa,GAAA,EAACd,WAAA,CAAAe,gCAAkB;IAClBC,cAAc;IACdC,uBAAuB;IACvBC,qBAAqB;IACrBf,KAAK,EAAG,IAAAC,QAAE,EAAE,aAAc,CAAG;IAC7BQ,SAAS,EAAG,IAAAO,aAAI,EACf,qCAAqC,EACrCP,SACD,CAAG;IACHP,KAAK,EAAGA,KAAO;IACfQ,QAAQ,EAAKO,QAAQ,IAAM;MAC1BP,QAAQ,CAAEO,QAAQ,KAAKf,KAAK,GAAGgB,SAAS,GAAGD,QAAS,CAAC;IACtD,CAAG;IAAAE,QAAA,EAEDpB,eAAe,CAACqB,GAAG,CAAIC,MAAM,IAAM;MACpC,oBACC,IAAAvB,WAAA,CAAAa,GAAA,EAACd,WAAA,CAAAyB,0CAA4B;QAE5BpB,KAAK,EAAGmB,MAAM,CAACnB,KAAO;QACtBC,IAAI,EAAGkB,MAAM,CAAClB,IAAM;QACpBH,KAAK,EAAGqB,MAAM,CAACrB;MAAO,GAHhBqB,MAAM,CAACnB,KAIb,CAAC;IAEJ,CAAE;EAAC,CACgB,CAAC;AAEvB","ignoreList":[]}
|
|
@@ -65,7 +65,6 @@ class URLInputButton extends _element.Component {
|
|
|
65
65
|
label: (0, _i18n.__)('Close'),
|
|
66
66
|
onClick: this.toggle
|
|
67
67
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.default, {
|
|
68
|
-
__nextHasNoMarginBottom: true,
|
|
69
68
|
value: url || '',
|
|
70
69
|
onChange: onChange
|
|
71
70
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_element","_components","_icons","_","_interopRequireDefault","_jsxRuntime","URLInputButton","Component","constructor","arguments","toggle","bind","submitLink","state","expanded","setState","event","preventDefault","render","url","onChange","props","buttonLabel","__","jsxs","className","children","jsx","Button","icon","link","label","onClick","isPressed","onSubmit","arrowLeft","default","
|
|
1
|
+
{"version":3,"names":["_i18n","require","_element","_components","_icons","_","_interopRequireDefault","_jsxRuntime","URLInputButton","Component","constructor","arguments","toggle","bind","submitLink","state","expanded","setState","event","preventDefault","render","url","onChange","props","buttonLabel","__","jsxs","className","children","jsx","Button","icon","link","label","onClick","isPressed","onSubmit","arrowLeft","default","value","keyboardReturn","type","_default","exports"],"sources":["@wordpress/block-editor/src/components/url-input/button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Component } from '@wordpress/element';\nimport { Button } from '@wordpress/components';\nimport { link, keyboardReturn, arrowLeft } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport URLInput from './';\n\nclass URLInputButton extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\t\tthis.toggle = this.toggle.bind( this );\n\t\tthis.submitLink = this.submitLink.bind( this );\n\t\tthis.state = {\n\t\t\texpanded: false,\n\t\t};\n\t}\n\n\ttoggle() {\n\t\tthis.setState( { expanded: ! this.state.expanded } );\n\t}\n\n\tsubmitLink( event ) {\n\t\tevent.preventDefault();\n\t\tthis.toggle();\n\t}\n\n\trender() {\n\t\tconst { url, onChange } = this.props;\n\t\tconst { expanded } = this.state;\n\t\tconst buttonLabel = url ? __( 'Edit link' ) : __( 'Insert link' );\n\n\t\treturn (\n\t\t\t<div className=\"block-editor-url-input__button\">\n\t\t\t\t<Button\n\t\t\t\t\ticon={ link }\n\t\t\t\t\tlabel={ buttonLabel }\n\t\t\t\t\tonClick={ this.toggle }\n\t\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\t\tisPressed={ !! url }\n\t\t\t\t/>\n\t\t\t\t{ expanded && (\n\t\t\t\t\t<form\n\t\t\t\t\t\tclassName=\"block-editor-url-input__button-modal\"\n\t\t\t\t\t\tonSubmit={ this.submitLink }\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"block-editor-url-input__button-modal-line\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tclassName=\"block-editor-url-input__back\"\n\t\t\t\t\t\t\t\ticon={ arrowLeft }\n\t\t\t\t\t\t\t\tlabel={ __( 'Close' ) }\n\t\t\t\t\t\t\t\tonClick={ this.toggle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<URLInput\n\t\t\t\t\t\t\t\tvalue={ url || '' }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ticon={ keyboardReturn }\n\t\t\t\t\t\t\t\tlabel={ __( 'Submit' ) }\n\t\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</form>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t);\n\t}\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-input/README.md\n */\nexport default URLInputButton;\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAKA,IAAAI,CAAA,GAAAC,sBAAA,CAAAL,OAAA;AAA0B,IAAAM,WAAA,GAAAN,OAAA;AAX1B;AACA;AACA;;AAMA;AACA;AACA;;AAGA,MAAMO,cAAc,SAASC,kBAAS,CAAC;EACtCC,WAAWA,CAAA,EAAG;IACb,KAAK,CAAE,GAAGC,SAAU,CAAC;IACrB,IAAI,CAACC,MAAM,GAAG,IAAI,CAACA,MAAM,CAACC,IAAI,CAAE,IAAK,CAAC;IACtC,IAAI,CAACC,UAAU,GAAG,IAAI,CAACA,UAAU,CAACD,IAAI,CAAE,IAAK,CAAC;IAC9C,IAAI,CAACE,KAAK,GAAG;MACZC,QAAQ,EAAE;IACX,CAAC;EACF;EAEAJ,MAAMA,CAAA,EAAG;IACR,IAAI,CAACK,QAAQ,CAAE;MAAED,QAAQ,EAAE,CAAE,IAAI,CAACD,KAAK,CAACC;IAAS,CAAE,CAAC;EACrD;EAEAF,UAAUA,CAAEI,KAAK,EAAG;IACnBA,KAAK,CAACC,cAAc,CAAC,CAAC;IACtB,IAAI,CAACP,MAAM,CAAC,CAAC;EACd;EAEAQ,MAAMA,CAAA,EAAG;IACR,MAAM;MAAEC,GAAG;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACC,KAAK;IACpC,MAAM;MAAEP;IAAS,CAAC,GAAG,IAAI,CAACD,KAAK;IAC/B,MAAMS,WAAW,GAAGH,GAAG,GAAG,IAAAI,QAAE,EAAE,WAAY,CAAC,GAAG,IAAAA,QAAE,EAAE,aAAc,CAAC;IAEjE,oBACC,IAAAlB,WAAA,CAAAmB,IAAA;MAAKC,SAAS,EAAC,gCAAgC;MAAAC,QAAA,gBAC9C,IAAArB,WAAA,CAAAsB,GAAA,EAAC1B,WAAA,CAAA2B,MAAM;QACNC,IAAI,EAAGC,WAAM;QACbC,KAAK,EAAGT,WAAa;QACrBU,OAAO,EAAG,IAAI,CAACtB,MAAQ;QACvBe,SAAS,EAAC,6BAA6B;QACvCQ,SAAS,EAAG,CAAC,CAAEd;MAAK,CACpB,CAAC,EACAL,QAAQ,iBACT,IAAAT,WAAA,CAAAsB,GAAA;QACCF,SAAS,EAAC,sCAAsC;QAChDS,QAAQ,EAAG,IAAI,CAACtB,UAAY;QAAAc,QAAA,eAE5B,IAAArB,WAAA,CAAAmB,IAAA;UAAKC,SAAS,EAAC,2CAA2C;UAAAC,QAAA,gBACzD,IAAArB,WAAA,CAAAsB,GAAA,EAAC1B,WAAA,CAAA2B,MAAM;YACNH,SAAS,EAAC,8BAA8B;YACxCI,IAAI,EAAGM,gBAAW;YAClBJ,KAAK,EAAG,IAAAR,QAAE,EAAE,OAAQ,CAAG;YACvBS,OAAO,EAAG,IAAI,CAACtB;UAAQ,CACvB,CAAC,eACF,IAAAL,WAAA,CAAAsB,GAAA,EAACxB,CAAA,CAAAiC,OAAQ;YACRC,KAAK,EAAGlB,GAAG,IAAI,EAAI;YACnBC,QAAQ,EAAGA;UAAU,CACrB,CAAC,eACF,IAAAf,WAAA,CAAAsB,GAAA,EAAC1B,WAAA,CAAA2B,MAAM;YACNC,IAAI,EAAGS,qBAAgB;YACvBP,KAAK,EAAG,IAAAR,QAAE,EAAE,QAAS,CAAG;YACxBgB,IAAI,EAAC;UAAQ,CACb,CAAC;QAAA,CACE;MAAC,CACD,CACN;IAAA,CACG,CAAC;EAER;AACD;;AAEA;AACA;AACA;AAFA,IAAAC,QAAA,GAAAC,OAAA,CAAAL,OAAA,GAGe9B,cAAc","ignoreList":[]}
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _clsx = _interopRequireDefault(require("clsx"));
|
|
9
|
-
var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
|
|
10
9
|
var _i18n = require("@wordpress/i18n");
|
|
11
10
|
var _element = require("@wordpress/element");
|
|
12
11
|
var _keycodes = require("@wordpress/keycodes");
|
|
@@ -350,8 +349,6 @@ class URLInput extends _element.Component {
|
|
|
350
349
|
}
|
|
351
350
|
renderControl() {
|
|
352
351
|
const {
|
|
353
|
-
/** Start opting into the new margin-free styles that will become the default in a future version. */
|
|
354
|
-
__nextHasNoMarginBottom = false,
|
|
355
352
|
label = null,
|
|
356
353
|
className,
|
|
357
354
|
isFullWidth,
|
|
@@ -400,15 +397,8 @@ class URLInput extends _element.Component {
|
|
|
400
397
|
if (renderControl) {
|
|
401
398
|
return renderControl(controlProps, inputProps, loading);
|
|
402
399
|
}
|
|
403
|
-
if (!__nextHasNoMarginBottom) {
|
|
404
|
-
(0, _deprecated.default)('Bottom margin styles for wp.blockEditor.URLInput', {
|
|
405
|
-
since: '6.2',
|
|
406
|
-
version: '6.5',
|
|
407
|
-
hint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version'
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
400
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.BaseControl, {
|
|
411
|
-
__nextHasNoMarginBottom:
|
|
401
|
+
__nextHasNoMarginBottom: true,
|
|
412
402
|
...controlProps,
|
|
413
403
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
|
|
414
404
|
...inputProps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_deprecated","_i18n","_element","_keycodes","_components","_compose","_data","_url","_store","_jsxRuntime","_react","isFunction","maybeFunc","URLInput","Component","constructor","props","onChange","bind","onFocus","onKeyDown","selectLink","handleOnClick","bindSuggestionNode","autocompleteRef","createRef","inputRef","updateSuggestions","debounce","suggestionNodes","suggestionsRequest","state","suggestions","showSuggestions","suggestionsValue","selectedSuggestion","suggestionsListboxId","suggestionOptionIdPrefix","componentDidUpdate","prevProps","value","__experimentalShowInitialSuggestions","scrollIntoView","behavior","block","inline","disableSuggestions","length","componentDidMount","shouldShowInitialSuggestions","componentWillUnmount","cancel","index","ref","__experimentalFetchLinkSuggestions","fetchLinkSuggestions","__experimentalHandleURLSuggestions","handleURLSuggestions","isInitialSuggestions","trim","isURL","setState","loading","request","then","debouncedSpeak","sprintf","_n","__","catch","finally","event","target","keyCode","UP","selectionStart","preventDefault","setSelectionRange","DOWN","ENTER","onSubmit","suggestion","previousIndex","nextIndex","TAB","speak","url","current","focus","getDerivedStateFromProps","instanceId","shouldShowSuggestions","hasValue","render","jsxs","Fragment","children","renderControl","renderSuggestions","__nextHasNoMarginBottom","label","className","isFullWidth","placeholder","__experimentalRenderControl","hideLabelFromVision","inputId","controlProps","id","clsx","inputProps","required","type","role","undefined","deprecated","since","version","hint","BaseControl","jsx","Spinner","__experimentalRenderSuggestions","suggestionsListProps","buildSuggestionItemProps","tabIndex","isLoading","handleSuggestionClick","currentInputValue","Popover","placement","focusOnMount","map","createElement","Button","key","onClick","title","_default","exports","default","compose","withSafeTimeout","withSpokenMessages","withInstanceId","withSelect","select","getSettings","blockEditorStore"],"sources":["@wordpress/block-editor/src/components/url-input/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { Component, createRef } from '@wordpress/element';\nimport { UP, DOWN, ENTER, TAB } from '@wordpress/keycodes';\nimport {\n\tBaseControl,\n\tButton,\n\tSpinner,\n\twithSpokenMessages,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tcompose,\n\tdebounce,\n\twithInstanceId,\n\twithSafeTimeout,\n} from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Whether the argument is a function.\n *\n * @param {*} maybeFunc The argument to check.\n * @return {boolean} True if the argument is a function, false otherwise.\n */\nfunction isFunction( maybeFunc ) {\n\treturn typeof maybeFunc === 'function';\n}\n\nclass URLInput extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.onFocus = this.onFocus.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.selectLink = this.selectLink.bind( this );\n\t\tthis.handleOnClick = this.handleOnClick.bind( this );\n\t\tthis.bindSuggestionNode = this.bindSuggestionNode.bind( this );\n\t\tthis.autocompleteRef = props.autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.updateSuggestions = debounce(\n\t\t\tthis.updateSuggestions.bind( this ),\n\t\t\t200\n\t\t);\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.suggestionsRequest = null;\n\n\t\tthis.state = {\n\t\t\tsuggestions: [],\n\t\t\tshowSuggestions: false,\n\t\t\tsuggestionsValue: null,\n\t\t\tselectedSuggestion: null,\n\t\t\tsuggestionsListboxId: '',\n\t\t\tsuggestionOptionIdPrefix: '',\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\tconst { value, __experimentalShowInitialSuggestions = false } =\n\t\t\tthis.props;\n\n\t\t// Only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded.\n\t\tif (\n\t\t\tshowSuggestions &&\n\t\t\tselectedSuggestion !== null &&\n\t\t\tthis.suggestionNodes[ selectedSuggestion ]\n\t\t) {\n\t\t\tthis.suggestionNodes[ selectedSuggestion ].scrollIntoView( {\n\t\t\t\tbehavior: 'instant',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\n\t\t// Update suggestions when the value changes.\n\t\tif ( prevProps.value !== value && ! this.props.disableSuggestions ) {\n\t\t\tif ( value?.length ) {\n\t\t\t\t// If the new value is not empty we need to update with suggestions for it.\n\t\t\t\tthis.updateSuggestions( value );\n\t\t\t} else if ( __experimentalShowInitialSuggestions ) {\n\t\t\t\t// If the new value is empty and we can show initial suggestions, then show initial suggestions.\n\t\t\t\tthis.updateSuggestions();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.shouldShowInitialSuggestions() ) {\n\t\t\tthis.updateSuggestions();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.suggestionsRequest?.cancel?.();\n\t\tthis.suggestionsRequest = null;\n\t}\n\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\n\tshouldShowInitialSuggestions() {\n\t\tconst { __experimentalShowInitialSuggestions = false, value } =\n\t\t\tthis.props;\n\t\treturn (\n\t\t\t__experimentalShowInitialSuggestions && ! ( value && value.length )\n\t\t);\n\t}\n\n\tupdateSuggestions( value = '' ) {\n\t\tconst {\n\t\t\t__experimentalFetchLinkSuggestions: fetchLinkSuggestions,\n\t\t\t__experimentalHandleURLSuggestions: handleURLSuggestions,\n\t\t} = this.props;\n\n\t\tif ( ! fetchLinkSuggestions ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Initial suggestions may only show if there is no value\n\t\t// (note: this includes whitespace).\n\t\tconst isInitialSuggestions = ! value?.length;\n\n\t\t// Trim only now we've determined whether or not it originally had a \"length\"\n\t\t// (even if that value was all whitespace).\n\t\tvalue = value.trim();\n\n\t\t// Allow a suggestions request if:\n\t\t// - there are at least 2 characters in the search input (except manual searches where\n\t\t// search input length is not required to trigger a fetch)\n\t\t// - this is a direct entry (eg: a URL)\n\t\tif (\n\t\t\t! isInitialSuggestions &&\n\t\t\t( value.length < 2 || ( ! handleURLSuggestions && isURL( value ) ) )\n\t\t) {\n\t\t\tthis.suggestionsRequest?.cancel?.();\n\t\t\tthis.suggestionsRequest = null;\n\n\t\t\tthis.setState( {\n\t\t\t\tsuggestions: [],\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tsuggestionsValue: value,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: true,\n\t\t} );\n\n\t\tconst request = fetchLinkSuggestions( value, {\n\t\t\tisInitialSuggestions,\n\t\t} );\n\n\t\trequest\n\t\t\t.then( ( suggestions ) => {\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tsuggestionsValue: value,\n\t\t\t\t\tloading: false,\n\t\t\t\t\tshowSuggestions: !! suggestions.length,\n\t\t\t\t} );\n\n\t\t\t\tif ( !! suggestions.length ) {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t/* translators: %s: number of results. */\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\t__( 'No results.' ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tloading: false,\n\t\t\t\t} );\n\t\t\t} )\n\t\t\t.finally( () => {\n\t\t\t\t// If this is the current promise then reset the reference\n\t\t\t\t// to allow for checking if a new request is made.\n\t\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\t\tthis.suggestionsRequest = null;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// Note that this assignment is handled *before* the async search request\n\t\t// as a Promise always resolves on the next tick of the event loop.\n\t\tthis.suggestionsRequest = request;\n\t}\n\n\tonChange( event ) {\n\t\tthis.props.onChange( event.target.value );\n\t}\n\n\tonFocus() {\n\t\tconst { suggestions } = this.state;\n\t\tconst { disableSuggestions, value } = this.props;\n\n\t\t// When opening the link editor, if there's a value present, we want to load the suggestions pane with the results for this input search value\n\t\t// Don't re-run the suggestions on focus if there are already suggestions present (prevents searching again when tabbing between the input and buttons)\n\t\t// or there is already a request in progress.\n\t\tif (\n\t\t\tvalue &&\n\t\t\t! disableSuggestions &&\n\t\t\t! ( suggestions && suggestions.length ) &&\n\t\t\tthis.suggestionsRequest === null\n\t\t) {\n\t\t\t// Ensure the suggestions are updated with the current input value.\n\t\t\tthis.updateSuggestions( value );\n\t\t}\n\t}\n\n\tonKeyDown( event ) {\n\t\tthis.props.onKeyDown?.( event );\n\t\tconst { showSuggestions, selectedSuggestion, suggestions, loading } =\n\t\t\tthis.state;\n\n\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t// We shouldn't preventDefault to allow block arrow keys navigation.\n\t\tif ( ! showSuggestions || ! suggestions.length || loading ) {\n\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t// position.\n\t\t\t\tcase UP: {\n\t\t\t\t\tif ( 0 !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to position 0.\n\t\t\t\t\t\tevent.target.setSelectionRange( 0, 0 );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t// last position.\n\t\t\t\tcase DOWN: {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.props.value.length !== event.target.selectionStart\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to the last position.\n\t\t\t\t\t\tevent.target.setSelectionRange(\n\t\t\t\t\t\t\tthis.props.value.length,\n\t\t\t\t\t\t\tthis.props.value.length\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// Submitting while loading should trigger onSubmit.\n\t\t\t\tcase ENTER: {\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst suggestion =\n\t\t\tthis.state.suggestions[ this.state.selectedSuggestion ];\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst previousIndex = ! selectedSuggestion\n\t\t\t\t\t? suggestions.length - 1\n\t\t\t\t\t: selectedSuggestion - 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: previousIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DOWN: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex =\n\t\t\t\t\tselectedSuggestion === null ||\n\t\t\t\t\tselectedSuggestion === suggestions.length - 1\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: selectedSuggestion + 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: nextIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TAB: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\tthis.props.speak( __( 'Link selected.' ) );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ENTER: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tthis.props.onSubmit( suggestion, event );\n\t\t\t\t\t}\n\t\t\t\t} else if ( this.props.onSubmit ) {\n\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tselectLink( suggestion ) {\n\t\tthis.props.onChange( suggestion.url, suggestion );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\t}\n\n\thandleOnClick( suggestion ) {\n\t\tthis.selectLink( suggestion );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\tthis.inputRef.current.focus();\n\t}\n\n\tstatic getDerivedStateFromProps(\n\t\t{\n\t\t\tvalue,\n\t\t\tinstanceId,\n\t\t\tdisableSuggestions,\n\t\t\t__experimentalShowInitialSuggestions = false,\n\t\t},\n\t\t{ showSuggestions }\n\t) {\n\t\tlet shouldShowSuggestions = showSuggestions;\n\n\t\tconst hasValue = value && value.length;\n\n\t\tif ( ! __experimentalShowInitialSuggestions && ! hasValue ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\tif ( disableSuggestions === true ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\treturn {\n\t\t\tshowSuggestions: shouldShowSuggestions,\n\t\t\tsuggestionsListboxId: `block-editor-url-input-suggestions-${ instanceId }`,\n\t\t\tsuggestionOptionIdPrefix: `block-editor-url-input-suggestion-${ instanceId }`,\n\t\t};\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ this.renderControl() }\n\t\t\t\t{ this.renderSuggestions() }\n\t\t\t</>\n\t\t);\n\t}\n\n\trenderControl() {\n\t\tconst {\n\t\t\t/** Start opting into the new margin-free styles that will become the default in a future version. */\n\t\t\t__nextHasNoMarginBottom = false,\n\t\t\tlabel = null,\n\t\t\tclassName,\n\t\t\tisFullWidth,\n\t\t\tinstanceId,\n\t\t\tplaceholder = __( 'Paste URL or type to search' ),\n\t\t\t__experimentalRenderControl: renderControl,\n\t\t\tvalue = '',\n\t\t\thideLabelFromVision = false,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tloading,\n\t\t\tshowSuggestions,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t} = this.state;\n\n\t\tconst inputId = `url-input-control-${ instanceId }`;\n\n\t\tconst controlProps = {\n\t\t\tid: inputId, // Passes attribute to label for the for attribute\n\t\t\tlabel,\n\t\t\tclassName: clsx( 'block-editor-url-input', className, {\n\t\t\t\t'is-full-width': isFullWidth,\n\t\t\t} ),\n\t\t\thideLabelFromVision,\n\t\t};\n\n\t\tconst inputProps = {\n\t\t\tid: inputId,\n\t\t\tvalue,\n\t\t\trequired: true,\n\t\t\tclassName: 'block-editor-url-input__input',\n\t\t\ttype: 'text',\n\t\t\tonChange: this.onChange,\n\t\t\tonFocus: this.onFocus,\n\t\t\tplaceholder,\n\t\t\tonKeyDown: this.onKeyDown,\n\t\t\trole: 'combobox',\n\t\t\t'aria-label': label ? undefined : __( 'URL' ), // Ensure input always has an accessible label\n\t\t\t'aria-expanded': showSuggestions,\n\t\t\t'aria-autocomplete': 'list',\n\t\t\t'aria-owns': suggestionsListboxId,\n\t\t\t'aria-activedescendant':\n\t\t\t\tselectedSuggestion !== null\n\t\t\t\t\t? `${ suggestionOptionIdPrefix }-${ selectedSuggestion }`\n\t\t\t\t\t: undefined,\n\t\t\tref: this.inputRef,\n\t\t};\n\n\t\tif ( renderControl ) {\n\t\t\treturn renderControl( controlProps, inputProps, loading );\n\t\t}\n\n\t\tif ( ! __nextHasNoMarginBottom ) {\n\t\t\tdeprecated( 'Bottom margin styles for wp.blockEditor.URLInput', {\n\t\t\t\tsince: '6.2',\n\t\t\t\tversion: '6.5',\n\t\t\t\thint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version',\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<BaseControl\n\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t{ ...controlProps }\n\t\t\t>\n\t\t\t\t<input { ...inputProps } />\n\t\t\t\t{ loading && <Spinner /> }\n\t\t\t</BaseControl>\n\t\t);\n\t}\n\n\trenderSuggestions() {\n\t\tconst {\n\t\t\tclassName,\n\t\t\t__experimentalRenderSuggestions: renderSuggestions,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tshowSuggestions,\n\t\t\tsuggestions,\n\t\t\tsuggestionsValue,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t\tloading,\n\t\t} = this.state;\n\n\t\tif ( ! showSuggestions || suggestions.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst suggestionsListProps = {\n\t\t\tid: suggestionsListboxId,\n\t\t\tref: this.autocompleteRef,\n\t\t\trole: 'listbox',\n\t\t};\n\n\t\tconst buildSuggestionItemProps = ( suggestion, index ) => {\n\t\t\treturn {\n\t\t\t\trole: 'option',\n\t\t\t\ttabIndex: '-1',\n\t\t\t\tid: `${ suggestionOptionIdPrefix }-${ index }`,\n\t\t\t\tref: this.bindSuggestionNode( index ),\n\t\t\t\t'aria-selected':\n\t\t\t\t\tindex === selectedSuggestion ? true : undefined,\n\t\t\t};\n\t\t};\n\n\t\tif ( isFunction( renderSuggestions ) ) {\n\t\t\treturn renderSuggestions( {\n\t\t\t\tsuggestions,\n\t\t\t\tselectedSuggestion,\n\t\t\t\tsuggestionsListProps,\n\t\t\t\tbuildSuggestionItemProps,\n\t\t\t\tisLoading: loading,\n\t\t\t\thandleSuggestionClick: this.handleOnClick,\n\t\t\t\tisInitialSuggestions: ! suggestionsValue?.length,\n\t\t\t\tcurrentInputValue: suggestionsValue,\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<Popover placement=\"bottom\" focusOnMount={ false }>\n\t\t\t\t<div\n\t\t\t\t\t{ ...suggestionsListProps }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'block-editor-url-input__suggestions',\n\t\t\t\t\t\t`${ className }__suggestions`\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion, index ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{ ...buildSuggestionItemProps( suggestion, index ) }\n\t\t\t\t\t\t\tkey={ suggestion.id }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'block-editor-url-input__suggestion',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ () => this.handleOnClick( suggestion ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ suggestion.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) ) }\n\t\t\t\t</div>\n\t\t\t</Popover>\n\t\t);\n\t}\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-input/README.md\n */\nexport default compose(\n\twithSafeTimeout,\n\twithSpokenMessages,\n\twithInstanceId,\n\twithSelect( ( select, props ) => {\n\t\t// If a link suggestions handler is already provided then\n\t\t// bail.\n\t\tif ( isFunction( props.__experimentalFetchLinkSuggestions ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\t__experimentalFetchLinkSuggestions:\n\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t};\n\t} )\n)( URLInput );\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_element","_keycodes","_components","_compose","_data","_url","_store","_jsxRuntime","_react","isFunction","maybeFunc","URLInput","Component","constructor","props","onChange","bind","onFocus","onKeyDown","selectLink","handleOnClick","bindSuggestionNode","autocompleteRef","createRef","inputRef","updateSuggestions","debounce","suggestionNodes","suggestionsRequest","state","suggestions","showSuggestions","suggestionsValue","selectedSuggestion","suggestionsListboxId","suggestionOptionIdPrefix","componentDidUpdate","prevProps","value","__experimentalShowInitialSuggestions","scrollIntoView","behavior","block","inline","disableSuggestions","length","componentDidMount","shouldShowInitialSuggestions","componentWillUnmount","cancel","index","ref","__experimentalFetchLinkSuggestions","fetchLinkSuggestions","__experimentalHandleURLSuggestions","handleURLSuggestions","isInitialSuggestions","trim","isURL","setState","loading","request","then","debouncedSpeak","sprintf","_n","__","catch","finally","event","target","keyCode","UP","selectionStart","preventDefault","setSelectionRange","DOWN","ENTER","onSubmit","suggestion","previousIndex","nextIndex","TAB","speak","url","current","focus","getDerivedStateFromProps","instanceId","shouldShowSuggestions","hasValue","render","jsxs","Fragment","children","renderControl","renderSuggestions","label","className","isFullWidth","placeholder","__experimentalRenderControl","hideLabelFromVision","inputId","controlProps","id","clsx","inputProps","required","type","role","undefined","BaseControl","__nextHasNoMarginBottom","jsx","Spinner","__experimentalRenderSuggestions","suggestionsListProps","buildSuggestionItemProps","tabIndex","isLoading","handleSuggestionClick","currentInputValue","Popover","placement","focusOnMount","map","createElement","Button","key","onClick","title","_default","exports","default","compose","withSafeTimeout","withSpokenMessages","withInstanceId","withSelect","select","getSettings","blockEditorStore"],"sources":["@wordpress/block-editor/src/components/url-input/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf, _n } from '@wordpress/i18n';\nimport { Component, createRef } from '@wordpress/element';\nimport { UP, DOWN, ENTER, TAB } from '@wordpress/keycodes';\nimport {\n\tBaseControl,\n\tButton,\n\tSpinner,\n\twithSpokenMessages,\n\tPopover,\n} from '@wordpress/components';\nimport {\n\tcompose,\n\tdebounce,\n\twithInstanceId,\n\twithSafeTimeout,\n} from '@wordpress/compose';\nimport { withSelect } from '@wordpress/data';\nimport { isURL } from '@wordpress/url';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Whether the argument is a function.\n *\n * @param {*} maybeFunc The argument to check.\n * @return {boolean} True if the argument is a function, false otherwise.\n */\nfunction isFunction( maybeFunc ) {\n\treturn typeof maybeFunc === 'function';\n}\n\nclass URLInput extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.onChange = this.onChange.bind( this );\n\t\tthis.onFocus = this.onFocus.bind( this );\n\t\tthis.onKeyDown = this.onKeyDown.bind( this );\n\t\tthis.selectLink = this.selectLink.bind( this );\n\t\tthis.handleOnClick = this.handleOnClick.bind( this );\n\t\tthis.bindSuggestionNode = this.bindSuggestionNode.bind( this );\n\t\tthis.autocompleteRef = props.autocompleteRef || createRef();\n\t\tthis.inputRef = createRef();\n\t\tthis.updateSuggestions = debounce(\n\t\t\tthis.updateSuggestions.bind( this ),\n\t\t\t200\n\t\t);\n\n\t\tthis.suggestionNodes = [];\n\n\t\tthis.suggestionsRequest = null;\n\n\t\tthis.state = {\n\t\t\tsuggestions: [],\n\t\t\tshowSuggestions: false,\n\t\t\tsuggestionsValue: null,\n\t\t\tselectedSuggestion: null,\n\t\t\tsuggestionsListboxId: '',\n\t\t\tsuggestionOptionIdPrefix: '',\n\t\t};\n\t}\n\n\tcomponentDidUpdate( prevProps ) {\n\t\tconst { showSuggestions, selectedSuggestion } = this.state;\n\t\tconst { value, __experimentalShowInitialSuggestions = false } =\n\t\t\tthis.props;\n\n\t\t// Only have to worry about scrolling selected suggestion into view\n\t\t// when already expanded.\n\t\tif (\n\t\t\tshowSuggestions &&\n\t\t\tselectedSuggestion !== null &&\n\t\t\tthis.suggestionNodes[ selectedSuggestion ]\n\t\t) {\n\t\t\tthis.suggestionNodes[ selectedSuggestion ].scrollIntoView( {\n\t\t\t\tbehavior: 'instant',\n\t\t\t\tblock: 'nearest',\n\t\t\t\tinline: 'nearest',\n\t\t\t} );\n\t\t}\n\n\t\t// Update suggestions when the value changes.\n\t\tif ( prevProps.value !== value && ! this.props.disableSuggestions ) {\n\t\t\tif ( value?.length ) {\n\t\t\t\t// If the new value is not empty we need to update with suggestions for it.\n\t\t\t\tthis.updateSuggestions( value );\n\t\t\t} else if ( __experimentalShowInitialSuggestions ) {\n\t\t\t\t// If the new value is empty and we can show initial suggestions, then show initial suggestions.\n\t\t\t\tthis.updateSuggestions();\n\t\t\t}\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tif ( this.shouldShowInitialSuggestions() ) {\n\t\t\tthis.updateSuggestions();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.suggestionsRequest?.cancel?.();\n\t\tthis.suggestionsRequest = null;\n\t}\n\n\tbindSuggestionNode( index ) {\n\t\treturn ( ref ) => {\n\t\t\tthis.suggestionNodes[ index ] = ref;\n\t\t};\n\t}\n\n\tshouldShowInitialSuggestions() {\n\t\tconst { __experimentalShowInitialSuggestions = false, value } =\n\t\t\tthis.props;\n\t\treturn (\n\t\t\t__experimentalShowInitialSuggestions && ! ( value && value.length )\n\t\t);\n\t}\n\n\tupdateSuggestions( value = '' ) {\n\t\tconst {\n\t\t\t__experimentalFetchLinkSuggestions: fetchLinkSuggestions,\n\t\t\t__experimentalHandleURLSuggestions: handleURLSuggestions,\n\t\t} = this.props;\n\n\t\tif ( ! fetchLinkSuggestions ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Initial suggestions may only show if there is no value\n\t\t// (note: this includes whitespace).\n\t\tconst isInitialSuggestions = ! value?.length;\n\n\t\t// Trim only now we've determined whether or not it originally had a \"length\"\n\t\t// (even if that value was all whitespace).\n\t\tvalue = value.trim();\n\n\t\t// Allow a suggestions request if:\n\t\t// - there are at least 2 characters in the search input (except manual searches where\n\t\t// search input length is not required to trigger a fetch)\n\t\t// - this is a direct entry (eg: a URL)\n\t\tif (\n\t\t\t! isInitialSuggestions &&\n\t\t\t( value.length < 2 || ( ! handleURLSuggestions && isURL( value ) ) )\n\t\t) {\n\t\t\tthis.suggestionsRequest?.cancel?.();\n\t\t\tthis.suggestionsRequest = null;\n\n\t\t\tthis.setState( {\n\t\t\t\tsuggestions: [],\n\t\t\t\tshowSuggestions: false,\n\t\t\t\tsuggestionsValue: value,\n\t\t\t\tselectedSuggestion: null,\n\t\t\t\tloading: false,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tloading: true,\n\t\t} );\n\n\t\tconst request = fetchLinkSuggestions( value, {\n\t\t\tisInitialSuggestions,\n\t\t} );\n\n\t\trequest\n\t\t\t.then( ( suggestions ) => {\n\t\t\t\t// A fetch Promise doesn't have an abort option. It's mimicked by\n\t\t\t\t// comparing the request reference in on the instance, which is\n\t\t\t\t// reset or deleted on subsequent requests or unmounting.\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tsuggestionsValue: value,\n\t\t\t\t\tloading: false,\n\t\t\t\t\tshowSuggestions: !! suggestions.length,\n\t\t\t\t} );\n\n\t\t\t\tif ( !! suggestions.length ) {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t/* translators: %s: number of results. */\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tsuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.debouncedSpeak(\n\t\t\t\t\t\t__( 'No results.' ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.catch( () => {\n\t\t\t\tif ( this.suggestionsRequest !== request ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setState( {\n\t\t\t\t\tloading: false,\n\t\t\t\t} );\n\t\t\t} )\n\t\t\t.finally( () => {\n\t\t\t\t// If this is the current promise then reset the reference\n\t\t\t\t// to allow for checking if a new request is made.\n\t\t\t\tif ( this.suggestionsRequest === request ) {\n\t\t\t\t\tthis.suggestionsRequest = null;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t// Note that this assignment is handled *before* the async search request\n\t\t// as a Promise always resolves on the next tick of the event loop.\n\t\tthis.suggestionsRequest = request;\n\t}\n\n\tonChange( event ) {\n\t\tthis.props.onChange( event.target.value );\n\t}\n\n\tonFocus() {\n\t\tconst { suggestions } = this.state;\n\t\tconst { disableSuggestions, value } = this.props;\n\n\t\t// When opening the link editor, if there's a value present, we want to load the suggestions pane with the results for this input search value\n\t\t// Don't re-run the suggestions on focus if there are already suggestions present (prevents searching again when tabbing between the input and buttons)\n\t\t// or there is already a request in progress.\n\t\tif (\n\t\t\tvalue &&\n\t\t\t! disableSuggestions &&\n\t\t\t! ( suggestions && suggestions.length ) &&\n\t\t\tthis.suggestionsRequest === null\n\t\t) {\n\t\t\t// Ensure the suggestions are updated with the current input value.\n\t\t\tthis.updateSuggestions( value );\n\t\t}\n\t}\n\n\tonKeyDown( event ) {\n\t\tthis.props.onKeyDown?.( event );\n\t\tconst { showSuggestions, selectedSuggestion, suggestions, loading } =\n\t\t\tthis.state;\n\n\t\t// If the suggestions are not shown or loading, we shouldn't handle the arrow keys\n\t\t// We shouldn't preventDefault to allow block arrow keys navigation.\n\t\tif ( ! showSuggestions || ! suggestions.length || loading ) {\n\t\t\t// In the Windows version of Firefox the up and down arrows don't move the caret\n\t\t\t// within an input field like they do for Mac Firefox/Chrome/Safari. This causes\n\t\t\t// a form of focus trapping that is disruptive to the user experience. This disruption\n\t\t\t// only happens if the caret is not in the first or last position in the text input.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\t// When UP is pressed, if the caret is at the start of the text, move it to the 0\n\t\t\t\t// position.\n\t\t\t\tcase UP: {\n\t\t\t\t\tif ( 0 !== event.target.selectionStart ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to position 0.\n\t\t\t\t\t\tevent.target.setSelectionRange( 0, 0 );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// When DOWN is pressed, if the caret is not at the end of the text, move it to the\n\t\t\t\t// last position.\n\t\t\t\tcase DOWN: {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.props.value.length !== event.target.selectionStart\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Set the input caret to the last position.\n\t\t\t\t\t\tevent.target.setSelectionRange(\n\t\t\t\t\t\t\tthis.props.value.length,\n\t\t\t\t\t\t\tthis.props.value.length\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// Submitting while loading should trigger onSubmit.\n\t\t\t\tcase ENTER: {\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst suggestion =\n\t\t\tthis.state.suggestions[ this.state.selectedSuggestion ];\n\n\t\tswitch ( event.keyCode ) {\n\t\t\tcase UP: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst previousIndex = ! selectedSuggestion\n\t\t\t\t\t? suggestions.length - 1\n\t\t\t\t\t: selectedSuggestion - 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: previousIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DOWN: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex =\n\t\t\t\t\tselectedSuggestion === null ||\n\t\t\t\t\tselectedSuggestion === suggestions.length - 1\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: selectedSuggestion + 1;\n\t\t\t\tthis.setState( {\n\t\t\t\t\tselectedSuggestion: nextIndex,\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase TAB: {\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\t\t\t\t\t// Announce a link has been selected when tabbing away from the input field.\n\t\t\t\t\tthis.props.speak( __( 'Link selected.' ) );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase ENTER: {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif ( this.state.selectedSuggestion !== null ) {\n\t\t\t\t\tthis.selectLink( suggestion );\n\n\t\t\t\t\tif ( this.props.onSubmit ) {\n\t\t\t\t\t\tthis.props.onSubmit( suggestion, event );\n\t\t\t\t\t}\n\t\t\t\t} else if ( this.props.onSubmit ) {\n\t\t\t\t\tthis.props.onSubmit( null, event );\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tselectLink( suggestion ) {\n\t\tthis.props.onChange( suggestion.url, suggestion );\n\t\tthis.setState( {\n\t\t\tselectedSuggestion: null,\n\t\t\tshowSuggestions: false,\n\t\t} );\n\t}\n\n\thandleOnClick( suggestion ) {\n\t\tthis.selectLink( suggestion );\n\t\t// Move focus to the input field when a link suggestion is clicked.\n\t\tthis.inputRef.current.focus();\n\t}\n\n\tstatic getDerivedStateFromProps(\n\t\t{\n\t\t\tvalue,\n\t\t\tinstanceId,\n\t\t\tdisableSuggestions,\n\t\t\t__experimentalShowInitialSuggestions = false,\n\t\t},\n\t\t{ showSuggestions }\n\t) {\n\t\tlet shouldShowSuggestions = showSuggestions;\n\n\t\tconst hasValue = value && value.length;\n\n\t\tif ( ! __experimentalShowInitialSuggestions && ! hasValue ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\tif ( disableSuggestions === true ) {\n\t\t\tshouldShowSuggestions = false;\n\t\t}\n\n\t\treturn {\n\t\t\tshowSuggestions: shouldShowSuggestions,\n\t\t\tsuggestionsListboxId: `block-editor-url-input-suggestions-${ instanceId }`,\n\t\t\tsuggestionOptionIdPrefix: `block-editor-url-input-suggestion-${ instanceId }`,\n\t\t};\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ this.renderControl() }\n\t\t\t\t{ this.renderSuggestions() }\n\t\t\t</>\n\t\t);\n\t}\n\n\trenderControl() {\n\t\tconst {\n\t\t\tlabel = null,\n\t\t\tclassName,\n\t\t\tisFullWidth,\n\t\t\tinstanceId,\n\t\t\tplaceholder = __( 'Paste URL or type to search' ),\n\t\t\t__experimentalRenderControl: renderControl,\n\t\t\tvalue = '',\n\t\t\thideLabelFromVision = false,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tloading,\n\t\t\tshowSuggestions,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t} = this.state;\n\n\t\tconst inputId = `url-input-control-${ instanceId }`;\n\n\t\tconst controlProps = {\n\t\t\tid: inputId, // Passes attribute to label for the for attribute\n\t\t\tlabel,\n\t\t\tclassName: clsx( 'block-editor-url-input', className, {\n\t\t\t\t'is-full-width': isFullWidth,\n\t\t\t} ),\n\t\t\thideLabelFromVision,\n\t\t};\n\n\t\tconst inputProps = {\n\t\t\tid: inputId,\n\t\t\tvalue,\n\t\t\trequired: true,\n\t\t\tclassName: 'block-editor-url-input__input',\n\t\t\ttype: 'text',\n\t\t\tonChange: this.onChange,\n\t\t\tonFocus: this.onFocus,\n\t\t\tplaceholder,\n\t\t\tonKeyDown: this.onKeyDown,\n\t\t\trole: 'combobox',\n\t\t\t'aria-label': label ? undefined : __( 'URL' ), // Ensure input always has an accessible label\n\t\t\t'aria-expanded': showSuggestions,\n\t\t\t'aria-autocomplete': 'list',\n\t\t\t'aria-owns': suggestionsListboxId,\n\t\t\t'aria-activedescendant':\n\t\t\t\tselectedSuggestion !== null\n\t\t\t\t\t? `${ suggestionOptionIdPrefix }-${ selectedSuggestion }`\n\t\t\t\t\t: undefined,\n\t\t\tref: this.inputRef,\n\t\t};\n\n\t\tif ( renderControl ) {\n\t\t\treturn renderControl( controlProps, inputProps, loading );\n\t\t}\n\n\t\treturn (\n\t\t\t<BaseControl __nextHasNoMarginBottom { ...controlProps }>\n\t\t\t\t<input { ...inputProps } />\n\t\t\t\t{ loading && <Spinner /> }\n\t\t\t</BaseControl>\n\t\t);\n\t}\n\n\trenderSuggestions() {\n\t\tconst {\n\t\t\tclassName,\n\t\t\t__experimentalRenderSuggestions: renderSuggestions,\n\t\t} = this.props;\n\n\t\tconst {\n\t\t\tshowSuggestions,\n\t\t\tsuggestions,\n\t\t\tsuggestionsValue,\n\t\t\tselectedSuggestion,\n\t\t\tsuggestionsListboxId,\n\t\t\tsuggestionOptionIdPrefix,\n\t\t\tloading,\n\t\t} = this.state;\n\n\t\tif ( ! showSuggestions || suggestions.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst suggestionsListProps = {\n\t\t\tid: suggestionsListboxId,\n\t\t\tref: this.autocompleteRef,\n\t\t\trole: 'listbox',\n\t\t};\n\n\t\tconst buildSuggestionItemProps = ( suggestion, index ) => {\n\t\t\treturn {\n\t\t\t\trole: 'option',\n\t\t\t\ttabIndex: '-1',\n\t\t\t\tid: `${ suggestionOptionIdPrefix }-${ index }`,\n\t\t\t\tref: this.bindSuggestionNode( index ),\n\t\t\t\t'aria-selected':\n\t\t\t\t\tindex === selectedSuggestion ? true : undefined,\n\t\t\t};\n\t\t};\n\n\t\tif ( isFunction( renderSuggestions ) ) {\n\t\t\treturn renderSuggestions( {\n\t\t\t\tsuggestions,\n\t\t\t\tselectedSuggestion,\n\t\t\t\tsuggestionsListProps,\n\t\t\t\tbuildSuggestionItemProps,\n\t\t\t\tisLoading: loading,\n\t\t\t\thandleSuggestionClick: this.handleOnClick,\n\t\t\t\tisInitialSuggestions: ! suggestionsValue?.length,\n\t\t\t\tcurrentInputValue: suggestionsValue,\n\t\t\t} );\n\t\t}\n\n\t\treturn (\n\t\t\t<Popover placement=\"bottom\" focusOnMount={ false }>\n\t\t\t\t<div\n\t\t\t\t\t{ ...suggestionsListProps }\n\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t'block-editor-url-input__suggestions',\n\t\t\t\t\t\t`${ className }__suggestions`\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ suggestions.map( ( suggestion, index ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t{ ...buildSuggestionItemProps( suggestion, index ) }\n\t\t\t\t\t\t\tkey={ suggestion.id }\n\t\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t\t'block-editor-url-input__suggestion',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'is-selected': index === selectedSuggestion,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tonClick={ () => this.handleOnClick( suggestion ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ suggestion.title }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) ) }\n\t\t\t\t</div>\n\t\t\t</Popover>\n\t\t);\n\t}\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/url-input/README.md\n */\nexport default compose(\n\twithSafeTimeout,\n\twithSpokenMessages,\n\twithInstanceId,\n\twithSelect( ( select, props ) => {\n\t\t// If a link suggestions handler is already provided then\n\t\t// bail.\n\t\tif ( isFunction( props.__experimentalFetchLinkSuggestions ) ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\t__experimentalFetchLinkSuggestions:\n\t\t\t\tgetSettings().__experimentalFetchLinkSuggestions,\n\t\t};\n\t} )\n)( URLInput );\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -188,11 +188,13 @@ const ImageURLInputUI = ({
|
|
|
188
188
|
onChange: onSetNewTab,
|
|
189
189
|
checked: linkTarget === '_blank'
|
|
190
190
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextControl, {
|
|
191
|
+
__next40pxDefaultSize: true,
|
|
191
192
|
__nextHasNoMarginBottom: true,
|
|
192
193
|
label: (0, _i18n.__)('Link rel'),
|
|
193
194
|
value: rel !== null && rel !== void 0 ? rel : '',
|
|
194
195
|
onChange: onSetLinkRel
|
|
195
196
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextControl, {
|
|
197
|
+
__next40pxDefaultSize: true,
|
|
196
198
|
__nextHasNoMarginBottom: true,
|
|
197
199
|
label: (0, _i18n.__)('Link CSS class'),
|
|
198
200
|
value: linkClass || '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_i18n","require","_element","_dom","_components","_icons","_index","_interopRequireDefault","_jsxRuntime","LINK_DESTINATION_NONE","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","NEW_TAB_REL","ImageURLInputUI","linkDestination","onChangeUrl","url","mediaType","mediaUrl","mediaLink","linkTarget","linkClass","rel","showLightboxSetting","lightboxEnabled","onSetLightbox","resetLightbox","isOpen","setIsOpen","useState","popoverAnchor","setPopoverAnchor","openLinkUI","isEditingLink","setIsEditingLink","urlInput","setUrlInput","autocompleteRef","useRef","wrapperRef","useEffect","current","nextFocusTarget","focus","focusable","find","startEditLink","stopEditLink","closeLinkUI","getUpdatedLinkTargetSettings","value","newLinkTarget","undefined","updatedRel","rels","split","forEach","relVal","includes","push","join","filter","length","onFocusOutside","event","autocompleteElement","contains","target","onSubmitLinkChange","selectedDestination","getLinkDestinations","destination","href","lightbox","enabled","preventDefault","onLinkRemove","linkDestinations","title","__","icon","image","page","onSetHref","linkDestinationInput","onSetNewTab","updatedLinkTarget","onSetLinkRel","onSetLinkClass","advancedOptions","jsxs","__experimentalVStack","spacing","children","jsx","ToggleControl","__nextHasNoMarginBottom","label","onChange","checked","TextControl","linkEditorValue","hideLightboxPanel","showLinkEditor","urlLabel","PopoverChildren","className","Icon","fullscreen","Button","linkOff","onClick","size","default","LinkEditor","onChangeInputValue","onSubmit","Fragment","LinkViewer","onEditLinkClick","ToolbarButton","linkIcon","ref","isActive","anchor","onClose","renderSettings","additionalControls","NavigableMenu","map","link","MenuItem","iconPosition","info","offset","exports","__experimentalImageURLInputUI"],"sources":["@wordpress/block-editor/src/components/url-popover/image-url-input-ui.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, useState } from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\nimport {\n\tToolbarButton,\n\tNavigableMenu,\n\tButton,\n\tMenuItem,\n\tToggleControl,\n\tTextControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport {\n\tIcon,\n\tlink as linkIcon,\n\timage,\n\tpage,\n\tfullscreen,\n\tlinkOff,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport URLPopover from './index';\n\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\n\nconst ImageURLInputUI = ( {\n\tlinkDestination,\n\tonChangeUrl,\n\turl,\n\tmediaType = 'image',\n\tmediaUrl,\n\tmediaLink,\n\tlinkTarget,\n\tlinkClass,\n\trel,\n\tshowLightboxSetting,\n\tlightboxEnabled,\n\tonSetLightbox,\n\tresetLightbox,\n} ) => {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst openLinkUI = () => {\n\t\tsetIsOpen( true );\n\t};\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState( false );\n\tconst [ urlInput, setUrlInput ] = useState( null );\n\n\tconst autocompleteRef = useRef( null );\n\tconst wrapperRef = useRef();\n\n\tuseEffect( () => {\n\t\tif ( ! wrapperRef.current ) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextFocusTarget =\n\t\t\tfocus.focusable.find( wrapperRef.current )[ 0 ] ||\n\t\t\twrapperRef.current;\n\t\tnextFocusTarget.focus();\n\t}, [ isEditingLink, url, lightboxEnabled ] );\n\n\tconst startEditLink = () => {\n\t\tif (\n\t\t\tlinkDestination === LINK_DESTINATION_MEDIA ||\n\t\t\tlinkDestination === LINK_DESTINATION_ATTACHMENT\n\t\t) {\n\t\t\tsetUrlInput( '' );\n\t\t}\n\t\tsetIsEditingLink( true );\n\t};\n\n\tconst stopEditLink = () => {\n\t\tsetIsEditingLink( false );\n\t};\n\n\tconst closeLinkUI = () => {\n\t\tsetUrlInput( null );\n\t\tstopEditLink();\n\t\tsetIsOpen( false );\n\t};\n\n\tconst getUpdatedLinkTargetSettings = ( value ) => {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel;\n\t\tif ( newLinkTarget ) {\n\t\t\tconst rels = ( rel ?? '' ).split( ' ' );\n\t\t\tNEW_TAB_REL.forEach( ( relVal ) => {\n\t\t\t\tif ( ! rels.includes( relVal ) ) {\n\t\t\t\t\trels.push( relVal );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tupdatedRel = rels.join( ' ' );\n\t\t} else {\n\t\t\tconst rels = ( rel ?? '' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.filter(\n\t\t\t\t\t( relVal ) => NEW_TAB_REL.includes( relVal ) === false\n\t\t\t\t);\n\t\t\tupdatedRel = rels.length ? rels.join( ' ' ) : undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t};\n\t};\n\n\tconst onFocusOutside = () => {\n\t\treturn ( event ) => {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onFocusOutside fails to detect that a click on a suggestion occurred in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tconst autocompleteElement = autocompleteRef.current;\n\t\t\tif (\n\t\t\t\tautocompleteElement &&\n\t\t\t\tautocompleteElement.contains( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsOpen( false );\n\t\t\tsetUrlInput( null );\n\t\t\tstopEditLink();\n\t\t};\n\t};\n\n\tconst onSubmitLinkChange = () => {\n\t\treturn ( event ) => {\n\t\t\tif ( urlInput ) {\n\t\t\t\t// It is possible the entered URL actually matches a named link destination.\n\t\t\t\t// This check will ensure our link destination is correct.\n\t\t\t\tconst selectedDestination =\n\t\t\t\t\tgetLinkDestinations().find(\n\t\t\t\t\t\t( destination ) => destination.url === urlInput\n\t\t\t\t\t)?.linkDestination || LINK_DESTINATION_CUSTOM;\n\n\t\t\t\tonChangeUrl( {\n\t\t\t\t\thref: urlInput,\n\t\t\t\t\tlinkDestination: selectedDestination,\n\t\t\t\t\tlightbox: { enabled: false },\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstopEditLink();\n\t\t\tsetUrlInput( null );\n\t\t\tevent.preventDefault();\n\t\t};\n\t};\n\n\tconst onLinkRemove = () => {\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\thref: '',\n\t\t} );\n\t};\n\n\tconst getLinkDestinations = () => {\n\t\tconst linkDestinations = [\n\t\t\t{\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t\ttitle: __( 'Link to image file' ),\n\t\t\t\turl: mediaType === 'image' ? mediaUrl : undefined,\n\t\t\t\ticon: image,\n\t\t\t},\n\t\t];\n\t\tif ( mediaType === 'image' && mediaLink ) {\n\t\t\tlinkDestinations.push( {\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t\ttitle: __( 'Link to attachment page' ),\n\t\t\t\turl: mediaType === 'image' ? mediaLink : undefined,\n\t\t\t\ticon: page,\n\t\t\t} );\n\t\t}\n\t\treturn linkDestinations;\n\t};\n\n\tconst onSetHref = ( value ) => {\n\t\tconst linkDestinations = getLinkDestinations();\n\t\tlet linkDestinationInput;\n\t\tif ( ! value ) {\n\t\t\tlinkDestinationInput = LINK_DESTINATION_NONE;\n\t\t} else {\n\t\t\tlinkDestinationInput = (\n\t\t\t\tlinkDestinations.find( ( destination ) => {\n\t\t\t\t\treturn destination.url === value;\n\t\t\t\t} ) || { linkDestination: LINK_DESTINATION_CUSTOM }\n\t\t\t).linkDestination;\n\t\t}\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: linkDestinationInput,\n\t\t\thref: value,\n\t\t} );\n\t};\n\n\tconst onSetNewTab = ( value ) => {\n\t\tconst updatedLinkTarget = getUpdatedLinkTargetSettings( value );\n\t\tonChangeUrl( updatedLinkTarget );\n\t};\n\n\tconst onSetLinkRel = ( value ) => {\n\t\tonChangeUrl( { rel: value } );\n\t};\n\n\tconst onSetLinkClass = ( value ) => {\n\t\tonChangeUrl( { linkClass: value } );\n\t};\n\n\tconst advancedOptions = (\n\t\t<VStack spacing=\"3\">\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\tonChange={ onSetNewTab }\n\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\tvalue={ rel ?? '' }\n\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link CSS class' ) }\n\t\t\t\tvalue={ linkClass || '' }\n\t\t\t\tonChange={ onSetLinkClass }\n\t\t\t/>\n\t\t</VStack>\n\t);\n\n\tconst linkEditorValue = urlInput !== null ? urlInput : url;\n\tconst hideLightboxPanel =\n\t\t! lightboxEnabled || ( lightboxEnabled && ! showLightboxSetting );\n\tconst showLinkEditor = ! linkEditorValue && hideLightboxPanel;\n\n\tconst urlLabel = (\n\t\tgetLinkDestinations().find(\n\t\t\t( destination ) => destination.linkDestination === linkDestination\n\t\t) || {}\n\t).title;\n\n\tconst PopoverChildren = () => {\n\t\tif (\n\t\t\tlightboxEnabled &&\n\t\t\tshowLightboxSetting &&\n\t\t\t! url &&\n\t\t\t! isEditingLink\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<div className=\"block-editor-url-popover__expand-on-click\">\n\t\t\t\t\t<Icon icon={ fullscreen } />\n\t\t\t\t\t<div className=\"text\">\n\t\t\t\t\t\t<p>{ __( 'Expand on click' ) }</p>\n\t\t\t\t\t\t<p className=\"description\">\n\t\t\t\t\t\t\t{ __( 'Scales the image with a lightbox effect' ) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Disable expand on click' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSetLightbox?.( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if ( ! url || isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<URLPopover.LinkEditor\n\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\tvalue={ linkEditorValue }\n\t\t\t\t\tonChangeInputValue={ setUrlInput }\n\t\t\t\t\tonSubmit={ onSubmitLinkChange() }\n\t\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t\t/>\n\t\t\t);\n\t\t} else if ( url && ! isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<URLPopover.LinkViewer\n\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\tonEditLinkClick={ startEditLink }\n\t\t\t\t\t\turlLabel={ urlLabel }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonLinkRemove();\n\t\t\t\t\t\t\tresetLightbox?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ linkIcon }\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t\tonClick={ openLinkUI }\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\tisActive={\n\t\t\t\t\t!! url || ( lightboxEnabled && showLightboxSetting )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<URLPopover\n\t\t\t\t\tref={ wrapperRef }\n\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\tonFocusOutside={ onFocusOutside() }\n\t\t\t\t\tonClose={ closeLinkUI }\n\t\t\t\t\trenderSettings={\n\t\t\t\t\t\thideLightboxPanel ? () => advancedOptions : null\n\t\t\t\t\t}\n\t\t\t\t\tadditionalControls={\n\t\t\t\t\t\tshowLinkEditor && (\n\t\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t\t{ getLinkDestinations().map( ( link ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ link.linkDestination }\n\t\t\t\t\t\t\t\t\t\ticon={ link.icon }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonSetHref( link.url );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ link.title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ showLightboxSetting && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey=\"expand-on-click\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__expand-on-click\"\n\t\t\t\t\t\t\t\t\t\ticon={ fullscreen }\n\t\t\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Scale the image with a lightbox effect.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonChangeUrl( {\n\t\t\t\t\t\t\t\t\t\t\t\tlinkDestination:\n\t\t\t\t\t\t\t\t\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t\t\t\t\t\t\t\t\t\thref: '',\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\tonSetLightbox?.( true );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Expand on click' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\toffset={ 13 }\n\t\t\t\t>\n\t\t\t\t\t{ PopoverChildren() }\n\t\t\t\t</URLPopover>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport { ImageURLInputUI as __experimentalImageURLInputUI };\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_i18n","require","_element","_dom","_components","_icons","_index","_interopRequireDefault","_jsxRuntime","LINK_DESTINATION_NONE","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","NEW_TAB_REL","ImageURLInputUI","linkDestination","onChangeUrl","url","mediaType","mediaUrl","mediaLink","linkTarget","linkClass","rel","showLightboxSetting","lightboxEnabled","onSetLightbox","resetLightbox","isOpen","setIsOpen","useState","popoverAnchor","setPopoverAnchor","openLinkUI","isEditingLink","setIsEditingLink","urlInput","setUrlInput","autocompleteRef","useRef","wrapperRef","useEffect","current","nextFocusTarget","focus","focusable","find","startEditLink","stopEditLink","closeLinkUI","getUpdatedLinkTargetSettings","value","newLinkTarget","undefined","updatedRel","rels","split","forEach","relVal","includes","push","join","filter","length","onFocusOutside","event","autocompleteElement","contains","target","onSubmitLinkChange","selectedDestination","getLinkDestinations","destination","href","lightbox","enabled","preventDefault","onLinkRemove","linkDestinations","title","__","icon","image","page","onSetHref","linkDestinationInput","onSetNewTab","updatedLinkTarget","onSetLinkRel","onSetLinkClass","advancedOptions","jsxs","__experimentalVStack","spacing","children","jsx","ToggleControl","__nextHasNoMarginBottom","label","onChange","checked","TextControl","__next40pxDefaultSize","linkEditorValue","hideLightboxPanel","showLinkEditor","urlLabel","PopoverChildren","className","Icon","fullscreen","Button","linkOff","onClick","size","default","LinkEditor","onChangeInputValue","onSubmit","Fragment","LinkViewer","onEditLinkClick","ToolbarButton","linkIcon","ref","isActive","anchor","onClose","renderSettings","additionalControls","NavigableMenu","map","link","MenuItem","iconPosition","info","offset","exports","__experimentalImageURLInputUI"],"sources":["@wordpress/block-editor/src/components/url-popover/image-url-input-ui.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useRef, useEffect, useState } from '@wordpress/element';\nimport { focus } from '@wordpress/dom';\nimport {\n\tToolbarButton,\n\tNavigableMenu,\n\tButton,\n\tMenuItem,\n\tToggleControl,\n\tTextControl,\n\t__experimentalVStack as VStack,\n} from '@wordpress/components';\nimport {\n\tIcon,\n\tlink as linkIcon,\n\timage,\n\tpage,\n\tfullscreen,\n\tlinkOff,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport URLPopover from './index';\n\nconst LINK_DESTINATION_NONE = 'none';\nconst LINK_DESTINATION_CUSTOM = 'custom';\nconst LINK_DESTINATION_MEDIA = 'media';\nconst LINK_DESTINATION_ATTACHMENT = 'attachment';\nconst NEW_TAB_REL = [ 'noreferrer', 'noopener' ];\n\nconst ImageURLInputUI = ( {\n\tlinkDestination,\n\tonChangeUrl,\n\turl,\n\tmediaType = 'image',\n\tmediaUrl,\n\tmediaLink,\n\tlinkTarget,\n\tlinkClass,\n\trel,\n\tshowLightboxSetting,\n\tlightboxEnabled,\n\tonSetLightbox,\n\tresetLightbox,\n} ) => {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\t// Use internal state instead of a ref to make sure that the component\n\t// re-renders when the popover's anchor updates.\n\tconst [ popoverAnchor, setPopoverAnchor ] = useState( null );\n\tconst openLinkUI = () => {\n\t\tsetIsOpen( true );\n\t};\n\n\tconst [ isEditingLink, setIsEditingLink ] = useState( false );\n\tconst [ urlInput, setUrlInput ] = useState( null );\n\n\tconst autocompleteRef = useRef( null );\n\tconst wrapperRef = useRef();\n\n\tuseEffect( () => {\n\t\tif ( ! wrapperRef.current ) {\n\t\t\treturn;\n\t\t}\n\t\tconst nextFocusTarget =\n\t\t\tfocus.focusable.find( wrapperRef.current )[ 0 ] ||\n\t\t\twrapperRef.current;\n\t\tnextFocusTarget.focus();\n\t}, [ isEditingLink, url, lightboxEnabled ] );\n\n\tconst startEditLink = () => {\n\t\tif (\n\t\t\tlinkDestination === LINK_DESTINATION_MEDIA ||\n\t\t\tlinkDestination === LINK_DESTINATION_ATTACHMENT\n\t\t) {\n\t\t\tsetUrlInput( '' );\n\t\t}\n\t\tsetIsEditingLink( true );\n\t};\n\n\tconst stopEditLink = () => {\n\t\tsetIsEditingLink( false );\n\t};\n\n\tconst closeLinkUI = () => {\n\t\tsetUrlInput( null );\n\t\tstopEditLink();\n\t\tsetIsOpen( false );\n\t};\n\n\tconst getUpdatedLinkTargetSettings = ( value ) => {\n\t\tconst newLinkTarget = value ? '_blank' : undefined;\n\n\t\tlet updatedRel;\n\t\tif ( newLinkTarget ) {\n\t\t\tconst rels = ( rel ?? '' ).split( ' ' );\n\t\t\tNEW_TAB_REL.forEach( ( relVal ) => {\n\t\t\t\tif ( ! rels.includes( relVal ) ) {\n\t\t\t\t\trels.push( relVal );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tupdatedRel = rels.join( ' ' );\n\t\t} else {\n\t\t\tconst rels = ( rel ?? '' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.filter(\n\t\t\t\t\t( relVal ) => NEW_TAB_REL.includes( relVal ) === false\n\t\t\t\t);\n\t\t\tupdatedRel = rels.length ? rels.join( ' ' ) : undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tlinkTarget: newLinkTarget,\n\t\t\trel: updatedRel,\n\t\t};\n\t};\n\n\tconst onFocusOutside = () => {\n\t\treturn ( event ) => {\n\t\t\t// The autocomplete suggestions list renders in a separate popover (in a portal),\n\t\t\t// so onFocusOutside fails to detect that a click on a suggestion occurred in the\n\t\t\t// LinkContainer. Detect clicks on autocomplete suggestions using a ref here, and\n\t\t\t// return to avoid the popover being closed.\n\t\t\tconst autocompleteElement = autocompleteRef.current;\n\t\t\tif (\n\t\t\t\tautocompleteElement &&\n\t\t\t\tautocompleteElement.contains( event.target )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetIsOpen( false );\n\t\t\tsetUrlInput( null );\n\t\t\tstopEditLink();\n\t\t};\n\t};\n\n\tconst onSubmitLinkChange = () => {\n\t\treturn ( event ) => {\n\t\t\tif ( urlInput ) {\n\t\t\t\t// It is possible the entered URL actually matches a named link destination.\n\t\t\t\t// This check will ensure our link destination is correct.\n\t\t\t\tconst selectedDestination =\n\t\t\t\t\tgetLinkDestinations().find(\n\t\t\t\t\t\t( destination ) => destination.url === urlInput\n\t\t\t\t\t)?.linkDestination || LINK_DESTINATION_CUSTOM;\n\n\t\t\t\tonChangeUrl( {\n\t\t\t\t\thref: urlInput,\n\t\t\t\t\tlinkDestination: selectedDestination,\n\t\t\t\t\tlightbox: { enabled: false },\n\t\t\t\t} );\n\t\t\t}\n\t\t\tstopEditLink();\n\t\t\tsetUrlInput( null );\n\t\t\tevent.preventDefault();\n\t\t};\n\t};\n\n\tconst onLinkRemove = () => {\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: LINK_DESTINATION_NONE,\n\t\t\thref: '',\n\t\t} );\n\t};\n\n\tconst getLinkDestinations = () => {\n\t\tconst linkDestinations = [\n\t\t\t{\n\t\t\t\tlinkDestination: LINK_DESTINATION_MEDIA,\n\t\t\t\ttitle: __( 'Link to image file' ),\n\t\t\t\turl: mediaType === 'image' ? mediaUrl : undefined,\n\t\t\t\ticon: image,\n\t\t\t},\n\t\t];\n\t\tif ( mediaType === 'image' && mediaLink ) {\n\t\t\tlinkDestinations.push( {\n\t\t\t\tlinkDestination: LINK_DESTINATION_ATTACHMENT,\n\t\t\t\ttitle: __( 'Link to attachment page' ),\n\t\t\t\turl: mediaType === 'image' ? mediaLink : undefined,\n\t\t\t\ticon: page,\n\t\t\t} );\n\t\t}\n\t\treturn linkDestinations;\n\t};\n\n\tconst onSetHref = ( value ) => {\n\t\tconst linkDestinations = getLinkDestinations();\n\t\tlet linkDestinationInput;\n\t\tif ( ! value ) {\n\t\t\tlinkDestinationInput = LINK_DESTINATION_NONE;\n\t\t} else {\n\t\t\tlinkDestinationInput = (\n\t\t\t\tlinkDestinations.find( ( destination ) => {\n\t\t\t\t\treturn destination.url === value;\n\t\t\t\t} ) || { linkDestination: LINK_DESTINATION_CUSTOM }\n\t\t\t).linkDestination;\n\t\t}\n\t\tonChangeUrl( {\n\t\t\tlinkDestination: linkDestinationInput,\n\t\t\thref: value,\n\t\t} );\n\t};\n\n\tconst onSetNewTab = ( value ) => {\n\t\tconst updatedLinkTarget = getUpdatedLinkTargetSettings( value );\n\t\tonChangeUrl( updatedLinkTarget );\n\t};\n\n\tconst onSetLinkRel = ( value ) => {\n\t\tonChangeUrl( { rel: value } );\n\t};\n\n\tconst onSetLinkClass = ( value ) => {\n\t\tonChangeUrl( { linkClass: value } );\n\t};\n\n\tconst advancedOptions = (\n\t\t<VStack spacing=\"3\">\n\t\t\t<ToggleControl\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\tonChange={ onSetNewTab }\n\t\t\t\tchecked={ linkTarget === '_blank' }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link rel' ) }\n\t\t\t\tvalue={ rel ?? '' }\n\t\t\t\tonChange={ onSetLinkRel }\n\t\t\t/>\n\t\t\t<TextControl\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\tlabel={ __( 'Link CSS class' ) }\n\t\t\t\tvalue={ linkClass || '' }\n\t\t\t\tonChange={ onSetLinkClass }\n\t\t\t/>\n\t\t</VStack>\n\t);\n\n\tconst linkEditorValue = urlInput !== null ? urlInput : url;\n\tconst hideLightboxPanel =\n\t\t! lightboxEnabled || ( lightboxEnabled && ! showLightboxSetting );\n\tconst showLinkEditor = ! linkEditorValue && hideLightboxPanel;\n\n\tconst urlLabel = (\n\t\tgetLinkDestinations().find(\n\t\t\t( destination ) => destination.linkDestination === linkDestination\n\t\t) || {}\n\t).title;\n\n\tconst PopoverChildren = () => {\n\t\tif (\n\t\t\tlightboxEnabled &&\n\t\t\tshowLightboxSetting &&\n\t\t\t! url &&\n\t\t\t! isEditingLink\n\t\t) {\n\t\t\treturn (\n\t\t\t\t<div className=\"block-editor-url-popover__expand-on-click\">\n\t\t\t\t\t<Icon icon={ fullscreen } />\n\t\t\t\t\t<div className=\"text\">\n\t\t\t\t\t\t<p>{ __( 'Expand on click' ) }</p>\n\t\t\t\t\t\t<p className=\"description\">\n\t\t\t\t\t\t\t{ __( 'Scales the image with a lightbox effect' ) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Disable expand on click' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonSetLightbox?.( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t);\n\t\t} else if ( ! url || isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<URLPopover.LinkEditor\n\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\tvalue={ linkEditorValue }\n\t\t\t\t\tonChangeInputValue={ setUrlInput }\n\t\t\t\t\tonSubmit={ onSubmitLinkChange() }\n\t\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t\t/>\n\t\t\t);\n\t\t} else if ( url && ! isEditingLink ) {\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t<URLPopover.LinkViewer\n\t\t\t\t\t\tclassName=\"block-editor-format-toolbar__link-container-content\"\n\t\t\t\t\t\turl={ url }\n\t\t\t\t\t\tonEditLinkClick={ startEditLink }\n\t\t\t\t\t\turlLabel={ urlLabel }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ linkOff }\n\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\tonLinkRemove();\n\t\t\t\t\t\t\tresetLightbox?.();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t}\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarButton\n\t\t\t\ticon={ linkIcon }\n\t\t\t\tclassName=\"components-toolbar__control\"\n\t\t\t\tlabel={ __( 'Link' ) }\n\t\t\t\taria-expanded={ isOpen }\n\t\t\t\tonClick={ openLinkUI }\n\t\t\t\tref={ setPopoverAnchor }\n\t\t\t\tisActive={\n\t\t\t\t\t!! url || ( lightboxEnabled && showLightboxSetting )\n\t\t\t\t}\n\t\t\t/>\n\t\t\t{ isOpen && (\n\t\t\t\t<URLPopover\n\t\t\t\t\tref={ wrapperRef }\n\t\t\t\t\tanchor={ popoverAnchor }\n\t\t\t\t\tonFocusOutside={ onFocusOutside() }\n\t\t\t\t\tonClose={ closeLinkUI }\n\t\t\t\t\trenderSettings={\n\t\t\t\t\t\thideLightboxPanel ? () => advancedOptions : null\n\t\t\t\t\t}\n\t\t\t\t\tadditionalControls={\n\t\t\t\t\t\tshowLinkEditor && (\n\t\t\t\t\t\t\t<NavigableMenu>\n\t\t\t\t\t\t\t\t{ getLinkDestinations().map( ( link ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey={ link.linkDestination }\n\t\t\t\t\t\t\t\t\t\ticon={ link.icon }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonSetHref( link.url );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ link.title }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t\t{ showLightboxSetting && (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\tkey=\"expand-on-click\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-url-popover__expand-on-click\"\n\t\t\t\t\t\t\t\t\t\ticon={ fullscreen }\n\t\t\t\t\t\t\t\t\t\tinfo={ __(\n\t\t\t\t\t\t\t\t\t\t\t'Scale the image with a lightbox effect.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\tsetUrlInput( null );\n\t\t\t\t\t\t\t\t\t\t\tonChangeUrl( {\n\t\t\t\t\t\t\t\t\t\t\t\tlinkDestination:\n\t\t\t\t\t\t\t\t\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t\t\t\t\t\t\t\t\t\thref: '',\n\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\tonSetLightbox?.( true );\n\t\t\t\t\t\t\t\t\t\t\tstopEditLink();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Expand on click' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\toffset={ 13 }\n\t\t\t\t>\n\t\t\t\t\t{ PopoverChildren() }\n\t\t\t\t</URLPopover>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nexport { ImageURLInputUI as __experimentalImageURLInputUI };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -34,7 +34,6 @@ function LinkEditor({
|
|
|
34
34
|
className: (0, _clsx.default)('block-editor-url-popover__link-editor', className),
|
|
35
35
|
...props,
|
|
36
36
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_urlInput.default, {
|
|
37
|
-
__nextHasNoMarginBottom: true,
|
|
38
37
|
value: value,
|
|
39
38
|
onChange: onChangeInputValue,
|
|
40
39
|
autocompleteRef: autocompleteRef
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_icons","_urlInput","_jsxRuntime","LinkEditor","autocompleteRef","className","onChangeInputValue","value","props","jsxs","clsx","children","jsx","default","
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_components","_icons","_urlInput","_jsxRuntime","LinkEditor","autocompleteRef","className","onChangeInputValue","value","props","jsxs","clsx","children","jsx","default","onChange","Button","icon","keyboardReturn","label","__","type","size"],"sources":["@wordpress/block-editor/src/components/url-popover/link-editor.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Button } from '@wordpress/components';\nimport { keyboardReturn } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport URLInput from '../url-input';\n\nexport default function LinkEditor( {\n\tautocompleteRef,\n\tclassName,\n\tonChangeInputValue,\n\tvalue,\n\t...props\n} ) {\n\treturn (\n\t\t<form\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-url-popover__link-editor',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t<URLInput\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChangeInputValue }\n\t\t\t\tautocompleteRef={ autocompleteRef }\n\t\t\t/>\n\t\t\t<Button\n\t\t\t\ticon={ keyboardReturn }\n\t\t\t\tlabel={ __( 'Apply' ) }\n\t\t\t\ttype=\"submit\"\n\t\t\t\tsize=\"compact\"\n\t\t\t/>\n\t\t</form>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAKA,IAAAI,SAAA,GAAAL,sBAAA,CAAAC,OAAA;AAAoC,IAAAK,WAAA,GAAAL,OAAA;AAfpC;AACA;AACA;;AAGA;AACA;AACA;;AAKA;AACA;AACA;;AAGe,SAASM,UAAUA,CAAE;EACnCC,eAAe;EACfC,SAAS;EACTC,kBAAkB;EAClBC,KAAK;EACL,GAAGC;AACJ,CAAC,EAAG;EACH,oBACC,IAAAN,WAAA,CAAAO,IAAA;IACCJ,SAAS,EAAG,IAAAK,aAAI,EACf,uCAAuC,EACvCL,SACD,CAAG;IAAA,GACEG,KAAK;IAAAG,QAAA,gBAEV,IAAAT,WAAA,CAAAU,GAAA,EAACX,SAAA,CAAAY,OAAQ;MACRN,KAAK,EAAGA,KAAO;MACfO,QAAQ,EAAGR,kBAAoB;MAC/BF,eAAe,EAAGA;IAAiB,CACnC,CAAC,eACF,IAAAF,WAAA,CAAAU,GAAA,EAACb,WAAA,CAAAgB,MAAM;MACNC,IAAI,EAAGC,qBAAgB;MACvBC,KAAK,EAAG,IAAAC,QAAE,EAAE,OAAQ,CAAG;MACvBC,IAAI,EAAC,QAAQ;MACbC,IAAI,EAAC;IAAS,CACd,CAAC;EAAA,CACG,CAAC;AAET","ignoreList":[]}
|
|
@@ -220,16 +220,22 @@ function useBlockDropZone({
|
|
|
220
220
|
operation: 'insert'
|
|
221
221
|
});
|
|
222
222
|
const {
|
|
223
|
-
getBlockType
|
|
223
|
+
getBlockType,
|
|
224
|
+
getBlockVariations,
|
|
225
|
+
getGroupingBlockName
|
|
224
226
|
} = (0, _data.useSelect)(_blocks.store);
|
|
225
227
|
const {
|
|
228
|
+
canInsertBlockType,
|
|
226
229
|
getBlockListSettings,
|
|
227
230
|
getBlocks,
|
|
228
231
|
getBlockIndex,
|
|
229
232
|
getDraggedBlockClientIds,
|
|
230
233
|
getBlockNamesByClientId,
|
|
231
234
|
getAllowedBlocks,
|
|
232
|
-
isDragging
|
|
235
|
+
isDragging,
|
|
236
|
+
isGroupable,
|
|
237
|
+
getSettings,
|
|
238
|
+
isZoomOutMode
|
|
233
239
|
} = (0, _lockUnlock.unlock)((0, _data.useSelect)(_store.store));
|
|
234
240
|
const {
|
|
235
241
|
showInsertionPoint,
|
|
@@ -254,6 +260,16 @@ function useBlockDropZone({
|
|
|
254
260
|
if (!isBlockDroppingAllowed) {
|
|
255
261
|
return;
|
|
256
262
|
}
|
|
263
|
+
const {
|
|
264
|
+
sectionRootClientId
|
|
265
|
+
} = (0, _lockUnlock.unlock)(getSettings());
|
|
266
|
+
|
|
267
|
+
// In Zoom Out mode, if the target is not the section root provided by settings then
|
|
268
|
+
// do not allow dropping as the drop target is not within the root (that which is
|
|
269
|
+
// treated as "the content" by Zoom Out Mode).
|
|
270
|
+
if (isZoomOutMode() && sectionRootClientId !== targetRootClientId) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
257
273
|
const blocks = getBlocks(targetRootClientId);
|
|
258
274
|
|
|
259
275
|
// The block list is empty, don't show the insertion point but still allow dropping.
|
|
@@ -278,7 +294,7 @@ function useBlockDropZone({
|
|
|
278
294
|
blockOrientation: getBlockListSettings(clientId)?.orientation
|
|
279
295
|
};
|
|
280
296
|
});
|
|
281
|
-
const
|
|
297
|
+
const dropTargetPosition = getDropTargetPosition(blocksData, {
|
|
282
298
|
x: event.clientX,
|
|
283
299
|
y: event.clientY
|
|
284
300
|
}, getBlockListSettings(targetRootClientId)?.orientation, {
|
|
@@ -287,6 +303,28 @@ function useBlockDropZone({
|
|
|
287
303
|
parentBlockOrientation: parentBlockClientId ? getBlockListSettings(parentBlockClientId)?.orientation : undefined,
|
|
288
304
|
rootBlockIndex: getBlockIndex(targetRootClientId)
|
|
289
305
|
});
|
|
306
|
+
const [targetIndex, operation, nearestSide] = dropTargetPosition;
|
|
307
|
+
if (operation === 'group') {
|
|
308
|
+
const targetBlock = blocks[targetIndex];
|
|
309
|
+
const areAllImages = [targetBlock.name, ...draggedBlockNames].every(name => name === 'core/image');
|
|
310
|
+
const canInsertGalleryBlock = canInsertBlockType('core/gallery', targetRootClientId);
|
|
311
|
+
const areGroupableBlocks = isGroupable([targetBlock.clientId, getDraggedBlockClientIds()]);
|
|
312
|
+
const groupBlockVariations = getBlockVariations(getGroupingBlockName(), 'block');
|
|
313
|
+
const canInsertRow = groupBlockVariations && groupBlockVariations.find(({
|
|
314
|
+
name
|
|
315
|
+
}) => name === 'group-row');
|
|
316
|
+
|
|
317
|
+
// If the dragged blocks and the target block are all images,
|
|
318
|
+
// check if it is creatable either a Row variation or a Gallery block.
|
|
319
|
+
if (areAllImages && !canInsertGalleryBlock && (!areGroupableBlocks || !canInsertRow)) {
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
// If the dragged blocks and the target block are not all images,
|
|
323
|
+
// check if it is creatable a Row variation.
|
|
324
|
+
if (!areAllImages && (!areGroupableBlocks || !canInsertRow)) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
290
328
|
registry.batch(() => {
|
|
291
329
|
setDropTarget({
|
|
292
330
|
index: targetIndex,
|
|
@@ -299,7 +337,7 @@ function useBlockDropZone({
|
|
|
299
337
|
nearestSide
|
|
300
338
|
});
|
|
301
339
|
});
|
|
302
|
-
}, [getAllowedBlocks, targetRootClientId, getBlockNamesByClientId, getDraggedBlockClientIds, getBlockType, getBlocks, getBlockListSettings, dropZoneElement, parentBlockClientId, getBlockIndex, registry, showInsertionPoint,
|
|
340
|
+
}, [isDragging, getAllowedBlocks, targetRootClientId, getBlockNamesByClientId, getDraggedBlockClientIds, getBlockType, getBlocks, getBlockListSettings, dropZoneElement, parentBlockClientId, getBlockIndex, registry, startDragging, showInsertionPoint, canInsertBlockType, isGroupable, getBlockVariations, getGroupingBlockName, getSettings, isZoomOutMode]), 200);
|
|
303
341
|
return (0, _compose.__experimentalUseDropZone)({
|
|
304
342
|
dropZoneElement,
|
|
305
343
|
isDisabled,
|