@wordpress/block-editor 12.10.9 → 12.10.11

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.
Files changed (60) hide show
  1. package/build/components/block-rename/index.js +28 -0
  2. package/build/components/block-rename/index.js.map +1 -0
  3. package/build/components/block-rename/is-empty-string.js +10 -0
  4. package/build/components/block-rename/is-empty-string.js.map +1 -0
  5. package/build/components/block-rename/modal.js +86 -0
  6. package/build/components/block-rename/modal.js.map +1 -0
  7. package/build/components/block-rename/rename-control.js +73 -0
  8. package/build/components/block-rename/rename-control.js.map +1 -0
  9. package/build/components/block-rename/use-block-rename.js +19 -0
  10. package/build/components/block-rename/use-block-rename.js.map +1 -0
  11. package/build/components/block-settings-menu-controls/index.js +7 -0
  12. package/build/components/block-settings-menu-controls/index.js.map +1 -1
  13. package/build/components/global-styles/image-settings-panel.js +2 -2
  14. package/build/components/global-styles/image-settings-panel.js.map +1 -1
  15. package/build/components/use-block-commands/index.js +6 -1
  16. package/build/components/use-block-commands/index.js.map +1 -1
  17. package/build/hooks/block-rename.js +51 -0
  18. package/build/hooks/block-rename.js.map +1 -0
  19. package/build/hooks/index.js +1 -1
  20. package/build/hooks/index.js.map +1 -1
  21. package/build-module/components/block-rename/index.js +4 -0
  22. package/build-module/components/block-rename/index.js.map +1 -0
  23. package/build-module/components/block-rename/is-empty-string.js +4 -0
  24. package/build-module/components/block-rename/is-empty-string.js.map +1 -0
  25. package/build-module/components/block-rename/modal.js +79 -0
  26. package/build-module/components/block-rename/modal.js.map +1 -0
  27. package/build-module/components/block-rename/rename-control.js +66 -0
  28. package/build-module/components/block-rename/rename-control.js.map +1 -0
  29. package/build-module/components/block-rename/use-block-rename.js +12 -0
  30. package/build-module/components/block-rename/use-block-rename.js.map +1 -0
  31. package/build-module/components/block-settings-menu-controls/index.js +7 -0
  32. package/build-module/components/block-settings-menu-controls/index.js.map +1 -1
  33. package/build-module/components/global-styles/image-settings-panel.js +2 -2
  34. package/build-module/components/global-styles/image-settings-panel.js.map +1 -1
  35. package/build-module/components/use-block-commands/index.js +5 -1
  36. package/build-module/components/use-block-commands/index.js.map +1 -1
  37. package/build-module/hooks/block-rename.js +43 -0
  38. package/build-module/hooks/block-rename.js.map +1 -0
  39. package/build-module/hooks/index.js +1 -1
  40. package/build-module/hooks/index.js.map +1 -1
  41. package/build-style/style-rtl.css +4 -4
  42. package/build-style/style.css +4 -4
  43. package/package.json +32 -32
  44. package/src/components/block-rename/index.js +3 -0
  45. package/src/components/block-rename/is-empty-string.js +3 -0
  46. package/src/components/block-rename/modal.js +115 -0
  47. package/src/components/block-rename/rename-control.js +80 -0
  48. package/src/components/block-rename/use-block-rename.js +20 -0
  49. package/src/components/block-settings-menu-controls/index.js +9 -0
  50. package/src/components/global-styles/image-settings-panel.js +2 -2
  51. package/src/components/use-block-commands/index.js +2 -1
  52. package/src/hooks/block-rename.js +52 -0
  53. package/src/hooks/index.js +1 -1
  54. package/src/style.scss +1 -1
  55. package/build/hooks/block-rename-ui.js +0 -164
  56. package/build/hooks/block-rename-ui.js.map +0 -1
  57. package/build-module/hooks/block-rename-ui.js +0 -157
  58. package/build-module/hooks/block-rename-ui.js.map +0 -1
  59. package/src/hooks/block-rename-ui.js +0 -235
  60. /package/src/{hooks/block-rename-ui.scss → components/block-rename/style.scss} +0 -0
