@wordpress/block-editor 15.13.2-next.v.202602241322.0 → 15.14.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 (113) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -0
  3. package/build/components/block-quick-navigation/index.cjs +6 -1
  4. package/build/components/block-quick-navigation/index.cjs.map +3 -3
  5. package/build/components/block-settings-menu/block-settings-dropdown.cjs +47 -4
  6. package/build/components/block-settings-menu/block-settings-dropdown.cjs.map +2 -2
  7. package/build/components/block-settings-menu-controls/index.cjs +1 -0
  8. package/build/components/block-settings-menu-controls/index.cjs.map +2 -2
  9. package/build/components/block-styles/index.cjs +68 -57
  10. package/build/components/block-styles/index.cjs.map +3 -3
  11. package/build/components/block-styles/menu-items.cjs +10 -16
  12. package/build/components/block-styles/menu-items.cjs.map +3 -3
  13. package/build/components/block-switcher/block-styles-menu.cjs +50 -2
  14. package/build/components/block-switcher/block-styles-menu.cjs.map +3 -3
  15. package/build/components/block-switcher/block-transformations-menu.cjs +2 -0
  16. package/build/components/block-switcher/block-transformations-menu.cjs.map +2 -2
  17. package/build/components/block-switcher/block-variation-transformations.cjs +2 -0
  18. package/build/components/block-switcher/block-variation-transformations.cjs.map +2 -2
  19. package/build/components/block-switcher/preview-block-popover.cjs +10 -8
  20. package/build/components/block-switcher/preview-block-popover.cjs.map +2 -2
  21. package/build/components/block-toolbar/block-toolbar-icon.cjs +1 -1
  22. package/build/components/block-toolbar/block-toolbar-icon.cjs.map +2 -2
  23. package/build/components/block-toolbar/index.cjs +8 -4
  24. package/build/components/block-toolbar/index.cjs.map +2 -2
  25. package/build/components/block-visibility/modal.cjs +2 -2
  26. package/build/components/block-visibility/modal.cjs.map +2 -2
  27. package/build/components/dimension-control/index.cjs +4 -2
  28. package/build/components/dimension-control/index.cjs.map +2 -2
  29. package/build/components/global-styles/dimensions-panel.cjs +6 -3
  30. package/build/components/global-styles/dimensions-panel.cjs.map +2 -2
  31. package/build/components/grid/grid-visualizer.cjs +3 -0
  32. package/build/components/grid/grid-visualizer.cjs.map +2 -2
  33. package/build/components/list-view/block.cjs +2 -1
  34. package/build/components/list-view/block.cjs.map +2 -2
  35. package/build/hooks/auto-inspector-controls.cjs +26 -2
  36. package/build/hooks/auto-inspector-controls.cjs.map +3 -3
  37. package/build/index.cjs +2 -0
  38. package/build/index.cjs.map +2 -2
  39. package/build/store/reducer.cjs +13 -15
  40. package/build/store/reducer.cjs.map +2 -2
  41. package/build-module/components/block-quick-navigation/index.mjs +6 -1
  42. package/build-module/components/block-quick-navigation/index.mjs.map +2 -2
  43. package/build-module/components/block-settings-menu/block-settings-dropdown.mjs +48 -5
  44. package/build-module/components/block-settings-menu/block-settings-dropdown.mjs.map +2 -2
  45. package/build-module/components/block-settings-menu-controls/index.mjs +1 -0
  46. package/build-module/components/block-settings-menu-controls/index.mjs.map +2 -2
  47. package/build-module/components/block-styles/index.mjs +71 -61
  48. package/build-module/components/block-styles/index.mjs.map +2 -2
  49. package/build-module/components/block-styles/menu-items.mjs +10 -6
  50. package/build-module/components/block-styles/menu-items.mjs.map +2 -2
  51. package/build-module/components/block-switcher/block-styles-menu.mjs +51 -3
  52. package/build-module/components/block-switcher/block-styles-menu.mjs.map +2 -2
  53. package/build-module/components/block-switcher/block-transformations-menu.mjs +2 -0
  54. package/build-module/components/block-switcher/block-transformations-menu.mjs.map +2 -2
  55. package/build-module/components/block-switcher/block-variation-transformations.mjs +2 -0
  56. package/build-module/components/block-switcher/block-variation-transformations.mjs.map +2 -2
  57. package/build-module/components/block-switcher/preview-block-popover.mjs +11 -9
  58. package/build-module/components/block-switcher/preview-block-popover.mjs.map +2 -2
  59. package/build-module/components/block-toolbar/block-toolbar-icon.mjs +1 -1
  60. package/build-module/components/block-toolbar/block-toolbar-icon.mjs.map +2 -2
  61. package/build-module/components/block-toolbar/index.mjs +8 -4
  62. package/build-module/components/block-toolbar/index.mjs.map +2 -2
  63. package/build-module/components/block-visibility/modal.mjs +2 -2
  64. package/build-module/components/block-visibility/modal.mjs.map +2 -2
  65. package/build-module/components/dimension-control/index.mjs +4 -2
  66. package/build-module/components/dimension-control/index.mjs.map +2 -2
  67. package/build-module/components/global-styles/dimensions-panel.mjs +6 -3
  68. package/build-module/components/global-styles/dimensions-panel.mjs.map +2 -2
  69. package/build-module/components/grid/grid-visualizer.mjs +3 -0
  70. package/build-module/components/grid/grid-visualizer.mjs.map +2 -2
  71. package/build-module/components/list-view/block.mjs +2 -1
  72. package/build-module/components/list-view/block.mjs.map +2 -2
  73. package/build-module/hooks/auto-inspector-controls.mjs +28 -4
  74. package/build-module/hooks/auto-inspector-controls.mjs.map +2 -2
  75. package/build-module/index.mjs +2 -0
  76. package/build-module/index.mjs.map +3 -3
  77. package/build-module/store/reducer.mjs +13 -15
  78. package/build-module/store/reducer.mjs.map +2 -2
  79. package/build-style/content-rtl.css +12 -7
  80. package/build-style/content.css +13 -7
  81. package/build-style/style-rtl.css +0 -13
  82. package/build-style/style.css +0 -13
  83. package/package.json +39 -39
  84. package/src/components/block-list/content.scss +4 -0
  85. package/src/components/block-quick-navigation/index.js +6 -1
  86. package/src/components/block-settings-menu/block-settings-dropdown.js +46 -2
  87. package/src/components/block-settings-menu-controls/index.js +1 -0
  88. package/src/components/block-styles/index.js +35 -24
  89. package/src/components/block-styles/menu-items.js +10 -11
  90. package/src/components/block-styles/style.scss +0 -7
  91. package/src/components/block-switcher/block-styles-menu.js +47 -1
  92. package/src/components/block-switcher/block-transformations-menu.js +2 -0
  93. package/src/components/block-switcher/block-variation-transformations.js +2 -0
  94. package/src/components/block-switcher/preview-block-popover.js +9 -7
  95. package/src/components/block-switcher/style.scss +0 -8
  96. package/src/components/block-toolbar/block-toolbar-icon.js +6 -1
  97. package/src/components/block-toolbar/index.js +7 -2
  98. package/src/components/block-tools/style.scss +1 -14
  99. package/src/components/default-block-appender/content.scss +3 -25
  100. package/src/components/dimension-control/index.js +7 -4
  101. package/src/components/global-styles/dimensions-panel.js +3 -0
  102. package/src/components/grid/grid-visualizer.js +3 -0
  103. package/src/components/list-view/block.js +5 -0
  104. package/src/hooks/auto-inspector-controls.js +31 -4
  105. package/src/hooks/test/dimensions.js +16 -0
  106. package/src/index.js +1 -0
  107. package/src/store/reducer.js +23 -20
  108. package/src/store/test/reducer.js +109 -0
  109. package/build/components/block-styles/preview-panel.cjs +0 -61
  110. package/build/components/block-styles/preview-panel.cjs.map +0 -7
  111. package/build-module/components/block-styles/preview-panel.mjs +0 -30
  112. package/build-module/components/block-styles/preview-panel.mjs.map +0 -7
  113. package/src/components/block-styles/preview-panel.js +0 -35
@@ -35,16 +35,64 @@ __export(block_styles_menu_exports, {
35
35
  module.exports = __toCommonJS(block_styles_menu_exports);
36
36
  var import_i18n = require("@wordpress/i18n");
37
37
  var import_components = require("@wordpress/components");
38
+ var import_element = require("@wordpress/element");
38
39
  var import_menu_items = __toESM(require("../block-styles/menu-items.cjs"));
40
+ var import_use_styles_for_block = __toESM(require("../block-styles/use-styles-for-block.cjs"));
41
+ var import_utils = require("../block-styles/utils.cjs");
42
+ var import_preview_block_popover = __toESM(require("./preview-block-popover.cjs"));
39
43
  var import_jsx_runtime = require("react/jsx-runtime");
40
44
  function BlockStylesMenu({ hoveredBlock, onSwitch }) {
41
45
  const { clientId } = hoveredBlock;
42
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
46
+ const [hoveredStyle, setHoveredStyle] = (0, import_element.useState)(null);
47
+ const {
48
+ onSelect,
49
+ stylesToRender,
50
+ activeStyle,
51
+ genericPreviewBlock,
52
+ className
53
+ } = (0, import_use_styles_for_block.default)({
54
+ clientId,
55
+ onSwitch
56
+ });
57
+ const previewBlocks = (0, import_element.useMemo)(() => {
58
+ if (!hoveredStyle || !genericPreviewBlock) {
59
+ return null;
60
+ }
61
+ const previewClassName = (0, import_utils.replaceActiveStyle)(
62
+ className,
63
+ activeStyle,
64
+ hoveredStyle
65
+ );
66
+ return [
67
+ {
68
+ ...genericPreviewBlock,
69
+ attributes: {
70
+ ...genericPreviewBlock.attributes || {},
71
+ className: previewClassName
72
+ }
73
+ }
74
+ ];
75
+ }, [hoveredStyle, genericPreviewBlock, className, activeStyle]);
76
+ if (!stylesToRender || stylesToRender.length === 0) {
77
+ return null;
78
+ }
79
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
43
80
  import_components.MenuGroup,
44
81
  {
45
82
  label: (0, import_i18n.__)("Styles"),
46
83
  className: "block-editor-block-switcher__styles__menugroup",
47
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_menu_items.default, { clientId, onSwitch })
84
+ children: [
85
+ previewBlocks && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_preview_block_popover.default, { blocks: previewBlocks }),
86
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
87
+ import_menu_items.default,
88
+ {
89
+ stylesToRender,
90
+ activeStyle,
91
+ onSelect,
92
+ onHoverStyle: setHoveredStyle
93
+ }
94
+ )
95
+ ]
48
96
  }
49
97
  );
