@wordpress/block-editor 12.8.1 → 12.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +5 -12
  3. package/build/components/block-list/block-outline.native.js +4 -3
  4. package/build/components/block-list/block-outline.native.js.map +1 -1
  5. package/build/components/block-list/index.js +4 -3
  6. package/build/components/block-list/index.js.map +1 -1
  7. package/build/components/block-popover/inbetween.js +4 -5
  8. package/build/components/block-popover/inbetween.js.map +1 -1
  9. package/build/components/block-popover/index.js +3 -2
  10. package/build/components/block-popover/index.js.map +1 -1
  11. package/build/components/color-style-selector/index.js +1 -1
  12. package/build/components/color-style-selector/index.js.map +1 -1
  13. package/build/components/inserter/reusable-blocks-tab.native.js +7 -4
  14. package/build/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  15. package/build/components/inserter/search-results.native.js +10 -8
  16. package/build/components/inserter/search-results.native.js.map +1 -1
  17. package/build/components/link-control/index.js +1 -7
  18. package/build/components/link-control/index.js.map +1 -1
  19. package/build/components/list-view/block-select-button.js +48 -7
  20. package/build/components/list-view/block-select-button.js.map +1 -1
  21. package/build/components/list-view/drop-indicator.js +3 -3
  22. package/build/components/list-view/drop-indicator.js.map +1 -1
  23. package/build/components/list-view/index.js +14 -8
  24. package/build/components/list-view/index.js.map +1 -1
  25. package/build/components/list-view/use-list-view-images.js +5 -4
  26. package/build/components/list-view/use-list-view-images.js.map +1 -1
  27. package/build/components/preview-options/index.js +3 -1
  28. package/build/components/preview-options/index.js.map +1 -1
  29. package/build/components/provider/index.js +3 -1
  30. package/build/components/provider/index.js.map +1 -1
  31. package/build/components/use-block-commands/index.js +74 -63
  32. package/build/components/use-block-commands/index.js.map +1 -1
  33. package/build/components/warning/index.js +1 -1
  34. package/build/components/warning/index.js.map +1 -1
  35. package/build/hooks/auto-inserting-blocks.js +174 -0
  36. package/build/hooks/auto-inserting-blocks.js.map +1 -0
  37. package/build/hooks/index.js +1 -0
  38. package/build/hooks/index.js.map +1 -1
  39. package/build-module/components/block-list/block-outline.native.js +4 -3
  40. package/build-module/components/block-list/block-outline.native.js.map +1 -1
  41. package/build-module/components/block-list/index.js +4 -3
  42. package/build-module/components/block-list/index.js.map +1 -1
  43. package/build-module/components/block-popover/inbetween.js +4 -5
  44. package/build-module/components/block-popover/inbetween.js.map +1 -1
  45. package/build-module/components/block-popover/index.js +3 -2
  46. package/build-module/components/block-popover/index.js.map +1 -1
  47. package/build-module/components/color-style-selector/index.js +1 -1
  48. package/build-module/components/color-style-selector/index.js.map +1 -1
  49. package/build-module/components/inserter/reusable-blocks-tab.native.js +8 -4
  50. package/build-module/components/inserter/reusable-blocks-tab.native.js.map +1 -1
  51. package/build-module/components/inserter/search-results.native.js +11 -8
  52. package/build-module/components/inserter/search-results.native.js.map +1 -1
  53. package/build-module/components/link-control/index.js +1 -7
  54. package/build-module/components/link-control/index.js.map +1 -1
  55. package/build-module/components/list-view/block-select-button.js +48 -7
  56. package/build-module/components/list-view/block-select-button.js.map +1 -1
  57. package/build-module/components/list-view/drop-indicator.js +3 -3
  58. package/build-module/components/list-view/drop-indicator.js.map +1 -1
  59. package/build-module/components/list-view/index.js +14 -8
  60. package/build-module/components/list-view/index.js.map +1 -1
  61. package/build-module/components/list-view/use-list-view-images.js +5 -4
  62. package/build-module/components/list-view/use-list-view-images.js.map +1 -1
  63. package/build-module/components/preview-options/index.js +3 -1
  64. package/build-module/components/preview-options/index.js.map +1 -1
  65. package/build-module/components/provider/index.js +3 -1
  66. package/build-module/components/provider/index.js.map +1 -1
  67. package/build-module/components/use-block-commands/index.js +74 -63
  68. package/build-module/components/use-block-commands/index.js.map +1 -1
  69. package/build-module/components/warning/index.js +2 -2
  70. package/build-module/components/warning/index.js.map +1 -1
  71. package/build-module/hooks/auto-inserting-blocks.js +167 -0
  72. package/build-module/hooks/auto-inserting-blocks.js.map +1 -0
  73. package/build-module/hooks/index.js +1 -0
  74. package/build-module/hooks/index.js.map +1 -1
  75. package/build-style/content-rtl.css +8 -7
  76. package/build-style/content.css +8 -7
  77. package/package.json +32 -32
  78. package/src/components/block-list/block-outline.native.js +5 -2
  79. package/src/components/block-list/content.scss +2 -3
  80. package/src/components/block-list/index.js +4 -3
  81. package/src/components/block-popover/inbetween.js +4 -3
  82. package/src/components/block-popover/index.js +3 -2
  83. package/src/components/button-block-appender/content.scss +8 -0
  84. package/src/components/color-style-selector/index.js +1 -1
  85. package/src/components/inserter/reusable-blocks-tab.native.js +7 -2
  86. package/src/components/inserter/search-results.native.js +13 -9
  87. package/src/components/link-control/index.js +1 -5
  88. package/src/components/link-control/test/index.js +1 -0
  89. package/src/components/list-view/block-select-button.js +67 -15
  90. package/src/components/list-view/drop-indicator.js +4 -5
  91. package/src/components/list-view/index.js +19 -13
  92. package/src/components/list-view/use-list-view-images.js +8 -4
  93. package/src/components/observe-typing/README.md +2 -2
  94. package/src/components/preview-options/index.js +2 -0
  95. package/src/components/provider/index.js +8 -1
  96. package/src/components/use-block-commands/index.js +92 -88
  97. package/src/components/warning/index.js +2 -2
  98. package/src/hooks/auto-inserting-blocks.js +232 -0
  99. package/src/hooks/index.js +1 -0
  100. package/build/utils/pre-parse-patterns.js +0 -68
  101. package/build/utils/pre-parse-patterns.js.map +0 -1
  102. package/build-module/utils/pre-parse-patterns.js +0 -61
  103. package/build-module/utils/pre-parse-patterns.js.map +0 -1
  104. package/src/components/url-popover/test/__snapshots__/index.js.snap +0 -133
  105. package/src/components/url-popover/test/index.js +0 -75
  106. package/src/utils/pre-parse-patterns.js +0 -69
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","useSelect","store","blockEditorStore","MAX_IMAGES","getImageUrl","block","name","attributes","url","alt","getImagesFromGallery","innerBlocks","images","innerBlock","img","push","length","getImagesFromBlock","isExpanded","useListViewImages","clientId","select","_block","getBlock"],"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-images.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n// Maximum number of images to display in a list view row.\nconst MAX_IMAGES = 3;\n\nfunction getImageUrl( block ) {\n\tif ( block.name !== 'core/image' ) {\n\t\treturn;\n\t}\n\n\tif ( block.attributes?.url ) {\n\t\treturn { url: block.attributes.url, alt: block.attributes.alt };\n\t}\n}\n\nfunction getImagesFromGallery( block ) {\n\tif ( block.name !== 'core/gallery' || ! block.innerBlocks ) {\n\t\treturn [];\n\t}\n\n\tconst images = [];\n\n\tfor ( const innerBlock of block.innerBlocks ) {\n\t\tconst img = getImageUrl( innerBlock );\n\t\tif ( img ) {\n\t\t\timages.push( img );\n\t\t}\n\t\tif ( images.length >= MAX_IMAGES ) {\n\t\t\treturn images;\n\t\t}\n\t}\n\n\treturn images;\n}\n\nfunction getImagesFromBlock( block, isExpanded ) {\n\tconst img = getImageUrl( block );\n\tif ( img ) {\n\t\treturn [ img ];\n\t}\n\treturn isExpanded ? [] : getImagesFromGallery( block );\n}\n\n/**\n * Get a block's preview images for display within a list view row.\n *\n * TODO: Currently only supports images from the core/image and core/gallery\n * blocks. This should be expanded to support other blocks that have images,\n * potentially via an API that blocks can opt into / provide their own logic.\n *\n * @param {Object} props Hook properties.\n * @param {string} props.clientId The block's clientId.\n * @param {boolean} props.isExpanded Whether or not the block is expanded in the list view.\n * @return {Array} Images.\n */\nexport default function useListViewImages( { clientId, isExpanded } ) {\n\tconst { block } = useSelect(\n\t\t( select ) => {\n\t\t\tconst _block = select( blockEditorStore ).getBlock( clientId );\n\t\t\treturn { block: _block };\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst images = useMemo( () => {\n\t\treturn getImagesFromBlock( block, isExpanded );\n\t}, [ block, isExpanded ] );\n\n\treturn images;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;;AAEvD;AACA,MAAMC,UAAU,GAAG,CAAC;AAEpB,SAASC,WAAWA,CAAEC,KAAK,EAAG;EAC7B,IAAKA,KAAK,CAACC,IAAI,KAAK,YAAY,EAAG;IAClC;EACD;EAEA,IAAKD,KAAK,CAACE,UAAU,EAAEC,GAAG,EAAG;IAC5B,OAAO;MAAEA,GAAG,EAAEH,KAAK,CAACE,UAAU,CAACC,GAAG;MAAEC,GAAG,EAAEJ,KAAK,CAACE,UAAU,CAACE;IAAI,CAAC;EAChE;AACD;AAEA,SAASC,oBAAoBA,CAAEL,KAAK,EAAG;EACtC,IAAKA,KAAK,CAACC,IAAI,KAAK,cAAc,IAAI,CAAED,KAAK,CAACM,WAAW,EAAG;IAC3D,OAAO,EAAE;EACV;EAEA,MAAMC,MAAM,GAAG,EAAE;EAEjB,KAAM,MAAMC,UAAU,IAAIR,KAAK,CAACM,WAAW,EAAG;IAC7C,MAAMG,GAAG,GAAGV,WAAW,CAAES,UAAW,CAAC;IACrC,IAAKC,GAAG,EAAG;MACVF,MAAM,CAACG,IAAI,CAAED,GAAI,CAAC;IACnB;IACA,IAAKF,MAAM,CAACI,MAAM,IAAIb,UAAU,EAAG;MAClC,OAAOS,MAAM;IACd;EACD;EAEA,OAAOA,MAAM;AACd;AAEA,SAASK,kBAAkBA,CAAEZ,KAAK,EAAEa,UAAU,EAAG;EAChD,MAAMJ,GAAG,GAAGV,WAAW,CAAEC,KAAM,CAAC;EAChC,IAAKS,GAAG,EAAG;IACV,OAAO,CAAEA,GAAG,CAAE;EACf;EACA,OAAOI,UAAU,GAAG,EAAE,GAAGR,oBAAoB,CAAEL,KAAM,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASc,iBAAiBA,CAAE;EAAEC,QAAQ;EAAEF;AAAW,CAAC,EAAG;EACrE,MAAM;IAAEb;EAAM,CAAC,GAAGL,SAAS,CACxBqB,MAAM,IAAM;IACb,MAAMC,MAAM,GAAGD,MAAM,CAAEnB,gBAAiB,CAAC,CAACqB,QAAQ,CAAEH,QAAS,CAAC;IAC9D,OAAO;MAAEf,KAAK,EAAEiB;IAAO,CAAC;EACzB,CAAC,EACD,CAAEF,QAAQ,CACX,CAAC;EAED,MAAMR,MAAM,GAAGb,OAAO,CAAE,MAAM;IAC7B,OAAOkB,kBAAkB,CAAEZ,KAAK,EAAEa,UAAW,CAAC;EAC/C,CAAC,EAAE,CAAEb,KAAK,EAAEa,UAAU,CAAG,CAAC;EAE1B,OAAON,MAAM;AACd"}
1
+ {"version":3,"names":["useMemo","useSelect","store","blockEditorStore","MAX_IMAGES","getImage","block","name","attributes","url","alt","clientId","getImagesFromGallery","innerBlocks","images","innerBlock","img","push","length","getImagesFromBlock","isExpanded","useListViewImages","select","_block","getBlock"],"sources":["@wordpress/block-editor/src/components/list-view/use-list-view-images.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\n\n// Maximum number of images to display in a list view row.\nconst MAX_IMAGES = 3;\n\nfunction getImage( block ) {\n\tif ( block.name !== 'core/image' ) {\n\t\treturn;\n\t}\n\n\tif ( block.attributes?.url ) {\n\t\treturn {\n\t\t\turl: block.attributes.url,\n\t\t\talt: block.attributes.alt,\n\t\t\tclientId: block.clientId,\n\t\t};\n\t}\n}\n\nfunction getImagesFromGallery( block ) {\n\tif ( block.name !== 'core/gallery' || ! block.innerBlocks ) {\n\t\treturn [];\n\t}\n\n\tconst images = [];\n\n\tfor ( const innerBlock of block.innerBlocks ) {\n\t\tconst img = getImage( innerBlock );\n\t\tif ( img ) {\n\t\t\timages.push( img );\n\t\t}\n\t\tif ( images.length >= MAX_IMAGES ) {\n\t\t\treturn images;\n\t\t}\n\t}\n\n\treturn images;\n}\n\nfunction getImagesFromBlock( block, isExpanded ) {\n\tconst img = getImage( block );\n\tif ( img ) {\n\t\treturn [ img ];\n\t}\n\treturn isExpanded ? [] : getImagesFromGallery( block );\n}\n\n/**\n * Get a block's preview images for display within a list view row.\n *\n * TODO: Currently only supports images from the core/image and core/gallery\n * blocks. This should be expanded to support other blocks that have images,\n * potentially via an API that blocks can opt into / provide their own logic.\n *\n * @param {Object} props Hook properties.\n * @param {string} props.clientId The block's clientId.\n * @param {boolean} props.isExpanded Whether or not the block is expanded in the list view.\n * @return {Array} Images.\n */\nexport default function useListViewImages( { clientId, isExpanded } ) {\n\tconst { block } = useSelect(\n\t\t( select ) => {\n\t\t\tconst _block = select( blockEditorStore ).getBlock( clientId );\n\t\t\treturn { block: _block };\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\tconst images = useMemo( () => {\n\t\treturn getImagesFromBlock( block, isExpanded );\n\t}, [ block, isExpanded ] );\n\n\treturn images;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;;AAEvD;AACA,MAAMC,UAAU,GAAG,CAAC;AAEpB,SAASC,QAAQA,CAAEC,KAAK,EAAG;EAC1B,IAAKA,KAAK,CAACC,IAAI,KAAK,YAAY,EAAG;IAClC;EACD;EAEA,IAAKD,KAAK,CAACE,UAAU,EAAEC,GAAG,EAAG;IAC5B,OAAO;MACNA,GAAG,EAAEH,KAAK,CAACE,UAAU,CAACC,GAAG;MACzBC,GAAG,EAAEJ,KAAK,CAACE,UAAU,CAACE,GAAG;MACzBC,QAAQ,EAAEL,KAAK,CAACK;IACjB,CAAC;EACF;AACD;AAEA,SAASC,oBAAoBA,CAAEN,KAAK,EAAG;EACtC,IAAKA,KAAK,CAACC,IAAI,KAAK,cAAc,IAAI,CAAED,KAAK,CAACO,WAAW,EAAG;IAC3D,OAAO,EAAE;EACV;EAEA,MAAMC,MAAM,GAAG,EAAE;EAEjB,KAAM,MAAMC,UAAU,IAAIT,KAAK,CAACO,WAAW,EAAG;IAC7C,MAAMG,GAAG,GAAGX,QAAQ,CAAEU,UAAW,CAAC;IAClC,IAAKC,GAAG,EAAG;MACVF,MAAM,CAACG,IAAI,CAAED,GAAI,CAAC;IACnB;IACA,IAAKF,MAAM,CAACI,MAAM,IAAId,UAAU,EAAG;MAClC,OAAOU,MAAM;IACd;EACD;EAEA,OAAOA,MAAM;AACd;AAEA,SAASK,kBAAkBA,CAAEb,KAAK,EAAEc,UAAU,EAAG;EAChD,MAAMJ,GAAG,GAAGX,QAAQ,CAAEC,KAAM,CAAC;EAC7B,IAAKU,GAAG,EAAG;IACV,OAAO,CAAEA,GAAG,CAAE;EACf;EACA,OAAOI,UAAU,GAAG,EAAE,GAAGR,oBAAoB,CAAEN,KAAM,CAAC;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASe,iBAAiBA,CAAE;EAAEV,QAAQ;EAAES;AAAW,CAAC,EAAG;EACrE,MAAM;IAAEd;EAAM,CAAC,GAAGL,SAAS,CACxBqB,MAAM,IAAM;IACb,MAAMC,MAAM,GAAGD,MAAM,CAAEnB,gBAAiB,CAAC,CAACqB,QAAQ,CAAEb,QAAS,CAAC;IAC9D,OAAO;MAAEL,KAAK,EAAEiB;IAAO,CAAC;EACzB,CAAC,EACD,CAAEZ,QAAQ,CACX,CAAC;EAED,MAAMG,MAAM,GAAGd,OAAO,CAAE,MAAM;IAC7B,OAAOmB,kBAAkB,CAAEb,KAAK,EAAEc,UAAW,CAAC;EAC/C,CAAC,EAAE,CAAEd,KAAK,EAAEc,UAAU,CAAG,CAAC;EAE1B,OAAON,MAAM;AACd"}
@@ -29,6 +29,7 @@ export default function PreviewOptions({
29
29
  const toggleProps = {
30
30
  className: 'block-editor-post-preview__button-toggle',
31
31
  disabled: !isEnabled,
32
+ __experimentalIsFocusable: !isEnabled,
32
33
  children: viewLabel
33
34
  };
34
35
  const menuProps = {
@@ -45,7 +46,8 @@ export default function PreviewOptions({
45
46
  toggleProps: toggleProps,
46
47
  menuProps: menuProps,
47
48
  icon: deviceIcons[deviceType.toLowerCase()],
48
- label: label || __('Preview')
49
+ label: label || __('Preview'),
50
+ disableOpenOnArrowDown: !isEnabled
49
51
  }, renderProps => createElement(Fragment, null, createElement(MenuGroup, null, createElement(MenuItem, {
50
52
  className: "block-editor-post-preview__button-resize",
51
53
  onClick: () => setDeviceType('Desktop'),
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","useViewportMatch","DropdownMenu","MenuGroup","MenuItem","__","check","desktop","mobile","tablet","PreviewOptions","children","viewLabel","className","isEnabled","deviceType","setDeviceType","label","isMobile","popoverProps","placement","toggleProps","disabled","menuProps","deviceIcons","createElement","icon","toLowerCase","renderProps","Fragment","onClick"],"sources":["@wordpress/block-editor/src/components/preview-options/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { check, desktop, mobile, tablet } from '@wordpress/icons';\n\nexport default function PreviewOptions( {\n\tchildren,\n\tviewLabel,\n\tclassName,\n\tisEnabled = true,\n\tdeviceType,\n\tsetDeviceType,\n\tlabel,\n} ) {\n\tconst isMobile = useViewportMatch( 'small', '<' );\n\tif ( isMobile ) return null;\n\n\tconst popoverProps = {\n\t\tclassName: classnames(\n\t\t\tclassName,\n\t\t\t'block-editor-post-preview__dropdown-content'\n\t\t),\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'block-editor-post-preview__button-toggle',\n\t\tdisabled: ! isEnabled,\n\t\tchildren: viewLabel,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tmobile,\n\t\ttablet,\n\t\tdesktop,\n\t};\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"block-editor-post-preview__dropdown\"\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ label || __( 'Preview' ) }\n\t\t>\n\t\t\t{ ( renderProps ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Desktop' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Desktop' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Desktop' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Tablet' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Tablet' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Tablet' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Mobile' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Mobile' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Mobile' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ children( renderProps ) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,uBAAuB;AACzE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,EAAEC,OAAO,EAAEC,MAAM,EAAEC,MAAM,QAAQ,kBAAkB;AAEjE,eAAe,SAASC,cAAcA,CAAE;EACvCC,QAAQ;EACRC,SAAS;EACTC,SAAS;EACTC,SAAS,GAAG,IAAI;EAChBC,UAAU;EACVC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,MAAMC,QAAQ,GAAGjB,gBAAgB,CAAE,OAAO,EAAE,GAAI,CAAC;EACjD,IAAKiB,QAAQ,EAAG,OAAO,IAAI;EAE3B,MAAMC,YAAY,GAAG;IACpBN,SAAS,EAAEb,UAAU,CACpBa,SAAS,EACT,6CACD,CAAC;IACDO,SAAS,EAAE;EACZ,CAAC;EACD,MAAMC,WAAW,GAAG;IACnBR,SAAS,EAAE,0CAA0C;IACrDS,QAAQ,EAAE,CAAER,SAAS;IACrBH,QAAQ,EAAEC;EACX,CAAC;EACD,MAAMW,SAAS,GAAG;IACjB,YAAY,EAAElB,EAAE,CAAE,cAAe;EAClC,CAAC;EAED,MAAMmB,WAAW,GAAG;IACnBhB,MAAM;IACNC,MAAM;IACNF;EACD,CAAC;EAED,OACCkB,aAAA,CAACvB,YAAY;IACZW,SAAS,EAAC,qCAAqC;IAC/CM,YAAY,EAAGA,YAAc;IAC7BE,WAAW,EAAGA,WAAa;IAC3BE,SAAS,EAAGA,SAAW;IACvBG,IAAI,EAAGF,WAAW,CAAET,UAAU,CAACY,WAAW,CAAC,CAAC,CAAI;IAChDV,KAAK,EAAGA,KAAK,IAAIZ,EAAE,CAAE,SAAU;EAAG,GAE9BuB,WAAW,IACdH,aAAA,CAAAI,QAAA,QACCJ,aAAA,CAACtB,SAAS,QACTsB,aAAA,CAACrB,QAAQ;IACRS,SAAS,EAAC,0CAA0C;IACpDiB,OAAO,EAAGA,CAAA,KAAMd,aAAa,CAAE,SAAU,CAAG;IAC5CU,IAAI,EAAGX,UAAU,KAAK,SAAS,IAAIT;EAAO,GAExCD,EAAE,CAAE,SAAU,CACP,CAAC,EACXoB,aAAA,CAACrB,QAAQ;IACRS,SAAS,EAAC,0CAA0C;IACpDiB,OAAO,EAAGA,CAAA,KAAMd,aAAa,CAAE,QAAS,CAAG;IAC3CU,IAAI,EAAGX,UAAU,KAAK,QAAQ,IAAIT;EAAO,GAEvCD,EAAE,CAAE,QAAS,CACN,CAAC,EACXoB,aAAA,CAACrB,QAAQ;IACRS,SAAS,EAAC,0CAA0C;IACpDiB,OAAO,EAAGA,CAAA,KAAMd,aAAa,CAAE,QAAS,CAAG;IAC3CU,IAAI,EAAGX,UAAU,KAAK,QAAQ,IAAIT;EAAO,GAEvCD,EAAE,CAAE,QAAS,CACN,CACA,CAAC,EACVM,QAAQ,CAAEiB,WAAY,CACvB,CAEU,CAAC;AAEjB"}
1
+ {"version":3,"names":["classnames","useViewportMatch","DropdownMenu","MenuGroup","MenuItem","__","check","desktop","mobile","tablet","PreviewOptions","children","viewLabel","className","isEnabled","deviceType","setDeviceType","label","isMobile","popoverProps","placement","toggleProps","disabled","__experimentalIsFocusable","menuProps","deviceIcons","createElement","icon","toLowerCase","disableOpenOnArrowDown","renderProps","Fragment","onClick"],"sources":["@wordpress/block-editor/src/components/preview-options/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useViewportMatch } from '@wordpress/compose';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { check, desktop, mobile, tablet } from '@wordpress/icons';\n\nexport default function PreviewOptions( {\n\tchildren,\n\tviewLabel,\n\tclassName,\n\tisEnabled = true,\n\tdeviceType,\n\tsetDeviceType,\n\tlabel,\n} ) {\n\tconst isMobile = useViewportMatch( 'small', '<' );\n\tif ( isMobile ) return null;\n\n\tconst popoverProps = {\n\t\tclassName: classnames(\n\t\t\tclassName,\n\t\t\t'block-editor-post-preview__dropdown-content'\n\t\t),\n\t\tplacement: 'bottom-end',\n\t};\n\tconst toggleProps = {\n\t\tclassName: 'block-editor-post-preview__button-toggle',\n\t\tdisabled: ! isEnabled,\n\t\t__experimentalIsFocusable: ! isEnabled,\n\t\tchildren: viewLabel,\n\t};\n\tconst menuProps = {\n\t\t'aria-label': __( 'View options' ),\n\t};\n\n\tconst deviceIcons = {\n\t\tmobile,\n\t\ttablet,\n\t\tdesktop,\n\t};\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName=\"block-editor-post-preview__dropdown\"\n\t\t\tpopoverProps={ popoverProps }\n\t\t\ttoggleProps={ toggleProps }\n\t\t\tmenuProps={ menuProps }\n\t\t\ticon={ deviceIcons[ deviceType.toLowerCase() ] }\n\t\t\tlabel={ label || __( 'Preview' ) }\n\t\t\tdisableOpenOnArrowDown={ ! isEnabled }\n\t\t>\n\t\t\t{ ( renderProps ) => (\n\t\t\t\t<>\n\t\t\t\t\t<MenuGroup>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Desktop' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Desktop' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Desktop' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Tablet' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Tablet' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Tablet' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\tclassName=\"block-editor-post-preview__button-resize\"\n\t\t\t\t\t\t\tonClick={ () => setDeviceType( 'Mobile' ) }\n\t\t\t\t\t\t\ticon={ deviceType === 'Mobile' && check }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Mobile' ) }\n\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t{ children( renderProps ) }\n\t\t\t\t</>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,uBAAuB;AACzE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,EAAEC,OAAO,EAAEC,MAAM,EAAEC,MAAM,QAAQ,kBAAkB;AAEjE,eAAe,SAASC,cAAcA,CAAE;EACvCC,QAAQ;EACRC,SAAS;EACTC,SAAS;EACTC,SAAS,GAAG,IAAI;EAChBC,UAAU;EACVC,aAAa;EACbC;AACD,CAAC,EAAG;EACH,MAAMC,QAAQ,GAAGjB,gBAAgB,CAAE,OAAO,EAAE,GAAI,CAAC;EACjD,IAAKiB,QAAQ,EAAG,OAAO,IAAI;EAE3B,MAAMC,YAAY,GAAG;IACpBN,SAAS,EAAEb,UAAU,CACpBa,SAAS,EACT,6CACD,CAAC;IACDO,SAAS,EAAE;EACZ,CAAC;EACD,MAAMC,WAAW,GAAG;IACnBR,SAAS,EAAE,0CAA0C;IACrDS,QAAQ,EAAE,CAAER,SAAS;IACrBS,yBAAyB,EAAE,CAAET,SAAS;IACtCH,QAAQ,EAAEC;EACX,CAAC;EACD,MAAMY,SAAS,GAAG;IACjB,YAAY,EAAEnB,EAAE,CAAE,cAAe;EAClC,CAAC;EAED,MAAMoB,WAAW,GAAG;IACnBjB,MAAM;IACNC,MAAM;IACNF;EACD,CAAC;EAED,OACCmB,aAAA,CAACxB,YAAY;IACZW,SAAS,EAAC,qCAAqC;IAC/CM,YAAY,EAAGA,YAAc;IAC7BE,WAAW,EAAGA,WAAa;IAC3BG,SAAS,EAAGA,SAAW;IACvBG,IAAI,EAAGF,WAAW,CAAEV,UAAU,CAACa,WAAW,CAAC,CAAC,CAAI;IAChDX,KAAK,EAAGA,KAAK,IAAIZ,EAAE,CAAE,SAAU,CAAG;IAClCwB,sBAAsB,EAAG,CAAEf;EAAW,GAElCgB,WAAW,IACdJ,aAAA,CAAAK,QAAA,QACCL,aAAA,CAACvB,SAAS,QACTuB,aAAA,CAACtB,QAAQ;IACRS,SAAS,EAAC,0CAA0C;IACpDmB,OAAO,EAAGA,CAAA,KAAMhB,aAAa,CAAE,SAAU,CAAG;IAC5CW,IAAI,EAAGZ,UAAU,KAAK,SAAS,IAAIT;EAAO,GAExCD,EAAE,CAAE,SAAU,CACP,CAAC,EACXqB,aAAA,CAACtB,QAAQ;IACRS,SAAS,EAAC,0CAA0C;IACpDmB,OAAO,EAAGA,CAAA,KAAMhB,aAAa,CAAE,QAAS,CAAG;IAC3CW,IAAI,EAAGZ,UAAU,KAAK,QAAQ,IAAIT;EAAO,GAEvCD,EAAE,CAAE,QAAS,CACN,CAAC,EACXqB,aAAA,CAACtB,QAAQ;IACRS,SAAS,EAAC,0CAA0C;IACpDmB,OAAO,EAAGA,CAAA,KAAMhB,aAAa,CAAE,QAAS,CAAG;IAC3CW,IAAI,EAAGZ,UAAU,KAAK,QAAQ,IAAIT;EAAO,GAEvCD,EAAE,CAAE,QAAS,CACN,CACA,CAAC,EACVM,QAAQ,CAAEmB,WAAY,CACvB,CAEU,CAAC;AAEjB"}
@@ -4,6 +4,7 @@ import { createElement } from "@wordpress/element";
4
4
  */
5
5
  import { useDispatch } from '@wordpress/data';
6
6
  import { useEffect } from '@wordpress/element';
7
+ import { SlotFillProvider } from '@wordpress/components';
7
8
 
8
9
  /**
9
10
  * Internal dependencies
@@ -13,6 +14,7 @@ import useBlockSync from './use-block-sync';
13
14
  import { store as blockEditorStore } from '../../store';
14
15
  import { BlockRefsProvider } from './block-refs-provider';
15
16
  import { unlock } from '../../lock-unlock';
17
+ import KeyboardShortcuts from '../keyboard-shortcuts';
16
18
 
17
19
  /** @typedef {import('@wordpress/data').WPDataRegistry} WPDataRegistry */
18
20
 
@@ -37,7 +39,7 @@ export const ExperimentalBlockEditorProvider = withRegistryProvider(props => {
37
39
 
38
40
  // Syncs the entity provider with changes in the block-editor store.
39
41
  useBlockSync(props);
40
- return createElement(BlockRefsProvider, null, children);
42
+ return createElement(SlotFillProvider, null, createElement(KeyboardShortcuts.Register, null), createElement(BlockRefsProvider, null, children));
41
43
  });
42
44
  export const BlockEditorProvider = props => {
43
45
  return createElement(ExperimentalBlockEditorProvider, {
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","useEffect","withRegistryProvider","useBlockSync","store","blockEditorStore","BlockRefsProvider","unlock","ExperimentalBlockEditorProvider","props","children","settings","stripExperimentalSettings","__experimentalUpdateSettings","__internalIsInitialized","reset","createElement","BlockEditorProvider"],"sources":["@wordpress/block-editor/src/components/provider/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport withRegistryProvider from './with-registry-provider';\nimport useBlockSync from './use-block-sync';\nimport { store as blockEditorStore } from '../../store';\nimport { BlockRefsProvider } from './block-refs-provider';\nimport { unlock } from '../../lock-unlock';\n\n/** @typedef {import('@wordpress/data').WPDataRegistry} WPDataRegistry */\n\nexport const ExperimentalBlockEditorProvider = withRegistryProvider(\n\t( props ) => {\n\t\tconst { children, settings, stripExperimentalSettings = false } = props;\n\n\t\tconst { __experimentalUpdateSettings } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\t\tuseEffect( () => {\n\t\t\t__experimentalUpdateSettings(\n\t\t\t\t{\n\t\t\t\t\t...settings,\n\t\t\t\t\t__internalIsInitialized: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tstripExperimentalSettings,\n\t\t\t\t\treset: true,\n\t\t\t\t}\n\t\t\t);\n\t\t}, [\n\t\t\tsettings,\n\t\t\tstripExperimentalSettings,\n\t\t\t__experimentalUpdateSettings,\n\t\t] );\n\n\t\t// Syncs the entity provider with changes in the block-editor store.\n\t\tuseBlockSync( props );\n\n\t\treturn <BlockRefsProvider>{ children }</BlockRefsProvider>;\n\t}\n);\n\nexport const BlockEditorProvider = ( props ) => {\n\treturn (\n\t\t<ExperimentalBlockEditorProvider\n\t\t\t{ ...props }\n\t\t\tstripExperimentalSettings={ true }\n\t\t>\n\t\t\t{ props.children }\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n};\n\nexport default BlockEditorProvider;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,SAAS,QAAQ,oBAAoB;;AAE9C;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,OAAOC,YAAY,MAAM,kBAAkB;AAC3C,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,MAAM,QAAQ,mBAAmB;;AAE1C;;AAEA,OAAO,MAAMC,+BAA+B,GAAGN,oBAAoB,CAChEO,KAAK,IAAM;EACZ,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,yBAAyB,GAAG;EAAM,CAAC,GAAGH,KAAK;EAEvE,MAAM;IAAEI;EAA6B,CAAC,GAAGN,MAAM,CAC9CP,WAAW,CAAEK,gBAAiB,CAC/B,CAAC;EACDJ,SAAS,CAAE,MAAM;IAChBY,4BAA4B,CAC3B;MACC,GAAGF,QAAQ;MACXG,uBAAuB,EAAE;IAC1B,CAAC,EACD;MACCF,yBAAyB;MACzBG,KAAK,EAAE;IACR,CACD,CAAC;EACF,CAAC,EAAE,CACFJ,QAAQ,EACRC,yBAAyB,EACzBC,4BAA4B,CAC3B,CAAC;;EAEH;EACAV,YAAY,CAAEM,KAAM,CAAC;EAErB,OAAOO,aAAA,CAACV,iBAAiB,QAAGI,QAA6B,CAAC;AAC3D,CACD,CAAC;AAED,OAAO,MAAMO,mBAAmB,GAAKR,KAAK,IAAM;EAC/C,OACCO,aAAA,CAACR,+BAA+B;IAAA,GAC1BC,KAAK;IACVG,yBAAyB,EAAG;EAAM,GAEhCH,KAAK,CAACC,QACwB,CAAC;AAEpC,CAAC;AAED,eAAeO,mBAAmB"}
1
+ {"version":3,"names":["useDispatch","useEffect","SlotFillProvider","withRegistryProvider","useBlockSync","store","blockEditorStore","BlockRefsProvider","unlock","KeyboardShortcuts","ExperimentalBlockEditorProvider","props","children","settings","stripExperimentalSettings","__experimentalUpdateSettings","__internalIsInitialized","reset","createElement","Register","BlockEditorProvider"],"sources":["@wordpress/block-editor/src/components/provider/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { useEffect } from '@wordpress/element';\nimport { SlotFillProvider } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport withRegistryProvider from './with-registry-provider';\nimport useBlockSync from './use-block-sync';\nimport { store as blockEditorStore } from '../../store';\nimport { BlockRefsProvider } from './block-refs-provider';\nimport { unlock } from '../../lock-unlock';\nimport KeyboardShortcuts from '../keyboard-shortcuts';\n\n/** @typedef {import('@wordpress/data').WPDataRegistry} WPDataRegistry */\n\nexport const ExperimentalBlockEditorProvider = withRegistryProvider(\n\t( props ) => {\n\t\tconst { children, settings, stripExperimentalSettings = false } = props;\n\n\t\tconst { __experimentalUpdateSettings } = unlock(\n\t\t\tuseDispatch( blockEditorStore )\n\t\t);\n\t\tuseEffect( () => {\n\t\t\t__experimentalUpdateSettings(\n\t\t\t\t{\n\t\t\t\t\t...settings,\n\t\t\t\t\t__internalIsInitialized: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tstripExperimentalSettings,\n\t\t\t\t\treset: true,\n\t\t\t\t}\n\t\t\t);\n\t\t}, [\n\t\t\tsettings,\n\t\t\tstripExperimentalSettings,\n\t\t\t__experimentalUpdateSettings,\n\t\t] );\n\n\t\t// Syncs the entity provider with changes in the block-editor store.\n\t\tuseBlockSync( props );\n\n\t\treturn (\n\t\t\t<SlotFillProvider>\n\t\t\t\t<KeyboardShortcuts.Register />\n\t\t\t\t<BlockRefsProvider>{ children }</BlockRefsProvider>\n\t\t\t</SlotFillProvider>\n\t\t);\n\t}\n);\n\nexport const BlockEditorProvider = ( props ) => {\n\treturn (\n\t\t<ExperimentalBlockEditorProvider\n\t\t\t{ ...props }\n\t\t\tstripExperimentalSettings={ true }\n\t\t>\n\t\t\t{ props.children }\n\t\t</ExperimentalBlockEditorProvider>\n\t);\n};\n\nexport default BlockEditorProvider;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,QAAQ,iBAAiB;AAC7C,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SAASC,gBAAgB,QAAQ,uBAAuB;;AAExD;AACA;AACA;AACA,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,OAAOC,YAAY,MAAM,kBAAkB;AAC3C,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,OAAOC,iBAAiB,MAAM,uBAAuB;;AAErD;;AAEA,OAAO,MAAMC,+BAA+B,GAAGP,oBAAoB,CAChEQ,KAAK,IAAM;EACZ,MAAM;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,yBAAyB,GAAG;EAAM,CAAC,GAAGH,KAAK;EAEvE,MAAM;IAAEI;EAA6B,CAAC,GAAGP,MAAM,CAC9CR,WAAW,CAAEM,gBAAiB,CAC/B,CAAC;EACDL,SAAS,CAAE,MAAM;IAChBc,4BAA4B,CAC3B;MACC,GAAGF,QAAQ;MACXG,uBAAuB,EAAE;IAC1B,CAAC,EACD;MACCF,yBAAyB;MACzBG,KAAK,EAAE;IACR,CACD,CAAC;EACF,CAAC,EAAE,CACFJ,QAAQ,EACRC,yBAAyB,EACzBC,4BAA4B,CAC3B,CAAC;;EAEH;EACAX,YAAY,CAAEO,KAAM,CAAC;EAErB,OACCO,aAAA,CAAChB,gBAAgB,QAChBgB,aAAA,CAACT,iBAAiB,CAACU,QAAQ,MAAE,CAAC,EAC9BD,aAAA,CAACX,iBAAiB,QAAGK,QAA6B,CACjC,CAAC;AAErB,CACD,CAAC;AAED,OAAO,MAAMQ,mBAAmB,GAAKT,KAAK,IAAM;EAC/C,OACCO,aAAA,CAACR,+BAA+B;IAAA,GAC1BC,KAAK;IACVG,yBAAyB,EAAG;EAAM,GAEhCH,KAAK,CAACC,QACwB,CAAC;AAEpC,CAAC;AAED,eAAeQ,mBAAmB"}
@@ -110,20 +110,14 @@ const useActionsCommands = () => {
110
110
  getBlockRootClientId,
111
111
  getBlocksByClientId,
112
112
  canMoveBlocks,
113
- canRemoveBlocks
113
+ canRemoveBlocks,
114
+ getBlockCount
114
115
  } = useSelect(blockEditorStore);
115
116
  const {
116
117
  getDefaultBlockName,
117
118
  getGroupingBlockName
118
119
  } = useSelect(blocksStore);
119
120
  const blocks = getBlocksByClientId(clientIds);
120
- const rootClientId = getBlockRootClientId(clientIds[0]);
121
- const canDuplicate = blocks.every(block => {
122
- return !!block && hasBlockSupport(block.name, 'multiple', true) && canInsertBlockType(block.name, rootClientId);
123
- });
124
- const canInsertDefaultBlock = canInsertBlockType(getDefaultBlockName(), rootClientId);
125
- const canMove = canMoveBlocks(clientIds, rootClientId);
126
- const canRemove = canRemoveBlocks(clientIds, rootClientId);
127
121
  const {
128
122
  removeBlocks,
129
123
  replaceBlocks,
@@ -134,40 +128,6 @@ const useActionsCommands = () => {
134
128
  setNavigationMode,
135
129
  selectBlock
136
130
  } = useDispatch(blockEditorStore);
137
- const onDuplicate = () => {
138
- if (!canDuplicate) {
139
- return;
140
- }
141
- return duplicateBlocks(clientIds, true);
142
- };
143
- const onRemove = () => {
144
- if (!canRemove) {
145
- return;
146
- }
147
- return removeBlocks(clientIds, true);
148
- };
149
- const onAddBefore = () => {
150
- if (!canInsertDefaultBlock) {
151
- return;
152
- }
153
- const clientId = Array.isArray(clientIds) ? clientIds[0] : clientId;
154
- insertBeforeBlock(clientId);
155
- };
156
- const onAddAfter = () => {
157
- if (!canInsertDefaultBlock) {
158
- return;
159
- }
160
- const clientId = Array.isArray(clientIds) ? clientIds[clientIds.length - 1] : clientId;
161
- insertAfterBlock(clientId);
162
- };
163
- const onMoveTo = () => {
164
- if (!canMove) {
165
- return;
166
- }
167
- setNavigationMode(true);
168
- selectBlock(clientIds[0]);
169
- setBlockMovingClientId(clientIds[0]);
170
- };
171
131
  const onGroup = () => {
172
132
  if (!blocks.length) {
173
133
  return;
@@ -197,32 +157,83 @@ const useActionsCommands = () => {
197
157
  commands: []
198
158
  };
199
159
  }
200
- const icons = {
201
- ungroup,
202
- group,
203
- move,
204
- add,
205
- remove,
206
- duplicate: copy
207
- };
208
- const commands = [onUngroup, onGroup, onMoveTo, onAddAfter, onAddBefore, onRemove, onDuplicate].map(callback => {
209
- const action = callback.name.replace('on', '').replace(/([a-z])([A-Z])/g, '$1 $2');
210
- return {
211
- name: 'core/block-editor/action-' + callback.name,
212
- // translators: %s: type of the command.
213
- label: action,
214
- icon: icons[callback.name.replace('on', '').match(/[A-Z]{1}[a-z]*/).toString().toLowerCase()],
160
+ const rootClientId = getBlockRootClientId(clientIds[0]);
161
+ const canInsertDefaultBlock = canInsertBlockType(getDefaultBlockName(), rootClientId);
162
+ const canDuplicate = blocks.every(block => {
163
+ return !!block && hasBlockSupport(block.name, 'multiple', true) && canInsertBlockType(block.name, rootClientId);
164
+ });
165
+ const canRemove = canRemoveBlocks(clientIds, rootClientId);
166
+ const canMove = canMoveBlocks(clientIds, rootClientId) && getBlockCount(rootClientId) !== 1;
167
+ const commands = [{
168
+ name: 'ungroup',
169
+ label: __('Ungroup'),
170
+ callback: onUngroup,
171
+ icon: ungroup
172
+ }, {
173
+ name: 'Group',
174
+ label: __('Group'),
175
+ callback: onGroup,
176
+ icon: group
177
+ }];
178
+ if (canInsertDefaultBlock) {
179
+ commands.push({
180
+ name: 'add-after',
181
+ label: __('Add after'),
182
+ callback: () => {
183
+ const clientId = Array.isArray(clientIds) ? clientIds[clientIds.length - 1] : clientId;
184
+ insertAfterBlock(clientId);
185
+ },
186
+ icon: add
187
+ }, {
188
+ name: 'add-before',
189
+ label: __('Add before'),
190
+ callback: () => {
191
+ const clientId = Array.isArray(clientIds) ? clientIds[0] : clientId;
192
+ insertBeforeBlock(clientId);
193
+ },
194
+ icon: add
195
+ });
196
+ }
197
+ if (canRemove) {
198
+ commands.push({
199
+ name: 'remove',
200
+ label: __('Remove'),
201
+ callback: () => removeBlocks(clientIds, true),
202
+ icon: remove
203
+ });
204
+ }
205
+ if (canDuplicate) {
206
+ commands.push({
207
+ name: 'duplicate',
208
+ label: __('Duplicate'),
209
+ callback: () => duplicateBlocks(clientIds, true),
210
+ icon: copy
211
+ });
212
+ }
213
+ if (canMove) {
214
+ commands.push({
215
+ name: 'move-to',
216
+ label: __('Move to'),
217
+ callback: () => {
218
+ setNavigationMode(true);
219
+ selectBlock(clientIds[0]);
220
+ setBlockMovingClientId(clientIds[0]);
221
+ },
222
+ icon: move
223
+ });
224
+ }
225
+ return {
226
+ isLoading: false,
227
+ commands: commands.map(command => ({
228
+ ...command,
229
+ name: 'core/block-editor/action-' + command.name,
215
230
  callback: ({
216
231
  close
217
232
  }) => {
218
- callback();
233
+ command.callback();
219
234
  close();
220
235
  }
221
- };
222
- });
223
- return {
224
- isLoading: false,
225
- commands
236
+ }))
226
237
  };
227
238
  };
228
239
  export const useBlockCommands = () => {
@@ -1 +1 @@
1
- {"version":3,"names":["__","sprintf","hasBlockSupport","store","blocksStore","switchToBlockType","isTemplatePart","useSelect","useDispatch","useCommandLoader","copy","edit","remove","create","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","canInsertBlockType","canMoveBlocks","getDefaultBlockName","getGroupingBlockName","canDuplicate","every","block","canInsertDefaultBlock","canMove","removeBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","setBlockMovingClientId","setNavigationMode","selectBlock","onDuplicate","onRemove","onAddBefore","onAddAfter","onMoveTo","onGroup","groupingBlockName","onUngroup","innerBlocks","icons","duplicate","action","match","toString","toLowerCase","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\tedit as remove,\n\tcreate 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 } = 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 {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanMoveBlocks,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\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\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\n\tconst canMove = canMoveBlocks( clientIds, rootClientId );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\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 onDuplicate = () => {\n\t\tif ( ! canDuplicate ) {\n\t\t\treturn;\n\t\t}\n\t\treturn duplicateBlocks( clientIds, true );\n\t};\n\tconst onRemove = () => {\n\t\tif ( ! canRemove ) {\n\t\t\treturn;\n\t\t}\n\t\treturn removeBlocks( clientIds, true );\n\t};\n\tconst onAddBefore = () => {\n\t\tif ( ! canInsertDefaultBlock ) {\n\t\t\treturn;\n\t\t}\n\t\tconst clientId = Array.isArray( clientIds ) ? clientIds[ 0 ] : clientId;\n\t\tinsertBeforeBlock( clientId );\n\t};\n\tconst onAddAfter = () => {\n\t\tif ( ! canInsertDefaultBlock ) {\n\t\t\treturn;\n\t\t}\n\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t: clientId;\n\t\tinsertAfterBlock( clientId );\n\t};\n\tconst onMoveTo = () => {\n\t\tif ( ! canMove ) {\n\t\t\treturn;\n\t\t}\n\t\tsetNavigationMode( true );\n\t\tselectBlock( clientIds[ 0 ] );\n\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t};\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 icons = {\n\t\tungroup,\n\t\tgroup,\n\t\tmove,\n\t\tadd,\n\t\tremove,\n\t\tduplicate: copy,\n\t};\n\n\tconst commands = [\n\t\tonUngroup,\n\t\tonGroup,\n\t\tonMoveTo,\n\t\tonAddAfter,\n\t\tonAddBefore,\n\t\tonRemove,\n\t\tonDuplicate,\n\t].map( ( callback ) => {\n\t\tconst action = callback.name\n\t\t\t.replace( 'on', '' )\n\t\t\t.replace( /([a-z])([A-Z])/g, '$1 $2' );\n\n\t\treturn {\n\t\t\tname: 'core/block-editor/action-' + callback.name,\n\t\t\t// translators: %s: type of the command.\n\t\t\tlabel: action,\n\t\t\ticon: icons[\n\t\t\t\tcallback.name\n\t\t\t\t\t.replace( 'on', '' )\n\t\t\t\t\t.match( /[A-Z]{1}[a-z]*/ )\n\t\t\t\t\t.toString()\n\t\t\t\t\t.toLowerCase()\n\t\t\t],\n\t\t\tcallback: ( { close } ) => {\n\t\t\t\tcallback();\n\t\t\t\tclose();\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn { isLoading: false, commands };\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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"}
1
+ {"version":3,"names":["__","sprintf","hasBlockSupport","store","blocksStore","switchToBlockType","isTemplatePart","useSelect","useDispatch","useCommandLoader","copy","edit","remove","create","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","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\tedit as remove,\n\tcreate 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 } = 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 {\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\t\t{\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\t{\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\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: __( 'Remove' ),\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\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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"}
@@ -10,7 +10,7 @@ import classnames from 'classnames';
10
10
  import { Children } from '@wordpress/element';
11
11
  import { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';
12
12
  import { __ } from '@wordpress/i18n';
13
- import { moreHorizontal } from '@wordpress/icons';
13
+ import { moreVertical } from '@wordpress/icons';
14
14
  function Warning({
15
15
  className,
16
16
  actions,
@@ -35,7 +35,7 @@ function Warning({
35
35
  className: "block-editor-warning__action"
36
36
  }, action)), secondaryActions && createElement(DropdownMenu, {
37
37
  className: "block-editor-warning__secondary",
38
- icon: moreHorizontal,
38
+ icon: moreVertical,
39
39
  label: __('More options'),
40
40
  popoverProps: {
41
41
  position: 'bottom left',
@@ -1 +1 @@
1
- {"version":3,"names":["classnames","Children","DropdownMenu","MenuGroup","MenuItem","__","moreHorizontal","Warning","className","actions","children","secondaryActions","createElement","style","display","all","count","map","action","i","key","icon","label","popoverProps","position","noIcons","item","pos","onClick","title"],"sources":["@wordpress/block-editor/src/components/warning/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Children } from '@wordpress/element';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreHorizontal } from '@wordpress/icons';\n\nfunction Warning( { className, actions, children, secondaryActions } ) {\n\treturn (\n\t\t<div style={ { display: 'contents', all: 'initial' } }>\n\t\t\t<div className={ classnames( className, 'block-editor-warning' ) }>\n\t\t\t\t<div className=\"block-editor-warning__contents\">\n\t\t\t\t\t<p className=\"block-editor-warning__message\">\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</p>\n\n\t\t\t\t\t{ ( Children.count( actions ) > 0 || secondaryActions ) && (\n\t\t\t\t\t\t<div className=\"block-editor-warning__actions\">\n\t\t\t\t\t\t\t{ Children.count( actions ) > 0 &&\n\t\t\t\t\t\t\t\tChildren.map( actions, ( action, i ) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__action\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ action }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ secondaryActions && (\n\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__secondary\"\n\t\t\t\t\t\t\t\t\ticon={ moreHorizontal }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'More options' ) }\n\t\t\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\t\t\tposition: 'bottom left',\n\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-warning__dropdown',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tnoIcons\n\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\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t\t\t{ secondaryActions.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( item, pos ) => (\n\t\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\t\tonClick={ item.onClick }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ pos }\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\t\t{ item.title }\n\t\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)\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/warning/README.md\n */\nexport default Warning;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,uBAAuB;AACzE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,cAAc,QAAQ,kBAAkB;AAEjD,SAASC,OAAOA,CAAE;EAAEC,SAAS;EAAEC,OAAO;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAG;EACtE,OACCC,aAAA;IAAKC,KAAK,EAAG;MAAEC,OAAO,EAAE,UAAU;MAAEC,GAAG,EAAE;IAAU;EAAG,GACrDH,aAAA;IAAKJ,SAAS,EAAGR,UAAU,CAAEQ,SAAS,EAAE,sBAAuB;EAAG,GACjEI,aAAA;IAAKJ,SAAS,EAAC;EAAgC,GAC9CI,aAAA;IAAGJ,SAAS,EAAC;EAA+B,GACzCE,QACA,CAAC,EAEF,CAAET,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAAIE,gBAAgB,KACpDC,aAAA;IAAKJ,SAAS,EAAC;EAA+B,GAC3CP,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAC9BR,QAAQ,CAACgB,GAAG,CAAER,OAAO,EAAE,CAAES,MAAM,EAAEC,CAAC,KACjCP,aAAA;IACCQ,GAAG,EAAGD,CAAG;IACTX,SAAS,EAAC;EAA8B,GAEtCU,MACG,CACL,CAAC,EACFP,gBAAgB,IACjBC,aAAA,CAACV,YAAY;IACZM,SAAS,EAAC,iCAAiC;IAC3Ca,IAAI,EAAGf,cAAgB;IACvBgB,KAAK,EAAGjB,EAAE,CAAE,cAAe,CAAG;IAC9BkB,YAAY,EAAG;MACdC,QAAQ,EAAE,aAAa;MACvBhB,SAAS,EACR;IACF,CAAG;IACHiB,OAAO;EAAA,GAEL,MACDb,aAAA,CAACT,SAAS,QACPQ,gBAAgB,CAACM,GAAG,CACrB,CAAES,IAAI,EAAEC,GAAG,KACVf,aAAA,CAACR,QAAQ;IACRwB,OAAO,EAAGF,IAAI,CAACE,OAAS;IACxBR,GAAG,EAAGO;EAAK,GAETD,IAAI,CAACG,KACE,CAEZ,CACU,CAEC,CAEX,CAEF,CACD,CACD,CAAC;AAER;;AAEA;AACA;AACA;AACA,eAAetB,OAAO"}
1
+ {"version":3,"names":["classnames","Children","DropdownMenu","MenuGroup","MenuItem","__","moreVertical","Warning","className","actions","children","secondaryActions","createElement","style","display","all","count","map","action","i","key","icon","label","popoverProps","position","noIcons","item","pos","onClick","title"],"sources":["@wordpress/block-editor/src/components/warning/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Children } from '@wordpress/element';\nimport { DropdownMenu, MenuGroup, MenuItem } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { moreVertical } from '@wordpress/icons';\n\nfunction Warning( { className, actions, children, secondaryActions } ) {\n\treturn (\n\t\t<div style={ { display: 'contents', all: 'initial' } }>\n\t\t\t<div className={ classnames( className, 'block-editor-warning' ) }>\n\t\t\t\t<div className=\"block-editor-warning__contents\">\n\t\t\t\t\t<p className=\"block-editor-warning__message\">\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</p>\n\n\t\t\t\t\t{ ( Children.count( actions ) > 0 || secondaryActions ) && (\n\t\t\t\t\t\t<div className=\"block-editor-warning__actions\">\n\t\t\t\t\t\t\t{ Children.count( actions ) > 0 &&\n\t\t\t\t\t\t\t\tChildren.map( actions, ( action, i ) => (\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__action\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ action }\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t{ secondaryActions && (\n\t\t\t\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-warning__secondary\"\n\t\t\t\t\t\t\t\t\ticon={ moreVertical }\n\t\t\t\t\t\t\t\t\tlabel={ __( 'More options' ) }\n\t\t\t\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\t\t\t\tposition: 'bottom left',\n\t\t\t\t\t\t\t\t\t\tclassName:\n\t\t\t\t\t\t\t\t\t\t\t'block-editor-warning__dropdown',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tnoIcons\n\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\t\t<MenuGroup>\n\t\t\t\t\t\t\t\t\t\t\t{ secondaryActions.map(\n\t\t\t\t\t\t\t\t\t\t\t\t( item, pos ) => (\n\t\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\t\tonClick={ item.onClick }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ pos }\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\t\t{ item.title }\n\t\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)\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</DropdownMenu>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\n/**\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/warning/README.md\n */\nexport default Warning;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,uBAAuB;AACzE,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,QAAQ,kBAAkB;AAE/C,SAASC,OAAOA,CAAE;EAAEC,SAAS;EAAEC,OAAO;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAG;EACtE,OACCC,aAAA;IAAKC,KAAK,EAAG;MAAEC,OAAO,EAAE,UAAU;MAAEC,GAAG,EAAE;IAAU;EAAG,GACrDH,aAAA;IAAKJ,SAAS,EAAGR,UAAU,CAAEQ,SAAS,EAAE,sBAAuB;EAAG,GACjEI,aAAA;IAAKJ,SAAS,EAAC;EAAgC,GAC9CI,aAAA;IAAGJ,SAAS,EAAC;EAA+B,GACzCE,QACA,CAAC,EAEF,CAAET,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAAIE,gBAAgB,KACpDC,aAAA;IAAKJ,SAAS,EAAC;EAA+B,GAC3CP,QAAQ,CAACe,KAAK,CAAEP,OAAQ,CAAC,GAAG,CAAC,IAC9BR,QAAQ,CAACgB,GAAG,CAAER,OAAO,EAAE,CAAES,MAAM,EAAEC,CAAC,KACjCP,aAAA;IACCQ,GAAG,EAAGD,CAAG;IACTX,SAAS,EAAC;EAA8B,GAEtCU,MACG,CACL,CAAC,EACFP,gBAAgB,IACjBC,aAAA,CAACV,YAAY;IACZM,SAAS,EAAC,iCAAiC;IAC3Ca,IAAI,EAAGf,YAAc;IACrBgB,KAAK,EAAGjB,EAAE,CAAE,cAAe,CAAG;IAC9BkB,YAAY,EAAG;MACdC,QAAQ,EAAE,aAAa;MACvBhB,SAAS,EACR;IACF,CAAG;IACHiB,OAAO;EAAA,GAEL,MACDb,aAAA,CAACT,SAAS,QACPQ,gBAAgB,CAACM,GAAG,CACrB,CAAES,IAAI,EAAEC,GAAG,KACVf,aAAA,CAACR,QAAQ;IACRwB,OAAO,EAAGF,IAAI,CAACE,OAAS;IACxBR,GAAG,EAAGO;EAAK,GAETD,IAAI,CAACG,KACE,CAEZ,CACU,CAEC,CAEX,CAEF,CACD,CACD,CAAC;AAER;;AAEA;AACA;AACA;AACA,eAAetB,OAAO"}
@@ -0,0 +1,167 @@
1
+ import { createElement } from "@wordpress/element";
2
+ /**
3
+ * WordPress dependencies
4
+ */
5
+ import { __ } from '@wordpress/i18n';
6
+ import { addFilter } from '@wordpress/hooks';
7
+ import { Fragment } from '@wordpress/element';
8
+ import { PanelBody, ToggleControl } from '@wordpress/components';
9
+ import { createHigherOrderComponent } from '@wordpress/compose';
10
+ import { createBlock, store as blocksStore } from '@wordpress/blocks';
11
+ import { useDispatch, useSelect } from '@wordpress/data';
12
+
13
+ /**
14
+ * Internal dependencies
15
+ */
16
+ import { InspectorControls } from '../components';
17
+ import { store as blockEditorStore } from '../store';
18
+ function AutoInsertingBlocksControl(props) {
19
+ const {
20
+ autoInsertedBlocksForCurrentBlock,
21
+ groupedAutoInsertedBlocks
22
+ } = useSelect(select => {
23
+ const {
24
+ getBlockTypes
25
+ } = select(blocksStore);
26
+ const _autoInsertedBlocksForCurrentBlock = getBlockTypes()?.filter(({
27
+ autoInsert
28
+ }) => autoInsert && props.blockName in autoInsert);
29
+
30
+ // Group by block namespace (i.e. prefix before the slash).
31
+ const _groupedAutoInsertedBlocks = _autoInsertedBlocksForCurrentBlock?.reduce((groups, block) => {
32
+ const [namespace] = block.name.split('/');
33
+ if (!groups[namespace]) {
34
+ groups[namespace] = [];
35
+ }
36
+ groups[namespace].push(block);
37
+ return groups;
38
+ }, {});
39
+ return {
40
+ autoInsertedBlocksForCurrentBlock: _autoInsertedBlocksForCurrentBlock,
41
+ groupedAutoInsertedBlocks: _groupedAutoInsertedBlocks
42
+ };
43
+ }, [props.blockName]);
44
+ const {
45
+ autoInsertedBlockClientIds,
46
+ blockIndex,
47
+ rootClientId,
48
+ innerBlocksLength
49
+ } = useSelect(select => {
50
+ const {
51
+ getBlock,
52
+ getBlockIndex,
53
+ getBlockRootClientId
54
+ } = select(blockEditorStore);
55
+ const _rootClientId = getBlockRootClientId(props.clientId);
56
+ const _autoInsertedBlockClientIds = autoInsertedBlocksForCurrentBlock.reduce((clientIds, block) => {
57
+ const relativePosition = block?.autoInsert?.[props.blockName];
58
+ let candidates;
59
+ switch (relativePosition) {
60
+ case 'before':
61
+ case 'after':
62
+ // Any of the current block's siblings (with the right block type) qualifies
63
+ // as an auto-inserted block (inserted `before` or `after` the current one),
64
+ // as the block might've been auto-inserted and then moved around a bit by the user.
65
+ candidates = getBlock(_rootClientId)?.innerBlocks;
66
+ break;
67
+ case 'first_child':
68
+ case 'last_child':
69
+ // Any of the current block's child blocks (with the right block type) qualifies
70
+ // as an auto-inserted first or last child block, as the block might've been
71
+ // auto-inserted and then moved around a bit by the user.
72
+ candidates = getBlock(props.clientId).innerBlocks;
73
+ break;
74
+ }
75
+ const autoInsertedBlock = candidates?.find(({
76
+ name
77
+ }) => name === block.name);
78
+ if (autoInsertedBlock) {
79
+ clientIds[block.name] = autoInsertedBlock.clientId;
80
+ }
81
+
82
+ // TOOD: If no auto-inserted block was found in any of its designated locations,
83
+ // we want to check if it's present elsewhere in the block tree.
84
+ // If it is, we'd consider it manually inserted and would want to remove the
85
+ // corresponding toggle from the block inspector panel.
86
+
87
+ return clientIds;
88
+ }, {});
89
+ return {
90
+ blockIndex: getBlockIndex(props.clientId),
91
+ innerBlocksLength: getBlock(props.clientId)?.innerBlocks?.length,
92
+ rootClientId: _rootClientId,
93
+ autoInsertedBlockClientIds: _autoInsertedBlockClientIds
94
+ };
95
+ }, [autoInsertedBlocksForCurrentBlock, props.blockName, props.clientId]);
96
+ const {
97
+ insertBlock,
98
+ removeBlock
99
+ } = useDispatch(blockEditorStore);
100
+ if (!autoInsertedBlocksForCurrentBlock.length) {
101
+ return null;
102
+ }
103
+ const insertBlockIntoDesignatedLocation = (block, relativePosition) => {
104
+ switch (relativePosition) {
105
+ case 'before':
106
+ case 'after':
107
+ insertBlock(block, relativePosition === 'after' ? blockIndex + 1 : blockIndex, rootClientId,
108
+ // Insert as a child of the current block's parent
109
+ false);
110
+ break;
111
+ case 'first_child':
112
+ case 'last_child':
113
+ insertBlock(block,
114
+ // TODO: It'd be great if insertBlock() would accept negative indices for insertion.
115
+ relativePosition === 'first_child' ? 0 : innerBlocksLength, props.clientId,
116
+ // Insert as a child of the current block.
117
+ false);
118
+ break;
119
+ }
120
+ };
121
+ return createElement(InspectorControls, null, createElement(PanelBody, {
122
+ title: __('Plugins'),
123
+ initialOpen: true
124
+ }, Object.keys(groupedAutoInsertedBlocks).map(vendor => {
125
+ return createElement(Fragment, {
126
+ key: vendor
127
+ }, createElement("h3", null, vendor), groupedAutoInsertedBlocks[vendor].map(block => {
128
+ // TODO: Display block icon.
129
+ // <BlockIcon icon={ block.icon } />
130
+
131
+ const checked = (block.name in autoInsertedBlockClientIds);
132
+ return createElement(ToggleControl, {
133
+ checked: checked,
134
+ key: block.title,
135
+ label: block.title,
136
+ onChange: () => {
137
+ if (!checked) {
138
+ // Create and insert block.
139
+ const relativePosition = block.autoInsert[props.blockName];
140
+ insertBlockIntoDesignatedLocation(createBlock(block.name), relativePosition);
141
+ return;
142
+ }
143
+
144
+ // Remove block.
145
+ const clientId = autoInsertedBlockClientIds[block.name];
146
+ removeBlock(clientId, false);
147
+ }
148
+ });
149
+ }));
150
+ })));
151
+ }
152
+ export const withAutoInsertingBlocks = createHigherOrderComponent(BlockEdit => {
153
+ return props => {
154
+ const blockEdit = createElement(BlockEdit, {
155
+ key: "edit",
156
+ ...props
157
+ });
158
+ return createElement(Fragment, null, blockEdit, createElement(AutoInsertingBlocksControl, {
159
+ blockName: props.name,
160
+ clientId: props.clientId
161
+ }));
162
+ };
163
+ }, 'withAutoInsertingBlocks');
164
+ if (window?.__experimentalAutoInsertingBlocks) {
165
+ addFilter('editor.BlockEdit', 'core/auto-inserting-blocks/with-inspector-control', withAutoInsertingBlocks);
166
+ }
167
+ //# sourceMappingURL=auto-inserting-blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__","addFilter","Fragment","PanelBody","ToggleControl","createHigherOrderComponent","createBlock","store","blocksStore","useDispatch","useSelect","InspectorControls","blockEditorStore","AutoInsertingBlocksControl","props","autoInsertedBlocksForCurrentBlock","groupedAutoInsertedBlocks","select","getBlockTypes","_autoInsertedBlocksForCurrentBlock","filter","autoInsert","blockName","_groupedAutoInsertedBlocks","reduce","groups","block","namespace","name","split","push","autoInsertedBlockClientIds","blockIndex","rootClientId","innerBlocksLength","getBlock","getBlockIndex","getBlockRootClientId","_rootClientId","clientId","_autoInsertedBlockClientIds","clientIds","relativePosition","candidates","innerBlocks","autoInsertedBlock","find","length","insertBlock","removeBlock","insertBlockIntoDesignatedLocation","createElement","title","initialOpen","Object","keys","map","vendor","key","checked","label","onChange","withAutoInsertingBlocks","BlockEdit","blockEdit","window","__experimentalAutoInsertingBlocks"],"sources":["@wordpress/block-editor/src/hooks/auto-inserting-blocks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { addFilter } from '@wordpress/hooks';\nimport { Fragment } from '@wordpress/element';\nimport { PanelBody, ToggleControl } from '@wordpress/components';\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { createBlock, store as blocksStore } from '@wordpress/blocks';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { InspectorControls } from '../components';\nimport { store as blockEditorStore } from '../store';\n\nfunction AutoInsertingBlocksControl( props ) {\n\tconst { autoInsertedBlocksForCurrentBlock, groupedAutoInsertedBlocks } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getBlockTypes } = select( blocksStore );\n\t\t\t\tconst _autoInsertedBlocksForCurrentBlock =\n\t\t\t\t\tgetBlockTypes()?.filter(\n\t\t\t\t\t\t( { autoInsert } ) =>\n\t\t\t\t\t\t\tautoInsert && props.blockName in autoInsert\n\t\t\t\t\t);\n\n\t\t\t\t// Group by block namespace (i.e. prefix before the slash).\n\t\t\t\tconst _groupedAutoInsertedBlocks =\n\t\t\t\t\t_autoInsertedBlocksForCurrentBlock?.reduce(\n\t\t\t\t\t\t( groups, block ) => {\n\t\t\t\t\t\t\tconst [ namespace ] = block.name.split( '/' );\n\t\t\t\t\t\t\tif ( ! groups[ namespace ] ) {\n\t\t\t\t\t\t\t\tgroups[ namespace ] = [];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tgroups[ namespace ].push( block );\n\t\t\t\t\t\t\treturn groups;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{}\n\t\t\t\t\t);\n\n\t\t\t\treturn {\n\t\t\t\t\tautoInsertedBlocksForCurrentBlock:\n\t\t\t\t\t\t_autoInsertedBlocksForCurrentBlock,\n\t\t\t\t\tgroupedAutoInsertedBlocks: _groupedAutoInsertedBlocks,\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ props.blockName ]\n\t\t);\n\n\tconst {\n\t\tautoInsertedBlockClientIds,\n\t\tblockIndex,\n\t\trootClientId,\n\t\tinnerBlocksLength,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlock, getBlockIndex, getBlockRootClientId } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst _rootClientId = getBlockRootClientId( props.clientId );\n\n\t\t\tconst _autoInsertedBlockClientIds =\n\t\t\t\tautoInsertedBlocksForCurrentBlock.reduce(\n\t\t\t\t\t( clientIds, block ) => {\n\t\t\t\t\t\tconst relativePosition =\n\t\t\t\t\t\t\tblock?.autoInsert?.[ props.blockName ];\n\t\t\t\t\t\tlet candidates;\n\n\t\t\t\t\t\tswitch ( relativePosition ) {\n\t\t\t\t\t\t\tcase 'before':\n\t\t\t\t\t\t\tcase 'after':\n\t\t\t\t\t\t\t\t// Any of the current block's siblings (with the right block type) qualifies\n\t\t\t\t\t\t\t\t// as an auto-inserted block (inserted `before` or `after` the current one),\n\t\t\t\t\t\t\t\t// as the block might've been auto-inserted and then moved around a bit by the user.\n\t\t\t\t\t\t\t\tcandidates =\n\t\t\t\t\t\t\t\t\tgetBlock( _rootClientId )?.innerBlocks;\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 'first_child':\n\t\t\t\t\t\t\tcase 'last_child':\n\t\t\t\t\t\t\t\t// Any of the current block's child blocks (with the right block type) qualifies\n\t\t\t\t\t\t\t\t// as an auto-inserted first or last child block, as the block might've been\n\t\t\t\t\t\t\t\t// auto-inserted and then moved around a bit by the user.\n\t\t\t\t\t\t\t\tcandidates = getBlock(\n\t\t\t\t\t\t\t\t\tprops.clientId\n\t\t\t\t\t\t\t\t).innerBlocks;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst autoInsertedBlock = candidates?.find(\n\t\t\t\t\t\t\t( { name } ) => name === block.name\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tif ( autoInsertedBlock ) {\n\t\t\t\t\t\t\tclientIds[ block.name ] =\n\t\t\t\t\t\t\t\tautoInsertedBlock.clientId;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// TOOD: If no auto-inserted block was found in any of its designated locations,\n\t\t\t\t\t\t// we want to check if it's present elsewhere in the block tree.\n\t\t\t\t\t\t// If it is, we'd consider it manually inserted and would want to remove the\n\t\t\t\t\t\t// corresponding toggle from the block inspector panel.\n\n\t\t\t\t\t\treturn clientIds;\n\t\t\t\t\t},\n\t\t\t\t\t{}\n\t\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tblockIndex: getBlockIndex( props.clientId ),\n\t\t\t\tinnerBlocksLength: getBlock( props.clientId )?.innerBlocks\n\t\t\t\t\t?.length,\n\t\t\t\trootClientId: _rootClientId,\n\t\t\t\tautoInsertedBlockClientIds: _autoInsertedBlockClientIds,\n\t\t\t};\n\t\t},\n\t\t[ autoInsertedBlocksForCurrentBlock, props.blockName, props.clientId ]\n\t);\n\n\tconst { insertBlock, removeBlock } = useDispatch( blockEditorStore );\n\n\tif ( ! autoInsertedBlocksForCurrentBlock.length ) {\n\t\treturn null;\n\t}\n\n\tconst insertBlockIntoDesignatedLocation = ( block, relativePosition ) => {\n\t\tswitch ( relativePosition ) {\n\t\t\tcase 'before':\n\t\t\tcase 'after':\n\t\t\t\tinsertBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\trelativePosition === 'after' ? blockIndex + 1 : blockIndex,\n\t\t\t\t\trootClientId, // Insert as a child of the current block's parent\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\n\t\t\tcase 'first_child':\n\t\t\tcase 'last_child':\n\t\t\t\tinsertBlock(\n\t\t\t\t\tblock,\n\t\t\t\t\t// TODO: It'd be great if insertBlock() would accept negative indices for insertion.\n\t\t\t\t\trelativePosition === 'first_child' ? 0 : innerBlocksLength,\n\t\t\t\t\tprops.clientId, // Insert as a child of the current block.\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\treturn (\n\t\t<InspectorControls>\n\t\t\t<PanelBody title={ __( 'Plugins' ) } initialOpen={ true }>\n\t\t\t\t{ Object.keys( groupedAutoInsertedBlocks ).map( ( vendor ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Fragment key={ vendor }>\n\t\t\t\t\t\t\t<h3>{ vendor }</h3>\n\t\t\t\t\t\t\t{ groupedAutoInsertedBlocks[ vendor ].map(\n\t\t\t\t\t\t\t\t( block ) => {\n\t\t\t\t\t\t\t\t\t// TODO: Display block icon.\n\t\t\t\t\t\t\t\t\t// <BlockIcon icon={ block.icon } />\n\n\t\t\t\t\t\t\t\t\tconst checked =\n\t\t\t\t\t\t\t\t\t\tblock.name in\n\t\t\t\t\t\t\t\t\t\tautoInsertedBlockClientIds;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t\t\t\t\t\tchecked={ checked }\n\t\t\t\t\t\t\t\t\t\t\tkey={ block.title }\n\t\t\t\t\t\t\t\t\t\t\tlabel={ block.title }\n\t\t\t\t\t\t\t\t\t\t\tonChange={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\tif ( ! checked ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t// Create and insert block.\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst relativePosition =\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.autoInsert[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprops.blockName\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\tinsertBlockIntoDesignatedLocation(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcreateBlock(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.name\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\trelativePosition\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\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Remove block.\n\t\t\t\t\t\t\t\t\t\t\t\tconst clientId =\n\t\t\t\t\t\t\t\t\t\t\t\t\tautoInsertedBlockClientIds[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblock.name\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\tremoveBlock( clientId, false );\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) }\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</PanelBody>\n\t\t</InspectorControls>\n\t);\n}\n\nexport const withAutoInsertingBlocks = createHigherOrderComponent(\n\t( BlockEdit ) => {\n\t\treturn ( props ) => {\n\t\t\tconst blockEdit = <BlockEdit key=\"edit\" { ...props } />;\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{ blockEdit }\n\t\t\t\t\t<AutoInsertingBlocksControl\n\t\t\t\t\t\tblockName={ props.name }\n\t\t\t\t\t\tclientId={ props.clientId }\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t);\n\t\t};\n\t},\n\t'withAutoInsertingBlocks'\n);\n\nif ( window?.__experimentalAutoInsertingBlocks ) {\n\taddFilter(\n\t\t'editor.BlockEdit',\n\t\t'core/auto-inserting-blocks/with-inspector-control',\n\t\twithAutoInsertingBlocks\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,SAAS,EAAEC,aAAa,QAAQ,uBAAuB;AAChE,SAASC,0BAA0B,QAAQ,oBAAoB;AAC/D,SAASC,WAAW,EAAEC,KAAK,IAAIC,WAAW,QAAQ,mBAAmB;AACrE,SAASC,WAAW,EAAEC,SAAS,QAAQ,iBAAiB;;AAExD;AACA;AACA;AACA,SAASC,iBAAiB,QAAQ,eAAe;AACjD,SAASJ,KAAK,IAAIK,gBAAgB,QAAQ,UAAU;AAEpD,SAASC,0BAA0BA,CAAEC,KAAK,EAAG;EAC5C,MAAM;IAAEC,iCAAiC;IAAEC;EAA0B,CAAC,GACrEN,SAAS,CACNO,MAAM,IAAM;IACb,MAAM;MAAEC;IAAc,CAAC,GAAGD,MAAM,CAAET,WAAY,CAAC;IAC/C,MAAMW,kCAAkC,GACvCD,aAAa,CAAC,CAAC,EAAEE,MAAM,CACtB,CAAE;MAAEC;IAAW,CAAC,KACfA,UAAU,IAAIP,KAAK,CAACQ,SAAS,IAAID,UACnC,CAAC;;IAEF;IACA,MAAME,0BAA0B,GAC/BJ,kCAAkC,EAAEK,MAAM,CACzC,CAAEC,MAAM,EAAEC,KAAK,KAAM;MACpB,MAAM,CAAEC,SAAS,CAAE,GAAGD,KAAK,CAACE,IAAI,CAACC,KAAK,CAAE,GAAI,CAAC;MAC7C,IAAK,CAAEJ,MAAM,CAAEE,SAAS,CAAE,EAAG;QAC5BF,MAAM,CAAEE,SAAS,CAAE,GAAG,EAAE;MACzB;MACAF,MAAM,CAAEE,SAAS,CAAE,CAACG,IAAI,CAAEJ,KAAM,CAAC;MACjC,OAAOD,MAAM;IACd,CAAC,EACD,CAAC,CACF,CAAC;IAEF,OAAO;MACNV,iCAAiC,EAChCI,kCAAkC;MACnCH,yBAAyB,EAAEO;IAC5B,CAAC;EACF,CAAC,EACD,CAAET,KAAK,CAACQ,SAAS,CAClB,CAAC;EAEF,MAAM;IACLS,0BAA0B;IAC1BC,UAAU;IACVC,YAAY;IACZC;EACD,CAAC,GAAGxB,SAAS,CACVO,MAAM,IAAM;IACb,MAAM;MAAEkB,QAAQ;MAAEC,aAAa;MAAEC;IAAqB,CAAC,GACtDpB,MAAM,CAAEL,gBAAiB,CAAC;IAC3B,MAAM0B,aAAa,GAAGD,oBAAoB,CAAEvB,KAAK,CAACyB,QAAS,CAAC;IAE5D,MAAMC,2BAA2B,GAChCzB,iCAAiC,CAACS,MAAM,CACvC,CAAEiB,SAAS,EAAEf,KAAK,KAAM;MACvB,MAAMgB,gBAAgB,GACrBhB,KAAK,EAAEL,UAAU,GAAIP,KAAK,CAACQ,SAAS,CAAE;MACvC,IAAIqB,UAAU;MAEd,QAASD,gBAAgB;QACxB,KAAK,QAAQ;QACb,KAAK,OAAO;UACX;UACA;UACA;UACAC,UAAU,GACTR,QAAQ,CAAEG,aAAc,CAAC,EAAEM,WAAW;UACvC;QAED,KAAK,aAAa;QAClB,KAAK,YAAY;UAChB;UACA;UACA;UACAD,UAAU,GAAGR,QAAQ,CACpBrB,KAAK,CAACyB,QACP,CAAC,CAACK,WAAW;UACb;MACF;MAEA,MAAMC,iBAAiB,GAAGF,UAAU,EAAEG,IAAI,CACzC,CAAE;QAAElB;MAAK,CAAC,KAAMA,IAAI,KAAKF,KAAK,CAACE,IAChC,CAAC;MAED,IAAKiB,iBAAiB,EAAG;QACxBJ,SAAS,CAAEf,KAAK,CAACE,IAAI,CAAE,GACtBiB,iBAAiB,CAACN,QAAQ;MAC5B;;MAEA;MACA;MACA;MACA;;MAEA,OAAOE,SAAS;IACjB,CAAC,EACD,CAAC,CACF,CAAC;IAEF,OAAO;MACNT,UAAU,EAAEI,aAAa,CAAEtB,KAAK,CAACyB,QAAS,CAAC;MAC3CL,iBAAiB,EAAEC,QAAQ,CAAErB,KAAK,CAACyB,QAAS,CAAC,EAAEK,WAAW,EACvDG,MAAM;MACTd,YAAY,EAAEK,aAAa;MAC3BP,0BAA0B,EAAES;IAC7B,CAAC;EACF,CAAC,EACD,CAAEzB,iCAAiC,EAAED,KAAK,CAACQ,SAAS,EAAER,KAAK,CAACyB,QAAQ,CACrE,CAAC;EAED,MAAM;IAAES,WAAW;IAAEC;EAAY,CAAC,GAAGxC,WAAW,CAAEG,gBAAiB,CAAC;EAEpE,IAAK,CAAEG,iCAAiC,CAACgC,MAAM,EAAG;IACjD,OAAO,IAAI;EACZ;EAEA,MAAMG,iCAAiC,GAAGA,CAAExB,KAAK,EAAEgB,gBAAgB,KAAM;IACxE,QAASA,gBAAgB;MACxB,KAAK,QAAQ;MACb,KAAK,OAAO;QACXM,WAAW,CACVtB,KAAK,EACLgB,gBAAgB,KAAK,OAAO,GAAGV,UAAU,GAAG,CAAC,GAAGA,UAAU,EAC1DC,YAAY;QAAE;QACd,KACD,CAAC;QACD;MAED,KAAK,aAAa;MAClB,KAAK,YAAY;QAChBe,WAAW,CACVtB,KAAK;QACL;QACAgB,gBAAgB,KAAK,aAAa,GAAG,CAAC,GAAGR,iBAAiB,EAC1DpB,KAAK,CAACyB,QAAQ;QAAE;QAChB,KACD,CAAC;QACD;IACF;EACD,CAAC;EAED,OACCY,aAAA,CAACxC,iBAAiB,QACjBwC,aAAA,CAAChD,SAAS;IAACiD,KAAK,EAAGpD,EAAE,CAAE,SAAU,CAAG;IAACqD,WAAW,EAAG;EAAM,GACtDC,MAAM,CAACC,IAAI,CAAEvC,yBAA0B,CAAC,CAACwC,GAAG,CAAIC,MAAM,IAAM;IAC7D,OACCN,aAAA,CAACjD,QAAQ;MAACwD,GAAG,EAAGD;IAAQ,GACvBN,aAAA,aAAMM,MAAY,CAAC,EACjBzC,yBAAyB,CAAEyC,MAAM,CAAE,CAACD,GAAG,CACtC9B,KAAK,IAAM;MACZ;MACA;;MAEA,MAAMiC,OAAO,IACZjC,KAAK,CAACE,IAAI,IACVG,0BAA0B;MAE3B,OACCoB,aAAA,CAAC/C,aAAa;QACbuD,OAAO,EAAGA,OAAS;QACnBD,GAAG,EAAGhC,KAAK,CAAC0B,KAAO;QACnBQ,KAAK,EAAGlC,KAAK,CAAC0B,KAAO;QACrBS,QAAQ,EAAGA,CAAA,KAAM;UAChB,IAAK,CAAEF,OAAO,EAAG;YAChB;YACA,MAAMjB,gBAAgB,GACrBhB,KAAK,CAACL,UAAU,CACfP,KAAK,CAACQ,SAAS,CACf;YACF4B,iCAAiC,CAChC5C,WAAW,CACVoB,KAAK,CAACE,IACP,CAAC,EACDc,gBACD,CAAC;YACD;UACD;;UAEA;UACA,MAAMH,QAAQ,GACbR,0BAA0B,CACzBL,KAAK,CAACE,IAAI,CACV;UACFqB,WAAW,CAAEV,QAAQ,EAAE,KAAM,CAAC;QAC/B;MAAG,CACH,CAAC;IAEJ,CACD,CACS,CAAC;EAEb,CAAE,CACQ,CACO,CAAC;AAEtB;AAEA,OAAO,MAAMuB,uBAAuB,GAAGzD,0BAA0B,CAC9D0D,SAAS,IAAM;EAChB,OAASjD,KAAK,IAAM;IACnB,MAAMkD,SAAS,GAAGb,aAAA,CAACY,SAAS;MAACL,GAAG,EAAC,MAAM;MAAA,GAAM5C;IAAK,CAAI,CAAC;IACvD,OACCqC,aAAA,CAAAjD,QAAA,QACG8D,SAAS,EACXb,aAAA,CAACtC,0BAA0B;MAC1BS,SAAS,EAAGR,KAAK,CAACc,IAAM;MACxBW,QAAQ,EAAGzB,KAAK,CAACyB;IAAU,CAC3B,CACA,CAAC;EAEL,CAAC;AACF,CAAC,EACD,yBACD,CAAC;AAED,IAAK0B,MAAM,EAAEC,iCAAiC,EAAG;EAChDjE,SAAS,CACR,kBAAkB,EAClB,mDAAmD,EACnD6D,uBACD,CAAC;AACF"}
@@ -22,6 +22,7 @@ import './metadata';
22
22
  import './metadata-name';
23
23
  import './behaviors';
24
24
  import './custom-fields';
25
+ import './auto-inserting-blocks';
25
26
  export { useCustomSides } from './dimensions';
26
27
  export { useLayoutClasses, useLayoutStyles } from './layout';
27
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 './behaviors';\nimport './custom-fields';\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,aAAa;AACpB,OAAO,iBAAiB;AAExB,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 './behaviors';\nimport './custom-fields';\nimport './auto-inserting-blocks';\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,aAAa;AACpB,OAAO,iBAAiB;AACxB,OAAO,yBAAyB;AAEhC,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"}