@wordpress/block-editor 8.5.1 → 8.5.4
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/build/components/block-alignment-control/ui.js +1 -1
- package/build/components/block-alignment-control/ui.js.map +1 -1
- package/build/components/block-content-overlay/index.js +4 -13
- package/build/components/block-content-overlay/index.js.map +1 -1
- package/build/components/block-lock/menu-item.js +1 -1
- package/build/components/block-lock/menu-item.js.map +1 -1
- package/build/components/block-lock/modal.js +5 -35
- package/build/components/block-lock/modal.js.map +1 -1
- package/build/components/block-lock/toolbar.js +1 -2
- package/build/components/block-lock/toolbar.js.map +1 -1
- package/build/components/block-lock/use-block-lock.js +4 -10
- package/build/components/block-lock/use-block-lock.js.map +1 -1
- package/build/components/copy-handler/index.js +44 -9
- package/build/components/copy-handler/index.js.map +1 -1
- package/build/components/inserter/index.js +21 -7
- package/build/components/inserter/index.js.map +1 -1
- package/build/components/inserter/quick-inserter.js +4 -5
- package/build/components/inserter/quick-inserter.js.map +1 -1
- package/build/components/link-control/index.js +6 -7
- package/build/components/link-control/index.js.map +1 -1
- package/build/components/list-view/block.js +13 -2
- package/build/components/list-view/block.js.map +1 -1
- package/build/components/writing-flow/use-click-selection.js +1 -3
- package/build/components/writing-flow/use-click-selection.js.map +1 -1
- package/build/components/writing-flow/use-selection-observer.js +49 -8
- package/build/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build/hooks/duotone.js +66 -16
- package/build/hooks/duotone.js.map +1 -1
- package/build/hooks/index.js +7 -1
- package/build/hooks/index.js.map +1 -1
- package/build/index.js +7 -0
- package/build/index.js.map +1 -1
- package/build/store/actions.js +22 -29
- package/build/store/actions.js.map +1 -1
- package/build/store/selectors.js +96 -25
- package/build/store/selectors.js.map +1 -1
- package/build/store/utils.js +27 -0
- package/build/store/utils.js.map +1 -0
- package/build-module/components/block-alignment-control/ui.js +2 -2
- package/build-module/components/block-alignment-control/ui.js.map +1 -1
- package/build-module/components/block-content-overlay/index.js +4 -13
- package/build-module/components/block-content-overlay/index.js.map +1 -1
- package/build-module/components/block-lock/menu-item.js +1 -1
- package/build-module/components/block-lock/menu-item.js.map +1 -1
- package/build-module/components/block-lock/modal.js +6 -35
- package/build-module/components/block-lock/modal.js.map +1 -1
- package/build-module/components/block-lock/toolbar.js +1 -2
- package/build-module/components/block-lock/toolbar.js.map +1 -1
- package/build-module/components/block-lock/use-block-lock.js +4 -10
- package/build-module/components/block-lock/use-block-lock.js.map +1 -1
- package/build-module/components/copy-handler/index.js +44 -9
- package/build-module/components/copy-handler/index.js.map +1 -1
- package/build-module/components/inserter/index.js +21 -7
- package/build-module/components/inserter/index.js.map +1 -1
- package/build-module/components/inserter/quick-inserter.js +4 -5
- package/build-module/components/inserter/quick-inserter.js.map +1 -1
- package/build-module/components/link-control/index.js +6 -7
- package/build-module/components/link-control/index.js.map +1 -1
- package/build-module/components/list-view/block.js +13 -2
- package/build-module/components/list-view/block.js.map +1 -1
- package/build-module/components/writing-flow/use-click-selection.js +1 -3
- package/build-module/components/writing-flow/use-click-selection.js.map +1 -1
- package/build-module/components/writing-flow/use-selection-observer.js +49 -8
- package/build-module/components/writing-flow/use-selection-observer.js.map +1 -1
- package/build-module/hooks/duotone.js +63 -16
- package/build-module/hooks/duotone.js.map +1 -1
- package/build-module/hooks/index.js +1 -0
- package/build-module/hooks/index.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/store/actions.js +5 -14
- package/build-module/store/actions.js.map +1 -1
- package/build-module/store/selectors.js +88 -22
- package/build-module/store/selectors.js.map +1 -1
- package/build-module/store/utils.js +20 -0
- package/build-module/store/utils.js.map +1 -0
- package/build-style/style-rtl.css +1 -3
- package/build-style/style.css +1 -3
- package/package.json +28 -28
- package/src/components/block-alignment-control/ui.js +2 -2
- package/src/components/block-content-overlay/index.js +2 -19
- package/src/components/block-content-overlay/style.scss +0 -1
- package/src/components/block-lock/menu-item.js +1 -1
- package/src/components/block-lock/modal.js +3 -42
- package/src/components/block-lock/style.scss +1 -2
- package/src/components/block-lock/toolbar.js +2 -2
- package/src/components/block-lock/use-block-lock.js +5 -12
- package/src/components/copy-handler/index.js +52 -10
- package/src/components/inserter/index.js +20 -0
- package/src/components/inserter/quick-inserter.js +3 -11
- package/src/components/link-control/index.js +5 -5
- package/src/components/list-view/block.js +16 -7
- package/src/components/writing-flow/use-click-selection.js +1 -4
- package/src/components/writing-flow/use-selection-observer.js +55 -10
- package/src/hooks/duotone.js +98 -62
- package/src/hooks/index.js +1 -0
- package/src/index.js +1 -0
- package/src/store/actions.js +5 -13
- package/src/store/selectors.js +126 -20
- package/src/store/utils.js +19 -0
|
@@ -35,7 +35,7 @@ var _useAvailableAlignments = _interopRequireDefault(require("./use-available-al
|
|
|
35
35
|
const BLOCK_ALIGNMENTS_CONTROLS = {
|
|
36
36
|
none: {
|
|
37
37
|
icon: _icons.alignNone,
|
|
38
|
-
title: (0, _i18n.
|
|
38
|
+
title: (0, _i18n._x)('None', 'Alignment option')
|
|
39
39
|
},
|
|
40
40
|
left: {
|
|
41
41
|
icon: _icons.positionLeft,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-alignment-control/ui.js"],"names":["BLOCK_ALIGNMENTS_CONTROLS","none","icon","alignNone","title","left","positionLeft","center","positionCenter","right","positionRight","wide","stretchWide","full","stretchFullWidth","DEFAULT_CONTROL","POPOVER_PROPS","isAlternate","BlockAlignmentUI","value","onChange","controls","isToolbar","isCollapsed","enabledControls","hasEnabledControls","length","onChangeAlignment","align","includes","undefined","activeAlignmentControl","defaultAlignmentControl","UIComponent","ToolbarGroup","ToolbarDropdownMenu","commonProps","popoverProps","label","toggleProps","describedBy","extraProps","Platform","isNative","map","name","controlName","isActive","role","onClick","children","onClose","info","isSelected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tToolbarDropdownMenu,\n\tToolbarGroup,\n\tMenuGroup,\n\tMenuItem,\n} from '@wordpress/components';\nimport {\n\talignNone,\n\tpositionCenter,\n\tpositionLeft,\n\tpositionRight,\n\tstretchFullWidth,\n\tstretchWide,\n} from '@wordpress/icons';\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useAvailableAlignments from './use-available-alignments';\n\nconst BLOCK_ALIGNMENTS_CONTROLS = {\n\tnone: {\n\t\ticon: alignNone,\n\t\ttitle:
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-alignment-control/ui.js"],"names":["BLOCK_ALIGNMENTS_CONTROLS","none","icon","alignNone","title","left","positionLeft","center","positionCenter","right","positionRight","wide","stretchWide","full","stretchFullWidth","DEFAULT_CONTROL","POPOVER_PROPS","isAlternate","BlockAlignmentUI","value","onChange","controls","isToolbar","isCollapsed","enabledControls","hasEnabledControls","length","onChangeAlignment","align","includes","undefined","activeAlignmentControl","defaultAlignmentControl","UIComponent","ToolbarGroup","ToolbarDropdownMenu","commonProps","popoverProps","label","toggleProps","describedBy","extraProps","Platform","isNative","map","name","controlName","isActive","role","onClick","children","onClose","info","isSelected"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classNames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __, _x } from '@wordpress/i18n';\nimport {\n\tToolbarDropdownMenu,\n\tToolbarGroup,\n\tMenuGroup,\n\tMenuItem,\n} from '@wordpress/components';\nimport {\n\talignNone,\n\tpositionCenter,\n\tpositionLeft,\n\tpositionRight,\n\tstretchFullWidth,\n\tstretchWide,\n} from '@wordpress/icons';\nimport { Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useAvailableAlignments from './use-available-alignments';\n\nconst BLOCK_ALIGNMENTS_CONTROLS = {\n\tnone: {\n\t\ticon: alignNone,\n\t\ttitle: _x( 'None', 'Alignment option' ),\n\t},\n\tleft: {\n\t\ticon: positionLeft,\n\t\ttitle: __( 'Align left' ),\n\t},\n\tcenter: {\n\t\ticon: positionCenter,\n\t\ttitle: __( 'Align center' ),\n\t},\n\tright: {\n\t\ticon: positionRight,\n\t\ttitle: __( 'Align right' ),\n\t},\n\twide: {\n\t\ticon: stretchWide,\n\t\ttitle: __( 'Wide width' ),\n\t},\n\tfull: {\n\t\ticon: stretchFullWidth,\n\t\ttitle: __( 'Full width' ),\n\t},\n};\n\nconst DEFAULT_CONTROL = 'none';\n\nconst POPOVER_PROPS = {\n\tisAlternate: true,\n};\n\nfunction BlockAlignmentUI( {\n\tvalue,\n\tonChange,\n\tcontrols,\n\tisToolbar,\n\tisCollapsed = true,\n} ) {\n\tconst enabledControls = useAvailableAlignments( controls );\n\tconst hasEnabledControls = !! enabledControls.length;\n\n\tif ( ! hasEnabledControls ) {\n\t\treturn null;\n\t}\n\n\tfunction onChangeAlignment( align ) {\n\t\tonChange( [ value, 'none' ].includes( align ) ? undefined : align );\n\t}\n\n\tconst activeAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[ value ];\n\tconst defaultAlignmentControl =\n\t\tBLOCK_ALIGNMENTS_CONTROLS[ DEFAULT_CONTROL ];\n\n\tconst UIComponent = isToolbar ? ToolbarGroup : ToolbarDropdownMenu;\n\tconst commonProps = {\n\t\tpopoverProps: POPOVER_PROPS,\n\t\ticon: activeAlignmentControl\n\t\t\t? activeAlignmentControl.icon\n\t\t\t: defaultAlignmentControl.icon,\n\t\tlabel: __( 'Align' ),\n\t\ttoggleProps: { describedBy: __( 'Change alignment' ) },\n\t};\n\tconst extraProps =\n\t\tisToolbar || Platform.isNative\n\t\t\t? {\n\t\t\t\t\tisCollapsed: isToolbar ? isCollapsed : undefined,\n\t\t\t\t\tcontrols: enabledControls.map(\n\t\t\t\t\t\t( { name: controlName } ) => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...BLOCK_ALIGNMENTS_CONTROLS[ controlName ],\n\t\t\t\t\t\t\t\tisActive:\n\t\t\t\t\t\t\t\t\tvalue === controlName ||\n\t\t\t\t\t\t\t\t\t( ! value && controlName === 'none' ),\n\t\t\t\t\t\t\t\trole: isCollapsed ? 'menuitemradio' : undefined,\n\t\t\t\t\t\t\t\tonClick: () => onChangeAlignment( controlName ),\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t),\n\t\t\t }\n\t\t\t: {\n\t\t\t\t\tchildren: ( { onClose } ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<MenuGroup className=\"block-editor-block-alignment-control__menu-group\">\n\t\t\t\t\t\t\t\t\t{ enabledControls.map(\n\t\t\t\t\t\t\t\t\t\t( { name: controlName, info } ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\t\t\t\t\ticon,\n\t\t\t\t\t\t\t\t\t\t\t\ttitle,\n\t\t\t\t\t\t\t\t\t\t\t} = BLOCK_ALIGNMENTS_CONTROLS[\n\t\t\t\t\t\t\t\t\t\t\t\tcontrolName\n\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t// If no value is provided, mark as selected the `none` option.\n\t\t\t\t\t\t\t\t\t\t\tconst isSelected =\n\t\t\t\t\t\t\t\t\t\t\t\tcontrolName === value ||\n\t\t\t\t\t\t\t\t\t\t\t\t( ! value &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontrolName === 'none' );\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ controlName }\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\t\t\t\ticonPosition=\"left\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={ classNames(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'components-dropdown-menu__menu-item',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'is-active': isSelected,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChangeAlignment(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontrolName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\trole=\"menuitemradio\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tinfo={ info }\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ title }\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t };\n\n\treturn <UIComponent { ...commonProps } { ...extraProps } />;\n}\n\nexport default BlockAlignmentUI;\n"]}
|
|
@@ -39,7 +39,6 @@ function BlockContentOverlay(_ref) {
|
|
|
39
39
|
const [isOverlayActive, setIsOverlayActive] = (0, _element.useState)(true);
|
|
40
40
|
const [isHovered, setIsHovered] = (0, _element.useState)(false);
|
|
41
41
|
const {
|
|
42
|
-
canEdit,
|
|
43
42
|
isParentSelected,
|
|
44
43
|
hasChildSelected,
|
|
45
44
|
isDraggingBlocks,
|
|
@@ -49,11 +48,9 @@ function BlockContentOverlay(_ref) {
|
|
|
49
48
|
isBlockSelected,
|
|
50
49
|
hasSelectedInnerBlock,
|
|
51
50
|
isDraggingBlocks: _isDraggingBlocks,
|
|
52
|
-
isBlockHighlighted
|
|
53
|
-
canEditBlock
|
|
51
|
+
isBlockHighlighted
|
|
54
52
|
} = select(_store.store);
|
|
55
53
|
return {
|
|
56
|
-
canEdit: canEditBlock(clientId),
|
|
57
54
|
isParentSelected: isBlockSelected(clientId),
|
|
58
55
|
hasChildSelected: hasSelectedInnerBlock(clientId, true),
|
|
59
56
|
isDraggingBlocks: _isDraggingBlocks(),
|
|
@@ -66,13 +63,7 @@ function BlockContentOverlay(_ref) {
|
|
|
66
63
|
'is-dragging-blocks': isDraggingBlocks
|
|
67
64
|
});
|
|
68
65
|
(0, _element.useEffect)(() => {
|
|
69
|
-
//
|
|
70
|
-
if (!canEdit) {
|
|
71
|
-
setIsOverlayActive(true);
|
|
72
|
-
return;
|
|
73
|
-
} // Reenable when blocks are not in use.
|
|
74
|
-
|
|
75
|
-
|
|
66
|
+
// Reenable when blocks are not in use.
|
|
76
67
|
if (!isParentSelected && !hasChildSelected && !isOverlayActive) {
|
|
77
68
|
setIsOverlayActive(true);
|
|
78
69
|
} // Disable if parent selected by another means (such as list view).
|
|
@@ -90,7 +81,7 @@ function BlockContentOverlay(_ref) {
|
|
|
90
81
|
if (hasChildSelected && isOverlayActive) {
|
|
91
82
|
setIsOverlayActive(false);
|
|
92
83
|
}
|
|
93
|
-
}, [isParentSelected, hasChildSelected, isOverlayActive, isHovered
|
|
84
|
+
}, [isParentSelected, hasChildSelected, isOverlayActive, isHovered]); // Disabled because the overlay div doesn't actually have a role or functionality
|
|
94
85
|
// as far as the a11y is concerned. We're just catching the first click so that
|
|
95
86
|
// the block can be selected without interacting with its contents.
|
|
96
87
|
|
|
@@ -100,7 +91,7 @@ function BlockContentOverlay(_ref) {
|
|
|
100
91
|
className: classes,
|
|
101
92
|
onMouseEnter: () => setIsHovered(true),
|
|
102
93
|
onMouseLeave: () => setIsHovered(false),
|
|
103
|
-
onMouseUp: isOverlayActive
|
|
94
|
+
onMouseUp: isOverlayActive ? () => setIsOverlayActive(false) : undefined
|
|
104
95
|
}), wrapperProps === null || wrapperProps === void 0 ? void 0 : wrapperProps.children);
|
|
105
96
|
}
|
|
106
97
|
/* eslint-enable jsx-a11y/no-static-element-interactions */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-content-overlay/index.js"],"names":["BlockContentOverlay","clientId","tagName","TagName","wrapperProps","className","baseClassName","isOverlayActive","setIsOverlayActive","isHovered","setIsHovered","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-content-overlay/index.js"],"names":["BlockContentOverlay","clientId","tagName","TagName","wrapperProps","className","baseClassName","isOverlayActive","setIsOverlayActive","isHovered","setIsHovered","isParentSelected","hasChildSelected","isDraggingBlocks","isParentHighlighted","select","isBlockSelected","hasSelectedInnerBlock","_isDraggingBlocks","isBlockHighlighted","blockEditorStore","classes","undefined","children"],"mappings":";;;;;;;;;AAIA;;;;AADA;;AAMA;;AAKA;;AAdA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AAGe,SAASA,mBAAT,OAKX;AAAA,MALyC;AAC5CC,IAAAA,QAD4C;AAE5CC,IAAAA,OAAO,EAAEC,OAAO,GAAG,KAFyB;AAG5CC,IAAAA,YAH4C;AAI5CC,IAAAA;AAJ4C,GAKzC;AACH,QAAMC,aAAa,GAAG,oCAAtB;AACA,QAAM,CAAEC,eAAF,EAAmBC,kBAAnB,IAA0C,uBAAU,IAAV,CAAhD;AACA,QAAM,CAAEC,SAAF,EAAaC,YAAb,IAA8B,uBAAU,KAAV,CAApC;AAEA,QAAM;AACLC,IAAAA,gBADK;AAELC,IAAAA,gBAFK;AAGLC,IAAAA,gBAHK;AAILC,IAAAA;AAJK,MAKF,qBACDC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,eADK;AAELC,MAAAA,qBAFK;AAGLJ,MAAAA,gBAAgB,EAAEK,iBAHb;AAILC,MAAAA;AAJK,QAKFJ,MAAM,CAAEK,YAAF,CALV;AAMA,WAAO;AACNT,MAAAA,gBAAgB,EAAEK,eAAe,CAAEf,QAAF,CAD3B;AAENW,MAAAA,gBAAgB,EAAEK,qBAAqB,CAAEhB,QAAF,EAAY,IAAZ,CAFjC;AAGNY,MAAAA,gBAAgB,EAAEK,iBAAiB,EAH7B;AAINJ,MAAAA,mBAAmB,EAAEK,kBAAkB,CAAElB,QAAF;AAJjC,KAAP;AAMA,GAdE,EAeH,CAAEA,QAAF,CAfG,CALJ;AAuBA,QAAMoB,OAAO,GAAG,yBACff,aADe,EAEfF,YAFe,aAEfA,YAFe,uBAEfA,YAAY,CAAEC,SAFC,EAGfA,SAHe,EAIf;AACC,sBAAkBE,eADnB;AAEC,0BAAsBO,mBAFvB;AAGC,0BAAsBD;AAHvB,GAJe,CAAhB;AAWA,0BAAW,MAAM;AAChB;AACA,QAAK,CAAEF,gBAAF,IAAsB,CAAEC,gBAAxB,IAA4C,CAAEL,eAAnD,EAAqE;AACpEC,MAAAA,kBAAkB,CAAE,IAAF,CAAlB;AACA,KAJe,CAKhB;AACA;AACA;AACA;AACA;;;AACA,QAAKG,gBAAgB,IAAI,CAAEF,SAAtB,IAAmCF,eAAxC,EAA0D;AACzDC,MAAAA,kBAAkB,CAAE,KAAF,CAAlB;AACA,KAZe,CAahB;;;AACA,QAAKI,gBAAgB,IAAIL,eAAzB,EAA2C;AAC1CC,MAAAA,kBAAkB,CAAE,KAAF,CAAlB;AACA;AACD,GAjBD,EAiBG,CAAEG,gBAAF,EAAoBC,gBAApB,EAAsCL,eAAtC,EAAuDE,SAAvD,CAjBH,EAvCG,CA0DH;AACA;AACA;;AACA;;AACA,SACC,4BAAC,OAAD,6BACML,YADN;AAEC,IAAA,SAAS,EAAGiB,OAFb;AAGC,IAAA,YAAY,EAAG,MAAMX,YAAY,CAAE,IAAF,CAHlC;AAIC,IAAA,YAAY,EAAG,MAAMA,YAAY,CAAE,KAAF,CAJlC;AAKC,IAAA,SAAS,EACRH,eAAe,GAAG,MAAMC,kBAAkB,CAAE,KAAF,CAA3B,GAAuCc;AANxD,MASGlB,YATH,aASGA,YATH,uBASGA,YAAY,CAAEmB,QATjB,CADD;AAaA;AACD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { useState, useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\nexport default function BlockContentOverlay( {\n\tclientId,\n\ttagName: TagName = 'div',\n\twrapperProps,\n\tclassName,\n} ) {\n\tconst baseClassName = 'block-editor-block-content-overlay';\n\tconst [ isOverlayActive, setIsOverlayActive ] = useState( true );\n\tconst [ isHovered, setIsHovered ] = useState( false );\n\n\tconst {\n\t\tisParentSelected,\n\t\thasChildSelected,\n\t\tisDraggingBlocks,\n\t\tisParentHighlighted,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tisDraggingBlocks: _isDraggingBlocks,\n\t\t\t\tisBlockHighlighted,\n\t\t\t} = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tisParentSelected: isBlockSelected( clientId ),\n\t\t\t\thasChildSelected: hasSelectedInnerBlock( clientId, true ),\n\t\t\t\tisDraggingBlocks: _isDraggingBlocks(),\n\t\t\t\tisParentHighlighted: isBlockHighlighted( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst classes = classnames(\n\t\tbaseClassName,\n\t\twrapperProps?.className,\n\t\tclassName,\n\t\t{\n\t\t\t'overlay-active': isOverlayActive,\n\t\t\t'parent-highlighted': isParentHighlighted,\n\t\t\t'is-dragging-blocks': isDraggingBlocks,\n\t\t}\n\t);\n\n\tuseEffect( () => {\n\t\t// Reenable when blocks are not in use.\n\t\tif ( ! isParentSelected && ! hasChildSelected && ! isOverlayActive ) {\n\t\t\tsetIsOverlayActive( true );\n\t\t}\n\t\t// Disable if parent selected by another means (such as list view).\n\t\t// We check hover to ensure the overlay click interaction is not taking place.\n\t\t// Trying to click the overlay will select the parent block via its 'focusin'\n\t\t// listener on the wrapper, so if the block is selected while hovered we will\n\t\t// let the mouseup disable the overlay instead.\n\t\tif ( isParentSelected && ! isHovered && isOverlayActive ) {\n\t\t\tsetIsOverlayActive( false );\n\t\t}\n\t\t// Ensure overlay is disabled if a child block is selected.\n\t\tif ( hasChildSelected && isOverlayActive ) {\n\t\t\tsetIsOverlayActive( false );\n\t\t}\n\t}, [ isParentSelected, hasChildSelected, isOverlayActive, isHovered ] );\n\n\t// Disabled because the overlay div doesn't actually have a role or functionality\n\t// as far as the a11y is concerned. We're just catching the first click so that\n\t// the block can be selected without interacting with its contents.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<TagName\n\t\t\t{ ...wrapperProps }\n\t\t\tclassName={ classes }\n\t\t\tonMouseEnter={ () => setIsHovered( true ) }\n\t\t\tonMouseLeave={ () => setIsHovered( false ) }\n\t\t\tonMouseUp={\n\t\t\t\tisOverlayActive ? () => setIsOverlayActive( false ) : undefined\n\t\t\t}\n\t\t>\n\t\t\t{ wrapperProps?.children }\n\t\t</TagName>\n\t);\n}\n/* eslint-enable jsx-a11y/no-static-element-interactions */\n"]}
|
|
@@ -33,7 +33,7 @@ function BlockLockMenuItem(_ref) {
|
|
|
33
33
|
const {
|
|
34
34
|
canLock,
|
|
35
35
|
isLocked
|
|
36
|
-
} = (0, _useBlockLock.default)(clientId
|
|
36
|
+
} = (0, _useBlockLock.default)(clientId);
|
|
37
37
|
const [isModalOpen, toggleModal] = (0, _element.useReducer)(isActive => !isActive, false);
|
|
38
38
|
|
|
39
39
|
if (!canLock) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/menu-item.js"],"names":["BlockLockMenuItem","clientId","canLock","isLocked","isModalOpen","toggleModal","isActive","label","unlock","lock"],"mappings":";;;;;;;;;AAIA;;AADA;;AAEA;;AACA;;AAKA;;AACA;;AAZA;AACA;AACA;;AAMA;AACA;AACA;AAIe,SAASA,iBAAT,OAA2C;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACzD,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAAwB,2BAAcF,QAAd,
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/menu-item.js"],"names":["BlockLockMenuItem","clientId","canLock","isLocked","isModalOpen","toggleModal","isActive","label","unlock","lock"],"mappings":";;;;;;;;;AAIA;;AADA;;AAEA;;AACA;;AAKA;;AACA;;AAZA;AACA;AACA;;AAMA;AACA;AACA;AAIe,SAASA,iBAAT,OAA2C;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACzD,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAAwB,2BAAcF,QAAd,CAA9B;AAEA,QAAM,CAAEG,WAAF,EAAeC,WAAf,IAA+B,yBAClCC,QAAF,IAAgB,CAAEA,QADkB,EAEpC,KAFoC,CAArC;;AAKA,MAAK,CAAEJ,OAAP,EAAiB;AAChB,WAAO,IAAP;AACA;;AAED,QAAMK,KAAK,GAAGJ,QAAQ,GAAG,cAAI,QAAJ,CAAH,GAAoB,cAAI,MAAJ,CAA1C;AAEA,SACC,qDACC,4BAAC,oBAAD;AAAU,IAAA,IAAI,EAAGA,QAAQ,GAAGK,aAAH,GAAYC,WAArC;AAA4C,IAAA,OAAO,EAAGJ;AAAtD,KACGE,KADH,CADD,EAIGH,WAAW,IACZ,4BAAC,cAAD;AAAgB,IAAA,QAAQ,EAAGH,QAA3B;AAAsC,IAAA,OAAO,EAAGI;AAAhD,IALF,CADD;AAUA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useReducer } from '@wordpress/element';\nimport { MenuItem } from '@wordpress/components';\nimport { lock, unlock } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport BlockLockModal from './modal';\n\nexport default function BlockLockMenuItem( { clientId } ) {\n\tconst { canLock, isLocked } = useBlockLock( clientId );\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tif ( ! canLock ) {\n\t\treturn null;\n\t}\n\n\tconst label = isLocked ? __( 'Unlock' ) : __( 'Lock' );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem icon={ isLocked ? unlock : lock } onClick={ toggleModal }>\n\t\t\t\t{ label }\n\t\t\t</MenuItem>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -19,8 +19,6 @@ var _compose = require("@wordpress/compose");
|
|
|
19
19
|
|
|
20
20
|
var _data = require("@wordpress/data");
|
|
21
21
|
|
|
22
|
-
var _blocks = require("@wordpress/blocks");
|
|
23
|
-
|
|
24
22
|
var _useBlockLock = _interopRequireDefault(require("./use-block-lock"));
|
|
25
23
|
|
|
26
24
|
var _useBlockDisplayInformation = _interopRequireDefault(require("../use-block-display-information"));
|
|
@@ -44,21 +42,9 @@ function BlockLockModal(_ref) {
|
|
|
44
42
|
remove: false
|
|
45
43
|
});
|
|
46
44
|
const {
|
|
47
|
-
canEdit,
|
|
48
45
|
canMove,
|
|
49
46
|
canRemove
|
|
50
|
-
} = (0, _useBlockLock.default)(clientId
|
|
51
|
-
const {
|
|
52
|
-
isReusable
|
|
53
|
-
} = (0, _data.useSelect)(select => {
|
|
54
|
-
const {
|
|
55
|
-
getBlockName
|
|
56
|
-
} = select(_store.store);
|
|
57
|
-
const blockName = getBlockName(clientId);
|
|
58
|
-
return {
|
|
59
|
-
isReusable: (0, _blocks.isReusableBlock)((0, _blocks.getBlockType)(blockName))
|
|
60
|
-
};
|
|
61
|
-
}, [clientId]);
|
|
47
|
+
} = (0, _useBlockLock.default)(clientId);
|
|
62
48
|
const {
|
|
63
49
|
updateBlockAttributes
|
|
64
50
|
} = (0, _data.useDispatch)(_store.store);
|
|
@@ -67,12 +53,9 @@ function BlockLockModal(_ref) {
|
|
|
67
53
|
(0, _element.useEffect)(() => {
|
|
68
54
|
setLock({
|
|
69
55
|
move: !canMove,
|
|
70
|
-
remove: !canRemove
|
|
71
|
-
...(isReusable ? {
|
|
72
|
-
edit: !canEdit
|
|
73
|
-
} : {})
|
|
56
|
+
remove: !canRemove
|
|
74
57
|
});
|
|
75
|
-
}, [
|
|
58
|
+
}, [canMove, canRemove]);
|
|
76
59
|
const isAllChecked = Object.values(lock).every(Boolean);
|
|
77
60
|
const isMixed = Object.values(lock).some(Boolean) && !isAllChecked;
|
|
78
61
|
return (0, _element.createElement)(_components.Modal, {
|
|
@@ -103,24 +86,11 @@ function BlockLockModal(_ref) {
|
|
|
103
86
|
indeterminate: isMixed,
|
|
104
87
|
onChange: newValue => setLock({
|
|
105
88
|
move: newValue,
|
|
106
|
-
remove: newValue
|
|
107
|
-
...(isReusable ? {
|
|
108
|
-
edit: newValue
|
|
109
|
-
} : {})
|
|
89
|
+
remove: newValue
|
|
110
90
|
})
|
|
111
91
|
}), (0, _element.createElement)("ul", {
|
|
112
92
|
className: "block-editor-block-lock-modal__checklist"
|
|
113
|
-
},
|
|
114
|
-
className: "block-editor-block-lock-modal__checklist-item"
|
|
115
|
-
}, (0, _element.createElement)(_components.CheckboxControl, {
|
|
116
|
-
label: (0, _element.createElement)(_element.Fragment, null, (0, _i18n.__)('Restrict editing'), (0, _element.createElement)(_components.Icon, {
|
|
117
|
-
icon: lock.edit ? _icons.lock : _icons.unlock
|
|
118
|
-
})),
|
|
119
|
-
checked: !!lock.edit,
|
|
120
|
-
onChange: edit => setLock(prevLock => ({ ...prevLock,
|
|
121
|
-
edit
|
|
122
|
-
}))
|
|
123
|
-
})), (0, _element.createElement)("li", {
|
|
93
|
+
}, (0, _element.createElement)("li", {
|
|
124
94
|
className: "block-editor-block-lock-modal__checklist-item"
|
|
125
95
|
}, (0, _element.createElement)(_components.CheckboxControl, {
|
|
126
96
|
label: (0, _element.createElement)(_element.Fragment, null, (0, _i18n.__)('Disable movement'), (0, _element.createElement)(_components.Icon, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/modal.js"],"names":["BlockLockModal","clientId","onClose","lock","setLock","move","remove","canEdit","canMove","canRemove","isReusable","select","getBlockName","blockEditorStore","blockName","updateBlockAttributes","blockInformation","instanceId","edit","isAllChecked","Object","values","every","Boolean","isMixed","some","title","event","preventDefault","newValue","lockIcon","unlockIcon","prevLock"],"mappings":";;;;;;;;;AAIA;;AADA;;AAEA;;AAQA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AAvBA;AACA;AACA;;AAgBA;AACA;AACA;AAKe,SAASA,cAAT,OAAiD;AAAA,MAAxB;AAAEC,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,GAAwB;AAC/D,QAAM,CAAEC,IAAF,EAAQC,OAAR,IAAoB,uBAAU;AAAEC,IAAAA,IAAI,EAAE,KAAR;AAAeC,IAAAA,MAAM,EAAE;AAAvB,GAAV,CAA1B;AACA,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,OAAX;AAAoBC,IAAAA;AAApB,MAAkC,2BAAcR,QAAd,EAAwB,IAAxB,CAAxC;AACA,QAAM;AAAES,IAAAA;AAAF,MAAiB,qBACpBC,MAAF,IAAc;AACb,UAAM;AAAEC,MAAAA;AAAF,QAAmBD,MAAM,CAAEE,YAAF,CAA/B;AACA,UAAMC,SAAS,GAAGF,YAAY,CAAEX,QAAF,CAA9B;AAEA,WAAO;AACNS,MAAAA,UAAU,EAAE,6BAAiB,0BAAcI,SAAd,CAAjB;AADN,KAAP;AAGA,GARqB,EAStB,CAAEb,QAAF,CATsB,CAAvB;AAWA,QAAM;AAAEc,IAAAA;AAAF,MAA4B,uBAAaF,YAAb,CAAlC;AACA,QAAMG,gBAAgB,GAAG,yCAA4Bf,QAA5B,CAAzB;AACA,QAAMgB,UAAU,GAAG,4BAClBjB,cADkB,EAElB,8CAFkB,CAAnB;AAKA,0BAAW,MAAM;AAChBI,IAAAA,OAAO,CAAE;AACRC,MAAAA,IAAI,EAAE,CAAEG,OADA;AAERF,MAAAA,MAAM,EAAE,CAAEG,SAFF;AAGR,UAAKC,UAAU,GAAG;AAAEQ,QAAAA,IAAI,EAAE,CAAEX;AAAV,OAAH,GAAyB,EAAxC;AAHQ,KAAF,CAAP;AAKA,GAND,EAMG,CAAEA,OAAF,EAAWC,OAAX,EAAoBC,SAApB,EAA+BC,UAA/B,CANH;AAQA,QAAMS,YAAY,GAAGC,MAAM,CAACC,MAAP,CAAelB,IAAf,EAAsBmB,KAAtB,CAA6BC,OAA7B,CAArB;AACA,QAAMC,OAAO,GAAGJ,MAAM,CAACC,MAAP,CAAelB,IAAf,EAAsBsB,IAAtB,CAA4BF,OAA5B,KAAyC,CAAEJ,YAA3D;AAEA,SACC,4BAAC,iBAAD;AACC,IAAA,KAAK,EAAG;AACP;AACA,kBAAI,SAAJ,CAFO,EAGPH,gBAAgB,CAACU,KAHV,CADT;AAMC,IAAA,gBAAgB,EAAC,+BANlB;AAOC,IAAA,UAAU,EAAG,cAAI,OAAJ,CAPd;AAQC,IAAA,cAAc,EAAGxB;AARlB,KAUC;AACC,IAAA,QAAQ,EAAKyB,KAAF,IAAa;AACvBA,MAAAA,KAAK,CAACC,cAAN;AACAb,MAAAA,qBAAqB,CAAE,CAAEd,QAAF,CAAF,EAAgB;AAAEE,QAAAA;AAAF,OAAhB,CAArB;AACAD,MAAAA,OAAO;AACP;AALF,KAOC,uCACG,cACD,uEADC,CADH,CAPD,EAYC;AACC,IAAA,IAAI,EAAC,OADN;AAEC,uBAAkBe,UAFnB;AAGC,IAAA,SAAS,EAAC;AAHX,KAKC,4BAAC,2BAAD;AACC,IAAA,SAAS,EAAC,8CADX;AAEC,IAAA,KAAK,EACJ;AAAM,MAAA,EAAE,EAAGA;AAAX,OAA0B,cAAI,UAAJ,CAA1B,CAHF;AAKC,IAAA,OAAO,EAAGE,YALX;AAMC,IAAA,aAAa,EAAGK,OANjB;AAOC,IAAA,QAAQ,EAAKK,QAAF,IACVzB,OAAO,CAAE;AACRC,MAAAA,IAAI,EAAEwB,QADE;AAERvB,MAAAA,MAAM,EAAEuB,QAFA;AAGR,UAAKnB,UAAU,GAAG;AAAEQ,QAAAA,IAAI,EAAEW;AAAR,OAAH,GAAwB,EAAvC;AAHQ,KAAF;AART,IALD,EAoBC;AAAI,IAAA,SAAS,EAAC;AAAd,KACGnB,UAAU,IACX;AAAI,IAAA,SAAS,EAAC;AAAd,KACC,4BAAC,2BAAD;AACC,IAAA,KAAK,EACJ,qDACG,cAAI,kBAAJ,CADH,EAEC,4BAAC,gBAAD;AACC,MAAA,IAAI,EACHP,IAAI,CAACe,IAAL,GACGY,WADH,GAEGC;AAJL,MAFD,CAFF;AAaC,IAAA,OAAO,EAAG,CAAC,CAAE5B,IAAI,CAACe,IAbnB;AAcC,IAAA,QAAQ,EAAKA,IAAF,IACVd,OAAO,CAAI4B,QAAF,KAAkB,EAC1B,GAAGA,QADuB;AAE1Bd,MAAAA;AAF0B,KAAlB,CAAF;AAfT,IADD,CAFF,EA0BC;AAAI,IAAA,SAAS,EAAC;AAAd,KACC,4BAAC,2BAAD;AACC,IAAA,KAAK,EACJ,qDACG,cAAI,kBAAJ,CADH,EAEC,4BAAC,gBAAD;AACC,MAAA,IAAI,EACHf,IAAI,CAACE,IAAL,GACGyB,WADH,GAEGC;AAJL,MAFD,CAFF;AAaC,IAAA,OAAO,EAAG5B,IAAI,CAACE,IAbhB;AAcC,IAAA,QAAQ,EAAKA,IAAF,IACVD,OAAO,CAAI4B,QAAF,KAAkB,EAC1B,GAAGA,QADuB;AAE1B3B,MAAAA;AAF0B,KAAlB,CAAF;AAfT,IADD,CA1BD,EAiDC;AAAI,IAAA,SAAS,EAAC;AAAd,KACC,4BAAC,2BAAD;AACC,IAAA,KAAK,EACJ,qDACG,cAAI,iBAAJ,CADH,EAEC,4BAAC,gBAAD;AACC,MAAA,IAAI,EACHF,IAAI,CAACG,MAAL,GACGwB,WADH,GAEGC;AAJL,MAFD,CAFF;AAaC,IAAA,OAAO,EAAG5B,IAAI,CAACG,MAbhB;AAcC,IAAA,QAAQ,EAAKA,MAAF,IACVF,OAAO,CAAI4B,QAAF,KAAkB,EAC1B,GAAGA,QADuB;AAE1B1B,MAAAA;AAF0B,KAAlB,CAAF;AAfT,IADD,CAjDD,CApBD,CAZD,EA0GC,4BAAC,gBAAD;AACC,IAAA,SAAS,EAAC,wCADX;AAEC,IAAA,OAAO,EAAC,UAFT;AAGC,IAAA,QAAQ,EAAG;AAHZ,KAKC,4BAAC,oBAAD,QACC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,UAAhB;AAA2B,IAAA,OAAO,EAAGJ;AAArC,KACG,cAAI,QAAJ,CADH,CADD,CALD,EAUC,4BAAC,oBAAD,QACC,4BAAC,kBAAD;AAAQ,IAAA,OAAO,EAAC,SAAhB;AAA0B,IAAA,IAAI,EAAC;AAA/B,KACG,cAAI,OAAJ,CADH,CADD,CAVD,CA1GD,CAVD,CADD;AAwIA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n} from '@wordpress/components';\nimport { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { isReusableBlock, getBlockType } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockLockModal( { clientId, onClose } ) {\n\tconst [ lock, setLock ] = useState( { move: false, remove: false } );\n\tconst { canEdit, canMove, canRemove } = useBlockLock( clientId, true );\n\tconst { isReusable } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockName } = select( blockEditorStore );\n\t\t\tconst blockName = getBlockName( clientId );\n\n\t\t\treturn {\n\t\t\t\tisReusable: isReusableBlock( getBlockType( blockName ) ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst instanceId = useInstanceId(\n\t\tBlockLockModal,\n\t\t'block-editor-block-lock-modal__options-title'\n\t);\n\n\tuseEffect( () => {\n\t\tsetLock( {\n\t\t\tmove: ! canMove,\n\t\t\tremove: ! canRemove,\n\t\t\t...( isReusable ? { edit: ! canEdit } : {} ),\n\t\t} );\n\t}, [ canEdit, canMove, canRemove, isReusable ] );\n\n\tconst isAllChecked = Object.values( lock ).every( Boolean );\n\tconst isMixed = Object.values( lock ).some( Boolean ) && ! isAllChecked;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t/* translators: %s: Name of the block. */\n\t\t\t\t__( 'Lock %s' ),\n\t\t\t\tblockInformation.title\n\t\t\t) }\n\t\t\toverlayClassName=\"block-editor-block-lock-modal\"\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateBlockAttributes( [ clientId ], { lock } );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Choose specific attributes to restrict or lock all available options.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<div\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-labelledby={ instanceId }\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options-title\"\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<span id={ instanceId }>{ __( 'Lock all' ) }</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ isAllChecked }\n\t\t\t\t\t\tindeterminate={ isMixed }\n\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\tsetLock( {\n\t\t\t\t\t\t\t\tmove: newValue,\n\t\t\t\t\t\t\t\tremove: newValue,\n\t\t\t\t\t\t\t\t...( isReusable ? { edit: newValue } : {} ),\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ul className=\"block-editor-block-lock-modal__checklist\">\n\t\t\t\t\t\t{ isReusable && (\n\t\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Restrict editing' ) }\n\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\t\tlock.edit\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tchecked={ !! lock.edit }\n\t\t\t\t\t\t\t\t\tonChange={ ( edit ) =>\n\t\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\t\tedit,\n\t\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Disable movement' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.move\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.move }\n\t\t\t\t\t\t\t\tonChange={ ( move ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tmove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Prevent removal' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.remove\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.remove }\n\t\t\t\t\t\t\t\tonChange={ ( remove ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tremove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/modal.js"],"names":["BlockLockModal","clientId","onClose","lock","setLock","move","remove","canMove","canRemove","updateBlockAttributes","blockEditorStore","blockInformation","instanceId","isAllChecked","Object","values","every","Boolean","isMixed","some","title","event","preventDefault","newValue","lockIcon","unlockIcon","prevLock"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useEffect, useState } from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n} from '@wordpress/components';\nimport { lock as lockIcon, unlock as unlockIcon } from '@wordpress/icons';\nimport { useInstanceId } from '@wordpress/compose';\nimport { useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockLockModal( { clientId, onClose } ) {\n\tconst [ lock, setLock ] = useState( { move: false, remove: false } );\n\tconst { canMove, canRemove } = useBlockLock( clientId );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst instanceId = useInstanceId(\n\t\tBlockLockModal,\n\t\t'block-editor-block-lock-modal__options-title'\n\t);\n\n\tuseEffect( () => {\n\t\tsetLock( {\n\t\t\tmove: ! canMove,\n\t\t\tremove: ! canRemove,\n\t\t} );\n\t}, [ canMove, canRemove ] );\n\n\tconst isAllChecked = Object.values( lock ).every( Boolean );\n\tconst isMixed = Object.values( lock ).some( Boolean ) && ! isAllChecked;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ sprintf(\n\t\t\t\t/* translators: %s: Name of the block. */\n\t\t\t\t__( 'Lock %s' ),\n\t\t\t\tblockInformation.title\n\t\t\t) }\n\t\t\toverlayClassName=\"block-editor-block-lock-modal\"\n\t\t\tcloseLabel={ __( 'Close' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( event ) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tupdateBlockAttributes( [ clientId ], { lock } );\n\t\t\t\t\tonClose();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<p>\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'Choose specific attributes to restrict or lock all available options.'\n\t\t\t\t\t) }\n\t\t\t\t</p>\n\t\t\t\t<div\n\t\t\t\t\trole=\"group\"\n\t\t\t\t\taria-labelledby={ instanceId }\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options\"\n\t\t\t\t>\n\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\tclassName=\"block-editor-block-lock-modal__options-title\"\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t<span id={ instanceId }>{ __( 'Lock all' ) }</span>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchecked={ isAllChecked }\n\t\t\t\t\t\tindeterminate={ isMixed }\n\t\t\t\t\t\tonChange={ ( newValue ) =>\n\t\t\t\t\t\t\tsetLock( {\n\t\t\t\t\t\t\t\tmove: newValue,\n\t\t\t\t\t\t\t\tremove: newValue,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ul className=\"block-editor-block-lock-modal__checklist\">\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Disable movement' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.move\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.move }\n\t\t\t\t\t\t\t\tonChange={ ( move ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tmove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li className=\"block-editor-block-lock-modal__checklist-item\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Prevent removal' ) }\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tlock.remove\n\t\t\t\t\t\t\t\t\t\t\t\t\t? lockIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t: unlockIcon\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchecked={ lock.remove }\n\t\t\t\t\t\t\t\tonChange={ ( remove ) =>\n\t\t\t\t\t\t\t\t\tsetLock( ( prevLock ) => ( {\n\t\t\t\t\t\t\t\t\t\t...prevLock,\n\t\t\t\t\t\t\t\t\t\tremove,\n\t\t\t\t\t\t\t\t\t} ) )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-lock-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"tertiary\" onClick={ onClose }>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button variant=\"primary\" type=\"submit\">\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"]}
|
|
@@ -34,7 +34,6 @@ function BlockLockToolbar(_ref) {
|
|
|
34
34
|
} = _ref;
|
|
35
35
|
const blockInformation = (0, _useBlockDisplayInformation.default)(clientId);
|
|
36
36
|
const {
|
|
37
|
-
canEdit,
|
|
38
37
|
canMove,
|
|
39
38
|
canRemove,
|
|
40
39
|
canLock
|
|
@@ -45,7 +44,7 @@ function BlockLockToolbar(_ref) {
|
|
|
45
44
|
return null;
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
if (
|
|
47
|
+
if (canMove && canRemove) {
|
|
49
48
|
return null;
|
|
50
49
|
}
|
|
51
50
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/toolbar.js"],"names":["BlockLockToolbar","clientId","blockInformation","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/toolbar.js"],"names":["BlockLockToolbar","clientId","blockInformation","canMove","canRemove","canLock","isModalOpen","toggleModal","isActive","lock","title"],"mappings":";;;;;;;;;AAKA;;AAFA;;AACA;;AAEA;;AAKA;;AACA;;AACA;;AAbA;AACA;AACA;;AAMA;AACA;AACA;AAKe,SAASA,gBAAT,OAA0C;AAAA,MAAf;AAAEC,IAAAA;AAAF,GAAe;AACxD,QAAMC,gBAAgB,GAAG,yCAA4BD,QAA5B,CAAzB;AACA,QAAM;AAAEE,IAAAA,OAAF;AAAWC,IAAAA,SAAX;AAAsBC,IAAAA;AAAtB,MAAkC,2BAAcJ,QAAd,CAAxC;AAEA,QAAM,CAAEK,WAAF,EAAeC,WAAf,IAA+B,yBAClCC,QAAF,IAAgB,CAAEA,QADkB,EAEpC,KAFoC,CAArC;;AAKA,MAAK,CAAEH,OAAP,EAAiB;AAChB,WAAO,IAAP;AACA;;AAED,MAAKF,OAAO,IAAIC,SAAhB,EAA4B;AAC3B,WAAO,IAAP;AACA;;AAED,SACC,qDACC,4BAAC,wBAAD;AAAc,IAAA,SAAS,EAAC;AAAxB,KACC,4BAAC,yBAAD;AACC,IAAA,IAAI,EAAGK,WADR;AAEC,IAAA,KAAK,EAAG;AACP;AACA,kBAAI,WAAJ,CAFO,EAGPP,gBAAgB,CAACQ,KAHV,CAFT;AAOC,IAAA,OAAO,EAAGH;AAPX,IADD,CADD,EAYGD,WAAW,IACZ,4BAAC,cAAD;AAAgB,IAAA,QAAQ,EAAGL,QAA3B;AAAsC,IAAA,OAAO,EAAGM;AAAhD,IAbF,CADD;AAkBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport { ToolbarButton, ToolbarGroup } from '@wordpress/components';\nimport { useReducer } from '@wordpress/element';\nimport { lock } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockLockModal from './modal';\nimport useBlockLock from './use-block-lock';\nimport useBlockDisplayInformation from '../use-block-display-information';\n\nexport default function BlockLockToolbar( { clientId } ) {\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\tconst { canMove, canRemove, canLock } = useBlockLock( clientId );\n\n\tconst [ isModalOpen, toggleModal ] = useReducer(\n\t\t( isActive ) => ! isActive,\n\t\tfalse\n\t);\n\n\tif ( ! canLock ) {\n\t\treturn null;\n\t}\n\n\tif ( canMove && canRemove ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ToolbarGroup className=\"block-editor-block-lock-toolbar\">\n\t\t\t\t<ToolbarButton\n\t\t\t\t\ticon={ lock }\n\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t/* translators: %s: block name */\n\t\t\t\t\t\t__( 'Unlock %s' ),\n\t\t\t\t\t\tblockInformation.title\n\t\t\t\t\t) }\n\t\t\t\t\tonClick={ toggleModal }\n\t\t\t\t/>\n\t\t\t</ToolbarGroup>\n\t\t\t{ isModalOpen && (\n\t\t\t\t<BlockLockModal clientId={ clientId } onClose={ toggleModal } />\n\t\t\t) }\n\t\t</>\n\t);\n}\n"]}
|
|
@@ -20,34 +20,28 @@ var _store = require("../../store");
|
|
|
20
20
|
/**
|
|
21
21
|
* Return details about the block lock status.
|
|
22
22
|
*
|
|
23
|
-
* @param {string}
|
|
24
|
-
* @param {boolean} checkParent Optional. The status is derived from the parent `templateLock`
|
|
25
|
-
* when the current block's lock state isn't defined.
|
|
23
|
+
* @param {string} clientId The block client Id.
|
|
26
24
|
*
|
|
27
25
|
* @return {Object} Block lock status
|
|
28
26
|
*/
|
|
29
27
|
function useBlockLock(clientId) {
|
|
30
|
-
let checkParent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
31
28
|
return (0, _data.useSelect)(select => {
|
|
32
29
|
const {
|
|
33
|
-
canEditBlock,
|
|
34
30
|
canMoveBlock,
|
|
35
31
|
canRemoveBlock,
|
|
36
32
|
canLockBlockType,
|
|
37
33
|
getBlockName,
|
|
38
34
|
getBlockRootClientId
|
|
39
35
|
} = select(_store.store);
|
|
40
|
-
const rootClientId =
|
|
41
|
-
const canEdit = canEditBlock(clientId);
|
|
36
|
+
const rootClientId = getBlockRootClientId(clientId);
|
|
42
37
|
const canMove = canMoveBlock(clientId, rootClientId);
|
|
43
38
|
const canRemove = canRemoveBlock(clientId, rootClientId);
|
|
44
39
|
return {
|
|
45
|
-
canEdit,
|
|
46
40
|
canMove,
|
|
47
41
|
canRemove,
|
|
48
42
|
canLock: canLockBlockType(getBlockName(clientId)),
|
|
49
|
-
isLocked: !
|
|
43
|
+
isLocked: !canMove || !canRemove
|
|
50
44
|
};
|
|
51
|
-
}, [clientId
|
|
45
|
+
}, [clientId]);
|
|
52
46
|
}
|
|
53
47
|
//# sourceMappingURL=use-block-lock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/use-block-lock.js"],"names":["useBlockLock","clientId","
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/block-lock/use-block-lock.js"],"names":["useBlockLock","clientId","select","canMoveBlock","canRemoveBlock","canLockBlockType","getBlockName","getBlockRootClientId","blockEditorStore","rootClientId","canMove","canRemove","canLock","isLocked"],"mappings":";;;;;;;AAGA;;AAKA;;AARA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAASA,YAAT,CAAuBC,QAAvB,EAAkC;AAChD,SAAO,qBACJC,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,YADK;AAELC,MAAAA,cAFK;AAGLC,MAAAA,gBAHK;AAILC,MAAAA,YAJK;AAKLC,MAAAA;AALK,QAMFL,MAAM,CAAEM,YAAF,CANV;AAOA,UAAMC,YAAY,GAAGF,oBAAoB,CAAEN,QAAF,CAAzC;AAEA,UAAMS,OAAO,GAAGP,YAAY,CAAEF,QAAF,EAAYQ,YAAZ,CAA5B;AACA,UAAME,SAAS,GAAGP,cAAc,CAAEH,QAAF,EAAYQ,YAAZ,CAAhC;AAEA,WAAO;AACNC,MAAAA,OADM;AAENC,MAAAA,SAFM;AAGNC,MAAAA,OAAO,EAAEP,gBAAgB,CAAEC,YAAY,CAAEL,QAAF,CAAd,CAHnB;AAINY,MAAAA,QAAQ,EAAE,CAAEH,OAAF,IAAa,CAAEC;AAJnB,KAAP;AAMA,GApBK,EAqBN,CAAEV,QAAF,CArBM,CAAP;AAuBA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Return details about the block lock status.\n *\n * @param {string} clientId The block client Id.\n *\n * @return {Object} Block lock status\n */\nexport default function useBlockLock( clientId ) {\n\treturn useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tcanMoveBlock,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanLockBlockType,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\tconst canMove = canMoveBlock( clientId, rootClientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId, rootClientId );\n\n\t\t\treturn {\n\t\t\t\tcanMove,\n\t\t\t\tcanRemove,\n\t\t\t\tcanLock: canLockBlockType( getBlockName( clientId ) ),\n\t\t\t\tisLocked: ! canMove || ! canRemove,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n}\n"]}
|
|
@@ -70,12 +70,18 @@ function useClipboardHandler() {
|
|
|
70
70
|
getBlocksByClientId,
|
|
71
71
|
getSelectedBlockClientIds,
|
|
72
72
|
hasMultiSelection,
|
|
73
|
-
getSettings
|
|
73
|
+
getSettings,
|
|
74
|
+
__unstableIsFullySelected,
|
|
75
|
+
__unstableIsSelectionCollapsed,
|
|
76
|
+
__unstableIsSelectionMergeable,
|
|
77
|
+
__unstableGetSelectedBlocksWithPartialSelection
|
|
74
78
|
} = (0, _data.useSelect)(_store.store);
|
|
75
79
|
const {
|
|
76
80
|
flashBlock,
|
|
77
81
|
removeBlocks,
|
|
78
|
-
replaceBlocks
|
|
82
|
+
replaceBlocks,
|
|
83
|
+
__unstableDeleteSelection,
|
|
84
|
+
__unstableExpandSelection
|
|
79
85
|
} = (0, _data.useDispatch)(_store.store);
|
|
80
86
|
const notifyCopy = useNotifyCopy();
|
|
81
87
|
return (0, _compose.useRefEffect)(node => {
|
|
@@ -110,20 +116,49 @@ function useClipboardHandler() {
|
|
|
110
116
|
const eventDefaultPrevented = event.defaultPrevented;
|
|
111
117
|
event.preventDefault();
|
|
112
118
|
|
|
119
|
+
const isSelectionMergeable = __unstableIsSelectionMergeable();
|
|
120
|
+
|
|
121
|
+
const shouldHandleWholeBlocks = __unstableIsSelectionCollapsed() || __unstableIsFullySelected();
|
|
122
|
+
|
|
123
|
+
const expandSelectionIsNeeded = !shouldHandleWholeBlocks && !isSelectionMergeable;
|
|
124
|
+
|
|
113
125
|
if (event.type === 'copy' || event.type === 'cut') {
|
|
114
126
|
if (selectedBlockClientIds.length === 1) {
|
|
115
127
|
flashBlock(selectedBlockClientIds[0]);
|
|
116
|
-
}
|
|
128
|
+
} // If we have a partial selection that is not mergeable, just
|
|
129
|
+
// expand the selection to the whole blocks.
|
|
130
|
+
|
|
117
131
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
132
|
+
if (expandSelectionIsNeeded) {
|
|
133
|
+
__unstableExpandSelection();
|
|
134
|
+
} else {
|
|
135
|
+
notifyCopy(event.type, selectedBlockClientIds);
|
|
136
|
+
let blocks; // Check if we have partial selection.
|
|
137
|
+
|
|
138
|
+
if (shouldHandleWholeBlocks) {
|
|
139
|
+
blocks = getBlocksByClientId(selectedBlockClientIds);
|
|
140
|
+
} else {
|
|
141
|
+
const [head, tail] = __unstableGetSelectedBlocksWithPartialSelection();
|
|
142
|
+
|
|
143
|
+
const inBetweenBlocks = getBlocksByClientId(selectedBlockClientIds.slice(1, selectedBlockClientIds.length - 1));
|
|
144
|
+
blocks = [head, ...inBetweenBlocks, tail];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const serialized = (0, _blocks.serialize)(blocks);
|
|
148
|
+
event.clipboardData.setData('text/plain', serialized);
|
|
149
|
+
event.clipboardData.setData('text/html', serialized);
|
|
150
|
+
}
|
|
123
151
|
}
|
|
124
152
|
|
|
125
153
|
if (event.type === 'cut') {
|
|
126
|
-
|
|
154
|
+
// We need to also check if at the start we needed to
|
|
155
|
+
// expand the selection, as in this point we might have
|
|
156
|
+
// programmatically fully selected the blocks above.
|
|
157
|
+
if (shouldHandleWholeBlocks && !expandSelectionIsNeeded) {
|
|
158
|
+
removeBlocks(selectedBlockClientIds);
|
|
159
|
+
} else {
|
|
160
|
+
__unstableDeleteSelection();
|
|
161
|
+
}
|
|
127
162
|
} else if (event.type === 'paste') {
|
|
128
163
|
if (eventDefaultPrevented) {
|
|
129
164
|
// This was likely already handled in rich-text/use-paste-handler.js.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/block-editor/src/components/copy-handler/index.js"],"names":["useNotifyCopy","getBlockName","blockEditorStore","getBlockType","blocksStore","createSuccessNotice","noticesStore","eventType","selectedBlockClientIds","notice","length","clientId","title","type","useClipboardHandler","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","flashBlock","removeBlocks","replaceBlocks","notifyCopy","node","handler","event","target","ownerDocument","hasSelection","contains","activeElement","eventDefaultPrevented","defaultPrevented","preventDefault","blocks","serialized","clipboardData","setData","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","plainText","html","HTML","mode","addEventListener","removeEventListener","CopyHandler","children"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport {\n\tserialize,\n\tpasteHandler,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n} from '@wordpress/dom';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getPasteEventData } from '../../utils/pasting';\nimport { store as blockEditorStore } from '../../store';\n\nexport function useNotifyCopy() {\n\tconst { getBlockName } = useSelect( blockEditorStore );\n\tconst { getBlockType } = useSelect( blocksStore );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\treturn useCallback( ( eventType, selectedBlockClientIds ) => {\n\t\tlet notice = '';\n\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\tconst clientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst title = getBlockType( getBlockName( clientId ) )?.title;\n\t\t\tnotice =\n\t\t\t\teventType === 'copy'\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// Translators: Name of the block being copied, e.g. \"Paragraph\".\n\t\t\t\t\t\t\t__( 'Copied \"%s\" to clipboard.' ),\n\t\t\t\t\t\t\ttitle\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// Translators: Name of the block being cut, e.g. \"Paragraph\".\n\t\t\t\t\t\t\t__( 'Moved \"%s\" to clipboard.' ),\n\t\t\t\t\t\t\ttitle\n\t\t\t\t\t );\n\t\t} else {\n\t\t\tnotice =\n\t\t\t\teventType === 'copy'\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// Translators: %d: Number of blocks being copied.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Copied %d block to clipboard.',\n\t\t\t\t\t\t\t\t'Copied %d blocks to clipboard.',\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// Translators: %d: Number of blocks being cut.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Moved %d block to clipboard.',\n\t\t\t\t\t\t\t\t'Moved %d blocks to clipboard.',\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t );\n\t\t}\n\t\tcreateSuccessNotice( notice, {\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}, [] );\n}\n\nexport function useClipboardHandler() {\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t} = useSelect( blockEditorStore );\n\tconst { flashBlock, removeBlocks, replaceBlocks } = useDispatch(\n\t\tblockEditorStore\n\t);\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument );\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst eventDefaultPrevented = event.defaultPrevented;\n\t\t\tevent.preventDefault();\n\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\tconst blocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\tconst serialized = serialize( blocks );\n\n\t\t\t\tevent.clipboardData.setData( 'text/plain', serialized );\n\t\t\t\tevent.clipboardData.setData( 'text/html', serialized );\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tif ( eventDefaultPrevented ) {\n\t\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML: canUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst { plainText, html } = getPasteEventData( event );\n\t\t\t\tconst blocks = pasteHandler( {\n\t\t\t\t\tHTML: html,\n\t\t\t\t\tplainText,\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} );\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n\nfunction CopyHandler( { children } ) {\n\treturn <div ref={ useClipboardHandler() }>{ children }</div>;\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/copy-handler/README.md\n */\nexport default CopyHandler;\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/block-editor/src/components/copy-handler/index.js"],"names":["useNotifyCopy","getBlockName","blockEditorStore","getBlockType","blocksStore","createSuccessNotice","noticesStore","eventType","selectedBlockClientIds","notice","length","clientId","title","type","useClipboardHandler","getBlocksByClientId","getSelectedBlockClientIds","hasMultiSelection","getSettings","__unstableIsFullySelected","__unstableIsSelectionCollapsed","__unstableIsSelectionMergeable","__unstableGetSelectedBlocksWithPartialSelection","flashBlock","removeBlocks","replaceBlocks","__unstableDeleteSelection","__unstableExpandSelection","notifyCopy","node","handler","event","target","ownerDocument","hasSelection","contains","activeElement","eventDefaultPrevented","defaultPrevented","preventDefault","isSelectionMergeable","shouldHandleWholeBlocks","expandSelectionIsNeeded","blocks","head","tail","inBetweenBlocks","slice","serialized","clipboardData","setData","__experimentalCanUserUseUnfilteredHTML","canUserUseUnfilteredHTML","plainText","html","HTML","mode","addEventListener","removeEventListener","CopyHandler","children"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\nimport {\n\tserialize,\n\tpasteHandler,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\tdocumentHasSelection,\n\tdocumentHasUncollapsedSelection,\n} from '@wordpress/dom';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useRefEffect } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getPasteEventData } from '../../utils/pasting';\nimport { store as blockEditorStore } from '../../store';\n\nexport function useNotifyCopy() {\n\tconst { getBlockName } = useSelect( blockEditorStore );\n\tconst { getBlockType } = useSelect( blocksStore );\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\n\treturn useCallback( ( eventType, selectedBlockClientIds ) => {\n\t\tlet notice = '';\n\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\tconst clientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst title = getBlockType( getBlockName( clientId ) )?.title;\n\t\t\tnotice =\n\t\t\t\teventType === 'copy'\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// Translators: Name of the block being copied, e.g. \"Paragraph\".\n\t\t\t\t\t\t\t__( 'Copied \"%s\" to clipboard.' ),\n\t\t\t\t\t\t\ttitle\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// Translators: Name of the block being cut, e.g. \"Paragraph\".\n\t\t\t\t\t\t\t__( 'Moved \"%s\" to clipboard.' ),\n\t\t\t\t\t\t\ttitle\n\t\t\t\t\t );\n\t\t} else {\n\t\t\tnotice =\n\t\t\t\teventType === 'copy'\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t// Translators: %d: Number of blocks being copied.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Copied %d block to clipboard.',\n\t\t\t\t\t\t\t\t'Copied %d blocks to clipboard.',\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t )\n\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t// Translators: %d: Number of blocks being cut.\n\t\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t\t'Moved %d block to clipboard.',\n\t\t\t\t\t\t\t\t'Moved %d blocks to clipboard.',\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tselectedBlockClientIds.length\n\t\t\t\t\t );\n\t\t}\n\t\tcreateSuccessNotice( notice, {\n\t\t\ttype: 'snackbar',\n\t\t} );\n\t}, [] );\n}\n\nexport function useClipboardHandler() {\n\tconst {\n\t\tgetBlocksByClientId,\n\t\tgetSelectedBlockClientIds,\n\t\thasMultiSelection,\n\t\tgetSettings,\n\t\t__unstableIsFullySelected,\n\t\t__unstableIsSelectionCollapsed,\n\t\t__unstableIsSelectionMergeable,\n\t\t__unstableGetSelectedBlocksWithPartialSelection,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tflashBlock,\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\t__unstableDeleteSelection,\n\t\t__unstableExpandSelection,\n\t} = useDispatch( blockEditorStore );\n\tconst notifyCopy = useNotifyCopy();\n\n\treturn useRefEffect( ( node ) => {\n\t\tfunction handler( event ) {\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\t\tif ( selectedBlockClientIds.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Always handle multiple selected blocks.\n\t\t\tif ( ! hasMultiSelection() ) {\n\t\t\t\tconst { target } = event;\n\t\t\t\tconst { ownerDocument } = target;\n\t\t\t\t// If copying, only consider actual text selection as selection.\n\t\t\t\t// Otherwise, any focus on an input field is considered.\n\t\t\t\tconst hasSelection =\n\t\t\t\t\tevent.type === 'copy' || event.type === 'cut'\n\t\t\t\t\t\t? documentHasUncollapsedSelection( ownerDocument )\n\t\t\t\t\t\t: documentHasSelection( ownerDocument );\n\n\t\t\t\t// Let native copy behaviour take over in input fields.\n\t\t\t\tif ( hasSelection ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! node.contains( event.target.ownerDocument.activeElement ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst eventDefaultPrevented = event.defaultPrevented;\n\t\t\tevent.preventDefault();\n\n\t\t\tconst isSelectionMergeable = __unstableIsSelectionMergeable();\n\t\t\tconst shouldHandleWholeBlocks =\n\t\t\t\t__unstableIsSelectionCollapsed() || __unstableIsFullySelected();\n\t\t\tconst expandSelectionIsNeeded =\n\t\t\t\t! shouldHandleWholeBlocks && ! isSelectionMergeable;\n\t\t\tif ( event.type === 'copy' || event.type === 'cut' ) {\n\t\t\t\tif ( selectedBlockClientIds.length === 1 ) {\n\t\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t\t}\n\t\t\t\t// If we have a partial selection that is not mergeable, just\n\t\t\t\t// expand the selection to the whole blocks.\n\t\t\t\tif ( expandSelectionIsNeeded ) {\n\t\t\t\t\t__unstableExpandSelection();\n\t\t\t\t} else {\n\t\t\t\t\tnotifyCopy( event.type, selectedBlockClientIds );\n\t\t\t\t\tlet blocks;\n\t\t\t\t\t// Check if we have partial selection.\n\t\t\t\t\tif ( shouldHandleWholeBlocks ) {\n\t\t\t\t\t\tblocks = getBlocksByClientId( selectedBlockClientIds );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [\n\t\t\t\t\t\t\thead,\n\t\t\t\t\t\t\ttail,\n\t\t\t\t\t\t] = __unstableGetSelectedBlocksWithPartialSelection();\n\t\t\t\t\t\tconst inBetweenBlocks = getBlocksByClientId(\n\t\t\t\t\t\t\tselectedBlockClientIds.slice(\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\tselectedBlockClientIds.length - 1\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t\tblocks = [ head, ...inBetweenBlocks, tail ];\n\t\t\t\t\t}\n\t\t\t\t\tconst serialized = serialize( blocks );\n\n\t\t\t\t\tevent.clipboardData.setData( 'text/plain', serialized );\n\t\t\t\t\tevent.clipboardData.setData( 'text/html', serialized );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( event.type === 'cut' ) {\n\t\t\t\t// We need to also check if at the start we needed to\n\t\t\t\t// expand the selection, as in this point we might have\n\t\t\t\t// programmatically fully selected the blocks above.\n\t\t\t\tif ( shouldHandleWholeBlocks && ! expandSelectionIsNeeded ) {\n\t\t\t\t\tremoveBlocks( selectedBlockClientIds );\n\t\t\t\t} else {\n\t\t\t\t\t__unstableDeleteSelection();\n\t\t\t\t}\n\t\t\t} else if ( event.type === 'paste' ) {\n\t\t\t\tif ( eventDefaultPrevented ) {\n\t\t\t\t\t// This was likely already handled in rich-text/use-paste-handler.js.\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst {\n\t\t\t\t\t__experimentalCanUserUseUnfilteredHTML: canUserUseUnfilteredHTML,\n\t\t\t\t} = getSettings();\n\t\t\t\tconst { plainText, html } = getPasteEventData( event );\n\t\t\t\tconst blocks = pasteHandler( {\n\t\t\t\t\tHTML: html,\n\t\t\t\t\tplainText,\n\t\t\t\t\tmode: 'BLOCKS',\n\t\t\t\t\tcanUserUseUnfilteredHTML,\n\t\t\t\t} );\n\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlockClientIds,\n\t\t\t\t\tblocks,\n\t\t\t\t\tblocks.length - 1,\n\t\t\t\t\t-1\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tnode.ownerDocument.addEventListener( 'copy', handler );\n\t\tnode.ownerDocument.addEventListener( 'cut', handler );\n\t\tnode.ownerDocument.addEventListener( 'paste', handler );\n\n\t\treturn () => {\n\t\t\tnode.ownerDocument.removeEventListener( 'copy', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'cut', handler );\n\t\t\tnode.ownerDocument.removeEventListener( 'paste', handler );\n\t\t};\n\t}, [] );\n}\n\nfunction CopyHandler( { children } ) {\n\treturn <div ref={ useClipboardHandler() }>{ children }</div>;\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/copy-handler/README.md\n */\nexport default CopyHandler;\n"]}
|
|
@@ -53,13 +53,16 @@ const defaultRenderToggle = _ref => {
|
|
|
53
53
|
isOpen,
|
|
54
54
|
blockTitle,
|
|
55
55
|
hasSingleBlockType,
|
|
56
|
-
toggleProps = {}
|
|
56
|
+
toggleProps = {},
|
|
57
|
+
prioritizePatterns
|
|
57
58
|
} = _ref;
|
|
58
59
|
let label;
|
|
59
60
|
|
|
60
61
|
if (hasSingleBlockType) {
|
|
61
62
|
label = (0, _i18n.sprintf)( // translators: %s: the name of the block when there is only one
|
|
62
63
|
(0, _i18n._x)('Add %s', 'directly add the only allowed block'), blockTitle);
|
|
64
|
+
} else if (prioritizePatterns) {
|
|
65
|
+
label = (0, _i18n.__)('Add pattern');
|
|
63
66
|
} else {
|
|
64
67
|
label = (0, _i18n._x)('Add block', 'Generic label for block inserter button');
|
|
65
68
|
}
|
|
@@ -132,7 +135,8 @@ class Inserter extends _element.Component {
|
|
|
132
135
|
directInsertBlock,
|
|
133
136
|
toggleProps,
|
|
134
137
|
hasItems,
|
|
135
|
-
renderToggle = defaultRenderToggle
|
|
138
|
+
renderToggle = defaultRenderToggle,
|
|
139
|
+
prioritizePatterns
|
|
136
140
|
} = this.props;
|
|
137
141
|
return renderToggle({
|
|
138
142
|
onToggle,
|
|
@@ -141,7 +145,8 @@ class Inserter extends _element.Component {
|
|
|
141
145
|
blockTitle,
|
|
142
146
|
hasSingleBlockType,
|
|
143
147
|
directInsertBlock,
|
|
144
|
-
toggleProps
|
|
148
|
+
toggleProps,
|
|
149
|
+
prioritizePatterns
|
|
145
150
|
});
|
|
146
151
|
}
|
|
147
152
|
/**
|
|
@@ -166,7 +171,8 @@ class Inserter extends _element.Component {
|
|
|
166
171
|
showInserterHelpPanel,
|
|
167
172
|
// This prop is experimental to give some time for the quick inserter to mature
|
|
168
173
|
// Feel free to make them stable after a few releases.
|
|
169
|
-
__experimentalIsQuick: isQuick
|
|
174
|
+
__experimentalIsQuick: isQuick,
|
|
175
|
+
prioritizePatterns
|
|
170
176
|
} = this.props;
|
|
171
177
|
|
|
172
178
|
if (isQuick) {
|
|
@@ -176,7 +182,8 @@ class Inserter extends _element.Component {
|
|
|
176
182
|
},
|
|
177
183
|
rootClientId: rootClientId,
|
|
178
184
|
clientId: clientId,
|
|
179
|
-
isAppender: isAppender
|
|
185
|
+
isAppender: isAppender,
|
|
186
|
+
prioritizePatterns: prioritizePatterns
|
|
180
187
|
});
|
|
181
188
|
}
|
|
182
189
|
|
|
@@ -233,7 +240,10 @@ var _default = (0, _compose.compose)([(0, _data.withSelect)((select, _ref4) => {
|
|
|
233
240
|
getBlockRootClientId,
|
|
234
241
|
hasInserterItems,
|
|
235
242
|
__experimentalGetAllowedBlocks,
|
|
236
|
-
__experimentalGetDirectInsertBlock
|
|
243
|
+
__experimentalGetDirectInsertBlock,
|
|
244
|
+
getBlockIndex,
|
|
245
|
+
getBlockCount,
|
|
246
|
+
getSettings
|
|
237
247
|
} = select(_store.store);
|
|
238
248
|
const {
|
|
239
249
|
getBlockVariations
|
|
@@ -244,6 +254,9 @@ var _default = (0, _compose.compose)([(0, _data.withSelect)((select, _ref4) => {
|
|
|
244
254
|
|
|
245
255
|
const directInsertBlock = __experimentalGetDirectInsertBlock(rootClientId);
|
|
246
256
|
|
|
257
|
+
const index = getBlockIndex(clientId);
|
|
258
|
+
const blockCount = getBlockCount();
|
|
259
|
+
const settings = getSettings();
|
|
247
260
|
const hasSingleBlockType = (0, _lodash.size)(allowedBlocks) === 1 && (0, _lodash.size)(getBlockVariations(allowedBlocks[0].name, 'inserter')) === 0;
|
|
248
261
|
let allowedBlockType = false;
|
|
249
262
|
|
|
@@ -257,7 +270,8 @@ var _default = (0, _compose.compose)([(0, _data.withSelect)((select, _ref4) => {
|
|
|
257
270
|
blockTitle: allowedBlockType ? allowedBlockType.title : '',
|
|
258
271
|
allowedBlockType,
|
|
259
272
|
directInsertBlock,
|
|
260
|
-
rootClientId
|
|
273
|
+
rootClientId,
|
|
274
|
+
prioritizePatterns: settings.__experimentalPreferPatternsOnRoot && !rootClientId && index > 0 && (index < blockCount || blockCount === 0)
|
|
261
275
|
};
|
|
262
276
|
}), (0, _data.withDispatch)((dispatch, ownProps, _ref5) => {
|
|
263
277
|
let {
|