50
98
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-switcher/block-styles-menu.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockStylesMenuItems from '../block-styles/menu-items';\n\nexport default function BlockStylesMenu( { hoveredBlock, onSwitch } ) {\n\tconst { clientId } = hoveredBlock;\n\n\treturn (\n\t\t<MenuGroup\n\t\t\tlabel={ __( 'Styles' ) }\n\t\t\tclassName=\"block-editor-block-switcher__styles__menugroup\"\n\t\t>\n\t\t\t<BlockStylesMenuItems clientId={ clientId } onSwitch={ onSwitch } />\n\t\t</MenuGroup>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAA0B;AAK1B,wBAAiC;AAU9B;AARY,SAAR,gBAAkC,EAAE,cAAc,SAAS,GAAI;AACrE,QAAM,EAAE,SAAS,IAAI;AAErB,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAQ,gBAAI,QAAS;AAAA,MACrB,WAAU;AAAA,MAEV,sDAAC,kBAAAA,SAAA,EAAqB,UAAsB,UAAsB;AAAA;AAAA,EACnE;AAEF;",
6
- "names": ["BlockStylesMenuItems"]
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup } from '@wordpress/components';\nimport { useMemo, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockStylesMenuItems from '../block-styles/menu-items';\nimport useStylesForBlocks from '../block-styles/use-styles-for-block';\nimport { replaceActiveStyle } from '../block-styles/utils';\nimport PreviewBlockPopover from './preview-block-popover';\n\nexport default function BlockStylesMenu( { hoveredBlock, onSwitch } ) {\n\tconst { clientId } = hoveredBlock;\n\tconst [ hoveredStyle, setHoveredStyle ] = useState( null );\n\tconst {\n\t\tonSelect,\n\t\tstylesToRender,\n\t\tactiveStyle,\n\t\tgenericPreviewBlock,\n\t\tclassName,\n\t} = useStylesForBlocks( {\n\t\tclientId,\n\t\tonSwitch,\n\t} );\n\tconst previewBlocks = useMemo( () => {\n\t\tif ( ! hoveredStyle || ! genericPreviewBlock ) {\n\t\t\treturn null;\n\t\t}\n\t\tconst previewClassName = replaceActiveStyle(\n\t\t\tclassName,\n\t\t\tactiveStyle,\n\t\t\thoveredStyle\n\t\t);\n\t\treturn [\n\t\t\t{\n\t\t\t\t...genericPreviewBlock,\n\t\t\t\tattributes: {\n\t\t\t\t\t...( genericPreviewBlock.attributes || {} ),\n\t\t\t\t\tclassName: previewClassName,\n\t\t\t\t},\n\t\t\t},\n\t\t];\n\t}, [ hoveredStyle, genericPreviewBlock, className, activeStyle ] );\n\n\tif ( ! stylesToRender || stylesToRender.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<MenuGroup\n\t\t\tlabel={ __( 'Styles' ) }\n\t\t\tclassName=\"block-editor-block-switcher__styles__menugroup\"\n\t\t>\n\t\t\t{ previewBlocks && (\n\t\t\t\t<PreviewBlockPopover blocks={ previewBlocks } />\n\t\t\t) }\n\t\t\t<BlockStylesMenuItems\n\t\t\t\tstylesToRender={ stylesToRender }\n\t\t\t\tactiveStyle={ activeStyle }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tonHoverStyle={ setHoveredStyle }\n\t\t\t/>\n\t\t</MenuGroup>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAA0B;AAC1B,qBAAkC;AAKlC,wBAAiC;AACjC,kCAA+B;AAC/B,mBAAmC;AACnC,mCAAgC;AAwC9B;AAtCa,SAAR,gBAAkC,EAAE,cAAc,SAAS,GAAI;AACrE,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,CAAE,cAAc,eAAgB,QAAI,yBAAU,IAAK;AACzD,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI,4BAAAA,SAAoB;AAAA,IACvB;AAAA,IACA;AAAA,EACD,CAAE;AACF,QAAM,oBAAgB,wBAAS,MAAM;AACpC,QAAK,CAAE,gBAAgB,CAAE,qBAAsB;AAC9C,aAAO;AAAA,IACR;AACA,UAAM,uBAAmB;AAAA,MACxB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,WAAO;AAAA,MACN;AAAA,QACC,GAAG;AAAA,QACH,YAAY;AAAA,UACX,GAAK,oBAAoB,cAAc,CAAC;AAAA,UACxC,WAAW;AAAA,QACZ;AAAA,MACD;AAAA,IACD;AAAA,EACD,GAAG,CAAE,cAAc,qBAAqB,WAAW,WAAY,CAAE;AAEjE,MAAK,CAAE,kBAAkB,eAAe,WAAW,GAAI;AACtD,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAQ,gBAAI,QAAS;AAAA,MACrB,WAAU;AAAA,MAER;AAAA,yBACD,4CAAC,6BAAAC,SAAA,EAAoB,QAAS,eAAgB;AAAA,QAE/C;AAAA,UAAC,kBAAAC;AAAA,UAAA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,cAAe;AAAA;AAAA,QAChB;AAAA;AAAA;AAAA,EACD;AAEF;",
6
+ "names": ["useStylesForBlocks", "PreviewBlockPopover", "BlockStylesMenuItems"]
7
7
  }
@@ -161,6 +161,8 @@ function BlockTransformationItem({
161
161
  disabled: isDisabled,
162
162
  onMouseLeave: () => setHoveredTransformItemName(null),
163
163
  onMouseEnter: () => setHoveredTransformItemName(name),
164
+ onFocus: () => setHoveredTransformItemName(name),
165
+ onBlur: () => setHoveredTransformItemName(null),
164
166
  children: [
165
167
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_icon.default, { icon, showColors: true }),
166
168
  title
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-switcher/block-transformations-menu.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup, MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\nimport BlockVariationTransformations from './block-variation-transformations';\n\n/**\n * Helper hook to group transformations to display them in a specific order in the UI.\n * For now we group only priority content driven transformations(ex. paragraph -> heading).\n *\n * Later on we could also group 'layout' transformations(ex. paragraph -> group) and\n * display them in different sections.\n *\n * @param {Object[]} possibleBlockTransformations The available block transformations.\n * @return {Record<string, Object[]>} The grouped block transformations.\n */\nfunction useGroupedTransforms( possibleBlockTransformations ) {\n\tconst priorityContentTransformationBlocks = {\n\t\t'core/paragraph': 1,\n\t\t'core/heading': 2,\n\t\t'core/list': 3,\n\t\t'core/quote': 4,\n\t};\n\tconst transformations = useMemo( () => {\n\t\tconst priorityTextTransformsNames = Object.keys(\n\t\t\tpriorityContentTransformationBlocks\n\t\t);\n\t\tconst groupedPossibleTransforms = possibleBlockTransformations.reduce(\n\t\t\t( accumulator, item ) => {\n\t\t\t\tconst { name } = item;\n\t\t\t\tif ( priorityTextTransformsNames.includes( name ) ) {\n\t\t\t\t\taccumulator.priorityTextTransformations.push( item );\n\t\t\t\t} else {\n\t\t\t\t\taccumulator.restTransformations.push( item );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{ priorityTextTransformations: [], restTransformations: [] }\n\t\t);\n\t\t/**\n\t\t * If there is only one priority text transformation and it's a Quote,\n\t\t * is should move to the rest transformations. This is because Quote can\n\t\t * be a container for any block type, so in multi-block selection it will\n\t\t * always be suggested, even for non-text blocks.\n\t\t */\n\t\tif (\n\t\t\tgroupedPossibleTransforms.priorityTextTransformations.length ===\n\t\t\t\t1 &&\n\t\t\tgroupedPossibleTransforms.priorityTextTransformations[ 0 ].name ===\n\t\t\t\t'core/quote'\n\t\t) {\n\t\t\tconst singleQuote =\n\t\t\t\tgroupedPossibleTransforms.priorityTextTransformations.pop();\n\t\t\tgroupedPossibleTransforms.restTransformations.push( singleQuote );\n\t\t}\n\t\treturn groupedPossibleTransforms;\n\t}, [ possibleBlockTransformations ] );\n\n\t// Order the priority text transformations.\n\ttransformations.priorityTextTransformations.sort(\n\t\t( { name: currentName }, { name: nextName } ) => {\n\t\t\treturn priorityContentTransformationBlocks[ currentName ] <\n\t\t\t\tpriorityContentTransformationBlocks[ nextName ]\n\t\t\t\t? -1\n\t\t\t\t: 1;\n\t\t}\n\t);\n\treturn transformations;\n}\n\nconst BlockTransformationsMenu = ( {\n\tclassName,\n\tpossibleBlockTransformations,\n\tpossibleBlockVariationTransformations,\n\tonSelect,\n\tonSelectVariation,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\n\tconst { priorityTextTransformations, restTransformations } =\n\t\tuseGroupedTransforms( possibleBlockTransformations );\n\t// We have to check if both content transformations(priority and rest) are set\n\t// in order to create a separate MenuGroup for them.\n\tconst hasBothContentTransformations =\n\t\tpriorityTextTransformations.length && restTransformations.length;\n\tconst restTransformItems = !! restTransformations.length && (\n\t\t<RestTransformationItems\n\t\t\trestTransformations={ restTransformations }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<MenuGroup label={ __( 'Transform to' ) } className={ className }>\n\t\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\t\tblocks={ switchToBlockType(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\thoveredTransformItemName\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! possibleBlockVariationTransformations?.length && (\n\t\t\t\t\t<BlockVariationTransformations\n\t\t\t\t\t\ttransformations={\n\t\t\t\t\t\t\tpossibleBlockVariationTransformations\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ priorityTextTransformations.map( ( item ) => (\n\t\t\t\t\t<BlockTransformationItem\n\t\t\t\t\t\tkey={ item.name }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsetHoveredTransformItemName={\n\t\t\t\t\t\t\tsetHoveredTransformItemName\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t\t{ ! hasBothContentTransformations && restTransformItems }\n\t\t\t</MenuGroup>\n\t\t\t{ !! hasBothContentTransformations && (\n\t\t\t\t<MenuGroup className={ className }>\n\t\t\t\t\t{ restTransformItems }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nfunction RestTransformationItems( {\n\trestTransformations,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\treturn restTransformations.map( ( item ) => (\n\t\t<BlockTransformationItem\n\t\t\tkey={ item.name }\n\t\t\titem={ item }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t) );\n}\n\nfunction BlockTransformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title, isDisabled } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tdisabled={ isDisabled }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockTransformationsMenu;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuGroup, MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tswitchToBlockType,\n} from '@wordpress/blocks';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\nimport BlockVariationTransformations from './block-variation-transformations';\n\n/**\n * Helper hook to group transformations to display them in a specific order in the UI.\n * For now we group only priority content driven transformations(ex. paragraph -> heading).\n *\n * Later on we could also group 'layout' transformations(ex. paragraph -> group) and\n * display them in different sections.\n *\n * @param {Object[]} possibleBlockTransformations The available block transformations.\n * @return {Record<string, Object[]>} The grouped block transformations.\n */\nfunction useGroupedTransforms( possibleBlockTransformations ) {\n\tconst priorityContentTransformationBlocks = {\n\t\t'core/paragraph': 1,\n\t\t'core/heading': 2,\n\t\t'core/list': 3,\n\t\t'core/quote': 4,\n\t};\n\tconst transformations = useMemo( () => {\n\t\tconst priorityTextTransformsNames = Object.keys(\n\t\t\tpriorityContentTransformationBlocks\n\t\t);\n\t\tconst groupedPossibleTransforms = possibleBlockTransformations.reduce(\n\t\t\t( accumulator, item ) => {\n\t\t\t\tconst { name } = item;\n\t\t\t\tif ( priorityTextTransformsNames.includes( name ) ) {\n\t\t\t\t\taccumulator.priorityTextTransformations.push( item );\n\t\t\t\t} else {\n\t\t\t\t\taccumulator.restTransformations.push( item );\n\t\t\t\t}\n\t\t\t\treturn accumulator;\n\t\t\t},\n\t\t\t{ priorityTextTransformations: [], restTransformations: [] }\n\t\t);\n\t\t/**\n\t\t * If there is only one priority text transformation and it's a Quote,\n\t\t * is should move to the rest transformations. This is because Quote can\n\t\t * be a container for any block type, so in multi-block selection it will\n\t\t * always be suggested, even for non-text blocks.\n\t\t */\n\t\tif (\n\t\t\tgroupedPossibleTransforms.priorityTextTransformations.length ===\n\t\t\t\t1 &&\n\t\t\tgroupedPossibleTransforms.priorityTextTransformations[ 0 ].name ===\n\t\t\t\t'core/quote'\n\t\t) {\n\t\t\tconst singleQuote =\n\t\t\t\tgroupedPossibleTransforms.priorityTextTransformations.pop();\n\t\t\tgroupedPossibleTransforms.restTransformations.push( singleQuote );\n\t\t}\n\t\treturn groupedPossibleTransforms;\n\t}, [ possibleBlockTransformations ] );\n\n\t// Order the priority text transformations.\n\ttransformations.priorityTextTransformations.sort(\n\t\t( { name: currentName }, { name: nextName } ) => {\n\t\t\treturn priorityContentTransformationBlocks[ currentName ] <\n\t\t\t\tpriorityContentTransformationBlocks[ nextName ]\n\t\t\t\t? -1\n\t\t\t\t: 1;\n\t\t}\n\t);\n\treturn transformations;\n}\n\nconst BlockTransformationsMenu = ( {\n\tclassName,\n\tpossibleBlockTransformations,\n\tpossibleBlockVariationTransformations,\n\tonSelect,\n\tonSelectVariation,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\n\tconst { priorityTextTransformations, restTransformations } =\n\t\tuseGroupedTransforms( possibleBlockTransformations );\n\t// We have to check if both content transformations(priority and rest) are set\n\t// in order to create a separate MenuGroup for them.\n\tconst hasBothContentTransformations =\n\t\tpriorityTextTransformations.length && restTransformations.length;\n\tconst restTransformItems = !! restTransformations.length && (\n\t\t<RestTransformationItems\n\t\t\trestTransformations={ restTransformations }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t);\n\treturn (\n\t\t<>\n\t\t\t<MenuGroup label={ __( 'Transform to' ) } className={ className }>\n\t\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\t\tblocks={ switchToBlockType(\n\t\t\t\t\t\t\tblocks,\n\t\t\t\t\t\t\thoveredTransformItemName\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ !! possibleBlockVariationTransformations?.length && (\n\t\t\t\t\t<BlockVariationTransformations\n\t\t\t\t\t\ttransformations={\n\t\t\t\t\t\t\tpossibleBlockVariationTransformations\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblocks={ blocks }\n\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ priorityTextTransformations.map( ( item ) => (\n\t\t\t\t\t<BlockTransformationItem\n\t\t\t\t\t\tkey={ item.name }\n\t\t\t\t\t\titem={ item }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsetHoveredTransformItemName={\n\t\t\t\t\t\t\tsetHoveredTransformItemName\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t) ) }\n\t\t\t\t{ ! hasBothContentTransformations && restTransformItems }\n\t\t\t</MenuGroup>\n\t\t\t{ !! hasBothContentTransformations && (\n\t\t\t\t<MenuGroup className={ className }>\n\t\t\t\t\t{ restTransformItems }\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</>\n\t);\n};\n\nfunction RestTransformationItems( {\n\trestTransformations,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\treturn restTransformations.map( ( item ) => (\n\t\t<BlockTransformationItem\n\t\t\tkey={ item.name }\n\t\t\titem={ item }\n\t\t\tonSelect={ onSelect }\n\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t/>\n\t) );\n}\n\nfunction BlockTransformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title, isDisabled } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tdisabled={ isDisabled }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t\tonFocus={ () => setHoveredTransformItemName( name ) }\n\t\t\tonBlur={ () => setHoveredTransformItemName( null ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockTransformationsMenu;\n"],
5
+ "mappings": "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",
6
6
  "names": ["PreviewBlockPopover", "BlockVariationTransformations", "BlockIcon"]
7
7
  }
@@ -118,6 +118,8 @@ function BlockVariationTransformationItem({
118
118
  },
119
119
  onMouseLeave: () => setHoveredTransformItemName(null),
120
120
  onMouseEnter: () => setHoveredTransformItemName(name),
121
+ onFocus: () => setHoveredTransformItemName(name),
122
+ onBlur: () => setHoveredTransformItemName(null),
121
123
  children: [
122
124
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_icon.default, { icon, showColors: true }),
123
125
  title
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-switcher/block-variation-transformations.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tcloneBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\n\nconst EMPTY_OBJECT = {};\n\nexport function useBlockVariationTransforms( { clientIds, blocks } ) {\n\tconst { activeBlockVariation, blockVariationTransformations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes, canRemoveBlocks } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\tselect( blocksStore );\n\n\t\t\tconst canRemove = canRemoveBlocks( clientIds );\n\t\t\t// Only handle single selected blocks for now.\n\t\t\tif ( blocks.length !== 1 || ! canRemove ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\tconst [ firstBlock ] = blocks;\n\t\t\treturn {\n\t\t\t\tblockVariationTransformations: getBlockVariations(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\tgetBlockAttributes( firstBlock.clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\tconst transformations = useMemo( () => {\n\t\treturn blockVariationTransformations?.filter(\n\t\t\t( { name } ) => name !== activeBlockVariation?.name\n\t\t);\n\t}, [ blockVariationTransformations, activeBlockVariation ] );\n\treturn transformations;\n}\n\nconst BlockVariationTransformations = ( {\n\ttransformations,\n\tonSelect,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\treturn (\n\t\t<>\n\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\tblocks={ cloneBlock(\n\t\t\t\t\t\tblocks[ 0 ],\n\t\t\t\t\t\ttransformations.find(\n\t\t\t\t\t\t\t( { name } ) => name === hoveredTransformItemName\n\t\t\t\t\t\t).attributes\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ transformations?.map( ( item ) => (\n\t\t\t\t<BlockVariationTransformationItem\n\t\t\t\t\tkey={ item.name }\n\t\t\t\t\titem={ item }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</>\n\t);\n};\n\nfunction BlockVariationTransformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockVariationTransformations;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAyB;AACzB,oBAIO;AACP,kBAA0B;AAC1B,qBAAkC;AAKlC,mBAA0C;AAC1C,wBAAsB;AACtB,mCAAgC;AA+C9B;AA7CF,IAAM,eAAe,CAAC;AAEf,SAAS,4BAA6B,EAAE,WAAW,OAAO,GAAI;AACpE,QAAM,EAAE,sBAAsB,8BAA8B,QAAI;AAAA,IAC/D,CAAE,WAAY;AACb,YAAM,EAAE,oBAAoB,gBAAgB,IAC3C,OAAQ,aAAAA,KAAiB;AAC1B,YAAM,EAAE,yBAAyB,mBAAmB,IACnD,OAAQ,cAAAC,KAAY;AAErB,YAAM,YAAY,gBAAiB,SAAU;AAE7C,UAAK,OAAO,WAAW,KAAK,CAAE,WAAY;AACzC,eAAO;AAAA,MACR;AACA,YAAM,CAAE,UAAW,IAAI;AACvB,aAAO;AAAA,QACN,+BAA+B;AAAA,UAC9B,WAAW;AAAA,UACX;AAAA,QACD;AAAA,QACA,sBAAsB;AAAA,UACrB,WAAW;AAAA,UACX,mBAAoB,WAAW,QAAS;AAAA,QACzC;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,WAAW,MAAO;AAAA,EACrB;AACA,QAAM,sBAAkB,wBAAS,MAAM;AACtC,WAAO,+BAA+B;AAAA,MACrC,CAAE,EAAE,KAAK,MAAO,SAAS,sBAAsB;AAAA,IAChD;AAAA,EACD,GAAG,CAAE,+BAA+B,oBAAqB,CAAE;AAC3D,SAAO;AACR;AAEA,IAAM,gCAAgC,CAAE;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD,MAAO;AACN,QAAM,CAAE,0BAA0B,2BAA4B,QAC7D,yBAAS;AACV,SACC,4EACG;AAAA,gCACD;AAAA,MAAC,6BAAAC;AAAA,MAAA;AAAA,QACA,YAAS;AAAA,UACR,OAAQ,CAAE;AAAA,UACV,gBAAgB;AAAA,YACf,CAAE,EAAE,KAAK,MAAO,SAAS;AAAA,UAC1B,EAAE;AAAA,QACH;AAAA;AAAA,IACD;AAAA,IAEC,iBAAiB,IAAK,CAAE,SACzB;AAAA,MAAC;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,MAHM,KAAK;AAAA,IAIZ,CACC;AAAA,KACH;AAEF;AAEA,SAAS,iCAAkC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAC9B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,eAAY,4CAA8B,IAAK;AAAA,MAC/C,SAAU,CAAE,UAAW;AACtB,cAAM,eAAe;AACrB,iBAAU,IAAK;AAAA,MAChB;AAAA,MACA,cAAe,MAAM,4BAA6B,IAAK;AAAA,MACvD,cAAe,MAAM,4BAA6B,IAAK;AAAA,MAEvD;AAAA,oDAAC,kBAAAC,SAAA,EAAU,MAAc,YAAU,MAAC;AAAA,QAClC;AAAA;AAAA;AAAA,EACH;AAEF;AAEA,IAAO,0CAAQ;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { MenuItem } from '@wordpress/components';\nimport {\n\tgetBlockMenuDefaultClassName,\n\tcloneBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\nimport { useState, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport BlockIcon from '../block-icon';\nimport PreviewBlockPopover from './preview-block-popover';\n\nconst EMPTY_OBJECT = {};\n\nexport function useBlockVariationTransforms( { clientIds, blocks } ) {\n\tconst { activeBlockVariation, blockVariationTransformations } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockAttributes, canRemoveBlocks } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\tselect( blocksStore );\n\n\t\t\tconst canRemove = canRemoveBlocks( clientIds );\n\t\t\t// Only handle single selected blocks for now.\n\t\t\tif ( blocks.length !== 1 || ! canRemove ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\tconst [ firstBlock ] = blocks;\n\t\t\treturn {\n\t\t\t\tblockVariationTransformations: getBlockVariations(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\t'transform'\n\t\t\t\t),\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tfirstBlock.name,\n\t\t\t\t\tgetBlockAttributes( firstBlock.clientId )\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ clientIds, blocks ]\n\t);\n\tconst transformations = useMemo( () => {\n\t\treturn blockVariationTransformations?.filter(\n\t\t\t( { name } ) => name !== activeBlockVariation?.name\n\t\t);\n\t}, [ blockVariationTransformations, activeBlockVariation ] );\n\treturn transformations;\n}\n\nconst BlockVariationTransformations = ( {\n\ttransformations,\n\tonSelect,\n\tblocks,\n} ) => {\n\tconst [ hoveredTransformItemName, setHoveredTransformItemName ] =\n\t\tuseState();\n\treturn (\n\t\t<>\n\t\t\t{ hoveredTransformItemName && (\n\t\t\t\t<PreviewBlockPopover\n\t\t\t\t\tblocks={ cloneBlock(\n\t\t\t\t\t\tblocks[ 0 ],\n\t\t\t\t\t\ttransformations.find(\n\t\t\t\t\t\t\t( { name } ) => name === hoveredTransformItemName\n\t\t\t\t\t\t).attributes\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ transformations?.map( ( item ) => (\n\t\t\t\t<BlockVariationTransformationItem\n\t\t\t\t\tkey={ item.name }\n\t\t\t\t\titem={ item }\n\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\tsetHoveredTransformItemName={ setHoveredTransformItemName }\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</>\n\t);\n};\n\nfunction BlockVariationTransformationItem( {\n\titem,\n\tonSelect,\n\tsetHoveredTransformItemName,\n} ) {\n\tconst { name, icon, title } = item;\n\treturn (\n\t\t<MenuItem\n\t\t\tclassName={ getBlockMenuDefaultClassName( name ) }\n\t\t\tonClick={ ( event ) => {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonSelect( name );\n\t\t\t} }\n\t\t\tonMouseLeave={ () => setHoveredTransformItemName( null ) }\n\t\t\tonMouseEnter={ () => setHoveredTransformItemName( name ) }\n\t\t\tonFocus={ () => setHoveredTransformItemName( name ) }\n\t\t\tonBlur={ () => setHoveredTransformItemName( null ) }\n\t\t>\n\t\t\t<BlockIcon icon={ icon } showColors />\n\t\t\t{ title }\n\t\t</MenuItem>\n\t);\n}\n\nexport default BlockVariationTransformations;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAyB;AACzB,oBAIO;AACP,kBAA0B;AAC1B,qBAAkC;AAKlC,mBAA0C;AAC1C,wBAAsB;AACtB,mCAAgC;AA+C9B;AA7CF,IAAM,eAAe,CAAC;AAEf,SAAS,4BAA6B,EAAE,WAAW,OAAO,GAAI;AACpE,QAAM,EAAE,sBAAsB,8BAA8B,QAAI;AAAA,IAC/D,CAAE,WAAY;AACb,YAAM,EAAE,oBAAoB,gBAAgB,IAC3C,OAAQ,aAAAA,KAAiB;AAC1B,YAAM,EAAE,yBAAyB,mBAAmB,IACnD,OAAQ,cAAAC,KAAY;AAErB,YAAM,YAAY,gBAAiB,SAAU;AAE7C,UAAK,OAAO,WAAW,KAAK,CAAE,WAAY;AACzC,eAAO;AAAA,MACR;AACA,YAAM,CAAE,UAAW,IAAI;AACvB,aAAO;AAAA,QACN,+BAA+B;AAAA,UAC9B,WAAW;AAAA,UACX;AAAA,QACD;AAAA,QACA,sBAAsB;AAAA,UACrB,WAAW;AAAA,UACX,mBAAoB,WAAW,QAAS;AAAA,QACzC;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,WAAW,MAAO;AAAA,EACrB;AACA,QAAM,sBAAkB,wBAAS,MAAM;AACtC,WAAO,+BAA+B;AAAA,MACrC,CAAE,EAAE,KAAK,MAAO,SAAS,sBAAsB;AAAA,IAChD;AAAA,EACD,GAAG,CAAE,+BAA+B,oBAAqB,CAAE;AAC3D,SAAO;AACR;AAEA,IAAM,gCAAgC,CAAE;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACD,MAAO;AACN,QAAM,CAAE,0BAA0B,2BAA4B,QAC7D,yBAAS;AACV,SACC,4EACG;AAAA,gCACD;AAAA,MAAC,6BAAAC;AAAA,MAAA;AAAA,QACA,YAAS;AAAA,UACR,OAAQ,CAAE;AAAA,UACV,gBAAgB;AAAA,YACf,CAAE,EAAE,KAAK,MAAO,SAAS;AAAA,UAC1B,EAAE;AAAA,QACH;AAAA;AAAA,IACD;AAAA,IAEC,iBAAiB,IAAK,CAAE,SACzB;AAAA,MAAC;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,MAHM,KAAK;AAAA,IAIZ,CACC;AAAA,KACH;AAEF;AAEA,SAAS,iCAAkC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,EAAE,MAAM,MAAM,MAAM,IAAI;AAC9B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,eAAY,4CAA8B,IAAK;AAAA,MAC/C,SAAU,CAAE,UAAW;AACtB,cAAM,eAAe;AACrB,iBAAU,IAAK;AAAA,MAChB;AAAA,MACA,cAAe,MAAM,4BAA6B,IAAK;AAAA,MACvD,cAAe,MAAM,4BAA6B,IAAK;AAAA,MACvD,SAAU,MAAM,4BAA6B,IAAK;AAAA,MAClD,QAAS,MAAM,4BAA6B,IAAK;AAAA,MAEjD;AAAA,oDAAC,kBAAAC,SAAA,EAAU,MAAc,YAAU,MAAC;AAAA,QAClC;AAAA;AAAA;AAAA,EACH;AAEF;AAEA,IAAO,0CAAQ;",
6
6
  "names": ["blockEditorStore", "blocksStore", "PreviewBlockPopover", "BlockIcon"]
7
7
  }
@@ -33,12 +33,16 @@ __export(preview_block_popover_exports, {
33
33
  default: () => PreviewBlockPopover
34
34
  });
35
35
  module.exports = __toCommonJS(preview_block_popover_exports);
36
- var import_i18n = require("@wordpress/i18n");
37
36
  var import_components = require("@wordpress/components");
38
37
  var import_compose = require("@wordpress/compose");
39
38
  var import_block_preview = __toESM(require("../block-preview/index.cjs"));
40
39
  var import_jsx_runtime = require("react/jsx-runtime");
41
- function PreviewBlockPopover({ blocks }) {
40
+ function PreviewBlockPopover({
41
+ blocks,
42
+ placement = "right-start",
43
+ offset = 16,
44
+ anchor
45
+ }) {
42
46
  const isMobile = (0, import_compose.useViewportMatch)("medium", "<");
43
47
  if (isMobile) {
44
48
  return null;
@@ -47,13 +51,11 @@ function PreviewBlockPopover({ blocks }) {
47
51
  import_components.Popover,
48
52
  {
49
53
  className: "block-editor-block-switcher__popover-preview",
50
- placement: "right-start",
54
+ placement,
51
55
  focusOnMount: false,
52
- offset: 16,
53
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "block-editor-block-switcher__preview", children: [
54
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "block-editor-block-switcher__preview-title", children: (0, import_i18n.__)("Preview") }),
55
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_preview.default, { viewportWidth: 601, blocks })
56
- ] })
56
+ offset,
57
+ anchor,
58
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "block-editor-block-switcher__preview", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_block_preview.default, { viewportWidth: 601, blocks }) })
57
59
  }
58
60
  ) });
59
61
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-switcher/preview-block-popover.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Popover } from '@wordpress/components';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockPreview from '../block-preview';\n\nexport default function PreviewBlockPopover( { blocks } ) {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tif ( isMobile ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__popover-preview-container\">\n\t\t\t<Popover\n\t\t\t\tclassName=\"block-editor-block-switcher__popover-preview\"\n\t\t\t\tplacement=\"right-start\"\n\t\t\t\tfocusOnMount={ false }\n\t\t\t\toffset={ 16 }\n\t\t\t>\n\t\t\t\t<div className=\"block-editor-block-switcher__preview\">\n\t\t\t\t\t<div className=\"block-editor-block-switcher__preview-title\">\n\t\t\t\t\t\t{ __( 'Preview' ) }\n\t\t\t\t\t</div>\n\t\t\t\t\t{ /* 600px is the value of $break-small in base-styles/_breakpoints.scss.\n\t\t\t\t\t\tWe set the viewport width to 601px to make sure that the media-text \n\t\t\t\t\t\tblock which uses this breakpoint has the correct padding. */ }\n\t\t\t\t\t<BlockPreview viewportWidth={ 601 } blocks={ blocks } />\n\t\t\t\t</div>\n\t\t\t</Popover>\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,wBAAwB;AACxB,qBAAiC;AAKjC,2BAAyB;AAiBrB;AAfW,SAAR,oBAAsC,EAAE,OAAO,GAAI;AACzD,QAAM,eAAW,iCAAkB,UAAU,GAAI;AAEjD,MAAK,UAAW;AACf,WAAO;AAAA,EACR;AAEA,SACC,4CAAC,SAAI,WAAU,0DACd;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,WAAU;AAAA,MACV,cAAe;AAAA,MACf,QAAS;AAAA,MAET,uDAAC,SAAI,WAAU,wCACd;AAAA,oDAAC,SAAI,WAAU,8CACZ,8BAAI,SAAU,GACjB;AAAA,QAIA,4CAAC,qBAAAA,SAAA,EAAa,eAAgB,KAAM,QAAkB;AAAA,SACvD;AAAA;AAAA,EACD,GACD;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Popover } from '@wordpress/components';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockPreview from '../block-preview';\n\nexport default function PreviewBlockPopover( {\n\tblocks,\n\tplacement = 'right-start',\n\toffset = 16,\n\tanchor,\n} ) {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tif ( isMobile ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-block-switcher__popover-preview-container\">\n\t\t\t<Popover\n\t\t\t\tclassName=\"block-editor-block-switcher__popover-preview\"\n\t\t\t\tplacement={ placement }\n\t\t\t\tfocusOnMount={ false }\n\t\t\t\toffset={ offset }\n\t\t\t\tanchor={ anchor }\n\t\t\t>\n\t\t\t\t<div className=\"block-editor-block-switcher__preview\">\n\t\t\t\t\t{ /* 600px is the value of $break-small in base-styles/_breakpoints.scss.\n\t\t\t\t\t\tWe set the viewport width to 601px to make sure that the media-text \n\t\t\t\t\t\tblock which uses this breakpoint has the correct padding. */ }\n\t\t\t\t\t<BlockPreview viewportWidth={ 601 } blocks={ blocks } />\n\t\t\t\t</div>\n\t\t\t</Popover>\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAwB;AACxB,qBAAiC;AAKjC,2BAAyB;AA2BpB;AAzBU,SAAR,oBAAsC;AAAA,EAC5C;AAAA,EACA,YAAY;AAAA,EACZ,SAAS;AAAA,EACT;AACD,GAAI;AACH,QAAM,eAAW,iCAAkB,UAAU,GAAI;AAEjD,MAAK,UAAW;AACf,WAAO;AAAA,EACR;AAEA,SACC,4CAAC,SAAI,WAAU,0DACd;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV;AAAA,MACA,cAAe;AAAA,MACf;AAAA,MACA;AAAA,MAEA,sDAAC,SAAI,WAAU,wCAId,sDAAC,qBAAAA,SAAA,EAAa,eAAgB,KAAM,QAAkB,GACvD;AAAA;AAAA,EACD,GACD;AAEF;",
6
6
  "names": ["BlockPreview"]
7
7
  }
@@ -86,7 +86,7 @@ function getBlockIconVariant({ select, clientIds }) {
86
86
  const _showPatternOverrides = hasPatternOverrides && hasParentPattern;
87
87
  if (_showBlockSwitcher) {
88
88
  return "switcher";
89
- } else if (isContentOnlyMode && hasBlockStyles && !hasPatternOverrides) {
89
+ } else if (isContentOnlyMode && hasBlockStyles && !hasPatternOverrides && canEdit) {
90
90
  return "styles-only";
91
91
  } else if (_showPatternOverrides) {
92
92
  return "pattern-overrides";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-toolbar/block-toolbar-icon.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { copy, symbol } from '@wordpress/icons';\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport BlockSwitcher from '../block-switcher';\nimport BlockIcon from '../block-icon';\nimport BlockStylesDropdown from './block-styles-dropdown';\nimport PatternOverridesDropdown from './pattern-overrides-dropdown';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { store as blockEditorStore } from '../../store';\nimport { hasPatternOverridesDefaultBinding } from '../../utils/block-bindings';\nimport { unlock } from '../../lock-unlock';\n\nfunction getBlockIconVariant( { select, clientIds } ) {\n\tconst {\n\t\tgetBlockName,\n\t\tgetBlockAttributes,\n\t\tgetBlockParentsByBlockName,\n\t\tcanRemoveBlocks,\n\t\tgetTemplateLock,\n\t\tgetBlockEditingMode,\n\t\tcanEditBlock,\n\t} = unlock( select( blockEditorStore ) );\n\tconst { getBlockStyles } = select( blocksStore );\n\n\tconst hasTemplateLock = clientIds.some(\n\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t);\n\n\t// Calculate props only used in this function\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockName = isSingleBlock && getBlockName( clientIds[ 0 ] );\n\tconst hasBlockStyles =\n\t\tisSingleBlock && !! getBlockStyles( blockName )?.length;\n\tconst hasPatternNameInSelection = clientIds.some(\n\t\t( id ) => !! getBlockAttributes( id )?.metadata?.patternName\n\t);\n\tconst hasPatternOverrides = clientIds.every( ( clientId ) =>\n\t\thasPatternOverridesDefaultBinding(\n\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings\n\t\t)\n\t);\n\tconst hasParentPattern = clientIds.every(\n\t\t( clientId ) =>\n\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true ).length >\n\t\t\t0\n\t);\n\tconst canRemove = canRemoveBlocks( clientIds );\n\tconst canEdit = clientIds.every( ( clientId ) => canEditBlock( clientId ) );\n\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\tconst isDefaultEditingMode = editingMode === 'default';\n\tconst isContentOnlyMode = editingMode === 'contentOnly';\n\tconst _hideTransformsForSections = hasPatternNameInSelection;\n\tconst _showBlockSwitcher =\n\t\t! _hideTransformsForSections &&\n\t\tisDefaultEditingMode &&\n\t\t( hasBlockStyles || canRemove ) &&\n\t\t! hasTemplateLock &&\n\t\tcanEdit;\n\n\tconst _showPatternOverrides = hasPatternOverrides && hasParentPattern;\n\n\tif ( _showBlockSwitcher ) {\n\t\treturn 'switcher';\n\t} else if ( isContentOnlyMode && hasBlockStyles && ! hasPatternOverrides ) {\n\t\treturn 'styles-only';\n\t} else if ( _showPatternOverrides ) {\n\t\treturn 'pattern-overrides';\n\t}\n\n\treturn 'default';\n}\n\nfunction getBlockIcon( { select, clientIds } ) {\n\tconst { getBlockName, getBlockAttributes } = unlock(\n\t\tselect( blockEditorStore )\n\t);\n\n\tconst _isSingleBlock = clientIds.length === 1;\n\tconst firstClientId = clientIds[ 0 ];\n\tconst blockAttributes = getBlockAttributes( firstClientId );\n\tif ( _isSingleBlock && blockAttributes?.metadata?.patternName ) {\n\t\treturn symbol;\n\t}\n\n\tconst blockName = getBlockName( firstClientId );\n\tconst blockType = getBlockType( blockName );\n\n\tif ( _isSingleBlock ) {\n\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\t\tconst match = getActiveBlockVariation( blockName, blockAttributes );\n\t\treturn match?.icon || blockType?.icon;\n\t}\n\n\tconst blockNames = clientIds.map( ( id ) => getBlockName( id ) );\n\tconst isSelectionOfSameType = new Set( blockNames ).size === 1;\n\treturn isSelectionOfSameType ? blockType?.icon : copy;\n}\n\nexport default function BlockToolbarIcon( { clientIds, isSynced } ) {\n\tconst { icon, showIconLabels, variant } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\ticon: getBlockIcon( { select, clientIds } ),\n\t\t\t\tshowIconLabels: select( preferencesStore ).get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'showIconLabels'\n\t\t\t\t),\n\t\t\t\tvariant: getBlockIconVariant( {\n\t\t\t\t\tselect,\n\t\t\t\t\tclientIds,\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst showBlockTitle = isSingleBlock && isSynced && ! showIconLabels;\n\tconst label = isSingleBlock ? blockTitle : __( 'Multiple blocks selected' );\n\t// Used to hide the block icon when the showIconLabels preference is enabled, or to display the template title when it's a template.\n\tconst text = showBlockTitle && blockTitle ? blockTitle : undefined;\n\n\tconst BlockIconElement = (\n\t\t<BlockIcon\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon\"\n\t\t\ticon={ icon }\n\t\t/>\n\t);\n\n\tif ( variant === 'switcher' ) {\n\t\treturn (\n\t\t\t<BlockSwitcher\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tlabel={ label }\n\t\t\t\ttext={ text }\n\t\t\t>\n\t\t\t\t{ BlockIconElement }\n\t\t\t</BlockSwitcher>\n\t\t);\n\t}\n\n\tif ( variant === 'styles-only' ) {\n\t\treturn (\n\t\t\t<BlockStylesDropdown\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tlabel={ label }\n\t\t\t\ttext={ text }\n\t\t\t>\n\t\t\t\t{ BlockIconElement }\n\t\t\t</BlockStylesDropdown>\n\t\t);\n\t}\n\n\tif ( variant === 'pattern-overrides' ) {\n\t\treturn (\n\t\t\t<PatternOverridesDropdown\n\t\t\t\ticon={ BlockIconElement }\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tdisabled\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon-button\"\n\t\t\ttitle={ label }\n\t\t\ticon={ BlockIconElement }\n\t\t\ttext={ text }\n\t\t/>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { ToolbarButton } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { copy, symbol } from '@wordpress/icons';\nimport { getBlockType, store as blocksStore } from '@wordpress/blocks';\nimport { store as preferencesStore } from '@wordpress/preferences';\n\n/**\n * Internal dependencies\n */\nimport BlockSwitcher from '../block-switcher';\nimport BlockIcon from '../block-icon';\nimport BlockStylesDropdown from './block-styles-dropdown';\nimport PatternOverridesDropdown from './pattern-overrides-dropdown';\nimport useBlockDisplayTitle from '../block-title/use-block-display-title';\nimport { store as blockEditorStore } from '../../store';\nimport { hasPatternOverridesDefaultBinding } from '../../utils/block-bindings';\nimport { unlock } from '../../lock-unlock';\n\nfunction getBlockIconVariant( { select, clientIds } ) {\n\tconst {\n\t\tgetBlockName,\n\t\tgetBlockAttributes,\n\t\tgetBlockParentsByBlockName,\n\t\tcanRemoveBlocks,\n\t\tgetTemplateLock,\n\t\tgetBlockEditingMode,\n\t\tcanEditBlock,\n\t} = unlock( select( blockEditorStore ) );\n\tconst { getBlockStyles } = select( blocksStore );\n\n\tconst hasTemplateLock = clientIds.some(\n\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t);\n\n\t// Calculate props only used in this function\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst blockName = isSingleBlock && getBlockName( clientIds[ 0 ] );\n\tconst hasBlockStyles =\n\t\tisSingleBlock && !! getBlockStyles( blockName )?.length;\n\tconst hasPatternNameInSelection = clientIds.some(\n\t\t( id ) => !! getBlockAttributes( id )?.metadata?.patternName\n\t);\n\tconst hasPatternOverrides = clientIds.every( ( clientId ) =>\n\t\thasPatternOverridesDefaultBinding(\n\t\t\tgetBlockAttributes( clientId )?.metadata?.bindings\n\t\t)\n\t);\n\tconst hasParentPattern = clientIds.every(\n\t\t( clientId ) =>\n\t\t\tgetBlockParentsByBlockName( clientId, 'core/block', true ).length >\n\t\t\t0\n\t);\n\tconst canRemove = canRemoveBlocks( clientIds );\n\tconst canEdit = clientIds.every( ( clientId ) => canEditBlock( clientId ) );\n\tconst editingMode = getBlockEditingMode( clientIds[ 0 ] );\n\tconst isDefaultEditingMode = editingMode === 'default';\n\tconst isContentOnlyMode = editingMode === 'contentOnly';\n\tconst _hideTransformsForSections = hasPatternNameInSelection;\n\tconst _showBlockSwitcher =\n\t\t! _hideTransformsForSections &&\n\t\tisDefaultEditingMode &&\n\t\t( hasBlockStyles || canRemove ) &&\n\t\t! hasTemplateLock &&\n\t\tcanEdit;\n\n\tconst _showPatternOverrides = hasPatternOverrides && hasParentPattern;\n\n\tif ( _showBlockSwitcher ) {\n\t\treturn 'switcher';\n\t} else if (\n\t\tisContentOnlyMode &&\n\t\thasBlockStyles &&\n\t\t! hasPatternOverrides &&\n\t\tcanEdit\n\t) {\n\t\treturn 'styles-only';\n\t} else if ( _showPatternOverrides ) {\n\t\treturn 'pattern-overrides';\n\t}\n\n\treturn 'default';\n}\n\nfunction getBlockIcon( { select, clientIds } ) {\n\tconst { getBlockName, getBlockAttributes } = unlock(\n\t\tselect( blockEditorStore )\n\t);\n\n\tconst _isSingleBlock = clientIds.length === 1;\n\tconst firstClientId = clientIds[ 0 ];\n\tconst blockAttributes = getBlockAttributes( firstClientId );\n\tif ( _isSingleBlock && blockAttributes?.metadata?.patternName ) {\n\t\treturn symbol;\n\t}\n\n\tconst blockName = getBlockName( firstClientId );\n\tconst blockType = getBlockType( blockName );\n\n\tif ( _isSingleBlock ) {\n\t\tconst { getActiveBlockVariation } = select( blocksStore );\n\t\tconst match = getActiveBlockVariation( blockName, blockAttributes );\n\t\treturn match?.icon || blockType?.icon;\n\t}\n\n\tconst blockNames = clientIds.map( ( id ) => getBlockName( id ) );\n\tconst isSelectionOfSameType = new Set( blockNames ).size === 1;\n\treturn isSelectionOfSameType ? blockType?.icon : copy;\n}\n\nexport default function BlockToolbarIcon( { clientIds, isSynced } ) {\n\tconst { icon, showIconLabels, variant } = useSelect(\n\t\t( select ) => {\n\t\t\treturn {\n\t\t\t\ticon: getBlockIcon( { select, clientIds } ),\n\t\t\t\tshowIconLabels: select( preferencesStore ).get(\n\t\t\t\t\t'core',\n\t\t\t\t\t'showIconLabels'\n\t\t\t\t),\n\t\t\t\tvariant: getBlockIconVariant( {\n\t\t\t\t\tselect,\n\t\t\t\t\tclientIds,\n\t\t\t\t} ),\n\t\t\t};\n\t\t},\n\t\t[ clientIds ]\n\t);\n\n\tconst blockTitle = useBlockDisplayTitle( {\n\t\tclientId: clientIds?.[ 0 ],\n\t\tmaximumLength: 35,\n\t} );\n\n\tconst isSingleBlock = clientIds.length === 1;\n\tconst showBlockTitle = isSingleBlock && isSynced && ! showIconLabels;\n\tconst label = isSingleBlock ? blockTitle : __( 'Multiple blocks selected' );\n\t// Used to hide the block icon when the showIconLabels preference is enabled, or to display the template title when it's a template.\n\tconst text = showBlockTitle && blockTitle ? blockTitle : undefined;\n\n\tconst BlockIconElement = (\n\t\t<BlockIcon\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon\"\n\t\t\ticon={ icon }\n\t\t/>\n\t);\n\n\tif ( variant === 'switcher' ) {\n\t\treturn (\n\t\t\t<BlockSwitcher\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tlabel={ label }\n\t\t\t\ttext={ text }\n\t\t\t>\n\t\t\t\t{ BlockIconElement }\n\t\t\t</BlockSwitcher>\n\t\t);\n\t}\n\n\tif ( variant === 'styles-only' ) {\n\t\treturn (\n\t\t\t<BlockStylesDropdown\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tlabel={ label }\n\t\t\t\ttext={ text }\n\t\t\t>\n\t\t\t\t{ BlockIconElement }\n\t\t\t</BlockStylesDropdown>\n\t\t);\n\t}\n\n\tif ( variant === 'pattern-overrides' ) {\n\t\treturn (\n\t\t\t<PatternOverridesDropdown\n\t\t\t\ticon={ BlockIconElement }\n\t\t\t\tclientIds={ clientIds }\n\t\t\t\tblockTitle={ blockTitle }\n\t\t\t\tlabel={ label }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tdisabled\n\t\t\tclassName=\"block-editor-block-toolbar__block-icon-button\"\n\t\t\ttitle={ label }\n\t\t\ticon={ BlockIconElement }\n\t\t\ttext={ text }\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorStore", "blocksStore", "preferencesStore", "useBlockDisplayTitle", "BlockIcon", "BlockSwitcher", "BlockStylesDropdown", "PatternOverridesDropdown"]
7
7
  }
@@ -85,8 +85,10 @@ function PrivateBlockToolbar({
85
85
  showLockButtons,
86
86
  showBlockVisibilityButton,
87
87
  showSwitchSectionStyleButton,
88
- areSelectedBlocksHiddenOnViewport
88
+ areSelectedBlocksHiddenOnViewport,
89
+ canEdit
89
90
  } = (0, import_data.useSelect)((select) => {
91
+ const { canEditBlock } = select(import_store.store);
90
92
  const {
91
93
  getBlockName,
92
94
  getBlockMode,
@@ -126,7 +128,8 @@ function PrivateBlockToolbar({
126
128
  );
127
129
  const _isZoomOut = isZoomOut();
128
130
  const _isSectionBlock = isSectionBlock(selectedBlockClientId);
129
- const _showSwitchSectionStyleButton = _isZoomOut || _isSectionBlock;
131
+ const _canEditBlock = canEditBlock(selectedBlockClientId);
132
+ const _showSwitchSectionStyleButton = _canEditBlock && (_isZoomOut || _isSectionBlock);
130
133
  const _currentDeviceType = getSettings()?.[import_private_keys.deviceTypeKey]?.toLowerCase() || "desktop";
131
134
  const _areSelectedBlocksHiddenOnViewport = selectedBlockClientIds.length > 0 && selectedBlockClientIds.every(
132
135
  (id) => isBlockHiddenAtViewport(id, _currentDeviceType)
@@ -152,7 +155,8 @@ function PrivateBlockToolbar({
152
155
  showLockButtons: !_isZoomOut,
153
156
  showBlockVisibilityButton: !_isZoomOut,
154
157
  showSwitchSectionStyleButton: _showSwitchSectionStyleButton,
155
- areSelectedBlocksHiddenOnViewport: _areSelectedBlocksHiddenOnViewport
158
+ areSelectedBlocksHiddenOnViewport: _areSelectedBlocksHiddenOnViewport,
159
+ canEdit: _canEditBlock
156
160
  };
157
161
  }, []);
158
162
  const toolbarWrapperRef = (0, import_element.useRef)(null);
@@ -215,7 +219,7 @@ function PrivateBlockToolbar({
215
219
  )
216
220
  ] }) }),
217
221
  !areSelectedBlocksHiddenOnViewport && !hasContentOnlyLocking && shouldShowVisualToolbar && isMultiToolbar && showGroupButtons && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_convert_to_group_buttons.BlockGroupToolbar, {}),
218
- !isMultiToolbar && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_edit_section_button.default, { clientId: blockClientIds[0] }),
222
+ !isMultiToolbar && canEdit && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_edit_section_button.default, { clientId: blockClientIds[0] }),
219
223
  !areSelectedBlocksHiddenOnViewport && showShuffleButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_change_design.default, { clientId: blockClientIds[0] }),