@@ -0,0 +1,79 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __experimentalHStack as HStack, __experimentalVStack as VStack, Button, TextControl, Modal } from '@wordpress/components';
6
+ import { useInstanceId } from '@wordpress/compose';
7
+ import { __, sprintf } from '@wordpress/i18n';
8
+ import { useState } from '@wordpress/element';
9
+ import { speak } from '@wordpress/a11y';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import isEmptyString from './is-empty-string';
15
+ export default function BlockRenameModal({
16
+ blockName,
17
+ originalBlockName,
18
+ onClose,
19
+ onSave
20
+ }) {
21
+ const [editedBlockName, setEditedBlockName] = useState(blockName);
22
+ const nameHasChanged = editedBlockName !== blockName;
23
+ const nameIsOriginal = editedBlockName === originalBlockName;
24
+ const nameIsEmpty = isEmptyString(editedBlockName);
25
+ const isNameValid = nameHasChanged || nameIsOriginal;
26
+ const autoSelectInputText = event => event.target.select();
27
+ const dialogDescription = useInstanceId(BlockRenameModal, `block-editor-rename-modal__description`);
28
+ const handleSubmit = () => {
29
+ const message = nameIsOriginal || nameIsEmpty ? sprintf( /* translators: %s: new name/label for the block */
30
+ __('Block name reset to: "%s".'), editedBlockName) : sprintf( /* translators: %s: new name/label for the block */
31
+ __('Block name changed to: "%s".'), editedBlockName);
32
+
33
+ // Must be assertive to immediately announce change.
34
+ speak(message, 'assertive');
35
+ onSave(editedBlockName);
36
+
37
+ // Immediate close avoids ability to hit save multiple times.
38
+ onClose();
39
+ };
40
+ return createElement(Modal, {
41
+ title: __('Rename'),
42
+ onRequestClose: onClose,
43
+ overlayClassName: "block-editor-block-rename-modal",
44
+ aria: {
45
+ describedby: dialogDescription
46
+ },
47
+ focusOnMount: "firstContentElement"
48
+ }, createElement("p", {
49
+ id: dialogDescription
50
+ }, __('Enter a custom name for this block.')), createElement("form", {
51
+ onSubmit: e => {
52
+ e.preventDefault();
53
+ if (!isNameValid) {
54
+ return;
55
+ }
56
+ handleSubmit();
57
+ }
58
+ }, createElement(VStack, {
59
+ spacing: "3"
60
+ }, createElement(TextControl, {
61
+ __nextHasNoMarginBottom: true,
62
+ value: editedBlockName,
63
+ label: __('Block name'),
64
+ hideLabelFromVision: true,
65
+ placeholder: originalBlockName,
66
+ onChange: setEditedBlockName,
67
+ onFocus: autoSelectInputText
68
+ }), createElement(HStack, {
69
+ justify: "right"
70
+ }, createElement(Button, {
71
+ variant: "tertiary",
72
+ onClick: onClose
73
+ }, __('Cancel')), createElement(Button, {
74
+ "aria-disabled": !isNameValid,
75
+ variant: "primary",
76
+ type: "submit"
77
+ }, __('Save'))))));
78
+ }
79
+ //# sourceMappingURL=modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__experimentalHStack","HStack","__experimentalVStack","VStack","Button","TextControl","Modal","useInstanceId","__","sprintf","useState","speak","isEmptyString","BlockRenameModal","blockName","originalBlockName","onClose","onSave","editedBlockName","setEditedBlockName","nameHasChanged","nameIsOriginal","nameIsEmpty","isNameValid","autoSelectInputText","event","target","select","dialogDescription","handleSubmit","message","createElement","title","onRequestClose","overlayClassName","aria","describedby","focusOnMount","id","onSubmit","e","preventDefault","spacing","__nextHasNoMarginBottom","value","label","hideLabelFromVision","placeholder","onChange","onFocus","justify","variant","onClick","type"],"sources":["@wordpress/block-editor/src/components/block-rename/modal.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\tButton,\n\tTextControl,\n\tModal,\n} from '@wordpress/components';\nimport { useInstanceId } from '@wordpress/compose';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport isEmptyString from './is-empty-string';\n\nexport default function BlockRenameModal( {\n\tblockName,\n\toriginalBlockName,\n\tonClose,\n\tonSave,\n} ) {\n\tconst [ editedBlockName, setEditedBlockName ] = useState( blockName );\n\n\tconst nameHasChanged = editedBlockName !== blockName;\n\tconst nameIsOriginal = editedBlockName === originalBlockName;\n\tconst nameIsEmpty = isEmptyString( editedBlockName );\n\n\tconst isNameValid = nameHasChanged || nameIsOriginal;\n\n\tconst autoSelectInputText = ( event ) => event.target.select();\n\n\tconst dialogDescription = useInstanceId(\n\t\tBlockRenameModal,\n\t\t`block-editor-rename-modal__description`\n\t);\n\n\tconst handleSubmit = () => {\n\t\tconst message =\n\t\t\tnameIsOriginal || nameIsEmpty\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %s: new name/label for the block */\n\t\t\t\t\t\t__( 'Block name reset to: \"%s\".' ),\n\t\t\t\t\t\teditedBlockName\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: %s: new name/label for the block */\n\t\t\t\t\t\t__( 'Block name changed to: \"%s\".' ),\n\t\t\t\t\t\teditedBlockName\n\t\t\t\t );\n\n\t\t// Must be assertive to immediately announce change.\n\t\tspeak( message, 'assertive' );\n\t\tonSave( editedBlockName );\n\n\t\t// Immediate close avoids ability to hit save multiple times.\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ __( 'Rename' ) }\n\t\t\tonRequestClose={ onClose }\n\t\t\toverlayClassName=\"block-editor-block-rename-modal\"\n\t\t\taria={ {\n\t\t\t\tdescribedby: dialogDescription,\n\t\t\t} }\n\t\t\tfocusOnMount=\"firstContentElement\"\n\t\t>\n\t\t\t<p id={ dialogDescription }>\n\t\t\t\t{ __( 'Enter a custom name for this block.' ) }\n\t\t\t</p>\n\t\t\t<form\n\t\t\t\tonSubmit={ ( e ) => {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tif ( ! isNameValid ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\thandleSubmit();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<VStack spacing=\"3\">\n\t\t\t\t\t<TextControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tvalue={ editedBlockName }\n\t\t\t\t\t\tlabel={ __( 'Block name' ) }\n\t\t\t\t\t\thideLabelFromVision={ true }\n\t\t\t\t\t\tplaceholder={ originalBlockName }\n\t\t\t\t\t\tonChange={ setEditedBlockName }\n\t\t\t\t\t\tonFocus={ autoSelectInputText }\n\t\t\t\t\t/>\n\t\t\t\t\t<HStack justify=\"right\">\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\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\taria-disabled={ ! isNameValid }\n\t\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\t\ttype=\"submit\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</HStack>\n\t\t\t\t</VStack>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { createElement, Fragment } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { MenuItem } from '@wordpress/components';
6
+ import { useSelect, useDispatch } from '@wordpress/data';
7
+ import { __ } from '@wordpress/i18n';
8
+ import { useState } from '@wordpress/element';
9
+
10
+ /**
11
+ * Internal dependencies
12
+ */
13
+ import { store as blockEditorStore } from '../../store';
14
+ import { useBlockDisplayInformation } from '..';
15
+ import isEmptyString from './is-empty-string';
16
+ import BlockRenameModal from './modal';
17
+ export default function BlockRenameControl({
18
+ clientId
19
+ }) {
20
+ const [renamingBlock, setRenamingBlock] = useState(false);
21
+ const {
22
+ metadata
23
+ } = useSelect(select => {
24
+ const {
25
+ getBlockAttributes
26
+ } = select(blockEditorStore);
27
+ const _metadata = getBlockAttributes(clientId)?.metadata;
28
+ return {
29
+ metadata: _metadata
30
+ };
31
+ }, [clientId]);
32
+ const {
33
+ updateBlockAttributes
34
+ } = useDispatch(blockEditorStore);
35
+ const customName = metadata?.name;
36
+ function onChange(newName) {
37
+ updateBlockAttributes([clientId], {
38
+ metadata: {
39
+ ...(metadata && metadata),
40
+ name: newName
41
+ }
42
+ });
43
+ }
44
+ const blockInformation = useBlockDisplayInformation(clientId);
45
+ return createElement(Fragment, null, createElement(MenuItem, {
46
+ onClick: () => {
47
+ setRenamingBlock(true);
48
+ },
49
+ "aria-expanded": renamingBlock,
50
+ "aria-haspopup": "dialog"
51
+ }, __('Rename')), renamingBlock && createElement(BlockRenameModal, {
52
+ blockName: customName || '',
53
+ originalBlockName: blockInformation?.title,
54
+ onClose: () => setRenamingBlock(false),
55
+ onSave: newName => {
56
+ // If the new value is the block's original name (e.g. `Group`)
57
+ // or it is an empty string then assume the intent is to reset
58
+ // the value. Therefore reset the metadata.
59
+ if (newName === blockInformation?.title || isEmptyString(newName)) {
60
+ newName = undefined;
61
+ }
62
+ onChange(newName);
63
+ }
64
+ }));
65
+ }
66
+ //# sourceMappingURL=rename-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MenuItem","useSelect","useDispatch","__","useState","store","blockEditorStore","useBlockDisplayInformation","isEmptyString","BlockRenameModal","BlockRenameControl","clientId","renamingBlock","setRenamingBlock","metadata","select","getBlockAttributes","_metadata","updateBlockAttributes","customName","name","onChange","newName","blockInformation","createElement","Fragment","onClick","blockName","originalBlockName","title","onClose","onSave","undefined"],"sources":["@wordpress/block-editor/src/components/block-rename/rename-control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockDisplayInformation } from '..';\nimport isEmptyString from './is-empty-string';\nimport BlockRenameModal from './modal';\n\nexport default function BlockRenameControl( { clientId } ) {\n\tconst [ renamingBlock, setRenamingBlock ] = useState( false );\n\n\tconst { metadata } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes } = select( blockEditorStore );\n\n\t\t\tconst _metadata = getBlockAttributes( clientId )?.metadata;\n\t\t\treturn {\n\t\t\t\tmetadata: _metadata,\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst customName = metadata?.name;\n\n\tfunction onChange( newName ) {\n\t\tupdateBlockAttributes( [ clientId ], {\n\t\t\tmetadata: {\n\t\t\t\t...( metadata && metadata ),\n\t\t\t\tname: newName,\n\t\t\t},\n\t\t} );\n\t}\n\n\tconst blockInformation = useBlockDisplayInformation( clientId );\n\n\treturn (\n\t\t<>\n\t\t\t<MenuItem\n\t\t\t\tonClick={ () => {\n\t\t\t\t\tsetRenamingBlock( true );\n\t\t\t\t} }\n\t\t\t\taria-expanded={ renamingBlock }\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t>\n\t\t\t\t{ __( 'Rename' ) }\n\t\t\t</MenuItem>\n\t\t\t{ renamingBlock && (\n\t\t\t\t<BlockRenameModal\n\t\t\t\t\tblockName={ customName || '' }\n\t\t\t\t\toriginalBlockName={ blockInformation?.title }\n\t\t\t\t\tonClose={ () => setRenamingBlock( false ) }\n\t\t\t\t\tonSave={ ( newName ) => {\n\t\t\t\t\t\t// If the new value is the block's original name (e.g. `Group`)\n\t\t\t\t\t\t// or it is an empty string then assume the intent is to reset\n\t\t\t\t\t\t// the value. Therefore reset the metadata.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnewName === blockInformation?.title ||\n\t\t\t\t\t\t\tisEmptyString( newName )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tnewName = undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonChange( newName );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,QAAQ,QAAQ,oBAAoB;;AAE7C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,0BAA0B,QAAQ,IAAI;AAC/C,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAOC,gBAAgB,MAAM,SAAS;AAEtC,eAAe,SAASC,kBAAkBA,CAAE;EAAEC;AAAS,CAAC,EAAG;EAC1D,MAAM,CAAEC,aAAa,EAAEC,gBAAgB,CAAE,GAAGT,QAAQ,CAAE,KAAM,CAAC;EAE7D,MAAM;IAAEU;EAAS,CAAC,GAAGb,SAAS,CAC3Bc,MAAM,IAAM;IACb,MAAM;MAAEC;IAAmB,CAAC,GAAGD,MAAM,CAAET,gBAAiB,CAAC;IAEzD,MAAMW,SAAS,GAAGD,kBAAkB,CAAEL,QAAS,CAAC,EAAEG,QAAQ;IAC1D,OAAO;MACNA,QAAQ,EAAEG;IACX,CAAC;EACF,CAAC,EACD,CAAEN,QAAQ,CACX,CAAC;EAED,MAAM;IAAEO;EAAsB,CAAC,GAAGhB,WAAW,CAAEI,gBAAiB,CAAC;EAEjE,MAAMa,UAAU,GAAGL,QAAQ,EAAEM,IAAI;EAEjC,SAASC,QAAQA,CAAEC,OAAO,EAAG;IAC5BJ,qBAAqB,CAAE,CAAEP,QAAQ,CAAE,EAAE;MACpCG,QAAQ,EAAE;QACT,IAAKA,QAAQ,IAAIA,QAAQ,CAAE;QAC3BM,IAAI,EAAEE;MACP;IACD,CAAE,CAAC;EACJ;EAEA,MAAMC,gBAAgB,GAAGhB,0BAA0B,CAAEI,QAAS,CAAC;EAE/D,OACCa,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACxB,QAAQ;IACR0B,OAAO,EAAGA,CAAA,KAAM;MACfb,gBAAgB,CAAE,IAAK,CAAC;IACzB,CAAG;IACH,iBAAgBD,aAAe;IAC/B,iBAAc;EAAQ,GAEpBT,EAAE,CAAE,QAAS,CACN,CAAC,EACTS,aAAa,IACdY,aAAA,CAACf,gBAAgB;IAChBkB,SAAS,EAAGR,UAAU,IAAI,EAAI;IAC9BS,iBAAiB,EAAGL,gBAAgB,EAAEM,KAAO;IAC7CC,OAAO,EAAGA,CAAA,KAAMjB,gBAAgB,CAAE,KAAM,CAAG;IAC3CkB,MAAM,EAAKT,OAAO,IAAM;MACvB;MACA;MACA;MACA,IACCA,OAAO,KAAKC,gBAAgB,EAAEM,KAAK,IACnCrB,aAAa,CAAEc,OAAQ,CAAC,EACvB;QACDA,OAAO,GAAGU,SAAS;MACpB;MAEAX,QAAQ,CAAEC,OAAQ,CAAC;IACpB;EAAG,CACH,CAED,CAAC;AAEL"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { getBlockSupport } from '@wordpress/blocks';
5
+ export default function useBlockRename(name) {
6
+ const metaDataSupport = getBlockSupport(name, '__experimentalMetadata', false);
7
+ const supportsBlockNaming = !!(true === metaDataSupport || metaDataSupport?.name);
8
+ return {
9
+ canRename: supportsBlockNaming
10
+ };
11
+ }
12
+ //# sourceMappingURL=use-block-rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getBlockSupport","useBlockRename","name","metaDataSupport","supportsBlockNaming","canRename"],"sources":["@wordpress/block-editor/src/components/block-rename/use-block-rename.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { getBlockSupport } from '@wordpress/blocks';\n\nexport default function useBlockRename( name ) {\n\tconst metaDataSupport = getBlockSupport(\n\t\tname,\n\t\t'__experimentalMetadata',\n\t\tfalse\n\t);\n\n\tconst supportsBlockNaming = !! (\n\t\ttrue === metaDataSupport || metaDataSupport?.name\n\t);\n\n\treturn {\n\t\tcanRename: supportsBlockNaming,\n\t};\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,eAAe,QAAQ,mBAAmB;AAEnD,eAAe,SAASC,cAAcA,CAAEC,IAAI,EAAG;EAC9C,MAAMC,eAAe,GAAGH,eAAe,CACtCE,IAAI,EACJ,wBAAwB,EACxB,KACD,CAAC;EAED,MAAME,mBAAmB,GAAG,CAAC,EAC5B,IAAI,KAAKD,eAAe,IAAIA,eAAe,EAAED,IAAI,CACjD;EAED,OAAO;IACNG,SAAS,EAAED;EACZ,CAAC;AACF"}
@@ -14,6 +14,7 @@ import { useConvertToGroupButtonProps, ConvertToGroupButton } from '../convert-t
14
14
  import { BlockLockMenuItem, useBlockLock } from '../block-lock';
15
15
  import { store as blockEditorStore } from '../../store';
16
16
  import BlockModeToggle from '../block-settings-menu/block-mode-toggle';
