@wordpress/block-editor 9.0.0 → 9.3.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 +10 -0
- package/README.md +1 -0
- package/build/autocompleters/block.js +3 -1
- package/build/autocompleters/block.js.map +1 -1
- package/build/components/block-actions/index.js.map +1 -1
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-alignment-matrix-control/index.js +4 -13
- package/build/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build/components/block-breadcrumb/index.js.map +1 -1
- package/build/components/block-content-overlay/index.js +4 -82
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-context/index.js.map +1 -1
- package/build/components/block-controls/hook.js.map +1 -1
- package/build/components/block-draggable/draggable-chip.native.js +65 -0
- package/build/components/block-draggable/draggable-chip.native.js.map +1 -0
- package/build/components/block-draggable/dropping-insertion-point.native.js +157 -0
- package/build/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
- package/build/components/block-draggable/index.js.map +1 -1
- package/build/components/block-draggable/index.native.js +488 -0
- package/build/components/block-draggable/index.native.js.map +1 -0
- package/build/components/block-draggable/use-scroll-when-dragging.native.js +130 -0
- package/build/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
- package/build/components/block-list/block-list-context.native.js +195 -0
- package/build/components/block-list/block-list-context.native.js.map +1 -0
- package/build/components/block-list/block-list-item-cell.native.js +67 -0
- package/build/components/block-list/block-list-item-cell.native.js.map +1 -0
- package/build/components/block-list/block-list-item.native.js +12 -9
- package/build/components/block-list/block-list-item.native.js.map +1 -1
- package/build/components/block-list/block-selection-button.native.js.map +1 -1
- package/build/components/block-list/block.js.map +1 -1
- package/build/components/block-list/block.native.js +27 -5
- package/build/components/block-list/block.native.js.map +1 -1
- package/build/components/block-list/index.js +34 -32
- package/build/components/block-list/index.js.map +1 -1
- package/build/components/block-list/index.native.js +75 -23
- package/build/components/block-list/index.native.js.map +1 -1
- package/build/components/block-list/use-block-props/index.js +8 -4
- package/build/components/block-list/use-block-props/index.js.map +1 -1
- package/build/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
- package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build/components/block-list/use-in-between-inserter.js +1 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-list-appender/index.js.map +1 -1
- package/build/components/block-list-appender/index.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build/components/block-mobile-toolbar/index.native.js +10 -3
- package/build/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build/components/block-mover/button.js.map +1 -1
- package/build/components/block-mover/index.native.js +17 -4
- package/build/components/block-mover/index.native.js.map +1 -1
- package/build/components/block-parent-selector/index.js.map +1 -1
- package/build/components/block-pattern-setup/index.js +1 -1
- package/build/components/block-pattern-setup/index.js.map +1 -1
- package/build/components/block-popover/inbetween.js +19 -8
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +5 -16
- package/build/components/block-popover/index.js.map +1 -1
- package/build/components/block-preview/auto.js.map +1 -1
- package/build/components/block-preview/index.js +1 -1
- package/build/components/block-preview/index.js.map +1 -1
- package/build/components/block-selection-clearer/index.js.map +1 -1
- package/build/components/block-settings-menu/block-mode-toggle.js +3 -7
- package/build/components/block-settings-menu/block-mode-toggle.js.map +1 -1
- package/build/components/block-settings-menu/block-settings-dropdown.js +6 -3
- package/build/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build/components/block-styles/index.js +6 -3
- package/build/components/block-styles/index.js.map +1 -1
- package/build/components/block-styles/menu-items.js +3 -7
- package/build/components/block-styles/menu-items.js.map +1 -1
- package/build/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build/components/block-toolbar/index.native.js.map +1 -1
- package/build/components/block-toolbar/utils.js +5 -8
- package/build/components/block-toolbar/utils.js.map +1 -1
- package/build/components/block-tools/block-contextual-toolbar.js.map +1 -1
- package/build/components/block-tools/block-selection-button.js +1 -0
- package/build/components/block-tools/block-selection-button.js.map +1 -1
- package/build/components/block-tools/index.js.map +1 -1
- package/build/components/block-tools/selected-block-popover.js +1 -29
- package/build/components/block-tools/selected-block-popover.js.map +1 -1
- package/build/components/block-types-list/index.native.js.map +1 -1
- package/build/components/block-variation-transforms/index.js +16 -2
- package/build/components/block-variation-transforms/index.js.map +1 -1
- package/build/components/border-radius-control/input-controls.js +10 -3
- package/build/components/border-radius-control/input-controls.js.map +1 -1
- package/build/components/color-style-selector/index.js.map +1 -1
- package/build/components/colors/with-colors.js.map +1 -1
- package/build/components/colors-gradients/dropdown.js +122 -41
- package/build/components/colors-gradients/dropdown.js.map +1 -1
- package/build/components/colors-gradients/panel-color-gradient-settings.js +35 -60
- package/build/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build/components/convert-to-group-buttons/toolbar.js +22 -5
- package/build/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build/components/copy-handler/index.js +17 -1
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/default-block-appender/index.js.map +1 -1
- package/build/components/default-block-appender/index.native.js.map +1 -1
- package/build/components/default-style-picker/index.js.map +1 -1
- package/build/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build/components/iframe/index.js +51 -50
- package/build/components/iframe/index.js.map +1 -1
- package/build/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build/components/image-editor/use-save-image.js +3 -1
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/image-size-control/index.js +3 -1
- package/build/components/image-size-control/index.js.map +1 -1
- package/build/components/index.js +31 -13
- package/build/components/index.js.map +1 -1
- package/build/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build/components/inserter/block-types-tab.native.js.map +1 -1
- package/build/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/index.native.js +1 -1
- package/build/components/inserter/index.native.js.map +1 -1
- package/build/components/inserter/library.js +3 -7
- package/build/components/inserter/library.js.map +1 -1
- package/build/components/inserter/menu.js.map +1 -1
- package/build/components/inserter/menu.native.js.map +1 -1
- package/build/components/inserter/no-results.native.js.map +1 -1
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/inserter/search-items.js +1 -1
- package/build/components/inserter/search-items.js.map +1 -1
- package/build/components/inserter/search-results.native.js.map +1 -1
- package/build/components/inspector-popover-header/index.js +56 -0
- package/build/components/inspector-popover-header/index.js.map +1 -0
- package/build/components/line-height-control/index.js.map +1 -1
- package/build/components/link-control/constants.js +11 -1
- package/build/components/link-control/constants.js.map +1 -1
- package/build/components/link-control/index.js +4 -4
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/link-control/search-create-button.js +1 -3
- package/build/components/link-control/search-create-button.js.map +1 -1
- package/build/components/link-control/search-input.js +5 -3
- package/build/components/link-control/search-input.js.map +1 -1
- package/build/components/link-control/search-results.js +4 -3
- package/build/components/link-control/search-results.js.map +1 -1
- package/build/components/link-control/settings-drawer.js +3 -7
- package/build/components/link-control/settings-drawer.js.map +1 -1
- package/build/components/link-control/use-search-handler.js +4 -4
- package/build/components/link-control/use-search-handler.js.map +1 -1
- package/build/components/list-view/block-contents.js.map +1 -1
- package/build/components/list-view/branch.js.map +1 -1
- package/build/components/list-view/drop-indicator.js +0 -1
- package/build/components/list-view/drop-indicator.js.map +1 -1
- package/build/components/list-view/index.js.map +1 -1
- package/build/components/list-view/use-block-selection.js.map +1 -1
- package/build/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build/components/list-view/utils.js +1 -7
- package/build/components/list-view/utils.js.map +1 -1
- package/build/components/media-placeholder/index.js +4 -6
- package/build/components/media-placeholder/index.js.map +1 -1
- package/build/components/media-replace-flow/index.js +20 -7
- package/build/components/media-replace-flow/index.js.map +1 -1
- package/build/components/media-upload/index.native.js +10 -4
- package/build/components/media-upload/index.native.js.map +1 -1
- package/build/components/navigable-toolbar/index.js +12 -2
- package/build/components/navigable-toolbar/index.js.map +1 -1
- package/build/components/plain-text/index.native.js +62 -7
- package/build/components/plain-text/index.native.js.map +1 -1
- package/build/components/preview-options/index.js +4 -0
- package/build/components/preview-options/index.js.map +1 -1
- package/build/components/provider/use-block-sync.js +5 -3
- package/build/components/provider/use-block-sync.js.map +1 -1
- package/build/components/publish-date-time-picker/index.js +53 -0
- package/build/components/publish-date-time-picker/index.js.map +1 -0
- package/build/components/rich-text/embed-handler-picker.native.js +4 -8
- package/build/components/rich-text/embed-handler-picker.native.js.map +1 -1
- package/build/components/rich-text/format-toolbar-container.js +0 -1
- package/build/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build/components/rich-text/index.js +2 -2
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/rich-text/index.native.js +5 -1
- package/build/components/rich-text/index.native.js.map +1 -1
- package/build/components/rich-text/use-format-types.js.map +1 -1
- package/build/components/rich-text/use-mark-persistent.js.map +1 -1
- package/build/components/skip-to-selected-block/index.js.map +1 -1
- package/build/components/ungroup-button/index.native.js +3 -7
- package/build/components/ungroup-button/index.native.js.map +1 -1
- package/build/components/url-input/index.js +18 -4
- package/build/components/url-input/index.js.map +1 -1
- package/build/components/use-block-display-information/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.js.map +1 -1
- package/build/components/use-block-drop-zone/index.native.js +167 -0
- package/build/components/use-block-drop-zone/index.native.js.map +1 -0
- package/build/components/use-display-block-controls/index.native.js.map +1 -1
- package/build/components/use-on-block-drop/index.js.map +1 -1
- package/build/components/use-on-block-drop/index.native.js +95 -0
- package/build/components/use-on-block-drop/index.native.js.map +1 -0
- package/build/components/use-setting/index.js.map +1 -1
- package/build/components/warning/index.js +6 -1
- package/build/components/warning/index.js.map +1 -1
- package/build/components/writing-flow/use-arrow-nav.js +12 -12
- package/build/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build/components/writing-flow/use-click-selection.js.map +1 -1
- package/build/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build/components/writing-flow/use-input.js +15 -0
- package/build/components/writing-flow/use-input.js.map +1 -1
- package/build/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build/components/writing-flow/use-select-all.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build/elements/index.js +9 -0
- package/build/elements/index.js.map +1 -0
- package/build/hooks/anchor.js.map +1 -1
- package/build/hooks/border.js +2 -7
- package/build/hooks/border.js.map +1 -1
- package/build/hooks/color-panel.js +14 -7
- package/build/hooks/color-panel.js.map +1 -1
- package/build/hooks/color-panel.native.js.map +1 -1
- package/build/hooks/color.js +8 -88
- package/build/hooks/color.js.map +1 -1
- package/build/hooks/dimensions.js +14 -4
- package/build/hooks/dimensions.js.map +1 -1
- package/build/hooks/font-family.js.map +1 -1
- package/build/hooks/gap.js.map +1 -1
- package/build/hooks/layout.js +38 -1
- package/build/hooks/layout.js.map +1 -1
- package/build/hooks/style.js +14 -13
- package/build/hooks/style.js.map +1 -1
- package/build/hooks/typography.js +6 -2
- package/build/hooks/typography.js.map +1 -1
- package/build/index.js +14 -0
- package/build/index.js.map +1 -1
- package/build/layouts/flex.js +5 -2
- package/build/layouts/flex.js.map +1 -1
- package/build/store/actions.js +14 -0
- package/build/store/actions.js.map +1 -1
- package/build/store/reducer.js +17 -2
- package/build/store/reducer.js.map +1 -1
- package/build/store/selectors.js +30 -2
- package/build/store/selectors.js.map +1 -1
- package/build/utils/pasting.js.map +1 -1
- package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-module/autocompleters/block.js +4 -1
- package/build-module/autocompleters/block.js.map +1 -1
- package/build-module/components/block-actions/index.js.map +1 -1
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-alignment-matrix-control/index.js +3 -11
- package/build-module/components/block-alignment-matrix-control/index.js.map +1 -1
- package/build-module/components/block-breadcrumb/index.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +3 -78
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-context/index.js.map +1 -1
- package/build-module/components/block-controls/hook.js.map +1 -1
- package/build-module/components/block-draggable/draggable-chip.native.js +51 -0
- package/build-module/components/block-draggable/draggable-chip.native.js.map +1 -0
- package/build-module/components/block-draggable/dropping-insertion-point.native.js +137 -0
- package/build-module/components/block-draggable/dropping-insertion-point.native.js.map +1 -0
- package/build-module/components/block-draggable/index.js.map +1 -1
- package/build-module/components/block-draggable/index.native.js +453 -0
- package/build-module/components/block-draggable/index.native.js.map +1 -0
- package/build-module/components/block-draggable/use-scroll-when-dragging.native.js +120 -0
- package/build-module/components/block-draggable/use-scroll-when-dragging.native.js.map +1 -0
- package/build-module/components/block-list/block-list-context.native.js +179 -0
- package/build-module/components/block-list/block-list-context.native.js.map +1 -0
- package/build-module/components/block-list/block-list-item-cell.native.js +59 -0
- package/build-module/components/block-list/block-list-item-cell.native.js.map +1 -0
- package/build-module/components/block-list/block-list-item.native.js +12 -9
- package/build-module/components/block-list/block-list-item.native.js.map +1 -1
- package/build-module/components/block-list/block-selection-button.native.js.map +1 -1
- package/build-module/components/block-list/block.js.map +1 -1
- package/build-module/components/block-list/block.native.js +26 -5
- package/build-module/components/block-list/block.native.js.map +1 -1
- package/build-module/components/block-list/index.js +35 -33
- package/build-module/components/block-list/index.js.map +1 -1
- package/build-module/components/block-list/index.native.js +72 -23
- package/build-module/components/block-list/index.native.js.map +1 -1
- package/build-module/components/block-list/use-block-props/index.js +9 -5
- package/build-module/components/block-list/use-block-props/index.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-block-custom-class-name.js.map +1 -1
- package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js +1 -1
- package/build-module/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build-module/components/block-list-appender/index.js.map +1 -1
- package/build-module/components/block-list-appender/index.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/block-actions-menu.native.js.map +1 -1
- package/build-module/components/block-mobile-toolbar/index.native.js +9 -3
- package/build-module/components/block-mobile-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-mover/button.js.map +1 -1
- package/build-module/components/block-mover/index.native.js +18 -5
- package/build-module/components/block-mover/index.native.js.map +1 -1
- package/build-module/components/block-parent-selector/index.js.map +1 -1
- package/build-module/components/block-pattern-setup/index.js +1 -1
- package/build-module/components/block-pattern-setup/index.js.map +1 -1
- package/build-module/components/block-popover/inbetween.js +19 -8
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +5 -15
- package/build-module/components/block-popover/index.js.map +1 -1
- package/build-module/components/block-preview/auto.js.map +1 -1
- package/build-module/components/block-preview/index.js +1 -1
- package/build-module/components/block-preview/index.js.map +1 -1
- package/build-module/components/block-selection-clearer/index.js.map +1 -1
- package/build-module/components/block-settings-menu/block-mode-toggle.js +3 -5
- 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 +9 -3
- package/build-module/components/block-settings-menu/block-settings-dropdown.js.map +1 -1
- package/build-module/components/block-styles/index.js +5 -2
- package/build-module/components/block-styles/index.js.map +1 -1
- package/build-module/components/block-styles/menu-items.js +3 -5
- package/build-module/components/block-styles/menu-items.js.map +1 -1
- package/build-module/components/block-switcher/block-transformations-menu.js.map +1 -1
- package/build-module/components/block-toolbar/index.native.js.map +1 -1
- package/build-module/components/block-toolbar/utils.js +3 -5
- package/build-module/components/block-toolbar/utils.js.map +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 -0
- package/build-module/components/block-tools/block-selection-button.js.map +1 -1
- package/build-module/components/block-tools/index.js.map +1 -1
- package/build-module/components/block-tools/selected-block-popover.js +2 -29
- package/build-module/components/block-tools/selected-block-popover.js.map +1 -1
- package/build-module/components/block-types-list/index.native.js.map +1 -1
- package/build-module/components/block-variation-transforms/index.js +13 -2
- package/build-module/components/block-variation-transforms/index.js.map +1 -1
- package/build-module/components/border-radius-control/input-controls.js +11 -4
- package/build-module/components/border-radius-control/input-controls.js.map +1 -1
- package/build-module/components/color-style-selector/index.js.map +1 -1
- package/build-module/components/colors/with-colors.js.map +1 -1
- package/build-module/components/colors-gradients/dropdown.js +124 -43
- package/build-module/components/colors-gradients/dropdown.js.map +1 -1
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js +36 -64
- package/build-module/components/colors-gradients/panel-color-gradient-settings.js.map +1 -1
- package/build-module/components/convert-to-group-buttons/toolbar.js +23 -6
- package/build-module/components/convert-to-group-buttons/toolbar.js.map +1 -1
- package/build-module/components/copy-handler/index.js +18 -2
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/default-block-appender/index.js.map +1 -1
- package/build-module/components/default-block-appender/index.native.js.map +1 -1
- package/build-module/components/default-style-picker/index.js.map +1 -1
- package/build-module/components/font-sizes/with-font-sizes.js.map +1 -1
- package/build-module/components/iframe/index.js +52 -51
- package/build-module/components/iframe/index.js.map +1 -1
- package/build-module/components/image-editor/aspect-ratio-dropdown.js.map +1 -1
- package/build-module/components/image-editor/use-save-image.js +2 -1
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/image-size-control/index.js +4 -1
- package/build-module/components/image-size-control/index.js.map +1 -1
- package/build-module/components/index.js +4 -2
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/inner-blocks/use-inner-block-template-sync.js.map +1 -1
- package/build-module/components/inner-blocks/use-nested-settings-update.js.map +1 -1
- package/build-module/components/inserter/block-types-tab.native.js.map +1 -1
- package/build-module/components/inserter/hooks/use-block-type-impressions.native.js.map +1 -1
- package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
- package/build-module/components/inserter/hooks/use-patterns-state.js.map +1 -1
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/index.native.js +1 -1
- package/build-module/components/inserter/index.native.js.map +1 -1
- package/build-module/components/inserter/library.js +2 -5
- package/build-module/components/inserter/library.js.map +1 -1
- package/build-module/components/inserter/menu.js.map +1 -1
- package/build-module/components/inserter/menu.native.js.map +1 -1
- package/build-module/components/inserter/no-results.native.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/inserter/search-items.js +2 -2
- package/build-module/components/inserter/search-items.js.map +1 -1
- package/build-module/components/inserter/search-results.native.js.map +1 -1
- package/build-module/components/inspector-popover-header/index.js +46 -0
- package/build-module/components/inspector-popover-header/index.js.map +1 -0
- package/build-module/components/line-height-control/index.js.map +1 -1
- package/build-module/components/link-control/constants.js +5 -0
- package/build-module/components/link-control/constants.js.map +1 -1
- package/build-module/components/link-control/index.js +2 -1
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/link-control/search-create-button.js +1 -2
- package/build-module/components/link-control/search-create-button.js.map +1 -1
- package/build-module/components/link-control/search-input.js +3 -1
- package/build-module/components/link-control/search-input.js.map +1 -1
- package/build-module/components/link-control/search-results.js +3 -4
- package/build-module/components/link-control/search-results.js.map +1 -1
- package/build-module/components/link-control/settings-drawer.js +2 -5
- package/build-module/components/link-control/settings-drawer.js.map +1 -1
- package/build-module/components/link-control/use-search-handler.js +5 -5
- package/build-module/components/link-control/use-search-handler.js.map +1 -1
- package/build-module/components/list-view/block-contents.js.map +1 -1
- package/build-module/components/list-view/branch.js.map +1 -1
- package/build-module/components/list-view/drop-indicator.js +0 -1
- package/build-module/components/list-view/drop-indicator.js.map +1 -1
- package/build-module/components/list-view/index.js.map +1 -1
- package/build-module/components/list-view/use-block-selection.js.map +1 -1
- package/build-module/components/list-view/use-list-view-drop-zone.js.map +1 -1
- package/build-module/components/list-view/utils.js +1 -6
- package/build-module/components/list-view/utils.js.map +1 -1
- package/build-module/components/media-placeholder/index.js +2 -3
- package/build-module/components/media-placeholder/index.js.map +1 -1
- package/build-module/components/media-replace-flow/index.js +22 -9
- package/build-module/components/media-replace-flow/index.js.map +1 -1
- package/build-module/components/media-upload/index.native.js +8 -3
- package/build-module/components/media-upload/index.native.js.map +1 -1
- package/build-module/components/navigable-toolbar/index.js +12 -2
- package/build-module/components/navigable-toolbar/index.js.map +1 -1
- package/build-module/components/plain-text/index.native.js +63 -8
- package/build-module/components/plain-text/index.native.js.map +1 -1
- package/build-module/components/preview-options/index.js +4 -0
- package/build-module/components/preview-options/index.js.map +1 -1
- package/build-module/components/provider/use-block-sync.js +4 -1
- package/build-module/components/provider/use-block-sync.js.map +1 -1
- package/build-module/components/publish-date-time-picker/index.js +40 -0
- package/build-module/components/publish-date-time-picker/index.js.map +1 -0
- package/build-module/components/rich-text/embed-handler-picker.native.js +3 -5
- package/build-module/components/rich-text/embed-handler-picker.native.js.map +1 -1
- package/build-module/components/rich-text/format-toolbar-container.js +0 -1
- package/build-module/components/rich-text/format-toolbar-container.js.map +1 -1
- package/build-module/components/rich-text/index.js +2 -2
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/rich-text/index.native.js +5 -1
- package/build-module/components/rich-text/index.native.js.map +1 -1
- package/build-module/components/rich-text/use-format-types.js.map +1 -1
- package/build-module/components/rich-text/use-mark-persistent.js.map +1 -1
- package/build-module/components/skip-to-selected-block/index.js.map +1 -1
- package/build-module/components/ungroup-button/index.native.js +3 -5
- package/build-module/components/ungroup-button/index.native.js.map +1 -1
- package/build-module/components/url-input/index.js +15 -2
- package/build-module/components/url-input/index.js.map +1 -1
- package/build-module/components/use-block-display-information/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.js.map +1 -1
- package/build-module/components/use-block-drop-zone/index.native.js +148 -0
- package/build-module/components/use-block-drop-zone/index.native.js.map +1 -0
- package/build-module/components/use-display-block-controls/index.native.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.js.map +1 -1
- package/build-module/components/use-on-block-drop/index.native.js +83 -0
- package/build-module/components/use-on-block-drop/index.native.js.map +1 -0
- package/build-module/components/use-setting/index.js.map +1 -1
- package/build-module/components/warning/index.js +6 -1
- package/build-module/components/warning/index.js.map +1 -1
- package/build-module/components/writing-flow/use-arrow-nav.js +12 -11
- package/build-module/components/writing-flow/use-arrow-nav.js.map +1 -1
- package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-drag-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-input.js +15 -0
- package/build-module/components/writing-flow/use-input.js.map +1 -1
- package/build-module/components/writing-flow/use-multi-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-select-all.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/components/writing-flow/use-tab-nav.js.map +1 -1
- package/build-module/elements/index.js +2 -0
- package/build-module/elements/index.js.map +1 -0
- package/build-module/hooks/anchor.js.map +1 -1
- package/build-module/hooks/border.js +2 -7
- package/build-module/hooks/border.js.map +1 -1
- package/build-module/hooks/color-panel.js +11 -6
- package/build-module/hooks/color-panel.js.map +1 -1
- package/build-module/hooks/color-panel.native.js.map +1 -1
- package/build-module/hooks/color.js +8 -88
- package/build-module/hooks/color.js.map +1 -1
- package/build-module/hooks/dimensions.js +14 -4
- package/build-module/hooks/dimensions.js.map +1 -1
- package/build-module/hooks/font-family.js.map +1 -1
- package/build-module/hooks/gap.js.map +1 -1
- package/build-module/hooks/layout.js +39 -2
- package/build-module/hooks/layout.js.map +1 -1
- package/build-module/hooks/style.js +15 -14
- package/build-module/hooks/style.js.map +1 -1
- package/build-module/hooks/typography.js +6 -2
- package/build-module/hooks/typography.js.map +1 -1
- package/build-module/index.js +1 -0
- package/build-module/index.js.map +1 -1
- package/build-module/layouts/flex.js +4 -2
- package/build-module/layouts/flex.js.map +1 -1
- package/build-module/store/actions.js +12 -0
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/reducer.js +17 -2
- package/build-module/store/reducer.js.map +1 -1
- package/build-module/store/selectors.js +25 -2
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/utils/pasting.js.map +1 -1
- package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
- package/build-style/style-rtl.css +79 -197
- package/build-style/style.css +79 -197
- package/package.json +30 -30
- package/src/autocompleters/block.js +2 -1
- package/src/components/block-actions/index.js +2 -3
- package/src/components/block-alignment-control/ui.js +4 -6
- package/src/components/block-alignment-matrix-control/index.js +3 -9
- package/src/components/block-breadcrumb/index.js +2 -5
- package/src/components/block-compare/test/block-view.js +2 -1
- package/src/components/block-content-overlay/index.js +10 -100
- package/src/components/block-content-overlay/style.scss +2 -11
- package/src/components/block-context/index.js +4 -4
- package/src/components/block-controls/hook.js +2 -3
- package/src/components/block-draggable/draggable-chip.native.js +49 -0
- package/src/components/block-draggable/dropping-insertion-point.native.js +181 -0
- package/src/components/block-draggable/dropping-insertion-point.native.scss +8 -0
- package/src/components/block-draggable/index.js +6 -13
- package/src/components/block-draggable/index.native.js +454 -0
- package/src/components/block-draggable/style.native.scss +19 -0
- package/src/components/block-draggable/test/__snapshots__/index.native.js.snap +73 -0
- package/src/components/block-draggable/test/helpers.native.js +183 -0
- package/src/components/block-draggable/test/index.native.js +493 -0
- package/src/components/block-draggable/use-scroll-when-dragging.native.js +135 -0
- package/src/components/block-edit/test/edit.js +2 -1
- package/src/components/block-list/block-list-context.native.js +175 -0
- package/src/components/block-list/block-list-item-cell.native.js +49 -0
- package/src/components/block-list/block-list-item.native.js +11 -23
- package/src/components/block-list/block-selection-button.native.js +2 -3
- package/src/components/block-list/block.js +8 -10
- package/src/components/block-list/block.native.js +47 -23
- package/src/components/block-list/index.js +46 -47
- package/src/components/block-list/index.native.js +63 -31
- package/src/components/block-list/test/block-list-context.native.js +245 -0
- package/src/components/block-list/test/fixtures/block-list-context.native.js +79 -0
- package/src/components/block-list/use-block-props/index.js +16 -8
- package/src/components/block-list/use-block-props/use-block-custom-class-name.js +2 -3
- package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +2 -3
- package/src/components/block-list/use-in-between-inserter.js +3 -4
- package/src/components/block-list-appender/index.js +2 -5
- package/src/components/block-list-appender/index.native.js +2 -3
- package/src/components/block-mobile-toolbar/block-actions-menu.native.js +4 -6
- package/src/components/block-mobile-toolbar/index.native.js +9 -1
- package/src/components/block-mover/button.js +2 -3
- package/src/components/block-mover/index.native.js +26 -12
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +10 -0
- package/src/components/block-parent-selector/index.js +2 -3
- package/src/components/block-pattern-setup/index.js +3 -5
- package/src/components/block-popover/inbetween.js +21 -8
- package/src/components/block-popover/index.js +2 -16
- package/src/components/block-popover/style.scss +1 -0
- package/src/components/block-preview/auto.js +4 -8
- package/src/components/block-preview/index.js +1 -4
- package/src/components/block-selection-clearer/index.js +2 -3
- package/src/components/block-settings-menu/block-mode-toggle.js +4 -8
- package/src/components/block-settings-menu/block-settings-dropdown.js +9 -9
- package/src/components/block-styles/index.js +3 -1
- package/src/components/block-styles/menu-items.js +2 -5
- package/src/components/block-switcher/block-transformations-menu.js +2 -4
- package/src/components/block-switcher/style.scss +2 -39
- package/src/components/block-toolbar/index.native.js +2 -5
- package/src/components/block-toolbar/utils.js +3 -11
- package/src/components/block-tools/block-contextual-toolbar.js +2 -5
- package/src/components/block-tools/block-selection-button.js +1 -0
- package/src/components/block-tools/index.js +2 -3
- package/src/components/block-tools/selected-block-popover.js +1 -36
- package/src/components/block-tools/style.scss +1 -12
- package/src/components/block-types-list/index.native.js +2 -4
- package/src/components/block-variation-transforms/index.js +10 -8
- package/src/components/border-radius-control/input-controls.js +16 -8
- package/src/components/border-radius-control/style.scss +3 -2
- package/src/components/color-palette/test/control.js +2 -1
- package/src/components/color-style-selector/index.js +27 -28
- package/src/components/colors/test/with-colors.js +14 -14
- package/src/components/colors/with-colors.js +8 -12
- package/src/components/colors-gradients/dropdown.js +135 -62
- package/src/components/colors-gradients/panel-color-gradient-settings.js +30 -76
- package/src/components/colors-gradients/style.scss +52 -50
- package/src/components/colors-gradients/test/control.js +10 -10
- package/src/components/convert-to-group-buttons/toolbar.js +32 -19
- package/src/components/copy-handler/README.md +7 -2
- package/src/components/copy-handler/index.js +26 -6
- package/src/components/default-block-appender/index.js +4 -6
- package/src/components/default-block-appender/index.native.js +4 -9
- package/src/components/default-style-picker/index.js +20 -21
- package/src/components/duotone-control/style.scss +1 -7
- package/src/components/font-sizes/with-font-sizes.js +2 -3
- package/src/components/iframe/index.js +62 -54
- package/src/components/image-editor/aspect-ratio-dropdown.js +2 -6
- package/src/components/image-editor/use-save-image.js +2 -1
- package/src/components/image-size-control/index.js +4 -7
- package/src/components/index.js +4 -2
- package/src/components/inner-blocks/use-inner-block-template-sync.js +2 -3
- package/src/components/inner-blocks/use-nested-settings-update.js +6 -9
- package/src/components/inserter/block-types-tab.native.js +2 -3
- package/src/components/inserter/hooks/use-block-type-impressions.native.js +2 -3
- package/src/components/inserter/hooks/use-insertion-point.js +3 -2
- package/src/components/inserter/hooks/use-patterns-state.js +4 -5
- package/src/components/inserter/index.js +4 -6
- package/src/components/inserter/index.native.js +7 -12
- package/src/components/inserter/library.js +2 -5
- package/src/components/inserter/menu.js +14 -19
- package/src/components/inserter/menu.native.js +8 -6
- package/src/components/inserter/no-results.native.js +2 -1
- package/src/components/inserter/quick-inserter.js +2 -3
- package/src/components/inserter/search-items.js +6 -6
- package/src/components/inserter/search-results.native.js +4 -6
- package/src/components/inserter/style.scss +2 -1
- package/src/components/inspector-popover-header/README.md +76 -0
- package/src/components/inspector-popover-header/index.js +56 -0
- package/src/components/inspector-popover-header/style.scss +16 -0
- package/src/components/line-height-control/index.js +1 -2
- package/src/components/link-control/constants.js +11 -0
- package/src/components/link-control/index.js +4 -4
- package/src/components/link-control/search-create-button.js +4 -2
- package/src/components/link-control/search-input.js +3 -1
- package/src/components/link-control/search-results.js +4 -5
- package/src/components/link-control/settings-drawer.js +2 -5
- package/src/components/link-control/test/fixtures/index.js +3 -4
- package/src/components/link-control/test/index.js +24 -36
- package/src/components/link-control/use-search-handler.js +13 -7
- package/src/components/list-view/block-contents.js +2 -4
- package/src/components/list-view/branch.js +22 -23
- package/src/components/list-view/drop-indicator.js +0 -1
- package/src/components/list-view/index.js +4 -8
- package/src/components/list-view/style.scss +2 -1
- package/src/components/list-view/use-block-selection.js +5 -5
- package/src/components/list-view/use-list-view-drop-zone.js +2 -1
- package/src/components/list-view/utils.js +1 -6
- package/src/components/media-placeholder/index.js +2 -3
- package/src/components/media-replace-flow/index.js +77 -48
- package/src/components/media-upload/index.native.js +6 -2
- package/src/components/media-upload/test/index.native.js +31 -6
- package/src/components/navigable-toolbar/index.js +13 -4
- package/src/components/panel-color-settings/test/index.js +2 -1
- package/src/components/plain-text/index.native.js +60 -8
- package/src/components/preview-options/index.js +4 -0
- package/src/components/preview-options/style.scss +0 -4
- package/src/components/provider/use-block-sync.js +5 -2
- package/src/components/publish-date-time-picker/README.md +52 -0
- package/src/components/publish-date-time-picker/index.js +39 -0
- package/src/components/responsive-block-control/test/index.js +3 -2
- package/src/components/rich-text/embed-handler-picker.native.js +2 -5
- package/src/components/rich-text/format-toolbar-container.js +0 -1
- package/src/components/rich-text/index.js +10 -5
- package/src/components/rich-text/index.native.js +4 -0
- package/src/components/rich-text/style.scss +2 -8
- package/src/components/rich-text/use-format-types.js +16 -16
- package/src/components/rich-text/use-mark-persistent.js +2 -3
- package/src/components/skip-to-selected-block/index.js +2 -3
- package/src/components/ungroup-button/index.native.js +4 -8
- package/src/components/url-input/index.js +24 -21
- package/src/components/use-block-display-information/index.js +4 -6
- package/src/components/use-block-drop-zone/index.js +2 -3
- package/src/components/use-block-drop-zone/index.native.js +171 -0
- package/src/components/use-block-drop-zone/test/index.js +22 -23
- package/src/components/use-display-block-controls/index.native.js +2 -3
- package/src/components/use-no-recursive-renders/test/use-no-recursive-renders.js +2 -3
- package/src/components/use-on-block-drop/index.js +2 -5
- package/src/components/use-on-block-drop/index.native.js +115 -0
- package/src/components/use-setting/index.js +8 -6
- package/src/components/warning/index.js +47 -42
- package/src/components/warning/test/__snapshots__/index.js.snap +15 -6
- package/src/components/warning/test/index.js +1 -1
- package/src/components/writing-flow/test/index.js +22 -4
- package/src/components/writing-flow/use-arrow-nav.js +22 -10
- package/src/components/writing-flow/use-click-selection.js +2 -5
- package/src/components/writing-flow/use-drag-selection.js +6 -9
- package/src/components/writing-flow/use-input.js +12 -0
- package/src/components/writing-flow/use-multi-selection.js +2 -4
- package/src/components/writing-flow/use-select-all.js +2 -5
- package/src/components/writing-flow/use-selection-observer.js +4 -6
- package/src/components/writing-flow/use-tab-nav.js +2 -5
- package/src/elements/index.js +1 -0
- package/src/hooks/anchor.js +1 -1
- package/src/hooks/border.js +2 -11
- package/src/hooks/border.scss +0 -48
- package/src/hooks/color-panel.js +17 -13
- package/src/hooks/color-panel.native.js +2 -2
- package/src/hooks/color.js +7 -76
- package/src/hooks/color.scss +5 -58
- package/src/hooks/dimensions.js +11 -3
- package/src/hooks/font-family.js +4 -2
- package/src/hooks/gap.js +2 -3
- package/src/hooks/layout.js +54 -4
- package/src/hooks/style.js +25 -39
- package/src/hooks/test/align.js +2 -1
- package/src/hooks/test/generated-class-name.js +2 -5
- package/src/hooks/test/utils.js +2 -5
- package/src/hooks/typography.js +2 -0
- package/src/index.js +1 -0
- package/src/layouts/flex.js +11 -3
- package/src/store/actions.js +784 -728
- package/src/store/reducer.js +202 -178
- package/src/store/selectors.js +82 -54
- package/src/store/test/actions.js +2 -1
- package/src/store/test/reducer.js +8 -1
- package/src/store/test/selectors.js +17 -21
- package/src/style.scss +1 -1
- package/src/utils/pasting.js +3 -3
- package/src/utils/transform-styles/transforms/wrap.js +30 -28
- package/tsconfig.tsbuildinfo +1 -1
- package/build/components/colors/color-panel.js +0 -82
- package/build/components/colors/color-panel.js.map +0 -1
- package/build/components/colors/color-panel.native.js +0 -11
- package/build/components/colors/color-panel.native.js.map +0 -1
- package/build/components/colors-gradients/tools-panel-color-dropdown.js +0 -89
- package/build/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
- package/build-module/components/colors/color-panel.js +0 -70
- package/build-module/components/colors/color-panel.js.map +0 -1
- package/build-module/components/colors/color-panel.native.js +0 -4
- package/build-module/components/colors/color-panel.native.js.map +0 -1
- package/build-module/components/colors-gradients/tools-panel-color-dropdown.js +0 -75
- package/build-module/components/colors-gradients/tools-panel-color-dropdown.js.map +0 -1
- package/src/components/block-alignment-matrix-control/style.scss +0 -10
- package/src/components/colors/color-panel.js +0 -91
- package/src/components/colors/color-panel.native.js +0 -3
- package/src/components/colors-gradients/tools-panel-color-dropdown.js +0 -85
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.BlockDraggableWrapper = void 0;
|
|
9
|
+
|
|
10
|
+
var _element = require("@wordpress/element");
|
|
11
|
+
|
|
12
|
+
var _reactNative = require("react-native");
|
|
13
|
+
|
|
14
|
+
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
15
|
+
|
|
16
|
+
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
17
|
+
|
|
18
|
+
var _components = require("@wordpress/components");
|
|
19
|
+
|
|
20
|
+
var _data = require("@wordpress/data");
|
|
21
|
+
|
|
22
|
+
var _blocks = require("@wordpress/blocks");
|
|
23
|
+
|
|
24
|
+
var _reactNativeBridge = require("@wordpress/react-native-bridge");
|
|
25
|
+
|
|
26
|
+
var _reactNativeAztec = _interopRequireDefault(require("@wordpress/react-native-aztec"));
|
|
27
|
+
|
|
28
|
+
var _useScrollWhenDragging = _interopRequireDefault(require("./use-scroll-when-dragging"));
|
|
29
|
+
|
|
30
|
+
var _draggableChip = _interopRequireDefault(require("./draggable-chip"));
|
|
31
|
+
|
|
32
|
+
var _store = require("../../store");
|
|
33
|
+
|
|
34
|
+
var _blockListContext = require("../block-list/block-list-context");
|
|
35
|
+
|
|
36
|
+
var _droppingInsertionPoint = _interopRequireDefault(require("./dropping-insertion-point"));
|
|
37
|
+
|
|
38
|
+
var _useBlockDropZone = _interopRequireDefault(require("../use-block-drop-zone"));
|
|
39
|
+
|
|
40
|
+
var _style = _interopRequireDefault(require("./style.scss"));
|
|
41
|
+
|
|
42
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
43
|
+
|
|
44
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* External dependencies
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* WordPress dependencies
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Internal dependencies
|
|
56
|
+
*/
|
|
57
|
+
const CHIP_OFFSET_TO_TOUCH_POSITION = 32;
|
|
58
|
+
const BLOCK_OPACITY_ANIMATION_CONFIG = {
|
|
59
|
+
duration: 350
|
|
60
|
+
};
|
|
61
|
+
const BLOCK_OPACITY_ANIMATION_DELAY = 250;
|
|
62
|
+
const DEFAULT_LONG_PRESS_MIN_DURATION = 500;
|
|
63
|
+
const DEFAULT_IOS_LONG_PRESS_MIN_DURATION = DEFAULT_LONG_PRESS_MIN_DURATION - 50;
|
|
64
|
+
/**
|
|
65
|
+
* Block draggable wrapper component
|
|
66
|
+
*
|
|
67
|
+
* This component handles all the interactions for dragging blocks.
|
|
68
|
+
* It relies on the block list and its context for dragging, hence it
|
|
69
|
+
* should be rendered between the `BlockListProvider` component and the
|
|
70
|
+
* block list rendering. It also requires listening to scroll events,
|
|
71
|
+
* therefore for this purpose, it returns the `onScroll` event handler
|
|
72
|
+
* that should be attached to the list that renders the blocks.
|
|
73
|
+
*
|
|
74
|
+
*
|
|
75
|
+
* @param {Object} props Component props.
|
|
76
|
+
* @param {JSX.Element} props.children Children to be rendered.
|
|
77
|
+
* @param {boolean} props.isRTL Check if current locale is RTL.
|
|
78
|
+
*
|
|
79
|
+
* @return {Function} Render function that passes `onScroll` event handler.
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
const BlockDraggableWrapper = _ref => {
|
|
83
|
+
let {
|
|
84
|
+
children,
|
|
85
|
+
isRTL
|
|
86
|
+
} = _ref;
|
|
87
|
+
const [draggedBlockIcon, setDraggedBlockIcon] = (0, _element.useState)();
|
|
88
|
+
const {
|
|
89
|
+
selectBlock,
|
|
90
|
+
startDraggingBlocks,
|
|
91
|
+
stopDraggingBlocks
|
|
92
|
+
} = (0, _data.useDispatch)(_store.store);
|
|
93
|
+
const {
|
|
94
|
+
scrollRef
|
|
95
|
+
} = (0, _blockListContext.useBlockListContext)();
|
|
96
|
+
const animatedScrollRef = (0, _reactNativeReanimated.useAnimatedRef)();
|
|
97
|
+
const {
|
|
98
|
+
left,
|
|
99
|
+
right
|
|
100
|
+
} = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
|
|
101
|
+
const {
|
|
102
|
+
width
|
|
103
|
+
} = (0, _reactNativeSafeAreaContext.useSafeAreaFrame)();
|
|
104
|
+
const safeAreaOffset = left + right;
|
|
105
|
+
const contentWidth = width - safeAreaOffset;
|
|
106
|
+
animatedScrollRef(scrollRef);
|
|
107
|
+
const scroll = {
|
|
108
|
+
offsetY: (0, _reactNativeReanimated.useSharedValue)(0)
|
|
109
|
+
};
|
|
110
|
+
const chip = {
|
|
111
|
+
x: (0, _reactNativeReanimated.useSharedValue)(0),
|
|
112
|
+
y: (0, _reactNativeReanimated.useSharedValue)(0),
|
|
113
|
+
width: (0, _reactNativeReanimated.useSharedValue)(0),
|
|
114
|
+
height: (0, _reactNativeReanimated.useSharedValue)(0)
|
|
115
|
+
};
|
|
116
|
+
const currentYPosition = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
117
|
+
const isDragging = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
118
|
+
const [startScrolling, scrollOnDragOver, stopScrolling, draggingScrollHandler] = (0, _useScrollWhenDragging.default)();
|
|
119
|
+
|
|
120
|
+
const scrollHandler = event => {
|
|
121
|
+
'worklet';
|
|
122
|
+
|
|
123
|
+
const {
|
|
124
|
+
contentOffset
|
|
125
|
+
} = event;
|
|
126
|
+
scroll.offsetY.value = contentOffset.y;
|
|
127
|
+
draggingScrollHandler(event);
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
const {
|
|
131
|
+
onBlockDragOver,
|
|
132
|
+
onBlockDragEnd,
|
|
133
|
+
onBlockDrop,
|
|
134
|
+
targetBlockIndex
|
|
135
|
+
} = (0, _useBlockDropZone.default)(); // Stop dragging blocks if the block draggable is unmounted.
|
|
136
|
+
|
|
137
|
+
(0, _element.useEffect)(() => {
|
|
138
|
+
return () => {
|
|
139
|
+
if (isDragging.value) {
|
|
140
|
+
stopDraggingBlocks();
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}, []);
|
|
144
|
+
|
|
145
|
+
const setDraggedBlockIconByClientId = clientId => {
|
|
146
|
+
var _getBlockType;
|
|
147
|
+
|
|
148
|
+
const blockName = (0, _data.select)(_store.store).getBlockName(clientId);
|
|
149
|
+
const blockIcon = (_getBlockType = (0, _blocks.getBlockType)(blockName)) === null || _getBlockType === void 0 ? void 0 : _getBlockType.icon;
|
|
150
|
+
|
|
151
|
+
if (blockIcon) {
|
|
152
|
+
setDraggedBlockIcon(blockIcon);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
const onStartDragging = _ref2 => {
|
|
157
|
+
let {
|
|
158
|
+
clientId,
|
|
159
|
+
position
|
|
160
|
+
} = _ref2;
|
|
161
|
+
|
|
162
|
+
if (clientId) {
|
|
163
|
+
startDraggingBlocks([clientId]);
|
|
164
|
+
setDraggedBlockIconByClientId(clientId);
|
|
165
|
+
(0, _reactNativeReanimated.runOnUI)(startScrolling)(position.y);
|
|
166
|
+
(0, _reactNativeBridge.generateHapticFeedback)();
|
|
167
|
+
} else {
|
|
168
|
+
// We stop dragging if no block is found.
|
|
169
|
+
(0, _reactNativeReanimated.runOnUI)(stopDragging)();
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
const onStopDragging = _ref3 => {
|
|
174
|
+
let {
|
|
175
|
+
clientId
|
|
176
|
+
} = _ref3;
|
|
177
|
+
|
|
178
|
+
if (clientId) {
|
|
179
|
+
onBlockDrop({
|
|
180
|
+
// Dropping is only allowed at root level
|
|
181
|
+
srcRootClientId: '',
|
|
182
|
+
srcClientIds: [clientId],
|
|
183
|
+
type: 'block'
|
|
184
|
+
});
|
|
185
|
+
selectBlock(clientId);
|
|
186
|
+
setDraggedBlockIcon(undefined);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
onBlockDragEnd();
|
|
190
|
+
stopDraggingBlocks();
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
const onChipLayout = _ref4 => {
|
|
194
|
+
let {
|
|
195
|
+
nativeEvent: {
|
|
196
|
+
layout
|
|
197
|
+
}
|
|
198
|
+
} = _ref4;
|
|
199
|
+
|
|
200
|
+
if (layout.width > 0) {
|
|
201
|
+
chip.width.value = layout.width;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (layout.height > 0) {
|
|
205
|
+
chip.height.value = layout.height;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
const startDragging = _ref5 => {
|
|
210
|
+
'worklet';
|
|
211
|
+
|
|
212
|
+
let {
|
|
213
|
+
x,
|
|
214
|
+
y,
|
|
215
|
+
id
|
|
216
|
+
} = _ref5;
|
|
217
|
+
const dragPosition = {
|
|
218
|
+
x,
|
|
219
|
+
y
|
|
220
|
+
};
|
|
221
|
+
chip.x.value = dragPosition.x;
|
|
222
|
+
chip.y.value = dragPosition.y;
|
|
223
|
+
currentYPosition.value = dragPosition.y;
|
|
224
|
+
isDragging.value = true;
|
|
225
|
+
(0, _reactNativeReanimated.runOnJS)(onStartDragging)({
|
|
226
|
+
clientId: id,
|
|
227
|
+
position: dragPosition
|
|
228
|
+
});
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
const updateDragging = _ref6 => {
|
|
232
|
+
'worklet';
|
|
233
|
+
|
|
234
|
+
let {
|
|
235
|
+
x,
|
|
236
|
+
y
|
|
237
|
+
} = _ref6;
|
|
238
|
+
const dragPosition = {
|
|
239
|
+
x,
|
|
240
|
+
y
|
|
241
|
+
};
|
|
242
|
+
chip.x.value = dragPosition.x;
|
|
243
|
+
chip.y.value = dragPosition.y;
|
|
244
|
+
currentYPosition.value = dragPosition.y;
|
|
245
|
+
(0, _reactNativeReanimated.runOnJS)(onBlockDragOver)({
|
|
246
|
+
x,
|
|
247
|
+
y: y + scroll.offsetY.value
|
|
248
|
+
}); // Update scrolling velocity
|
|
249
|
+
|
|
250
|
+
scrollOnDragOver(dragPosition.y);
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
const stopDragging = _ref7 => {
|
|
254
|
+
'worklet';
|
|
255
|
+
|
|
256
|
+
let {
|
|
257
|
+
id
|
|
258
|
+
} = _ref7;
|
|
259
|
+
isDragging.value = false;
|
|
260
|
+
stopScrolling();
|
|
261
|
+
(0, _reactNativeReanimated.runOnJS)(onStopDragging)({
|
|
262
|
+
clientId: id
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
const chipDynamicStyles = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
|
|
267
|
+
const chipOffset = chip.width.value / 2;
|
|
268
|
+
const translateX = !isRTL ? chip.x.value - chipOffset : -(contentWidth - (chip.x.value + chipOffset));
|
|
269
|
+
return {
|
|
270
|
+
transform: [{
|
|
271
|
+
translateX
|
|
272
|
+
}, {
|
|
273
|
+
translateY: chip.y.value - chip.height.value - CHIP_OFFSET_TO_TOUCH_POSITION
|
|
274
|
+
}]
|
|
275
|
+
};
|
|
276
|
+
});
|
|
277
|
+
const chipStyles = [chipDynamicStyles, _style.default['draggable-chip__wrapper']];
|
|
278
|
+
|
|
279
|
+
const exitingAnimation = _ref8 => {
|
|
280
|
+
'worklet';
|
|
281
|
+
|
|
282
|
+
let {
|
|
283
|
+
currentHeight,
|
|
284
|
+
currentWidth
|
|
285
|
+
} = _ref8;
|
|
286
|
+
const translateX = !isRTL ? 0 : currentWidth * -1;
|
|
287
|
+
const duration = 150;
|
|
288
|
+
const animations = {
|
|
289
|
+
transform: [{
|
|
290
|
+
translateY: (0, _reactNativeReanimated.withTiming)(currentHeight, {
|
|
291
|
+
duration
|
|
292
|
+
})
|
|
293
|
+
}, {
|
|
294
|
+
translateX: (0, _reactNativeReanimated.withTiming)(translateX, {
|
|
295
|
+
duration
|
|
296
|
+
})
|
|
297
|
+
}, {
|
|
298
|
+
scale: (0, _reactNativeReanimated.withTiming)(0, {
|
|
299
|
+
duration
|
|
300
|
+
})
|
|
301
|
+
}]
|
|
302
|
+
};
|
|
303
|
+
const initialValues = {
|
|
304
|
+
transform: [{
|
|
305
|
+
translateY: 0
|
|
306
|
+
}, {
|
|
307
|
+
translateX
|
|
308
|
+
}, {
|
|
309
|
+
scale: 1
|
|
310
|
+
}]
|
|
311
|
+
};
|
|
312
|
+
return {
|
|
313
|
+
initialValues,
|
|
314
|
+
animations
|
|
315
|
+
};
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
return (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_droppingInsertionPoint.default, {
|
|
319
|
+
scroll: scroll,
|
|
320
|
+
currentYPosition: currentYPosition,
|
|
321
|
+
isDragging: isDragging,
|
|
322
|
+
targetBlockIndex: targetBlockIndex
|
|
323
|
+
}), (0, _element.createElement)(_components.Draggable, {
|
|
324
|
+
onDragStart: startDragging,
|
|
325
|
+
onDragOver: updateDragging,
|
|
326
|
+
onDragEnd: stopDragging,
|
|
327
|
+
testID: "block-draggable-wrapper"
|
|
328
|
+
}, children({
|
|
329
|
+
onScroll: scrollHandler
|
|
330
|
+
})), (0, _element.createElement)(_reactNativeReanimated.default.View, {
|
|
331
|
+
onLayout: onChipLayout,
|
|
332
|
+
style: chipStyles,
|
|
333
|
+
pointerEvents: "none"
|
|
334
|
+
}, draggedBlockIcon && (0, _element.createElement)(_reactNativeReanimated.default.View, {
|
|
335
|
+
entering: _reactNativeReanimated.ZoomInEasyDown.duration(200),
|
|
336
|
+
exiting: exitingAnimation
|
|
337
|
+
}, (0, _element.createElement)(_draggableChip.default, {
|
|
338
|
+
icon: draggedBlockIcon
|
|
339
|
+
}))));
|
|
340
|
+
};
|
|
341
|
+
/**
|
|
342
|
+
* Block draggable component
|
|
343
|
+
*
|
|
344
|
+
* This component serves for animating the block when it is being dragged.
|
|
345
|
+
* Hence, it should be wrapped around the rendering of a block.
|
|
346
|
+
*
|
|
347
|
+
* @param {Object} props Component props.
|
|
348
|
+
* @param {JSX.Element} props.children Children to be rendered.
|
|
349
|
+
* @param {string} props.clientId Client id of the block.
|
|
350
|
+
* @param {string} [props.draggingClientId] Client id to use for dragging. If not defined, the value from `clientId` will be used.
|
|
351
|
+
* @param {boolean} [props.enabled] Enables the draggable trigger.
|
|
352
|
+
* @param {string} [props.testID] Id used for querying the long-press gesture handler in tests.
|
|
353
|
+
*
|
|
354
|
+
* @return {Function} Render function which includes the parameter `isDraggable` to determine if the block can be dragged.
|
|
355
|
+
*/
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
exports.BlockDraggableWrapper = BlockDraggableWrapper;
|
|
359
|
+
|
|
360
|
+
const BlockDraggable = _ref9 => {
|
|
361
|
+
let {
|
|
362
|
+
clientId,
|
|
363
|
+
children,
|
|
364
|
+
draggingClientId,
|
|
365
|
+
enabled = true,
|
|
366
|
+
testID
|
|
367
|
+
} = _ref9;
|
|
368
|
+
const wasBeingDragged = (0, _element.useRef)(false);
|
|
369
|
+
const [isEditingText, setIsEditingText] = (0, _element.useState)(false);
|
|
370
|
+
const [isScreenReaderEnabled, setIsScreenReaderEnabled] = (0, _element.useState)(false);
|
|
371
|
+
const draggingAnimation = {
|
|
372
|
+
opacity: (0, _reactNativeReanimated.useSharedValue)(1)
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
const startDraggingBlock = () => {
|
|
376
|
+
draggingAnimation.opacity.value = (0, _reactNativeReanimated.withTiming)(0.4, BLOCK_OPACITY_ANIMATION_CONFIG);
|
|
377
|
+
};
|
|
378
|
+
|
|
379
|
+
const stopDraggingBlock = () => {
|
|
380
|
+
draggingAnimation.opacity.value = (0, _reactNativeReanimated.withDelay)(BLOCK_OPACITY_ANIMATION_DELAY, (0, _reactNativeReanimated.withTiming)(1, BLOCK_OPACITY_ANIMATION_CONFIG));
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
const {
|
|
384
|
+
isDraggable,
|
|
385
|
+
isBeingDragged,
|
|
386
|
+
isBlockSelected
|
|
387
|
+
} = (0, _data.useSelect)(_select => {
|
|
388
|
+
const {
|
|
389
|
+
getBlockRootClientId,
|
|
390
|
+
getTemplateLock,
|
|
391
|
+
isBlockBeingDragged,
|
|
392
|
+
getSelectedBlockClientId
|
|
393
|
+
} = _select(_store.store);
|
|
394
|
+
|
|
395
|
+
const rootClientId = getBlockRootClientId(clientId);
|
|
396
|
+
const templateLock = rootClientId ? getTemplateLock(rootClientId) : null;
|
|
397
|
+
const selectedBlockClientId = getSelectedBlockClientId();
|
|
398
|
+
return {
|
|
399
|
+
isBeingDragged: isBlockBeingDragged(clientId),
|
|
400
|
+
isDraggable: 'all' !== templateLock,
|
|
401
|
+
isBlockSelected: selectedBlockClientId && selectedBlockClientId === clientId
|
|
402
|
+
};
|
|
403
|
+
}, [clientId]);
|
|
404
|
+
(0, _element.useEffect)(() => {
|
|
405
|
+
if (isBeingDragged !== wasBeingDragged.current) {
|
|
406
|
+
if (isBeingDragged) {
|
|
407
|
+
startDraggingBlock();
|
|
408
|
+
} else {
|
|
409
|
+
stopDraggingBlock();
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
wasBeingDragged.current = isBeingDragged;
|
|
414
|
+
}, [isBeingDragged]);
|
|
415
|
+
const onFocusChangeAztec = (0, _element.useCallback)(_ref10 => {
|
|
416
|
+
let {
|
|
417
|
+
isFocused
|
|
418
|
+
} = _ref10;
|
|
419
|
+
setIsEditingText(isFocused);
|
|
420
|
+
}, []);
|
|
421
|
+
(0, _element.useEffect)(() => {
|
|
422
|
+
let mounted = true;
|
|
423
|
+
|
|
424
|
+
const isAnyAztecInputFocused = _reactNativeAztec.default.InputState.isFocused();
|
|
425
|
+
|
|
426
|
+
if (isAnyAztecInputFocused) {
|
|
427
|
+
setIsEditingText(isAnyAztecInputFocused);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
_reactNativeAztec.default.InputState.addFocusChangeListener(onFocusChangeAztec);
|
|
431
|
+
|
|
432
|
+
const screenReaderChangedListener = _reactNative.AccessibilityInfo.addEventListener('screenReaderChanged', setIsScreenReaderEnabled);
|
|
433
|
+
|
|
434
|
+
_reactNative.AccessibilityInfo.isScreenReaderEnabled().then(screenReaderEnabled => {
|
|
435
|
+
if (mounted) {
|
|
436
|
+
setIsScreenReaderEnabled(screenReaderEnabled);
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
return () => {
|
|
441
|
+
mounted = false;
|
|
442
|
+
|
|
443
|
+
_reactNativeAztec.default.InputState.removeFocusChangeListener(onFocusChangeAztec);
|
|
444
|
+
|
|
445
|
+
screenReaderChangedListener.remove();
|
|
446
|
+
};
|
|
447
|
+
}, []);
|
|
448
|
+
const onLongPressDraggable = (0, _element.useCallback)(() => {
|
|
449
|
+
// Ensure that no text input is focused when starting the dragging gesture in order to prevent conflicts with text editing.
|
|
450
|
+
_reactNativeAztec.default.InputState.blurCurrentFocusedElement();
|
|
451
|
+
}, []);
|
|
452
|
+
const animatedWrapperStyles = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
|
|
453
|
+
return {
|
|
454
|
+
opacity: draggingAnimation.opacity.value
|
|
455
|
+
};
|
|
456
|
+
});
|
|
457
|
+
const wrapperStyles = [animatedWrapperStyles, _style.default['draggable-wrapper__container']];
|
|
458
|
+
const canDragBlock = enabled && !isScreenReaderEnabled && (!isBlockSelected || !isEditingText);
|
|
459
|
+
|
|
460
|
+
if (!isDraggable) {
|
|
461
|
+
return children({
|
|
462
|
+
isDraggable: false
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
return (0, _element.createElement)(_components.DraggableTrigger, {
|
|
467
|
+
id: draggingClientId || clientId,
|
|
468
|
+
enabled: enabled && canDragBlock,
|
|
469
|
+
minDuration: _element.Platform.select({
|
|
470
|
+
// On iOS, using a lower min duration than the default
|
|
471
|
+
// value prevents the long-press gesture from being
|
|
472
|
+
// triggered in underneath elements. This is required to
|
|
473
|
+
// prevent enabling text editing when dragging is available.
|
|
474
|
+
ios: canDragBlock ? DEFAULT_IOS_LONG_PRESS_MIN_DURATION : DEFAULT_LONG_PRESS_MIN_DURATION,
|
|
475
|
+
android: DEFAULT_LONG_PRESS_MIN_DURATION
|
|
476
|
+
}),
|
|
477
|
+
onLongPress: onLongPressDraggable,
|
|
478
|
+
testID: testID
|
|
479
|
+
}, (0, _element.createElement)(_reactNativeReanimated.default.View, {
|
|
480
|
+
style: wrapperStyles
|
|
481
|
+
}, children({
|
|
482
|
+
isDraggable: true
|
|
483
|
+
})));
|
|
484
|
+
};
|
|
485
|
+
|
|
486
|
+
var _default = BlockDraggable;
|
|
487
|
+
exports.default = _default;
|
|
488
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-draggable/index.native.js"],"names":["CHIP_OFFSET_TO_TOUCH_POSITION","BLOCK_OPACITY_ANIMATION_CONFIG","duration","BLOCK_OPACITY_ANIMATION_DELAY","DEFAULT_LONG_PRESS_MIN_DURATION","DEFAULT_IOS_LONG_PRESS_MIN_DURATION","BlockDraggableWrapper","children","isRTL","draggedBlockIcon","setDraggedBlockIcon","selectBlock","startDraggingBlocks","stopDraggingBlocks","blockEditorStore","scrollRef","animatedScrollRef","left","right","width","safeAreaOffset","contentWidth","scroll","offsetY","chip","x","y","height","currentYPosition","isDragging","startScrolling","scrollOnDragOver","stopScrolling","draggingScrollHandler","scrollHandler","event","contentOffset","value","onBlockDragOver","onBlockDragEnd","onBlockDrop","targetBlockIndex","setDraggedBlockIconByClientId","clientId","blockName","getBlockName","blockIcon","icon","onStartDragging","position","stopDragging","onStopDragging","srcRootClientId","srcClientIds","type","undefined","onChipLayout","nativeEvent","layout","startDragging","id","dragPosition","updateDragging","chipDynamicStyles","chipOffset","translateX","transform","translateY","chipStyles","styles","exitingAnimation","currentHeight","currentWidth","animations","scale","initialValues","onScroll","ZoomInEasyDown","BlockDraggable","draggingClientId","enabled","testID","wasBeingDragged","isEditingText","setIsEditingText","isScreenReaderEnabled","setIsScreenReaderEnabled","draggingAnimation","opacity","startDraggingBlock","stopDraggingBlock","isDraggable","isBeingDragged","isBlockSelected","_select","getBlockRootClientId","getTemplateLock","isBlockBeingDragged","getSelectedBlockClientId","rootClientId","templateLock","selectedBlockClientId","current","onFocusChangeAztec","isFocused","mounted","isAnyAztecInputFocused","RCTAztecView","InputState","addFocusChangeListener","screenReaderChangedListener","AccessibilityInfo","addEventListener","then","screenReaderEnabled","removeFocusChangeListener","remove","onLongPressDraggable","blurCurrentFocusedElement","animatedWrapperStyles","wrapperStyles","canDragBlock","Platform","select","ios","android"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { AccessibilityInfo } from 'react-native';\nimport {\n\tuseSafeAreaInsets,\n\tuseSafeAreaFrame,\n} from 'react-native-safe-area-context';\nimport Animated, {\n\trunOnJS,\n\trunOnUI,\n\tuseAnimatedRef,\n\tuseAnimatedStyle,\n\tuseSharedValue,\n\twithDelay,\n\twithTiming,\n\tZoomInEasyDown,\n} from 'react-native-reanimated';\n\n/**\n * WordPress dependencies\n */\nimport { Draggable, DraggableTrigger } from '@wordpress/components';\nimport { select, useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n\tPlatform,\n} from '@wordpress/element';\nimport { getBlockType } from '@wordpress/blocks';\nimport { generateHapticFeedback } from '@wordpress/react-native-bridge';\nimport RCTAztecView from '@wordpress/react-native-aztec';\n\n/**\n * Internal dependencies\n */\nimport useScrollWhenDragging from './use-scroll-when-dragging';\nimport DraggableChip from './draggable-chip';\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockListContext } from '../block-list/block-list-context';\nimport DroppingInsertionPoint from './dropping-insertion-point';\nimport useBlockDropZone from '../use-block-drop-zone';\nimport styles from './style.scss';\n\nconst CHIP_OFFSET_TO_TOUCH_POSITION = 32;\nconst BLOCK_OPACITY_ANIMATION_CONFIG = { duration: 350 };\nconst BLOCK_OPACITY_ANIMATION_DELAY = 250;\nconst DEFAULT_LONG_PRESS_MIN_DURATION = 500;\nconst DEFAULT_IOS_LONG_PRESS_MIN_DURATION =\n\tDEFAULT_LONG_PRESS_MIN_DURATION - 50;\n\n/**\n * Block draggable wrapper component\n *\n * This component handles all the interactions for dragging blocks.\n * It relies on the block list and its context for dragging, hence it\n * should be rendered between the `BlockListProvider` component and the\n * block list rendering. It also requires listening to scroll events,\n * therefore for this purpose, it returns the `onScroll` event handler\n * that should be attached to the list that renders the blocks.\n *\n *\n * @param {Object} props Component props.\n * @param {JSX.Element} props.children Children to be rendered.\n * @param {boolean} props.isRTL Check if current locale is RTL.\n *\n * @return {Function} Render function that passes `onScroll` event handler.\n */\nconst BlockDraggableWrapper = ( { children, isRTL } ) => {\n\tconst [ draggedBlockIcon, setDraggedBlockIcon ] = useState();\n\n\tconst { selectBlock, startDraggingBlocks, stopDraggingBlocks } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst { scrollRef } = useBlockListContext();\n\tconst animatedScrollRef = useAnimatedRef();\n\tconst { left, right } = useSafeAreaInsets();\n\tconst { width } = useSafeAreaFrame();\n\tconst safeAreaOffset = left + right;\n\tconst contentWidth = width - safeAreaOffset;\n\tanimatedScrollRef( scrollRef );\n\n\tconst scroll = {\n\t\toffsetY: useSharedValue( 0 ),\n\t};\n\tconst chip = {\n\t\tx: useSharedValue( 0 ),\n\t\ty: useSharedValue( 0 ),\n\t\twidth: useSharedValue( 0 ),\n\t\theight: useSharedValue( 0 ),\n\t};\n\tconst currentYPosition = useSharedValue( 0 );\n\tconst isDragging = useSharedValue( false );\n\n\tconst [\n\t\tstartScrolling,\n\t\tscrollOnDragOver,\n\t\tstopScrolling,\n\t\tdraggingScrollHandler,\n\t] = useScrollWhenDragging();\n\n\tconst scrollHandler = ( event ) => {\n\t\t'worklet';\n\t\tconst { contentOffset } = event;\n\t\tscroll.offsetY.value = contentOffset.y;\n\n\t\tdraggingScrollHandler( event );\n\t};\n\n\tconst { onBlockDragOver, onBlockDragEnd, onBlockDrop, targetBlockIndex } =\n\t\tuseBlockDropZone();\n\n\t// Stop dragging blocks if the block draggable is unmounted.\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tif ( isDragging.value ) {\n\t\t\t\tstopDraggingBlocks();\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\tconst setDraggedBlockIconByClientId = ( clientId ) => {\n\t\tconst blockName = select( blockEditorStore ).getBlockName( clientId );\n\t\tconst blockIcon = getBlockType( blockName )?.icon;\n\t\tif ( blockIcon ) {\n\t\t\tsetDraggedBlockIcon( blockIcon );\n\t\t}\n\t};\n\n\tconst onStartDragging = ( { clientId, position } ) => {\n\t\tif ( clientId ) {\n\t\t\tstartDraggingBlocks( [ clientId ] );\n\t\t\tsetDraggedBlockIconByClientId( clientId );\n\t\t\trunOnUI( startScrolling )( position.y );\n\t\t\tgenerateHapticFeedback();\n\t\t} else {\n\t\t\t// We stop dragging if no block is found.\n\t\t\trunOnUI( stopDragging )();\n\t\t}\n\t};\n\n\tconst onStopDragging = ( { clientId } ) => {\n\t\tif ( clientId ) {\n\t\t\tonBlockDrop( {\n\t\t\t\t// Dropping is only allowed at root level\n\t\t\t\tsrcRootClientId: '',\n\t\t\t\tsrcClientIds: [ clientId ],\n\t\t\t\ttype: 'block',\n\t\t\t} );\n\t\t\tselectBlock( clientId );\n\t\t\tsetDraggedBlockIcon( undefined );\n\t\t}\n\t\tonBlockDragEnd();\n\t\tstopDraggingBlocks();\n\t};\n\n\tconst onChipLayout = ( { nativeEvent: { layout } } ) => {\n\t\tif ( layout.width > 0 ) {\n\t\t\tchip.width.value = layout.width;\n\t\t}\n\t\tif ( layout.height > 0 ) {\n\t\t\tchip.height.value = layout.height;\n\t\t}\n\t};\n\n\tconst startDragging = ( { x, y, id } ) => {\n\t\t'worklet';\n\t\tconst dragPosition = { x, y };\n\t\tchip.x.value = dragPosition.x;\n\t\tchip.y.value = dragPosition.y;\n\t\tcurrentYPosition.value = dragPosition.y;\n\n\t\tisDragging.value = true;\n\n\t\trunOnJS( onStartDragging )( { clientId: id, position: dragPosition } );\n\t};\n\n\tconst updateDragging = ( { x, y } ) => {\n\t\t'worklet';\n\t\tconst dragPosition = { x, y };\n\t\tchip.x.value = dragPosition.x;\n\t\tchip.y.value = dragPosition.y;\n\t\tcurrentYPosition.value = dragPosition.y;\n\n\t\trunOnJS( onBlockDragOver )( { x, y: y + scroll.offsetY.value } );\n\n\t\t// Update scrolling velocity\n\t\tscrollOnDragOver( dragPosition.y );\n\t};\n\n\tconst stopDragging = ( { id } ) => {\n\t\t'worklet';\n\t\tisDragging.value = false;\n\n\t\tstopScrolling();\n\t\trunOnJS( onStopDragging )( { clientId: id } );\n\t};\n\n\tconst chipDynamicStyles = useAnimatedStyle( () => {\n\t\tconst chipOffset = chip.width.value / 2;\n\t\tconst translateX = ! isRTL\n\t\t\t? chip.x.value - chipOffset\n\t\t\t: -( contentWidth - ( chip.x.value + chipOffset ) );\n\n\t\treturn {\n\t\t\ttransform: [\n\t\t\t\t{\n\t\t\t\t\ttranslateX,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttranslateY:\n\t\t\t\t\t\tchip.y.value -\n\t\t\t\t\t\tchip.height.value -\n\t\t\t\t\t\tCHIP_OFFSET_TO_TOUCH_POSITION,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t} );\n\tconst chipStyles = [\n\t\tchipDynamicStyles,\n\t\tstyles[ 'draggable-chip__wrapper' ],\n\t];\n\n\tconst exitingAnimation = ( { currentHeight, currentWidth } ) => {\n\t\t'worklet';\n\t\tconst translateX = ! isRTL ? 0 : currentWidth * -1;\n\t\tconst duration = 150;\n\t\tconst animations = {\n\t\t\ttransform: [\n\t\t\t\t{\n\t\t\t\t\ttranslateY: withTiming( currentHeight, {\n\t\t\t\t\t\tduration,\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttranslateX: withTiming( translateX, {\n\t\t\t\t\t\tduration,\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t\t{ scale: withTiming( 0, { duration } ) },\n\t\t\t],\n\t\t};\n\t\tconst initialValues = {\n\t\t\ttransform: [ { translateY: 0 }, { translateX }, { scale: 1 } ],\n\t\t};\n\t\treturn {\n\t\t\tinitialValues,\n\t\t\tanimations,\n\t\t};\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<DroppingInsertionPoint\n\t\t\t\tscroll={ scroll }\n\t\t\t\tcurrentYPosition={ currentYPosition }\n\t\t\t\tisDragging={ isDragging }\n\t\t\t\ttargetBlockIndex={ targetBlockIndex }\n\t\t\t/>\n\t\t\t<Draggable\n\t\t\t\tonDragStart={ startDragging }\n\t\t\t\tonDragOver={ updateDragging }\n\t\t\t\tonDragEnd={ stopDragging }\n\t\t\t\ttestID=\"block-draggable-wrapper\"\n\t\t\t>\n\t\t\t\t{ children( { onScroll: scrollHandler } ) }\n\t\t\t</Draggable>\n\t\t\t<Animated.View\n\t\t\t\tonLayout={ onChipLayout }\n\t\t\t\tstyle={ chipStyles }\n\t\t\t\tpointerEvents=\"none\"\n\t\t\t>\n\t\t\t\t{ draggedBlockIcon && (\n\t\t\t\t\t<Animated.View\n\t\t\t\t\t\tentering={ ZoomInEasyDown.duration( 200 ) }\n\t\t\t\t\t\texiting={ exitingAnimation }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DraggableChip icon={ draggedBlockIcon } />\n\t\t\t\t\t</Animated.View>\n\t\t\t\t) }\n\t\t\t</Animated.View>\n\t\t</>\n\t);\n};\n\n/**\n * Block draggable component\n *\n * This component serves for animating the block when it is being dragged.\n * Hence, it should be wrapped around the rendering of a block.\n *\n * @param {Object} props Component props.\n * @param {JSX.Element} props.children Children to be rendered.\n * @param {string} props.clientId Client id of the block.\n * @param {string} [props.draggingClientId] Client id to use for dragging. If not defined, the value from `clientId` will be used.\n * @param {boolean} [props.enabled] Enables the draggable trigger.\n * @param {string} [props.testID] Id used for querying the long-press gesture handler in tests.\n *\n * @return {Function} Render function which includes the parameter `isDraggable` to determine if the block can be dragged.\n */\nconst BlockDraggable = ( {\n\tclientId,\n\tchildren,\n\tdraggingClientId,\n\tenabled = true,\n\ttestID,\n} ) => {\n\tconst wasBeingDragged = useRef( false );\n\tconst [ isEditingText, setIsEditingText ] = useState( false );\n\tconst [ isScreenReaderEnabled, setIsScreenReaderEnabled ] =\n\t\tuseState( false );\n\n\tconst draggingAnimation = {\n\t\topacity: useSharedValue( 1 ),\n\t};\n\n\tconst startDraggingBlock = () => {\n\t\tdraggingAnimation.opacity.value = withTiming(\n\t\t\t0.4,\n\t\t\tBLOCK_OPACITY_ANIMATION_CONFIG\n\t\t);\n\t};\n\n\tconst stopDraggingBlock = () => {\n\t\tdraggingAnimation.opacity.value = withDelay(\n\t\t\tBLOCK_OPACITY_ANIMATION_DELAY,\n\t\t\twithTiming( 1, BLOCK_OPACITY_ANIMATION_CONFIG )\n\t\t);\n\t};\n\n\tconst { isDraggable, isBeingDragged, isBlockSelected } = useSelect(\n\t\t( _select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tisBlockBeingDragged,\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t} = _select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\t\t\tconst templateLock = rootClientId\n\t\t\t\t? getTemplateLock( rootClientId )\n\t\t\t\t: null;\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\treturn {\n\t\t\t\tisBeingDragged: isBlockBeingDragged( clientId ),\n\t\t\t\tisDraggable: 'all' !== templateLock,\n\t\t\t\tisBlockSelected:\n\t\t\t\t\tselectedBlockClientId && selectedBlockClientId === clientId,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tuseEffect( () => {\n\t\tif ( isBeingDragged !== wasBeingDragged.current ) {\n\t\t\tif ( isBeingDragged ) {\n\t\t\t\tstartDraggingBlock();\n\t\t\t} else {\n\t\t\t\tstopDraggingBlock();\n\t\t\t}\n\t\t}\n\t\twasBeingDragged.current = isBeingDragged;\n\t}, [ isBeingDragged ] );\n\n\tconst onFocusChangeAztec = useCallback( ( { isFocused } ) => {\n\t\tsetIsEditingText( isFocused );\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tlet mounted = true;\n\n\t\tconst isAnyAztecInputFocused = RCTAztecView.InputState.isFocused();\n\t\tif ( isAnyAztecInputFocused ) {\n\t\t\tsetIsEditingText( isAnyAztecInputFocused );\n\t\t}\n\n\t\tRCTAztecView.InputState.addFocusChangeListener( onFocusChangeAztec );\n\n\t\tconst screenReaderChangedListener = AccessibilityInfo.addEventListener(\n\t\t\t'screenReaderChanged',\n\t\t\tsetIsScreenReaderEnabled\n\t\t);\n\t\tAccessibilityInfo.isScreenReaderEnabled().then(\n\t\t\t( screenReaderEnabled ) => {\n\t\t\t\tif ( mounted ) {\n\t\t\t\t\tsetIsScreenReaderEnabled( screenReaderEnabled );\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\n\t\treturn () => {\n\t\t\tmounted = false;\n\n\t\t\tRCTAztecView.InputState.removeFocusChangeListener(\n\t\t\t\tonFocusChangeAztec\n\t\t\t);\n\n\t\t\tscreenReaderChangedListener.remove();\n\t\t};\n\t}, [] );\n\n\tconst onLongPressDraggable = useCallback( () => {\n\t\t// Ensure that no text input is focused when starting the dragging gesture in order to prevent conflicts with text editing.\n\t\tRCTAztecView.InputState.blurCurrentFocusedElement();\n\t}, [] );\n\n\tconst animatedWrapperStyles = useAnimatedStyle( () => {\n\t\treturn {\n\t\t\topacity: draggingAnimation.opacity.value,\n\t\t};\n\t} );\n\tconst wrapperStyles = [\n\t\tanimatedWrapperStyles,\n\t\tstyles[ 'draggable-wrapper__container' ],\n\t];\n\n\tconst canDragBlock =\n\t\tenabled &&\n\t\t! isScreenReaderEnabled &&\n\t\t( ! isBlockSelected || ! isEditingText );\n\n\tif ( ! isDraggable ) {\n\t\treturn children( { isDraggable: false } );\n\t}\n\n\treturn (\n\t\t<DraggableTrigger\n\t\t\tid={ draggingClientId || clientId }\n\t\t\tenabled={ enabled && canDragBlock }\n\t\t\tminDuration={ Platform.select( {\n\t\t\t\t// On iOS, using a lower min duration than the default\n\t\t\t\t// value prevents the long-press gesture from being\n\t\t\t\t// triggered in underneath elements. This is required to\n\t\t\t\t// prevent enabling text editing when dragging is available.\n\t\t\t\tios: canDragBlock\n\t\t\t\t\t? DEFAULT_IOS_LONG_PRESS_MIN_DURATION\n\t\t\t\t\t: DEFAULT_LONG_PRESS_MIN_DURATION,\n\t\t\t\tandroid: DEFAULT_LONG_PRESS_MIN_DURATION,\n\t\t\t} ) }\n\t\t\tonLongPress={ onLongPressDraggable }\n\t\t\ttestID={ testID }\n\t\t>\n\t\t\t<Animated.View style={ wrapperStyles }>\n\t\t\t\t{ children( { isDraggable: true } ) }\n\t\t\t</Animated.View>\n\t\t</DraggableTrigger>\n\t);\n};\n\nexport { BlockDraggableWrapper };\nexport default BlockDraggable;\n"]}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = useScrollWhenDragging;
|
|
7
|
+
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
|
|
10
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
11
|
+
|
|
12
|
+
var _blockListContext = require("../block-list/block-list-context");
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* External dependencies
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Internal dependencies
|
|
20
|
+
*/
|
|
21
|
+
const SCROLL_INACTIVE_DISTANCE_PX = 50;
|
|
22
|
+
const SCROLL_INTERVAL_MS = 1000;
|
|
23
|
+
const VELOCITY_MULTIPLIER = 5000;
|
|
24
|
+
/**
|
|
25
|
+
* React hook that scrolls the scroll container when a block is being dragged.
|
|
26
|
+
*
|
|
27
|
+
* @return {Function[]} `startScrolling`, `scrollOnDragOver`, `stopScrolling`
|
|
28
|
+
* functions to be called in `onDragStart`, `onDragOver`
|
|
29
|
+
* and `onDragEnd` events respectively. Additionally,
|
|
30
|
+
* `scrollHandler` function is returned which should be
|
|
31
|
+
* called in the `onScroll` event of the block list.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
function useScrollWhenDragging() {
|
|
35
|
+
const {
|
|
36
|
+
scrollRef
|
|
37
|
+
} = (0, _blockListContext.useBlockListContext)();
|
|
38
|
+
const animatedScrollRef = (0, _reactNativeReanimated.useAnimatedRef)();
|
|
39
|
+
animatedScrollRef(scrollRef);
|
|
40
|
+
const {
|
|
41
|
+
height: windowHeight
|
|
42
|
+
} = (0, _reactNative.useWindowDimensions)();
|
|
43
|
+
const velocityY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
44
|
+
const offsetY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
45
|
+
const dragStartY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
46
|
+
const animationTimer = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
47
|
+
const isAnimationTimerActive = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
48
|
+
const isScrollActive = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
49
|
+
const scroll = {
|
|
50
|
+
offsetY: (0, _reactNativeReanimated.useSharedValue)(0),
|
|
51
|
+
maxOffsetY: (0, _reactNativeReanimated.useSharedValue)(0)
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const scrollHandler = event => {
|
|
55
|
+
'worklet';
|
|
56
|
+
|
|
57
|
+
const {
|
|
58
|
+
contentSize,
|
|
59
|
+
contentOffset,
|
|
60
|
+
layoutMeasurement
|
|
61
|
+
} = event;
|
|
62
|
+
scroll.offsetY.value = contentOffset.y;
|
|
63
|
+
scroll.maxOffsetY.value = contentSize.height - layoutMeasurement.height;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const stopScrolling = () => {
|
|
67
|
+
'worklet';
|
|
68
|
+
|
|
69
|
+
(0, _reactNativeReanimated.cancelAnimation)(animationTimer);
|
|
70
|
+
isAnimationTimerActive.value = false;
|
|
71
|
+
isScrollActive.value = false;
|
|
72
|
+
velocityY.value = 0;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const startScrolling = y => {
|
|
76
|
+
'worklet';
|
|
77
|
+
|
|
78
|
+
stopScrolling();
|
|
79
|
+
offsetY.value = scroll.offsetY.value;
|
|
80
|
+
dragStartY.value = y;
|
|
81
|
+
animationTimer.value = 0;
|
|
82
|
+
animationTimer.value = (0, _reactNativeReanimated.withRepeat)((0, _reactNativeReanimated.withTiming)(1, {
|
|
83
|
+
duration: SCROLL_INTERVAL_MS,
|
|
84
|
+
easing: _reactNativeReanimated.Easing.linear
|
|
85
|
+
}), -1, true);
|
|
86
|
+
isAnimationTimerActive.value = true;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const scrollOnDragOver = y => {
|
|
90
|
+
'worklet';
|
|
91
|
+
|
|
92
|
+
const dragDistance = Math.max(Math.abs(y - dragStartY.value) - SCROLL_INACTIVE_DISTANCE_PX, 0);
|
|
93
|
+
const distancePercentage = dragDistance / windowHeight;
|
|
94
|
+
|
|
95
|
+
if (!isScrollActive.value) {
|
|
96
|
+
isScrollActive.value = dragDistance > 0;
|
|
97
|
+
} else if (y > dragStartY.value) {
|
|
98
|
+
// User is dragging downwards.
|
|
99
|
+
velocityY.value = VELOCITY_MULTIPLIER * distancePercentage;
|
|
100
|
+
} else if (y < dragStartY.value) {
|
|
101
|
+
// User is dragging upwards.
|
|
102
|
+
velocityY.value = -VELOCITY_MULTIPLIER * distancePercentage;
|
|
103
|
+
} else {
|
|
104
|
+
velocityY.value = 0;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
(0, _reactNativeReanimated.useAnimatedReaction)(() => animationTimer.value, (value, previous) => {
|
|
109
|
+
if (velocityY.value === 0) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const delta = Math.abs(value - previous);
|
|
114
|
+
let newOffset = offsetY.value + delta * velocityY.value;
|
|
115
|
+
|
|
116
|
+
if (scroll.maxOffsetY.value !== 0) {
|
|
117
|
+
newOffset = Math.max(0, Math.min(scroll.maxOffsetY.value, newOffset));
|
|
118
|
+
} else {
|
|
119
|
+
// Scroll values are empty until receiving the first scroll event.
|
|
120
|
+
// In that case, the max offset is unknown and we can't clamp the
|
|
121
|
+
// new offset value.
|
|
122
|
+
newOffset = Math.max(0, newOffset);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
offsetY.value = newOffset;
|
|
126
|
+
(0, _reactNativeReanimated.scrollTo)(animatedScrollRef, 0, offsetY.value, false);
|
|
127
|
+
});
|
|
128
|
+
return [startScrolling, scrollOnDragOver, stopScrolling, scrollHandler];
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=use-scroll-when-dragging.native.js.map
|