220
224
  !areSelectedBlocksHiddenOnViewport && showSwitchSectionStyleButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_switch_section_style.default, { clientId: blockClientIds[0] }),
221
225
  !areSelectedBlocksHiddenOnViewport && shouldShowVisualToolbar && showSlots && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-toolbar/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { ViewportVisibilityToolbar } from '../block-visibility';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowHoveredOrFocusedGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport NavigableToolbar from '../navigable-toolbar';\nimport { useHasBlockToolbar } from './use-has-block-toolbar';\nimport ChangeDesign from './change-design';\nimport SwitchSectionStyle from './switch-section-style';\nimport EditSectionButton from './edit-section-button';\nimport { unlock } from '../../lock-unlock';\nimport { deviceTypeKey } from '../../store/private-keys';\nimport BlockToolbarIcon from './block-toolbar-icon';\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {boolean} props.focusOnMount Focus the toolbar when mounted.\n * @param {number} props.__experimentalInitialIndex The initial index of the toolbar item to focus.\n * @param {Function} props.__experimentalOnIndexChange Callback function to be called when the index of the focused toolbar item changes.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport function PrivateBlockToolbar( {\n\thideDragHandle,\n\tfocusOnMount,\n\t__experimentalInitialIndex,\n\t__experimentalOnIndexChange,\n\tvariant = 'unstyled',\n} ) {\n\tconst {\n\t\tblockClientId,\n\t\tblockClientIds,\n\t\tisDefaultEditingMode,\n\t\tblockType,\n\t\ttoolbarKey,\n\t\tshouldShowVisualToolbar,\n\t\tshowParentSelector,\n\t\tisUsingBindings,\n\t\tisSectionContainer,\n\t\thasContentOnlyLocking,\n\t\tshowShuffleButton,\n\t\tshowSlots,\n\t\tshowGroupButtons,\n\t\tshowLockButtons,\n\t\tshowBlockVisibilityButton,\n\t\tshowSwitchSectionStyleButton,\n\t\tareSelectedBlocksHiddenOnViewport,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockEditingMode,\n\t\t\tgetBlockAttributes,\n\t\t\tgetSettings,\n\t\t\tgetTemplateLock,\n\t\t\tgetParentSectionBlock,\n\t\t\tisZoomOut,\n\t\t\tisSectionBlock,\n\t\t\tisBlockHiddenAtViewport,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\tconst parentSection = getParentSectionBlock( selectedBlockClientId );\n\t\tconst parentClientId = parentSection ?? parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\t\tconst editingMode = getBlockEditingMode( selectedBlockClientId );\n\t\tconst _isDefaultEditingMode = editingMode === 'default';\n\t\tconst _blockName = getBlockName( selectedBlockClientId );\n\t\tconst isValid = selectedBlockClientIds.every( ( id ) =>\n\t\t\tisBlockValid( id )\n\t\t);\n\t\tconst isVisual = selectedBlockClientIds.every(\n\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t);\n\t\tconst _isUsingBindings = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\t!! getBlockAttributes( clientId )?.metadata?.bindings\n\t\t);\n\n\t\t// If one or more selected blocks are locked, do not show the BlockGroupToolbar.\n\t\tconst _hasTemplateLock = selectedBlockClientIds.some(\n\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t);\n\n\t\tconst _isZoomOut = isZoomOut();\n\t\tconst _isSectionBlock = isSectionBlock( selectedBlockClientId );\n\t\tconst _showSwitchSectionStyleButton = _isZoomOut || _isSectionBlock;\n\n\t\tconst _currentDeviceType =\n\t\t\tgetSettings()?.[ deviceTypeKey ]?.toLowerCase() || 'desktop';\n\t\tconst _areSelectedBlocksHiddenOnViewport =\n\t\t\tselectedBlockClientIds.length > 0 &&\n\t\t\tselectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockHiddenAtViewport( id, _currentDeviceType )\n\t\t\t);\n\n\t\treturn {\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tisDefaultEditingMode: _isDefaultEditingMode,\n\t\t\tblockType: selectedBlockClientId && getBlockType( _blockName ),\n\t\t\tshouldShowVisualToolbar: isValid && isVisual,\n\t\t\ttoolbarKey: `${ selectedBlockClientId }${ parentClientId }`,\n\t\t\tshowParentSelector:\n\t\t\t\t! _isZoomOut &&\n\t\t\t\tparentBlockType &&\n\t\t\t\teditingMode !== 'contentOnly' &&\n\t\t\t\tgetBlockEditingMode( parentClientId ) !== 'disabled' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tparentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t) &&\n\t\t\t\tselectedBlockClientIds.length === 1,\n\t\t\tisUsingBindings: _isUsingBindings,\n\t\t\tisSectionContainer: _isSectionBlock,\n\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\tshowShuffleButton: _isZoomOut,\n\t\t\tshowSlots: ! _isZoomOut,\n\t\t\tshowGroupButtons: ! _isZoomOut,\n\t\t\tshowLockButtons: ! _isZoomOut,\n\t\t\tshowBlockVisibilityButton: ! _isZoomOut,\n\t\t\tshowSwitchSectionStyleButton: _showSwitchSectionStyleButton,\n\t\t\tareSelectedBlocksHiddenOnViewport:\n\t\t\t\t_areSelectedBlocksHiddenOnViewport,\n\t\t};\n\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tconst hasBlockToolbar = useHasBlockToolbar();\n\tif ( ! hasBlockToolbar ) {\n\t\treturn null;\n\t}\n\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = clsx( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': showParentSelector,\n\t} );\n\n\tconst innerClasses = clsx( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t\t'is-connected': isUsingBindings,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusEditorOnEscape\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant={ variant === 'toolbar' ? undefined : variant }\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t__experimentalInitialIndex={ __experimentalInitialIndex }\n\t\t\t__experimentalOnIndexChange={ __experimentalOnIndexChange }\n\t\t\t// Resets the index whenever the active block changes so\n\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\tkey={ toolbarKey }\n\t\t>\n\t\t\t<div ref={ toolbarWrapperRef } className={ innerClasses }>\n\t\t\t\t{ showParentSelector && ! isMultiToolbar && isLargeViewport && (\n\t\t\t\t\t<BlockParentSelector />\n\t\t\t\t) }\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) && (\n\t\t\t\t\t<div ref={ nodeRef } { ...showHoveredOrFocusedGestures }>\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockToolbarIcon\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\tisSynced={ isSynced }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ isDefaultEditingMode &&\n\t\t\t\t\t\t\t\tshowBlockVisibilityButton && (\n\t\t\t\t\t\t\t\t\t<ViewportVisibilityToolbar\n\t\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\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{ ! isMultiToolbar &&\n\t\t\t\t\t\t\t\tisDefaultEditingMode &&\n\t\t\t\t\t\t\t\tshowLockButtons && (\n\t\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\t\tclientId={ blockClientId }\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<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ ! areSelectedBlocksHiddenOnViewport &&\n\t\t\t\t\t! hasContentOnlyLocking &&\n\t\t\t\t\tshouldShowVisualToolbar &&\n\t\t\t\t\tisMultiToolbar &&\n\t\t\t\t\tshowGroupButtons && <BlockGroupToolbar /> }\n\t\t\t\t{ ! isMultiToolbar && (\n\t\t\t\t\t<EditSectionButton clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ ! areSelectedBlocksHiddenOnViewport && showShuffleButton && (\n\t\t\t\t\t<ChangeDesign clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ ! areSelectedBlocksHiddenOnViewport &&\n\t\t\t\t\tshowSwitchSectionStyleButton && (\n\t\t\t\t\t\t<SwitchSectionStyle clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t\t) }\n\t\t\t\t{ ! areSelectedBlocksHiddenOnViewport &&\n\t\t\t\t\tshouldShowVisualToolbar &&\n\t\t\t\t\tshowSlots && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isSectionContainer && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\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\t<BlockControls.Slot\n\t\t\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport default function BlockToolbar( { hideDragHandle, variant } ) {\n\treturn (\n\t\t<PrivateBlockToolbar\n\t\t\thideDragHandle={ hideDragHandle }\n\t\t\tvariant={ variant }\n\t\t\tfocusOnMount={ undefined }\n\t\t\t__experimentalInitialIndex={ undefined }\n\t\t\t__experimentalOnIndexChange={ undefined }\n\t\t/>\n\t);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { useRef } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\tgetBlockType,\n\thasBlockSupport,\n\tisReusableBlock,\n\tisTemplatePart,\n} from '@wordpress/blocks';\nimport { ToolbarGroup } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport BlockMover from '../block-mover';\nimport BlockParentSelector from '../block-parent-selector';\nimport BlockControls from '../block-controls';\nimport __unstableBlockToolbarLastItem from './block-toolbar-last-item';\nimport BlockSettingsMenu from '../block-settings-menu';\nimport { BlockLockToolbar } from '../block-lock';\nimport { ViewportVisibilityToolbar } from '../block-visibility';\nimport { BlockGroupToolbar } from '../convert-to-group-buttons';\nimport BlockEditVisuallyButton from '../block-edit-visually-button';\nimport { useShowHoveredOrFocusedGestures } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport NavigableToolbar from '../navigable-toolbar';\nimport { useHasBlockToolbar } from './use-has-block-toolbar';\nimport ChangeDesign from './change-design';\nimport SwitchSectionStyle from './switch-section-style';\nimport EditSectionButton from './edit-section-button';\nimport { unlock } from '../../lock-unlock';\nimport { deviceTypeKey } from '../../store/private-keys';\nimport BlockToolbarIcon from './block-toolbar-icon';\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {boolean} props.focusOnMount Focus the toolbar when mounted.\n * @param {number} props.__experimentalInitialIndex The initial index of the toolbar item to focus.\n * @param {Function} props.__experimentalOnIndexChange Callback function to be called when the index of the focused toolbar item changes.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport function PrivateBlockToolbar( {\n\thideDragHandle,\n\tfocusOnMount,\n\t__experimentalInitialIndex,\n\t__experimentalOnIndexChange,\n\tvariant = 'unstyled',\n} ) {\n\tconst {\n\t\tblockClientId,\n\t\tblockClientIds,\n\t\tisDefaultEditingMode,\n\t\tblockType,\n\t\ttoolbarKey,\n\t\tshouldShowVisualToolbar,\n\t\tshowParentSelector,\n\t\tisUsingBindings,\n\t\tisSectionContainer,\n\t\thasContentOnlyLocking,\n\t\tshowShuffleButton,\n\t\tshowSlots,\n\t\tshowGroupButtons,\n\t\tshowLockButtons,\n\t\tshowBlockVisibilityButton,\n\t\tshowSwitchSectionStyleButton,\n\t\tareSelectedBlocksHiddenOnViewport,\n\t\tcanEdit,\n\t} = useSelect( ( select ) => {\n\t\tconst { canEditBlock } = select( blockEditorStore );\n\t\tconst {\n\t\t\tgetBlockName,\n\t\t\tgetBlockMode,\n\t\t\tgetBlockParents,\n\t\t\tgetSelectedBlockClientIds,\n\t\t\tisBlockValid,\n\t\t\tgetBlockEditingMode,\n\t\t\tgetBlockAttributes,\n\t\t\tgetSettings,\n\t\t\tgetTemplateLock,\n\t\t\tgetParentSectionBlock,\n\t\t\tisZoomOut,\n\t\t\tisSectionBlock,\n\t\t\tisBlockHiddenAtViewport,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\tconst parents = getBlockParents( selectedBlockClientId );\n\t\tconst parentSection = getParentSectionBlock( selectedBlockClientId );\n\t\tconst parentClientId = parentSection ?? parents[ parents.length - 1 ];\n\t\tconst parentBlockName = getBlockName( parentClientId );\n\t\tconst parentBlockType = getBlockType( parentBlockName );\n\t\tconst editingMode = getBlockEditingMode( selectedBlockClientId );\n\t\tconst _isDefaultEditingMode = editingMode === 'default';\n\t\tconst _blockName = getBlockName( selectedBlockClientId );\n\t\tconst isValid = selectedBlockClientIds.every( ( id ) =>\n\t\t\tisBlockValid( id )\n\t\t);\n\t\tconst isVisual = selectedBlockClientIds.every(\n\t\t\t( id ) => getBlockMode( id ) === 'visual'\n\t\t);\n\t\tconst _isUsingBindings = selectedBlockClientIds.every(\n\t\t\t( clientId ) =>\n\t\t\t\t!! getBlockAttributes( clientId )?.metadata?.bindings\n\t\t);\n\n\t\t// If one or more selected blocks are locked, do not show the BlockGroupToolbar.\n\t\tconst _hasTemplateLock = selectedBlockClientIds.some(\n\t\t\t( id ) => getTemplateLock( id ) === 'contentOnly'\n\t\t);\n\n\t\tconst _isZoomOut = isZoomOut();\n\t\tconst _isSectionBlock = isSectionBlock( selectedBlockClientId );\n\t\tconst _canEditBlock = canEditBlock( selectedBlockClientId );\n\t\tconst _showSwitchSectionStyleButton =\n\t\t\t_canEditBlock && ( _isZoomOut || _isSectionBlock );\n\n\t\tconst _currentDeviceType =\n\t\t\tgetSettings()?.[ deviceTypeKey ]?.toLowerCase() || 'desktop';\n\t\tconst _areSelectedBlocksHiddenOnViewport =\n\t\t\tselectedBlockClientIds.length > 0 &&\n\t\t\tselectedBlockClientIds.every( ( id ) =>\n\t\t\t\tisBlockHiddenAtViewport( id, _currentDeviceType )\n\t\t\t);\n\n\t\treturn {\n\t\t\tblockClientId: selectedBlockClientId,\n\t\t\tblockClientIds: selectedBlockClientIds,\n\t\t\tisDefaultEditingMode: _isDefaultEditingMode,\n\t\t\tblockType: selectedBlockClientId && getBlockType( _blockName ),\n\t\t\tshouldShowVisualToolbar: isValid && isVisual,\n\t\t\ttoolbarKey: `${ selectedBlockClientId }${ parentClientId }`,\n\t\t\tshowParentSelector:\n\t\t\t\t! _isZoomOut &&\n\t\t\t\tparentBlockType &&\n\t\t\t\teditingMode !== 'contentOnly' &&\n\t\t\t\tgetBlockEditingMode( parentClientId ) !== 'disabled' &&\n\t\t\t\thasBlockSupport(\n\t\t\t\t\tparentBlockType,\n\t\t\t\t\t'__experimentalParentSelector',\n\t\t\t\t\ttrue\n\t\t\t\t) &&\n\t\t\t\tselectedBlockClientIds.length === 1,\n\t\t\tisUsingBindings: _isUsingBindings,\n\t\t\tisSectionContainer: _isSectionBlock,\n\t\t\thasContentOnlyLocking: _hasTemplateLock,\n\t\t\tshowShuffleButton: _isZoomOut,\n\t\t\tshowSlots: ! _isZoomOut,\n\t\t\tshowGroupButtons: ! _isZoomOut,\n\t\t\tshowLockButtons: ! _isZoomOut,\n\t\t\tshowBlockVisibilityButton: ! _isZoomOut,\n\t\t\tshowSwitchSectionStyleButton: _showSwitchSectionStyleButton,\n\t\t\tareSelectedBlocksHiddenOnViewport:\n\t\t\t\t_areSelectedBlocksHiddenOnViewport,\n\t\t\tcanEdit: _canEditBlock,\n\t\t};\n\t}, [] );\n\n\tconst toolbarWrapperRef = useRef( null );\n\n\t// Handles highlighting the current block outline on hover or focus of the\n\t// block type toolbar area.\n\tconst nodeRef = useRef();\n\tconst showHoveredOrFocusedGestures = useShowHoveredOrFocusedGestures( {\n\t\tref: nodeRef,\n\t} );\n\n\tconst isLargeViewport = ! useViewportMatch( 'medium', '<' );\n\n\tconst hasBlockToolbar = useHasBlockToolbar();\n\tif ( ! hasBlockToolbar ) {\n\t\treturn null;\n\t}\n\n\tconst isMultiToolbar = blockClientIds.length > 1;\n\tconst isSynced =\n\t\tisReusableBlock( blockType ) || isTemplatePart( blockType );\n\n\t// Shifts the toolbar to make room for the parent block selector.\n\tconst classes = clsx( 'block-editor-block-contextual-toolbar', {\n\t\t'has-parent': showParentSelector,\n\t} );\n\n\tconst innerClasses = clsx( 'block-editor-block-toolbar', {\n\t\t'is-synced': isSynced,\n\t\t'is-connected': isUsingBindings,\n\t} );\n\n\treturn (\n\t\t<NavigableToolbar\n\t\t\tfocusEditorOnEscape\n\t\t\tclassName={ classes }\n\t\t\t/* translators: accessibility text for the block toolbar */\n\t\t\taria-label={ __( 'Block tools' ) }\n\t\t\t// The variant is applied as \"toolbar\" when undefined, which is the black border style of the dropdown from the toolbar popover.\n\t\t\tvariant={ variant === 'toolbar' ? undefined : variant }\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\t__experimentalInitialIndex={ __experimentalInitialIndex }\n\t\t\t__experimentalOnIndexChange={ __experimentalOnIndexChange }\n\t\t\t// Resets the index whenever the active block changes so\n\t\t\t// this is not persisted. See https://github.com/WordPress/gutenberg/pull/25760#issuecomment-717906169\n\t\t\tkey={ toolbarKey }\n\t\t>\n\t\t\t<div ref={ toolbarWrapperRef } className={ innerClasses }>\n\t\t\t\t{ showParentSelector && ! isMultiToolbar && isLargeViewport && (\n\t\t\t\t\t<BlockParentSelector />\n\t\t\t\t) }\n\t\t\t\t{ ( shouldShowVisualToolbar || isMultiToolbar ) && (\n\t\t\t\t\t<div ref={ nodeRef } { ...showHoveredOrFocusedGestures }>\n\t\t\t\t\t\t<ToolbarGroup className=\"block-editor-block-toolbar__block-controls\">\n\t\t\t\t\t\t\t<BlockToolbarIcon\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\tisSynced={ isSynced }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{ isDefaultEditingMode &&\n\t\t\t\t\t\t\t\tshowBlockVisibilityButton && (\n\t\t\t\t\t\t\t\t\t<ViewportVisibilityToolbar\n\t\t\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\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{ ! isMultiToolbar &&\n\t\t\t\t\t\t\t\tisDefaultEditingMode &&\n\t\t\t\t\t\t\t\tshowLockButtons && (\n\t\t\t\t\t\t\t\t\t<BlockLockToolbar\n\t\t\t\t\t\t\t\t\t\tclientId={ blockClientId }\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<BlockMover\n\t\t\t\t\t\t\t\tclientIds={ blockClientIds }\n\t\t\t\t\t\t\t\thideDragHandle={ hideDragHandle }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ ! areSelectedBlocksHiddenOnViewport &&\n\t\t\t\t\t! hasContentOnlyLocking &&\n\t\t\t\t\tshouldShowVisualToolbar &&\n\t\t\t\t\tisMultiToolbar &&\n\t\t\t\t\tshowGroupButtons && <BlockGroupToolbar /> }\n\t\t\t\t{ ! isMultiToolbar && canEdit && (\n\t\t\t\t\t<EditSectionButton clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ ! areSelectedBlocksHiddenOnViewport && showShuffleButton && (\n\t\t\t\t\t<ChangeDesign clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t) }\n\t\t\t\t{ ! areSelectedBlocksHiddenOnViewport &&\n\t\t\t\t\tshowSwitchSectionStyleButton && (\n\t\t\t\t\t\t<SwitchSectionStyle clientId={ blockClientIds[ 0 ] } />\n\t\t\t\t\t) }\n\t\t\t\t{ ! areSelectedBlocksHiddenOnViewport &&\n\t\t\t\t\tshouldShowVisualToolbar &&\n\t\t\t\t\tshowSlots && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ ! isSectionContainer && (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\t\t\t\tgroup=\"parent\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\t\t\t\tgroup=\"block\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t<BlockControls.Slot className=\"block-editor-block-toolbar__slot\" />\n\t\t\t\t\t\t\t\t\t<BlockControls.Slot\n\t\t\t\t\t\t\t\t\t\tgroup=\"inline\"\n\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\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\t<BlockControls.Slot\n\t\t\t\t\t\t\t\tgroup=\"other\"\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-toolbar__slot\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<__unstableBlockToolbarLastItem.Slot />\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t<BlockEditVisuallyButton clientIds={ blockClientIds } />\n\t\t\t\t<BlockSettingsMenu clientIds={ blockClientIds } />\n\t\t\t</div>\n\t\t</NavigableToolbar>\n\t);\n}\n\n/**\n * Renders the block toolbar.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-toolbar/README.md\n *\n * @param {Object} props Components props.\n * @param {boolean} props.hideDragHandle Show or hide the Drag Handle for drag and drop functionality.\n * @param {string} props.variant Style variant of the toolbar, also passed to the Dropdowns rendered from Block Toolbar Buttons.\n */\nexport default function BlockToolbar( { hideDragHandle, variant } ) {\n\treturn (\n\t\t<PrivateBlockToolbar\n\t\t\thideDragHandle={ hideDragHandle }\n\t\t\tvariant={ variant }\n\t\t\tfocusOnMount={ undefined }\n\t\t\t__experimentalInitialIndex={ undefined }\n\t\t\t__experimentalOnIndexChange={ undefined }\n\t\t/>\n\t);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["blockEditorStore", "clsx", "NavigableToolbar", "BlockParentSelector", "BlockToolbarIcon", "BlockMover", "EditSectionButton", "ChangeDesign", "SwitchSectionStyle", "BlockControls", "__unstableBlockToolbarLastItem", "BlockEditVisuallyButton", "BlockSettingsMenu"]
7
7
  }