17
+ import { BlockRenameControl, useBlockRename } from '../block-rename';
17
18
  const {
18
19
  Fill,
19
20
  Slot
@@ -40,7 +41,11 @@ const BlockSettingsMenuControlsSlot = ({
40
41
  const {
41
42
  canLock
42
43
  } = useBlockLock(selectedClientIds[0]);
44
+ const {
45
+ canRename
46
+ } = useBlockRename(selectedBlocks[0]);
43
47
  const showLockButton = selectedClientIds.length === 1 && canLock;
48
+ const showRenameButton = selectedClientIds.length === 1 && canRename;
44
49
 
45
50
  // Check if current selection of blocks is Groupable or Ungroupable
46
51
  // and pass this props down to ConvertToGroupButton.
@@ -66,6 +71,8 @@ const BlockSettingsMenuControlsSlot = ({
66
71
  onClose: fillProps?.onClose
67
72
  }), showLockButton && createElement(BlockLockMenuItem, {
68
73
  clientId: selectedClientIds[0]
74
+ }), showRenameButton && createElement(BlockRenameControl, {
75
+ clientId: selectedClientIds[0]
69
76
  }), fills, fillProps?.canMove && !fillProps?.onlyBlock && createElement(MenuItem, {
70
77
  onClick: pipe(fillProps?.onClose, fillProps?.onMoveTo)
71
78
  }, __('Move to')), fillProps?.count === 1 && createElement(BlockModeToggle, {
@@ -1 +1 @@
1
- {"version":3,"names":["createSlotFill","MenuGroup","MenuItem","__experimentalStyleProvider","StyleProvider","useSelect","pipe","__","useConvertToGroupButtonProps","ConvertToGroupButton","BlockLockMenuItem","useBlockLock","store","blockEditorStore","BlockModeToggle","Fill","Slot","BlockSettingsMenuControlsSlot","fillProps","clientIds","__unstableDisplayLocation","selectedBlocks","selectedClientIds","select","getBlockNamesByClientId","getSelectedBlockClientIds","ids","canLock","showLockButton","length","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","createElement","fills","onClose","clientId","canMove","onlyBlock","onClick","onMoveTo","count","firstBlockClientId","onToggle","BlockSettingsMenuControls","props","document"],"sources":["@wordpress/block-editor/src/components/block-settings-menu-controls/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateSlotFill,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalStyleProvider as StyleProvider,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { pipe } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseConvertToGroupButtonProps,\n\tConvertToGroupButton,\n} from '../convert-to-group-buttons';\nimport { BlockLockMenuItem, useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport BlockModeToggle from '../block-settings-menu/block-mode-toggle';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( {\n\tfillProps,\n\tclientIds = null,\n\t__unstableDisplayLocation,\n} ) => {\n\tconst { selectedBlocks, selectedClientIds } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockNamesByClientId, getSelectedBlockClientIds } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst ids =\n\t\t\t\tclientIds !== null ? clientIds : getSelectedBlockClientIds();\n\t\t\treturn {\n\t\t\t\tselectedBlocks: getBlockNamesByClientId( ids ),\n\t\t\t\tselectedClientIds: ids,\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { canLock } = useBlockLock( selectedClientIds[ 0 ] );\n\tconst showLockButton = selectedClientIds.length === 1 && canLock;\n\n\t// Check if current selection of blocks is Groupable or Ungroupable\n\t// and pass this props down to ConvertToGroupButton.\n\tconst convertToGroupButtonProps =\n\t\tuseConvertToGroupButtonProps( selectedClientIds );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton = isGroupable || isUngroupable;\n\n\treturn (\n\t\t<Slot\n\t\t\tfillProps={ {\n\t\t\t\t...fillProps,\n\t\t\t\t__unstableDisplayLocation,\n\t\t\t\tselectedBlocks,\n\t\t\t\tselectedClientIds,\n\t\t\t} }\n\t\t>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif (\n\t\t\t\t\t! fills?.length > 0 &&\n\t\t\t\t\t! showConvertToGroupButton &&\n\t\t\t\t\t! showLockButton\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t{ showConvertToGroupButton && (\n\t\t\t\t\t\t\t<ConvertToGroupButton\n\t\t\t\t\t\t\t\t{ ...convertToGroupButtonProps }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showLockButton && (\n\t\t\t\t\t\t\t<BlockLockMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t{ fillProps?.canMove && ! fillProps?.onlyBlock && (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\tfillProps?.onClose,\n\t\t\t\t\t\t\t\t\tfillProps?.onMoveTo\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Move to' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fillProps?.count === 1 && (\n\t\t\t\t\t\t\t<BlockModeToggle\n\t\t\t\t\t\t\t\tclientId={ fillProps?.firstBlockClientId }\n\t\t\t\t\t\t\t\tonToggle={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Slot>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-settings-menu-controls/README.md\n *\n * @param {Object} props Fill props.\n * @return {WPElement} Element.\n */\nfunction BlockSettingsMenuControls( { ...props } ) {\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill { ...props } />\n\t\t</StyleProvider>\n\t);\n}\n\nBlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot;\n\nexport default BlockSettingsMenuControls;\n"],"mappings":"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"}
1
+ {"version":3,"names":["createSlotFill","MenuGroup","MenuItem","__experimentalStyleProvider","StyleProvider","useSelect","pipe","__","useConvertToGroupButtonProps","ConvertToGroupButton","BlockLockMenuItem","useBlockLock","store","blockEditorStore","BlockModeToggle","BlockRenameControl","useBlockRename","Fill","Slot","BlockSettingsMenuControlsSlot","fillProps","clientIds","__unstableDisplayLocation","selectedBlocks","selectedClientIds","select","getBlockNamesByClientId","getSelectedBlockClientIds","ids","canLock","canRename","showLockButton","length","showRenameButton","convertToGroupButtonProps","isGroupable","isUngroupable","showConvertToGroupButton","createElement","fills","onClose","clientId","canMove","onlyBlock","onClick","onMoveTo","count","firstBlockClientId","onToggle","BlockSettingsMenuControls","props","document"],"sources":["@wordpress/block-editor/src/components/block-settings-menu-controls/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tcreateSlotFill,\n\tMenuGroup,\n\tMenuItem,\n\t__experimentalStyleProvider as StyleProvider,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { pipe } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport {\n\tuseConvertToGroupButtonProps,\n\tConvertToGroupButton,\n} from '../convert-to-group-buttons';\nimport { BlockLockMenuItem, useBlockLock } from '../block-lock';\nimport { store as blockEditorStore } from '../../store';\nimport BlockModeToggle from '../block-settings-menu/block-mode-toggle';\n\nimport { BlockRenameControl, useBlockRename } from '../block-rename';\n\nconst { Fill, Slot } = createSlotFill( 'BlockSettingsMenuControls' );\n\nconst BlockSettingsMenuControlsSlot = ( {\n\tfillProps,\n\tclientIds = null,\n\t__unstableDisplayLocation,\n} ) => {\n\tconst { selectedBlocks, selectedClientIds } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockNamesByClientId, getSelectedBlockClientIds } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst ids =\n\t\t\t\tclientIds !== null ? clientIds : getSelectedBlockClientIds();\n\t\t\treturn {\n\t\t\t\tselectedBlocks: getBlockNamesByClientId( ids ),\n\t\t\t\tselectedClientIds: ids,\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst { canLock } = useBlockLock( selectedClientIds[ 0 ] );\n\tconst { canRename } = useBlockRename( selectedBlocks[ 0 ] );\n\tconst showLockButton = selectedClientIds.length === 1 && canLock;\n\tconst showRenameButton = selectedClientIds.length === 1 && canRename;\n\n\t// Check if current selection of blocks is Groupable or Ungroupable\n\t// and pass this props down to ConvertToGroupButton.\n\tconst convertToGroupButtonProps =\n\t\tuseConvertToGroupButtonProps( selectedClientIds );\n\tconst { isGroupable, isUngroupable } = convertToGroupButtonProps;\n\tconst showConvertToGroupButton = isGroupable || isUngroupable;\n\n\treturn (\n\t\t<Slot\n\t\t\tfillProps={ {\n\t\t\t\t...fillProps,\n\t\t\t\t__unstableDisplayLocation,\n\t\t\t\tselectedBlocks,\n\t\t\t\tselectedClientIds,\n\t\t\t} }\n\t\t>\n\t\t\t{ ( fills ) => {\n\t\t\t\tif (\n\t\t\t\t\t! fills?.length > 0 &&\n\t\t\t\t\t! showConvertToGroupButton &&\n\t\t\t\t\t! showLockButton\n\t\t\t\t) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t{ showConvertToGroupButton && (\n\t\t\t\t\t\t\t<ConvertToGroupButton\n\t\t\t\t\t\t\t\t{ ...convertToGroupButtonProps }\n\t\t\t\t\t\t\t\tonClose={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showLockButton && (\n\t\t\t\t\t\t\t<BlockLockMenuItem\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showRenameButton && (\n\t\t\t\t\t\t\t<BlockRenameControl\n\t\t\t\t\t\t\t\tclientId={ selectedClientIds[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fills }\n\t\t\t\t\t\t{ fillProps?.canMove && ! fillProps?.onlyBlock && (\n\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\tonClick={ pipe(\n\t\t\t\t\t\t\t\t\tfillProps?.onClose,\n\t\t\t\t\t\t\t\t\tfillProps?.onMoveTo\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Move to' ) }\n\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ fillProps?.count === 1 && (\n\t\t\t\t\t\t\t<BlockModeToggle\n\t\t\t\t\t\t\t\tclientId={ fillProps?.firstBlockClientId }\n\t\t\t\t\t\t\t\tonToggle={ fillProps?.onClose }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t);\n\t\t\t} }\n\t\t</Slot>\n\t);\n};\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-settings-menu-controls/README.md\n *\n * @param {Object} props Fill props.\n * @return {WPElement} Element.\n */\nfunction BlockSettingsMenuControls( { ...props } ) {\n\treturn (\n\t\t<StyleProvider document={ document }>\n\t\t\t<Fill { ...props } />\n\t\t</StyleProvider>\n\t);\n}\n\nBlockSettingsMenuControls.Slot = BlockSettingsMenuControlsSlot;\n\nexport default BlockSettingsMenuControls;\n"],"mappings":"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"}
@@ -40,12 +40,12 @@ export default function ImageSettingsPanel({
40
40
  // Global Styles.
41
41
  , {
42
42
  hasValue: () => !!value?.lightbox,
43
- label: __('Expand on Click'),
43
+ label: __('Expand on click'),
44
44
  onDeselect: resetLightbox,
45
45
  isShownByDefault: true,
46
46
  panelId: panelId
47
47
  }, createElement(ToggleControl, {
48
- label: __('Expand on Click'),
48
+ label: __('Expand on click'),
49
49
  checked: lightboxChecked,
50
50
  onChange: onChangeLightbox
51
51
  }))));
@@ -1 +1 @@
1
- {"version":3,"names":["__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","ToggleControl","__","_x","useHasImageSettingsPanel","name","value","inheritedValue","lightbox","allowEditing","ImageSettingsPanel","onChange","panelId","resetLightbox","undefined","onChangeLightbox","newSetting","enabled","lightboxChecked","createElement","Fragment","label","resetAll","hasValue","onDeselect","isShownByDefault","checked"],"sources":["@wordpress/block-editor/src/components/global-styles/image-settings-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\n\nexport function useHasImageSettingsPanel( name, value, inheritedValue ) {\n\t// Note: If lightbox `value` exists, that means it was\n\t// defined via the the Global Styles UI and will NOT\n\t// be a boolean value or contain the `allowEditing` property,\n\t// so we should show the settings panel in those cases.\n\treturn (\n\t\t( name === 'core/image' && inheritedValue?.lightbox?.allowEditing ) ||\n\t\t!! value?.lightbox\n\t);\n}\n\nexport default function ImageSettingsPanel( {\n\tonChange,\n\tvalue,\n\tinheritedValue,\n\tpanelId,\n} ) {\n\tconst resetLightbox = () => {\n\t\tonChange( undefined );\n\t};\n\n\tconst onChangeLightbox = ( newSetting ) => {\n\t\tonChange( {\n\t\t\tenabled: newSetting,\n\t\t} );\n\t};\n\n\tlet lightboxChecked = false;\n\n\tif ( inheritedValue?.lightbox?.enabled ) {\n\t\tlightboxChecked = inheritedValue.lightbox.enabled;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ _x( 'Settings', 'Image settings' ) }\n\t\t\t\tresetAll={ resetLightbox }\n\t\t\t\tpanelId={ panelId }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t// We use the `userSettings` prop instead of `settings`, because `settings`\n\t\t\t\t\t// contains the core/theme values for the lightbox and we want to show the\n\t\t\t\t\t// \"RESET\" button ONLY when the user has explicitly set a value in the\n\t\t\t\t\t// Global Styles.\n\t\t\t\t\thasValue={ () => !! value?.lightbox }\n\t\t\t\t\tlabel={ __( 'Expand on Click' ) }\n\t\t\t\t\tonDeselect={ resetLightbox }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Expand on Click' ) }\n\t\t\t\t\t\tchecked={ lightboxChecked }\n\t\t\t\t\t\tonChange={ onChangeLightbox }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</ToolsPanel>\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,wBAAwB,IAAIC,UAAU,EACtCC,4BAA4B,IAAIC,cAAc,EAC9CC,aAAa,QACP,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;AAExC,OAAO,SAASC,wBAAwBA,CAAEC,IAAI,EAAEC,KAAK,EAAEC,cAAc,EAAG;EACvE;EACA;EACA;EACA;EACA,OACGF,IAAI,KAAK,YAAY,IAAIE,cAAc,EAAEC,QAAQ,EAAEC,YAAY,IACjE,CAAC,CAAEH,KAAK,EAAEE,QAAQ;AAEpB;AAEA,eAAe,SAASE,kBAAkBA,CAAE;EAC3CC,QAAQ;EACRL,KAAK;EACLC,cAAc;EACdK;AACD,CAAC,EAAG;EACH,MAAMC,aAAa,GAAGA,CAAA,KAAM;IAC3BF,QAAQ,CAAEG,SAAU,CAAC;EACtB,CAAC;EAED,MAAMC,gBAAgB,GAAKC,UAAU,IAAM;IAC1CL,QAAQ,CAAE;MACTM,OAAO,EAAED;IACV,CAAE,CAAC;EACJ,CAAC;EAED,IAAIE,eAAe,GAAG,KAAK;EAE3B,IAAKX,cAAc,EAAEC,QAAQ,EAAES,OAAO,EAAG;IACxCC,eAAe,GAAGX,cAAc,CAACC,QAAQ,CAACS,OAAO;EAClD;EAEA,OACCE,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACrB,UAAU;IACVuB,KAAK,EAAGlB,EAAE,CAAE,UAAU,EAAE,gBAAiB,CAAG;IAC5CmB,QAAQ,EAAGT,aAAe;IAC1BD,OAAO,EAAGA;EAAS,GAEnBO,aAAA,CAACnB;EACA;EACA;EACA;EACA;EAAA;IACAuB,QAAQ,EAAGA,CAAA,KAAM,CAAC,CAAEjB,KAAK,EAAEE,QAAU;IACrCa,KAAK,EAAGnB,EAAE,CAAE,iBAAkB,CAAG;IACjCsB,UAAU,EAAGX,aAAe;IAC5BY,gBAAgB,EAAG,IAAM;IACzBb,OAAO,EAAGA;EAAS,GAEnBO,aAAA,CAAClB,aAAa;IACboB,KAAK,EAAGnB,EAAE,CAAE,iBAAkB,CAAG;IACjCwB,OAAO,EAAGR,eAAiB;IAC3BP,QAAQ,EAAGI;EAAkB,CAC7B,CACc,CACL,CACX,CAAC;AAEL"}
1
+ {"version":3,"names":["__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","ToggleControl","__","_x","useHasImageSettingsPanel","name","value","inheritedValue","lightbox","allowEditing","ImageSettingsPanel","onChange","panelId","resetLightbox","undefined","onChangeLightbox","newSetting","enabled","lightboxChecked","createElement","Fragment","label","resetAll","hasValue","onDeselect","isShownByDefault","checked"],"sources":["@wordpress/block-editor/src/components/global-styles/image-settings-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\tToggleControl,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\n\nexport function useHasImageSettingsPanel( name, value, inheritedValue ) {\n\t// Note: If lightbox `value` exists, that means it was\n\t// defined via the the Global Styles UI and will NOT\n\t// be a boolean value or contain the `allowEditing` property,\n\t// so we should show the settings panel in those cases.\n\treturn (\n\t\t( name === 'core/image' && inheritedValue?.lightbox?.allowEditing ) ||\n\t\t!! value?.lightbox\n\t);\n}\n\nexport default function ImageSettingsPanel( {\n\tonChange,\n\tvalue,\n\tinheritedValue,\n\tpanelId,\n} ) {\n\tconst resetLightbox = () => {\n\t\tonChange( undefined );\n\t};\n\n\tconst onChangeLightbox = ( newSetting ) => {\n\t\tonChange( {\n\t\t\tenabled: newSetting,\n\t\t} );\n\t};\n\n\tlet lightboxChecked = false;\n\n\tif ( inheritedValue?.lightbox?.enabled ) {\n\t\tlightboxChecked = inheritedValue.lightbox.enabled;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ _x( 'Settings', 'Image settings' ) }\n\t\t\t\tresetAll={ resetLightbox }\n\t\t\t\tpanelId={ panelId }\n\t\t\t>\n\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t// We use the `userSettings` prop instead of `settings`, because `settings`\n\t\t\t\t\t// contains the core/theme values for the lightbox and we want to show the\n\t\t\t\t\t// \"RESET\" button ONLY when the user has explicitly set a value in the\n\t\t\t\t\t// Global Styles.\n\t\t\t\t\thasValue={ () => !! value?.lightbox }\n\t\t\t\t\tlabel={ __( 'Expand on click' ) }\n\t\t\t\t\tonDeselect={ resetLightbox }\n\t\t\t\t\tisShownByDefault={ true }\n\t\t\t\t\tpanelId={ panelId }\n\t\t\t\t>\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Expand on click' ) }\n\t\t\t\t\t\tchecked={ lightboxChecked }\n\t\t\t\t\t\tonChange={ onChangeLightbox }\n\t\t\t\t\t/>\n\t\t\t\t</ToolsPanelItem>\n\t\t\t</ToolsPanel>\n\t\t</>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,wBAAwB,IAAIC,UAAU,EACtCC,4BAA4B,IAAIC,cAAc,EAC9CC,aAAa,QACP,uBAAuB;AAC9B,SAASC,EAAE,EAAEC,EAAE,QAAQ,iBAAiB;AAExC,OAAO,SAASC,wBAAwBA,CAAEC,IAAI,EAAEC,KAAK,EAAEC,cAAc,EAAG;EACvE;EACA;EACA;EACA;EACA,OACGF,IAAI,KAAK,YAAY,IAAIE,cAAc,EAAEC,QAAQ,EAAEC,YAAY,IACjE,CAAC,CAAEH,KAAK,EAAEE,QAAQ;AAEpB;AAEA,eAAe,SAASE,kBAAkBA,CAAE;EAC3CC,QAAQ;EACRL,KAAK;EACLC,cAAc;EACdK;AACD,CAAC,EAAG;EACH,MAAMC,aAAa,GAAGA,CAAA,KAAM;IAC3BF,QAAQ,CAAEG,SAAU,CAAC;EACtB,CAAC;EAED,MAAMC,gBAAgB,GAAKC,UAAU,IAAM;IAC1CL,QAAQ,CAAE;MACTM,OAAO,EAAED;IACV,CAAE,CAAC;EACJ,CAAC;EAED,IAAIE,eAAe,GAAG,KAAK;EAE3B,IAAKX,cAAc,EAAEC,QAAQ,EAAES,OAAO,EAAG;IACxCC,eAAe,GAAGX,cAAc,CAACC,QAAQ,CAACS,OAAO;EAClD;EAEA,OACCE,aAAA,CAAAC,QAAA,QACCD,aAAA,CAACrB,UAAU;IACVuB,KAAK,EAAGlB,EAAE,CAAE,UAAU,EAAE,gBAAiB,CAAG;IAC5CmB,QAAQ,EAAGT,aAAe;IAC1BD,OAAO,EAAGA;EAAS,GAEnBO,aAAA,CAACnB;EACA;EACA;EACA;EACA;EAAA;IACAuB,QAAQ,EAAGA,CAAA,KAAM,CAAC,CAAEjB,KAAK,EAAEE,QAAU;IACrCa,KAAK,EAAGnB,EAAE,CAAE,iBAAkB,CAAG;IACjCsB,UAAU,EAAGX,aAAe;IAC5BY,gBAAgB,EAAG,IAAM;IACzBb,OAAO,EAAGA;EAAS,GAEnBO,aAAA,CAAClB,aAAa;IACboB,KAAK,EAAGnB,EAAE,CAAE,iBAAkB,CAAG;IACjCwB,OAAO,EAAGR,eAAiB;IAC3BP,QAAQ,EAAGI;EAAkB,CAC7B,CACc,CACL,CACX,CAAC;AAEL"}
@@ -1,3 +1,4 @@
1
+ import { createElement } from "@wordpress/element";
1
2
  /**
2
3
  * WordPress dependencies
3
4
  */
@@ -10,6 +11,7 @@ import { copy, trash as remove, plus as add, group, ungroup, moveTo as move } fr
10
11
  /**
11
12
  * Internal dependencies
12
13
  */
14
+ import BlockIcon from '../block-icon';
13
15
  import { store as blockEditorStore } from '../../store';
14
16
  export const useTransformCommands = () => {
15
17
  const {
@@ -79,7 +81,9 @@ export const useTransformCommands = () => {
79
81
  name: 'core/block-editor/transform-to-' + name.replace('/', '-'),
80
82
  // translators: %s: block title/name.
81
83
  label: sprintf(__('Transform to %s'), title),
82
- icon: icon.src,
84
+ icon: createElement(BlockIcon, {
85
+ icon: icon
86
+ }),
83
87
  callback: ({
84
88
  close
85
89
  }) => {
@@ -1 +1 @@
1
- {"version":3,"names":["__","sprintf","hasBlockSupport","store","blocksStore","switchToBlockType","isTemplatePart","useSelect","useDispatch","useCommandLoader","copy","trash","remove","plus","add","group","ungroup","moveTo","move","blockEditorStore","useTransformCommands","clientIds","select","getSelectedBlockClientIds","selectedBlockClientIds","blocks","getBlocksByClientId","replaceBlocks","multiSelect","possibleBlockTransformations","canRemove","getBlockRootClientId","getBlockTransformItems","canRemoveBlocks","rootClientId","Array","isArray","isTemplate","length","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","hasPossibleBlockTransformations","isLoading","commands","map","transformation","title","icon","replace","label","src","callback","close","useActionsCommands","isUngroupable","isGroupable","_isUngroupable","_isGroupable","canInsertBlockType","canMoveBlocks","getBlockCount","getDefaultBlockName","getGroupingBlockName","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","setBlockMovingClientId","setNavigationMode","selectBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","block","canMove","push","command","useBlockCommands","hook"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\ttrash as remove,\n\tplus as add,\n\tgroup,\n\tungroup,\n\tmoveTo as move,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\nexport const useTransformCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\tif (\n\t\t! clientIds ||\n\t\tclientIds.length < 1 ||\n\t\t! hasPossibleBlockTransformations\n\t) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst commands = possibleBlockTransformations.map( ( transformation ) => {\n\t\tconst { name, title, icon } = transformation;\n\t\treturn {\n\t\t\tname: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),\n\t\t\t// translators: %s: block title/name.\n\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\ticon: icon.src,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tonBlockTransform( name );\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nconst useActionsCommands = () => {\n\tconst { clientIds, isUngroupable, isGroupable } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable,\n\t\t\tisGroupable: _isGroupable,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable(),\n\t\t\tisGroupable: _isGroupable(),\n\t\t};\n\t}, [] );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanMoveBlocks,\n\t\tcanRemoveBlocks,\n\t\tgetBlockCount,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tsetBlockMovingClientId,\n\t\tsetNavigationMode,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst onGroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\tif ( ! newBlocks ) {\n\t\t\treturn;\n\t\t}\n\t\treplaceBlocks( clientIds, newBlocks );\n\t};\n\tconst onUngroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\tconst canMove =\n\t\tcanMoveBlocks( clientIds, rootClientId ) &&\n\t\tgetBlockCount( rootClientId ) !== 1;\n\n\tconst commands = [];\n\tif ( canInsertDefaultBlock ) {\n\t\tcommands.push(\n\t\t\t{\n\t\t\t\tname: 'add-after',\n\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'add-before',\n\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t}\n\t\t);\n\t}\n\tif ( canRemove ) {\n\t\tcommands.push( {\n\t\t\tname: 'remove',\n\t\t\tlabel: __( 'Delete' ),\n\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\ticon: remove,\n\t\t} );\n\t}\n\tif ( canDuplicate ) {\n\t\tcommands.push( {\n\t\t\tname: 'duplicate',\n\t\t\tlabel: __( 'Duplicate' ),\n\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\ticon: copy,\n\t\t} );\n\t}\n\tif ( canMove ) {\n\t\tcommands.push( {\n\t\t\tname: 'move-to',\n\t\t\tlabel: __( 'Move to' ),\n\t\t\tcallback: () => {\n\t\t\t\tsetNavigationMode( true );\n\t\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t\t},\n\t\t\ticon: move,\n\t\t} );\n\t}\n\tif ( isUngroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'ungroup',\n\t\t\tlabel: __( 'Ungroup' ),\n\t\t\tcallback: onUngroup,\n\t\t\ticon: ungroup,\n\t\t} );\n\t}\n\tif ( isGroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'Group',\n\t\t\tlabel: __( 'Group' ),\n\t\t\tcallback: onGroup,\n\t\t\ticon: group,\n\t\t} );\n\t}\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: useTransformCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockActions',\n\t\thook: useActionsCommands,\n\t} );\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SACCC,eAAe,EACfC,KAAK,IAAIC,WAAW,EACpBC,iBAAiB,EACjBC,cAAc,QACR,mBAAmB;AAC1B,SAASC,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,gBAAgB,QAAQ,qBAAqB;AACtD,SACCC,IAAI,EACJC,KAAK,IAAIC,MAAM,EACfC,IAAI,IAAIC,GAAG,EACXC,KAAK,EACLC,OAAO,EACPC,MAAM,IAAIC,IAAI,QACR,kBAAkB;;AAEzB;AACA;AACA;AACA,SAASf,KAAK,IAAIgB,gBAAgB,QAAQ,aAAa;AAEvD,OAAO,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;EACzC,MAAM;IAAEC;EAAU,CAAC,GAAGd,SAAS,CAAIe,MAAM,IAAM;IAC9C,MAAM;MAAEC;IAA0B,CAAC,GAAGD,MAAM,CAAEH,gBAAiB,CAAC;IAChE,MAAMK,sBAAsB,GAAGD,yBAAyB,CAAC,CAAC;IAE1D,OAAO;MACNF,SAAS,EAAEG;IACZ,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAMC,MAAM,GAAGlB,SAAS,CACrBe,MAAM,IACPA,MAAM,CAAEH,gBAAiB,CAAC,CAACO,mBAAmB,CAAEL,SAAU,CAAC,EAC5D,CAAEA,SAAS,CACZ,CAAC;EACD,MAAM;IAAEM,aAAa;IAAEC;EAAY,CAAC,GAAGpB,WAAW,CAAEW,gBAAiB,CAAC;EACtE,MAAM;IAAEU,4BAA4B;IAAEC;EAAU,CAAC,GAAGvB,SAAS,CAC1De,MAAM,IAAM;IACb,MAAM;MACLS,oBAAoB;MACpBC,sBAAsB;MACtBC;IACD,CAAC,GAAGX,MAAM,CAAEH,gBAAiB,CAAC;IAC9B,MAAMe,YAAY,GAAGH,oBAAoB,CACxCI,KAAK,CAACC,OAAO,CAAEf,SAAU,CAAC,GAAGA,SAAS,CAAE,CAAC,CAAE,GAAGA,SAC/C,CAAC;IACD,OAAO;MACNQ,4BAA4B,EAAEG,sBAAsB,CACnDP,MAAM,EACNS,YACD,CAAC;MACDJ,SAAS,EAAEG,eAAe,CAAEZ,SAAS,EAAEa,YAAa;IACrD,CAAC;EACF,CAAC,EACD,CAAEb,SAAS,EAAEI,MAAM,CACpB,CAAC;EAED,MAAMY,UAAU,GAAGZ,MAAM,CAACa,MAAM,KAAK,CAAC,IAAIhC,cAAc,CAAEmB,MAAM,CAAE,CAAC,CAAG,CAAC;EAEvE,SAASc,uBAAuBA,CAAEC,cAAc,EAAG;IAClD,IAAKA,cAAc,CAACF,MAAM,GAAG,CAAC,EAAG;MAChCV,WAAW,CACVY,cAAc,CAAE,CAAC,CAAE,CAACC,QAAQ,EAC5BD,cAAc,CAAEA,cAAc,CAACF,MAAM,GAAG,CAAC,CAAE,CAACG,QAC7C,CAAC;IACF;EACD;;EAEA;EACA,SAASC,gBAAgBA,CAAEC,IAAI,EAAG;IACjC,MAAMC,SAAS,GAAGvC,iBAAiB,CAAEoB,MAAM,EAAEkB,IAAK,CAAC;IACnDhB,aAAa,CAAEN,SAAS,EAAEuB,SAAU,CAAC;IACrCL,uBAAuB,CAAEK,SAAU,CAAC;EACrC;;EAEA;AACD;AACA;AACA;AACA;EACC,MAAMC,+BAA+B,GACpC,CAAC,CAAEhB,4BAA4B,CAACS,MAAM,IAAIR,SAAS,IAAI,CAAEO,UAAU;EAEpE,IACC,CAAEhB,SAAS,IACXA,SAAS,CAACiB,MAAM,GAAG,CAAC,IACpB,CAAEO,+BAA+B,EAChC;IACD,OAAO;MAAEC,SAAS,EAAE,KAAK;MAAEC,QAAQ,EAAE;IAAG,CAAC;EAC1C;EAEA,MAAMA,QAAQ,GAAGlB,4BAA4B,CAACmB,GAAG,CAAIC,cAAc,IAAM;IACxE,MAAM;MAAEN,IAAI;MAAEO,KAAK;MAAEC;IAAK,CAAC,GAAGF,cAAc;IAC5C,OAAO;MACNN,IAAI,EAAE,iCAAiC,GAAGA,IAAI,CAACS,OAAO,CAAE,GAAG,EAAE,GAAI,CAAC;MAClE;MACAC,KAAK,EAAEpD,OAAO,CAAED,EAAE,CAAE,iBAAkB,CAAC,EAAEkD,KAAM,CAAC;MAChDC,IAAI,EAAEA,IAAI,CAACG,GAAG;MACdC,QAAQ,EAAEA,CAAE;QAAEC;MAAM,CAAC,KAAM;QAC1Bd,gBAAgB,CAAEC,IAAK,CAAC;QACxBa,KAAK,CAAC,CAAC;MACR;IACD,CAAC;EACF,CAAE,CAAC;EAEH,OAAO;IAAEV,SAAS,EAAE,KAAK;IAAEC;EAAS,CAAC;AACtC,CAAC;AAED,MAAMU,kBAAkB,GAAGA,CAAA,KAAM;EAChC,MAAM;IAAEpC,SAAS;IAAEqC,aAAa;IAAEC;EAAY,CAAC,GAAGpD,SAAS,CAAIe,MAAM,IAAM;IAC1E,MAAM;MACLC,yBAAyB;MACzBmC,aAAa,EAAEE,cAAc;MAC7BD,WAAW,EAAEE;IACd,CAAC,GAAGvC,MAAM,CAAEH,gBAAiB,CAAC;IAC9B,MAAMK,sBAAsB,GAAGD,yBAAyB,CAAC,CAAC;IAE1D,OAAO;MACNF,SAAS,EAAEG,sBAAsB;MACjCkC,aAAa,EAAEE,cAAc,CAAC,CAAC;MAC/BD,WAAW,EAAEE,YAAY,CAAC;IAC3B,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAM;IACLC,kBAAkB;IAClB/B,oBAAoB;IACpBL,mBAAmB;IACnBqC,aAAa;IACb9B,eAAe;IACf+B;EACD,CAAC,GAAGzD,SAAS,CAAEY,gBAAiB,CAAC;EACjC,MAAM;IAAE8C,mBAAmB;IAAEC;EAAqB,CAAC,GAClD3D,SAAS,CAAEH,WAAY,CAAC;EAEzB,MAAMqB,MAAM,GAAGC,mBAAmB,CAAEL,SAAU,CAAC;EAE/C,MAAM;IACL8C,YAAY;IACZxC,aAAa;IACbyC,eAAe;IACfC,gBAAgB;IAChBC,iBAAiB;IACjBC,sBAAsB;IACtBC,iBAAiB;IACjBC;EACD,CAAC,GAAGjE,WAAW,CAAEW,gBAAiB,CAAC;EAEnC,MAAMuD,OAAO,GAAGA,CAAA,KAAM;IACrB,IAAK,CAAEjD,MAAM,CAACa,MAAM,EAAG;MACtB;IACD;IAEA,MAAMqC,iBAAiB,GAAGT,oBAAoB,CAAC,CAAC;;IAEhD;IACA,MAAMtB,SAAS,GAAGvC,iBAAiB,CAAEoB,MAAM,EAAEkD,iBAAkB,CAAC;IAEhE,IAAK,CAAE/B,SAAS,EAAG;MAClB;IACD;IACAjB,aAAa,CAAEN,SAAS,EAAEuB,SAAU,CAAC;EACtC,CAAC;EACD,MAAMgC,SAAS,GAAGA,CAAA,KAAM;IACvB,IAAK,CAAEnD,MAAM,CAACa,MAAM,EAAG;MACtB;IACD;IAEA,MAAMuC,WAAW,GAAGpD,MAAM,CAAE,CAAC,CAAE,CAACoD,WAAW;IAE3C,IAAK,CAAEA,WAAW,CAACvC,MAAM,EAAG;MAC3B;IACD;IAEAX,aAAa,CAAEN,SAAS,EAAEwD,WAAY,CAAC;EACxC,CAAC;EAED,IAAK,CAAExD,SAAS,IAAIA,SAAS,CAACiB,MAAM,GAAG,CAAC,EAAG;IAC1C,OAAO;MAAEQ,SAAS,EAAE,KAAK;MAAEC,QAAQ,EAAE;IAAG,CAAC;EAC1C;EAEA,MAAMb,YAAY,GAAGH,oBAAoB,CAAEV,SAAS,CAAE,CAAC,CAAG,CAAC;EAC3D,MAAMyD,qBAAqB,GAAGhB,kBAAkB,CAC/CG,mBAAmB,CAAC,CAAC,EACrB/B,YACD,CAAC;EACD,MAAM6C,YAAY,GAAGtD,MAAM,CAACuD,KAAK,CAAIC,KAAK,IAAM;IAC/C,OACC,CAAC,CAAEA,KAAK,IACR/E,eAAe,CAAE+E,KAAK,CAACtC,IAAI,EAAE,UAAU,EAAE,IAAK,CAAC,IAC/CmB,kBAAkB,CAAEmB,KAAK,CAACtC,IAAI,EAAET,YAAa,CAAC;EAEhD,CAAE,CAAC;EACH,MAAMJ,SAAS,GAAGG,eAAe,CAAEZ,SAAS,EAAEa,YAAa,CAAC;EAC5D,MAAMgD,OAAO,GACZnB,aAAa,CAAE1C,SAAS,EAAEa,YAAa,CAAC,IACxC8B,aAAa,CAAE9B,YAAa,CAAC,KAAK,CAAC;EAEpC,MAAMa,QAAQ,GAAG,EAAE;EACnB,IAAK+B,qBAAqB,EAAG;IAC5B/B,QAAQ,CAACoC,IAAI,CACZ;MACCxC,IAAI,EAAE,WAAW;MACjBU,KAAK,EAAErD,EAAE,CAAE,WAAY,CAAC;MACxBuD,QAAQ,EAAEA,CAAA,KAAM;QACf,MAAMd,QAAQ,GAAGN,KAAK,CAACC,OAAO,CAAEf,SAAU,CAAC,GACxCA,SAAS,CAAEA,SAAS,CAACiB,MAAM,GAAG,CAAC,CAAE,GACjCG,QAAQ;QACX4B,gBAAgB,CAAE5B,QAAS,CAAC;MAC7B,CAAC;MACDU,IAAI,EAAErC;IACP,CAAC,EACD;MACC6B,IAAI,EAAE,YAAY;MAClBU,KAAK,EAAErD,EAAE,CAAE,YAAa,CAAC;MACzBuD,QAAQ,EAAEA,CAAA,KAAM;QACf,MAAMd,QAAQ,GAAGN,KAAK,CAACC,OAAO,CAAEf,SAAU,CAAC,GACxCA,SAAS,CAAE,CAAC,CAAE,GACdoB,QAAQ;QACX6B,iBAAiB,CAAE7B,QAAS,CAAC;MAC9B,CAAC;MACDU,IAAI,EAAErC;IACP,CACD,CAAC;EACF;EACA,IAAKgB,SAAS,EAAG;IAChBiB,QAAQ,CAACoC,IAAI,CAAE;MACdxC,IAAI,EAAE,QAAQ;MACdU,KAAK,EAAErD,EAAE,CAAE,QAAS,CAAC;MACrBuD,QAAQ,EAAEA,CAAA,KAAMY,YAAY,CAAE9C,SAAS,EAAE,IAAK,CAAC;MAC/C8B,IAAI,EAAEvC;IACP,CAAE,CAAC;EACJ;EACA,IAAKmE,YAAY,EAAG;IACnBhC,QAAQ,CAACoC,IAAI,CAAE;MACdxC,IAAI,EAAE,WAAW;MACjBU,KAAK,EAAErD,EAAE,CAAE,WAAY,CAAC;MACxBuD,QAAQ,EAAEA,CAAA,KAAMa,eAAe,CAAE/C,SAAS,EAAE,IAAK,CAAC;MAClD8B,IAAI,EAAEzC;IACP,CAAE,CAAC;EACJ;EACA,IAAKwE,OAAO,EAAG;IACdnC,QAAQ,CAACoC,IAAI,CAAE;MACdxC,IAAI,EAAE,SAAS;MACfU,KAAK,EAAErD,EAAE,CAAE,SAAU,CAAC;MACtBuD,QAAQ,EAAEA,CAAA,KAAM;QACfiB,iBAAiB,CAAE,IAAK,CAAC;QACzBC,WAAW,CAAEpD,SAAS,CAAE,CAAC,CAAG,CAAC;QAC7BkD,sBAAsB,CAAElD,SAAS,CAAE,CAAC,CAAG,CAAC;MACzC,CAAC;MACD8B,IAAI,EAAEjC;IACP,CAAE,CAAC;EACJ;EACA,IAAKwC,aAAa,EAAG;IACpBX,QAAQ,CAACoC,IAAI,CAAE;MACdxC,IAAI,EAAE,SAAS;MACfU,KAAK,EAAErD,EAAE,CAAE,SAAU,CAAC;MACtBuD,QAAQ,EAAEqB,SAAS;MACnBzB,IAAI,EAAEnC;IACP,CAAE,CAAC;EACJ;EACA,IAAK2C,WAAW,EAAG;IAClBZ,QAAQ,CAACoC,IAAI,CAAE;MACdxC,IAAI,EAAE,OAAO;MACbU,KAAK,EAAErD,EAAE,CAAE,OAAQ,CAAC;MACpBuD,QAAQ,EAAEmB,OAAO;MACjBvB,IAAI,EAAEpC;IACP,CAAE,CAAC;EACJ;EACA,OAAO;IACN+B,SAAS,EAAE,KAAK;IAChBC,QAAQ,EAAEA,QAAQ,CAACC,GAAG,CAAIoC,OAAO,KAAQ;MACxC,GAAGA,OAAO;MACVzC,IAAI,EAAE,2BAA2B,GAAGyC,OAAO,CAACzC,IAAI;MAChDY,QAAQ,EAAEA,CAAE;QAAEC;MAAM,CAAC,KAAM;QAC1B4B,OAAO,CAAC7B,QAAQ,CAAC,CAAC;QAClBC,KAAK,CAAC,CAAC;MACR;IACD,CAAC,CAAG;EACL,CAAC;AACF,CAAC;AAED,OAAO,MAAM6B,gBAAgB,GAAGA,CAAA,KAAM;EACrC5E,gBAAgB,CAAE;IACjBkC,IAAI,EAAE,mCAAmC;IACzC2C,IAAI,EAAElE;EACP,CAAE,CAAC;EACHX,gBAAgB,CAAE;IACjBkC,IAAI,EAAE,gCAAgC;IACtC2C,IAAI,EAAE7B;EACP,CAAE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"names":["__","sprintf","hasBlockSupport","store","blocksStore","switchToBlockType","isTemplatePart","useSelect","useDispatch","useCommandLoader","copy","trash","remove","plus","add","group","ungroup","moveTo","move","BlockIcon","blockEditorStore","useTransformCommands","clientIds","select","getSelectedBlockClientIds","selectedBlockClientIds","blocks","getBlocksByClientId","replaceBlocks","multiSelect","possibleBlockTransformations","canRemove","getBlockRootClientId","getBlockTransformItems","canRemoveBlocks","rootClientId","Array","isArray","isTemplate","length","selectForMultipleBlocks","insertedBlocks","clientId","onBlockTransform","name","newBlocks","hasPossibleBlockTransformations","isLoading","commands","map","transformation","title","icon","replace","label","createElement","callback","close","useActionsCommands","isUngroupable","isGroupable","_isUngroupable","_isGroupable","canInsertBlockType","canMoveBlocks","getBlockCount","getDefaultBlockName","getGroupingBlockName","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","setBlockMovingClientId","setNavigationMode","selectBlock","onGroup","groupingBlockName","onUngroup","innerBlocks","canInsertDefaultBlock","canDuplicate","every","block","canMove","push","command","useBlockCommands","hook"],"sources":["@wordpress/block-editor/src/components/use-block-commands/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\thasBlockSupport,\n\tstore as blocksStore,\n\tswitchToBlockType,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useCommandLoader } from '@wordpress/commands';\nimport {\n\tcopy,\n\ttrash as remove,\n\tplus as add,\n\tgroup,\n\tungroup,\n\tmoveTo as move,\n} from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\n\nexport const useTransformCommands = () => {\n\tconst { clientIds } = useSelect( ( select ) => {\n\t\tconst { getSelectedBlockClientIds } = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t};\n\t}, [] );\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ),\n\t\t[ clientIds ]\n\t);\n\tconst { replaceBlocks, multiSelect } = useDispatch( blockEditorStore );\n\tconst { possibleBlockTransformations, canRemove } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockTransformItems,\n\t\t\t\tcanRemoveBlocks,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst rootClientId = getBlockRootClientId(\n\t\t\t\tArray.isArray( clientIds ) ? clientIds[ 0 ] : clientIds\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tpossibleBlockTransformations: getBlockTransformItems(\n\t\t\t\t\tblocks,\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanRemove: canRemoveBlocks( clientIds, rootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\n\tconst isTemplate = blocks.length === 1 && isTemplatePart( blocks[ 0 ] );\n\n\tfunction selectForMultipleBlocks( insertedBlocks ) {\n\t\tif ( insertedBlocks.length > 1 ) {\n\t\t\tmultiSelect(\n\t\t\t\tinsertedBlocks[ 0 ].clientId,\n\t\t\t\tinsertedBlocks[ insertedBlocks.length - 1 ].clientId\n\t\t\t);\n\t\t}\n\t}\n\n\t// Simple block tranformation based on the `Block Transforms` API.\n\tfunction onBlockTransform( name ) {\n\t\tconst newBlocks = switchToBlockType( blocks, name );\n\t\treplaceBlocks( clientIds, newBlocks );\n\t\tselectForMultipleBlocks( newBlocks );\n\t}\n\n\t/**\n\t * The `isTemplate` check is a stopgap solution here.\n\t * Ideally, the Transforms API should handle this\n\t * by allowing to exclude blocks from wildcard transformations.\n\t */\n\tconst hasPossibleBlockTransformations =\n\t\t!! possibleBlockTransformations.length && canRemove && ! isTemplate;\n\n\tif (\n\t\t! clientIds ||\n\t\tclientIds.length < 1 ||\n\t\t! hasPossibleBlockTransformations\n\t) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst commands = possibleBlockTransformations.map( ( transformation ) => {\n\t\tconst { name, title, icon } = transformation;\n\t\treturn {\n\t\t\tname: 'core/block-editor/transform-to-' + name.replace( '/', '-' ),\n\t\t\t// translators: %s: block title/name.\n\t\t\tlabel: sprintf( __( 'Transform to %s' ), title ),\n\t\t\ticon: <BlockIcon icon={ icon } />,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tonBlockTransform( name );\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\n};\n\nconst useActionsCommands = () => {\n\tconst { clientIds, isUngroupable, isGroupable } = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable,\n\t\t\tisGroupable: _isGroupable,\n\t\t} = select( blockEditorStore );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\n\t\treturn {\n\t\t\tclientIds: selectedBlockClientIds,\n\t\t\tisUngroupable: _isUngroupable(),\n\t\t\tisGroupable: _isGroupable(),\n\t\t};\n\t}, [] );\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanMoveBlocks,\n\t\tcanRemoveBlocks,\n\t\tgetBlockCount,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tsetBlockMovingClientId,\n\t\tsetNavigationMode,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst onGroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\tif ( ! newBlocks ) {\n\t\t\treturn;\n\t\t}\n\t\treplaceBlocks( clientIds, newBlocks );\n\t};\n\tconst onUngroup = () => {\n\t\tif ( ! blocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\tif ( ! innerBlocks.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\treplaceBlocks( clientIds, innerBlocks );\n\t};\n\n\tif ( ! clientIds || clientIds.length < 1 ) {\n\t\treturn { isLoading: false, commands: [] };\n\t}\n\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\tconst canMove =\n\t\tcanMoveBlocks( clientIds, rootClientId ) &&\n\t\tgetBlockCount( rootClientId ) !== 1;\n\n\tconst commands = [];\n\tif ( canInsertDefaultBlock ) {\n\t\tcommands.push(\n\t\t\t{\n\t\t\t\tname: 'add-after',\n\t\t\t\tlabel: __( 'Add after' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertAfterBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'add-before',\n\t\t\t\tlabel: __( 'Add before' ),\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t\t\t: clientId;\n\t\t\t\t\tinsertBeforeBlock( clientId );\n\t\t\t\t},\n\t\t\t\ticon: add,\n\t\t\t}\n\t\t);\n\t}\n\tif ( canRemove ) {\n\t\tcommands.push( {\n\t\t\tname: 'remove',\n\t\t\tlabel: __( 'Delete' ),\n\t\t\tcallback: () => removeBlocks( clientIds, true ),\n\t\t\ticon: remove,\n\t\t} );\n\t}\n\tif ( canDuplicate ) {\n\t\tcommands.push( {\n\t\t\tname: 'duplicate',\n\t\t\tlabel: __( 'Duplicate' ),\n\t\t\tcallback: () => duplicateBlocks( clientIds, true ),\n\t\t\ticon: copy,\n\t\t} );\n\t}\n\tif ( canMove ) {\n\t\tcommands.push( {\n\t\t\tname: 'move-to',\n\t\t\tlabel: __( 'Move to' ),\n\t\t\tcallback: () => {\n\t\t\t\tsetNavigationMode( true );\n\t\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t\t},\n\t\t\ticon: move,\n\t\t} );\n\t}\n\tif ( isUngroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'ungroup',\n\t\t\tlabel: __( 'Ungroup' ),\n\t\t\tcallback: onUngroup,\n\t\t\ticon: ungroup,\n\t\t} );\n\t}\n\tif ( isGroupable ) {\n\t\tcommands.push( {\n\t\t\tname: 'Group',\n\t\t\tlabel: __( 'Group' ),\n\t\t\tcallback: onGroup,\n\t\t\ticon: group,\n\t\t} );\n\t}\n\treturn {\n\t\tisLoading: false,\n\t\tcommands: commands.map( ( command ) => ( {\n\t\t\t...command,\n\t\t\tname: 'core/block-editor/action-' + command.name,\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcommand.callback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t} ) ),\n\t};\n};\n\nexport const useBlockCommands = () => {\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockTransforms',\n\t\thook: useTransformCommands,\n\t} );\n\tuseCommandLoader( {\n\t\tname: 'core/block-editor/blockActions',\n\t\thook: useActionsCommands,\n\t} );\n};\n"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { createElement, Fragment } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { createHigherOrderComponent } from '@wordpress/compose';
6
+ import { addFilter } from '@wordpress/hooks';
7
+ import { __ } from '@wordpress/i18n';
8
+ import { hasBlockSupport } from '@wordpress/blocks';
9
+ import { TextControl } from '@wordpress/components';
10
+
11
+ /**
12
+ * Internal dependencies
13
+ */
14
+ import { InspectorControls } from '../components';
15
+ export const withBlockRenameControl = createHigherOrderComponent(BlockEdit => props => {
16
+ const {
17
+ name,
18
+ attributes,
19
+ setAttributes,
20
+ isSelected
21
+ } = props;
22
+ const supportsBlockNaming = hasBlockSupport(name, 'renaming', true);
23
+ return createElement(Fragment, null, isSelected && supportsBlockNaming && createElement(InspectorControls, {
24
+ group: "advanced"
25
+ }, createElement(TextControl, {
26
+ __nextHasNoMarginBottom: true,
27
+ label: __('Block name'),
28
+ value: attributes?.metadata?.name || '',
29
+ onChange: newName => {
30
+ setAttributes({
31
+ metadata: {
32
+ ...attributes?.metadata,
33
+ name: newName
34
+ }
35
+ });
36
+ }
37
+ })), createElement(BlockEdit, {
38
+ key: "edit",
39
+ ...props
40
+ }));
41
+ }, 'withToolbarControls');
42
+ addFilter('editor.BlockEdit', 'core/block-rename-ui/with-block-rename-control', withBlockRenameControl);
43
+ //# sourceMappingURL=block-rename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createHigherOrderComponent","addFilter","__","hasBlockSupport","TextControl","InspectorControls","withBlockRenameControl","BlockEdit","props","name","attributes","setAttributes","isSelected","supportsBlockNaming","createElement","Fragment","group","__nextHasNoMarginBottom","label","value","metadata","onChange","newName","key"],"sources":["@wordpress/block-editor/src/hooks/block-rename.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { addFilter } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\nimport { hasBlockSupport } from '@wordpress/blocks';\nimport { TextControl } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\n\nexport const withBlockRenameControl = createHigherOrderComponent(\n\t( BlockEdit ) => ( props ) => {\n\t\tconst { name, attributes, setAttributes, isSelected } = props;\n\n\t\tconst supportsBlockNaming = hasBlockSupport( name, 'renaming', true );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ isSelected && supportsBlockNaming && (\n\t\t\t\t\t<InspectorControls group=\"advanced\">\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Block name' ) }\n\t\t\t\t\t\t\tvalue={ attributes?.metadata?.name || '' }\n\t\t\t\t\t\t\tonChange={ ( newName ) => {\n\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\t\t\t\t\tname: newName,\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/>\n\t\t\t\t\t</InspectorControls>\n\t\t\t\t) }\n\n\t\t\t\t<BlockEdit key=\"edit\" { ...props } />\n\t\t\t</>\n\t\t);\n\t},\n\t'withToolbarControls'\n);\n\naddFilter(\n\t'editor.BlockEdit',\n\t'core/block-rename-ui/with-block-rename-control',\n\twithBlockRenameControl\n);\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,0BAA0B,QAAQ,oBAAoB;AAC/D,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,WAAW,QAAQ,uBAAuB;;AAEnD;AACA;AACA;AACA,SAASC,iBAAiB,QAAQ,eAAe;AAEjD,OAAO,MAAMC,sBAAsB,GAAGN,0BAA0B,CAC7DO,SAAS,IAAQC,KAAK,IAAM;EAC7B,MAAM;IAAEC,IAAI;IAAEC,UAAU;IAAEC,aAAa;IAAEC;EAAW,CAAC,GAAGJ,KAAK;EAE7D,MAAMK,mBAAmB,GAAGV,eAAe,CAAEM,IAAI,EAAE,UAAU,EAAE,IAAK,CAAC;EAErE,OACCK,aAAA,CAAAC,QAAA,QACGH,UAAU,IAAIC,mBAAmB,IAClCC,aAAA,CAACT,iBAAiB;IAACW,KAAK,EAAC;EAAU,GAClCF,aAAA,CAACV,WAAW;IACXa,uBAAuB;IACvBC,KAAK,EAAGhB,EAAE,CAAE,YAAa,CAAG;IAC5BiB,KAAK,EAAGT,UAAU,EAAEU,QAAQ,EAAEX,IAAI,IAAI,EAAI;IAC1CY,QAAQ,EAAKC,OAAO,IAAM;MACzBX,aAAa,CAAE;QACdS,QAAQ,EAAE;UACT,GAAGV,UAAU,EAAEU,QAAQ;UACvBX,IAAI,EAAEa;QACP;MACD,CAAE,CAAC;IACJ;EAAG,CACH,CACiB,CACnB,EAEDR,aAAA,CAACP,SAAS;IAACgB,GAAG,EAAC,MAAM;IAAA,GAAMf;EAAK,CAAI,CACnC,CAAC;AAEL,CAAC,EACD,qBACD,CAAC;AAEDP,SAAS,CACR,kBAAkB,EAClB,gDAAgD,EAChDK,sBACD,CAAC"}
@@ -22,7 +22,7 @@ import './metadata';
22
22
  import './metadata-name';
23
23
  import './custom-fields';
24
24
  import './block-hooks';
25
- import './block-rename-ui';
25
+ import './block-rename';
26
26
  export { useCustomSides } from './dimensions';
27
27
  export { useLayoutClasses, useLayoutStyles } from './layout';
28
28
  export { getBorderClassesAndStyles, useBorderProps } from './use-border-props';
@@ -1 +1 @@
1
- {"version":3,"names":["useCustomSides","useLayoutClasses","useLayoutStyles","getBorderClassesAndStyles","useBorderProps","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getTypographyClassesAndStyles","getGapCSSValue","useCachedTruthy"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-family';\nimport './font-size';\nimport './border';\nimport './position';\nimport './layout';\nimport './content-lock-ui';\nimport './metadata';\nimport './metadata-name';\nimport './custom-fields';\nimport './block-hooks';\nimport './block-rename-ui';\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,UAAU;AACjB,OAAO,SAAS;AAChB,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,qBAAqB;AAC5B,OAAO,wBAAwB;AAC/B,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,OAAO,eAAe;AACtB,OAAO,aAAa;AACpB,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AACnB,OAAO,iBAAiB;AACxB,OAAO,iBAAiB;AACxB,OAAO,eAAe;AACtB,OAAO,mBAAmB;AAE1B,SAASA,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,UAAU;AAC5D,SAASC,yBAAyB,EAAEC,cAAc,QAAQ,oBAAoB;AAC9E,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,mBAAmB;AAC3E,SAASC,0BAA0B,QAAQ,qBAAqB;AAChE,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SAASC,cAAc,QAAQ,OAAO;AACtC,SAASC,eAAe,QAAQ,qBAAqB"}
1
+ {"version":3,"names":["useCustomSides","useLayoutClasses","useLayoutStyles","getBorderClassesAndStyles","useBorderProps","getColorClassesAndStyles","useColorProps","getSpacingClassesAndStyles","getTypographyClassesAndStyles","getGapCSSValue","useCachedTruthy"],"sources":["@wordpress/block-editor/src/hooks/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport './compat';\nimport './align';\nimport './lock';\nimport './anchor';\nimport './aria-label';\nimport './custom-class-name';\nimport './generated-class-name';\nimport './style';\nimport './settings';\nimport './color';\nimport './duotone';\nimport './font-family';\nimport './font-size';\nimport './border';\nimport './position';\nimport './layout';\nimport './content-lock-ui';\nimport './metadata';\nimport './metadata-name';\nimport './custom-fields';\nimport './block-hooks';\nimport './block-rename';\n\nexport { useCustomSides } from './dimensions';\nexport { useLayoutClasses, useLayoutStyles } from './layout';\nexport { getBorderClassesAndStyles, useBorderProps } from './use-border-props';\nexport { getColorClassesAndStyles, useColorProps } from './use-color-props';\nexport { getSpacingClassesAndStyles } from './use-spacing-props';\nexport { getTypographyClassesAndStyles } from './use-typography-props';\nexport { getGapCSSValue } from './gap';\nexport { useCachedTruthy } from './use-cached-truthy';\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAO,UAAU;AACjB,OAAO,SAAS;AAChB,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,cAAc;AACrB,OAAO,qBAAqB;AAC5B,OAAO,wBAAwB;AAC/B,OAAO,SAAS;AAChB,OAAO,YAAY;AACnB,OAAO,SAAS;AAChB,OAAO,WAAW;AAClB,OAAO,eAAe;AACtB,OAAO,aAAa;AACpB,OAAO,UAAU;AACjB,OAAO,YAAY;AACnB,OAAO,UAAU;AACjB,OAAO,mBAAmB;AAC1B,OAAO,YAAY;AACnB,OAAO,iBAAiB;AACxB,OAAO,iBAAiB;AACxB,OAAO,eAAe;AACtB,OAAO,gBAAgB;AAEvB,SAASA,cAAc,QAAQ,cAAc;AAC7C,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,UAAU;AAC5D,SAASC,yBAAyB,EAAEC,cAAc,QAAQ,oBAAoB;AAC9E,SAASC,wBAAwB,EAAEC,aAAa,QAAQ,mBAAmB;AAC3E,SAASC,0BAA0B,QAAQ,qBAAqB;AAChE,SAASC,6BAA6B,QAAQ,wBAAwB;AACtE,SAASC,cAAc,QAAQ,OAAO;AACtC,SAASC,eAAe,QAAQ,qBAAqB"}
@@ -1008,6 +1008,10 @@
1008
1008
  z-index: 1;
1009
1009
  }
1010
1010
 
1011
+ .block-editor-block-rename-modal {
1012
+ z-index: 1000001;
1013
+ }
1014
+
1011
1015
  .block-editor-block-settings-menu__popover .components-dropdown-menu__menu {
1012
1016
  padding: 0;
1013
1017
  }
@@ -3377,10 +3381,6 @@
3377
3381
  grid-column: span 1;
3378
3382
  }
3379
3383
 
3380
- .block-editor-block-rename-modal {
3381
- z-index: 1000001;
3382
- }
3383
-
3384
3384
  /**
3385
3385
  * Block Toolbar
3386
3386
  */
@@ -1008,6 +1008,10 @@
1008
1008
  z-index: 1;
1009
1009
  }
1010
1010
 
1011
+ .block-editor-block-rename-modal {
1012
+ z-index: 1000001;
1013
+ }
1014
+
1011
1015
  .block-editor-block-settings-menu__popover .components-dropdown-menu__menu {
1012
1016
  padding: 0;
1013
1017
  }
@@ -3378,10 +3382,6 @@
3378
3382
  grid-column: span 1;
3379
3383
  }
3380
3384
 
3381
- .block-editor-block-rename-modal {
3382
- z-index: 1000001;
3383
- }
3384
-
3385
3385
  /**
3386
3386
  * Block Toolbar
3387
3387
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-editor",
3
- "version": "12.10.9",
3
+ "version": "12.10.11",
4
4
  "description": "Generic block editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -35,36 +35,36 @@
35
35
  "@emotion/react": "^11.7.1",
36
36
  "@emotion/styled": "^11.6.0",
37
37
  "@react-spring/web": "^9.4.5",
38
- "@wordpress/a11y": "^3.42.9",
39
- "@wordpress/api-fetch": "^6.39.9",
40
- "@wordpress/blob": "^3.42.9",
41
- "@wordpress/blocks": "^12.19.9",
42
- "@wordpress/commands": "^0.13.9",
43
- "@wordpress/components": "^25.8.9",
44
- "@wordpress/compose": "^6.19.9",
45
- "@wordpress/data": "^9.12.9",
46
- "@wordpress/date": "^4.42.9",
47
- "@wordpress/deprecated": "^3.42.9",
48
- "@wordpress/dom": "^3.42.9",
49
- "@wordpress/element": "^5.19.9",
50
- "@wordpress/escape-html": "^2.42.9",
51
- "@wordpress/hooks": "^3.42.9",
52
- "@wordpress/html-entities": "^3.42.9",
53
- "@wordpress/i18n": "^4.42.9",
54
- "@wordpress/icons": "^9.33.9",
55
- "@wordpress/is-shallow-equal": "^4.42.9",
56
- "@wordpress/keyboard-shortcuts": "^4.19.9",
57
- "@wordpress/keycodes": "^3.42.9",
58
- "@wordpress/notices": "^4.10.9",
59
- "@wordpress/preferences": "^3.19.9",
60
- "@wordpress/private-apis": "^0.24.9",
61
- "@wordpress/rich-text": "^6.19.9",
62
- "@wordpress/shortcode": "^3.42.9",
63
- "@wordpress/style-engine": "^1.25.9",
64
- "@wordpress/token-list": "^2.42.9",
65
- "@wordpress/url": "^3.43.9",
66
- "@wordpress/warning": "^2.42.9",
67
- "@wordpress/wordcount": "^3.42.9",
38
+ "@wordpress/a11y": "^3.42.11",
39
+ "@wordpress/api-fetch": "^6.39.11",
40
+ "@wordpress/blob": "^3.42.11",
41
+ "@wordpress/blocks": "^12.19.11",
42
+ "@wordpress/commands": "^0.13.11",
43
+ "@wordpress/components": "^25.8.11",
44
+ "@wordpress/compose": "^6.19.11",
45
+ "@wordpress/data": "^9.12.11",
46
+ "@wordpress/date": "^4.42.11",
47
+ "@wordpress/deprecated": "^3.42.11",
48
+ "@wordpress/dom": "^3.42.11",
49
+ "@wordpress/element": "^5.19.11",
50
+ "@wordpress/escape-html": "^2.42.11",
51
+ "@wordpress/hooks": "^3.42.11",
52
+ "@wordpress/html-entities": "^3.42.11",
53
+ "@wordpress/i18n": "^4.42.11",
54
+ "@wordpress/icons": "^9.33.11",
55
+ "@wordpress/is-shallow-equal": "^4.42.11",
56
+ "@wordpress/keyboard-shortcuts": "^4.19.11",
57
+ "@wordpress/keycodes": "^3.42.11",
58
+ "@wordpress/notices": "^4.10.11",
59
+ "@wordpress/preferences": "^3.19.11",
60
+ "@wordpress/private-apis": "^0.24.11",
61
+ "@wordpress/rich-text": "^6.19.11",
62
+ "@wordpress/shortcode": "^3.42.11",
63
+ "@wordpress/style-engine": "^1.25.11",
64
+ "@wordpress/token-list": "^2.42.11",
65
+ "@wordpress/url": "^3.43.11",
66
+ "@wordpress/warning": "^2.42.11",
67
+ "@wordpress/wordcount": "^3.42.11",
68
68
  "change-case": "^4.1.2",
69
69
  "classnames": "^2.3.1",
70
70
  "colord": "^2.7.0",
@@ -86,5 +86,5 @@
86
86
  "publishConfig": {
87
87
  "access": "public"
88
88
  },
89
- "gitHead": "869f3c0fffbae25b9caff583ff534881bcba5be6"
89
+ "gitHead": "6fcbf0077299e6c5aa42c83110c04cf3c9078e92"
90
90
  }
@@ -0,0 +1,3 @@
1
+ export { default as BlockRenameControl } from './rename-control';
2
+ export { default as BlockRenameModal } from './modal';
3
+ export { default as useBlockRename } from './use-block-rename';
@@ -0,0 +1,3 @@
1
+ export default function isEmptyString( testString ) {
2
+ return testString?.trim()?.length === 0;
3
+ }