@wordpress/block-editor 9.0.0 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +1 -0
- package/build/components/block-alignment-matrix-control/index.js +1 -6
- package/build/components/block-alignment-matrix-control/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-draggable/draggable-chip.native.js +64 -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.native.js +484 -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.native.js +26 -5
- package/build/components/block-list/block.native.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-in-between-inserter.js +1 -1
- package/build/components/block-list/use-in-between-inserter.js.map +1 -1
- package/build/components/block-mobile-toolbar/index.native.js +9 -3
- package/build/components/block-mobile-toolbar/index.native.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-popover/inbetween.js +10 -2
- package/build/components/block-popover/inbetween.js.map +1 -1
- package/build/components/block-popover/index.js +4 -16
- package/build/components/block-popover/index.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-tools/selected-block-popover.js +1 -29
- package/build/components/block-tools/selected-block-popover.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/colors-gradients/dropdown.js +149 -44
- package/build/components/colors-gradients/dropdown.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/use-save-image.js +3 -1
- package/build/components/image-editor/use-save-image.js.map +1 -1
- package/build/components/index.js +5 -14
- package/build/components/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/link-control/constants.js +11 -1
- package/build/components/link-control/constants.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/use-search-handler.js +4 -4
- package/build/components/link-control/use-search-handler.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/navigable-toolbar/index.js +12 -2
- package/build/components/navigable-toolbar/index.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 +1 -1
- package/build/components/rich-text/index.js.map +1 -1
- package/build/components/url-input/index.js +4 -1
- package/build/components/url-input/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-on-block-drop/index.native.js +95 -0
- package/build/components/use-on-block-drop/index.native.js.map +1 -0
- package/build/components/warning/index.js +6 -1
- package/build/components/warning/index.js.map +1 -1
- 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/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-module/components/block-alignment-matrix-control/index.js +1 -6
- package/build-module/components/block-alignment-matrix-control/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-draggable/draggable-chip.native.js +50 -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.native.js +449 -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.native.js +25 -5
- package/build-module/components/block-list/block.native.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-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-mobile-toolbar/index.native.js +8 -3
- package/build-module/components/block-mobile-toolbar/index.native.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-popover/inbetween.js +10 -2
- package/build-module/components/block-popover/inbetween.js.map +1 -1
- package/build-module/components/block-popover/index.js +4 -15
- package/build-module/components/block-popover/index.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-tools/selected-block-popover.js +2 -29
- package/build-module/components/block-tools/selected-block-popover.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/colors-gradients/dropdown.js +151 -46
- package/build-module/components/colors-gradients/dropdown.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/use-save-image.js +2 -1
- package/build-module/components/image-editor/use-save-image.js.map +1 -1
- package/build-module/components/index.js +1 -2
- package/build-module/components/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/link-control/constants.js +5 -0
- package/build-module/components/link-control/constants.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/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/drop-indicator.js +0 -1
- package/build-module/components/list-view/drop-indicator.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/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 +1 -1
- package/build-module/components/rich-text/index.js.map +1 -1
- package/build-module/components/url-input/index.js +4 -1
- package/build-module/components/url-input/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-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/warning/index.js +6 -1
- package/build-module/components/warning/index.js.map +1 -1
- 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/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-style/style-rtl.css +60 -174
- package/build-style/style.css +60 -174
- package/package.json +28 -28
- package/src/components/block-alignment-matrix-control/index.js +1 -5
- package/src/components/block-content-overlay/index.js +8 -95
- package/src/components/block-content-overlay/style.scss +2 -11
- 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.native.js +458 -0
- package/src/components/block-draggable/style.native.scss +19 -0
- package/src/components/block-draggable/use-scroll-when-dragging.native.js +135 -0
- 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 +7 -11
- package/src/components/block-list/block.native.js +36 -8
- package/src/components/block-list/index.native.js +54 -13
- package/src/components/block-list/test/block-list-context.native.js +253 -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 +10 -5
- package/src/components/block-list/use-in-between-inserter.js +1 -1
- package/src/components/block-mobile-toolbar/index.native.js +8 -1
- package/src/components/block-mover/index.native.js +22 -6
- package/src/components/block-mover/test/__snapshots__/index.native.js.snap +6 -0
- package/src/components/block-popover/inbetween.js +9 -1
- package/src/components/block-popover/index.js +1 -16
- package/src/components/block-popover/style.scss +1 -0
- package/src/components/block-preview/index.js +1 -4
- package/src/components/block-switcher/style.scss +2 -39
- package/src/components/block-tools/selected-block-popover.js +1 -36
- package/src/components/block-tools/style.scss +1 -12
- package/src/components/border-radius-control/input-controls.js +16 -8
- package/src/components/border-radius-control/style.scss +3 -2
- package/src/components/colors-gradients/dropdown.js +156 -62
- package/src/components/colors-gradients/style.scss +51 -23
- package/src/components/duotone-control/style.scss +1 -7
- package/src/components/iframe/index.js +62 -54
- package/src/components/image-editor/use-save-image.js +2 -1
- package/src/components/index.js +1 -2
- package/src/components/inserter/index.native.js +1 -1
- package/src/components/inserter/style.scss +2 -1
- package/src/components/link-control/constants.js +11 -0
- package/src/components/link-control/search-results.js +4 -5
- package/src/components/link-control/use-search-handler.js +11 -5
- package/src/components/list-view/drop-indicator.js +0 -1
- package/src/components/list-view/style.scss +2 -1
- package/src/components/navigable-toolbar/index.js +12 -2
- package/src/components/preview-options/style.scss +0 -4
- package/src/components/rich-text/format-toolbar-container.js +0 -1
- package/src/components/rich-text/index.js +1 -1
- package/src/components/rich-text/style.scss +2 -8
- package/src/components/url-input/index.js +3 -1
- package/src/components/use-block-drop-zone/index.native.js +173 -0
- package/src/components/use-on-block-drop/index.native.js +119 -0
- 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/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 +13 -9
- package/src/hooks/color.scss +0 -62
- package/src/hooks/style.js +25 -39
- package/src/hooks/typography.js +2 -0
- package/src/style.scss +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-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-gradients/tools-panel-color-dropdown.js +0 -85
|
@@ -1,95 +1,20 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import { createElement } from "@wordpress/element";
|
|
3
|
-
|
|
4
1
|
/**
|
|
5
2
|
* WordPress dependencies
|
|
6
3
|
*/
|
|
7
4
|
import { useSelect } from '@wordpress/data';
|
|
8
|
-
import { useState, useEffect } from '@wordpress/element';
|
|
9
5
|
/**
|
|
10
6
|
* Internal dependencies
|
|
11
7
|
*/
|
|
12
8
|
|
|
13
9
|
import { store as blockEditorStore } from '../../store';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import classnames from 'classnames';
|
|
19
|
-
export default function BlockContentOverlay(_ref) {
|
|
20
|
-
let {
|
|
21
|
-
clientId,
|
|
22
|
-
tagName: TagName = 'div',
|
|
23
|
-
wrapperProps,
|
|
24
|
-
className
|
|
25
|
-
} = _ref;
|
|
26
|
-
const baseClassName = 'block-editor-block-content-overlay';
|
|
27
|
-
const [isOverlayActive, setIsOverlayActive] = useState(true);
|
|
28
|
-
const [isHovered, setIsHovered] = useState(false);
|
|
29
|
-
const {
|
|
30
|
-
canEdit,
|
|
31
|
-
isParentSelected,
|
|
32
|
-
hasChildSelected,
|
|
33
|
-
isDraggingBlocks,
|
|
34
|
-
isParentHighlighted
|
|
35
|
-
} = useSelect(select => {
|
|
10
|
+
export default function useBlockOverlayActive(clientId) {
|
|
11
|
+
return useSelect(select => {
|
|
36
12
|
const {
|
|
37
13
|
isBlockSelected,
|
|
38
14
|
hasSelectedInnerBlock,
|
|
39
|
-
isDraggingBlocks: _isDraggingBlocks,
|
|
40
|
-
isBlockHighlighted,
|
|
41
15
|
canEditBlock
|
|
42
16
|
} = select(blockEditorStore);
|
|
43
|
-
return
|
|
44
|
-
canEdit: canEditBlock(clientId),
|
|
45
|
-
isParentSelected: isBlockSelected(clientId),
|
|
46
|
-
hasChildSelected: hasSelectedInnerBlock(clientId, true),
|
|
47
|
-
isDraggingBlocks: _isDraggingBlocks(),
|
|
48
|
-
isParentHighlighted: isBlockHighlighted(clientId)
|
|
49
|
-
};
|
|
17
|
+
return !canEditBlock(clientId) || !isBlockSelected(clientId) && !hasSelectedInnerBlock(clientId, true);
|
|
50
18
|
}, [clientId]);
|
|
51
|
-
const classes = classnames(baseClassName, wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.className, className, {
|
|
52
|
-
'overlay-active': isOverlayActive,
|
|
53
|
-
'parent-highlighted': isParentHighlighted,
|
|
54
|
-
'is-dragging-blocks': isDraggingBlocks
|
|
55
|
-
});
|
|
56
|
-
useEffect(() => {
|
|
57
|
-
// The overlay is always active when editing is locked.
|
|
58
|
-
if (!canEdit) {
|
|
59
|
-
setIsOverlayActive(true);
|
|
60
|
-
return;
|
|
61
|
-
} // Reenable when blocks are not in use.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (!isParentSelected && !hasChildSelected && !isOverlayActive) {
|
|
65
|
-
setIsOverlayActive(true);
|
|
66
|
-
} // Disable if parent selected by another means (such as list view).
|
|
67
|
-
// We check hover to ensure the overlay click interaction is not taking place.
|
|
68
|
-
// Trying to click the overlay will select the parent block via its 'focusin'
|
|
69
|
-
// listener on the wrapper, so if the block is selected while hovered we will
|
|
70
|
-
// let the mouseup disable the overlay instead.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (isParentSelected && !isHovered && isOverlayActive) {
|
|
74
|
-
setIsOverlayActive(false);
|
|
75
|
-
} // Ensure overlay is disabled if a child block is selected.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
if (hasChildSelected && isOverlayActive) {
|
|
79
|
-
setIsOverlayActive(false);
|
|
80
|
-
}
|
|
81
|
-
}, [isParentSelected, hasChildSelected, isOverlayActive, isHovered, canEdit]); // Disabled because the overlay div doesn't actually have a role or functionality
|
|
82
|
-
// as far as the a11y is concerned. We're just catching the first click so that
|
|
83
|
-
// the block can be selected without interacting with its contents.
|
|
84
|
-
|
|
85
|
-
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
86
|
-
|
|
87
|
-
return createElement(TagName, _extends({}, wrapperProps, {
|
|
88
|
-
className: classes,
|
|
89
|
-
onMouseEnter: () => setIsHovered(true),
|
|
90
|
-
onMouseLeave: () => setIsHovered(false),
|
|
91
|
-
onMouseUp: isOverlayActive && canEdit ? () => setIsOverlayActive(false) : undefined
|
|
92
|
-
}), wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.children);
|
|
93
19
|
}
|
|
94
|
-
/* eslint-enable jsx-a11y/no-static-element-interactions */
|
|
95
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-content-overlay/index.js"],"names":["useSelect","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-content-overlay/index.js"],"names":["useSelect","store","blockEditorStore","useBlockOverlayActive","clientId","select","isBlockSelected","hasSelectedInnerBlock","canEditBlock"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAT,QAA0B,iBAA1B;AAEA;AACA;AACA;;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AAEA,eAAe,SAASC,qBAAT,CAAgCC,QAAhC,EAA2C;AACzD,SAAOJ,SAAS,CACbK,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,eADK;AAELC,MAAAA,qBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEH,gBAAF,CAJV;AAMA,WACC,CAAEM,YAAY,CAAEJ,QAAF,CAAd,IACE,CAAEE,eAAe,CAAEF,QAAF,CAAjB,IACD,CAAEG,qBAAqB,CAAEH,QAAF,EAAY,IAAZ,CAHzB;AAKA,GAbc,EAcf,CAAEA,QAAF,CAde,CAAhB;AAgBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport default function useBlockOverlayActive( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tcanEditBlock,\n\t\t\t} = select( blockEditorStore );\n\n\t\t\treturn (\n\t\t\t\t! canEditBlock( clientId ) ||\n\t\t\t\t( ! isBlockSelected( clientId ) &&\n\t\t\t\t\t! hasSelectedInnerBlock( clientId, true ) )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* External dependencies
|
|
5
|
+
*/
|
|
6
|
+
import { View } from 'react-native';
|
|
7
|
+
/**
|
|
8
|
+
* WordPress dependencies
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { dragHandle } from '@wordpress/icons';
|
|
12
|
+
import { usePreferredColorSchemeStyle } from '@wordpress/compose';
|
|
13
|
+
/**
|
|
14
|
+
* Internal dependencies
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import BlockIcon from '../block-icon';
|
|
18
|
+
import styles from './style.scss';
|
|
19
|
+
const shadowStyle = {
|
|
20
|
+
shadowColor: '#000',
|
|
21
|
+
shadowOffset: {
|
|
22
|
+
width: 0,
|
|
23
|
+
height: 2
|
|
24
|
+
},
|
|
25
|
+
shadowOpacity: 0.25,
|
|
26
|
+
shadowRadius: 3.84,
|
|
27
|
+
elevation: 5
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Block draggable chip component
|
|
31
|
+
*
|
|
32
|
+
* @param {Object} props Component props.
|
|
33
|
+
* @param {Object} [props.icon] Block icon.
|
|
34
|
+
* @return {JSX.Element} Chip component.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
export default function BlockDraggableChip(_ref) {
|
|
38
|
+
let {
|
|
39
|
+
icon
|
|
40
|
+
} = _ref;
|
|
41
|
+
const containerStyle = usePreferredColorSchemeStyle(styles['draggable-chip__container'], styles['draggable-chip__container--dark']);
|
|
42
|
+
return createElement(View, {
|
|
43
|
+
style: [containerStyle, shadowStyle]
|
|
44
|
+
}, createElement(BlockIcon, {
|
|
45
|
+
icon: dragHandle
|
|
46
|
+
}), icon && createElement(BlockIcon, {
|
|
47
|
+
icon: icon
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=draggable-chip.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-draggable/draggable-chip.native.js"],"names":["View","dragHandle","usePreferredColorSchemeStyle","BlockIcon","styles","shadowStyle","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","BlockDraggableChip","icon","containerStyle"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,IAAT,QAAqB,cAArB;AAEA;AACA;AACA;;AACA,SAASC,UAAT,QAA2B,kBAA3B;AACA,SAASC,4BAAT,QAA6C,oBAA7C;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,eAAtB;AACA,OAAOC,MAAP,MAAmB,cAAnB;AAEA,MAAMC,WAAW,GAAG;AACnBC,EAAAA,WAAW,EAAE,MADM;AAEnBC,EAAAA,YAAY,EAAE;AACbC,IAAAA,KAAK,EAAE,CADM;AAEbC,IAAAA,MAAM,EAAE;AAFK,GAFK;AAMnBC,EAAAA,aAAa,EAAE,IANI;AAOnBC,EAAAA,YAAY,EAAE,IAPK;AASnBC,EAAAA,SAAS,EAAE;AATQ,CAApB;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,kBAAT,OAAwC;AAAA,MAAX;AAAEC,IAAAA;AAAF,GAAW;AACtD,QAAMC,cAAc,GAAGb,4BAA4B,CAClDE,MAAM,CAAE,2BAAF,CAD4C,EAElDA,MAAM,CAAE,iCAAF,CAF4C,CAAnD;AAKA,SACC,cAAC,IAAD;AAAM,IAAA,KAAK,EAAG,CAAEW,cAAF,EAAkBV,WAAlB;AAAd,KACC,cAAC,SAAD;AAAW,IAAA,IAAI,EAAGJ;AAAlB,IADD,EAEGa,IAAI,IAAI,cAAC,SAAD;AAAW,IAAA,IAAI,EAAGA;AAAlB,IAFX,CADD;AAMA","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { dragHandle } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport styles from './style.scss';\n\nconst shadowStyle = {\n\tshadowColor: '#000',\n\tshadowOffset: {\n\t\twidth: 0,\n\t\theight: 2,\n\t},\n\tshadowOpacity: 0.25,\n\tshadowRadius: 3.84,\n\n\televation: 5,\n};\n\n/**\n * Block draggable chip component\n *\n * @param {Object} props Component props.\n * @param {Object} [props.icon] Block icon.\n * @return {JSX.Element} Chip component.\n */\nexport default function BlockDraggableChip( { icon } ) {\n\tconst containerStyle = usePreferredColorSchemeStyle(\n\t\tstyles[ 'draggable-chip__container' ],\n\t\tstyles[ 'draggable-chip__container--dark' ]\n\t);\n\n\treturn (\n\t\t<View style={ [ containerStyle, shadowStyle ] }>\n\t\t\t<BlockIcon icon={ dragHandle } />\n\t\t\t{ icon && <BlockIcon icon={ icon } /> }\n\t\t</View>\n\t);\n}\n"]}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { createElement } from "@wordpress/element";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* External dependencies
|
|
5
|
+
*/
|
|
6
|
+
import Animated, { useSharedValue, useAnimatedStyle, withTiming, useAnimatedReaction, runOnJS } from 'react-native-reanimated';
|
|
7
|
+
import { useSafeAreaInsets, useSafeAreaFrame } from 'react-native-safe-area-context';
|
|
8
|
+
/**
|
|
9
|
+
* WordPress dependencies
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { useSelect } from '@wordpress/data';
|
|
13
|
+
import { generateHapticFeedback } from '@wordpress/react-native-bridge';
|
|
14
|
+
/**
|
|
15
|
+
* Internal dependencies
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { store as blockEditorStore } from '../../store';
|
|
19
|
+
import { useBlockListContext } from '../block-list/block-list-context';
|
|
20
|
+
import styles from './dropping-insertion-point.scss';
|
|
21
|
+
/**
|
|
22
|
+
* Dropping zone indicator component.
|
|
23
|
+
*
|
|
24
|
+
* This component shows where a block can be dropped when it's being dragged.
|
|
25
|
+
*
|
|
26
|
+
* @param {Object} props Component props.
|
|
27
|
+
* @param {Object} props.scroll Scroll offset object.
|
|
28
|
+
* @param {Object} props.currentYPosition Current Y coordinate position when dragging.
|
|
29
|
+
* @param {import('react-native-reanimated').SharedValue} props.isDragging Whether or not dragging has started.
|
|
30
|
+
* @param {import('react-native-reanimated').SharedValue} props.targetBlockIndex Current block target index.
|
|
31
|
+
*
|
|
32
|
+
* @return {JSX.Element} The component to be rendered.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
export default function DroppingInsertionPoint(_ref) {
|
|
36
|
+
let {
|
|
37
|
+
scroll,
|
|
38
|
+
currentYPosition,
|
|
39
|
+
isDragging,
|
|
40
|
+
targetBlockIndex
|
|
41
|
+
} = _ref;
|
|
42
|
+
const {
|
|
43
|
+
getBlockOrder,
|
|
44
|
+
isBlockBeingDragged,
|
|
45
|
+
isDraggingBlocks,
|
|
46
|
+
getPreviousBlockClientId,
|
|
47
|
+
getNextBlockClientId
|
|
48
|
+
} = useSelect(blockEditorStore);
|
|
49
|
+
const {
|
|
50
|
+
blocksLayouts,
|
|
51
|
+
findBlockLayoutByClientId
|
|
52
|
+
} = useBlockListContext();
|
|
53
|
+
const {
|
|
54
|
+
top,
|
|
55
|
+
bottom
|
|
56
|
+
} = useSafeAreaInsets();
|
|
57
|
+
const {
|
|
58
|
+
height
|
|
59
|
+
} = useSafeAreaFrame();
|
|
60
|
+
const safeAreaOffset = top + bottom;
|
|
61
|
+
const maxHeight = height - (safeAreaOffset + styles['dropping-insertion-point'].height);
|
|
62
|
+
const blockYPosition = useSharedValue(0);
|
|
63
|
+
const opacity = useSharedValue(0);
|
|
64
|
+
useAnimatedReaction(() => isDragging.value, value => {
|
|
65
|
+
if (!value) {
|
|
66
|
+
opacity.value = 0;
|
|
67
|
+
blockYPosition.value = 0;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
function getSelectedBlockIndicatorPosition(positions) {
|
|
72
|
+
const currentYPositionWithScroll = currentYPosition.value + scroll.offsetY.value;
|
|
73
|
+
const midpoint = (positions.top + positions.bottom) / 2;
|
|
74
|
+
return midpoint < currentYPositionWithScroll ? positions.bottom : positions.top;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function setIndicatorPosition(index) {
|
|
78
|
+
const insertionPointIndex = index;
|
|
79
|
+
const order = getBlockOrder();
|
|
80
|
+
const isDraggingAnyBlocks = isDraggingBlocks();
|
|
81
|
+
|
|
82
|
+
if (!isDraggingAnyBlocks || insertionPointIndex === null || !order.length) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
let previousClientId = order[insertionPointIndex - 1];
|
|
87
|
+
let nextClientId = order[insertionPointIndex];
|
|
88
|
+
|
|
89
|
+
while (isBlockBeingDragged(previousClientId)) {
|
|
90
|
+
previousClientId = getPreviousBlockClientId(previousClientId);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
while (isBlockBeingDragged(nextClientId)) {
|
|
94
|
+
nextClientId = getNextBlockClientId(nextClientId);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const previousElement = previousClientId ? findBlockLayoutByClientId(blocksLayouts.current, previousClientId) : null;
|
|
98
|
+
const nextElement = nextClientId ? findBlockLayoutByClientId(blocksLayouts.current, nextClientId) : null;
|
|
99
|
+
const previousElementPosition = previousElement ? previousElement.y + previousElement.height : 0;
|
|
100
|
+
const nextElementPosition = nextElement ? nextElement.y : 0;
|
|
101
|
+
const elementsPositions = {
|
|
102
|
+
top: Math.floor(previousElement ? previousElementPosition : nextElementPosition),
|
|
103
|
+
bottom: Math.floor(nextElement ? nextElementPosition : previousElementPosition)
|
|
104
|
+
};
|
|
105
|
+
const nextPosition = elementsPositions.top !== elementsPositions.bottom ? getSelectedBlockIndicatorPosition(elementsPositions) : elementsPositions.top;
|
|
106
|
+
|
|
107
|
+
if (nextPosition && blockYPosition.value !== nextPosition) {
|
|
108
|
+
opacity.value = 0;
|
|
109
|
+
blockYPosition.value = nextPosition;
|
|
110
|
+
opacity.value = withTiming(1);
|
|
111
|
+
generateHapticFeedback();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
useAnimatedReaction(() => targetBlockIndex.value, (value, previous) => {
|
|
116
|
+
if (value !== previous) {
|
|
117
|
+
runOnJS(setIndicatorPosition)(value);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
const animatedStyles = useAnimatedStyle(() => {
|
|
121
|
+
const translationY = blockYPosition.value - scroll.offsetY.value; // Prevents overflowing behind the header/footer
|
|
122
|
+
|
|
123
|
+
const shouldHideIndicator = translationY < 0 || translationY > maxHeight;
|
|
124
|
+
return {
|
|
125
|
+
opacity: shouldHideIndicator ? 0 : opacity.value,
|
|
126
|
+
transform: [{
|
|
127
|
+
translateY: translationY
|
|
128
|
+
}]
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
const insertionPointStyles = [styles['dropping-insertion-point'], animatedStyles];
|
|
132
|
+
return createElement(Animated.View, {
|
|
133
|
+
pointerEvents: "none",
|
|
134
|
+
style: insertionPointStyles
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=dropping-insertion-point.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-draggable/dropping-insertion-point.native.js"],"names":["Animated","useSharedValue","useAnimatedStyle","withTiming","useAnimatedReaction","runOnJS","useSafeAreaInsets","useSafeAreaFrame","useSelect","generateHapticFeedback","store","blockEditorStore","useBlockListContext","styles","DroppingInsertionPoint","scroll","currentYPosition","isDragging","targetBlockIndex","getBlockOrder","isBlockBeingDragged","isDraggingBlocks","getPreviousBlockClientId","getNextBlockClientId","blocksLayouts","findBlockLayoutByClientId","top","bottom","height","safeAreaOffset","maxHeight","blockYPosition","opacity","value","getSelectedBlockIndicatorPosition","positions","currentYPositionWithScroll","offsetY","midpoint","setIndicatorPosition","index","insertionPointIndex","order","isDraggingAnyBlocks","length","previousClientId","nextClientId","previousElement","current","nextElement","previousElementPosition","y","nextElementPosition","elementsPositions","Math","floor","nextPosition","previous","animatedStyles","translationY","shouldHideIndicator","transform","translateY","insertionPointStyles"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport Animated, {\n\tuseSharedValue,\n\tuseAnimatedStyle,\n\twithTiming,\n\tuseAnimatedReaction,\n\trunOnJS,\n} from 'react-native-reanimated';\nimport {\n\tuseSafeAreaInsets,\n\tuseSafeAreaFrame,\n} from 'react-native-safe-area-context';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { generateHapticFeedback } from '@wordpress/react-native-bridge';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockListContext } from '../block-list/block-list-context';\nimport styles from './dropping-insertion-point.scss';\n\n/**\n * Dropping zone indicator component.\n *\n * This component shows where a block can be dropped when it's being dragged.\n *\n * @param {Object} props Component props.\n * @param {Object} props.scroll Scroll offset object.\n * @param {Object} props.currentYPosition Current Y coordinate position when dragging.\n * @param {import('react-native-reanimated').SharedValue} props.isDragging Whether or not dragging has started.\n * @param {import('react-native-reanimated').SharedValue} props.targetBlockIndex Current block target index.\n *\n * @return {JSX.Element} The component to be rendered.\n */\nexport default function DroppingInsertionPoint( {\n\tscroll,\n\tcurrentYPosition,\n\tisDragging,\n\ttargetBlockIndex,\n} ) {\n\tconst {\n\t\tgetBlockOrder,\n\t\tisBlockBeingDragged,\n\t\tisDraggingBlocks,\n\t\tgetPreviousBlockClientId,\n\t\tgetNextBlockClientId,\n\t} = useSelect( blockEditorStore );\n\n\tconst { blocksLayouts, findBlockLayoutByClientId } = useBlockListContext();\n\tconst { top, bottom } = useSafeAreaInsets();\n\tconst { height } = useSafeAreaFrame();\n\tconst safeAreaOffset = top + bottom;\n\tconst maxHeight =\n\t\theight -\n\t\t( safeAreaOffset + styles[ 'dropping-insertion-point' ].height );\n\n\tconst blockYPosition = useSharedValue( 0 );\n\tconst opacity = useSharedValue( 0 );\n\n\tuseAnimatedReaction(\n\t\t() => isDragging.value,\n\t\t( value ) => {\n\t\t\tif ( ! value ) {\n\t\t\t\topacity.value = 0;\n\t\t\t\tblockYPosition.value = 0;\n\t\t\t}\n\t\t}\n\t);\n\n\tfunction getSelectedBlockIndicatorPosition( positions ) {\n\t\tconst currentYPositionWithScroll =\n\t\t\tcurrentYPosition.value + scroll.offsetY.value;\n\t\tconst midpoint = ( positions.top + positions.bottom ) / 2;\n\n\t\treturn midpoint < currentYPositionWithScroll\n\t\t\t? positions.bottom\n\t\t\t: positions.top;\n\t}\n\n\tfunction setIndicatorPosition( index ) {\n\t\tconst insertionPointIndex = index;\n\t\tconst order = getBlockOrder();\n\t\tconst isDraggingAnyBlocks = isDraggingBlocks();\n\n\t\tif (\n\t\t\t! isDraggingAnyBlocks ||\n\t\t\tinsertionPointIndex === null ||\n\t\t\t! order.length\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet previousClientId = order[ insertionPointIndex - 1 ];\n\t\tlet nextClientId = order[ insertionPointIndex ];\n\n\t\twhile ( isBlockBeingDragged( previousClientId ) ) {\n\t\t\tpreviousClientId = getPreviousBlockClientId( previousClientId );\n\t\t}\n\n\t\twhile ( isBlockBeingDragged( nextClientId ) ) {\n\t\t\tnextClientId = getNextBlockClientId( nextClientId );\n\t\t}\n\n\t\tconst previousElement = previousClientId\n\t\t\t? findBlockLayoutByClientId(\n\t\t\t\t\tblocksLayouts.current,\n\t\t\t\t\tpreviousClientId\n\t\t\t )\n\t\t\t: null;\n\t\tconst nextElement = nextClientId\n\t\t\t? findBlockLayoutByClientId( blocksLayouts.current, nextClientId )\n\t\t\t: null;\n\n\t\tconst previousElementPosition = previousElement\n\t\t\t? previousElement.y + previousElement.height\n\t\t\t: 0;\n\t\tconst nextElementPosition = nextElement ? nextElement.y : 0;\n\n\t\tconst elementsPositions = {\n\t\t\ttop: Math.floor(\n\t\t\t\tpreviousElement ? previousElementPosition : nextElementPosition\n\t\t\t),\n\t\t\tbottom: Math.floor(\n\t\t\t\tnextElement ? nextElementPosition : previousElementPosition\n\t\t\t),\n\t\t};\n\n\t\tconst nextPosition =\n\t\t\telementsPositions.top !== elementsPositions.bottom\n\t\t\t\t? getSelectedBlockIndicatorPosition( elementsPositions )\n\t\t\t\t: elementsPositions.top;\n\n\t\tif ( nextPosition && blockYPosition.value !== nextPosition ) {\n\t\t\topacity.value = 0;\n\t\t\tblockYPosition.value = nextPosition;\n\t\t\topacity.value = withTiming( 1 );\n\t\t\tgenerateHapticFeedback();\n\t\t}\n\t}\n\n\tuseAnimatedReaction(\n\t\t() => targetBlockIndex.value,\n\t\t( value, previous ) => {\n\t\t\tif ( value !== previous ) {\n\t\t\t\trunOnJS( setIndicatorPosition )( value );\n\t\t\t}\n\t\t}\n\t);\n\n\tconst animatedStyles = useAnimatedStyle( () => {\n\t\tconst translationY = blockYPosition.value - scroll.offsetY.value;\n\t\t// Prevents overflowing behind the header/footer\n\t\tconst shouldHideIndicator =\n\t\t\ttranslationY < 0 || translationY > maxHeight;\n\n\t\treturn {\n\t\t\topacity: shouldHideIndicator ? 0 : opacity.value,\n\t\t\ttransform: [\n\t\t\t\t{\n\t\t\t\t\ttranslateY: translationY,\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t} );\n\n\tconst insertionPointStyles = [\n\t\tstyles[ 'dropping-insertion-point' ],\n\t\tanimatedStyles,\n\t];\n\n\treturn (\n\t\t<Animated.View pointerEvents=\"none\" style={ insertionPointStyles } />\n\t);\n}\n"]}
|