@wordpress/block-editor 12.15.0 → 12.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +9 -4
- package/build/components/block-canvas/index.js +22 -6
- package/build/components/block-canvas/index.js.map +1 -1
- package/build/components/block-card/index.js +1 -1
- package/build/components/block-card/index.js.map +1 -1
- package/build/components/block-controls/hook.js +3 -23
- package/build/components/block-controls/hook.js.map +1 -1
- package/build/components/block-edit/context.js +5 -1
- package/build/components/block-edit/context.js.map +1 -1
- package/build/components/block-edit/index.js +18 -9
- package/build/components/block-edit/index.js.map +1 -1
- package/build/components/block-info-slot-fill/index.js +3 -4
- package/build/components/block-info-slot-fill/index.js.map +1 -1
- package/build/components/block-list/block.js +28 -9
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +14 -5
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +61 -18
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-focus-first-element.js +4 -29
- package/build/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build/components/block-list/use-block-props/use-is-hovered.js +4 -14
- package/build/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build/components/block-patterns-list/index.js +1 -1
- package/build/components/block-patterns-list/index.js.map +1 -1
- package/build/components/block-removal-warning-modal/index.js +2 -9
- package/build/components/block-removal-warning-modal/index.js.map +1 -1
- package/build/components/block-rename/modal.js +3 -0
- package/build/components/block-rename/modal.js.map +1 -1
- package/build/components/block-settings/container.native.js +6 -4
- package/build/components/block-settings/container.native.js.map +1 -1
- package/build/components/block-styles/index.js +1 -1
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-styles/index.native.js +3 -2
- package/build/components/block-styles/index.native.js.map +1 -1
- package/build/components/block-toolbar/index.js +89 -27
- package/build/components/block-toolbar/index.js.map +1 -1
- package/build/components/block-tools/block-toolbar-breadcrumb.js +49 -0
- package/build/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
- package/build/components/block-tools/block-toolbar-popover.js +86 -0
- package/build/components/block-tools/block-toolbar-popover.js.map +1 -0
- package/build/components/block-tools/index.js +27 -24
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-types-list/index.native.js +4 -3
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/block-variation-picker/index.native.js +2 -1
- package/build/components/block-variation-picker/index.native.js.map +1 -1
- package/build/components/colors-gradients/control.js +28 -17
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/duotone-control/index.js +1 -4
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/global-styles/color-panel.js +22 -20
- package/build/components/global-styles/color-panel.js.map +1 -1
- package/build/components/global-styles/filters-panel.js +9 -3
- package/build/components/global-styles/filters-panel.js.map +1 -1
- package/build/components/global-styles/typography-panel.js +20 -31
- package/build/components/global-styles/typography-panel.js.map +1 -1
- package/build/components/image-link-destinations/index.native.js +118 -0
- package/build/components/image-link-destinations/index.native.js.map +1 -0
- package/build/components/index.native.js +8 -0
- package/build/components/index.native.js.map +1 -1
- package/build/components/inserter/media-tab/media-panel.js +2 -2
- package/build/components/inserter/media-tab/media-panel.js.map +1 -1
- package/build/components/inserter/menu.js +14 -7
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/preview-panel.js +2 -2
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter-button/index.native.js +98 -0
- package/build/components/inserter-button/index.native.js.map +1 -0
- package/build/components/inserter-button/sparkles.js +23 -0
- package/build/components/inserter-button/sparkles.js.map +1 -0
- package/build/components/inserter-draggable-blocks/index.js +8 -4
- package/build/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build/components/inspector-controls/fill.js +3 -3
- package/build/components/inspector-controls/fill.js.map +1 -1
- package/build/components/inspector-controls/fill.native.js +3 -3
- package/build/components/inspector-controls/fill.native.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +2 -2
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/preview-options/index.js +6 -62
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/rich-text/content.js +26 -23
- package/build/components/rich-text/content.js.map +1 -1
- package/build/components/rich-text/get-rich-text-values.js +2 -1
- package/build/components/rich-text/get-rich-text-values.js.map +1 -1
- package/build/components/rich-text/index.js +2 -30
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +9 -16
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/native/get-format-colors.native.js +22 -24
- package/build/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build/components/rich-text/native/index.native.js +7 -34
- package/build/components/rich-text/native/index.native.js.map +1 -1
- package/build/components/rich-text/use-input-rules.js +5 -1
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/rich-text/with-deprecations.js +50 -0
- package/build/components/rich-text/with-deprecations.js.map +1 -0
- package/build/components/use-block-drop-zone/index.js +70 -8
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.js +1 -1
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-resize-canvas/index.js +4 -1
- package/build/components/use-resize-canvas/index.js.map +1 -1
- package/build/components/use-settings/index.js +14 -0
- package/build/components/use-settings/index.js.map +1 -1
- package/build/hooks/align.js +20 -68
- package/build/hooks/align.js.map +1 -1
- package/build/hooks/align.native.js +11 -1
- package/build/hooks/align.native.js.map +1 -1
- package/build/hooks/anchor.js +13 -29
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/background.js +28 -31
- package/build/hooks/background.js.map +1 -1
- package/build/hooks/block-hooks.js +24 -32
- package/build/hooks/block-hooks.js.map +1 -1
- package/build/hooks/block-renaming.js +18 -22
- package/build/hooks/block-renaming.js.map +1 -1
- package/build/hooks/border.js +58 -80
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color.js +76 -89
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/content-lock-ui.js +29 -29
- package/build/hooks/content-lock-ui.js.map +1 -1
- package/build/hooks/custom-class-name.js +12 -29
- package/build/hooks/custom-class-name.js.map +1 -1
- package/build/hooks/custom-fields.js +24 -38
- package/build/hooks/custom-fields.js.map +1 -1
- package/build/hooks/dimensions.js +21 -17
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/duotone.js +31 -61
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/font-family.js +16 -25
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/font-size.js +51 -119
- package/build/hooks/font-size.js.map +1 -1
- package/build/hooks/index.js +25 -14
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/index.native.js +10 -3
- package/build/hooks/index.native.js.map +1 -1
- package/build/hooks/layout-child.js +68 -0
- package/build/hooks/layout-child.js.map +1 -0
- package/build/hooks/layout.js +16 -101
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/padding.js +2 -2
- package/build/hooks/padding.js.map +1 -1
- package/build/hooks/position.js +40 -62
- package/build/hooks/position.js.map +1 -1
- package/build/hooks/style.js +51 -88
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/typography.js +34 -14
- package/build/hooks/typography.js.map +1 -1
- package/build/hooks/utils.js +154 -7
- package/build/hooks/utils.js.map +1 -1
- package/build/private-apis.js +0 -2
- package/build/private-apis.js.map +1 -1
- package/build/store/private-actions.js +8 -0
- package/build/store/private-actions.js.map +1 -1
- package/build/store/private-selectors.js +34 -0
- package/build/store/private-selectors.js.map +1 -1
- package/build/store/reducer.js +8 -0
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +10 -60
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +66 -0
- package/build/store/utils.js.map +1 -0
- package/build/utils/object.js +21 -61
- package/build/utils/object.js.map +1 -1
- package/build/utils/selection.js +9 -1
- package/build/utils/selection.js.map +1 -1
- package/build-module/components/block-canvas/index.js +23 -7
- package/build-module/components/block-canvas/index.js.map +1 -1
- package/build-module/components/block-card/index.js +1 -1
- package/build-module/components/block-card/index.js.map +1 -1
- package/build-module/components/block-controls/hook.js +4 -24
- package/build-module/components/block-controls/hook.js.map +1 -1
- package/build-module/components/block-edit/context.js +2 -0
- package/build-module/components/block-edit/context.js.map +1 -1
- package/build-module/components/block-edit/index.js +19 -10
- package/build-module/components/block-edit/index.js.map +1 -1
- package/build-module/components/block-info-slot-fill/index.js +3 -3
- package/build-module/components/block-info-slot-fill/index.js.map +1 -1
- package/build-module/components/block-list/block.js +29 -10
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +14 -5
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +62 -19
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js +4 -29
- package/build-module/components/block-list/use-block-props/use-focus-first-element.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-is-hovered.js +4 -14
- package/build-module/components/block-list/use-block-props/use-is-hovered.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +4 -2
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build-module/components/block-patterns-list/index.js +1 -1
- package/build-module/components/block-patterns-list/index.js.map +1 -1
- package/build-module/components/block-removal-warning-modal/index.js +3 -10
- package/build-module/components/block-removal-warning-modal/index.js.map +1 -1
- package/build-module/components/block-rename/modal.js +3 -0
- package/build-module/components/block-rename/modal.js.map +1 -1
- package/build-module/components/block-settings/container.native.js +4 -2
- package/build-module/components/block-settings/container.native.js.map +1 -1
- package/build-module/components/block-styles/index.js +1 -1
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-styles/index.native.js +3 -2
- package/build-module/components/block-styles/index.native.js.map +1 -1
- package/build-module/components/block-toolbar/index.js +88 -25
- package/build-module/components/block-toolbar/index.js.map +1 -1
- package/build-module/components/block-tools/block-toolbar-breadcrumb.js +41 -0
- package/build-module/components/block-tools/block-toolbar-breadcrumb.js.map +1 -0
- package/build-module/components/block-tools/block-toolbar-popover.js +76 -0
- package/build-module/components/block-tools/block-toolbar-popover.js.map +1 -0
- package/build-module/components/block-tools/index.js +27 -24
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js +2 -1
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/block-variation-picker/index.native.js +2 -1
- package/build-module/components/block-variation-picker/index.native.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +29 -18
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/duotone-control/index.js +1 -4
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/global-styles/color-panel.js +23 -21
- package/build-module/components/global-styles/color-panel.js.map +1 -1
- package/build-module/components/global-styles/filters-panel.js +10 -4
- package/build-module/components/global-styles/filters-panel.js.map +1 -1
- package/build-module/components/global-styles/typography-panel.js +20 -31
- package/build-module/components/global-styles/typography-panel.js.map +1 -1
- package/build-module/components/image-link-destinations/index.native.js +109 -0
- package/build-module/components/image-link-destinations/index.native.js.map +1 -0
- package/build-module/components/index.native.js +1 -0
- package/build-module/components/index.native.js.map +1 -1
- package/build-module/components/inserter/media-tab/media-panel.js +1 -1
- package/build-module/components/inserter/media-tab/media-panel.js.map +1 -1
- package/build-module/components/inserter/menu.js +14 -7
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +2 -2
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter-button/index.native.js +89 -0
- package/build-module/components/inserter-button/index.native.js.map +1 -0
- package/build-module/components/inserter-button/sparkles.js +15 -0
- package/build-module/components/inserter-button/sparkles.js.map +1 -0
- package/build-module/components/inserter-draggable-blocks/index.js +9 -5
- package/build-module/components/inserter-draggable-blocks/index.js.map +1 -1
- package/build-module/components/inspector-controls/fill.js +3 -3
- package/build-module/components/inspector-controls/fill.js.map +1 -1
- package/build-module/components/inspector-controls/fill.native.js +3 -3
- package/build-module/components/inspector-controls/fill.native.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +2 -2
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/preview-options/index.js +6 -62
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/rich-text/content.js +25 -21
- package/build-module/components/rich-text/content.js.map +1 -1
- package/build-module/components/rich-text/get-rich-text-values.js +2 -1
- package/build-module/components/rich-text/get-rich-text-values.js.map +1 -1
- package/build-module/components/rich-text/index.js +4 -32
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +10 -18
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/native/get-format-colors.native.js +22 -24
- package/build-module/components/rich-text/native/get-format-colors.native.js.map +1 -1
- package/build-module/components/rich-text/native/index.native.js +7 -34
- package/build-module/components/rich-text/native/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-input-rules.js +5 -1
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/rich-text/with-deprecations.js +42 -0
- package/build-module/components/rich-text/with-deprecations.js.map +1 -0
- package/build-module/components/use-block-drop-zone/index.js +69 -8
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js +1 -1
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-resize-canvas/index.js +4 -1
- package/build-module/components/use-resize-canvas/index.js.map +1 -1
- package/build-module/components/use-settings/index.js +13 -1
- package/build-module/components/use-settings/index.js.map +1 -1
- package/build-module/hooks/align.js +19 -66
- package/build-module/hooks/align.js.map +1 -1
- package/build-module/hooks/align.native.js +1 -0
- package/build-module/hooks/align.native.js.map +1 -1
- package/build-module/hooks/anchor.js +11 -26
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/background.js +26 -28
- package/build-module/hooks/background.js.map +1 -1
- package/build-module/hooks/block-hooks.js +22 -30
- package/build-module/hooks/block-hooks.js.map +1 -1
- package/build-module/hooks/block-renaming.js +17 -21
- package/build-module/hooks/block-renaming.js.map +1 -1
- package/build-module/hooks/border.js +57 -78
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color.js +74 -86
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/content-lock-ui.js +27 -27
- package/build-module/hooks/content-lock-ui.js.map +1 -1
- package/build-module/hooks/custom-class-name.js +11 -27
- package/build-module/hooks/custom-class-name.js.map +1 -1
- package/build-module/hooks/custom-fields.js +20 -39
- package/build-module/hooks/custom-fields.js.map +1 -1
- package/build-module/hooks/dimensions.js +21 -16
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/duotone.js +30 -61
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/font-family.js +14 -23
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/font-size.js +49 -119
- package/build-module/hooks/font-size.js.map +1 -1
- package/build-module/hooks/index.js +18 -14
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/index.native.js +5 -3
- package/build-module/hooks/index.native.js.map +1 -1
- package/build-module/hooks/layout-child.js +60 -0
- package/build-module/hooks/layout-child.js.map +1 -0
- package/build-module/hooks/layout.js +13 -98
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/padding.js +2 -2
- package/build-module/hooks/padding.js.map +1 -1
- package/build-module/hooks/position.js +38 -59
- package/build-module/hooks/position.js.map +1 -1
- package/build-module/hooks/style.js +51 -84
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/typography.js +33 -12
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/hooks/utils.js +149 -6
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/private-apis.js +0 -2
- package/build-module/private-apis.js.map +1 -1
- package/build-module/store/private-actions.js +7 -0
- package/build-module/store/private-actions.js.map +1 -1
- package/build-module/store/private-selectors.js +33 -1
- package/build-module/store/private-selectors.js.map +1 -1
- package/build-module/store/reducer.js +8 -0
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +3 -53
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +56 -0
- package/build-module/store/utils.js.map +1 -0
- package/build-module/utils/object.js +21 -60
- package/build-module/utils/object.js.map +1 -1
- package/build-module/utils/selection.js +9 -1
- package/build-module/utils/selection.js.map +1 -1
- package/build-style/style-rtl.css +113 -293
- package/build-style/style.css +113 -293
- package/package.json +31 -31
- package/src/components/block-canvas/index.js +31 -17
- package/src/components/block-caption/README.md +2 -2
- package/src/components/block-card/index.js +5 -3
- package/src/components/block-card/style.scss +7 -3
- package/src/components/block-controls/hook.js +8 -30
- package/src/components/block-controls/test/index.js +3 -3
- package/src/components/block-edit/context.js +3 -0
- package/src/components/block-edit/index.js +36 -10
- package/src/components/block-info-slot-fill/index.js +6 -3
- package/src/components/block-inspector/style.scss +0 -4
- package/src/components/block-list/block.js +39 -5
- package/src/components/block-list/block.native.js +18 -4
- package/src/components/block-list/use-block-props/index.js +74 -21
- package/src/components/block-list/use-block-props/use-focus-first-element.js +1 -34
- package/src/components/block-list/use-block-props/use-is-hovered.js +2 -13
- package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +1 -5
- package/src/components/block-patterns-list/index.js +1 -1
- package/src/components/block-removal-warning-modal/index.js +7 -14
- package/src/components/block-rename/modal.js +7 -1
- package/src/components/block-settings/container.native.js +3 -5
- package/src/components/block-styles/index.js +1 -1
- package/src/components/block-styles/index.native.js +4 -2
- package/src/components/block-styles/style.scss +0 -11
- package/src/components/block-switcher/test/__snapshots__/index.js.snap +3 -1
- package/src/components/block-toolbar/index.js +180 -95
- package/src/components/block-toolbar/style.scss +50 -66
- package/src/components/block-tools/block-toolbar-breadcrumb.js +46 -0
- package/src/components/block-tools/block-toolbar-popover.js +90 -0
- package/src/components/block-tools/index.js +42 -29
- package/src/components/block-tools/style.scss +60 -172
- package/src/components/block-types-list/index.native.js +2 -1
- package/src/components/block-variation-picker/index.native.js +1 -1
- package/src/components/colors-gradients/control.js +49 -30
- package/src/components/colors-gradients/style.scss +0 -7
- package/src/components/duotone-control/index.js +2 -5
- package/src/components/duotone-control/style.scss +1 -6
- package/src/components/global-styles/color-panel.js +34 -25
- package/src/components/global-styles/filters-panel.js +8 -4
- package/src/components/global-styles/typography-panel.js +23 -43
- package/src/components/image-link-destinations/index.native.js +152 -0
- package/src/components/image-link-destinations/style.native.scss +16 -0
- package/src/components/index.native.js +1 -0
- package/src/components/inner-blocks/README.md +13 -2
- package/src/components/inserter/media-tab/media-panel.js +1 -1
- package/src/components/inserter/menu.js +16 -8
- package/src/components/inserter/preview-panel.js +2 -2
- package/src/components/inserter/style.scss +15 -17
- package/src/components/inserter-button/README.md +62 -0
- package/src/components/inserter-button/index.native.js +116 -0
- package/src/components/inserter-button/sparkles.js +15 -0
- package/src/components/inserter-button/style.native.scss +72 -0
- package/src/components/inserter-draggable-blocks/index.js +18 -5
- package/src/components/inspector-controls/fill.js +6 -3
- package/src/components/inspector-controls/fill.native.js +6 -3
- package/src/components/link-control/style.scss +1 -1
- package/src/components/link-control/test/index.js +1 -1
- package/src/components/navigable-toolbar/README.md +2 -0
- package/src/components/navigable-toolbar/index.js +2 -2
- package/src/components/preview-options/index.js +6 -86
- package/src/components/rich-text/content.js +27 -20
- package/src/components/rich-text/get-rich-text-values.js +6 -1
- package/src/components/rich-text/index.js +5 -46
- package/src/components/rich-text/index.native.js +8 -25
- package/src/components/rich-text/native/get-format-colors.native.js +33 -40
- package/src/components/rich-text/native/index.native.js +7 -48
- package/src/components/rich-text/use-input-rules.js +6 -1
- package/src/components/rich-text/with-deprecations.js +51 -0
- package/src/components/use-block-drop-zone/index.js +114 -14
- package/src/components/use-on-block-drop/index.js +2 -1
- package/src/components/use-resize-canvas/README.md +3 -3
- package/src/components/use-resize-canvas/index.js +4 -1
- package/src/components/use-settings/index.js +15 -1
- package/src/hooks/align.js +15 -76
- package/src/hooks/align.native.js +1 -0
- package/src/hooks/anchor.js +13 -33
- package/src/hooks/background.js +28 -23
- package/src/hooks/block-hooks.js +22 -51
- package/src/hooks/block-renaming.js +23 -37
- package/src/hooks/border.js +67 -118
- package/src/hooks/color.js +100 -132
- package/src/hooks/content-lock-ui.js +110 -122
- package/src/hooks/custom-class-name.js +8 -40
- package/src/hooks/custom-fields.js +20 -47
- package/src/hooks/dimensions.js +20 -16
- package/src/hooks/duotone.js +70 -127
- package/src/hooks/font-family.js +10 -29
- package/src/hooks/font-size.js +66 -162
- package/src/hooks/index.js +42 -14
- package/src/hooks/index.native.js +6 -3
- package/src/hooks/layout-child.js +53 -0
- package/src/hooks/layout.js +13 -102
- package/src/hooks/padding.js +2 -2
- package/src/hooks/position.js +50 -90
- package/src/hooks/style.js +117 -187
- package/src/hooks/test/align.js +1 -178
- package/src/hooks/typography.js +20 -16
- package/src/hooks/utils.js +187 -6
- package/src/private-apis.js +0 -2
- package/src/store/private-actions.js +8 -0
- package/src/store/private-selectors.js +45 -0
- package/src/store/reducer.js +8 -0
- package/src/store/selectors.js +5 -69
- package/src/store/utils.js +74 -0
- package/src/style.scss +0 -2
- package/src/utils/object.js +18 -69
- package/src/utils/selection.js +9 -2
- package/build/components/block-list/use-block-props/use-block-class-names.js +0 -67
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
- package/build/components/block-list/use-block-props/use-block-custom-class-name.js +0 -46
- package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
- package/build/components/block-list/use-block-props/use-block-default-class-name.js +0 -37
- package/build/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
- package/build/components/block-tools/back-compat.js +0 -45
- package/build/components/block-tools/back-compat.js.map +0 -1
- package/build/components/block-tools/block-contextual-toolbar.js +0 -91
- package/build/components/block-tools/block-contextual-toolbar.js.map +0 -1
- package/build/components/block-tools/selected-block-tools.js +0 -113
- package/build/components/block-tools/selected-block-tools.js.map +0 -1
- package/build/components/inserter/hooks/use-debounced-input.js +0 -22
- package/build/components/inserter/hooks/use-debounced-input.js.map +0 -1
- package/build/components/use-display-block-controls/index.js +0 -39
- package/build/components/use-display-block-controls/index.js.map +0 -1
- package/build/components/use-display-block-controls/index.native.js +0 -39
- package/build/components/use-display-block-controls/index.native.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +0 -60
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js +0 -40
- package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +0 -1
- package/build-module/components/block-list/use-block-props/use-block-default-class-name.js +0 -31
- package/build-module/components/block-list/use-block-props/use-block-default-class-name.js.map +0 -1
- package/build-module/components/block-tools/back-compat.js +0 -35
- package/build-module/components/block-tools/back-compat.js.map +0 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +0 -83
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +0 -1
- package/build-module/components/block-tools/selected-block-tools.js +0 -105
- package/build-module/components/block-tools/selected-block-tools.js.map +0 -1
- package/build-module/components/inserter/hooks/use-debounced-input.js +0 -15
- package/build-module/components/inserter/hooks/use-debounced-input.js.map +0 -1
- package/build-module/components/use-display-block-controls/index.js +0 -32
- package/build-module/components/use-display-block-controls/index.js.map +0 -1
- package/build-module/components/use-display-block-controls/index.native.js +0 -32
- package/build-module/components/use-display-block-controls/index.native.js.map +0 -1
- package/src/components/block-list/use-block-props/use-block-class-names.js +0 -66
- package/src/components/block-list/use-block-props/use-block-custom-class-name.js +0 -44
- package/src/components/block-list/use-block-props/use-block-default-class-name.js +0 -35
- package/src/components/block-parent-selector/style.scss +0 -11
- package/src/components/block-tools/back-compat.js +0 -35
- package/src/components/block-tools/block-contextual-toolbar.js +0 -100
- package/src/components/block-tools/selected-block-tools.js +0 -127
- package/src/components/inserter/hooks/use-debounced-input.js +0 -18
- package/src/components/preview-options/README.md +0 -94
- package/src/components/preview-options/style.scss +0 -64
- package/src/components/use-display-block-controls/index.js +0 -36
- package/src/components/use-display-block-controls/index.native.js +0 -37
- package/src/hooks/test/color.js +0 -112
|
@@ -10,7 +10,7 @@ import { useEffect, useContext } from '@wordpress/element';
|
|
|
10
10
|
/**
|
|
11
11
|
* Internal dependencies
|
|
12
12
|
*/
|
|
13
|
-
import
|
|
13
|
+
import { useBlockEditContext, mayDisplayControlsKey } from '../block-edit/context';
|
|
14
14
|
import groups from './groups';
|
|
15
15
|
export default function InspectorControlsFill({
|
|
16
16
|
children,
|
|
@@ -26,13 +26,13 @@ export default function InspectorControlsFill({
|
|
|
26
26
|
});
|
|
27
27
|
group = __experimentalGroup;
|
|
28
28
|
}
|
|
29
|
-
const
|
|
29
|
+
const context = useBlockEditContext();
|
|
30
30
|
const Fill = groups[group]?.Fill;
|
|
31
31
|
if (!Fill) {
|
|
32
32
|
typeof SCRIPT_DEBUG !== "undefined" && SCRIPT_DEBUG === true ? warning(`Unknown InspectorControls group "${group}" provided.`) : void 0;
|
|
33
33
|
return null;
|
|
34
34
|
}
|
|
35
|
-
if (!
|
|
35
|
+
if (!context[mayDisplayControlsKey]) {
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
38
|
return createElement(StyleProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__experimentalStyleProvider","StyleProvider","__experimentalToolsPanelContext","ToolsPanelContext","warning","deprecated","useEffect","useContext","
|
|
1
|
+
{"version":3,"names":["__experimentalStyleProvider","StyleProvider","__experimentalToolsPanelContext","ToolsPanelContext","warning","deprecated","useEffect","useContext","useBlockEditContext","mayDisplayControlsKey","groups","InspectorControlsFill","children","group","__experimentalGroup","resetAllFilter","since","version","alternative","context","Fill","SCRIPT_DEBUG","createElement","document","fillProps","ToolsPanelInspectorControl","RegisterResetAll","registerResetAllFilter","deregisterResetAllFilter","forwardedContext","innerMarkup","reduce","inner","Provider","props"],"sources":["@wordpress/block-editor/src/components/inspector-controls/fill.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalStyleProvider as StyleProvider,\n\t__experimentalToolsPanelContext as ToolsPanelContext,\n} from '@wordpress/components';\nimport warning from '@wordpress/warning';\nimport deprecated from '@wordpress/deprecated';\nimport { useEffect, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseBlockEditContext,\n\tmayDisplayControlsKey,\n} from '../block-edit/context';\nimport groups from './groups';\n\nexport default function InspectorControlsFill( {\n\tchildren,\n\tgroup = 'default',\n\t__experimentalGroup,\n\tresetAllFilter,\n} ) {\n\tif ( __experimentalGroup ) {\n\t\tdeprecated(\n\t\t\t'`__experimentalGroup` property in `InspectorControlsFill`',\n\t\t\t{\n\t\t\t\tsince: '6.2',\n\t\t\t\tversion: '6.4',\n\t\t\t\talternative: '`group`',\n\t\t\t}\n\t\t);\n\t\tgroup = __experimentalGroup;\n\t}\n\n\tconst context = useBlockEditContext();\n\tconst Fill = groups[ group ]?.Fill;\n\tif ( ! Fill ) {\n\t\twarning( `Unknown InspectorControls group \"${ group }\" provided.` );\n\t\treturn null;\n\t}\n\tif ( ! context[ mayDisplayControlsKey ] ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill>\n\t\t\t\t{ ( fillProps ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ToolsPanelInspectorControl\n\t\t\t\t\t\t\tfillProps={ fillProps }\n\t\t\t\t\t\t\tchildren={ children }\n\t\t\t\t\t\t\tresetAllFilter={ resetAllFilter }\n\t\t\t\t\t\t/>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t</Fill>\n\t\t</StyleProvider>\n\t);\n}\n\nfunction RegisterResetAll( { resetAllFilter, children } ) {\n\tconst { registerResetAllFilter, deregisterResetAllFilter } =\n\t\tuseContext( ToolsPanelContext );\n\tuseEffect( () => {\n\t\tif (\n\t\t\tresetAllFilter &&\n\t\t\tregisterResetAllFilter &&\n\t\t\tderegisterResetAllFilter\n\t\t) {\n\t\t\tregisterResetAllFilter( resetAllFilter );\n\t\t\treturn () => {\n\t\t\t\tderegisterResetAllFilter( resetAllFilter );\n\t\t\t};\n\t\t}\n\t}, [ resetAllFilter, registerResetAllFilter, deregisterResetAllFilter ] );\n\treturn children;\n}\n\nfunction ToolsPanelInspectorControl( { children, resetAllFilter, fillProps } ) {\n\t// `fillProps.forwardedContext` is an array of context provider entries, provided by slot,\n\t// that should wrap the fill markup.\n\tconst { forwardedContext = [] } = fillProps;\n\n\t// Children passed to InspectorControlsFill will not have\n\t// access to any React Context whose Provider is part of\n\t// the InspectorControlsSlot tree. So we re-create the\n\t// Provider in this subtree.\n\tconst innerMarkup = (\n\t\t<RegisterResetAll resetAllFilter={ resetAllFilter }>\n\t\t\t{ children }\n\t\t</RegisterResetAll>\n\t);\n\treturn forwardedContext.reduce(\n\t\t( inner, [ Provider, props ] ) => (\n\t\t\t<Provider { ...props }>{ inner }</Provider>\n\t\t),\n\t\tinnerMarkup\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,2BAA2B,IAAIC,aAAa,EAC5CC,+BAA+B,IAAIC,iBAAiB,QAC9C,uBAAuB;AAC9B,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,UAAU,MAAM,uBAAuB;AAC9C,SAASC,SAAS,EAAEC,UAAU,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,SACCC,mBAAmB,EACnBC,qBAAqB,QACf,uBAAuB;AAC9B,OAAOC,MAAM,MAAM,UAAU;AAE7B,eAAe,SAASC,qBAAqBA,CAAE;EAC9CC,QAAQ;EACRC,KAAK,GAAG,SAAS;EACjBC,mBAAmB;EACnBC;AACD,CAAC,EAAG;EACH,IAAKD,mBAAmB,EAAG;IAC1BT,UAAU,CACT,2DAA2D,EAC3D;MACCW,KAAK,EAAE,KAAK;MACZC,OAAO,EAAE,KAAK;MACdC,WAAW,EAAE;IACd,CACD,CAAC;IACDL,KAAK,GAAGC,mBAAmB;EAC5B;EAEA,MAAMK,OAAO,GAAGX,mBAAmB,CAAC,CAAC;EACrC,MAAMY,IAAI,GAAGV,MAAM,CAAEG,KAAK,CAAE,EAAEO,IAAI;EAClC,IAAK,CAAEA,IAAI,EAAG;IACb,OAAAC,YAAA,oBAAAA,YAAA,YAAAjB,OAAO,CAAG,oCAAoCS,KAAO,aAAa,CAAC;IACnE,OAAO,IAAI;EACZ;EACA,IAAK,CAAEM,OAAO,CAAEV,qBAAqB,CAAE,EAAG;IACzC,OAAO,IAAI;EACZ;EAEA,OACCa,aAAA,CAACrB,aAAa;IAACsB,QAAQ,EAAGA;EAAU,GACnCD,aAAA,CAACF,IAAI,QACAI,SAAS,IAAM;IAClB,OACCF,aAAA,CAACG,0BAA0B;MAC1BD,SAAS,EAAGA,SAAW;MACvBZ,QAAQ,EAAGA,QAAU;MACrBG,cAAc,EAAGA;IAAgB,CACjC,CAAC;EAEJ,CACK,CACQ,CAAC;AAElB;AAEA,SAASW,gBAAgBA,CAAE;EAAEX,cAAc;EAAEH;AAAS,CAAC,EAAG;EACzD,MAAM;IAAEe,sBAAsB;IAAEC;EAAyB,CAAC,GACzDrB,UAAU,CAAEJ,iBAAkB,CAAC;EAChCG,SAAS,CAAE,MAAM;IAChB,IACCS,cAAc,IACdY,sBAAsB,IACtBC,wBAAwB,EACvB;MACDD,sBAAsB,CAAEZ,cAAe,CAAC;MACxC,OAAO,MAAM;QACZa,wBAAwB,CAAEb,cAAe,CAAC;MAC3C,CAAC;IACF;EACD,CAAC,EAAE,CAAEA,cAAc,EAAEY,sBAAsB,EAAEC,wBAAwB,CAAG,CAAC;EACzE,OAAOhB,QAAQ;AAChB;AAEA,SAASa,0BAA0BA,CAAE;EAAEb,QAAQ;EAAEG,cAAc;EAAES;AAAU,CAAC,EAAG;EAC9E;EACA;EACA,MAAM;IAAEK,gBAAgB,GAAG;EAAG,CAAC,GAAGL,SAAS;;EAE3C;EACA;EACA;EACA;EACA,MAAMM,WAAW,GAChBR,aAAA,CAACI,gBAAgB;IAACX,cAAc,EAAGA;EAAgB,GAChDH,QACe,CAClB;EACD,OAAOiB,gBAAgB,CAACE,MAAM,CAC7B,CAAEC,KAAK,EAAE,CAAEC,QAAQ,EAAEC,KAAK,CAAE,KAC3BZ,aAAA,CAACW,QAAQ;IAAA,GAAMC;EAAK,GAAKF,KAAiB,CAC1C,EACDF,WACD,CAAC;AACF"}
|
|
@@ -16,7 +16,7 @@ import deprecated from '@wordpress/deprecated';
|
|
|
16
16
|
* Internal dependencies
|
|
17
17
|
*/
|
|
18
18
|
import groups from './groups';
|
|
19
|
-
import
|
|
19
|
+
import { useBlockEditContext, mayDisplayControlsKey } from '../block-edit/context';
|
|
20
20
|
import { BlockSettingsButton } from '../block-settings';
|
|
21
21
|
export default function InspectorControlsFill({
|
|
22
22
|
children,
|
|
@@ -32,13 +32,13 @@ export default function InspectorControlsFill({
|
|
|
32
32
|
});
|
|
33
33
|
group = __experimentalGroup;
|
|
34
34
|
}
|
|
35
|
-
const
|
|
35
|
+
const context = useBlockEditContext();
|
|
36
36
|
const Fill = groups[group]?.Fill;
|
|
37
37
|
if (!Fill) {
|
|
38
38
|
typeof SCRIPT_DEBUG !== "undefined" && SCRIPT_DEBUG === true ? warning(`Unknown InspectorControls group "${group}" provided.`) : void 0;
|
|
39
39
|
return null;
|
|
40
40
|
}
|
|
41
|
-
if (!
|
|
41
|
+
if (!context[mayDisplayControlsKey]) {
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
44
|
return createElement(Fragment, null, createElement(Fill, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["View","Children","BottomSheetConsumer","warning","deprecated","groups","
|
|
1
|
+
{"version":3,"names":["View","Children","BottomSheetConsumer","warning","deprecated","groups","useBlockEditContext","mayDisplayControlsKey","BlockSettingsButton","InspectorControlsFill","children","group","__experimentalGroup","props","since","version","alternative","context","Fill","SCRIPT_DEBUG","createElement","Fragment","count"],"sources":["@wordpress/block-editor/src/components/inspector-controls/fill.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Children } from '@wordpress/element';\nimport { BottomSheetConsumer } from '@wordpress/components';\nimport warning from '@wordpress/warning';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport groups from './groups';\nimport {\n\tuseBlockEditContext,\n\tmayDisplayControlsKey,\n} from '../block-edit/context';\nimport { BlockSettingsButton } from '../block-settings';\n\nexport default function InspectorControlsFill( {\n\tchildren,\n\tgroup = 'default',\n\t__experimentalGroup,\n\t...props\n} ) {\n\tif ( __experimentalGroup ) {\n\t\tdeprecated(\n\t\t\t'`__experimentalGroup` property in `InspectorControlsFill`',\n\t\t\t{\n\t\t\t\tsince: '6.2',\n\t\t\t\tversion: '6.4',\n\t\t\t\talternative: '`group`',\n\t\t\t}\n\t\t);\n\t\tgroup = __experimentalGroup;\n\t}\n\tconst context = useBlockEditContext();\n\n\tconst Fill = groups[ group ]?.Fill;\n\tif ( ! Fill ) {\n\t\twarning( `Unknown InspectorControls group \"${ group }\" provided.` );\n\t\treturn null;\n\t}\n\tif ( ! context[ mayDisplayControlsKey ] ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Fill { ...props }>\n\t\t\t\t{\n\t\t\t\t\t<BottomSheetConsumer>\n\t\t\t\t\t\t{ () => <View>{ children }</View> }\n\t\t\t\t\t</BottomSheetConsumer>\n\t\t\t\t}\n\t\t\t</Fill>\n\t\t\t{ Children.count( children ) > 0 && <BlockSettingsButton /> }\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,IAAI,QAAQ,cAAc;;AAEnC;AACA;AACA;AACA,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,UAAU,MAAM,uBAAuB;;AAE9C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,UAAU;AAC7B,SACCC,mBAAmB,EACnBC,qBAAqB,QACf,uBAAuB;AAC9B,SAASC,mBAAmB,QAAQ,mBAAmB;AAEvD,eAAe,SAASC,qBAAqBA,CAAE;EAC9CC,QAAQ;EACRC,KAAK,GAAG,SAAS;EACjBC,mBAAmB;EACnB,GAAGC;AACJ,CAAC,EAAG;EACH,IAAKD,mBAAmB,EAAG;IAC1BR,UAAU,CACT,2DAA2D,EAC3D;MACCU,KAAK,EAAE,KAAK;MACZC,OAAO,EAAE,KAAK;MACdC,WAAW,EAAE;IACd,CACD,CAAC;IACDL,KAAK,GAAGC,mBAAmB;EAC5B;EACA,MAAMK,OAAO,GAAGX,mBAAmB,CAAC,CAAC;EAErC,MAAMY,IAAI,GAAGb,MAAM,CAAEM,KAAK,CAAE,EAAEO,IAAI;EAClC,IAAK,CAAEA,IAAI,EAAG;IACb,OAAAC,YAAA,oBAAAA,YAAA,YAAAhB,OAAO,CAAG,oCAAoCQ,KAAO,aAAa,CAAC;IACnE,OAAO,IAAI;EACZ;EACA,IAAK,CAAEM,OAAO,CAAEV,qBAAqB,CAAE,EAAG;IACzC,OAAO,IAAI;EACZ;EAEA,OACCa,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACF,IAAI;IAAA,GAAML;EAAK,GAEdO,aAAA,CAAClB,mBAAmB,QACjB,MAAMkB,aAAA,CAACpB,IAAI,QAAGU,QAAgB,CACZ,CAEjB,CAAC,EACLT,QAAQ,CAACqB,KAAK,CAAEZ,QAAS,CAAC,GAAG,CAAC,IAAIU,aAAA,CAACZ,mBAAmB,MAAE,CACzD,CAAC;AAEL"}
|
|
@@ -138,7 +138,7 @@ function useToolbarFocus({
|
|
|
138
138
|
const index = items.findIndex(item => item.tabIndex === 0);
|
|
139
139
|
onIndexChange(index);
|
|
140
140
|
};
|
|
141
|
-
}, [initialIndex, initialFocusOnMount, toolbarRef]);
|
|
141
|
+
}, [initialIndex, initialFocusOnMount, onIndexChange, toolbarRef]);
|
|
142
142
|
const {
|
|
143
143
|
lastFocus
|
|
144
144
|
} = useSelect(select => {
|
|
@@ -183,9 +183,9 @@ export default function NavigableToolbar({
|
|
|
183
183
|
useToolbarFocus({
|
|
184
184
|
toolbarRef,
|
|
185
185
|
focusOnMount,
|
|
186
|
-
isAccessibleToolbar,
|
|
187
186
|
defaultIndex: initialIndex,
|
|
188
187
|
onIndexChange,
|
|
188
|
+
isAccessibleToolbar,
|
|
189
189
|
shouldUseKeyboardFocusShortcut,
|
|
190
190
|
focusEditorOnEscape
|
|
191
191
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NavigableMenu","Toolbar","useState","useRef","useLayoutEffect","useEffect","useCallback","useSelect","deprecated","focus","useShortcut","ESCAPE","store","blockEditorStore","hasOnlyToolbarItem","elements","dataProp","some","element","dataset","getAllToolbarItemsIn","container","Array","from","querySelectorAll","hasFocusWithin","contains","ownerDocument","activeElement","focusFirstTabbableIn","firstTabbable","tabbable","find","preventScroll","useIsAccessibleToolbar","toolbarRef","initialAccessibleToolbarState","isAccessibleToolbar","setIsAccessibleToolbar","determineIsAccessibleToolbar","tabbables","current","onlyToolbarItem","since","alternative","link","observer","window","MutationObserver","observe","childList","subtree","disconnect","useToolbarFocus","focusOnMount","defaultIndex","onIndexChange","shouldUseKeyboardFocusShortcut","focusEditorOnEscape","initialFocusOnMount","initialIndex","focusToolbar","focusToolbarViaShortcut","navigableToolbarRef","raf","requestAnimationFrame","items","index","cancelAnimationFrame","findIndex","item","tabIndex","lastFocus","select","getLastFocus","handleKeyDown","event","keyCode","preventDefault","addEventListener","removeEventListener","NavigableToolbar","children","__experimentalInitialIndex","__experimentalOnIndexChange","props","createElement","label","ref","orientation","role"],"sources":["@wordpress/block-editor/src/components/navigable-toolbar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { NavigableMenu, Toolbar } from '@wordpress/components';\nimport {\n\tuseState,\n\tuseRef,\n\tuseLayoutEffect,\n\tuseEffect,\n\tuseCallback,\n} from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { focus } from '@wordpress/dom';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nfunction hasOnlyToolbarItem( elements ) {\n\tconst dataProp = 'toolbarItem';\n\treturn ! elements.some( ( element ) => ! ( dataProp in element.dataset ) );\n}\n\nfunction getAllToolbarItemsIn( container ) {\n\treturn Array.from( container.querySelectorAll( '[data-toolbar-item]' ) );\n}\n\nfunction hasFocusWithin( container ) {\n\treturn container.contains( container.ownerDocument.activeElement );\n}\n\nfunction focusFirstTabbableIn( container ) {\n\tconst [ firstTabbable ] = focus.tabbable.find( container );\n\n\tif ( firstTabbable ) {\n\t\tfirstTabbable.focus( {\n\t\t\t// When focusing newly mounted toolbars,\n\t\t\t// the position of the popover is often not right on the first render\n\t\t\t// This prevents the layout shifts when focusing the dialogs.\n\t\t\tpreventScroll: true,\n\t\t} );\n\t}\n}\n\nfunction useIsAccessibleToolbar( toolbarRef ) {\n\t/*\n\t * By default, we'll assume the starting accessible state of the Toolbar\n\t * is true, as it seems to be the most common case.\n\t *\n\t * Transitioning from an (initial) false to true state causes the\n\t * <Toolbar /> component to mount twice, which is causing undesired\n\t * side-effects. These side-effects appear to only affect certain\n\t * E2E tests.\n\t *\n\t * This was initial discovered in this pull-request:\n\t * https://github.com/WordPress/gutenberg/pull/23425\n\t */\n\tconst initialAccessibleToolbarState = true;\n\n\t// By default, it's gonna render NavigableMenu. If all the tabbable elements\n\t// inside the toolbar are ToolbarItem components (or derived components like\n\t// ToolbarButton), then we can wrap them with the accessible Toolbar\n\t// component.\n\tconst [ isAccessibleToolbar, setIsAccessibleToolbar ] = useState(\n\t\tinitialAccessibleToolbarState\n\t);\n\n\tconst determineIsAccessibleToolbar = useCallback( () => {\n\t\tconst tabbables = focus.tabbable.find( toolbarRef.current );\n\t\tconst onlyToolbarItem = hasOnlyToolbarItem( tabbables );\n\t\tif ( ! onlyToolbarItem ) {\n\t\t\tdeprecated( 'Using custom components as toolbar controls', {\n\t\t\t\tsince: '5.6',\n\t\t\t\talternative:\n\t\t\t\t\t'ToolbarItem, ToolbarButton or ToolbarDropdownMenu components',\n\t\t\t\tlink: 'https://developer.wordpress.org/block-editor/components/toolbar-button/#inside-blockcontrols',\n\t\t\t} );\n\t\t}\n\t\tsetIsAccessibleToolbar( onlyToolbarItem );\n\t}, [ toolbarRef ] );\n\n\tuseLayoutEffect( () => {\n\t\t// Toolbar buttons may be rendered asynchronously, so we use\n\t\t// MutationObserver to check if the toolbar subtree has been modified.\n\t\tconst observer = new window.MutationObserver(\n\t\t\tdetermineIsAccessibleToolbar\n\t\t);\n\t\tobserver.observe( toolbarRef.current, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t} );\n\t\treturn () => observer.disconnect();\n\t}, [ determineIsAccessibleToolbar, isAccessibleToolbar, toolbarRef ] );\n\n\treturn isAccessibleToolbar;\n}\n\nfunction useToolbarFocus( {\n\ttoolbarRef,\n\tfocusOnMount,\n\tisAccessibleToolbar,\n\tdefaultIndex,\n\tonIndexChange,\n\tshouldUseKeyboardFocusShortcut,\n\tfocusEditorOnEscape,\n} ) {\n\t// Make sure we don't use modified versions of this prop.\n\tconst [ initialFocusOnMount ] = useState( focusOnMount );\n\tconst [ initialIndex ] = useState( defaultIndex );\n\n\tconst focusToolbar = useCallback( () => {\n\t\tfocusFirstTabbableIn( toolbarRef.current );\n\t}, [ toolbarRef ] );\n\n\tconst focusToolbarViaShortcut = () => {\n\t\tif ( shouldUseKeyboardFocusShortcut ) {\n\t\t\tfocusToolbar();\n\t\t}\n\t};\n\n\t// Focus on toolbar when pressing alt+F10 when the toolbar is visible.\n\tuseShortcut( 'core/block-editor/focus-toolbar', focusToolbarViaShortcut );\n\n\tuseEffect( () => {\n\t\tif ( initialFocusOnMount ) {\n\t\t\tfocusToolbar();\n\t\t}\n\t}, [ isAccessibleToolbar, initialFocusOnMount, focusToolbar ] );\n\n\tuseEffect( () => {\n\t\t// Store ref so we have access on useEffect cleanup: https://legacy.reactjs.org/blog/2020/08/10/react-v17-rc.html#effect-cleanup-timing\n\t\tconst navigableToolbarRef = toolbarRef.current;\n\t\t// If initialIndex is passed, we focus on that toolbar item when the\n\t\t// toolbar gets mounted and initial focus is not forced.\n\t\t// We have to wait for the next browser paint because block controls aren't\n\t\t// rendered right away when the toolbar gets mounted.\n\t\tlet raf = 0;\n\t\tif ( ! initialFocusOnMount ) {\n\t\t\traf = window.requestAnimationFrame( () => {\n\t\t\t\tconst items = getAllToolbarItemsIn( navigableToolbarRef );\n\t\t\t\tconst index = initialIndex || 0;\n\t\t\t\tif ( items[ index ] && hasFocusWithin( navigableToolbarRef ) ) {\n\t\t\t\t\titems[ index ].focus( {\n\t\t\t\t\t\t// When focusing newly mounted toolbars,\n\t\t\t\t\t\t// the position of the popover is often not right on the first render\n\t\t\t\t\t\t// This prevents the layout shifts when focusing the dialogs.\n\t\t\t\t\t\tpreventScroll: true,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn () => {\n\t\t\twindow.cancelAnimationFrame( raf );\n\t\t\tif ( ! onIndexChange || ! navigableToolbarRef ) return;\n\t\t\t// When the toolbar element is unmounted and onIndexChange is passed, we\n\t\t\t// pass the focused toolbar item index so it can be hydrated later.\n\t\t\tconst items = getAllToolbarItemsIn( navigableToolbarRef );\n\t\t\tconst index = items.findIndex( ( item ) => item.tabIndex === 0 );\n\t\t\tonIndexChange( index );\n\t\t};\n\t}, [ initialIndex, initialFocusOnMount, toolbarRef ] );\n\n\tconst { lastFocus } = useSelect( ( select ) => {\n\t\tconst { getLastFocus } = select( blockEditorStore );\n\t\treturn {\n\t\t\tlastFocus: getLastFocus(),\n\t\t};\n\t}, [] );\n\t/**\n\t * Handles returning focus to the block editor canvas when pressing escape.\n\t */\n\tuseEffect( () => {\n\t\tconst navigableToolbarRef = toolbarRef.current;\n\n\t\tif ( focusEditorOnEscape ) {\n\t\t\tconst handleKeyDown = ( event ) => {\n\t\t\t\tif ( event.keyCode === ESCAPE && lastFocus?.current ) {\n\t\t\t\t\t// Focus the last focused element when pressing escape.\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tlastFocus.current.focus();\n\t\t\t\t}\n\t\t\t};\n\t\t\tnavigableToolbarRef.addEventListener( 'keydown', handleKeyDown );\n\t\t\treturn () => {\n\t\t\t\tnavigableToolbarRef.removeEventListener(\n\t\t\t\t\t'keydown',\n\t\t\t\t\thandleKeyDown\n\t\t\t\t);\n\t\t\t};\n\t\t}\n\t}, [ focusEditorOnEscape, lastFocus, toolbarRef ] );\n}\n\nexport default function NavigableToolbar( {\n\tchildren,\n\tfocusOnMount,\n\tfocusEditorOnEscape = false,\n\tshouldUseKeyboardFocusShortcut = true,\n\t__experimentalInitialIndex: initialIndex,\n\t__experimentalOnIndexChange: onIndexChange,\n\t...props\n} ) {\n\tconst toolbarRef = useRef();\n\tconst isAccessibleToolbar = useIsAccessibleToolbar( toolbarRef );\n\n\tuseToolbarFocus( {\n\t\ttoolbarRef,\n\t\tfocusOnMount,\n\t\tisAccessibleToolbar,\n\t\tdefaultIndex: initialIndex,\n\t\tonIndexChange,\n\t\tshouldUseKeyboardFocusShortcut,\n\t\tfocusEditorOnEscape,\n\t} );\n\n\tif ( isAccessibleToolbar ) {\n\t\treturn (\n\t\t\t<Toolbar\n\t\t\t\tlabel={ props[ 'aria-label' ] }\n\t\t\t\tref={ toolbarRef }\n\t\t\t\t{ ...props }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Toolbar>\n\t\t);\n\t}\n\n\treturn (\n\t\t<NavigableMenu\n\t\t\torientation=\"horizontal\"\n\t\t\trole=\"toolbar\"\n\t\t\tref={ toolbarRef }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t</NavigableMenu>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["NavigableMenu","Toolbar","useState","useRef","useLayoutEffect","useEffect","useCallback","useSelect","deprecated","focus","useShortcut","ESCAPE","store","blockEditorStore","hasOnlyToolbarItem","elements","dataProp","some","element","dataset","getAllToolbarItemsIn","container","Array","from","querySelectorAll","hasFocusWithin","contains","ownerDocument","activeElement","focusFirstTabbableIn","firstTabbable","tabbable","find","preventScroll","useIsAccessibleToolbar","toolbarRef","initialAccessibleToolbarState","isAccessibleToolbar","setIsAccessibleToolbar","determineIsAccessibleToolbar","tabbables","current","onlyToolbarItem","since","alternative","link","observer","window","MutationObserver","observe","childList","subtree","disconnect","useToolbarFocus","focusOnMount","defaultIndex","onIndexChange","shouldUseKeyboardFocusShortcut","focusEditorOnEscape","initialFocusOnMount","initialIndex","focusToolbar","focusToolbarViaShortcut","navigableToolbarRef","raf","requestAnimationFrame","items","index","cancelAnimationFrame","findIndex","item","tabIndex","lastFocus","select","getLastFocus","handleKeyDown","event","keyCode","preventDefault","addEventListener","removeEventListener","NavigableToolbar","children","__experimentalInitialIndex","__experimentalOnIndexChange","props","createElement","label","ref","orientation","role"],"sources":["@wordpress/block-editor/src/components/navigable-toolbar/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { NavigableMenu, Toolbar } from '@wordpress/components';\nimport {\n\tuseState,\n\tuseRef,\n\tuseLayoutEffect,\n\tuseEffect,\n\tuseCallback,\n} from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport deprecated from '@wordpress/deprecated';\nimport { focus } from '@wordpress/dom';\nimport { useShortcut } from '@wordpress/keyboard-shortcuts';\nimport { ESCAPE } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nfunction hasOnlyToolbarItem( elements ) {\n\tconst dataProp = 'toolbarItem';\n\treturn ! elements.some( ( element ) => ! ( dataProp in element.dataset ) );\n}\n\nfunction getAllToolbarItemsIn( container ) {\n\treturn Array.from( container.querySelectorAll( '[data-toolbar-item]' ) );\n}\n\nfunction hasFocusWithin( container ) {\n\treturn container.contains( container.ownerDocument.activeElement );\n}\n\nfunction focusFirstTabbableIn( container ) {\n\tconst [ firstTabbable ] = focus.tabbable.find( container );\n\n\tif ( firstTabbable ) {\n\t\tfirstTabbable.focus( {\n\t\t\t// When focusing newly mounted toolbars,\n\t\t\t// the position of the popover is often not right on the first render\n\t\t\t// This prevents the layout shifts when focusing the dialogs.\n\t\t\tpreventScroll: true,\n\t\t} );\n\t}\n}\n\nfunction useIsAccessibleToolbar( toolbarRef ) {\n\t/*\n\t * By default, we'll assume the starting accessible state of the Toolbar\n\t * is true, as it seems to be the most common case.\n\t *\n\t * Transitioning from an (initial) false to true state causes the\n\t * <Toolbar /> component to mount twice, which is causing undesired\n\t * side-effects. These side-effects appear to only affect certain\n\t * E2E tests.\n\t *\n\t * This was initial discovered in this pull-request:\n\t * https://github.com/WordPress/gutenberg/pull/23425\n\t */\n\tconst initialAccessibleToolbarState = true;\n\n\t// By default, it's gonna render NavigableMenu. If all the tabbable elements\n\t// inside the toolbar are ToolbarItem components (or derived components like\n\t// ToolbarButton), then we can wrap them with the accessible Toolbar\n\t// component.\n\tconst [ isAccessibleToolbar, setIsAccessibleToolbar ] = useState(\n\t\tinitialAccessibleToolbarState\n\t);\n\n\tconst determineIsAccessibleToolbar = useCallback( () => {\n\t\tconst tabbables = focus.tabbable.find( toolbarRef.current );\n\t\tconst onlyToolbarItem = hasOnlyToolbarItem( tabbables );\n\t\tif ( ! onlyToolbarItem ) {\n\t\t\tdeprecated( 'Using custom components as toolbar controls', {\n\t\t\t\tsince: '5.6',\n\t\t\t\talternative:\n\t\t\t\t\t'ToolbarItem, ToolbarButton or ToolbarDropdownMenu components',\n\t\t\t\tlink: 'https://developer.wordpress.org/block-editor/components/toolbar-button/#inside-blockcontrols',\n\t\t\t} );\n\t\t}\n\t\tsetIsAccessibleToolbar( onlyToolbarItem );\n\t}, [ toolbarRef ] );\n\n\tuseLayoutEffect( () => {\n\t\t// Toolbar buttons may be rendered asynchronously, so we use\n\t\t// MutationObserver to check if the toolbar subtree has been modified.\n\t\tconst observer = new window.MutationObserver(\n\t\t\tdetermineIsAccessibleToolbar\n\t\t);\n\t\tobserver.observe( toolbarRef.current, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true,\n\t\t} );\n\t\treturn () => observer.disconnect();\n\t}, [ determineIsAccessibleToolbar, isAccessibleToolbar, toolbarRef ] );\n\n\treturn isAccessibleToolbar;\n}\n\nfunction useToolbarFocus( {\n\ttoolbarRef,\n\tfocusOnMount,\n\tisAccessibleToolbar,\n\tdefaultIndex,\n\tonIndexChange,\n\tshouldUseKeyboardFocusShortcut,\n\tfocusEditorOnEscape,\n} ) {\n\t// Make sure we don't use modified versions of this prop.\n\tconst [ initialFocusOnMount ] = useState( focusOnMount );\n\tconst [ initialIndex ] = useState( defaultIndex );\n\n\tconst focusToolbar = useCallback( () => {\n\t\tfocusFirstTabbableIn( toolbarRef.current );\n\t}, [ toolbarRef ] );\n\n\tconst focusToolbarViaShortcut = () => {\n\t\tif ( shouldUseKeyboardFocusShortcut ) {\n\t\t\tfocusToolbar();\n\t\t}\n\t};\n\n\t// Focus on toolbar when pressing alt+F10 when the toolbar is visible.\n\tuseShortcut( 'core/block-editor/focus-toolbar', focusToolbarViaShortcut );\n\n\tuseEffect( () => {\n\t\tif ( initialFocusOnMount ) {\n\t\t\tfocusToolbar();\n\t\t}\n\t}, [ isAccessibleToolbar, initialFocusOnMount, focusToolbar ] );\n\n\tuseEffect( () => {\n\t\t// Store ref so we have access on useEffect cleanup: https://legacy.reactjs.org/blog/2020/08/10/react-v17-rc.html#effect-cleanup-timing\n\t\tconst navigableToolbarRef = toolbarRef.current;\n\t\t// If initialIndex is passed, we focus on that toolbar item when the\n\t\t// toolbar gets mounted and initial focus is not forced.\n\t\t// We have to wait for the next browser paint because block controls aren't\n\t\t// rendered right away when the toolbar gets mounted.\n\t\tlet raf = 0;\n\t\tif ( ! initialFocusOnMount ) {\n\t\t\traf = window.requestAnimationFrame( () => {\n\t\t\t\tconst items = getAllToolbarItemsIn( navigableToolbarRef );\n\t\t\t\tconst index = initialIndex || 0;\n\t\t\t\tif ( items[ index ] && hasFocusWithin( navigableToolbarRef ) ) {\n\t\t\t\t\titems[ index ].focus( {\n\t\t\t\t\t\t// When focusing newly mounted toolbars,\n\t\t\t\t\t\t// the position of the popover is often not right on the first render\n\t\t\t\t\t\t// This prevents the layout shifts when focusing the dialogs.\n\t\t\t\t\t\tpreventScroll: true,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn () => {\n\t\t\twindow.cancelAnimationFrame( raf );\n\t\t\tif ( ! onIndexChange || ! navigableToolbarRef ) return;\n\t\t\t// When the toolbar element is unmounted and onIndexChange is passed, we\n\t\t\t// pass the focused toolbar item index so it can be hydrated later.\n\t\t\tconst items = getAllToolbarItemsIn( navigableToolbarRef );\n\t\t\tconst index = items.findIndex( ( item ) => item.tabIndex === 0 );\n\t\t\tonIndexChange( index );\n\t\t};\n\t}, [ initialIndex, initialFocusOnMount, onIndexChange, toolbarRef ] );\n\n\tconst { lastFocus } = useSelect( ( select ) => {\n\t\tconst { getLastFocus } = select( blockEditorStore );\n\t\treturn {\n\t\t\tlastFocus: getLastFocus(),\n\t\t};\n\t}, [] );\n\t/**\n\t * Handles returning focus to the block editor canvas when pressing escape.\n\t */\n\tuseEffect( () => {\n\t\tconst navigableToolbarRef = toolbarRef.current;\n\n\t\tif ( focusEditorOnEscape ) {\n\t\t\tconst handleKeyDown = ( event ) => {\n\t\t\t\tif ( event.keyCode === ESCAPE && lastFocus?.current ) {\n\t\t\t\t\t// Focus the last focused element when pressing escape.\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tlastFocus.current.focus();\n\t\t\t\t}\n\t\t\t};\n\t\t\tnavigableToolbarRef.addEventListener( 'keydown', handleKeyDown );\n\t\t\treturn () => {\n\t\t\t\tnavigableToolbarRef.removeEventListener(\n\t\t\t\t\t'keydown',\n\t\t\t\t\thandleKeyDown\n\t\t\t\t);\n\t\t\t};\n\t\t}\n\t}, [ focusEditorOnEscape, lastFocus, toolbarRef ] );\n}\n\nexport default function NavigableToolbar( {\n\tchildren,\n\tfocusOnMount,\n\tfocusEditorOnEscape = false,\n\tshouldUseKeyboardFocusShortcut = true,\n\t__experimentalInitialIndex: initialIndex,\n\t__experimentalOnIndexChange: onIndexChange,\n\t...props\n} ) {\n\tconst toolbarRef = useRef();\n\tconst isAccessibleToolbar = useIsAccessibleToolbar( toolbarRef );\n\n\tuseToolbarFocus( {\n\t\ttoolbarRef,\n\t\tfocusOnMount,\n\t\tdefaultIndex: initialIndex,\n\t\tonIndexChange,\n\t\tisAccessibleToolbar,\n\t\tshouldUseKeyboardFocusShortcut,\n\t\tfocusEditorOnEscape,\n\t} );\n\n\tif ( isAccessibleToolbar ) {\n\t\treturn (\n\t\t\t<Toolbar\n\t\t\t\tlabel={ props[ 'aria-label' ] }\n\t\t\t\tref={ toolbarRef }\n\t\t\t\t{ ...props }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</Toolbar>\n\t\t);\n\t}\n\n\treturn (\n\t\t<NavigableMenu\n\t\t\torientation=\"horizontal\"\n\t\t\trole=\"toolbar\"\n\t\t\tref={ toolbarRef }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t</NavigableMenu>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,aAAa,EAAEC,OAAO,QAAQ,uBAAuB;AAC9D,SACCC,QAAQ,EACRC,MAAM,EACNC,eAAe,EACfC,SAAS,EACTC,WAAW,QACL,oBAAoB;AAC3B,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,OAAOC,UAAU,MAAM,uBAAuB;AAC9C,SAASC,KAAK,QAAQ,gBAAgB;AACtC,SAASC,WAAW,QAAQ,+BAA+B;AAC3D,SAASC,MAAM,QAAQ,qBAAqB;;AAE5C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAEvD,SAASC,kBAAkBA,CAAEC,QAAQ,EAAG;EACvC,MAAMC,QAAQ,GAAG,aAAa;EAC9B,OAAO,CAAED,QAAQ,CAACE,IAAI,CAAIC,OAAO,IAAM,EAAIF,QAAQ,IAAIE,OAAO,CAACC,OAAO,CAAG,CAAC;AAC3E;AAEA,SAASC,oBAAoBA,CAAEC,SAAS,EAAG;EAC1C,OAAOC,KAAK,CAACC,IAAI,CAAEF,SAAS,CAACG,gBAAgB,CAAE,qBAAsB,CAAE,CAAC;AACzE;AAEA,SAASC,cAAcA,CAAEJ,SAAS,EAAG;EACpC,OAAOA,SAAS,CAACK,QAAQ,CAAEL,SAAS,CAACM,aAAa,CAACC,aAAc,CAAC;AACnE;AAEA,SAASC,oBAAoBA,CAAER,SAAS,EAAG;EAC1C,MAAM,CAAES,aAAa,CAAE,GAAGrB,KAAK,CAACsB,QAAQ,CAACC,IAAI,CAAEX,SAAU,CAAC;EAE1D,IAAKS,aAAa,EAAG;IACpBA,aAAa,CAACrB,KAAK,CAAE;MACpB;MACA;MACA;MACAwB,aAAa,EAAE;IAChB,CAAE,CAAC;EACJ;AACD;AAEA,SAASC,sBAAsBA,CAAEC,UAAU,EAAG;EAC7C;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACC,MAAMC,6BAA6B,GAAG,IAAI;;EAE1C;EACA;EACA;EACA;EACA,MAAM,CAAEC,mBAAmB,EAAEC,sBAAsB,CAAE,GAAGpC,QAAQ,CAC/DkC,6BACD,CAAC;EAED,MAAMG,4BAA4B,GAAGjC,WAAW,CAAE,MAAM;IACvD,MAAMkC,SAAS,GAAG/B,KAAK,CAACsB,QAAQ,CAACC,IAAI,CAAEG,UAAU,CAACM,OAAQ,CAAC;IAC3D,MAAMC,eAAe,GAAG5B,kBAAkB,CAAE0B,SAAU,CAAC;IACvD,IAAK,CAAEE,eAAe,EAAG;MACxBlC,UAAU,CAAE,6CAA6C,EAAE;QAC1DmC,KAAK,EAAE,KAAK;QACZC,WAAW,EACV,8DAA8D;QAC/DC,IAAI,EAAE;MACP,CAAE,CAAC;IACJ;IACAP,sBAAsB,CAAEI,eAAgB,CAAC;EAC1C,CAAC,EAAE,CAAEP,UAAU,CAAG,CAAC;EAEnB/B,eAAe,CAAE,MAAM;IACtB;IACA;IACA,MAAM0C,QAAQ,GAAG,IAAIC,MAAM,CAACC,gBAAgB,CAC3CT,4BACD,CAAC;IACDO,QAAQ,CAACG,OAAO,CAAEd,UAAU,CAACM,OAAO,EAAE;MACrCS,SAAS,EAAE,IAAI;MACfC,OAAO,EAAE;IACV,CAAE,CAAC;IACH,OAAO,MAAML,QAAQ,CAACM,UAAU,CAAC,CAAC;EACnC,CAAC,EAAE,CAAEb,4BAA4B,EAAEF,mBAAmB,EAAEF,UAAU,CAAG,CAAC;EAEtE,OAAOE,mBAAmB;AAC3B;AAEA,SAASgB,eAAeA,CAAE;EACzBlB,UAAU;EACVmB,YAAY;EACZjB,mBAAmB;EACnBkB,YAAY;EACZC,aAAa;EACbC,8BAA8B;EAC9BC;AACD,CAAC,EAAG;EACH;EACA,MAAM,CAAEC,mBAAmB,CAAE,GAAGzD,QAAQ,CAAEoD,YAAa,CAAC;EACxD,MAAM,CAAEM,YAAY,CAAE,GAAG1D,QAAQ,CAAEqD,YAAa,CAAC;EAEjD,MAAMM,YAAY,GAAGvD,WAAW,CAAE,MAAM;IACvCuB,oBAAoB,CAAEM,UAAU,CAACM,OAAQ,CAAC;EAC3C,CAAC,EAAE,CAAEN,UAAU,CAAG,CAAC;EAEnB,MAAM2B,uBAAuB,GAAGA,CAAA,KAAM;IACrC,IAAKL,8BAA8B,EAAG;MACrCI,YAAY,CAAC,CAAC;IACf;EACD,CAAC;;EAED;EACAnD,WAAW,CAAE,iCAAiC,EAAEoD,uBAAwB,CAAC;EAEzEzD,SAAS,CAAE,MAAM;IAChB,IAAKsD,mBAAmB,EAAG;MAC1BE,YAAY,CAAC,CAAC;IACf;EACD,CAAC,EAAE,CAAExB,mBAAmB,EAAEsB,mBAAmB,EAAEE,YAAY,CAAG,CAAC;EAE/DxD,SAAS,CAAE,MAAM;IAChB;IACA,MAAM0D,mBAAmB,GAAG5B,UAAU,CAACM,OAAO;IAC9C;IACA;IACA;IACA;IACA,IAAIuB,GAAG,GAAG,CAAC;IACX,IAAK,CAAEL,mBAAmB,EAAG;MAC5BK,GAAG,GAAGjB,MAAM,CAACkB,qBAAqB,CAAE,MAAM;QACzC,MAAMC,KAAK,GAAG9C,oBAAoB,CAAE2C,mBAAoB,CAAC;QACzD,MAAMI,KAAK,GAAGP,YAAY,IAAI,CAAC;QAC/B,IAAKM,KAAK,CAAEC,KAAK,CAAE,IAAI1C,cAAc,CAAEsC,mBAAoB,CAAC,EAAG;UAC9DG,KAAK,CAAEC,KAAK,CAAE,CAAC1D,KAAK,CAAE;YACrB;YACA;YACA;YACAwB,aAAa,EAAE;UAChB,CAAE,CAAC;QACJ;MACD,CAAE,CAAC;IACJ;IACA,OAAO,MAAM;MACZc,MAAM,CAACqB,oBAAoB,CAAEJ,GAAI,CAAC;MAClC,IAAK,CAAER,aAAa,IAAI,CAAEO,mBAAmB,EAAG;MAChD;MACA;MACA,MAAMG,KAAK,GAAG9C,oBAAoB,CAAE2C,mBAAoB,CAAC;MACzD,MAAMI,KAAK,GAAGD,KAAK,CAACG,SAAS,CAAIC,IAAI,IAAMA,IAAI,CAACC,QAAQ,KAAK,CAAE,CAAC;MAChEf,aAAa,CAAEW,KAAM,CAAC;IACvB,CAAC;EACF,CAAC,EAAE,CAAEP,YAAY,EAAED,mBAAmB,EAAEH,aAAa,EAAErB,UAAU,CAAG,CAAC;EAErE,MAAM;IAAEqC;EAAU,CAAC,GAAGjE,SAAS,CAAIkE,MAAM,IAAM;IAC9C,MAAM;MAAEC;IAAa,CAAC,GAAGD,MAAM,CAAE5D,gBAAiB,CAAC;IACnD,OAAO;MACN2D,SAAS,EAAEE,YAAY,CAAC;IACzB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP;AACD;AACA;EACCrE,SAAS,CAAE,MAAM;IAChB,MAAM0D,mBAAmB,GAAG5B,UAAU,CAACM,OAAO;IAE9C,IAAKiB,mBAAmB,EAAG;MAC1B,MAAMiB,aAAa,GAAKC,KAAK,IAAM;QAClC,IAAKA,KAAK,CAACC,OAAO,KAAKlE,MAAM,IAAI6D,SAAS,EAAE/B,OAAO,EAAG;UACrD;UACAmC,KAAK,CAACE,cAAc,CAAC,CAAC;UACtBN,SAAS,CAAC/B,OAAO,CAAChC,KAAK,CAAC,CAAC;QAC1B;MACD,CAAC;MACDsD,mBAAmB,CAACgB,gBAAgB,CAAE,SAAS,EAAEJ,aAAc,CAAC;MAChE,OAAO,MAAM;QACZZ,mBAAmB,CAACiB,mBAAmB,CACtC,SAAS,EACTL,aACD,CAAC;MACF,CAAC;IACF;EACD,CAAC,EAAE,CAAEjB,mBAAmB,EAAEc,SAAS,EAAErC,UAAU,CAAG,CAAC;AACpD;AAEA,eAAe,SAAS8C,gBAAgBA,CAAE;EACzCC,QAAQ;EACR5B,YAAY;EACZI,mBAAmB,GAAG,KAAK;EAC3BD,8BAA8B,GAAG,IAAI;EACrC0B,0BAA0B,EAAEvB,YAAY;EACxCwB,2BAA2B,EAAE5B,aAAa;EAC1C,GAAG6B;AACJ,CAAC,EAAG;EACH,MAAMlD,UAAU,GAAGhC,MAAM,CAAC,CAAC;EAC3B,MAAMkC,mBAAmB,GAAGH,sBAAsB,CAAEC,UAAW,CAAC;EAEhEkB,eAAe,CAAE;IAChBlB,UAAU;IACVmB,YAAY;IACZC,YAAY,EAAEK,YAAY;IAC1BJ,aAAa;IACbnB,mBAAmB;IACnBoB,8BAA8B;IAC9BC;EACD,CAAE,CAAC;EAEH,IAAKrB,mBAAmB,EAAG;IAC1B,OACCiD,aAAA,CAACrF,OAAO;MACPsF,KAAK,EAAGF,KAAK,CAAE,YAAY,CAAI;MAC/BG,GAAG,EAAGrD,UAAY;MAAA,GACbkD;IAAK,GAERH,QACM,CAAC;EAEZ;EAEA,OACCI,aAAA,CAACtF,aAAa;IACbyF,WAAW,EAAC,YAAY;IACxBC,IAAI,EAAC,SAAS;IACdF,GAAG,EAAGrD,UAAY;IAAA,GACbkD;EAAK,GAERH,QACY,CAAC;AAElB"}
|
|
@@ -1,67 +1,11 @@
|
|
|
1
|
-
import { createElement, Fragment } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* External dependencies
|
|
4
|
-
*/
|
|
5
|
-
import classnames from 'classnames';
|
|
6
|
-
|
|
7
1
|
/**
|
|
8
2
|
* WordPress dependencies
|
|
9
3
|
*/
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
viewLabel,
|
|
17
|
-
className,
|
|
18
|
-
isEnabled = true,
|
|
19
|
-
deviceType,
|
|
20
|
-
setDeviceType,
|
|
21
|
-
label,
|
|
22
|
-
showIconLabels
|
|
23
|
-
}) {
|
|
24
|
-
const isMobile = useViewportMatch('small', '<');
|
|
25
|
-
if (isMobile) return null;
|
|
26
|
-
const popoverProps = {
|
|
27
|
-
className: classnames(className, 'block-editor-post-preview__dropdown-content'),
|
|
28
|
-
placement: 'bottom-end'
|
|
29
|
-
};
|
|
30
|
-
const toggleProps = {
|
|
31
|
-
className: 'block-editor-post-preview__button-toggle',
|
|
32
|
-
disabled: !isEnabled,
|
|
33
|
-
__experimentalIsFocusable: !isEnabled,
|
|
34
|
-
children: viewLabel,
|
|
35
|
-
showTooltip: !showIconLabels
|
|
36
|
-
};
|
|
37
|
-
const menuProps = {
|
|
38
|
-
'aria-label': __('View options')
|
|
39
|
-
};
|
|
40
|
-
const deviceIcons = {
|
|
41
|
-
mobile,
|
|
42
|
-
tablet,
|
|
43
|
-
desktop
|
|
44
|
-
};
|
|
45
|
-
return createElement(DropdownMenu, {
|
|
46
|
-
className: "block-editor-post-preview__dropdown",
|
|
47
|
-
popoverProps: popoverProps,
|
|
48
|
-
toggleProps: toggleProps,
|
|
49
|
-
menuProps: menuProps,
|
|
50
|
-
icon: deviceIcons[deviceType.toLowerCase()],
|
|
51
|
-
label: label || __('Preview'),
|
|
52
|
-
disableOpenOnArrowDown: !isEnabled
|
|
53
|
-
}, renderProps => createElement(Fragment, null, createElement(MenuGroup, null, createElement(MenuItem, {
|
|
54
|
-
className: "block-editor-post-preview__button-resize",
|
|
55
|
-
onClick: () => setDeviceType('Desktop'),
|
|
56
|
-
icon: deviceType === 'Desktop' && check
|
|
57
|
-
}, __('Desktop')), createElement(MenuItem, {
|
|
58
|
-
className: "block-editor-post-preview__button-resize",
|
|
59
|
-
onClick: () => setDeviceType('Tablet'),
|
|
60
|
-
icon: deviceType === 'Tablet' && check
|
|
61
|
-
}, __('Tablet')), createElement(MenuItem, {
|
|
62
|
-
className: "block-editor-post-preview__button-resize",
|
|
63
|
-
onClick: () => setDeviceType('Mobile'),
|
|
64
|
-
icon: deviceType === 'Mobile' && check
|
|
65
|
-
}, __('Mobile'))), children?.(renderProps)));
|
|
4
|
+
import deprecated from '@wordpress/deprecated';
|
|
5
|
+
export default function PreviewOptions() {
|
|
6
|
+
deprecated('wp.blockEditor.PreviewOptions', {
|
|
7
|
+
version: '6.5'
|
|
8
|
+
});
|
|
9
|
+
return null;
|
|
66
10
|
}
|
|
67
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["deprecated","PreviewOptions","version"],"sources":["@wordpress/block-editor/src/components/preview-options/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\nexport default function PreviewOptions() {\n\tdeprecated( 'wp.blockEditor.PreviewOptions', {\n\t\tversion: '6.5',\n\t} );\n\treturn null;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,uBAAuB;AAE9C,eAAe,SAASC,cAAcA,CAAA,EAAG;EACxCD,UAAU,CAAE,+BAA+B,EAAE;IAC5CE,OAAO,EAAE;EACV,CAAE,CAAC;EACH,OAAO,IAAI;AACZ"}
|
|
@@ -6,40 +6,44 @@ import { RawHTML } from '@wordpress/element';
|
|
|
6
6
|
import { children as childrenSource } from '@wordpress/blocks';
|
|
7
7
|
import deprecated from '@wordpress/deprecated';
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import RichText from './';
|
|
13
|
+
|
|
9
14
|
/**
|
|
10
15
|
* Internal dependencies
|
|
11
16
|
*/
|
|
12
17
|
import { getMultilineTag } from './utils';
|
|
13
|
-
export
|
|
18
|
+
export function Content({
|
|
14
19
|
value,
|
|
15
20
|
tagName: Tag,
|
|
16
21
|
multiline,
|
|
22
|
+
format,
|
|
17
23
|
...props
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
}) {
|
|
25
|
+
if (RichText.isEmpty(value)) {
|
|
26
|
+
const MultilineTag = getMultilineTag(multiline);
|
|
27
|
+
value = MultilineTag ? createElement(MultilineTag, null) : null;
|
|
28
|
+
} else if (Array.isArray(value)) {
|
|
21
29
|
deprecated('wp.blockEditor.RichText value prop as children type', {
|
|
22
30
|
since: '6.1',
|
|
23
31
|
version: '6.3',
|
|
24
32
|
alternative: 'value prop as string',
|
|
25
33
|
link: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/'
|
|
26
34
|
});
|
|
27
|
-
value = childrenSource.toHTML(value);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
format,
|
|
37
|
-
...restProps
|
|
38
|
-
} = props;
|
|
39
|
-
return createElement(Tag, {
|
|
40
|
-
...restProps
|
|
41
|
-
}, content);
|
|
35
|
+
value = createElement(RawHTML, null, childrenSource.toHTML(value));
|
|
36
|
+
} else if (typeof value === 'string') {
|
|
37
|
+
// To do: deprecate.
|
|
38
|
+
value = createElement(RawHTML, null, value);
|
|
39
|
+
} else {
|
|
40
|
+
// To do: create a toReactComponent method on RichTextData, which we
|
|
41
|
+
// might in the future also use for the editable tree. See
|
|
42
|
+
// https://github.com/WordPress/gutenberg/pull/41655.
|
|
43
|
+
value = createElement(RawHTML, null, value.toHTMLString());
|
|
42
44
|
}
|
|
43
|
-
return
|
|
44
|
-
|
|
45
|
+
return Tag ? createElement(Tag, {
|
|
46
|
+
...props
|
|
47
|
+
}, value) : value;
|
|
48
|
+
}
|
|
45
49
|
//# sourceMappingURL=content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RawHTML","children","childrenSource","deprecated","getMultilineTag","Content","value","tagName","Tag","multiline","
|
|
1
|
+
{"version":3,"names":["RawHTML","children","childrenSource","deprecated","RichText","getMultilineTag","Content","value","tagName","Tag","multiline","format","props","isEmpty","MultilineTag","createElement","Array","isArray","since","version","alternative","link","toHTML","toHTMLString"],"sources":["@wordpress/block-editor/src/components/rich-text/content.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RawHTML } from '@wordpress/element';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport RichText from './';\n\n/**\n * Internal dependencies\n */\nimport { getMultilineTag } from './utils';\n\nexport function Content( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\tformat,\n\t...props\n} ) {\n\tif ( RichText.isEmpty( value ) ) {\n\t\tconst MultilineTag = getMultilineTag( multiline );\n\t\tvalue = MultilineTag ? <MultilineTag /> : null;\n\t} else if ( Array.isArray( value ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\t\tvalue = <RawHTML>{ childrenSource.toHTML( value ) }</RawHTML>;\n\t} else if ( typeof value === 'string' ) {\n\t\t// To do: deprecate.\n\t\tvalue = <RawHTML>{ value }</RawHTML>;\n\t} else {\n\t\t// To do: create a toReactComponent method on RichTextData, which we\n\t\t// might in the future also use for the editable tree. See\n\t\t// https://github.com/WordPress/gutenberg/pull/41655.\n\t\tvalue = <RawHTML>{ value.toHTMLString() }</RawHTML>;\n\t}\n\n\treturn Tag ? <Tag { ...props }>{ value }</Tag> : value;\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,QAAQ,IAAIC,cAAc,QAAQ,mBAAmB;AAC9D,OAAOC,UAAU,MAAM,uBAAuB;;AAE9C;AACA;AACA;AACA,OAAOC,QAAQ,MAAM,IAAI;;AAEzB;AACA;AACA;AACA,SAASC,eAAe,QAAQ,SAAS;AAEzC,OAAO,SAASC,OAAOA,CAAE;EACxBC,KAAK;EACLC,OAAO,EAAEC,GAAG;EACZC,SAAS;EACTC,MAAM;EACN,GAAGC;AACJ,CAAC,EAAG;EACH,IAAKR,QAAQ,CAACS,OAAO,CAAEN,KAAM,CAAC,EAAG;IAChC,MAAMO,YAAY,GAAGT,eAAe,CAAEK,SAAU,CAAC;IACjDH,KAAK,GAAGO,YAAY,GAAGC,aAAA,CAACD,YAAY,MAAE,CAAC,GAAG,IAAI;EAC/C,CAAC,MAAM,IAAKE,KAAK,CAACC,OAAO,CAAEV,KAAM,CAAC,EAAG;IACpCJ,UAAU,CAAE,qDAAqD,EAAE;MAClEe,KAAK,EAAE,KAAK;MACZC,OAAO,EAAE,KAAK;MACdC,WAAW,EAAE,sBAAsB;MACnCC,IAAI,EAAE;IACP,CAAE,CAAC;IACHd,KAAK,GAAGQ,aAAA,CAACf,OAAO,QAAGE,cAAc,CAACoB,MAAM,CAAEf,KAAM,CAAY,CAAC;EAC9D,CAAC,MAAM,IAAK,OAAOA,KAAK,KAAK,QAAQ,EAAG;IACvC;IACAA,KAAK,GAAGQ,aAAA,CAACf,OAAO,QAAGO,KAAgB,CAAC;EACrC,CAAC,MAAM;IACN;IACA;IACA;IACAA,KAAK,GAAGQ,aAAA,CAACf,OAAO,QAAGO,KAAK,CAACgB,YAAY,CAAC,CAAY,CAAC;EACpD;EAEA,OAAOd,GAAG,GAAGM,aAAA,CAACN,GAAG;IAAA,GAAMG;EAAK,GAAKL,KAAY,CAAC,GAAGA,KAAK;AACvD"}
|
|
@@ -4,6 +4,7 @@ import { createElement } from "react";
|
|
|
4
4
|
*/
|
|
5
5
|
import { RawHTML, StrictMode, Fragment } from '@wordpress/element';
|
|
6
6
|
import { getSaveElement, __unstableGetBlockProps as getBlockProps } from '@wordpress/blocks';
|
|
7
|
+
import { RichTextData } from '@wordpress/rich-text';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Internal dependencies
|
|
@@ -81,6 +82,6 @@ export function getRichTextValues(blocks = []) {
|
|
|
81
82
|
const values = [];
|
|
82
83
|
addValuesForBlocks(values, blocks);
|
|
83
84
|
getBlockProps.skipFilters = false;
|
|
84
|
-
return values;
|
|
85
|
+
return values.map(value => value instanceof RichTextData ? value : RichTextData.fromHTMLString(value));
|
|
85
86
|
}
|
|
86
87
|
//# sourceMappingURL=get-rich-text-values.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RawHTML","StrictMode","Fragment","getSaveElement","__unstableGetBlockProps","getBlockProps","InnerBlocks","Content","addValuesForElement","element","values","innerBlocks","undefined","Array","isArray","addValuesForElements","type","props","children","addValuesForBlocks","push","value","el","prototype","render","args","i","length","blocks","name","attributes","saveElement","createElement","getRichTextValues","skipFilters"],"sources":["@wordpress/block-editor/src/components/rich-text/get-rich-text-values.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RawHTML, StrictMode, Fragment } from '@wordpress/element';\nimport {\n\tgetSaveElement,\n\t__unstableGetBlockProps as getBlockProps,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport InnerBlocks from '../inner-blocks';\nimport { Content } from './content';\n\n/*\n * This function is similar to `@wordpress/element`'s `renderToString` function,\n * except that it does not render the elements to a string, but instead collects\n * the values of all rich text `Content` elements.\n */\nfunction addValuesForElement( element, values, innerBlocks ) {\n\tif ( null === element || undefined === element || false === element ) {\n\t\treturn;\n\t}\n\n\tif ( Array.isArray( element ) ) {\n\t\treturn addValuesForElements( element, values, innerBlocks );\n\t}\n\n\tswitch ( typeof element ) {\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn;\n\t}\n\n\tconst { type, props } = element;\n\n\tswitch ( type ) {\n\t\tcase StrictMode:\n\t\tcase Fragment:\n\t\t\treturn addValuesForElements( props.children, values, innerBlocks );\n\t\tcase RawHTML:\n\t\t\treturn;\n\t\tcase InnerBlocks.Content:\n\t\t\treturn addValuesForBlocks( values, innerBlocks );\n\t\tcase Content:\n\t\t\tvalues.push( props.value );\n\t\t\treturn;\n\t}\n\n\tswitch ( typeof type ) {\n\t\tcase 'string':\n\t\t\tif ( typeof props.children !== 'undefined' ) {\n\t\t\t\treturn addValuesForElements(\n\t\t\t\t\tprops.children,\n\t\t\t\t\tvalues,\n\t\t\t\t\tinnerBlocks\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\tcase 'function':\n\t\t\tconst el =\n\t\t\t\ttype.prototype && typeof type.prototype.render === 'function'\n\t\t\t\t\t? new type( props ).render()\n\t\t\t\t\t: type( props );\n\t\t\treturn addValuesForElement( el, values, innerBlocks );\n\t}\n}\n\nfunction addValuesForElements( children, ...args ) {\n\tchildren = Array.isArray( children ) ? children : [ children ];\n\n\tfor ( let i = 0; i < children.length; i++ ) {\n\t\taddValuesForElement( children[ i ], ...args );\n\t}\n}\n\nfunction addValuesForBlocks( values, blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tconst { name, attributes, innerBlocks } = blocks[ i ];\n\t\tconst saveElement = getSaveElement(\n\t\t\tname,\n\t\t\tattributes,\n\t\t\t// Instead of letting save elements use `useInnerBlocksProps.save`,\n\t\t\t// force them to use InnerBlocks.Content instead so we can intercept\n\t\t\t// a single component.\n\t\t\t<InnerBlocks.Content />\n\t\t);\n\t\taddValuesForElement( saveElement, values, innerBlocks );\n\t}\n}\n\nexport function getRichTextValues( blocks = [] ) {\n\tgetBlockProps.skipFilters = true;\n\tconst values = [];\n\taddValuesForBlocks( values, blocks );\n\tgetBlockProps.skipFilters = false;\n\treturn values;\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,OAAO,EAAEC,UAAU,EAAEC,QAAQ,QAAQ,oBAAoB;AAClE,SACCC,cAAc,EACdC,uBAAuB,IAAIC,aAAa,QAClC,mBAAmB;;
|
|
1
|
+
{"version":3,"names":["RawHTML","StrictMode","Fragment","getSaveElement","__unstableGetBlockProps","getBlockProps","RichTextData","InnerBlocks","Content","addValuesForElement","element","values","innerBlocks","undefined","Array","isArray","addValuesForElements","type","props","children","addValuesForBlocks","push","value","el","prototype","render","args","i","length","blocks","name","attributes","saveElement","createElement","getRichTextValues","skipFilters","map","fromHTMLString"],"sources":["@wordpress/block-editor/src/components/rich-text/get-rich-text-values.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { RawHTML, StrictMode, Fragment } from '@wordpress/element';\nimport {\n\tgetSaveElement,\n\t__unstableGetBlockProps as getBlockProps,\n} from '@wordpress/blocks';\nimport { RichTextData } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport InnerBlocks from '../inner-blocks';\nimport { Content } from './content';\n\n/*\n * This function is similar to `@wordpress/element`'s `renderToString` function,\n * except that it does not render the elements to a string, but instead collects\n * the values of all rich text `Content` elements.\n */\nfunction addValuesForElement( element, values, innerBlocks ) {\n\tif ( null === element || undefined === element || false === element ) {\n\t\treturn;\n\t}\n\n\tif ( Array.isArray( element ) ) {\n\t\treturn addValuesForElements( element, values, innerBlocks );\n\t}\n\n\tswitch ( typeof element ) {\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn;\n\t}\n\n\tconst { type, props } = element;\n\n\tswitch ( type ) {\n\t\tcase StrictMode:\n\t\tcase Fragment:\n\t\t\treturn addValuesForElements( props.children, values, innerBlocks );\n\t\tcase RawHTML:\n\t\t\treturn;\n\t\tcase InnerBlocks.Content:\n\t\t\treturn addValuesForBlocks( values, innerBlocks );\n\t\tcase Content:\n\t\t\tvalues.push( props.value );\n\t\t\treturn;\n\t}\n\n\tswitch ( typeof type ) {\n\t\tcase 'string':\n\t\t\tif ( typeof props.children !== 'undefined' ) {\n\t\t\t\treturn addValuesForElements(\n\t\t\t\t\tprops.children,\n\t\t\t\t\tvalues,\n\t\t\t\t\tinnerBlocks\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\tcase 'function':\n\t\t\tconst el =\n\t\t\t\ttype.prototype && typeof type.prototype.render === 'function'\n\t\t\t\t\t? new type( props ).render()\n\t\t\t\t\t: type( props );\n\t\t\treturn addValuesForElement( el, values, innerBlocks );\n\t}\n}\n\nfunction addValuesForElements( children, ...args ) {\n\tchildren = Array.isArray( children ) ? children : [ children ];\n\n\tfor ( let i = 0; i < children.length; i++ ) {\n\t\taddValuesForElement( children[ i ], ...args );\n\t}\n}\n\nfunction addValuesForBlocks( values, blocks ) {\n\tfor ( let i = 0; i < blocks.length; i++ ) {\n\t\tconst { name, attributes, innerBlocks } = blocks[ i ];\n\t\tconst saveElement = getSaveElement(\n\t\t\tname,\n\t\t\tattributes,\n\t\t\t// Instead of letting save elements use `useInnerBlocksProps.save`,\n\t\t\t// force them to use InnerBlocks.Content instead so we can intercept\n\t\t\t// a single component.\n\t\t\t<InnerBlocks.Content />\n\t\t);\n\t\taddValuesForElement( saveElement, values, innerBlocks );\n\t}\n}\n\nexport function getRichTextValues( blocks = [] ) {\n\tgetBlockProps.skipFilters = true;\n\tconst values = [];\n\taddValuesForBlocks( values, blocks );\n\tgetBlockProps.skipFilters = false;\n\treturn values.map( ( value ) =>\n\t\tvalue instanceof RichTextData\n\t\t\t? value\n\t\t\t: RichTextData.fromHTMLString( value )\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -9,10 +9,8 @@ import classnames from 'classnames';
|
|
|
9
9
|
*/
|
|
10
10
|
import { useRef, useCallback, forwardRef, createContext } from '@wordpress/element';
|
|
11
11
|
import { useDispatch, useSelect } from '@wordpress/data';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { __unstableUseRichText as useRichText, __unstableCreateElement, removeFormat } from '@wordpress/rich-text';
|
|
15
|
-
import deprecated from '@wordpress/deprecated';
|
|
12
|
+
import { useMergeRefs } from '@wordpress/compose';
|
|
13
|
+
import { __unstableUseRichText as useRichText, removeFormat } from '@wordpress/rich-text';
|
|
16
14
|
import { Popover } from '@wordpress/components';
|
|
17
15
|
|
|
18
16
|
/**
|
|
@@ -38,7 +36,7 @@ import { useFirefoxCompat } from './use-firefox-compat';
|
|
|
38
36
|
import FormatEdit from './format-edit';
|
|
39
37
|
import { getAllowedFormats } from './utils';
|
|
40
38
|
import { Content } from './content';
|
|
41
|
-
import
|
|
39
|
+
import { withDeprecations } from './with-deprecations';
|
|
42
40
|
export const keyboardShortcutContext = createContext();
|
|
43
41
|
export const inputEventContext = createContext();
|
|
44
42
|
|
|
@@ -321,33 +319,7 @@ export function RichTextWrapper({
|
|
|
321
319
|
tabIndex: props.tabIndex === 0 ? null : props.tabIndex
|
|
322
320
|
}));
|
|
323
321
|
}
|
|
324
|
-
const
|
|
325
|
-
function RichTextSwitcher(props, ref) {
|
|
326
|
-
let value = props.value;
|
|
327
|
-
let onChange = props.onChange;
|
|
328
|
-
|
|
329
|
-
// Handle deprecated format.
|
|
330
|
-
if (Array.isArray(value)) {
|
|
331
|
-
deprecated('wp.blockEditor.RichText value prop as children type', {
|
|
332
|
-
since: '6.1',
|
|
333
|
-
version: '6.3',
|
|
334
|
-
alternative: 'value prop as string',
|
|
335
|
-
link: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/'
|
|
336
|
-
});
|
|
337
|
-
value = childrenSource.toHTML(props.value);
|
|
338
|
-
onChange = newValue => props.onChange(childrenSource.fromDOM(__unstableCreateElement(document, newValue).childNodes));
|
|
339
|
-
}
|
|
340
|
-
const Component = props.multiline ? RichTextMultiline : ForwardedRichTextWrapper;
|
|
341
|
-
const instanceId = useInstanceId(RichTextSwitcher);
|
|
342
|
-
return createElement(Component, {
|
|
343
|
-
...props,
|
|
344
|
-
identifier: props.identifier || instanceId,
|
|
345
|
-
value: value,
|
|
346
|
-
onChange: onChange,
|
|
347
|
-
ref: ref
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
const ForwardedRichTextContainer = forwardRef(RichTextSwitcher);
|
|
322
|
+
const ForwardedRichTextContainer = withDeprecations(forwardRef(RichTextWrapper));
|
|
351
323
|
ForwardedRichTextContainer.Content = Content;
|
|
352
324
|
ForwardedRichTextContainer.isEmpty = value => {
|
|
353
325
|
return !value || value.length === 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["classnames","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","children","childrenSource","useInstanceId","useMergeRefs","__unstableUseRichText","useRichText","__unstableCreateElement","removeFormat","deprecated","Popover","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useMarkPersistent","usePasteHandler","useBeforeInputRules","useInputRules","useDelete","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","useInsertReplacementText","useFirefoxCompat","FormatEdit","getAllowedFormats","Content","RichTextMultiline","keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","tagName","value","adjustedValue","onChange","adjustedOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitAtDoubleLineEnd","onSplitAtDoubleLineEnd","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","forwardedRef","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","getBlockRootClientId","selectionChange","adjustedAllowedFormats","hasFormats","length","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","current","focus","TagName","createElement","Fragment","Provider","__unstableSlotNameProvider","inline","editableContentElement","role","contentEditable","suppressContentEditableWarning","className","tabIndex","ForwardedRichTextWrapper","RichTextSwitcher","Array","isArray","since","version","alternative","link","toHTML","newValue","fromDOM","document","childNodes","Component","instanceId","ForwardedRichTextContainer","isEmpty","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { children as childrenSource } from '@wordpress/blocks';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\t__unstableCreateElement,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useBeforeInputRules } from './use-before-input-rules';\nimport { useInputRules } from './use-input-rules';\nimport { useDelete } from './use-delete';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useInsertReplacementText } from './use-insert-replacement-text';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content } from './content';\nimport RichTextMultiline from './multiline';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nexport function RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: adjustedValue = '',\n\t\tonChange: adjustedOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitAtDoubleLineEnd: onSplitAtDoubleLineEnd,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onFocus() {\n\t\tanchorRef.current?.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseBeforeInputRules( { value, onChange } ),\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseInsertReplacementText(),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseDelete( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={ props.tabIndex === 0 ? null : props.tabIndex }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst ForwardedRichTextWrapper = forwardRef( RichTextWrapper );\n\nfunction RichTextSwitcher( props, ref ) {\n\tlet value = props.value;\n\tlet onChange = props.onChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( value ) ) {\n\t\tdeprecated( 'wp.blockEditor.RichText value prop as children type', {\n\t\t\tsince: '6.1',\n\t\t\tversion: '6.3',\n\t\t\talternative: 'value prop as string',\n\t\t\tlink: 'https://developer.wordpress.org/block-editor/how-to-guides/block-tutorial/introducing-attributes-and-editable-fields/',\n\t\t} );\n\n\t\tvalue = childrenSource.toHTML( props.value );\n\t\tonChange = ( newValue ) =>\n\t\t\tprops.onChange(\n\t\t\t\tchildrenSource.fromDOM(\n\t\t\t\t\t__unstableCreateElement( document, newValue ).childNodes\n\t\t\t\t)\n\t\t\t);\n\t}\n\n\tconst Component = props.multiline\n\t\t? RichTextMultiline\n\t\t: ForwardedRichTextWrapper;\n\tconst instanceId = useInstanceId( RichTextSwitcher );\n\n\treturn (\n\t\t<Component\n\t\t\t{ ...props }\n\t\t\tidentifier={ props.identifier || instanceId }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tref={ ref }\n\t\t/>\n\t);\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextSwitcher );\n\nForwardedRichTextContainer.Content = Content;\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["classnames","useRef","useCallback","forwardRef","createContext","useDispatch","useSelect","useMergeRefs","__unstableUseRichText","useRichText","removeFormat","Popover","useBlockEditorAutocompleteProps","useBlockEditContext","FormatToolbarContainer","store","blockEditorStore","useUndoAutomaticChange","useMarkPersistent","usePasteHandler","useBeforeInputRules","useInputRules","useDelete","useEnter","useFormatTypes","useRemoveBrowserShortcuts","useShortcuts","useInputEvents","useInsertReplacementText","useFirefoxCompat","FormatEdit","getAllowedFormats","Content","withDeprecations","keyboardShortcutContext","inputEventContext","removeNativeProps","props","__unstableMobileNoFocusOnMount","deleteEnter","placeholderTextColor","textAlign","selectionColor","tagsToEliminate","disableEditingMenu","fontSize","fontFamily","fontWeight","fontStyle","minWidth","maxWidth","setRef","disableSuggestions","disableAutocorrection","restProps","RichTextWrapper","children","tagName","value","adjustedValue","onChange","adjustedOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitAtDoubleLineEnd","onSplitAtDoubleLineEnd","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","__unstableAllowPrefixTransformations","forwardedRef","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","selectionStart","selectionEnd","undefined","attributeKey","offset","getBlockRootClientId","selectionChange","adjustedAllowedFormats","hasFormats","length","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","getValue","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onFocus","current","focus","TagName","createElement","Fragment","Provider","__unstableSlotNameProvider","inline","editableContentElement","role","contentEditable","suppressContentEditableWarning","className","tabIndex","ForwardedRichTextContainer","isEmpty","RichTextShortcut","RichTextToolbarButton","__unstableRichTextInputEvent"],"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseRef,\n\tuseCallback,\n\tforwardRef,\n\tcreateContext,\n} from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useMergeRefs } from '@wordpress/compose';\nimport {\n\t__unstableUseRichText as useRichText,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport { Popover } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { useBlockEditorAutocompleteProps } from '../autocomplete';\nimport { useBlockEditContext } from '../block-edit';\nimport FormatToolbarContainer from './format-toolbar-container';\nimport { store as blockEditorStore } from '../../store';\nimport { useUndoAutomaticChange } from './use-undo-automatic-change';\nimport { useMarkPersistent } from './use-mark-persistent';\nimport { usePasteHandler } from './use-paste-handler';\nimport { useBeforeInputRules } from './use-before-input-rules';\nimport { useInputRules } from './use-input-rules';\nimport { useDelete } from './use-delete';\nimport { useEnter } from './use-enter';\nimport { useFormatTypes } from './use-format-types';\nimport { useRemoveBrowserShortcuts } from './use-remove-browser-shortcuts';\nimport { useShortcuts } from './use-shortcuts';\nimport { useInputEvents } from './use-input-events';\nimport { useInsertReplacementText } from './use-insert-replacement-text';\nimport { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getAllowedFormats } from './utils';\nimport { Content } from './content';\nimport { withDeprecations } from './with-deprecations';\n\nexport const keyboardShortcutContext = createContext();\nexport const inputEventContext = createContext();\n\n/**\n * Removes props used for the native version of RichText so that they are not\n * passed to the DOM element and log warnings.\n *\n * @param {Object} props Props to filter.\n *\n * @return {Object} Filtered props.\n */\nfunction removeNativeProps( props ) {\n\tconst {\n\t\t__unstableMobileNoFocusOnMount,\n\t\tdeleteEnter,\n\t\tplaceholderTextColor,\n\t\ttextAlign,\n\t\tselectionColor,\n\t\ttagsToEliminate,\n\t\tdisableEditingMenu,\n\t\tfontSize,\n\t\tfontFamily,\n\t\tfontWeight,\n\t\tfontStyle,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tsetRef,\n\t\tdisableSuggestions,\n\t\tdisableAutocorrection,\n\t\t...restProps\n\t} = props;\n\treturn restProps;\n}\n\nexport function RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: adjustedValue = '',\n\t\tonChange: adjustedOnChange,\n\t\tisSelected: originalIsSelected,\n\t\tmultiline,\n\t\tinlineToolbar,\n\t\twrapperClassName,\n\t\tautocompleters,\n\t\tonReplace,\n\t\tplaceholder,\n\t\tallowedFormats,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitAtDoubleLineEnd: onSplitAtDoubleLineEnd,\n\t\tidentifier,\n\t\tpreserveWhiteSpace,\n\t\t__unstablePastePlainText: pastePlainText,\n\t\t__unstableEmbedURLOnPaste,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tdisableLineBreaks,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tprops = removeNativeProps( props );\n\n\tconst anchorRef = useRef();\n\tconst { clientId } = useBlockEditContext();\n\tconst selector = ( select ) => {\n\t\tconst { getSelectionStart, getSelectionEnd } =\n\t\t\tselect( blockEditorStore );\n\t\tconst selectionStart = getSelectionStart();\n\t\tconst selectionEnd = getSelectionEnd();\n\n\t\tlet isSelected;\n\n\t\tif ( originalIsSelected === undefined ) {\n\t\t\tisSelected =\n\t\t\t\tselectionStart.clientId === clientId &&\n\t\t\t\tselectionEnd.clientId === clientId &&\n\t\t\t\tselectionStart.attributeKey === identifier;\n\t\t} else if ( originalIsSelected ) {\n\t\t\tisSelected = selectionStart.clientId === clientId;\n\t\t}\n\n\t\treturn {\n\t\t\tselectionStart: isSelected ? selectionStart.offset : undefined,\n\t\t\tselectionEnd: isSelected ? selectionEnd.offset : undefined,\n\t\t\tisSelected,\n\t\t};\n\t};\n\t// This selector must run on every render so the right selection state is\n\t// retrieved from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { getSelectionStart, getSelectionEnd, getBlockRootClientId } =\n\t\tuseSelect( blockEditorStore );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\n\tconst onSelectionChange = useCallback(\n\t\t( start, end ) => {\n\t\t\tconst selection = {};\n\t\t\tconst unset = start === undefined && end === undefined;\n\n\t\t\tif ( typeof start === 'number' || unset ) {\n\t\t\t\t// If we are only setting the start (or the end below), which\n\t\t\t\t// means a partial selection, and we're not updating a selection\n\t\t\t\t// with the same client ID, abort. This means the selected block\n\t\t\t\t// is a parent block.\n\t\t\t\tif (\n\t\t\t\t\tend === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionEnd().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.start = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: start,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( typeof end === 'number' || unset ) {\n\t\t\t\tif (\n\t\t\t\t\tstart === undefined &&\n\t\t\t\t\tgetBlockRootClientId( clientId ) !==\n\t\t\t\t\t\tgetBlockRootClientId( getSelectionStart().clientId )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tselection.end = {\n\t\t\t\t\tclientId,\n\t\t\t\t\tattributeKey: identifier,\n\t\t\t\t\toffset: end,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tselectionChange( selection );\n\t\t},\n\t\t[ clientId, identifier ]\n\t);\n\n\tconst {\n\t\tformatTypes,\n\t\tprepareHandlers,\n\t\tvalueHandlers,\n\t\tchangeHandlers,\n\t\tdependencies,\n\t} = useFormatTypes( {\n\t\tclientId,\n\t\tidentifier,\n\t\twithoutInteractiveFormatting,\n\t\tallowedFormats: adjustedAllowedFormats,\n\t} );\n\n\tfunction addEditorOnlyFormats( value ) {\n\t\treturn valueHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tfunction removeEditorOnlyFormats( value ) {\n\t\tformatTypes.forEach( ( formatType ) => {\n\t\t\t// Remove formats created by prepareEditableTree, because they are editor only.\n\t\t\tif ( formatType.__experimentalCreatePrepareEditableTree ) {\n\t\t\t\tvalue = removeFormat(\n\t\t\t\t\tvalue,\n\t\t\t\t\tformatType.name,\n\t\t\t\t\t0,\n\t\t\t\t\tvalue.text.length\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t\treturn value.formats;\n\t}\n\n\tfunction addInvisibleFormats( value ) {\n\t\treturn prepareHandlers.reduce(\n\t\t\t( accumulator, fn ) => fn( accumulator, value.text ),\n\t\t\tvalue.formats\n\t\t);\n\t}\n\n\tconst {\n\t\tvalue,\n\t\tgetValue,\n\t\tonChange,\n\t\tref: richTextRef,\n\t} = useRichText( {\n\t\tvalue: adjustedValue,\n\t\tonChange( html, { __unstableFormats, __unstableText } ) {\n\t\t\tadjustedOnChange( html );\n\t\t\tObject.values( changeHandlers ).forEach( ( changeHandler ) => {\n\t\t\t\tchangeHandler( __unstableFormats, __unstableText );\n\t\t\t} );\n\t\t},\n\t\tselectionStart,\n\t\tselectionEnd,\n\t\tonSelectionChange,\n\t\tplaceholder,\n\t\t__unstableIsSelected: isSelected,\n\t\t__unstableDisableFormats: disableFormats,\n\t\tpreserveWhiteSpace,\n\t\t__unstableDependencies: [ ...dependencies, tagName ],\n\t\t__unstableAfterParse: addEditorOnlyFormats,\n\t\t__unstableBeforeSerialize: removeEditorOnlyFormats,\n\t\t__unstableAddInvisibleFormats: addInvisibleFormats,\n\t} );\n\tconst autocompleteProps = useBlockEditorAutocompleteProps( {\n\t\tonReplace,\n\t\tcompleters: autocompleters,\n\t\trecord: value,\n\t\tonChange,\n\t} );\n\n\tuseMarkPersistent( { html: adjustedValue, value } );\n\n\tconst keyboardShortcuts = useRef( new Set() );\n\tconst inputEvents = useRef( new Set() );\n\n\tfunction onFocus() {\n\t\tanchorRef.current?.focus();\n\t}\n\n\tconst TagName = tagName;\n\treturn (\n\t\t<>\n\t\t\t{ isSelected && (\n\t\t\t\t<keyboardShortcutContext.Provider value={ keyboardShortcuts }>\n\t\t\t\t\t<inputEventContext.Provider value={ inputEvents }>\n\t\t\t\t\t\t<Popover.__unstableSlotNameProvider value=\"__unstable-block-tools-after\">\n\t\t\t\t\t\t\t{ children &&\n\t\t\t\t\t\t\t\tchildren( { value, onChange, onFocus } ) }\n\n\t\t\t\t\t\t\t<FormatEdit\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\tonFocus={ onFocus }\n\t\t\t\t\t\t\t\tformatTypes={ formatTypes }\n\t\t\t\t\t\t\t\tforwardedRef={ anchorRef }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Popover.__unstableSlotNameProvider>\n\t\t\t\t\t</inputEventContext.Provider>\n\t\t\t\t</keyboardShortcutContext.Provider>\n\t\t\t) }\n\t\t\t{ isSelected && hasFormats && (\n\t\t\t\t<FormatToolbarContainer\n\t\t\t\t\tinline={ inlineToolbar }\n\t\t\t\t\teditableContentElement={ anchorRef.current }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<TagName\n\t\t\t\t// Overridable props.\n\t\t\t\trole=\"textbox\"\n\t\t\t\taria-multiline={ ! disableLineBreaks }\n\t\t\t\taria-label={ placeholder }\n\t\t\t\t{ ...props }\n\t\t\t\t{ ...autocompleteProps }\n\t\t\t\tref={ useMergeRefs( [\n\t\t\t\t\tforwardedRef,\n\t\t\t\t\tautocompleteProps.ref,\n\t\t\t\t\tprops.ref,\n\t\t\t\t\trichTextRef,\n\t\t\t\t\tuseBeforeInputRules( { value, onChange } ),\n\t\t\t\t\tuseInputRules( {\n\t\t\t\t\t\tgetValue,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t__unstableAllowPrefixTransformations,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tselectionChange,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseInsertReplacementText(),\n\t\t\t\t\tuseRemoveBrowserShortcuts(),\n\t\t\t\t\tuseShortcuts( keyboardShortcuts ),\n\t\t\t\t\tuseInputEvents( inputEvents ),\n\t\t\t\t\tuseUndoAutomaticChange(),\n\t\t\t\t\tusePasteHandler( {\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tdisableFormats,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tformatTypes,\n\t\t\t\t\t\ttagName,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tpastePlainText,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseDelete( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonMerge,\n\t\t\t\t\t\tonRemove,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseEnter( {\n\t\t\t\t\t\tremoveEditorOnlyFormats,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tonReplace,\n\t\t\t\t\t\tonSplit,\n\t\t\t\t\t\tonChange,\n\t\t\t\t\t\tdisableLineBreaks,\n\t\t\t\t\t\tonSplitAtEnd,\n\t\t\t\t\t\tonSplitAtDoubleLineEnd,\n\t\t\t\t\t} ),\n\t\t\t\t\tuseFirefoxCompat(),\n\t\t\t\t\tanchorRef,\n\t\t\t\t] ) }\n\t\t\t\tcontentEditable={ true }\n\t\t\t\tsuppressContentEditableWarning={ true }\n\t\t\t\tclassName={ classnames(\n\t\t\t\t\t'block-editor-rich-text__editable',\n\t\t\t\t\tprops.className,\n\t\t\t\t\t'rich-text'\n\t\t\t\t) }\n\t\t\t\t// Setting tabIndex to 0 is unnecessary, the element is already\n\t\t\t\t// focusable because it's contentEditable. This also fixes a\n\t\t\t\t// Safari bug where it's not possible to Shift+Click multi\n\t\t\t\t// select blocks when Shift Clicking into an element with\n\t\t\t\t// tabIndex because Safari will focus the element. However,\n\t\t\t\t// Safari will correctly ignore nested contentEditable elements.\n\t\t\t\ttabIndex={ props.tabIndex === 0 ? null : props.tabIndex }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst ForwardedRichTextContainer = withDeprecations(\n\tforwardRef( RichTextWrapper )\n);\n\nForwardedRichTextContainer.Content = Content;\nForwardedRichTextContainer.isEmpty = ( value ) => {\n\treturn ! value || value.length === 0;\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/rich-text/README.md\n */\nexport default ForwardedRichTextContainer;\nexport { RichTextShortcut } from './shortcut';\nexport { RichTextToolbarButton } from './toolbar-button';\nexport { __unstableRichTextInputEvent } from './input-event';\n"],"mappings":"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"}
|