@wordpress/block-editor 9.3.0 → 9.6.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 +6 -0
- package/README.md +1 -8
- package/build/components/block-list/block-invalid-warning.native.js +54 -6
- package/build/components/block-list/block-invalid-warning.native.js.map +1 -1
- package/build/components/block-list/block.js +2 -2
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +2 -1
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.native.js +4 -3
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/layout.js +20 -5
- package/build/components/block-list/layout.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-class-names.js +5 -2
- package/build/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build/components/block-lock/modal.js +37 -7
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mover/mover-description.js +95 -32
- package/build/components/block-mover/mover-description.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +8 -26
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-pattern-setup/setup-toolbar.js +3 -8
- package/build/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build/components/block-popover/inbetween.js +1 -1
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +1 -1
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js +21 -5
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-settings-menu/block-edit-visually-button.js +70 -0
- package/build/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
- package/build/components/block-settings-menu/block-mode-toggle.js +1 -1
- package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +5 -2
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-settings-menu/index.js +6 -2
- package/build/components/block-settings-menu/index.js.map +1 -1
- package/build/components/block-settings-menu-controls/index.js +5 -2
- package/build/components/block-settings-menu-controls/index.js.map +1 -1
- package/build/components/block-styles/preview.native.js.map +1 -1
- package/build/components/block-switcher/index.js +7 -1
- package/build/components/block-switcher/index.js.map +1 -1
- package/build/components/block-title/index.js +8 -2
- package/build/components/block-title/index.js.map +1 -1
- package/build/components/block-title/use-block-display-title.js +15 -15
- package/build/components/block-title/use-block-display-title.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +1 -7
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js +4 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-types-list/index.native.js +65 -23
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/border-radius-control/index.js +2 -0
- package/build/components/border-radius-control/index.js.map +1 -1
- package/build/components/colors/with-colors.js +1 -1
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/colors-gradients/control.js +46 -39
- package/build/components/colors-gradients/control.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +7 -3
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/date-format-picker/index.js +1 -1
- package/build/components/date-format-picker/index.js.map +1 -1
- package/build/components/duotone/components.js +145 -0
- package/build/components/duotone/components.js.map +1 -0
- package/build/components/duotone/index.js +40 -0
- package/build/components/duotone/index.js.map +1 -0
- package/build/components/duotone/utils.js +38 -0
- package/build/components/duotone/utils.js.map +1 -0
- package/build/components/duotone-control/index.js +17 -5
- package/build/components/duotone-control/index.js.map +1 -1
- package/build/components/iframe/index.js +19 -6
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/cropper.js +4 -3
- package/build/components/image-editor/cropper.js.map +1 -1
- package/build/components/image-editor/index.js +3 -1
- package/build/components/image-editor/index.js.map +1 -1
- package/build/components/index.js +14 -0
- package/build/components/index.js.map +1 -1
- package/build/components/inserter/block-types-tab.native.js +30 -16
- package/build/components/inserter/block-types-tab.native.js.map +1 -1
- package/build/components/inserter/index.js +3 -3
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/preview-panel.js +8 -8
- package/build/components/inserter/preview-panel.js.map +1 -1
- package/build/components/inserter/reusable-blocks-tab.native.js +5 -1
- package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build/components/inserter/search-results.native.js +5 -2
- package/build/components/inserter/search-results.native.js.map +1 -1
- package/build/components/inserter/utils.native.js +21 -0
- package/build/components/inserter/utils.native.js.map +1 -1
- package/build/components/inserter-list-item/index.js +5 -1
- package/build/components/inserter-list-item/index.js.map +1 -1
- package/build/components/link-control/index.js +1 -1
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block-select-button.js +15 -7
- package/build/components/list-view/block-select-button.js.map +1 -1
- package/build/components/list-view/branch.js +1 -7
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +1 -1
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/media-placeholder/index.js +14 -2
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-placeholder/index.native.js +4 -4
- package/build/components/media-placeholder/index.native.js.map +1 -1
- package/build/components/media-replace-flow/index.js +6 -13
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/observe-typing/index.js +22 -8
- package/build/components/observe-typing/index.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +3 -0
- package/build/components/publish-date-time-picker/index.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +61 -12
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/index.js +2 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/use-format-types.js +36 -16
- package/build/components/rich-text/use-format-types.js.map +1 -1
- package/build/components/rich-text/use-input-rules.js +4 -13
- package/build/components/rich-text/use-input-rules.js.map +1 -1
- package/build/components/rich-text/use-paste-handler.js +20 -5
- package/build/components/rich-text/use-paste-handler.js.map +1 -1
- package/build/components/url-popover/index.js +2 -1
- package/build/components/url-popover/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +34 -2
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js +3 -47
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +1 -3
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js +1 -1
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/elements/index.js +11 -3
- package/build/elements/index.js.map +1 -1
- package/build/hooks/aria-label.js +71 -0
- package/build/hooks/aria-label.js.map +1 -0
- package/build/hooks/color.js +2 -4
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/duotone.js +33 -160
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +11 -7
- package/build/hooks/index.js.map +1 -1
- package/build/hooks/layout.js +59 -18
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/style.js +41 -31
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/utils.js +5 -3
- package/build/hooks/utils.js.map +1 -1
- package/build/index.js +7 -7
- package/build/index.js.map +1 -1
- package/build/layouts/flex.js +42 -38
- package/build/layouts/flex.js.map +1 -1
- package/build/layouts/flow.js +35 -37
- package/build/layouts/flow.js.map +1 -1
- package/build/layouts/utils.js +35 -3
- package/build/layouts/utils.js.map +1 -1
- package/build/store/actions.js +24 -31
- package/build/store/actions.js.map +1 -1
- package/build/store/index.js +0 -4
- package/build/store/index.js.map +1 -1
- package/build/store/reducer.js +23 -12
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +3 -3
- package/build/store/selectors.js.map +1 -1
- package/build/utils/selection.js +34 -0
- package/build/utils/selection.js.map +1 -0
- package/build-module/components/block-list/block-invalid-warning.native.js +50 -6
- package/build-module/components/block-list/block-invalid-warning.native.js.map +1 -1
- package/build-module/components/block-list/block.js +2 -2
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +2 -1
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.native.js +3 -1
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/layout.js +19 -4
- package/build-module/components/block-list/layout.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-class-names.js +5 -2
- package/build-module/components/block-list/use-block-props/use-block-class-names.js.map +1 -1
- package/build-module/components/block-lock/modal.js +39 -8
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js +2 -2
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mover/mover-description.js +97 -33
- package/build-module/components/block-mover/mover-description.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +9 -27
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/setup-toolbar.js +3 -8
- package/build-module/components/block-pattern-setup/setup-toolbar.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +1 -1
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +1 -1
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js +20 -5
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-settings-menu/block-edit-visually-button.js +56 -0
- package/build-module/components/block-settings-menu/block-edit-visually-button.js.map +1 -0
- package/build-module/components/block-settings-menu/block-mode-toggle.js +1 -1
- package/build-module/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build-module/components/block-settings-menu/block-settings-dropdown.js +6 -5
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-settings-menu/index.js +6 -3
- package/build-module/components/block-settings-menu/index.js.map +1 -1
- package/build-module/components/block-settings-menu-controls/index.js +7 -4
- package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
- package/build-module/components/block-styles/preview.native.js.map +1 -1
- package/build-module/components/block-switcher/index.js +7 -1
- package/build-module/components/block-switcher/index.js.map +1 -1
- package/build-module/components/block-title/index.js +8 -2
- package/build-module/components/block-title/index.js.map +1 -1
- package/build-module/components/block-title/use-block-display-title.js +15 -14
- package/build-module/components/block-title/use-block-display-title.js.map +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js +1 -1
- package/build-module/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build-module/components/block-tools/block-selection-button.js +1 -7
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js +4 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js +67 -25
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/border-radius-control/index.js +2 -0
- package/build-module/components/border-radius-control/index.js.map +1 -1
- package/build-module/components/colors/with-colors.js +2 -2
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/colors-gradients/control.js +47 -40
- package/build-module/components/colors-gradients/control.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +8 -4
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/date-format-picker/index.js +1 -1
- package/build-module/components/date-format-picker/index.js.map +1 -1
- package/build-module/components/duotone/components.js +130 -0
- package/build-module/components/duotone/components.js.map +1 -0
- package/build-module/components/duotone/index.js +3 -0
- package/build-module/components/duotone/index.js.map +1 -0
- package/build-module/components/duotone/utils.js +30 -0
- package/build-module/components/duotone/utils.js.map +1 -0
- package/build-module/components/duotone-control/index.js +18 -6
- package/build-module/components/duotone-control/index.js.map +1 -1
- package/build-module/components/iframe/index.js +19 -6
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/cropper.js +4 -3
- package/build-module/components/image-editor/cropper.js.map +1 -1
- package/build-module/components/image-editor/index.js +3 -1
- package/build-module/components/image-editor/index.js.map +1 -1
- package/build-module/components/index.js +1 -0
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.native.js +31 -15
- package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
- package/build-module/components/inserter/index.js +3 -2
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/preview-panel.js +9 -9
- package/build-module/components/inserter/preview-panel.js.map +1 -1
- package/build-module/components/inserter/reusable-blocks-tab.native.js +6 -2
- package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
- package/build-module/components/inserter/search-results.native.js +6 -3
- package/build-module/components/inserter/search-results.native.js.map +1 -1
- package/build-module/components/inserter/utils.native.js +19 -0
- package/build-module/components/inserter/utils.native.js.map +1 -1
- package/build-module/components/inserter-list-item/index.js +4 -1
- package/build-module/components/inserter-list-item/index.js.map +1 -1
- package/build-module/components/link-control/index.js +1 -1
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block-select-button.js +16 -8
- package/build-module/components/list-view/block-select-button.js.map +1 -1
- package/build-module/components/list-view/branch.js +1 -6
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +1 -1
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +14 -2
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-placeholder/index.native.js +5 -3
- package/build-module/components/media-placeholder/index.native.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +7 -13
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/observe-typing/index.js +22 -8
- package/build-module/components/observe-typing/index.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +2 -0
- package/build-module/components/publish-date-time-picker/index.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +58 -12
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/index.js +2 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/use-format-types.js +37 -18
- package/build-module/components/rich-text/use-format-types.js.map +1 -1
- package/build-module/components/rich-text/use-input-rules.js +3 -11
- package/build-module/components/rich-text/use-input-rules.js.map +1 -1
- package/build-module/components/rich-text/use-paste-handler.js +20 -5
- package/build-module/components/rich-text/use-paste-handler.js.map +1 -1
- package/build-module/components/url-popover/index.js +2 -1
- package/build-module/components/url-popover/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +35 -3
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js +3 -45
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +1 -3
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/elements/index.js +7 -1
- package/build-module/elements/index.js.map +1 -1
- package/build-module/hooks/aria-label.js +59 -0
- package/build-module/hooks/aria-label.js.map +1 -0
- package/build-module/hooks/color.js +2 -3
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/duotone.js +22 -140
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +2 -1
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/hooks/layout.js +60 -19
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/style.js +44 -35
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/utils.js +5 -2
- package/build-module/hooks/utils.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/flex.js +43 -35
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/layouts/flow.js +35 -38
- package/build-module/layouts/flow.js.map +1 -1
- package/build-module/layouts/utils.js +33 -3
- package/build-module/layouts/utils.js.map +1 -1
- package/build-module/store/actions.js +14 -20
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/index.js +0 -4
- package/build-module/store/index.js.map +1 -1
- package/build-module/store/reducer.js +23 -11
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +4 -4
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/selection.js +24 -0
- package/build-module/utils/selection.js.map +1 -0
- package/build-style/style-rtl.css +43 -13
- package/build-style/style.css +43 -13
- package/package.json +28 -28
- package/src/components/block-draggable/test/helpers.native.js +3 -3
- package/src/components/block-list/block-invalid-warning.native.js +42 -7
- package/src/components/block-list/block.js +2 -2
- package/src/components/block-list/block.native.js +1 -0
- package/src/components/block-list/index.native.js +1 -1
- package/src/components/block-list/layout.js +15 -3
- package/src/components/block-list/style.scss +2 -2
- package/src/components/block-list/use-block-props/use-block-class-names.js +5 -1
- package/src/components/block-lock/modal.js +47 -9
- package/src/components/block-lock/style.scss +10 -0
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +3 -3
- package/src/components/block-mover/mover-description.js +131 -48
- package/src/components/block-mover/test/mover-description.js +55 -3
- package/src/components/block-pattern-setup/index.js +5 -25
- package/src/components/block-pattern-setup/setup-toolbar.js +2 -9
- package/src/components/block-pattern-setup/style.scss +4 -2
- package/src/components/block-popover/inbetween.js +1 -1
- package/src/components/block-popover/index.js +1 -1
- package/src/components/block-preview/auto.js +17 -3
- package/src/components/block-settings-menu/block-edit-visually-button.js +52 -0
- package/src/components/block-settings-menu/block-mode-toggle.js +1 -0
- package/src/components/block-settings-menu/block-settings-dropdown.js +7 -3
- package/src/components/block-settings-menu/index.js +15 -11
- package/src/components/block-settings-menu-controls/index.js +5 -4
- package/src/components/block-styles/preview.native.js +1 -0
- package/src/components/block-switcher/index.js +7 -1
- package/src/components/block-title/index.js +3 -2
- package/src/components/block-title/use-block-display-title.js +20 -12
- package/src/components/block-tools/block-contextual-toolbar.js +3 -1
- package/src/components/block-tools/block-selection-button.js +0 -5
- package/src/components/block-tools/index.js +4 -1
- package/src/components/block-types-list/index.native.js +76 -24
- package/src/components/block-types-list/style.native.scss +18 -0
- package/src/components/border-radius-control/index.js +2 -0
- package/src/components/color-palette/test/__snapshots__/control.js.snap +0 -4
- package/src/components/colors/test/__snapshots__/with-colors.js.snap +1 -1
- package/src/components/colors/test/with-colors.js +1 -1
- package/src/components/colors/with-colors.js +2 -2
- package/src/components/colors-gradients/control.js +78 -65
- package/src/components/colors-gradients/dropdown.js +9 -2
- package/src/components/colors-gradients/style.scss +11 -8
- package/src/components/colors-gradients/test/control.js +16 -23
- package/src/components/date-format-picker/index.js +1 -0
- package/src/components/duotone/components.js +133 -0
- package/src/components/duotone/index.js +7 -0
- package/src/components/duotone/utils.js +25 -0
- package/src/components/duotone-control/index.js +12 -7
- package/src/components/duotone-control/style.scss +5 -0
- package/src/components/iframe/index.js +25 -6
- package/src/components/image-editor/cropper.js +9 -3
- package/src/components/image-editor/index.js +2 -0
- package/src/components/index.js +1 -0
- package/src/components/inserter/block-types-tab.native.js +42 -21
- package/src/components/inserter/index.js +3 -5
- package/src/components/inserter/preview-panel.js +6 -14
- package/src/components/inserter/reusable-blocks-tab.native.js +4 -2
- package/src/components/inserter/search-results.native.js +4 -2
- package/src/components/inserter/style.scss +1 -1
- package/src/components/inserter/test/block-types-tab.native.js +2 -0
- package/src/components/inserter/test/utils.native.js +37 -0
- package/src/components/inserter/utils.native.js +11 -0
- package/src/components/inserter-list-item/index.js +4 -1
- package/src/components/link-control/index.js +1 -0
- package/src/components/link-control/test/fixtures/index.js +3 -4
- package/src/components/link-control/test/index.js +64 -73
- package/src/components/list-view/block-select-button.js +29 -14
- package/src/components/list-view/branch.js +1 -6
- package/src/components/list-view/drop-indicator.js +1 -1
- package/src/components/list-view/style.scss +18 -4
- package/src/components/media-placeholder/index.js +20 -0
- package/src/components/media-placeholder/index.native.js +9 -5
- package/src/components/media-replace-flow/index.js +5 -14
- package/src/components/media-replace-flow/test/index.js +14 -4
- package/src/components/media-upload/README.md +8 -0
- package/src/components/observe-typing/index.js +17 -14
- package/src/components/publish-date-time-picker/index.js +2 -0
- package/src/components/responsive-block-control/README.md +3 -1
- package/src/components/responsive-block-control/test/index.js +1 -2
- package/src/components/rich-text/format-toolbar-container.js +63 -14
- package/src/components/rich-text/index.js +1 -0
- package/src/components/rich-text/use-format-types.js +38 -17
- package/src/components/rich-text/use-input-rules.js +6 -15
- package/src/components/rich-text/use-paste-handler.js +17 -5
- package/src/components/url-popover/index.js +1 -0
- package/src/components/url-popover/test/__snapshots__/index.js.snap +3 -0
- package/src/components/writing-flow/use-arrow-nav.js +32 -1
- package/src/components/writing-flow/use-multi-selection.js +1 -48
- package/src/components/writing-flow/use-selection-observer.js +2 -3
- package/src/components/writing-flow/use-tab-nav.js +1 -1
- package/src/elements/index.js +8 -1
- package/src/elements/test/index.js +18 -0
- package/src/hooks/aria-label.js +67 -0
- package/src/hooks/color.js +10 -3
- package/src/hooks/duotone.js +18 -139
- package/src/hooks/index.js +2 -1
- package/src/hooks/layout.js +77 -29
- package/src/hooks/style.js +46 -39
- package/src/hooks/utils.js +7 -3
- package/src/index.js +1 -1
- package/src/layouts/flex.js +49 -43
- package/src/layouts/flow.js +35 -34
- package/src/layouts/test/flex.js +21 -0
- package/src/layouts/test/flow.js +21 -0
- package/src/layouts/test/utils.js +138 -0
- package/src/layouts/utils.js +44 -3
- package/src/store/actions.js +17 -31
- package/src/store/index.js +0 -4
- package/src/store/reducer.js +24 -11
- package/src/store/selectors.js +3 -4
- package/src/store/test/reducer.js +138 -10
- package/src/store/test/selectors.js +3 -6
- package/src/utils/selection.js +26 -0
- package/src/utils/test/selection.js +39 -0
- package/tsconfig.json +2 -1
|
@@ -9,8 +9,6 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _element = require("@wordpress/element");
|
|
11
11
|
|
|
12
|
-
var _lodash = require("lodash");
|
|
13
|
-
|
|
14
12
|
var _i18n = require("@wordpress/i18n");
|
|
15
13
|
|
|
16
14
|
var _a11y = require("@wordpress/a11y");
|
|
@@ -37,10 +35,6 @@ var _linkControl = _interopRequireDefault(require("../link-control"));
|
|
|
37
35
|
|
|
38
36
|
var _store = require("../../store");
|
|
39
37
|
|
|
40
|
-
/**
|
|
41
|
-
* External dependencies
|
|
42
|
-
*/
|
|
43
|
-
|
|
44
38
|
/**
|
|
45
39
|
* WordPress dependencies
|
|
46
40
|
*/
|
|
@@ -50,6 +44,8 @@ var _store = require("../../store");
|
|
|
50
44
|
*/
|
|
51
45
|
const noop = () => {};
|
|
52
46
|
|
|
47
|
+
let uniqueId = 0;
|
|
48
|
+
|
|
53
49
|
const MediaReplaceFlow = _ref => {
|
|
54
50
|
let {
|
|
55
51
|
mediaURL,
|
|
@@ -71,12 +67,11 @@ const MediaReplaceFlow = _ref => {
|
|
|
71
67
|
addToGallery,
|
|
72
68
|
handleUpload = true
|
|
73
69
|
} = _ref;
|
|
74
|
-
const [mediaURLValue, setMediaURLValue] = (0, _element.useState)(mediaURL);
|
|
75
70
|
const mediaUpload = (0, _data.useSelect)(select => {
|
|
76
71
|
return select(_store.store).getSettings().mediaUpload;
|
|
77
72
|
}, []);
|
|
78
73
|
const editMediaButtonRef = (0, _element.useRef)();
|
|
79
|
-
const errorNoticeID =
|
|
74
|
+
const errorNoticeID = `block-editor/media-replace-flow/error-notice/${++uniqueId}`;
|
|
80
75
|
|
|
81
76
|
const onUploadError = message => {
|
|
82
77
|
const safeMessage = (0, _dom.__unstableStripHTML)(message);
|
|
@@ -106,8 +101,7 @@ const MediaReplaceFlow = _ref => {
|
|
|
106
101
|
onToggleFeaturedImage();
|
|
107
102
|
}
|
|
108
103
|
|
|
109
|
-
closeMenu();
|
|
110
|
-
setMediaURLValue(media === null || media === void 0 ? void 0 : media.url); // Calling `onSelect` after the state update since it might unmount the component.
|
|
104
|
+
closeMenu(); // Calling `onSelect` after the state update since it might unmount the component.
|
|
111
105
|
|
|
112
106
|
onSelect(media);
|
|
113
107
|
(0, _a11y.speak)((0, _i18n.__)('The media file has been replaced'));
|
|
@@ -218,11 +212,11 @@ const MediaReplaceFlow = _ref => {
|
|
|
218
212
|
}, (0, _element.createElement)("span", {
|
|
219
213
|
className: "block-editor-media-replace-flow__image-url-label"
|
|
220
214
|
}, (0, _i18n.__)('Current media URL:')), (0, _element.createElement)(_components.Tooltip, {
|
|
221
|
-
text:
|
|
215
|
+
text: mediaURL,
|
|
222
216
|
position: "bottom"
|
|
223
217
|
}, (0, _element.createElement)("div", null, (0, _element.createElement)(_linkControl.default, {
|
|
224
218
|
value: {
|
|
225
|
-
url:
|
|
219
|
+
url: mediaURL
|
|
226
220
|
},
|
|
227
221
|
settings: [],
|
|
228
222
|
showSuggestions: false,
|
|
@@ -230,7 +224,6 @@ const MediaReplaceFlow = _ref => {
|
|
|
230
224
|
let {
|
|
231
225
|
url
|
|
232
226
|
} = _ref7;
|
|
233
|
-
setMediaURLValue(url);
|
|
234
227
|
onSelectURL(url);
|
|
235
228
|
editMediaButtonRef.current.focus();
|
|
236
229
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.js"],"names":["noop","MediaReplaceFlow","mediaURL","mediaId","mediaIds","allowedTypes","accept","onError","onSelect","onSelectURL","onToggleFeaturedImage","useFeaturedImage","onFilesUpload","name","createNotice","removeNotice","children","multiple","addToGallery","handleUpload","mediaURLValue","setMediaURLValue","mediaUpload","select","blockEditorStore","getSettings","editMediaButtonRef","errorNoticeID","onUploadError","message","safeMessage","setTimeout","speak","id","isDismissible","selectMedia","media","closeMenu","url","uploadFiles","event","files","target","filesList","onFileChange","openOnArrowDown","keyCode","DOWN","preventDefault","click","onlyAllowsImages","length","every","allowedType","startsWith","gallery","POPOVER_PROPS","isAlternate","isOpen","onToggle","onClose","open","mediaIcon","openFileDialog","upload","postFeaturedImage","current","focus","dispatch","noticesStore"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { uniqueId } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport {\n\tFormFileUpload,\n\tNavigableMenu,\n\tMenuItem,\n\tToolbarButton,\n\tDropdown,\n\twithFilters,\n\tTooltip,\n} from '@wordpress/components';\nimport { useSelect, withDispatch } from '@wordpress/data';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tpostFeaturedImage,\n\tupload,\n\tmedia as mediaIcon,\n} from '@wordpress/icons';\nimport { compose } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport LinkControl from '../link-control';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\n\nconst MediaReplaceFlow = ( {\n\tmediaURL,\n\tmediaId,\n\tmediaIds,\n\tallowedTypes,\n\taccept,\n\tonError,\n\tonSelect,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tuseFeaturedImage,\n\tonFilesUpload = noop,\n\tname = __( 'Replace' ),\n\tcreateNotice,\n\tremoveNotice,\n\tchildren,\n\tmultiple = false,\n\taddToGallery,\n\thandleUpload = true,\n} ) => {\n\tconst [ mediaURLValue, setMediaURLValue ] = useState( mediaURL );\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst editMediaButtonRef = useRef();\n\tconst errorNoticeID = uniqueId(\n\t\t'block-editor/media-replace-flow/error-notice/'\n\t);\n\n\tconst onUploadError = ( message ) => {\n\t\tconst safeMessage = stripHTML( message );\n\t\tif ( onError ) {\n\t\t\tonError( safeMessage );\n\t\t\treturn;\n\t\t}\n\t\t// We need to set a timeout for showing the notice\n\t\t// so that VoiceOver and possibly other screen readers\n\t\t// can announce the error afer the toolbar button\n\t\t// regains focus once the upload dialog closes.\n\t\t// Otherwise VO simply skips over the notice and announces\n\t\t// the focused element and the open menu.\n\t\tsetTimeout( () => {\n\t\t\tcreateNotice( 'error', safeMessage, {\n\t\t\t\tspeak: true,\n\t\t\t\tid: errorNoticeID,\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t}, 1000 );\n\t};\n\n\tconst selectMedia = ( media, closeMenu ) => {\n\t\tif ( useFeaturedImage && onToggleFeaturedImage ) {\n\t\t\tonToggleFeaturedImage();\n\t\t}\n\t\tcloseMenu();\n\t\tsetMediaURLValue( media?.url );\n\t\t// Calling `onSelect` after the state update since it might unmount the component.\n\t\tonSelect( media );\n\t\tspeak( __( 'The media file has been replaced' ) );\n\t\tremoveNotice( errorNoticeID );\n\t};\n\n\tconst uploadFiles = ( event, closeMenu ) => {\n\t\tconst files = event.target.files;\n\t\tif ( ! handleUpload ) {\n\t\t\tcloseMenu();\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesUpload( files );\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tselectMedia( media, closeMenu );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst openOnArrowDown = ( event ) => {\n\t\tif ( event.keyCode === DOWN ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.target.click();\n\t\t}\n\t};\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst gallery = multiple && onlyAllowsImages();\n\n\tconst POPOVER_PROPS = {\n\t\tisAlternate: true,\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\tcontentClassName=\"block-editor-media-replace-flow__options\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tref={ editMediaButtonRef }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t>\n\t\t\t\t\t{ name }\n\t\t\t\t</ToolbarButton>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu className=\"block-editor-media-replace-flow__media-upload-menu\">\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\tgallery={ gallery }\n\t\t\t\t\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\tvalue={ multiple ? mediaIds : mediaId }\n\t\t\t\t\t\t\t\tonSelect={ ( media ) =>\n\t\t\t\t\t\t\t\t\tselectMedia( media, onClose )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={ mediaIcon }\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\tuploadFiles( event, onClose );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t</>\n\t\t\t\t\t\t{ onToggleFeaturedImage && (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ postFeaturedImage }\n\t\t\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\t\t\tisPressed={ useFeaturedImage }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t{ onSelectURL && (\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n\t\t\t\t\t\t<form className=\"block-editor-media-flow__url-input\">\n\t\t\t\t\t\t\t<span className=\"block-editor-media-replace-flow__image-url-label\">\n\t\t\t\t\t\t\t\t{ __( 'Current media URL:' ) }\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t<Tooltip text={ mediaURLValue } position=\"bottom\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\t\t\tvalue={ { url: mediaURLValue } }\n\t\t\t\t\t\t\t\t\t\tsettings={ [] }\n\t\t\t\t\t\t\t\t\t\tshowSuggestions={ false }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\t\t\tsetMediaURLValue( url );\n\t\t\t\t\t\t\t\t\t\t\tonSelectURL( url );\n\t\t\t\t\t\t\t\t\t\t\teditMediaButtonRef.current.focus();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-replace-flow/README.md\n */\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createNotice, removeNotice } = dispatch( noticesStore );\n\t\treturn {\n\t\t\tcreateNotice,\n\t\t\tremoveNotice,\n\t\t};\n\t} ),\n\twithFilters( 'editor.MediaReplaceFlow' ),\n] )( MediaReplaceFlow );\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/media-replace-flow/index.js"],"names":["noop","uniqueId","MediaReplaceFlow","mediaURL","mediaId","mediaIds","allowedTypes","accept","onError","onSelect","onSelectURL","onToggleFeaturedImage","useFeaturedImage","onFilesUpload","name","createNotice","removeNotice","children","multiple","addToGallery","handleUpload","mediaUpload","select","blockEditorStore","getSettings","editMediaButtonRef","errorNoticeID","onUploadError","message","safeMessage","setTimeout","speak","id","isDismissible","selectMedia","media","closeMenu","uploadFiles","event","files","target","filesList","onFileChange","openOnArrowDown","keyCode","DOWN","preventDefault","click","onlyAllowsImages","length","every","allowedType","startsWith","gallery","POPOVER_PROPS","isAlternate","isOpen","onToggle","onClose","open","mediaIcon","openFileDialog","upload","postFeaturedImage","url","current","focus","dispatch","noticesStore"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport {\n\tFormFileUpload,\n\tNavigableMenu,\n\tMenuItem,\n\tToolbarButton,\n\tDropdown,\n\twithFilters,\n\tTooltip,\n} from '@wordpress/components';\nimport { useSelect, withDispatch } from '@wordpress/data';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tpostFeaturedImage,\n\tupload,\n\tmedia as mediaIcon,\n} from '@wordpress/icons';\nimport { compose } from '@wordpress/compose';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport MediaUpload from '../media-upload';\nimport MediaUploadCheck from '../media-upload/check';\nimport LinkControl from '../link-control';\nimport { store as blockEditorStore } from '../../store';\n\nconst noop = () => {};\nlet uniqueId = 0;\n\nconst MediaReplaceFlow = ( {\n\tmediaURL,\n\tmediaId,\n\tmediaIds,\n\tallowedTypes,\n\taccept,\n\tonError,\n\tonSelect,\n\tonSelectURL,\n\tonToggleFeaturedImage,\n\tuseFeaturedImage,\n\tonFilesUpload = noop,\n\tname = __( 'Replace' ),\n\tcreateNotice,\n\tremoveNotice,\n\tchildren,\n\tmultiple = false,\n\taddToGallery,\n\thandleUpload = true,\n} ) => {\n\tconst mediaUpload = useSelect( ( select ) => {\n\t\treturn select( blockEditorStore ).getSettings().mediaUpload;\n\t}, [] );\n\tconst editMediaButtonRef = useRef();\n\tconst errorNoticeID = `block-editor/media-replace-flow/error-notice/${ ++uniqueId }`;\n\n\tconst onUploadError = ( message ) => {\n\t\tconst safeMessage = stripHTML( message );\n\t\tif ( onError ) {\n\t\t\tonError( safeMessage );\n\t\t\treturn;\n\t\t}\n\t\t// We need to set a timeout for showing the notice\n\t\t// so that VoiceOver and possibly other screen readers\n\t\t// can announce the error afer the toolbar button\n\t\t// regains focus once the upload dialog closes.\n\t\t// Otherwise VO simply skips over the notice and announces\n\t\t// the focused element and the open menu.\n\t\tsetTimeout( () => {\n\t\t\tcreateNotice( 'error', safeMessage, {\n\t\t\t\tspeak: true,\n\t\t\t\tid: errorNoticeID,\n\t\t\t\tisDismissible: true,\n\t\t\t} );\n\t\t}, 1000 );\n\t};\n\n\tconst selectMedia = ( media, closeMenu ) => {\n\t\tif ( useFeaturedImage && onToggleFeaturedImage ) {\n\t\t\tonToggleFeaturedImage();\n\t\t}\n\t\tcloseMenu();\n\t\t// Calling `onSelect` after the state update since it might unmount the component.\n\t\tonSelect( media );\n\t\tspeak( __( 'The media file has been replaced' ) );\n\t\tremoveNotice( errorNoticeID );\n\t};\n\n\tconst uploadFiles = ( event, closeMenu ) => {\n\t\tconst files = event.target.files;\n\t\tif ( ! handleUpload ) {\n\t\t\tcloseMenu();\n\t\t\treturn onSelect( files );\n\t\t}\n\t\tonFilesUpload( files );\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList: files,\n\t\t\tonFileChange: ( [ media ] ) => {\n\t\t\t\tselectMedia( media, closeMenu );\n\t\t\t},\n\t\t\tonError: onUploadError,\n\t\t} );\n\t};\n\n\tconst openOnArrowDown = ( event ) => {\n\t\tif ( event.keyCode === DOWN ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.target.click();\n\t\t}\n\t};\n\n\tconst onlyAllowsImages = () => {\n\t\tif ( ! allowedTypes || allowedTypes.length === 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn allowedTypes.every(\n\t\t\t( allowedType ) =>\n\t\t\t\tallowedType === 'image' || allowedType.startsWith( 'image/' )\n\t\t);\n\t};\n\n\tconst gallery = multiple && onlyAllowsImages();\n\n\tconst POPOVER_PROPS = {\n\t\tisAlternate: true,\n\t};\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ POPOVER_PROPS }\n\t\t\tcontentClassName=\"block-editor-media-replace-flow__options\"\n\t\t\trenderToggle={ ( { isOpen, onToggle } ) => (\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tref={ editMediaButtonRef }\n\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t>\n\t\t\t\t\t{ name }\n\t\t\t\t</ToolbarButton>\n\t\t\t) }\n\t\t\trenderContent={ ( { onClose } ) => (\n\t\t\t\t<>\n\t\t\t\t\t<NavigableMenu className=\"block-editor-media-replace-flow__media-upload-menu\">\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\t\tgallery={ gallery }\n\t\t\t\t\t\t\t\taddToGallery={ addToGallery }\n\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\tvalue={ multiple ? mediaIds : mediaId }\n\t\t\t\t\t\t\t\tonSelect={ ( media ) =>\n\t\t\t\t\t\t\t\t\tselectMedia( media, onClose )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\ticon={ mediaIcon }\n\t\t\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t\t\t<FormFileUpload\n\t\t\t\t\t\t\t\t\tonChange={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\tuploadFiles( event, onClose );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\taccept={ accept }\n\t\t\t\t\t\t\t\t\tmultiple={ multiple }\n\t\t\t\t\t\t\t\t\trender={ ( { openFileDialog } ) => {\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\ticon={ upload }\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\topenFileDialog();\n\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload' ) }\n\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t\t\t</>\n\t\t\t\t\t\t{ onToggleFeaturedImage && (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\ticon={ postFeaturedImage }\n\t\t\t\t\t\t\t\tonClick={ onToggleFeaturedImage }\n\t\t\t\t\t\t\t\tisPressed={ useFeaturedImage }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Use featured image' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</NavigableMenu>\n\t\t\t\t\t{ onSelectURL && (\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions\n\t\t\t\t\t\t<form className=\"block-editor-media-flow__url-input\">\n\t\t\t\t\t\t\t<span className=\"block-editor-media-replace-flow__image-url-label\">\n\t\t\t\t\t\t\t\t{ __( 'Current media URL:' ) }\n\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t<Tooltip text={ mediaURL } position=\"bottom\">\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<LinkControl\n\t\t\t\t\t\t\t\t\t\tvalue={ { url: mediaURL } }\n\t\t\t\t\t\t\t\t\t\tsettings={ [] }\n\t\t\t\t\t\t\t\t\t\tshowSuggestions={ false }\n\t\t\t\t\t\t\t\t\t\tonChange={ ( { url } ) => {\n\t\t\t\t\t\t\t\t\t\t\tonSelectURL( url );\n\t\t\t\t\t\t\t\t\t\t\teditMediaButtonRef.current.focus();\n\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t/>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/media-replace-flow/README.md\n */\nexport default compose( [\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createNotice, removeNotice } = dispatch( noticesStore );\n\t\treturn {\n\t\t\tcreateNotice,\n\t\t\tremoveNotice,\n\t\t};\n\t} ),\n\twithFilters( 'editor.MediaReplaceFlow' ),\n] )( MediaReplaceFlow );\n"]}
|
|
@@ -108,7 +108,19 @@ function useMouseMoveTypingReset() {
|
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
function useTypingObserver() {
|
|
111
|
-
const
|
|
111
|
+
const {
|
|
112
|
+
isTyping,
|
|
113
|
+
hasInlineToolbar
|
|
114
|
+
} = (0, _data.useSelect)(select => {
|
|
115
|
+
const {
|
|
116
|
+
isTyping: _isTyping,
|
|
117
|
+
getSettings
|
|
118
|
+
} = select(_store.store);
|
|
119
|
+
return {
|
|
120
|
+
isTyping: _isTyping(),
|
|
121
|
+
hasInlineToolbar: getSettings().hasInlineToolbar
|
|
122
|
+
};
|
|
123
|
+
}, []);
|
|
112
124
|
const {
|
|
113
125
|
startTyping,
|
|
114
126
|
stopTyping
|
|
@@ -120,7 +132,8 @@ function useTypingObserver() {
|
|
|
120
132
|
} = node;
|
|
121
133
|
const {
|
|
122
134
|
defaultView
|
|
123
|
-
} = ownerDocument;
|
|
135
|
+
} = ownerDocument;
|
|
136
|
+
const selection = defaultView.getSelection(); // Listeners to stop typing should only be added when typing.
|
|
124
137
|
// Listeners to start typing should only be added when not typing.
|
|
125
138
|
|
|
126
139
|
if (isTyping) {
|
|
@@ -170,17 +183,18 @@ function useTypingObserver() {
|
|
|
170
183
|
|
|
171
184
|
|
|
172
185
|
function stopTypingOnSelectionUncollapse() {
|
|
173
|
-
|
|
174
|
-
const isCollapsed = selection.rangeCount > 0 && selection.getRangeAt(0).collapsed;
|
|
175
|
-
|
|
176
|
-
if (!isCollapsed) {
|
|
186
|
+
if (!selection.isCollapsed) {
|
|
177
187
|
stopTyping();
|
|
178
188
|
}
|
|
179
189
|
}
|
|
180
190
|
|
|
181
191
|
node.addEventListener('focus', stopTypingOnNonTextField);
|
|
182
192
|
node.addEventListener('keydown', stopTypingOnEscapeKey);
|
|
183
|
-
|
|
193
|
+
|
|
194
|
+
if (!hasInlineToolbar) {
|
|
195
|
+
ownerDocument.addEventListener('selectionchange', stopTypingOnSelectionUncollapse);
|
|
196
|
+
}
|
|
197
|
+
|
|
184
198
|
return () => {
|
|
185
199
|
defaultView.clearTimeout(timerId);
|
|
186
200
|
node.removeEventListener('focus', stopTypingOnNonTextField);
|
|
@@ -225,7 +239,7 @@ function useTypingObserver() {
|
|
|
225
239
|
node.removeEventListener('keypress', startTypingInTextField);
|
|
226
240
|
node.removeEventListener('keydown', startTypingInTextField);
|
|
227
241
|
};
|
|
228
|
-
}, [isTyping, startTyping, stopTyping]);
|
|
242
|
+
}, [isTyping, hasInlineToolbar, startTyping, stopTyping]);
|
|
229
243
|
return (0, _compose.useMergeRefs)([ref1, ref2]);
|
|
230
244
|
}
|
|
231
245
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/observe-typing/index.js"],"names":["KEY_DOWN_ELIGIBLE_KEY_CODES","Set","UP","RIGHT","DOWN","LEFT","ENTER","BACKSPACE","isKeyDownEligibleForStartTyping","event","keyCode","shiftKey","has","useMouseMoveTypingReset","isTyping","select","blockEditorStore","stopTyping","node","ownerDocument","lastClientX","lastClientY","stopTypingOnMouseMove","clientX","clientY","addEventListener","removeEventListener","useTypingObserver","startTyping","ref1","ref2","defaultView","timerId","stopTypingOnNonTextField","target","setTimeout","stopTypingOnEscapeKey","ESCAPE","TAB","stopTypingOnSelectionUncollapse","selection","getSelection","isCollapsed","rangeCount","getRangeAt","collapsed","clearTimeout","startTypingInTextField","type","contains","ObserveTyping","children"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { isTextField } from '@wordpress/dom';\nimport {\n\tUP,\n\tRIGHT,\n\tDOWN,\n\tLEFT,\n\tENTER,\n\tBACKSPACE,\n\tESCAPE,\n\tTAB,\n} from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Set of key codes upon which typing is to be initiated on a keydown event.\n *\n * @type {Set<number>}\n */\nconst KEY_DOWN_ELIGIBLE_KEY_CODES = new Set( [\n\tUP,\n\tRIGHT,\n\tDOWN,\n\tLEFT,\n\tENTER,\n\tBACKSPACE,\n] );\n\n/**\n * Returns true if a given keydown event can be inferred as intent to start\n * typing, or false otherwise. A keydown is considered eligible if it is a\n * text navigation without shift active.\n *\n * @param {KeyboardEvent} event Keydown event to test.\n *\n * @return {boolean} Whether event is eligible to start typing.\n */\nfunction isKeyDownEligibleForStartTyping( event ) {\n\tconst { keyCode, shiftKey } = event;\n\treturn ! shiftKey && KEY_DOWN_ELIGIBLE_KEY_CODES.has( keyCode );\n}\n\n/**\n * Removes the `isTyping` flag when the mouse moves in the document of the given\n * element.\n */\nexport function useMouseMoveTypingReset() {\n\tconst isTyping = useSelect(\n\t\t( select ) => select( blockEditorStore ).isTyping(),\n\t\t[]\n\t);\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isTyping ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { ownerDocument } = node;\n\t\t\tlet lastClientX;\n\t\t\tlet lastClientY;\n\n\t\t\t/**\n\t\t\t * On mouse move, unset typing flag if user has moved cursor.\n\t\t\t *\n\t\t\t * @param {MouseEvent} event Mousemove event.\n\t\t\t */\n\t\t\tfunction stopTypingOnMouseMove( event ) {\n\t\t\t\tconst { clientX, clientY } = event;\n\n\t\t\t\t// We need to check that the mouse really moved because Safari\n\t\t\t\t// triggers mousemove events when shift or ctrl are pressed.\n\t\t\t\tif (\n\t\t\t\t\tlastClientX &&\n\t\t\t\t\tlastClientY &&\n\t\t\t\t\t( lastClientX !== clientX || lastClientY !== clientY )\n\t\t\t\t) {\n\t\t\t\t\tstopTyping();\n\t\t\t\t}\n\n\t\t\t\tlastClientX = clientX;\n\t\t\t\tlastClientY = clientY;\n\t\t\t}\n\n\t\t\townerDocument.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tstopTypingOnMouseMove\n\t\t\t);\n\n\t\t\treturn () => {\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tstopTypingOnMouseMove\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\t[ isTyping, stopTyping ]\n\t);\n}\n\n/**\n * Sets and removes the `isTyping` flag based on user actions:\n *\n * - Sets the flag if the user types within the given element.\n * - Removes the flag when the user selects some text, focusses a non-text\n * field, presses ESC or TAB, or moves the mouse in the document.\n */\nexport function useTypingObserver() {\n\tconst isTyping = useSelect( ( select ) =>\n\t\tselect( blockEditorStore ).isTyping()\n\t);\n\tconst { startTyping, stopTyping } = useDispatch( blockEditorStore );\n\n\tconst ref1 = useMouseMoveTypingReset();\n\tconst ref2 = useRefEffect(\n\t\t( node ) => {\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\n\t\t\t// Listeners to stop typing should only be added when typing.\n\t\t\t// Listeners to start typing should only be added when not typing.\n\t\t\tif ( isTyping ) {\n\t\t\t\tlet timerId;\n\n\t\t\t\t/**\n\t\t\t\t * Stops typing when focus transitions to a non-text field element.\n\t\t\t\t *\n\t\t\t\t * @param {FocusEvent} event Focus event.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnNonTextField( event ) {\n\t\t\t\t\tconst { target } = event;\n\n\t\t\t\t\t// Since focus to a non-text field via arrow key will trigger\n\t\t\t\t\t// before the keydown event, wait until after current stack\n\t\t\t\t\t// before evaluating whether typing is to be stopped. Otherwise,\n\t\t\t\t\t// typing will re-start.\n\t\t\t\t\ttimerId = defaultView.setTimeout( () => {\n\t\t\t\t\t\tif ( ! isTextField( target ) ) {\n\t\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * Unsets typing flag if user presses Escape while typing flag is\n\t\t\t\t * active.\n\t\t\t\t *\n\t\t\t\t * @param {KeyboardEvent} event Keypress or keydown event to\n\t\t\t\t * interpret.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnEscapeKey( event ) {\n\t\t\t\t\tconst { keyCode } = event;\n\n\t\t\t\t\tif ( keyCode === ESCAPE || keyCode === TAB ) {\n\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * On selection change, unset typing flag if user has made an\n\t\t\t\t * uncollapsed (shift) selection.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnSelectionUncollapse() {\n\t\t\t\t\tconst selection = defaultView.getSelection();\n\t\t\t\t\tconst isCollapsed =\n\t\t\t\t\t\tselection.rangeCount > 0 &&\n\t\t\t\t\t\tselection.getRangeAt( 0 ).collapsed;\n\n\t\t\t\t\tif ( ! isCollapsed ) {\n\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener( 'focus', stopTypingOnNonTextField );\n\t\t\t\tnode.addEventListener( 'keydown', stopTypingOnEscapeKey );\n\t\t\t\townerDocument.addEventListener(\n\t\t\t\t\t'selectionchange',\n\t\t\t\t\tstopTypingOnSelectionUncollapse\n\t\t\t\t);\n\n\t\t\t\treturn () => {\n\t\t\t\t\tdefaultView.clearTimeout( timerId );\n\t\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t\t'focus',\n\t\t\t\t\t\tstopTypingOnNonTextField\n\t\t\t\t\t);\n\t\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t\t'keydown',\n\t\t\t\t\t\tstopTypingOnEscapeKey\n\t\t\t\t\t);\n\t\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t\t'selectionchange',\n\t\t\t\t\t\tstopTypingOnSelectionUncollapse\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Handles a keypress or keydown event to infer intention to start\n\t\t\t * typing.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keypress or keydown event to interpret.\n\t\t\t */\n\t\t\tfunction startTypingInTextField( event ) {\n\t\t\t\tconst { type, target } = event;\n\n\t\t\t\t// Abort early if already typing, or key press is incurred outside a\n\t\t\t\t// text field (e.g. arrow-ing through toolbar buttons).\n\t\t\t\t// Ignore typing if outside the current DOM container\n\t\t\t\tif ( ! isTextField( target ) || ! node.contains( target ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Special-case keydown because certain keys do not emit a keypress\n\t\t\t\t// event. Conversely avoid keydown as the canonical event since\n\t\t\t\t// there are many keydown which are explicitly not targeted for\n\t\t\t\t// typing.\n\t\t\t\tif (\n\t\t\t\t\ttype === 'keydown' &&\n\t\t\t\t\t! isKeyDownEligibleForStartTyping( event )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstartTyping();\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'keypress', startTypingInTextField );\n\t\t\tnode.addEventListener( 'keydown', startTypingInTextField );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'keypress', startTypingInTextField );\n\t\t\t\tnode.removeEventListener( 'keydown', startTypingInTextField );\n\t\t\t};\n\t\t},\n\t\t[ isTyping, startTyping, stopTyping ]\n\t);\n\n\treturn useMergeRefs( [ ref1, ref2 ] );\n}\n\nfunction ObserveTyping( { children } ) {\n\treturn <div ref={ useTypingObserver() }>{ children }</div>;\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/observe-typing/README.md\n */\nexport default ObserveTyping;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/observe-typing/index.js"],"names":["KEY_DOWN_ELIGIBLE_KEY_CODES","Set","UP","RIGHT","DOWN","LEFT","ENTER","BACKSPACE","isKeyDownEligibleForStartTyping","event","keyCode","shiftKey","has","useMouseMoveTypingReset","isTyping","select","blockEditorStore","stopTyping","node","ownerDocument","lastClientX","lastClientY","stopTypingOnMouseMove","clientX","clientY","addEventListener","removeEventListener","useTypingObserver","hasInlineToolbar","_isTyping","getSettings","startTyping","ref1","ref2","defaultView","selection","getSelection","timerId","stopTypingOnNonTextField","target","setTimeout","stopTypingOnEscapeKey","ESCAPE","TAB","stopTypingOnSelectionUncollapse","isCollapsed","clearTimeout","startTypingInTextField","type","contains","ObserveTyping","children"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRefEffect, useMergeRefs } from '@wordpress/compose';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { isTextField } from '@wordpress/dom';\nimport {\n\tUP,\n\tRIGHT,\n\tDOWN,\n\tLEFT,\n\tENTER,\n\tBACKSPACE,\n\tESCAPE,\n\tTAB,\n} from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Set of key codes upon which typing is to be initiated on a keydown event.\n *\n * @type {Set<number>}\n */\nconst KEY_DOWN_ELIGIBLE_KEY_CODES = new Set( [\n\tUP,\n\tRIGHT,\n\tDOWN,\n\tLEFT,\n\tENTER,\n\tBACKSPACE,\n] );\n\n/**\n * Returns true if a given keydown event can be inferred as intent to start\n * typing, or false otherwise. A keydown is considered eligible if it is a\n * text navigation without shift active.\n *\n * @param {KeyboardEvent} event Keydown event to test.\n *\n * @return {boolean} Whether event is eligible to start typing.\n */\nfunction isKeyDownEligibleForStartTyping( event ) {\n\tconst { keyCode, shiftKey } = event;\n\treturn ! shiftKey && KEY_DOWN_ELIGIBLE_KEY_CODES.has( keyCode );\n}\n\n/**\n * Removes the `isTyping` flag when the mouse moves in the document of the given\n * element.\n */\nexport function useMouseMoveTypingReset() {\n\tconst isTyping = useSelect(\n\t\t( select ) => select( blockEditorStore ).isTyping(),\n\t\t[]\n\t);\n\tconst { stopTyping } = useDispatch( blockEditorStore );\n\n\treturn useRefEffect(\n\t\t( node ) => {\n\t\t\tif ( ! isTyping ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { ownerDocument } = node;\n\t\t\tlet lastClientX;\n\t\t\tlet lastClientY;\n\n\t\t\t/**\n\t\t\t * On mouse move, unset typing flag if user has moved cursor.\n\t\t\t *\n\t\t\t * @param {MouseEvent} event Mousemove event.\n\t\t\t */\n\t\t\tfunction stopTypingOnMouseMove( event ) {\n\t\t\t\tconst { clientX, clientY } = event;\n\n\t\t\t\t// We need to check that the mouse really moved because Safari\n\t\t\t\t// triggers mousemove events when shift or ctrl are pressed.\n\t\t\t\tif (\n\t\t\t\t\tlastClientX &&\n\t\t\t\t\tlastClientY &&\n\t\t\t\t\t( lastClientX !== clientX || lastClientY !== clientY )\n\t\t\t\t) {\n\t\t\t\t\tstopTyping();\n\t\t\t\t}\n\n\t\t\t\tlastClientX = clientX;\n\t\t\t\tlastClientY = clientY;\n\t\t\t}\n\n\t\t\townerDocument.addEventListener(\n\t\t\t\t'mousemove',\n\t\t\t\tstopTypingOnMouseMove\n\t\t\t);\n\n\t\t\treturn () => {\n\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t'mousemove',\n\t\t\t\t\tstopTypingOnMouseMove\n\t\t\t\t);\n\t\t\t};\n\t\t},\n\t\t[ isTyping, stopTyping ]\n\t);\n}\n\n/**\n * Sets and removes the `isTyping` flag based on user actions:\n *\n * - Sets the flag if the user types within the given element.\n * - Removes the flag when the user selects some text, focusses a non-text\n * field, presses ESC or TAB, or moves the mouse in the document.\n */\nexport function useTypingObserver() {\n\tconst { isTyping, hasInlineToolbar } = useSelect( ( select ) => {\n\t\tconst { isTyping: _isTyping, getSettings } = select( blockEditorStore );\n\t\treturn {\n\t\t\tisTyping: _isTyping(),\n\t\t\thasInlineToolbar: getSettings().hasInlineToolbar,\n\t\t};\n\t}, [] );\n\tconst { startTyping, stopTyping } = useDispatch( blockEditorStore );\n\n\tconst ref1 = useMouseMoveTypingReset();\n\tconst ref2 = useRefEffect(\n\t\t( node ) => {\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView } = ownerDocument;\n\t\t\tconst selection = defaultView.getSelection();\n\n\t\t\t// Listeners to stop typing should only be added when typing.\n\t\t\t// Listeners to start typing should only be added when not typing.\n\t\t\tif ( isTyping ) {\n\t\t\t\tlet timerId;\n\n\t\t\t\t/**\n\t\t\t\t * Stops typing when focus transitions to a non-text field element.\n\t\t\t\t *\n\t\t\t\t * @param {FocusEvent} event Focus event.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnNonTextField( event ) {\n\t\t\t\t\tconst { target } = event;\n\n\t\t\t\t\t// Since focus to a non-text field via arrow key will trigger\n\t\t\t\t\t// before the keydown event, wait until after current stack\n\t\t\t\t\t// before evaluating whether typing is to be stopped. Otherwise,\n\t\t\t\t\t// typing will re-start.\n\t\t\t\t\ttimerId = defaultView.setTimeout( () => {\n\t\t\t\t\t\tif ( ! isTextField( target ) ) {\n\t\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * Unsets typing flag if user presses Escape while typing flag is\n\t\t\t\t * active.\n\t\t\t\t *\n\t\t\t\t * @param {KeyboardEvent} event Keypress or keydown event to\n\t\t\t\t * interpret.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnEscapeKey( event ) {\n\t\t\t\t\tconst { keyCode } = event;\n\n\t\t\t\t\tif ( keyCode === ESCAPE || keyCode === TAB ) {\n\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t/**\n\t\t\t\t * On selection change, unset typing flag if user has made an\n\t\t\t\t * uncollapsed (shift) selection.\n\t\t\t\t */\n\t\t\t\tfunction stopTypingOnSelectionUncollapse() {\n\t\t\t\t\tif ( ! selection.isCollapsed ) {\n\t\t\t\t\t\tstopTyping();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnode.addEventListener( 'focus', stopTypingOnNonTextField );\n\t\t\t\tnode.addEventListener( 'keydown', stopTypingOnEscapeKey );\n\n\t\t\t\tif ( ! hasInlineToolbar ) {\n\t\t\t\t\townerDocument.addEventListener(\n\t\t\t\t\t\t'selectionchange',\n\t\t\t\t\t\tstopTypingOnSelectionUncollapse\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn () => {\n\t\t\t\t\tdefaultView.clearTimeout( timerId );\n\t\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t\t'focus',\n\t\t\t\t\t\tstopTypingOnNonTextField\n\t\t\t\t\t);\n\t\t\t\t\tnode.removeEventListener(\n\t\t\t\t\t\t'keydown',\n\t\t\t\t\t\tstopTypingOnEscapeKey\n\t\t\t\t\t);\n\t\t\t\t\townerDocument.removeEventListener(\n\t\t\t\t\t\t'selectionchange',\n\t\t\t\t\t\tstopTypingOnSelectionUncollapse\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Handles a keypress or keydown event to infer intention to start\n\t\t\t * typing.\n\t\t\t *\n\t\t\t * @param {KeyboardEvent} event Keypress or keydown event to interpret.\n\t\t\t */\n\t\t\tfunction startTypingInTextField( event ) {\n\t\t\t\tconst { type, target } = event;\n\n\t\t\t\t// Abort early if already typing, or key press is incurred outside a\n\t\t\t\t// text field (e.g. arrow-ing through toolbar buttons).\n\t\t\t\t// Ignore typing if outside the current DOM container\n\t\t\t\tif ( ! isTextField( target ) || ! node.contains( target ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Special-case keydown because certain keys do not emit a keypress\n\t\t\t\t// event. Conversely avoid keydown as the canonical event since\n\t\t\t\t// there are many keydown which are explicitly not targeted for\n\t\t\t\t// typing.\n\t\t\t\tif (\n\t\t\t\t\ttype === 'keydown' &&\n\t\t\t\t\t! isKeyDownEligibleForStartTyping( event )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tstartTyping();\n\t\t\t}\n\n\t\t\tnode.addEventListener( 'keypress', startTypingInTextField );\n\t\t\tnode.addEventListener( 'keydown', startTypingInTextField );\n\n\t\t\treturn () => {\n\t\t\t\tnode.removeEventListener( 'keypress', startTypingInTextField );\n\t\t\t\tnode.removeEventListener( 'keydown', startTypingInTextField );\n\t\t\t};\n\t\t},\n\t\t[ isTyping, hasInlineToolbar, startTyping, stopTyping ]\n\t);\n\n\treturn useMergeRefs( [ ref1, ref2 ] );\n}\n\nfunction ObserveTyping( { children } ) {\n\treturn <div ref={ useTypingObserver() }>{ children }</div>;\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/observe-typing/README.md\n */\nexport default ObserveTyping;\n"]}
|
|
@@ -15,6 +15,8 @@ var _components = require("@wordpress/components");
|
|
|
15
15
|
|
|
16
16
|
var _i18n = require("@wordpress/i18n");
|
|
17
17
|
|
|
18
|
+
var _date = require("@wordpress/date");
|
|
19
|
+
|
|
18
20
|
var _inspectorPopoverHeader = _interopRequireDefault(require("../inspector-popover-header"));
|
|
19
21
|
|
|
20
22
|
/**
|
|
@@ -41,6 +43,7 @@ function PublishDateTimePicker(_ref, ref) {
|
|
|
41
43
|
}],
|
|
42
44
|
onClose: onClose
|
|
43
45
|
}), (0, _element.createElement)(_components.DateTimePicker, (0, _extends2.default)({
|
|
46
|
+
startOfWeek: (0, _date.__experimentalGetSettings)().l10n.startOfWeek,
|
|
44
47
|
__nextRemoveHelpButton: true,
|
|
45
48
|
__nextRemoveResetButton: true,
|
|
46
49
|
onChange: onChange
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/publish-date-time-picker/index.js"],"names":["PublishDateTimePicker","ref","onClose","onChange","additionalProps","label","onClick"],"mappings":";;;;;;;;;AAKA;;;;AAFA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/publish-date-time-picker/index.js"],"names":["PublishDateTimePicker","ref","onClose","onChange","additionalProps","label","onClick","l10n","startOfWeek"],"mappings":";;;;;;;;;AAKA;;;;AAFA;;AACA;;AAEA;;AAKA;;AAXA;AACA;AACA;;AAMA;AACA;AACA;AAGA,SAASA,qBAAT,OAECC,GAFD,EAGE;AAAA,MAFD;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqB,OAAGC;AAAxB,GAEC;AACD,SACC;AAAK,IAAA,GAAG,EAAGH,GAAX;AAAiB,IAAA,SAAS,EAAC;AAA3B,KACC,4BAAC,+BAAD;AACC,IAAA,KAAK,EAAG,cAAI,SAAJ,CADT;AAEC,IAAA,OAAO,EAAG,CACT;AACCI,MAAAA,KAAK,EAAE,cAAI,KAAJ,CADR;AAECC,MAAAA,OAAO,EAAE,MAAMH,QAAN,aAAMA,QAAN,uBAAMA,QAAQ,CAAI,IAAJ;AAFxB,KADS,CAFX;AAQC,IAAA,OAAO,EAAGD;AARX,IADD,EAWC,4BAAC,0BAAD;AACC,IAAA,WAAW,EAAG,uCAAcK,IAAd,CAAmBC,WADlC;AAEC,IAAA,sBAAsB,MAFvB;AAGC,IAAA,uBAAuB,MAHxB;AAIC,IAAA,QAAQ,EAAGL;AAJZ,KAKMC,eALN,EAXD,CADD;AAqBA;;eAEc,yBAAYJ,qBAAZ,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { DateTimePicker } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { forwardRef } from '@wordpress/element';\nimport { __experimentalGetSettings as getSettings } from '@wordpress/date';\n\n/**\n * Internal dependencies\n */\nimport InspectorPopoverHeader from '../inspector-popover-header';\n\nfunction PublishDateTimePicker(\n\t{ onClose, onChange, ...additionalProps },\n\tref\n) {\n\treturn (\n\t\t<div ref={ ref } className=\"block-editor-publish-date-time-picker\">\n\t\t\t<InspectorPopoverHeader\n\t\t\t\ttitle={ __( 'Publish' ) }\n\t\t\t\tactions={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: __( 'Now' ),\n\t\t\t\t\t\tonClick: () => onChange?.( null ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t\tonClose={ onClose }\n\t\t\t/>\n\t\t\t<DateTimePicker\n\t\t\t\tstartOfWeek={ getSettings().l10n.startOfWeek }\n\t\t\t\t__nextRemoveHelpButton\n\t\t\t\t__nextRemoveResetButton\n\t\t\t\tonChange={ onChange }\n\t\t\t\t{ ...additionalProps }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( PublishDateTimePicker );\n"]}
|
|
@@ -11,10 +11,16 @@ var _element = require("@wordpress/element");
|
|
|
11
11
|
|
|
12
12
|
var _components = require("@wordpress/components");
|
|
13
13
|
|
|
14
|
+
var _data = require("@wordpress/data");
|
|
15
|
+
|
|
16
|
+
var _richText = require("@wordpress/rich-text");
|
|
17
|
+
|
|
14
18
|
var _blockControls = _interopRequireDefault(require("../block-controls"));
|
|
15
19
|
|
|
16
20
|
var _formatToolbar = _interopRequireDefault(require("./format-toolbar"));
|
|
17
21
|
|
|
22
|
+
var _store = require("../../store");
|
|
23
|
+
|
|
18
24
|
/**
|
|
19
25
|
* WordPress dependencies
|
|
20
26
|
*/
|
|
@@ -22,23 +28,66 @@ var _formatToolbar = _interopRequireDefault(require("./format-toolbar"));
|
|
|
22
28
|
/**
|
|
23
29
|
* Internal dependencies
|
|
24
30
|
*/
|
|
25
|
-
|
|
31
|
+
function InlineSelectionToolbar(_ref) {
|
|
26
32
|
let {
|
|
27
|
-
|
|
28
|
-
anchorRef
|
|
33
|
+
value,
|
|
34
|
+
anchorRef,
|
|
35
|
+
activeFormats
|
|
29
36
|
} = _ref;
|
|
37
|
+
const lastFormat = activeFormats[activeFormats.length - 1];
|
|
38
|
+
const lastFormatType = lastFormat === null || lastFormat === void 0 ? void 0 : lastFormat.type;
|
|
39
|
+
const settings = (0, _data.useSelect)(select => select(_richText.store).getFormatType(lastFormatType), [lastFormatType]);
|
|
40
|
+
const selectionRef = (0, _richText.useAnchorRef)({
|
|
41
|
+
ref: anchorRef,
|
|
42
|
+
value,
|
|
43
|
+
settings
|
|
44
|
+
});
|
|
45
|
+
return (0, _element.createElement)(InlineToolbar, {
|
|
46
|
+
anchorRef: selectionRef
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function InlineToolbar(_ref2) {
|
|
51
|
+
let {
|
|
52
|
+
anchorRef
|
|
53
|
+
} = _ref2;
|
|
54
|
+
return (0, _element.createElement)(_components.Popover, {
|
|
55
|
+
position: "top center",
|
|
56
|
+
focusOnMount: false,
|
|
57
|
+
anchorRef: anchorRef,
|
|
58
|
+
className: "block-editor-rich-text__inline-format-toolbar",
|
|
59
|
+
__unstableSlotName: "block-toolbar"
|
|
60
|
+
}, (0, _element.createElement)("div", {
|
|
61
|
+
className: "block-editor-rich-text__inline-format-toolbar-group"
|
|
62
|
+
}, (0, _element.createElement)(_components.ToolbarGroup, null, (0, _element.createElement)(_formatToolbar.default, null))));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const FormatToolbarContainer = _ref3 => {
|
|
66
|
+
let {
|
|
67
|
+
inline,
|
|
68
|
+
anchorRef,
|
|
69
|
+
value
|
|
70
|
+
} = _ref3;
|
|
71
|
+
const hasInlineToolbar = (0, _data.useSelect)(select => select(_store.store).getSettings().hasInlineToolbar, []);
|
|
30
72
|
|
|
31
73
|
if (inline) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
74
|
+
return (0, _element.createElement)(InlineToolbar, {
|
|
75
|
+
anchorRef: anchorRef
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (hasInlineToolbar) {
|
|
80
|
+
const activeFormats = (0, _richText.getActiveFormats)(value);
|
|
81
|
+
|
|
82
|
+
if ((0, _richText.isCollapsed)(value) && !activeFormats.length) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return (0, _element.createElement)(InlineSelectionToolbar, {
|
|
36
87
|
anchorRef: anchorRef,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
className: "block-editor-rich-text__inline-format-toolbar-group"
|
|
41
|
-
}, (0, _element.createElement)(_components.ToolbarGroup, null, (0, _element.createElement)(_formatToolbar.default, null))));
|
|
88
|
+
value: value,
|
|
89
|
+
activeFormats: activeFormats
|
|
90
|
+
});
|
|
42
91
|
} // Render regular toolbar.
|
|
43
92
|
|
|
44
93
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/format-toolbar-container.js"],"names":["FormatToolbarContainer","inline","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/format-toolbar-container.js"],"names":["InlineSelectionToolbar","value","anchorRef","activeFormats","lastFormat","length","lastFormatType","type","settings","select","richTextStore","getFormatType","selectionRef","ref","InlineToolbar","FormatToolbarContainer","inline","hasInlineToolbar","blockEditorStore","getSettings"],"mappings":";;;;;;;;;;;AAGA;;AACA;;AACA;;AAUA;;AACA;;AACA;;AAjBA;AACA;AACA;;AAUA;AACA;AACA;AAKA,SAASA,sBAAT,OAAuE;AAAA,MAAtC;AAAEC,IAAAA,KAAF;AAASC,IAAAA,SAAT;AAAoBC,IAAAA;AAApB,GAAsC;AACtE,QAAMC,UAAU,GAAGD,aAAa,CAAEA,aAAa,CAACE,MAAd,GAAuB,CAAzB,CAAhC;AACA,QAAMC,cAAc,GAAGF,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEG,IAAnC;AACA,QAAMC,QAAQ,GAAG,qBACdC,MAAF,IAAcA,MAAM,CAAEC,eAAF,CAAN,CAAwBC,aAAxB,CAAuCL,cAAvC,CADE,EAEhB,CAAEA,cAAF,CAFgB,CAAjB;AAIA,QAAMM,YAAY,GAAG,4BAAc;AAClCC,IAAAA,GAAG,EAAEX,SAD6B;AAElCD,IAAAA,KAFkC;AAGlCO,IAAAA;AAHkC,GAAd,CAArB;AAMA,SAAO,4BAAC,aAAD;AAAe,IAAA,SAAS,EAAGI;AAA3B,IAAP;AACA;;AAED,SAASE,aAAT,QAAwC;AAAA,MAAhB;AAAEZ,IAAAA;AAAF,GAAgB;AACvC,SACC,4BAAC,mBAAD;AACC,IAAA,QAAQ,EAAC,YADV;AAEC,IAAA,YAAY,EAAG,KAFhB;AAGC,IAAA,SAAS,EAAGA,SAHb;AAIC,IAAA,SAAS,EAAC,+CAJX;AAKC,IAAA,kBAAkB,EAAC;AALpB,KAOC;AAAK,IAAA,SAAS,EAAC;AAAf,KACC,4BAAC,wBAAD,QACC,4BAAC,sBAAD,OADD,CADD,CAPD,CADD;AAeA;;AAED,MAAMa,sBAAsB,GAAG,SAAoC;AAAA,MAAlC;AAAEC,IAAAA,MAAF;AAAUd,IAAAA,SAAV;AAAqBD,IAAAA;AAArB,GAAkC;AAClE,QAAMgB,gBAAgB,GAAG,qBACtBR,MAAF,IAAcA,MAAM,CAAES,YAAF,CAAN,CAA2BC,WAA3B,GAAyCF,gBAD/B,EAExB,EAFwB,CAAzB;;AAKA,MAAKD,MAAL,EAAc;AACb,WAAO,4BAAC,aAAD;AAAe,MAAA,SAAS,EAAGd;AAA3B,MAAP;AACA;;AAED,MAAKe,gBAAL,EAAwB;AACvB,UAAMd,aAAa,GAAG,gCAAkBF,KAAlB,CAAtB;;AAEA,QAAK,2BAAaA,KAAb,KAAwB,CAAEE,aAAa,CAACE,MAA7C,EAAsD;AACrD,aAAO,IAAP;AACA;;AAED,WACC,4BAAC,sBAAD;AACC,MAAA,SAAS,EAAGH,SADb;AAEC,MAAA,KAAK,EAAGD,KAFT;AAGC,MAAA,aAAa,EAAGE;AAHjB,MADD;AAOA,GAxBiE,CA0BlE;;;AACA,SACC,4BAAC,sBAAD;AAAe,IAAA,KAAK,EAAC;AAArB,KACC,4BAAC,sBAAD,OADD,CADD;AAKA,CAhCD;;eAkCeY,sB","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { Popover, ToolbarGroup } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tisCollapsed,\n\tgetActiveFormats,\n\tuseAnchorRef,\n\tstore as richTextStore,\n} from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport BlockControls from '../block-controls';\nimport FormatToolbar from './format-toolbar';\nimport { store as blockEditorStore } from '../../store';\n\nfunction InlineSelectionToolbar( { value, anchorRef, activeFormats } ) {\n\tconst lastFormat = activeFormats[ activeFormats.length - 1 ];\n\tconst lastFormatType = lastFormat?.type;\n\tconst settings = useSelect(\n\t\t( select ) => select( richTextStore ).getFormatType( lastFormatType ),\n\t\t[ lastFormatType ]\n\t);\n\tconst selectionRef = useAnchorRef( {\n\t\tref: anchorRef,\n\t\tvalue,\n\t\tsettings,\n\t} );\n\n\treturn <InlineToolbar anchorRef={ selectionRef } />;\n}\n\nfunction InlineToolbar( { anchorRef } ) {\n\treturn (\n\t\t<Popover\n\t\t\tposition=\"top center\"\n\t\t\tfocusOnMount={ false }\n\t\t\tanchorRef={ anchorRef }\n\t\t\tclassName=\"block-editor-rich-text__inline-format-toolbar\"\n\t\t\t__unstableSlotName=\"block-toolbar\"\n\t\t>\n\t\t\t<div className=\"block-editor-rich-text__inline-format-toolbar-group\">\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t<FormatToolbar />\n\t\t\t\t</ToolbarGroup>\n\t\t\t</div>\n\t\t</Popover>\n\t);\n}\n\nconst FormatToolbarContainer = ( { inline, anchorRef, value } ) => {\n\tconst hasInlineToolbar = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings().hasInlineToolbar,\n\t\t[]\n\t);\n\n\tif ( inline ) {\n\t\treturn <InlineToolbar anchorRef={ anchorRef } />;\n\t}\n\n\tif ( hasInlineToolbar ) {\n\t\tconst activeFormats = getActiveFormats( value );\n\n\t\tif ( isCollapsed( value ) && ! activeFormats.length ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<InlineSelectionToolbar\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tvalue={ value }\n\t\t\t\tactiveFormats={ activeFormats }\n\t\t\t/>\n\t\t);\n\t}\n\n\t// Render regular toolbar.\n\treturn (\n\t\t<BlockControls group=\"inline\">\n\t\t\t<FormatToolbar />\n\t\t</BlockControls>\n\t);\n};\n\nexport default FormatToolbarContainer;\n"]}
|
|
@@ -360,7 +360,8 @@ function RichTextWrapper(_ref, forwardedRef) {
|
|
|
360
360
|
forwardedRef: anchorRef
|
|
361
361
|
})))), isSelected && hasFormats && (0, _element.createElement)(_formatToolbarContainer.default, {
|
|
362
362
|
inline: inlineToolbar,
|
|
363
|
-
anchorRef: anchorRef
|
|
363
|
+
anchorRef: anchorRef,
|
|
364
|
+
value: value
|
|
364
365
|
}), (0, _element.createElement)(TagName // Overridable props.
|
|
365
366
|
, (0, _extends2.default)({
|
|
366
367
|
role: "textbox",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\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\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\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 { useInputRules } from './use-input-rules';\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 { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\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\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t\t'disableSuggestions',\n\t\t'disableAutocorrection',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\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\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\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\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\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// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\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 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\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\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\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__unstableMultilineTag: multilineTag,\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 onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\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\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\tanchorRef={ anchorRef }\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\tuseInputRules( {\n\t\t\t\t\t\tvalue,\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\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\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\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\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\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} ),\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\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t\tversion: '6.2',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\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"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/rich-text/index.js"],"names":["keyboardShortcutContext","inputEventContext","removeNativeProps","props","RichTextWrapper","forwardedRef","children","tagName","value","originalValue","onChange","originalOnChange","isSelected","originalIsSelected","multiline","inlineToolbar","wrapperClassName","autocompleters","onReplace","placeholder","allowedFormats","formattingControls","withoutInteractiveFormatting","onRemove","onMerge","onSplit","__unstableOnSplitAtEnd","onSplitAtEnd","__unstableOnSplitMiddle","onSplitMiddle","identifier","preserveWhiteSpace","__unstablePastePlainText","pastePlainText","__unstableEmbedURLOnPaste","__unstableDisableFormats","disableFormats","disableLineBreaks","unstableOnFocus","__unstableAllowPrefixTransformations","instanceId","anchorRef","clientId","selector","select","getSelectionStart","getSelectionEnd","blockEditorStore","selectionStart","selectionEnd","undefined","attributeKey","offset","selectionChange","multilineTag","adjustedAllowedFormats","hasFormats","length","adjustedValue","adjustedOnChange","Array","isArray","childrenSource","toHTML","newValue","fromDOM","document","childNodes","onSelectionChange","start","end","selection","unset","formatTypes","prepareHandlers","valueHandlers","changeHandlers","dependencies","addEditorOnlyFormats","reduce","accumulator","fn","text","formats","removeEditorOnlyFormats","forEach","formatType","__experimentalCreatePrepareEditableTree","name","addInvisibleFormats","ref","richTextRef","html","__unstableFormats","__unstableText","Object","values","changeHandler","__unstableIsSelected","__unstableMultilineTag","__unstableDependencies","__unstableAfterParse","__unstableBeforeSerialize","__unstableAddInvisibleFormats","autocompleteProps","completers","record","keyboardShortcuts","Set","inputEvents","onKeyDown","event","keyCode","defaultPrevented","DELETE","BACKSPACE","isReverse","hasActiveFormats","activeFormats","preventDefault","onFocus","current","focus","TagName","content","className","since","alternative","version","ForwardedRichTextContainer","Content","Tag","MultilineTag","isEmpty"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { omit } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tRawHTML,\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\tisEmpty,\n\tisCollapsed,\n\tremoveFormat,\n} from '@wordpress/rich-text';\nimport deprecated from '@wordpress/deprecated';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\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 { useInputRules } from './use-input-rules';\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 { useFirefoxCompat } from './use-firefox-compat';\nimport FormatEdit from './format-edit';\nimport { getMultilineTag, getAllowedFormats } from './utils';\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\treturn omit( props, [\n\t\t'__unstableMobileNoFocusOnMount',\n\t\t'deleteEnter',\n\t\t'placeholderTextColor',\n\t\t'textAlign',\n\t\t'selectionColor',\n\t\t'tagsToEliminate',\n\t\t'rootTagsToEliminate',\n\t\t'disableEditingMenu',\n\t\t'fontSize',\n\t\t'fontFamily',\n\t\t'fontWeight',\n\t\t'fontStyle',\n\t\t'minWidth',\n\t\t'maxWidth',\n\t\t'setRef',\n\t\t'disableSuggestions',\n\t\t'disableAutocorrection',\n\t] );\n}\n\nfunction RichTextWrapper(\n\t{\n\t\tchildren,\n\t\ttagName = 'div',\n\t\tvalue: originalValue = '',\n\t\tonChange: originalOnChange,\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\tformattingControls,\n\t\twithoutInteractiveFormatting,\n\t\tonRemove,\n\t\tonMerge,\n\t\tonSplit,\n\t\t__unstableOnSplitAtEnd: onSplitAtEnd,\n\t\t__unstableOnSplitMiddle: onSplitMiddle,\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\tunstableOnFocus,\n\t\t__unstableAllowPrefixTransformations,\n\t\t...props\n\t},\n\tforwardedRef\n) {\n\tconst instanceId = useInstanceId( RichTextWrapper );\n\n\tidentifier = identifier || instanceId;\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// retreived from the store on merge.\n\t// To do: fix this somehow.\n\tconst { selectionStart, selectionEnd, isSelected } = useSelect( selector );\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\tconst multilineTag = getMultilineTag( multiline );\n\tconst adjustedAllowedFormats = getAllowedFormats( {\n\t\tallowedFormats,\n\t\tformattingControls,\n\t\tdisableFormats,\n\t} );\n\tconst hasFormats =\n\t\t! adjustedAllowedFormats || adjustedAllowedFormats.length > 0;\n\tlet adjustedValue = originalValue;\n\tlet adjustedOnChange = originalOnChange;\n\n\t// Handle deprecated format.\n\tif ( Array.isArray( originalValue ) ) {\n\t\tadjustedValue = childrenSource.toHTML( originalValue );\n\t\tadjustedOnChange = ( newValue ) =>\n\t\t\toriginalOnChange(\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 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\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\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\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__unstableMultilineTag: multilineTag,\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 onKeyDown( event ) {\n\t\tconst { keyCode } = event;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( keyCode === DELETE || keyCode === BACKSPACE ) {\n\t\t\tconst { start, end, text } = value;\n\t\t\tconst isReverse = keyCode === BACKSPACE;\n\t\t\tconst hasActiveFormats =\n\t\t\t\tvalue.activeFormats && !! value.activeFormats.length;\n\n\t\t\t// Only process delete if the key press occurs at an uncollapsed edge.\n\t\t\tif (\n\t\t\t\t! isCollapsed( value ) ||\n\t\t\t\thasActiveFormats ||\n\t\t\t\t( isReverse && start !== 0 ) ||\n\t\t\t\t( ! isReverse && end !== text.length )\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( onMerge ) {\n\t\t\t\tonMerge( ! isReverse );\n\t\t\t}\n\n\t\t\t// Only handle remove on Backspace. This serves dual-purpose of being\n\t\t\t// an intentional user interaction distinguishing between Backspace and\n\t\t\t// Delete to remove the empty field, but also to avoid merge & remove\n\t\t\t// causing destruction of two fields (merge, then removed merged).\n\t\t\tif ( onRemove && isEmpty( value ) && isReverse ) {\n\t\t\t\tonRemove( ! isReverse );\n\t\t\t}\n\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onFocus() {\n\t\tanchorRef.current.focus();\n\t}\n\n\tconst TagName = tagName;\n\tconst content = (\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\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\tanchorRef={ anchorRef }\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\tuseInputRules( {\n\t\t\t\t\t\tvalue,\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\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\tonSplitMiddle,\n\t\t\t\t\t\t__unstableEmbedURLOnPaste,\n\t\t\t\t\t\tmultilineTag,\n\t\t\t\t\t\tpreserveWhiteSpace,\n\t\t\t\t\t\tpastePlainText,\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\tonSplitMiddle,\n\t\t\t\t\t\tmultilineTag,\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} ),\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\tonFocus={ unstableOnFocus }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t/>\n\t\t</>\n\t);\n\n\tif ( ! wrapperClassName ) {\n\t\treturn content;\n\t}\n\n\tdeprecated( 'wp.blockEditor.RichText wrapperClassName prop', {\n\t\tsince: '5.4',\n\t\talternative: 'className prop or create your own wrapper div',\n\t\tversion: '6.2',\n\t} );\n\n\tconst className = classnames( 'block-editor-rich-text', wrapperClassName );\n\treturn <div className={ className }>{ content }</div>;\n}\n\nconst ForwardedRichTextContainer = forwardRef( RichTextWrapper );\n\nForwardedRichTextContainer.Content = ( {\n\tvalue,\n\ttagName: Tag,\n\tmultiline,\n\t...props\n} ) => {\n\t// Handle deprecated `children` and `node` sources.\n\tif ( Array.isArray( value ) ) {\n\t\tvalue = childrenSource.toHTML( value );\n\t}\n\n\tconst MultilineTag = getMultilineTag( multiline );\n\n\tif ( ! value && MultilineTag ) {\n\t\tvalue = `<${ MultilineTag }></${ MultilineTag }>`;\n\t}\n\n\tconst content = <RawHTML>{ value }</RawHTML>;\n\n\tif ( Tag ) {\n\t\treturn <Tag { ...omit( props, [ 'format' ] ) }>{ content }</Tag>;\n\t}\n\n\treturn content;\n};\n\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"]}
|