@@ -46,9 +46,9 @@ var import_utils = require("../../hooks/utils.cjs");
46
46
  var import_utils2 = require("./utils.cjs");
47
47
 
48
48
  // packages/block-editor/src/components/block-visibility/style.scss
49
- if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='9dfb5c843f']")) {
49
+ if (typeof document !== "undefined" && process.env.NODE_ENV !== "test" && !document.head.querySelector("style[data-wp-hash='4334c7deb6']")) {
50
50
  const style = document.createElement("style");
51
- style.setAttribute("data-wp-hash", "9dfb5c843f");
51
+ style.setAttribute("data-wp-hash", "4334c7deb6");
52
52
  style.appendChild(document.createTextNode(".block-editor-block-visibility-modal{z-index:1000001}.block-editor-block-visibility-modal__options{border:0;list-style:none;margin:24px 0;padding:0}.block-editor-block-visibility-modal__options-item{align-items:center;display:flex;gap:24px;justify-content:space-between;margin:0 0 16px}.block-editor-block-visibility-modal__options-item:last-child{margin:0}.block-editor-block-visibility-modal__options-item--everywhere{align-items:start;flex-direction:column}.block-editor-block-visibility-modal__options-checkbox--everywhere{font-weight:600}.block-editor-block-visibility-modal__options-icon--checked{fill:#ddd}.block-editor-block-visibility-modal__sub-options{padding-inline-start:12px;width:100%}.block-editor-block-visibility-modal__description{color:#757575;font-size:12px}.block-editor-block-visibility-info{align-items:center;display:flex;justify-content:start;margin:0 16px 16px;padding-bottom:4px;padding-top:4px}"));
53
53
  document.head.appendChild(style);
54
54
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-visibility/modal.js", "../../../src/components/block-visibility/style.scss"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBLOCK_VISIBILITY_VIEWPORT_ENTRIES,\n\tBLOCK_VISIBILITY_VIEWPORTS,\n} from './constants';\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport {\n\tgetViewportCheckboxState,\n\tgetHideEverywhereCheckboxState,\n} from './utils';\nimport './style.scss';\n\nconst DEFAULT_VIEWPORT_CHECKBOX_VALUES = {\n\t[ BLOCK_VISIBILITY_VIEWPORTS.mobile.key ]: false,\n\t[ BLOCK_VISIBILITY_VIEWPORTS.tablet.key ]: false,\n\t[ BLOCK_VISIBILITY_VIEWPORTS.desktop.key ]: false,\n};\n\nconst EMPTY_BLOCKS = [];\n\n/**\n * Modal component for configuring block visibility across viewports.\n *\n * Allows users to hide blocks on specific viewport sizes (mobile, tablet, desktop)\n * or hide them everywhere. When editing multiple blocks, checkboxes only show as\n * checked if ALL selected blocks share the same setting to avoid ambiguity.\n *\n * @param {Object} props Component props.\n * @param {Array} props.clientIds The client IDs of the blocks to hide.\n * @param {Function} props.onClose Callback function invoked when the modal is closed.\n * @return {React.JSX.Element} The modal component.\n */\nexport default function BlockVisibilityModal( { clientIds, onClose } ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ) ??\n\t\t\tEMPTY_BLOCKS,\n\t\t[ clientIds ]\n\t);\n\tconst listViewShortcut = useSelect( ( select ) => {\n\t\treturn select( keyboardShortcutsStore ).getShortcutRepresentation(\n\t\t\t'core/editor/toggle-list-view'\n\t\t);\n\t}, [] );\n\n\tconst initialViewportValues = useMemo( () => {\n\t\tif ( blocks?.length === 0 ) {\n\t\t\treturn {\n\t\t\t\thideEverywhere: false,\n\t\t\t\tviewportChecked: {},\n\t\t\t};\n\t\t}\n\n\t\tconst viewportValues = {};\n\n\t\tBLOCK_VISIBILITY_VIEWPORT_ENTRIES.forEach( ( [ , { key } ] ) => {\n\t\t\tviewportValues[ key ] = getViewportCheckboxState( blocks, key );\n\t\t} );\n\n\t\treturn {\n\t\t\thideEverywhere: getHideEverywhereCheckboxState( blocks ),\n\t\t\tviewportChecked: viewportValues,\n\t\t};\n\t}, [ blocks ] );\n\n\tconst [ viewportChecked, setViewportChecked ] = useState(\n\t\tinitialViewportValues?.viewportChecked ?? {}\n\t);\n\tconst [ hideEverywhere, setHideEverywhere ] = useState(\n\t\tinitialViewportValues?.hideEverywhere ?? false\n\t);\n\n\tconst handleViewportCheckboxChange = useCallback(\n\t\t( viewport, isChecked ) => {\n\t\t\tsetViewportChecked( {\n\t\t\t\t...viewportChecked,\n\t\t\t\t[ viewport ]: isChecked,\n\t\t\t} );\n\t\t},\n\t\t[ viewportChecked ]\n\t);\n\n\tconst noticeMessage = useMemo( () => {\n\t\tif ( ! hideEverywhere ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t__(\n\t\t\t\t\t'Block visibility settings updated. You can access them via the List View (%s).'\n\t\t\t\t),\n\t\t\t\tlistViewShortcut\n\t\t\t);\n\t\t}\n\n\t\tconst message =\n\t\t\tblocks?.length > 1\n\t\t\t\t? // translators: %s: The shortcut key to access the List View.\n\t\t\t\t __(\n\t\t\t\t\t\t'Blocks hidden. You can access them via the List View (%s).'\n\t\t\t\t )\n\t\t\t\t: // translators: %s: The shortcut key to access the List View.\n\t\t\t\t __(\n\t\t\t\t\t\t'Block hidden. You can access it via the List View (%s).'\n\t\t\t\t );\n\n\t\treturn sprintf( message, listViewShortcut );\n\t}, [ hideEverywhere, blocks?.length, listViewShortcut ] );\n\n\tconst isAnyViewportChecked = useMemo(\n\t\t() =>\n\t\t\tObject.values( viewportChecked ).some(\n\t\t\t\t( checked ) => checked === true || checked === null\n\t\t\t),\n\t\t[ viewportChecked ]\n\t);\n\n\tconst isDirty = useMemo( () => {\n\t\tif ( hideEverywhere !== initialViewportValues.hideEverywhere ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn BLOCK_VISIBILITY_VIEWPORT_ENTRIES.some(\n\t\t\t( [ , { key } ] ) =>\n\t\t\t\tviewportChecked[ key ] !==\n\t\t\t\tinitialViewportValues.viewportChecked[ key ]\n\t\t);\n\t}, [ hideEverywhere, viewportChecked, initialViewportValues ] );\n\n\tconst hasIndeterminateValues = useMemo( () => {\n\t\tif ( hideEverywhere === null ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn Object.values( viewportChecked ).some(\n\t\t\t( checked ) => checked === null\n\t\t);\n\t}, [ hideEverywhere, viewportChecked ] );\n\n\tconst handleSubmit = useCallback(\n\t\t( event ) => {\n\t\t\tevent.preventDefault();\n\t\t\tconst newVisibility = hideEverywhere\n\t\t\t\t? false\n\t\t\t\t: {\n\t\t\t\t\t\tviewport: BLOCK_VISIBILITY_VIEWPORT_ENTRIES.reduce(\n\t\t\t\t\t\t\t( acc, [ , { key } ] ) => {\n\t\t\t\t\t\t\t\tif ( viewportChecked[ key ] ) {\n\t\t\t\t\t\t\t\t\t// Values are inverted to hide the block on the selected viewport.\n\t\t\t\t\t\t\t\t\t// In the UI, the checkbox is checked (true) when the block is hidden on the selected viewport,\n\t\t\t\t\t\t\t\t\t// so 'false' means hide the block on the selected viewport.\n\t\t\t\t\t\t\t\t\tacc[ key ] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn acc;\n\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 };\n\t\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\t\tblocks.map( ( { clientId, attributes } ) => [\n\t\t\t\t\tclientId,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\t\tblockVisibility: newVisibility,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t},\n\t\t\t\t] )\n\t\t\t);\n\t\t\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\t\tuniqueByBlock: true,\n\t\t\t} );\n\n\t\t\tcreateSuccessNotice( noticeMessage, {\n\t\t\t\tid: hideEverywhere\n\t\t\t\t\t? 'block-visibility-hidden'\n\t\t\t\t\t: 'block-visibility-viewports-updated',\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\tonClose();\n\t\t},\n\t\t[\n\t\t\tblocks,\n\t\t\tclientIds,\n\t\t\tcreateSuccessNotice,\n\t\t\thideEverywhere,\n\t\t\tnoticeMessage,\n\t\t\tonClose,\n\t\t\tupdateBlockAttributes,\n\t\t\tviewportChecked,\n\t\t]\n\t);\n\n\tconst hasMultipleBlocks = blocks?.length > 1;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={\n\t\t\t\tclientIds?.length > 1 ? __( 'Hide blocks' ) : __( 'Hide block' )\n\t\t\t}\n\t\t\tonRequestClose={ onClose }\n\t\t\toverlayClassName=\"block-editor-block-visibility-modal\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form onSubmit={ handleSubmit }>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<legend>\n\t\t\t\t\t\t{ hasMultipleBlocks\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Select the viewport sizes for which you want to hide the blocks. Changes will apply to all selected blocks.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Select the viewport size for which you want to hide the block.'\n\t\t\t\t\t\t\t ) }\n\t\t\t\t\t</legend>\n\t\t\t\t\t<ul className=\"block-editor-block-visibility-modal__options\">\n\t\t\t\t\t\t<li className=\"block-editor-block-visibility-modal__options-item block-editor-block-visibility-modal__options-item--everywhere\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__options-checkbox--everywhere\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Omit from published content' ) }\n\t\t\t\t\t\t\t\tchecked={ hideEverywhere === true }\n\t\t\t\t\t\t\t\tindeterminate={ hideEverywhere === null }\n\t\t\t\t\t\t\t\tonChange={ ( checked ) => {\n\t\t\t\t\t\t\t\t\tsetHideEverywhere( checked );\n\t\t\t\t\t\t\t\t\t// Reset viewport checkboxes when hide everywhere is checked.\n\t\t\t\t\t\t\t\t\tsetViewportChecked(\n\t\t\t\t\t\t\t\t\t\tDEFAULT_VIEWPORT_CHECKBOX_VALUES\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\t{ hideEverywhere !== true && (\n\t\t\t\t\t\t\t\t<ul className=\"block-editor-block-visibility-modal__sub-options\">\n\t\t\t\t\t\t\t\t\t{ BLOCK_VISIBILITY_VIEWPORT_ENTRIES.map(\n\t\t\t\t\t\t\t\t\t\t( [ , { label, icon, key } ] ) => (\n\t\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__options-item\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: %s: The viewport name.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t__( 'Hide on %s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\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\tchecked={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] ?? false\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\tindeterminate={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] === null\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\tonChange={ ( checked ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleViewportCheckboxChange(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'block-editor-block-visibility-modal__options-icon--checked':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</li>\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</ul>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t{ hasMultipleBlocks && hasIndeterminateValues && (\n\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Selected blocks have different visibility settings. The checkboxes show an indeterminate state when settings differ.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! hasMultipleBlocks && hideEverywhere === true && (\n\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Block will be hidden in the editor, and omitted from the published markup on the frontend. You can configure it again by selecting it in the List View (%s).'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tlistViewShortcut\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! hasMultipleBlocks &&\n\t\t\t\t\t\t! hideEverywhere &&\n\t\t\t\t\t\tisAnyViewportChecked && (\n\t\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'Block will be hidden according to the selected viewports. It will be <strong>included in the published markup on the frontend</strong>. You can configure it again by selecting it in the List View (%s).'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tlistViewShortcut\n\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\t\tstrong: <strong />,\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</p>\n\t\t\t\t\t\t) }\n\t\t\t\t</fieldset>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\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\tdisabled={ ! isDirty }\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n", "if (typeof document !== 'undefined' && !document.head.querySelector(\"style[data-wp-hash='9dfb5c843f']\")) {\n\tconst style = document.createElement(\"style\");\n\tstyle.setAttribute(\"data-wp-hash\", \"9dfb5c843f\");\n\tstyle.appendChild(document.createTextNode(\".block-editor-block-visibility-modal{z-index:1000001}.block-editor-block-visibility-modal__options{border:0;list-style:none;margin:24px 0;padding:0}.block-editor-block-visibility-modal__options-item{align-items:center;display:flex;gap:24px;justify-content:space-between;margin:0 0 16px}.block-editor-block-visibility-modal__options-item:last-child{margin:0}.block-editor-block-visibility-modal__options-item--everywhere{align-items:start;flex-direction:column}.block-editor-block-visibility-modal__options-checkbox--everywhere{font-weight:600}.block-editor-block-visibility-modal__options-icon--checked{fill:#ddd}.block-editor-block-visibility-modal__sub-options{padding-inline-start:12px;width:100%}.block-editor-block-visibility-modal__description{color:#757575;font-size:12px}.block-editor-block-visibility-info{align-items:center;display:flex;justify-content:start;margin:0 16px 16px;padding-bottom:4px;padding-top:4px}\"));\n\tdocument.head.appendChild(style);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tuseState,\n\tuseMemo,\n\tuseCallback,\n\tcreateInterpolateElement,\n} from '@wordpress/element';\nimport {\n\tButton,\n\tCheckboxControl,\n\tFlex,\n\tFlexItem,\n\tIcon,\n\tModal,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as keyboardShortcutsStore } from '@wordpress/keyboard-shortcuts';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport {\n\tBLOCK_VISIBILITY_VIEWPORT_ENTRIES,\n\tBLOCK_VISIBILITY_VIEWPORTS,\n} from './constants';\nimport { store as blockEditorStore } from '../../store';\nimport { cleanEmptyObject } from '../../hooks/utils';\nimport {\n\tgetViewportCheckboxState,\n\tgetHideEverywhereCheckboxState,\n} from './utils';\nimport './style.scss';\n\nconst DEFAULT_VIEWPORT_CHECKBOX_VALUES = {\n\t[ BLOCK_VISIBILITY_VIEWPORTS.mobile.key ]: false,\n\t[ BLOCK_VISIBILITY_VIEWPORTS.tablet.key ]: false,\n\t[ BLOCK_VISIBILITY_VIEWPORTS.desktop.key ]: false,\n};\n\nconst EMPTY_BLOCKS = [];\n\n/**\n * Modal component for configuring block visibility across viewports.\n *\n * Allows users to hide blocks on specific viewport sizes (mobile, tablet, desktop)\n * or hide them everywhere. When editing multiple blocks, checkboxes only show as\n * checked if ALL selected blocks share the same setting to avoid ambiguity.\n *\n * @param {Object} props Component props.\n * @param {Array} props.clientIds The client IDs of the blocks to hide.\n * @param {Function} props.onClose Callback function invoked when the modal is closed.\n * @return {React.JSX.Element} The modal component.\n */\nexport default function BlockVisibilityModal( { clientIds, onClose } ) {\n\tconst { createSuccessNotice } = useDispatch( noticesStore );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\tconst blocks = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getBlocksByClientId( clientIds ) ??\n\t\t\tEMPTY_BLOCKS,\n\t\t[ clientIds ]\n\t);\n\tconst listViewShortcut = useSelect( ( select ) => {\n\t\treturn select( keyboardShortcutsStore ).getShortcutRepresentation(\n\t\t\t'core/editor/toggle-list-view'\n\t\t);\n\t}, [] );\n\n\tconst initialViewportValues = useMemo( () => {\n\t\tif ( blocks?.length === 0 ) {\n\t\t\treturn {\n\t\t\t\thideEverywhere: false,\n\t\t\t\tviewportChecked: {},\n\t\t\t};\n\t\t}\n\n\t\tconst viewportValues = {};\n\n\t\tBLOCK_VISIBILITY_VIEWPORT_ENTRIES.forEach( ( [ , { key } ] ) => {\n\t\t\tviewportValues[ key ] = getViewportCheckboxState( blocks, key );\n\t\t} );\n\n\t\treturn {\n\t\t\thideEverywhere: getHideEverywhereCheckboxState( blocks ),\n\t\t\tviewportChecked: viewportValues,\n\t\t};\n\t}, [ blocks ] );\n\n\tconst [ viewportChecked, setViewportChecked ] = useState(\n\t\tinitialViewportValues?.viewportChecked ?? {}\n\t);\n\tconst [ hideEverywhere, setHideEverywhere ] = useState(\n\t\tinitialViewportValues?.hideEverywhere ?? false\n\t);\n\n\tconst handleViewportCheckboxChange = useCallback(\n\t\t( viewport, isChecked ) => {\n\t\t\tsetViewportChecked( {\n\t\t\t\t...viewportChecked,\n\t\t\t\t[ viewport ]: isChecked,\n\t\t\t} );\n\t\t},\n\t\t[ viewportChecked ]\n\t);\n\n\tconst noticeMessage = useMemo( () => {\n\t\tif ( ! hideEverywhere ) {\n\t\t\treturn sprintf(\n\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t__(\n\t\t\t\t\t'Block visibility settings updated. You can access them via the List View (%s).'\n\t\t\t\t),\n\t\t\t\tlistViewShortcut\n\t\t\t);\n\t\t}\n\n\t\tconst message =\n\t\t\tblocks?.length > 1\n\t\t\t\t? // translators: %s: The shortcut key to access the List View.\n\t\t\t\t __(\n\t\t\t\t\t\t'Blocks hidden. You can access them via the List View (%s).'\n\t\t\t\t )\n\t\t\t\t: // translators: %s: The shortcut key to access the List View.\n\t\t\t\t __(\n\t\t\t\t\t\t'Block hidden. You can access it via the List View (%s).'\n\t\t\t\t );\n\n\t\treturn sprintf( message, listViewShortcut );\n\t}, [ hideEverywhere, blocks?.length, listViewShortcut ] );\n\n\tconst isAnyViewportChecked = useMemo(\n\t\t() =>\n\t\t\tObject.values( viewportChecked ).some(\n\t\t\t\t( checked ) => checked === true || checked === null\n\t\t\t),\n\t\t[ viewportChecked ]\n\t);\n\n\tconst isDirty = useMemo( () => {\n\t\tif ( hideEverywhere !== initialViewportValues.hideEverywhere ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn BLOCK_VISIBILITY_VIEWPORT_ENTRIES.some(\n\t\t\t( [ , { key } ] ) =>\n\t\t\t\tviewportChecked[ key ] !==\n\t\t\t\tinitialViewportValues.viewportChecked[ key ]\n\t\t);\n\t}, [ hideEverywhere, viewportChecked, initialViewportValues ] );\n\n\tconst hasIndeterminateValues = useMemo( () => {\n\t\tif ( hideEverywhere === null ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn Object.values( viewportChecked ).some(\n\t\t\t( checked ) => checked === null\n\t\t);\n\t}, [ hideEverywhere, viewportChecked ] );\n\n\tconst handleSubmit = useCallback(\n\t\t( event ) => {\n\t\t\tevent.preventDefault();\n\t\t\tconst newVisibility = hideEverywhere\n\t\t\t\t? false\n\t\t\t\t: {\n\t\t\t\t\t\tviewport: BLOCK_VISIBILITY_VIEWPORT_ENTRIES.reduce(\n\t\t\t\t\t\t\t( acc, [ , { key } ] ) => {\n\t\t\t\t\t\t\t\tif ( viewportChecked[ key ] ) {\n\t\t\t\t\t\t\t\t\t// Values are inverted to hide the block on the selected viewport.\n\t\t\t\t\t\t\t\t\t// In the UI, the checkbox is checked (true) when the block is hidden on the selected viewport,\n\t\t\t\t\t\t\t\t\t// so 'false' means hide the block on the selected viewport.\n\t\t\t\t\t\t\t\t\tacc[ key ] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn acc;\n\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 };\n\t\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\t\tblocks.map( ( { clientId, attributes } ) => [\n\t\t\t\t\tclientId,\n\t\t\t\t\t{\n\t\t\t\t\t\tmetadata: cleanEmptyObject( {\n\t\t\t\t\t\t\t...attributes?.metadata,\n\t\t\t\t\t\t\tblockVisibility: newVisibility,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t},\n\t\t\t\t] )\n\t\t\t);\n\t\t\tupdateBlockAttributes( clientIds, attributesByClientId, {\n\t\t\t\tuniqueByBlock: true,\n\t\t\t} );\n\n\t\t\tcreateSuccessNotice( noticeMessage, {\n\t\t\t\tid: hideEverywhere\n\t\t\t\t\t? 'block-visibility-hidden'\n\t\t\t\t\t: 'block-visibility-viewports-updated',\n\t\t\t\ttype: 'snackbar',\n\t\t\t} );\n\t\t\tonClose();\n\t\t},\n\t\t[\n\t\t\tblocks,\n\t\t\tclientIds,\n\t\t\tcreateSuccessNotice,\n\t\t\thideEverywhere,\n\t\t\tnoticeMessage,\n\t\t\tonClose,\n\t\t\tupdateBlockAttributes,\n\t\t\tviewportChecked,\n\t\t]\n\t);\n\n\tconst hasMultipleBlocks = blocks?.length > 1;\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={\n\t\t\t\tclientIds?.length > 1 ? __( 'Hide blocks' ) : __( 'Hide block' )\n\t\t\t}\n\t\t\tonRequestClose={ onClose }\n\t\t\toverlayClassName=\"block-editor-block-visibility-modal\"\n\t\t\tsize=\"small\"\n\t\t>\n\t\t\t<form onSubmit={ handleSubmit }>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<legend>\n\t\t\t\t\t\t{ hasMultipleBlocks\n\t\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t\t'Select the viewport sizes for which you want to hide the blocks. Changes will apply to all selected blocks.'\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: __(\n\t\t\t\t\t\t\t\t\t'Select the viewport size for which you want to hide the block.'\n\t\t\t\t\t\t\t ) }\n\t\t\t\t\t</legend>\n\t\t\t\t\t<ul className=\"block-editor-block-visibility-modal__options\">\n\t\t\t\t\t\t<li className=\"block-editor-block-visibility-modal__options-item block-editor-block-visibility-modal__options-item--everywhere\">\n\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__options-checkbox--everywhere\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Omit from published content' ) }\n\t\t\t\t\t\t\t\tchecked={ hideEverywhere === true }\n\t\t\t\t\t\t\t\tindeterminate={ hideEverywhere === null }\n\t\t\t\t\t\t\t\tonChange={ ( checked ) => {\n\t\t\t\t\t\t\t\t\tsetHideEverywhere( checked );\n\t\t\t\t\t\t\t\t\t// Reset viewport checkboxes when hide everywhere is checked.\n\t\t\t\t\t\t\t\t\tsetViewportChecked(\n\t\t\t\t\t\t\t\t\t\tDEFAULT_VIEWPORT_CHECKBOX_VALUES\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\t{ hideEverywhere !== true && (\n\t\t\t\t\t\t\t\t<ul className=\"block-editor-block-visibility-modal__sub-options\">\n\t\t\t\t\t\t\t\t\t{ BLOCK_VISIBILITY_VIEWPORT_ENTRIES.map(\n\t\t\t\t\t\t\t\t\t\t( [ , { label, icon, key } ] ) => (\n\t\t\t\t\t\t\t\t\t\t\t<li\n\t\t\t\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__options-item\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<CheckboxControl\n\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ sprintf(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// translators: %s: The viewport name.\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t__( 'Hide on %s' ),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel\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\tchecked={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] ?? false\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\tindeterminate={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t] === null\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\tonChange={ ( checked ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleViewportCheckboxChange(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchecked\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={ clsx( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'block-editor-block-visibility-modal__options-icon--checked':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tviewportChecked[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t</li>\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</ul>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t{ hasMultipleBlocks && hasIndeterminateValues && (\n\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t'Selected blocks have different visibility settings. The checkboxes show an indeterminate state when settings differ.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! hasMultipleBlocks && hideEverywhere === true && (\n\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t{ sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View.\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Block will be hidden in the editor, and omitted from the published markup on the frontend. You can configure it again by selecting it in the List View (%s).'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tlistViewShortcut\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</p>\n\t\t\t\t\t) }\n\t\t\t\t\t{ ! hasMultipleBlocks &&\n\t\t\t\t\t\t! hideEverywhere &&\n\t\t\t\t\t\tisAnyViewportChecked && (\n\t\t\t\t\t\t\t<p className=\"block-editor-block-visibility-modal__description\">\n\t\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t\tsprintf(\n\t\t\t\t\t\t\t\t\t\t// translators: %s: The shortcut key to access the List View\n\t\t\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t\t\t'Block will be hidden according to the selected viewports. It will be <strong>included in the published markup on the frontend</strong>. You can configure it again by selecting it in the List View (%s).'\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\tlistViewShortcut\n\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\t\tstrong: <strong />,\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</p>\n\t\t\t\t\t\t) }\n\t\t\t\t</fieldset>\n\t\t\t\t<Flex\n\t\t\t\t\tclassName=\"block-editor-block-visibility-modal__actions\"\n\t\t\t\t\tjustify=\"flex-end\"\n\t\t\t\t\texpanded={ false }\n\t\t\t\t>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t\t<FlexItem>\n\t\t\t\t\t\t<Button\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\tdisabled={ ! isDirty }\n\t\t\t\t\t\t\taccessibleWhenDisabled\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Apply' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</FlexItem>\n\t\t\t\t</Flex>\n\t\t\t</form>\n\t\t</Modal>\n\t);\n}\n", "if (typeof document !== 'undefined' && process.env.NODE_ENV !== 'test' && !document.head.querySelector(\"style[data-wp-hash='4334c7deb6']\")) {\n\tconst style = document.createElement(\"style\");\n\tstyle.setAttribute(\"data-wp-hash\", \"4334c7deb6\");\n\tstyle.appendChild(document.createTextNode(\".block-editor-block-visibility-modal{z-index:1000001}.block-editor-block-visibility-modal__options{border:0;list-style:none;margin:24px 0;padding:0}.block-editor-block-visibility-modal__options-item{align-items:center;display:flex;gap:24px;justify-content:space-between;margin:0 0 16px}.block-editor-block-visibility-modal__options-item:last-child{margin:0}.block-editor-block-visibility-modal__options-item--everywhere{align-items:start;flex-direction:column}.block-editor-block-visibility-modal__options-checkbox--everywhere{font-weight:600}.block-editor-block-visibility-modal__options-icon--checked{fill:#ddd}.block-editor-block-visibility-modal__sub-options{padding-inline-start:12px;width:100%}.block-editor-block-visibility-modal__description{color:#757575;font-size:12px}.block-editor-block-visibility-info{align-items:center;display:flex;justify-content:start;margin:0 16px 16px;padding-bottom:4px;padding-top:4px}\"));\n\tdocument.head.appendChild(style);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAiB;AAKjB,kBAA4B;AAC5B,qBAKO;AACP,wBAOO;AACP,kBAAuC;AACvC,gCAAgD;AAChD,qBAAsC;AAKtC,uBAGO;AACP,mBAA0C;AAC1C,mBAAiC;AACjC,IAAAA,gBAGO;;;ACvCP,IAAI,OAAO,aAAa,eAAe,QAAQ,IAAI,aAAa,UAAU,CAAC,SAAS,KAAK,cAAc,kCAAkC,GAAG;AAC3I,QAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,QAAM,aAAa,gBAAgB,YAAY;AAC/C,QAAM,YAAY,SAAS,eAAe,65BAA65B,CAAC;AACx8B,WAAS,KAAK,YAAY,KAAK;AAChC;;;ADsOK;AAjML,IAAM,mCAAmC;AAAA,EACxC,CAAE,4CAA2B,OAAO,GAAI,GAAG;AAAA,EAC3C,CAAE,4CAA2B,OAAO,GAAI,GAAG;AAAA,EAC3C,CAAE,4CAA2B,QAAQ,GAAI,GAAG;AAC7C;AAEA,IAAM,eAAe,CAAC;AAcP,SAAR,qBAAuC,EAAE,WAAW,QAAQ,GAAI;AACtE,QAAM,EAAE,oBAAoB,QAAI,yBAAa,eAAAC,KAAa;AAC1D,QAAM,EAAE,sBAAsB,QAAI,yBAAa,aAAAC,KAAiB;AAEhE,QAAM,aAAS;AAAA,IACd,CAAE,WACD,OAAQ,aAAAA,KAAiB,EAAE,oBAAqB,SAAU,KAC1D;AAAA,IACD,CAAE,SAAU;AAAA,EACb;AACA,QAAM,uBAAmB,uBAAW,CAAE,WAAY;AACjD,WAAO,OAAQ,0BAAAC,KAAuB,EAAE;AAAA,MACvC;AAAA,IACD;AAAA,EACD,GAAG,CAAC,CAAE;AAEN,QAAM,4BAAwB,wBAAS,MAAM;AAC5C,QAAK,QAAQ,WAAW,GAAI;AAC3B,aAAO;AAAA,QACN,gBAAgB;AAAA,QAChB,iBAAiB,CAAC;AAAA,MACnB;AAAA,IACD;AAEA,UAAM,iBAAiB,CAAC;AAExB,uDAAkC,QAAS,CAAE,CAAE,EAAE,EAAE,IAAI,CAAE,MAAO;AAC/D,qBAAgB,GAAI,QAAI,wCAA0B,QAAQ,GAAI;AAAA,IAC/D,CAAE;AAEF,WAAO;AAAA,MACN,oBAAgB,8CAAgC,MAAO;AAAA,MACvD,iBAAiB;AAAA,IAClB;AAAA,EACD,GAAG,CAAE,MAAO,CAAE;AAEd,QAAM,CAAE,iBAAiB,kBAAmB,QAAI;AAAA,IAC/C,uBAAuB,mBAAmB,CAAC;AAAA,EAC5C;AACA,QAAM,CAAE,gBAAgB,iBAAkB,QAAI;AAAA,IAC7C,uBAAuB,kBAAkB;AAAA,EAC1C;AAEA,QAAM,mCAA+B;AAAA,IACpC,CAAE,UAAU,cAAe;AAC1B,yBAAoB;AAAA,QACnB,GAAG;AAAA,QACH,CAAE,QAAS,GAAG;AAAA,MACf,CAAE;AAAA,IACH;AAAA,IACA,CAAE,eAAgB;AAAA,EACnB;AAEA,QAAM,oBAAgB,wBAAS,MAAM;AACpC,QAAK,CAAE,gBAAiB;AACvB,iBAAO;AAAA;AAAA,YAEN;AAAA,UACC;AAAA,QACD;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAEA,UAAM,UACL,QAAQ,SAAS;AAAA;AAAA,UAEd;AAAA,QACA;AAAA,MACA;AAAA;AAAA;AAAA,UAEA;AAAA,QACA;AAAA,MACA;AAAA;AAEJ,eAAO,qBAAS,SAAS,gBAAiB;AAAA,EAC3C,GAAG,CAAE,gBAAgB,QAAQ,QAAQ,gBAAiB,CAAE;AAExD,QAAM,2BAAuB;AAAA,IAC5B,MACC,OAAO,OAAQ,eAAgB,EAAE;AAAA,MAChC,CAAE,YAAa,YAAY,QAAQ,YAAY;AAAA,IAChD;AAAA,IACD,CAAE,eAAgB;AAAA,EACnB;AAEA,QAAM,cAAU,wBAAS,MAAM;AAC9B,QAAK,mBAAmB,sBAAsB,gBAAiB;AAC9D,aAAO;AAAA,IACR;AACA,WAAO,mDAAkC;AAAA,MACxC,CAAE,CAAE,EAAE,EAAE,IAAI,CAAE,MACb,gBAAiB,GAAI,MACrB,sBAAsB,gBAAiB,GAAI;AAAA,IAC7C;AAAA,EACD,GAAG,CAAE,gBAAgB,iBAAiB,qBAAsB,CAAE;AAE9D,QAAM,6BAAyB,wBAAS,MAAM;AAC7C,QAAK,mBAAmB,MAAO;AAC9B,aAAO;AAAA,IACR;AACA,WAAO,OAAO,OAAQ,eAAgB,EAAE;AAAA,MACvC,CAAE,YAAa,YAAY;AAAA,IAC5B;AAAA,EACD,GAAG,CAAE,gBAAgB,eAAgB,CAAE;AAEvC,QAAM,mBAAe;AAAA,IACpB,CAAE,UAAW;AACZ,YAAM,eAAe;AACrB,YAAM,gBAAgB,iBACnB,QACA;AAAA,QACA,UAAU,mDAAkC;AAAA,UAC3C,CAAE,KAAK,CAAE,EAAE,EAAE,IAAI,CAAE,MAAO;AACzB,gBAAK,gBAAiB,GAAI,GAAI;AAI7B,kBAAK,GAAI,IAAI;AAAA,YACd;AACA,mBAAO;AAAA,UACR;AAAA,UACA,CAAC;AAAA,QACF;AAAA,MACA;AACH,YAAM,uBAAuB,OAAO;AAAA,QACnC,OAAO,IAAK,CAAE,EAAE,UAAU,WAAW,MAAO;AAAA,UAC3C;AAAA,UACA;AAAA,YACC,cAAU,+BAAkB;AAAA,cAC3B,GAAG,YAAY;AAAA,cACf,iBAAiB;AAAA,YAClB,CAAE;AAAA,UACH;AAAA,QACD,CAAE;AAAA,MACH;AACA,4BAAuB,WAAW,sBAAsB;AAAA,QACvD,eAAe;AAAA,MAChB,CAAE;AAEF,0BAAqB,eAAe;AAAA,QACnC,IAAI,iBACD,4BACA;AAAA,QACH,MAAM;AAAA,MACP,CAAE;AACF,cAAQ;AAAA,IACT;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,QAAM,oBAAoB,QAAQ,SAAS;AAE3C,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OACC,WAAW,SAAS,QAAI,gBAAI,aAAc,QAAI,gBAAI,YAAa;AAAA,MAEhE,gBAAiB;AAAA,MACjB,kBAAiB;AAAA,MACjB,MAAK;AAAA,MAEL,uDAAC,UAAK,UAAW,cAChB;AAAA,qDAAC,cACA;AAAA,sDAAC,YACE,kCACC;AAAA,YACA;AAAA,UACA,QACA;AAAA,YACA;AAAA,UACA,GACJ;AAAA,UACA,4CAAC,QAAG,WAAU,gDACb,uDAAC,QAAG,WAAU,mHACb;AAAA;AAAA,cAAC;AAAA;AAAA,gBACA,WAAU;AAAA,gBACV,WAAQ,gBAAI,6BAA8B;AAAA,gBAC1C,SAAU,mBAAmB;AAAA,gBAC7B,eAAgB,mBAAmB;AAAA,gBACnC,UAAW,CAAE,YAAa;AACzB,oCAAmB,OAAQ;AAE3B;AAAA,oBACC;AAAA,kBACD;AAAA,gBACD;AAAA;AAAA,YACD;AAAA,YACE,mBAAmB,QACpB,4CAAC,QAAG,WAAU,oDACX,6DAAkC;AAAA,cACnC,CAAE,CAAE,EAAE,EAAE,OAAO,MAAM,IAAI,CAAE,MAC1B;AAAA,gBAAC;AAAA;AAAA,kBAEA,WAAU;AAAA,kBAEV;AAAA;AAAA,sBAAC;AAAA;AAAA,wBACA,WAAQ;AAAA;AAAA,8BAEP,gBAAI,YAAa;AAAA,0BACjB;AAAA,wBACD;AAAA,wBACA,SACC,gBACC,GACD,KAAK;AAAA,wBAEN,eACC,gBACC,GACD,MAAM;AAAA,wBAEP,UAAW,CAAE,YACZ;AAAA,0BACC;AAAA,0BACA;AAAA,wBACD;AAAA;AAAA,oBAEF;AAAA,oBACA;AAAA,sBAAC;AAAA;AAAA,wBACA;AAAA,wBACA,eAAY,YAAAC,SAAM;AAAA,0BACjB,8DACC,gBACC,GACD;AAAA,wBACF,CAAE;AAAA;AAAA,oBACH;AAAA;AAAA;AAAA,gBAlCM;AAAA,cAmCP;AAAA,YAEF,GACD;AAAA,aAEF,GACD;AAAA,UACE,qBAAqB,0BACtB,4CAAC,OAAE,WAAU,oDACV;AAAA,YACD;AAAA,UACD,GACD;AAAA,UAEC,CAAE,qBAAqB,mBAAmB,QAC3C,4CAAC,OAAE,WAAU,oDACV;AAAA;AAAA,gBAED;AAAA,cACC;AAAA,YACD;AAAA,YACA;AAAA,UACD,GACD;AAAA,UAEC,CAAE,qBACH,CAAE,kBACF,wBACC,4CAAC,OAAE,WAAU,oDACV;AAAA,gBACD;AAAA;AAAA,kBAEC;AAAA,gBACC;AAAA,cACD;AAAA,cACA;AAAA,YACD;AAAA,YACA;AAAA,cACC,QAAQ,4CAAC,YAAO;AAAA,YACjB;AAAA,UACD,GACD;AAAA,WAEH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,SAAQ;AAAA,YACR,UAAW;AAAA,YAEX;AAAA,0DAAC,8BACA;AAAA,gBAAC;AAAA;AAAA,kBACA,SAAQ;AAAA,kBACR,SAAU;AAAA,kBACV,uBAAqB;AAAA,kBAEnB,8BAAI,QAAS;AAAA;AAAA,cAChB,GACD;AAAA,cACA,4CAAC,8BACA;AAAA,gBAAC;AAAA;AAAA,kBACA,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,UAAW,CAAE;AAAA,kBACb,wBAAsB;AAAA,kBACtB,uBAAqB;AAAA,kBAEnB,8BAAI,OAAQ;AAAA;AAAA,cACf,GACD;AAAA;AAAA;AAAA,QACD;AAAA,SACD;AAAA;AAAA,EACD;AAEF;",
6
6
  "names": ["import_utils", "noticesStore", "blockEditorStore", "keyboardShortcutsStore", "clsx"]
7
7
  }
@@ -64,12 +64,14 @@ function useDimensionSizes(presets) {
64
64
  function DimensionControl({
65
65
  label = (0, import_i18n.__)("Dimension"),
66
66
  onChange,
67
- value
67
+ value,
68
+ dimensionSizes: dimensionSizesProp
68
69
  }) {
69
- const [dimensionSizes, availableUnits] = (0, import_use_settings.useSettings)(
70
+ const [dimensionSizesFromSettings, availableUnits] = (0, import_use_settings.useSettings)(
70
71
  "dimensions.dimensionSizes",
71
72
  "spacing.units"
72
73
  );
74
+ const dimensionSizes = dimensionSizesProp ?? dimensionSizesFromSettings;
73
75
  const units = (0, import_components.__experimentalUseCustomUnits)({
74
76
  availableUnits: availableUnits || [
75
77
  "%",