@wordpress/block-editor 15.6.1-next.36001005c.0 → 15.7.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 (147) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/block-list/block.js +3 -3
  3. package/build/components/block-list/block.js.map +2 -2
  4. package/build/components/block-list/index.js +2 -2
  5. package/build/components/block-list/index.js.map +1 -1
  6. package/build/components/block-toolbar/switch-section-style.js +2 -5
  7. package/build/components/block-toolbar/switch-section-style.js.map +2 -2
  8. package/build/components/global-styles/hooks.js +0 -107
  9. package/build/components/global-styles/hooks.js.map +3 -3
  10. package/build/components/global-styles/index.js +0 -15
  11. package/build/components/global-styles/index.js.map +2 -2
  12. package/build/components/global-styles/typography-panel.js +18 -1
  13. package/build/components/global-styles/typography-panel.js.map +2 -2
  14. package/build/components/global-styles/utils.js +0 -19
  15. package/build/components/global-styles/utils.js.map +3 -3
  16. package/build/components/inserter/media-tab/media-tab.js +33 -1
  17. package/build/components/inserter/media-tab/media-tab.js.map +3 -3
  18. package/build/components/inserter/tips.js +0 -2
  19. package/build/components/inserter/tips.js.map +2 -2
  20. package/build/components/media-placeholder/index.js +31 -1
  21. package/build/components/media-placeholder/index.js.map +3 -3
  22. package/build/components/media-replace-flow/index.js +29 -1
  23. package/build/components/media-replace-flow/index.js.map +3 -3
  24. package/build/components/{global-styles/context.js → media-upload-modal/index.js} +8 -23
  25. package/build/components/media-upload-modal/index.js.map +7 -0
  26. package/build/components/rich-text/index.js +8 -7
  27. package/build/components/rich-text/index.js.map +2 -2
  28. package/build/hooks/allowed-blocks.js +3 -8
  29. package/build/hooks/allowed-blocks.js.map +3 -3
  30. package/build/hooks/block-bindings.js +111 -170
  31. package/build/hooks/block-bindings.js.map +2 -2
  32. package/build/hooks/block-style-variation.js +4 -13
  33. package/build/hooks/block-style-variation.js.map +2 -2
  34. package/build/hooks/custom-class-name.js +1 -1
  35. package/build/hooks/custom-class-name.js.map +1 -1
  36. package/build/hooks/fit-text.js +33 -20
  37. package/build/hooks/fit-text.js.map +2 -2
  38. package/build/hooks/font-size.js +4 -3
  39. package/build/hooks/font-size.js.map +2 -2
  40. package/build/hooks/metadata.js +48 -2
  41. package/build/hooks/metadata.js.map +2 -2
  42. package/build/hooks/typography.js +11 -4
  43. package/build/hooks/typography.js.map +3 -3
  44. package/build/private-apis.js +3 -1
  45. package/build/private-apis.js.map +3 -3
  46. package/build/store/private-selectors.js +3 -3
  47. package/build/store/private-selectors.js.map +2 -2
  48. package/build/store/selectors.js +38 -13
  49. package/build/store/selectors.js.map +2 -2
  50. package/build/store/utils.js +2 -1
  51. package/build/store/utils.js.map +2 -2
  52. package/build/utils/fit-text-utils.js +4 -4
  53. package/build/utils/fit-text-utils.js.map +2 -2
  54. package/build-module/components/block-list/block.js +3 -3
  55. package/build-module/components/block-list/block.js.map +2 -2
  56. package/build-module/components/block-list/index.js +2 -2
  57. package/build-module/components/block-list/index.js.map +1 -1
  58. package/build-module/components/block-toolbar/switch-section-style.js +2 -5
  59. package/build-module/components/block-toolbar/switch-section-style.js.map +2 -2
  60. package/build-module/components/global-styles/hooks.js +1 -99
  61. package/build-module/components/global-styles/hooks.js.map +2 -2
  62. package/build-module/components/global-styles/index.js +1 -15
  63. package/build-module/components/global-styles/index.js.map +2 -2
  64. package/build-module/components/global-styles/typography-panel.js +18 -1
  65. package/build-module/components/global-styles/typography-panel.js.map +2 -2
  66. package/build-module/components/global-styles/utils.js +0 -8
  67. package/build-module/components/global-styles/utils.js.map +2 -2
  68. package/build-module/components/inserter/media-tab/media-tab.js +34 -2
  69. package/build-module/components/inserter/media-tab/media-tab.js.map +2 -2
  70. package/build-module/components/inserter/tips.js +0 -2
  71. package/build-module/components/inserter/tips.js.map +2 -2
  72. package/build-module/components/media-placeholder/index.js +31 -1
  73. package/build-module/components/media-placeholder/index.js.map +2 -2
  74. package/build-module/components/media-replace-flow/index.js +29 -1
  75. package/build-module/components/media-replace-flow/index.js.map +2 -2
  76. package/build-module/components/media-upload-modal/index.js +7 -0
  77. package/build-module/components/media-upload-modal/index.js.map +7 -0
  78. package/build-module/components/rich-text/index.js +8 -7
  79. package/build-module/components/rich-text/index.js.map +2 -2
  80. package/build-module/hooks/allowed-blocks.js +3 -8
  81. package/build-module/hooks/allowed-blocks.js.map +2 -2
  82. package/build-module/hooks/block-bindings.js +112 -172
  83. package/build-module/hooks/block-bindings.js.map +2 -2
  84. package/build-module/hooks/block-style-variation.js +5 -14
  85. package/build-module/hooks/block-style-variation.js.map +2 -2
  86. package/build-module/hooks/custom-class-name.js +1 -1
  87. package/build-module/hooks/custom-class-name.js.map +1 -1
  88. package/build-module/hooks/fit-text.js +34 -21
  89. package/build-module/hooks/fit-text.js.map +2 -2
  90. package/build-module/hooks/font-size.js +4 -3
  91. package/build-module/hooks/font-size.js.map +2 -2
  92. package/build-module/hooks/metadata.js +46 -1
  93. package/build-module/hooks/metadata.js.map +2 -2
  94. package/build-module/hooks/typography.js +11 -4
  95. package/build-module/hooks/typography.js.map +3 -3
  96. package/build-module/private-apis.js +3 -1
  97. package/build-module/private-apis.js.map +2 -2
  98. package/build-module/store/private-selectors.js +2 -2
  99. package/build-module/store/private-selectors.js.map +2 -2
  100. package/build-module/store/selectors.js +39 -14
  101. package/build-module/store/selectors.js.map +2 -2
  102. package/build-module/store/utils.js +3 -2
  103. package/build-module/store/utils.js.map +2 -2
  104. package/build-module/utils/fit-text-utils.js +4 -4
  105. package/build-module/utils/fit-text-utils.js.map +2 -2
  106. package/package.json +36 -36
  107. package/src/components/block-list/block.js +1 -1
  108. package/src/components/block-list/index.js +2 -2
  109. package/src/components/block-toolbar/switch-section-style.js +2 -5
  110. package/src/components/global-styles/hooks.js +1 -121
  111. package/src/components/global-styles/index.js +1 -9
  112. package/src/components/global-styles/typography-panel.js +26 -1
  113. package/src/components/global-styles/utils.js +0 -31
  114. package/src/components/inserter/media-tab/media-tab.js +44 -2
  115. package/src/components/inserter/tips.js +0 -2
  116. package/src/components/media-placeholder/index.js +41 -1
  117. package/src/components/media-replace-flow/index.js +39 -1
  118. package/src/components/media-upload-modal/index.js +18 -0
  119. package/src/components/rich-text/index.js +8 -14
  120. package/src/hooks/allowed-blocks.js +3 -11
  121. package/src/hooks/block-bindings.js +79 -153
  122. package/src/hooks/block-style-variation.js +5 -17
  123. package/src/hooks/custom-class-name.js +1 -1
  124. package/src/hooks/fit-text.js +39 -30
  125. package/src/hooks/font-size.js +7 -3
  126. package/src/hooks/metadata.js +89 -0
  127. package/src/hooks/test/metadata.js +316 -0
  128. package/src/hooks/typography.js +15 -4
  129. package/src/private-apis.js +2 -0
  130. package/src/store/private-selectors.js +2 -2
  131. package/src/store/selectors.js +59 -21
  132. package/src/store/test/selectors.js +1 -1
  133. package/src/store/utils.js +2 -1
  134. package/src/utils/fit-text-utils.js +4 -16
  135. package/tsconfig.json +1 -0
  136. package/build/components/global-styles/context.js.map +0 -7
  137. package/build/components/global-styles/get-global-styles-changes.js +0 -216
  138. package/build/components/global-styles/get-global-styles-changes.js.map +0 -7
  139. package/build-module/components/global-styles/context.js +0 -17
  140. package/build-module/components/global-styles/context.js.map +0 -7
  141. package/build-module/components/global-styles/get-global-styles-changes.js +0 -182
  142. package/build-module/components/global-styles/get-global-styles-changes.js.map +0 -7
  143. package/src/components/global-styles/README.md +0 -190
  144. package/src/components/global-styles/context.js +0 -16
  145. package/src/components/global-styles/get-global-styles-changes.js +0 -252
  146. package/src/components/global-styles/test/get-global-styles-changes.js +0 -290
  147. package/src/components/global-styles/test/utils.js +0 -58
@@ -142,7 +142,8 @@ const getInsertBlockTypeDependants = () => (state, rootClientId) => {
142
142
  state.settings.allowedBlockTypes,
143
143
  state.settings.templateLock,
144
144
  (0, import_selectors.getBlockEditingMode)(state, rootClientId),
145
- (0, import_private_selectors.getSectionRootClientId)(state)
145
+ (0, import_private_selectors.getSectionRootClientId)(state),
146
+ (0, import_private_selectors.isSectionBlock)(state, rootClientId)
146
147
  ];
147
148
  };
148
149
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/store/utils.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { parse as grammarParse } from '@wordpress/block-serialization-default-parser';\n\n/**\n * Internal dependencies\n */\nimport { selectBlockPatternsKey } from './private-keys';\nimport { unlock } from '../lock-unlock';\nimport { STORE_NAME } from './constants';\nimport { getSectionRootClientId } from './private-selectors';\nimport { getBlockEditingMode } from './selectors';\nimport { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';\n\nexport const isFiltered = Symbol( 'isFiltered' );\nconst parsedPatternCache = new WeakMap();\nconst grammarMapCache = new WeakMap();\n\nexport function mapUserPattern(\n\tuserPattern,\n\t__experimentalUserPatternCategories = []\n) {\n\treturn {\n\t\tname: `core/block/${ userPattern.id }`,\n\t\tid: userPattern.id,\n\t\ttype: INSERTER_PATTERN_TYPES.user,\n\t\ttitle: userPattern.title?.raw,\n\t\tcategories: userPattern.wp_pattern_category?.map( ( catId ) => {\n\t\t\tconst category = __experimentalUserPatternCategories.find(\n\t\t\t\t( { id } ) => id === catId\n\t\t\t);\n\t\t\treturn category ? category.slug : catId;\n\t\t} ),\n\t\tcontent: userPattern.content?.raw,\n\t\tsyncStatus: userPattern.wp_pattern_sync_status,\n\t};\n}\n\nfunction parsePattern( pattern ) {\n\tconst blocks = parse( pattern.content, {\n\t\t__unstableSkipMigrationLogs: true,\n\t} );\n\tif ( blocks.length === 1 ) {\n\t\tblocks[ 0 ].attributes = {\n\t\t\t...blocks[ 0 ].attributes,\n\t\t\tmetadata: {\n\t\t\t\t...( blocks[ 0 ].attributes.metadata || {} ),\n\t\t\t\tcategories: pattern.categories,\n\t\t\t\tpatternName: pattern.name,\n\t\t\t\tname: blocks[ 0 ].attributes.metadata?.name || pattern.title,\n\t\t\t},\n\t\t};\n\t}\n\treturn {\n\t\t...pattern,\n\t\tblocks,\n\t};\n}\n\nexport function getParsedPattern( pattern ) {\n\tlet parsedPattern = parsedPatternCache.get( pattern );\n\tif ( ! parsedPattern ) {\n\t\tparsedPattern = parsePattern( pattern );\n\t\tparsedPatternCache.set( pattern, parsedPattern );\n\t}\n\treturn parsedPattern;\n}\n\nexport function getGrammar( pattern ) {\n\tlet grammarMap = grammarMapCache.get( pattern );\n\tif ( ! grammarMap ) {\n\t\tgrammarMap = grammarParse( pattern.content );\n\t\t// Block names are null only at the top level for whitespace.\n\t\tgrammarMap = grammarMap.filter( ( block ) => block.blockName !== null );\n\t\tgrammarMapCache.set( pattern, grammarMap );\n\t}\n\treturn grammarMap;\n}\n\nexport const checkAllowList = ( list, item, defaultResult = null ) => {\n\tif ( typeof list === 'boolean' ) {\n\t\treturn list;\n\t}\n\tif ( Array.isArray( list ) ) {\n\t\t// TODO: when there is a canonical way to detect that we are editing a post\n\t\t// the following check should be changed to something like:\n\t\t// if ( list.includes( 'core/post-content' ) && getEditorMode() === 'post-content' && item === null )\n\t\tif ( list.includes( 'core/post-content' ) && item === null ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn list.includes( item );\n\t}\n\treturn defaultResult;\n};\n\nexport const checkAllowListRecursive = ( blocks, allowedBlockTypes ) => {\n\tif ( typeof allowedBlockTypes === 'boolean' ) {\n\t\treturn allowedBlockTypes;\n\t}\n\n\tconst blocksQueue = [ ...blocks ];\n\twhile ( blocksQueue.length > 0 ) {\n\t\tconst block = blocksQueue.shift();\n\n\t\tconst isAllowed = checkAllowList(\n\t\t\tallowedBlockTypes,\n\t\t\tblock.name || block.blockName,\n\t\t\ttrue\n\t\t);\n\t\tif ( ! isAllowed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tblock.innerBlocks?.forEach( ( innerBlock ) => {\n\t\t\tblocksQueue.push( innerBlock );\n\t\t} );\n\t}\n\n\treturn true;\n};\n\nexport const getAllPatternsDependants = ( select ) => ( state ) => {\n\treturn [\n\t\tstate.settings.__experimentalBlockPatterns,\n\t\tstate.settings.__experimentalUserPatternCategories,\n\t\tstate.settings.__experimentalReusableBlocks,\n\t\tstate.settings[ selectBlockPatternsKey ]?.( select ),\n\t\tstate.blockPatterns,\n\t\tunlock( select( STORE_NAME ) ).getReusableBlocks(),\n\t];\n};\n\nexport const getInsertBlockTypeDependants = () => ( state, rootClientId ) => {\n\treturn [\n\t\tstate.blockListSettings[ rootClientId ],\n\t\tstate.blocks.byClientId.get( rootClientId ),\n\t\tstate.settings.allowedBlockTypes,\n\t\tstate.settings.templateLock,\n\t\tgetBlockEditingMode( state, rootClientId ),\n\t\tgetSectionRootClientId( state ),\n\t];\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { parse } from '@wordpress/blocks';\nimport { parse as grammarParse } from '@wordpress/block-serialization-default-parser';\n\n/**\n * Internal dependencies\n */\nimport { selectBlockPatternsKey } from './private-keys';\nimport { unlock } from '../lock-unlock';\nimport { STORE_NAME } from './constants';\nimport { getSectionRootClientId, isSectionBlock } from './private-selectors';\nimport { getBlockEditingMode } from './selectors';\nimport { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';\n\nexport const isFiltered = Symbol( 'isFiltered' );\nconst parsedPatternCache = new WeakMap();\nconst grammarMapCache = new WeakMap();\n\nexport function mapUserPattern(\n\tuserPattern,\n\t__experimentalUserPatternCategories = []\n) {\n\treturn {\n\t\tname: `core/block/${ userPattern.id }`,\n\t\tid: userPattern.id,\n\t\ttype: INSERTER_PATTERN_TYPES.user,\n\t\ttitle: userPattern.title?.raw,\n\t\tcategories: userPattern.wp_pattern_category?.map( ( catId ) => {\n\t\t\tconst category = __experimentalUserPatternCategories.find(\n\t\t\t\t( { id } ) => id === catId\n\t\t\t);\n\t\t\treturn category ? category.slug : catId;\n\t\t} ),\n\t\tcontent: userPattern.content?.raw,\n\t\tsyncStatus: userPattern.wp_pattern_sync_status,\n\t};\n}\n\nfunction parsePattern( pattern ) {\n\tconst blocks = parse( pattern.content, {\n\t\t__unstableSkipMigrationLogs: true,\n\t} );\n\tif ( blocks.length === 1 ) {\n\t\tblocks[ 0 ].attributes = {\n\t\t\t...blocks[ 0 ].attributes,\n\t\t\tmetadata: {\n\t\t\t\t...( blocks[ 0 ].attributes.metadata || {} ),\n\t\t\t\tcategories: pattern.categories,\n\t\t\t\tpatternName: pattern.name,\n\t\t\t\tname: blocks[ 0 ].attributes.metadata?.name || pattern.title,\n\t\t\t},\n\t\t};\n\t}\n\treturn {\n\t\t...pattern,\n\t\tblocks,\n\t};\n}\n\nexport function getParsedPattern( pattern ) {\n\tlet parsedPattern = parsedPatternCache.get( pattern );\n\tif ( ! parsedPattern ) {\n\t\tparsedPattern = parsePattern( pattern );\n\t\tparsedPatternCache.set( pattern, parsedPattern );\n\t}\n\treturn parsedPattern;\n}\n\nexport function getGrammar( pattern ) {\n\tlet grammarMap = grammarMapCache.get( pattern );\n\tif ( ! grammarMap ) {\n\t\tgrammarMap = grammarParse( pattern.content );\n\t\t// Block names are null only at the top level for whitespace.\n\t\tgrammarMap = grammarMap.filter( ( block ) => block.blockName !== null );\n\t\tgrammarMapCache.set( pattern, grammarMap );\n\t}\n\treturn grammarMap;\n}\n\nexport const checkAllowList = ( list, item, defaultResult = null ) => {\n\tif ( typeof list === 'boolean' ) {\n\t\treturn list;\n\t}\n\tif ( Array.isArray( list ) ) {\n\t\t// TODO: when there is a canonical way to detect that we are editing a post\n\t\t// the following check should be changed to something like:\n\t\t// if ( list.includes( 'core/post-content' ) && getEditorMode() === 'post-content' && item === null )\n\t\tif ( list.includes( 'core/post-content' ) && item === null ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn list.includes( item );\n\t}\n\treturn defaultResult;\n};\n\nexport const checkAllowListRecursive = ( blocks, allowedBlockTypes ) => {\n\tif ( typeof allowedBlockTypes === 'boolean' ) {\n\t\treturn allowedBlockTypes;\n\t}\n\n\tconst blocksQueue = [ ...blocks ];\n\twhile ( blocksQueue.length > 0 ) {\n\t\tconst block = blocksQueue.shift();\n\n\t\tconst isAllowed = checkAllowList(\n\t\t\tallowedBlockTypes,\n\t\t\tblock.name || block.blockName,\n\t\t\ttrue\n\t\t);\n\t\tif ( ! isAllowed ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tblock.innerBlocks?.forEach( ( innerBlock ) => {\n\t\t\tblocksQueue.push( innerBlock );\n\t\t} );\n\t}\n\n\treturn true;\n};\n\nexport const getAllPatternsDependants = ( select ) => ( state ) => {\n\treturn [\n\t\tstate.settings.__experimentalBlockPatterns,\n\t\tstate.settings.__experimentalUserPatternCategories,\n\t\tstate.settings.__experimentalReusableBlocks,\n\t\tstate.settings[ selectBlockPatternsKey ]?.( select ),\n\t\tstate.blockPatterns,\n\t\tunlock( select( STORE_NAME ) ).getReusableBlocks(),\n\t];\n};\n\nexport const getInsertBlockTypeDependants = () => ( state, rootClientId ) => {\n\treturn [\n\t\tstate.blockListSettings[ rootClientId ],\n\t\tstate.blocks.byClientId.get( rootClientId ),\n\t\tstate.settings.allowedBlockTypes,\n\t\tstate.settings.templateLock,\n\t\tgetBlockEditingMode( state, rootClientId ),\n\t\tgetSectionRootClientId( state ),\n\t\tisSectionBlock( state, rootClientId ),\n\t];\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["grammarParse"]
7
7
  }
@@ -24,9 +24,10 @@ module.exports = __toCommonJS(fit_text_utils_exports);
24
24
  function generateCSSRule(elementSelector, fontSize) {
25
25
  return `${elementSelector} { font-size: ${fontSize}px !important; }`;
26
26
  }
27
- function findOptimalFontSize(textElement, elementSelector, applyStylesFn, maxSize = 600) {
27
+ function findOptimalFontSize(textElement, elementSelector, applyStylesFn) {
28
28
  const alreadyHasScrollableHeight = textElement.scrollHeight > textElement.clientHeight;
29
29
  let minSize = 5;
30
+ let maxSize = 600;
30
31
  let bestSize = minSize;
31
32
  while (minSize <= maxSize) {
32
33
  const midSize = Math.floor((minSize + maxSize) / 2);
@@ -42,7 +43,7 @@ function findOptimalFontSize(textElement, elementSelector, applyStylesFn, maxSiz
42
43
  }
43
44
  return bestSize;
44
45
  }
45
- function optimizeFitText(textElement, elementSelector, applyStylesFn, maxSize) {
46
+ function optimizeFitText(textElement, elementSelector, applyStylesFn) {
46
47
  if (!textElement) {
47
48
  return;
48
49
  }
@@ -50,8 +51,7 @@ function optimizeFitText(textElement, elementSelector, applyStylesFn, maxSize) {
50
51
  const optimalSize = findOptimalFontSize(
51
52
  textElement,
52
53
  elementSelector,
53
- applyStylesFn,
54
- maxSize
54
+ applyStylesFn
55
55
  );
56
56
  const cssRule = generateCSSRule(elementSelector, optimalSize);
57
57
  applyStylesFn(cssRule);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/fit-text-utils.js"],
4
- "sourcesContent": ["/**\n * Shared utility functions for fit text functionality.\n * Uses callback-based approach for maximum code reuse between editor and frontend.\n */\n\n/**\n * Generate CSS rule for single text element.\n *\n * @param {string} elementSelector CSS selector for the text element\n * @param {number} fontSize Font size in pixels\n * @return {string} CSS rule string\n */\nfunction generateCSSRule( elementSelector, fontSize ) {\n\treturn `${ elementSelector } { font-size: ${ fontSize }px !important; }`;\n}\n\n/**\n * Find optimal font size using simple binary search between 5-600px.\n *\n * @param {HTMLElement} textElement The text element\n * @param {string} elementSelector CSS selector for the text element\n * @param {Function} applyStylesFn Function to apply test styles\n * @param {number} maxSize Maximum font size in pixels (default: 600)\n * @return {number} Optimal font size\n */\nfunction findOptimalFontSize(\n\ttextElement,\n\telementSelector,\n\tapplyStylesFn,\n\tmaxSize = 600\n) {\n\tconst alreadyHasScrollableHeight =\n\t\ttextElement.scrollHeight > textElement.clientHeight;\n\tlet minSize = 5;\n\tlet bestSize = minSize;\n\n\twhile ( minSize <= maxSize ) {\n\t\tconst midSize = Math.floor( ( minSize + maxSize ) / 2 );\n\t\tapplyStylesFn( generateCSSRule( elementSelector, midSize ) );\n\n\t\tconst fitsWidth = textElement.scrollWidth <= textElement.clientWidth;\n\t\tconst fitsHeight =\n\t\t\talreadyHasScrollableHeight ||\n\t\t\ttextElement.scrollHeight <= textElement.clientHeight;\n\n\t\tif ( fitsWidth && fitsHeight ) {\n\t\t\tbestSize = midSize;\n\t\t\tminSize = midSize + 1;\n\t\t} else {\n\t\t\tmaxSize = midSize - 1;\n\t\t}\n\t}\n\n\treturn bestSize;\n}\n\n/**\n * Complete fit text optimization for a single text element.\n * Handles the full flow using callbacks for style management.\n *\n * @param {HTMLElement} textElement The text element (paragraph, heading, etc.)\n * @param {string} elementSelector CSS selector for the text element\n * @param {Function} applyStylesFn Function to apply CSS styles (pass empty string to clear)\n * @param {number} maxSize Maximum font size in pixels.\n */\nexport function optimizeFitText(\n\ttextElement,\n\telementSelector,\n\tapplyStylesFn,\n\tmaxSize\n) {\n\tif ( ! textElement ) {\n\t\treturn;\n\t}\n\n\tapplyStylesFn( '' );\n\n\tconst optimalSize = findOptimalFontSize(\n\t\ttextElement,\n\t\telementSelector,\n\t\tapplyStylesFn,\n\t\tmaxSize\n\t);\n\n\tconst cssRule = generateCSSRule( elementSelector, optimalSize );\n\tapplyStylesFn( cssRule );\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,SAAS,gBAAiB,iBAAiB,UAAW;AACrD,SAAO,GAAI,eAAgB,iBAAkB,QAAS;AACvD;AAWA,SAAS,oBACR,aACA,iBACA,eACA,UAAU,KACT;AACD,QAAM,6BACL,YAAY,eAAe,YAAY;AACxC,MAAI,UAAU;AACd,MAAI,WAAW;AAEf,SAAQ,WAAW,SAAU;AAC5B,UAAM,UAAU,KAAK,OAAS,UAAU,WAAY,CAAE;AACtD,kBAAe,gBAAiB,iBAAiB,OAAQ,CAAE;AAE3D,UAAM,YAAY,YAAY,eAAe,YAAY;AACzD,UAAM,aACL,8BACA,YAAY,gBAAgB,YAAY;AAEzC,QAAK,aAAa,YAAa;AAC9B,iBAAW;AACX,gBAAU,UAAU;AAAA,IACrB,OAAO;AACN,gBAAU,UAAU;AAAA,IACrB;AAAA,EACD;AAEA,SAAO;AACR;AAWO,SAAS,gBACf,aACA,iBACA,eACA,SACC;AACD,MAAK,CAAE,aAAc;AACpB;AAAA,EACD;AAEA,gBAAe,EAAG;AAElB,QAAM,cAAc;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,UAAU,gBAAiB,iBAAiB,WAAY;AAC9D,gBAAe,OAAQ;AACxB;",
4
+ "sourcesContent": ["/**\n * Shared utility functions for fit text functionality.\n * Uses callback-based approach for maximum code reuse between editor and frontend.\n */\n\n/**\n * Generate CSS rule for single text element.\n *\n * @param {string} elementSelector CSS selector for the text element\n * @param {number} fontSize Font size in pixels\n * @return {string} CSS rule string\n */\nfunction generateCSSRule( elementSelector, fontSize ) {\n\treturn `${ elementSelector } { font-size: ${ fontSize }px !important; }`;\n}\n\n/**\n * Find optimal font size using simple binary search between 5-600px.\n *\n * @param {HTMLElement} textElement The text element\n * @param {string} elementSelector CSS selector for the text element\n * @param {Function} applyStylesFn Function to apply test styles\n * @return {number} Optimal font size\n */\nfunction findOptimalFontSize( textElement, elementSelector, applyStylesFn ) {\n\tconst alreadyHasScrollableHeight =\n\t\ttextElement.scrollHeight > textElement.clientHeight;\n\tlet minSize = 5;\n\tlet maxSize = 600;\n\tlet bestSize = minSize;\n\n\twhile ( minSize <= maxSize ) {\n\t\tconst midSize = Math.floor( ( minSize + maxSize ) / 2 );\n\t\tapplyStylesFn( generateCSSRule( elementSelector, midSize ) );\n\n\t\tconst fitsWidth = textElement.scrollWidth <= textElement.clientWidth;\n\t\tconst fitsHeight =\n\t\t\talreadyHasScrollableHeight ||\n\t\t\ttextElement.scrollHeight <= textElement.clientHeight;\n\n\t\tif ( fitsWidth && fitsHeight ) {\n\t\t\tbestSize = midSize;\n\t\t\tminSize = midSize + 1;\n\t\t} else {\n\t\t\tmaxSize = midSize - 1;\n\t\t}\n\t}\n\n\treturn bestSize;\n}\n\n/**\n * Complete fit text optimization for a single text element.\n * Handles the full flow using callbacks for style management.\n *\n * @param {HTMLElement} textElement The text element (paragraph, heading, etc.)\n * @param {string} elementSelector CSS selector for the text element\n * @param {Function} applyStylesFn Function to apply CSS styles (pass empty string to clear)\n */\nexport function optimizeFitText( textElement, elementSelector, applyStylesFn ) {\n\tif ( ! textElement ) {\n\t\treturn;\n\t}\n\n\tapplyStylesFn( '' );\n\n\tconst optimalSize = findOptimalFontSize(\n\t\ttextElement,\n\t\telementSelector,\n\t\tapplyStylesFn\n\t);\n\n\tconst cssRule = generateCSSRule( elementSelector, optimalSize );\n\tapplyStylesFn( cssRule );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,SAAS,gBAAiB,iBAAiB,UAAW;AACrD,SAAO,GAAI,eAAgB,iBAAkB,QAAS;AACvD;AAUA,SAAS,oBAAqB,aAAa,iBAAiB,eAAgB;AAC3E,QAAM,6BACL,YAAY,eAAe,YAAY;AACxC,MAAI,UAAU;AACd,MAAI,UAAU;AACd,MAAI,WAAW;AAEf,SAAQ,WAAW,SAAU;AAC5B,UAAM,UAAU,KAAK,OAAS,UAAU,WAAY,CAAE;AACtD,kBAAe,gBAAiB,iBAAiB,OAAQ,CAAE;AAE3D,UAAM,YAAY,YAAY,eAAe,YAAY;AACzD,UAAM,aACL,8BACA,YAAY,gBAAgB,YAAY;AAEzC,QAAK,aAAa,YAAa;AAC9B,iBAAW;AACX,gBAAU,UAAU;AAAA,IACrB,OAAO;AACN,gBAAU,UAAU;AAAA,IACrB;AAAA,EACD;AAEA,SAAO;AACR;AAUO,SAAS,gBAAiB,aAAa,iBAAiB,eAAgB;AAC9E,MAAK,CAAE,aAAc;AACpB;AAAA,EACD;AAEA,gBAAe,EAAG;AAElB,QAAM,cAAc;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,UAAU,gBAAiB,iBAAiB,WAAY;AAC9D,gBAAe,OAAQ;AACxB;",
6
6
  "names": []
7
7
  }
@@ -435,7 +435,8 @@ function BlockListBlockProvider(props) {
435
435
  className: hasLightBlockWrapper ? attributes2.className : void 0,
436
436
  defaultClassName: hasLightBlockWrapper ? getBlockDefaultClassName(blockName) : void 0,
437
437
  blockTitle: blockType?.title,
438
- isBlockHidden: attributes2?.metadata?.blockVisibility === false
438
+ isBlockHidden: attributes2?.metadata?.blockVisibility === false,
439
+ bindableAttributes: bindableAttributes2
439
440
  };
440
441
  if (isPreviewMode2) {
441
442
  return previewContext;
@@ -489,8 +490,7 @@ function BlockListBlockProvider(props) {
489
490
  isEditingDisabled: blockEditingMode2 === "disabled",
490
491
  hasEditableOutline: blockEditingMode2 !== "disabled" && getBlockEditingMode(rootClientId) === "disabled",
491
492
  originalBlockClientId: isInvalid ? blocksWithSameName[0] : false,
492
- isBlockHidden: _isBlockHidden(clientId),
493
- bindableAttributes: bindableAttributes2
493
+ isBlockHidden: _isBlockHidden(clientId)
494
494
  };
495
495
  },
496
496
  [clientId, rootClientId]
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-list/block.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { memo, RawHTML, useContext, useMemo } from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tisReusableBlock,\n\tgetBlockDefaultClassName,\n\thasBlockSupport,\n\tcreateBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { withDispatch, useSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { PrivateBlockContext } from './private-block-context';\n\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\t// May be set to undefined, so check if the property is set!\n\tif (\n\t\tpropsA?.hasOwnProperty( 'className' ) &&\n\t\tpropsB?.hasOwnProperty( 'className' )\n\t) {\n\t\tnewProps.className = clsx( propsA.className, propsB.className );\n\t}\n\n\tif (\n\t\tpropsA?.hasOwnProperty( 'style' ) &&\n\t\tpropsB?.hasOwnProperty( 'style' )\n\t) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonRemove,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tthemeSupportsLayout,\n\t\t...context\n\t} = useContext( PrivateBlockContext );\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t\tmayDisplayControls={ mayDisplayControls }\n\t\t\tmayDisplayParentControls={ mayDisplayParentControls }\n\t\t\tblockEditingMode={ context.blockEditingMode }\n\t\t\tisPreviewMode={ context.isPreviewMode }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// Support for sticky position in classic themes with alignment wrappers.\n\n\tconst isSticky = className?.includes( 'is-position-sticky' );\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'wp-block', isSticky && className ) }\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\tconst updatedWrapperProps = {\n\t\t...restWrapperProps,\n\t\tclassName: clsx(\n\t\t\trestWrapperProps.className,\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\t! ( dataAlign && isSticky ) && className\n\t\t),\n\t};\n\n\t// We set a new context with the adjusted and filtered wrapperProps (through\n\t// `editor.BlockListBlock`), which the `BlockListBlockProvider` did not have\n\t// access to.\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider\n\t\t\tvalue={ {\n\t\t\t\twrapperProps: updatedWrapperProps,\n\t\t\t\tisAligned,\n\t\t\t\t...context,\n\t\t\t} }\n\t\t>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tselectBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( nextAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId, attributes } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\t\t\tconst newAttributes =\n\t\t\t\ttypeof nextAttributes === 'function'\n\t\t\t\t\t? nextAttributes( attributes )\n\t\t\t\t\t: nextAttributes;\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\tfunction switchToDefaultOrRemove() {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\tconst defaultBlockName = getDefaultBlockName();\n\t\t\t\tconst defaultBlockType = getBlockType( defaultBlockName );\n\t\t\t\tif ( getBlockName( clientId ) !== defaultBlockName ) {\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tblock,\n\t\t\t\t\t\tdefaultBlockName\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( clientId, replacement );\n\t\t\t\t\t}\n\t\t\t\t} else if ( isUnmodifiedDefaultBlock( block ) ) {\n\t\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t\tselectBlock( nextBlockClientId );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} else if ( defaultBlockType.merge ) {\n\t\t\t\t\tconst attributes = defaultBlockType.merge(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tblock.attributes\n\t\t\t\t\t);\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t[ clientId ],\n\t\t\t\t\t\t[ createBlock( defaultBlockName, attributes ) ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst wrapperBlockName = getBlockName( _clientId );\n\t\t\t\tconst wrapperBlockType = getBlockType( wrapperBlockName );\n\t\t\t\tconst isTextualWrapper = wrapperBlockType.category === 'text';\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else if ( isTextualWrapper ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\treplacement &&\n\t\t\t\t\t\t\t\treplacement.length &&\n\t\t\t\t\t\t\t\treplacement.every( ( block ) =>\n\t\t\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\t\t\ttargetRootClientId\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\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\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\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\tonRemove() {\n\t\t\tremoveBlock( ownProps.clientId );\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\n// This component is used by the BlockListBlockProvider component below. It will\n// add the props necessary for the `editor.BlockListBlock` filters.\nBlockListBlock = compose(\n\tapplyWithDispatch,\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n\n// This component provides all the information we need through a single store\n// subscription (useSelect mapping). Only the necessary props are passed down\n// to the BlockListBlock component, which is a filtered component, so these\n// props are public API. To avoid adding to the public API, we use a private\n// context to pass the rest of the information to the filtered BlockListBlock\n// component, and useBlockProps.\nfunction BlockListBlockProvider( props ) {\n\tconst { clientId, rootClientId } = props;\n\tconst selectedProps = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\tgetBlockMode,\n\t\t\t\tisSelectionEnabled,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tisSectionBlock: _isSectionBlock,\n\t\t\t\tgetBlockWithoutAttributes,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanMoveBlock,\n\n\t\t\t\tgetSettings,\n\t\t\t\tgetTemporarilyEditingAsBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlocksByName,\n\n\t\t\t\tgetBlockIndex,\n\t\t\t\tisBlockMultiSelected,\n\t\t\t\tisBlockSubtreeDisabled,\n\t\t\t\tisBlockHighlighted,\n\t\t\t\t__unstableIsFullySelected,\n\t\t\t\t__unstableSelectionHasUnmergeableBlock,\n\t\t\t\tisBlockBeingDragged,\n\t\t\t\tisDragging,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst blockWithoutAttributes =\n\t\t\t\tgetBlockWithoutAttributes( clientId );\n\n\t\t\t// This is a temporary fix.\n\t\t\t// This function should never be called when a block is not\n\t\t\t// present in the state. It happens now because the order in\n\t\t\t// withSelect rendering is not correct.\n\t\t\tif ( ! blockWithoutAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\thasBlockSupport: _hasBlockSupport,\n\t\t\t\tgetActiveBlockVariation,\n\t\t\t} = select( blocksStore );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst { name: blockName, isValid } = blockWithoutAttributes;\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tconst {\n\t\t\t\tsupportsLayout,\n\t\t\t\tisPreviewMode,\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes,\n\t\t\t} = getSettings();\n\n\t\t\tconst bindableAttributes =\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes?.[ blockName ];\n\n\t\t\tconst hasLightBlockWrapper = blockType?.apiVersion > 1;\n\t\t\tconst previewContext = {\n\t\t\t\tisPreviewMode,\n\t\t\t\tblockWithoutAttributes,\n\t\t\t\tname: blockName,\n\t\t\t\tattributes,\n\t\t\t\tisValid,\n\t\t\t\tthemeSupportsLayout: supportsLayout,\n\t\t\t\tindex: getBlockIndex( clientId ),\n\t\t\t\tisReusable: isReusableBlock( blockType ),\n\t\t\t\tclassName: hasLightBlockWrapper\n\t\t\t\t\t? attributes.className\n\t\t\t\t\t: undefined,\n\t\t\t\tdefaultClassName: hasLightBlockWrapper\n\t\t\t\t\t? getBlockDefaultClassName( blockName )\n\t\t\t\t\t: undefined,\n\t\t\t\tblockTitle: blockType?.title,\n\t\t\t\tisBlockHidden: attributes?.metadata?.blockVisibility === false,\n\t\t\t};\n\n\t\t\t// When in preview mode, we can avoid a lot of selection and\n\t\t\t// editing related selectors.\n\t\t\tif ( isPreviewMode ) {\n\t\t\t\treturn previewContext;\n\t\t\t}\n\n\t\t\tconst { isBlockHidden: _isBlockHidden } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\tconst _isSelected = isBlockSelected( clientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId );\n\t\t\tconst canMove = canMoveBlock( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst isMultiSelected = isBlockMultiSelected( clientId );\n\t\t\tconst checkDeep = true;\n\t\t\tconst isAncestorOfSelectedBlock = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\tcheckDeep\n\t\t\t);\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\n\t\t\tconst multiple = hasBlockSupport( blockName, 'multiple', true );\n\n\t\t\t// For block types with `multiple` support, there is no \"original\n\t\t\t// block\" to be found in the content, as the block itself is valid.\n\t\t\tconst blocksWithSameName = multiple\n\t\t\t\t? []\n\t\t\t\t: getBlocksByName( blockName );\n\t\t\tconst isInvalid =\n\t\t\t\tblocksWithSameName.length &&\n\t\t\t\tblocksWithSameName[ 0 ] !== clientId;\n\n\t\t\treturn {\n\t\t\t\t...previewContext,\n\t\t\t\tmode: getBlockMode( clientId ),\n\t\t\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\t\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\t\t\tisSectionBlock: _isSectionBlock( clientId ),\n\t\t\t\tcanRemove,\n\t\t\t\tcanMove,\n\t\t\t\tisSelected: _isSelected,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\tgetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t\tblockEditingMode,\n\t\t\t\tmayDisplayControls:\n\t\t\t\t\t_isSelected ||\n\t\t\t\t\t( isFirstMultiSelectedBlock( clientId ) &&\n\t\t\t\t\t\tgetMultiSelectedBlockClientIds().every(\n\t\t\t\t\t\t\t( id ) => getBlockName( id ) === blockName\n\t\t\t\t\t\t) ),\n\t\t\t\tmayDisplayParentControls:\n\t\t\t\t\t_hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) && hasSelectedInnerBlock( clientId ),\n\t\t\t\tblockApiVersion: blockType?.apiVersion || 1,\n\t\t\t\tblockTitle: match?.title || blockType?.title,\n\t\t\t\tisSubtreeDisabled:\n\t\t\t\t\tblockEditingMode === 'disabled' &&\n\t\t\t\t\tisBlockSubtreeDisabled( clientId ),\n\t\t\t\thasOverlay:\n\t\t\t\t\t__unstableHasActiveBlockOverlayActive( clientId ) &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tinitialPosition: _isSelected\n\t\t\t\t\t? getSelectedBlocksInitialCaretPosition()\n\t\t\t\t\t: undefined,\n\t\t\t\tisHighlighted: isBlockHighlighted( clientId ),\n\t\t\t\tisMultiSelected,\n\t\t\t\tisPartiallySelected:\n\t\t\t\t\tisMultiSelected &&\n\t\t\t\t\t! __unstableIsFullySelected() &&\n\t\t\t\t\t! __unstableSelectionHasUnmergeableBlock(),\n\t\t\t\tisDragging: isBlockBeingDragged( clientId ),\n\t\t\t\thasChildSelected: isAncestorOfSelectedBlock,\n\t\t\t\tisEditingDisabled: blockEditingMode === 'disabled',\n\t\t\t\thasEditableOutline:\n\t\t\t\t\tblockEditingMode !== 'disabled' &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) === 'disabled',\n\t\t\t\toriginalBlockClientId: isInvalid\n\t\t\t\t\t? blocksWithSameName[ 0 ]\n\t\t\t\t\t: false,\n\t\t\t\tisBlockHidden: _isBlockHidden( clientId ),\n\t\t\t\tbindableAttributes,\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\n\tconst {\n\t\tisPreviewMode,\n\t\t// Fill values that end up as a public API and may not be defined in\n\t\t// preview mode.\n\t\tmode = 'visual',\n\t\tisSelectionEnabled = false,\n\t\tisLocked = false,\n\t\tcanRemove = false,\n\t\tcanMove = false,\n\t\tblockWithoutAttributes,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected = false,\n\t\tthemeSupportsLayout,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tblockEditingMode,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tindex,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisSectionBlock,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tclassName,\n\t\tdefaultClassName,\n\t\toriginalBlockClientId,\n\t\tisBlockHidden,\n\t\tbindableAttributes,\n\t} = selectedProps;\n\n\t// Users of the editor.BlockListBlock filter used to be able to\n\t// access the block prop.\n\t// Ideally these blocks would rely on the clientId prop only.\n\t// This is kept for backward compatibility reasons.\n\tconst block = useMemo(\n\t\t() => ( { ...blockWithoutAttributes, attributes } ),\n\t\t[ blockWithoutAttributes, attributes ]\n\t);\n\n\t// Block is sometimes not mounted at the right time, causing it be\n\t// undefined see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tif ( ! selectedProps ) {\n\t\treturn null;\n\t}\n\n\tconst privateContext = {\n\t\tisPreviewMode,\n\t\tclientId,\n\t\tclassName,\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tblockEditingMode,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisSectionBlock,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tdefaultClassName,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\toriginalBlockClientId,\n\t\tthemeSupportsLayout,\n\t\tcanMove,\n\t\tisBlockHidden,\n\t\tbindableAttributes,\n\t};\n\n\tif (\n\t\tisBlockHidden &&\n\t\t! isSelected &&\n\t\t! isMultiSelected &&\n\t\t! hasChildSelected\n\t) {\n\t\treturn null;\n\t}\n\n\t// Here we separate between the props passed to BlockListBlock and any other\n\t// information we selected for internal use. BlockListBlock is a filtered\n\t// component and thus ALL the props are PUBLIC API.\n\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider value={ privateContext }>\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t// WARNING: all the following props are public API (through the\n\t\t\t\t// editor.BlockListBlock filter) and normally nothing new should\n\t\t\t\t// be added to it.\n\t\t\t\t{ ...{\n\t\t\t\t\tmode,\n\t\t\t\t\tisSelectionEnabled,\n\t\t\t\t\tisLocked,\n\t\t\t\t\tcanRemove,\n\t\t\t\t\tcanMove,\n\t\t\t\t\t// Users of the editor.BlockListBlock filter used to be able\n\t\t\t\t\t// to access the block prop. Ideally these blocks would rely\n\t\t\t\t\t// on the clientId prop only. This is kept for backward\n\t\t\t\t\t// compatibility reasons.\n\t\t\t\t\tblock,\n\t\t\t\t\tname,\n\t\t\t\t\tattributes,\n\t\t\t\t\tisValid,\n\t\t\t\t\tisSelected,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nexport default memo( BlockListBlockProvider );\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { memo, RawHTML, useContext, useMemo } from '@wordpress/element';\nimport {\n\tgetBlockType,\n\tgetSaveContent,\n\tisUnmodifiedDefaultBlock,\n\tserializeRawBlock,\n\tswitchToBlockType,\n\tgetDefaultBlockName,\n\tisUnmodifiedBlock,\n\tisReusableBlock,\n\tgetBlockDefaultClassName,\n\thasBlockSupport,\n\tcreateBlock,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport { withFilters } from '@wordpress/components';\nimport { withDispatch, useSelect } from '@wordpress/data';\nimport { compose } from '@wordpress/compose';\nimport { safeHTML } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport BlockEdit from '../block-edit';\nimport BlockInvalidWarning from './block-invalid-warning';\nimport BlockCrashWarning from './block-crash-warning';\nimport BlockCrashBoundary from './block-crash-boundary';\nimport BlockHtml from './block-html';\nimport { useBlockProps } from './use-block-props';\nimport { store as blockEditorStore } from '../../store';\nimport { useLayout } from './layout';\nimport { PrivateBlockContext } from './private-block-context';\n\nimport { unlock } from '../../lock-unlock';\n\n/**\n * Merges wrapper props with special handling for classNames and styles.\n *\n * @param {Object} propsA\n * @param {Object} propsB\n *\n * @return {Object} Merged props.\n */\nfunction mergeWrapperProps( propsA, propsB ) {\n\tconst newProps = {\n\t\t...propsA,\n\t\t...propsB,\n\t};\n\n\t// May be set to undefined, so check if the property is set!\n\tif (\n\t\tpropsA?.hasOwnProperty( 'className' ) &&\n\t\tpropsB?.hasOwnProperty( 'className' )\n\t) {\n\t\tnewProps.className = clsx( propsA.className, propsB.className );\n\t}\n\n\tif (\n\t\tpropsA?.hasOwnProperty( 'style' ) &&\n\t\tpropsB?.hasOwnProperty( 'style' )\n\t) {\n\t\tnewProps.style = { ...propsA.style, ...propsB.style };\n\t}\n\n\treturn newProps;\n}\n\nfunction Block( { children, isHtml, ...props } ) {\n\treturn (\n\t\t<div { ...useBlockProps( props, { __unstableIsHtml: isHtml } ) }>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction BlockListBlock( {\n\tblock: { __unstableBlockSource },\n\tmode,\n\tisLocked,\n\tcanRemove,\n\tclientId,\n\tisSelected,\n\tisSelectionEnabled,\n\tclassName,\n\t__unstableLayoutClassNames: layoutClassNames,\n\tname,\n\tisValid,\n\tattributes,\n\twrapperProps,\n\tsetAttributes,\n\tonReplace,\n\tonRemove,\n\tonInsertBlocksAfter,\n\tonMerge,\n\ttoggleSelection,\n} ) {\n\tconst {\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tthemeSupportsLayout,\n\t\t...context\n\t} = useContext( PrivateBlockContext );\n\n\tconst parentLayout = useLayout() || {};\n\n\t// We wrap the BlockEdit component in a div that hides it when editing in\n\t// HTML mode. This allows us to render all of the ancillary pieces\n\t// (InspectorControls, etc.) which are inside `BlockEdit` but not\n\t// `BlockHTML`, even in HTML mode.\n\tlet blockEdit = (\n\t\t<BlockEdit\n\t\t\tname={ name }\n\t\t\tisSelected={ isSelected }\n\t\t\tattributes={ attributes }\n\t\t\tsetAttributes={ setAttributes }\n\t\t\tinsertBlocksAfter={ isLocked ? undefined : onInsertBlocksAfter }\n\t\t\tonReplace={ canRemove ? onReplace : undefined }\n\t\t\tonRemove={ canRemove ? onRemove : undefined }\n\t\t\tmergeBlocks={ canRemove ? onMerge : undefined }\n\t\t\tclientId={ clientId }\n\t\t\tisSelectionEnabled={ isSelectionEnabled }\n\t\t\ttoggleSelection={ toggleSelection }\n\t\t\t__unstableLayoutClassNames={ layoutClassNames }\n\t\t\t__unstableParentLayout={\n\t\t\t\tObject.keys( parentLayout ).length ? parentLayout : undefined\n\t\t\t}\n\t\t\tmayDisplayControls={ mayDisplayControls }\n\t\t\tmayDisplayParentControls={ mayDisplayParentControls }\n\t\t\tblockEditingMode={ context.blockEditingMode }\n\t\t\tisPreviewMode={ context.isPreviewMode }\n\t\t/>\n\t);\n\n\tconst blockType = getBlockType( name );\n\n\t// Determine whether the block has props to apply to the wrapper.\n\tif ( blockType?.getEditWrapperProps ) {\n\t\twrapperProps = mergeWrapperProps(\n\t\t\twrapperProps,\n\t\t\tblockType.getEditWrapperProps( attributes )\n\t\t);\n\t}\n\n\tconst isAligned =\n\t\twrapperProps &&\n\t\t!! wrapperProps[ 'data-align' ] &&\n\t\t! themeSupportsLayout;\n\n\t// Support for sticky position in classic themes with alignment wrappers.\n\n\tconst isSticky = className?.includes( 'is-position-sticky' );\n\n\t// For aligned blocks, provide a wrapper element so the block can be\n\t// positioned relative to the block column.\n\t// This is only kept for classic themes that don't support layout\n\t// Historically we used to rely on extra divs and data-align to\n\t// provide the alignments styles in the editor.\n\t// Due to the differences between frontend and backend, we migrated\n\t// to the layout feature, and we're now aligning the markup of frontend\n\t// and backend.\n\tif ( isAligned ) {\n\t\tblockEdit = (\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'wp-block', isSticky && className ) }\n\t\t\t\tdata-align={ wrapperProps[ 'data-align' ] }\n\t\t\t>\n\t\t\t\t{ blockEdit }\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet block;\n\n\tif ( ! isValid ) {\n\t\tconst saveContent = __unstableBlockSource\n\t\t\t? serializeRawBlock( __unstableBlockSource )\n\t\t\t: getSaveContent( blockType, attributes );\n\n\t\tblock = (\n\t\t\t<Block className=\"has-warning\">\n\t\t\t\t<BlockInvalidWarning clientId={ clientId } />\n\t\t\t\t<RawHTML>{ safeHTML( saveContent ) }</RawHTML>\n\t\t\t</Block>\n\t\t);\n\t} else if ( mode === 'html' ) {\n\t\t// Render blockEdit so the inspector controls don't disappear.\n\t\t// See #8969.\n\t\tblock = (\n\t\t\t<>\n\t\t\t\t<div style={ { display: 'none' } }>{ blockEdit }</div>\n\t\t\t\t<Block isHtml>\n\t\t\t\t\t<BlockHtml clientId={ clientId } />\n\t\t\t\t</Block>\n\t\t\t</>\n\t\t);\n\t} else if ( blockType?.apiVersion > 1 ) {\n\t\tblock = blockEdit;\n\t} else {\n\t\tblock = <Block>{ blockEdit }</Block>;\n\t}\n\n\tconst { 'data-align': dataAlign, ...restWrapperProps } = wrapperProps ?? {};\n\tconst updatedWrapperProps = {\n\t\t...restWrapperProps,\n\t\tclassName: clsx(\n\t\t\trestWrapperProps.className,\n\t\t\tdataAlign && themeSupportsLayout && `align${ dataAlign }`,\n\t\t\t! ( dataAlign && isSticky ) && className\n\t\t),\n\t};\n\n\t// We set a new context with the adjusted and filtered wrapperProps (through\n\t// `editor.BlockListBlock`), which the `BlockListBlockProvider` did not have\n\t// access to.\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider\n\t\t\tvalue={ {\n\t\t\t\twrapperProps: updatedWrapperProps,\n\t\t\t\tisAligned,\n\t\t\t\t...context,\n\t\t\t} }\n\t\t>\n\t\t\t<BlockCrashBoundary\n\t\t\t\tfallback={\n\t\t\t\t\t<Block className=\"has-warning\">\n\t\t\t\t\t\t<BlockCrashWarning />\n\t\t\t\t\t</Block>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ block }\n\t\t\t</BlockCrashBoundary>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nconst applyWithDispatch = withDispatch( ( dispatch, ownProps, registry ) => {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tinsertBlocks,\n\t\tmergeBlocks,\n\t\treplaceBlocks,\n\t\ttoggleSelection,\n\t\t__unstableMarkLastChangeAsPersistent,\n\t\tmoveBlocksToPosition,\n\t\tremoveBlock,\n\t\tselectBlock,\n\t} = dispatch( blockEditorStore );\n\n\t// Do not add new properties here, use `useDispatch` instead to avoid\n\t// leaking new props to the public API (editor.BlockListBlock filter).\n\treturn {\n\t\tsetAttributes( nextAttributes ) {\n\t\t\tconst { getMultiSelectedBlockClientIds } =\n\t\t\t\tregistry.select( blockEditorStore );\n\t\t\tconst multiSelectedBlockClientIds =\n\t\t\t\tgetMultiSelectedBlockClientIds();\n\t\t\tconst { clientId, attributes } = ownProps;\n\t\t\tconst clientIds = multiSelectedBlockClientIds.length\n\t\t\t\t? multiSelectedBlockClientIds\n\t\t\t\t: [ clientId ];\n\t\t\tconst newAttributes =\n\t\t\t\ttypeof nextAttributes === 'function'\n\t\t\t\t\t? nextAttributes( attributes )\n\t\t\t\t\t: nextAttributes;\n\n\t\t\tupdateBlockAttributes( clientIds, newAttributes );\n\t\t},\n\t\tonInsertBlocks( blocks, index ) {\n\t\t\tconst { rootClientId } = ownProps;\n\t\t\tinsertBlocks( blocks, index, rootClientId );\n\t\t},\n\t\tonInsertBlocksAfter( blocks ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst { getBlockIndex } = registry.select( blockEditorStore );\n\t\t\tconst index = getBlockIndex( clientId );\n\t\t\tinsertBlocks( blocks, index + 1, rootClientId );\n\t\t},\n\t\tonMerge( forward ) {\n\t\t\tconst { clientId, rootClientId } = ownProps;\n\t\t\tconst {\n\t\t\t\tgetPreviousBlockClientId,\n\t\t\t\tgetNextBlockClientId,\n\t\t\t\tgetBlock,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tgetBlockName,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = registry.select( blockEditorStore );\n\n\t\t\tfunction switchToDefaultOrRemove() {\n\t\t\t\tconst block = getBlock( clientId );\n\t\t\t\tconst defaultBlockName = getDefaultBlockName();\n\t\t\t\tconst defaultBlockType = getBlockType( defaultBlockName );\n\t\t\t\tif ( getBlockName( clientId ) !== defaultBlockName ) {\n\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\tblock,\n\t\t\t\t\t\tdefaultBlockName\n\t\t\t\t\t);\n\t\t\t\t\tif ( replacement && replacement.length ) {\n\t\t\t\t\t\treplaceBlocks( clientId, replacement );\n\t\t\t\t\t}\n\t\t\t\t} else if ( isUnmodifiedDefaultBlock( block ) ) {\n\t\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\t\t\t\t\tif ( nextBlockClientId ) {\n\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\tremoveBlock( clientId );\n\t\t\t\t\t\t\tselectBlock( nextBlockClientId );\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} else if ( defaultBlockType.merge ) {\n\t\t\t\t\tconst attributes = defaultBlockType.merge(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\tblock.attributes\n\t\t\t\t\t);\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\t[ clientId ],\n\t\t\t\t\t\t[ createBlock( defaultBlockName, attributes ) ]\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Moves the block with clientId up one level. If the block type\n\t\t\t * cannot be inserted at the new location, it will be attempted to\n\t\t\t * convert to the default block type.\n\t\t\t *\n\t\t\t * @param {string} _clientId The block to move.\n\t\t\t * @param {boolean} changeSelection Whether to change the selection\n\t\t\t * to the moved block.\n\t\t\t */\n\t\t\tfunction moveFirstItemUp( _clientId, changeSelection = true ) {\n\t\t\t\tconst wrapperBlockName = getBlockName( _clientId );\n\t\t\t\tconst wrapperBlockType = getBlockType( wrapperBlockName );\n\t\t\t\tconst isTextualWrapper = wrapperBlockType.category === 'text';\n\t\t\t\tconst targetRootClientId = getBlockRootClientId( _clientId );\n\t\t\t\tconst blockOrder = getBlockOrder( _clientId );\n\t\t\t\tconst [ firstClientId ] = blockOrder;\n\n\t\t\t\tif (\n\t\t\t\t\tblockOrder.length === 1 &&\n\t\t\t\t\tisUnmodifiedBlock( getBlock( firstClientId ) )\n\t\t\t\t) {\n\t\t\t\t\tremoveBlock( _clientId );\n\t\t\t\t} else if ( isTextualWrapper ) {\n\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\tgetBlockName( firstClientId ),\n\t\t\t\t\t\t\t\ttargetRootClientId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t[ firstClientId ],\n\t\t\t\t\t\t\t\t_clientId,\n\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\tgetBlockIndex( _clientId )\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst replacement = switchToBlockType(\n\t\t\t\t\t\t\t\tgetBlock( firstClientId ),\n\t\t\t\t\t\t\t\tgetDefaultBlockName()\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\treplacement &&\n\t\t\t\t\t\t\t\treplacement.length &&\n\t\t\t\t\t\t\t\treplacement.every( ( block ) =>\n\t\t\t\t\t\t\t\t\tcanInsertBlockType(\n\t\t\t\t\t\t\t\t\t\tblock.name,\n\t\t\t\t\t\t\t\t\t\ttargetRootClientId\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\tinsertBlocks(\n\t\t\t\t\t\t\t\t\treplacement,\n\t\t\t\t\t\t\t\t\tgetBlockIndex( _clientId ),\n\t\t\t\t\t\t\t\t\ttargetRootClientId,\n\t\t\t\t\t\t\t\t\tchangeSelection\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( firstClientId, false );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t! getBlockOrder( _clientId ).length &&\n\t\t\t\t\t\t\tisUnmodifiedBlock( getBlock( _clientId ) )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveBlock( _clientId, false );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// For `Delete` or forward merge, we should do the exact same thing\n\t\t\t// as `Backspace`, but from the other block.\n\t\t\tif ( forward ) {\n\t\t\t\tif ( rootClientId ) {\n\t\t\t\t\tconst nextRootClientId =\n\t\t\t\t\t\tgetNextBlockClientId( rootClientId );\n\n\t\t\t\t\tif ( nextRootClientId ) {\n\t\t\t\t\t\t// If there is a block that follows with the same parent\n\t\t\t\t\t\t// block name and the same attributes, merge the inner\n\t\t\t\t\t\t// blocks.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( nextRootClientId )\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\t\tgetBlockAttributes( nextRootClientId );\n\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\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\tregistry.batch( () => {\n\t\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\t\tgetBlockOrder( nextRootClientId ),\n\t\t\t\t\t\t\t\t\t\tnextRootClientId,\n\t\t\t\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tremoveBlock( nextRootClientId, false );\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmergeBlocks( rootClientId, nextRootClientId );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextBlockClientId = getNextBlockClientId( clientId );\n\n\t\t\t\tif ( ! nextBlockClientId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif ( getBlockOrder( nextBlockClientId ).length ) {\n\t\t\t\t\tmoveFirstItemUp( nextBlockClientId, false );\n\t\t\t\t} else {\n\t\t\t\t\tmergeBlocks( clientId, nextBlockClientId );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst previousBlockClientId =\n\t\t\t\t\tgetPreviousBlockClientId( clientId );\n\n\t\t\t\tif ( previousBlockClientId ) {\n\t\t\t\t\tmergeBlocks( previousBlockClientId, clientId );\n\t\t\t\t} else if ( rootClientId ) {\n\t\t\t\t\tconst previousRootClientId =\n\t\t\t\t\t\tgetPreviousBlockClientId( rootClientId );\n\n\t\t\t\t\t// If there is a preceding block with the same parent block\n\t\t\t\t\t// name and the same attributes, merge the inner blocks.\n\t\t\t\t\tif (\n\t\t\t\t\t\tpreviousRootClientId &&\n\t\t\t\t\t\tgetBlockName( rootClientId ) ===\n\t\t\t\t\t\t\tgetBlockName( previousRootClientId )\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst rootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( rootClientId );\n\t\t\t\t\t\tconst previousRootAttributes =\n\t\t\t\t\t\t\tgetBlockAttributes( previousRootClientId );\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tObject.keys( rootAttributes ).every(\n\t\t\t\t\t\t\t\t( key ) =>\n\t\t\t\t\t\t\t\t\trootAttributes[ key ] ===\n\t\t\t\t\t\t\t\t\tpreviousRootAttributes[ key ]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tregistry.batch( () => {\n\t\t\t\t\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t\t\t\t\tgetBlockOrder( rootClientId ),\n\t\t\t\t\t\t\t\t\trootClientId,\n\t\t\t\t\t\t\t\t\tpreviousRootClientId\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tremoveBlock( rootClientId, false );\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmoveFirstItemUp( rootClientId );\n\t\t\t\t} else {\n\t\t\t\t\tswitchToDefaultOrRemove();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tonReplace( blocks, indexToSelect, initialPosition ) {\n\t\t\tif (\n\t\t\t\tblocks.length &&\n\t\t\t\t! isUnmodifiedDefaultBlock( blocks[ blocks.length - 1 ] )\n\t\t\t) {\n\t\t\t\t__unstableMarkLastChangeAsPersistent();\n\t\t\t}\n\t\t\t//Unsynced patterns are nested in an array so we need to flatten them.\n\t\t\tconst replacementBlocks =\n\t\t\t\tblocks?.length === 1 && Array.isArray( blocks[ 0 ] )\n\t\t\t\t\t? blocks[ 0 ]\n\t\t\t\t\t: blocks;\n\t\t\treplaceBlocks(\n\t\t\t\t[ ownProps.clientId ],\n\t\t\t\treplacementBlocks,\n\t\t\t\tindexToSelect,\n\t\t\t\tinitialPosition\n\t\t\t);\n\t\t},\n\t\tonRemove() {\n\t\t\tremoveBlock( ownProps.clientId );\n\t\t},\n\t\ttoggleSelection( selectionEnabled ) {\n\t\t\ttoggleSelection( selectionEnabled );\n\t\t},\n\t};\n} );\n\n// This component is used by the BlockListBlockProvider component below. It will\n// add the props necessary for the `editor.BlockListBlock` filters.\nBlockListBlock = compose(\n\tapplyWithDispatch,\n\twithFilters( 'editor.BlockListBlock' )\n)( BlockListBlock );\n\n// This component provides all the information we need through a single store\n// subscription (useSelect mapping). Only the necessary props are passed down\n// to the BlockListBlock component, which is a filtered component, so these\n// props are public API. To avoid adding to the public API, we use a private\n// context to pass the rest of the information to the filtered BlockListBlock\n// component, and useBlockProps.\nfunction BlockListBlockProvider( props ) {\n\tconst { clientId, rootClientId } = props;\n\tconst selectedProps = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tisBlockSelected,\n\t\t\t\tgetBlockMode,\n\t\t\t\tisSelectionEnabled,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tisSectionBlock: _isSectionBlock,\n\t\t\t\tgetBlockWithoutAttributes,\n\t\t\t\tgetBlockAttributes,\n\t\t\t\tcanRemoveBlock,\n\t\t\t\tcanMoveBlock,\n\n\t\t\t\tgetSettings,\n\t\t\t\tgetTemporarilyEditingAsBlocks,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisFirstMultiSelectedBlock,\n\t\t\t\tgetMultiSelectedBlockClientIds,\n\t\t\t\thasSelectedInnerBlock,\n\t\t\t\tgetBlocksByName,\n\n\t\t\t\tgetBlockIndex,\n\t\t\t\tisBlockMultiSelected,\n\t\t\t\tisBlockSubtreeDisabled,\n\t\t\t\tisBlockHighlighted,\n\t\t\t\t__unstableIsFullySelected,\n\t\t\t\t__unstableSelectionHasUnmergeableBlock,\n\t\t\t\tisBlockBeingDragged,\n\t\t\t\tisDragging,\n\t\t\t\t__unstableHasActiveBlockOverlayActive,\n\t\t\t\tgetSelectedBlocksInitialCaretPosition,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst blockWithoutAttributes =\n\t\t\t\tgetBlockWithoutAttributes( clientId );\n\n\t\t\t// This is a temporary fix.\n\t\t\t// This function should never be called when a block is not\n\t\t\t// present in the state. It happens now because the order in\n\t\t\t// withSelect rendering is not correct.\n\t\t\tif ( ! blockWithoutAttributes ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {\n\t\t\t\thasBlockSupport: _hasBlockSupport,\n\t\t\t\tgetActiveBlockVariation,\n\t\t\t} = select( blocksStore );\n\t\t\tconst attributes = getBlockAttributes( clientId );\n\t\t\tconst { name: blockName, isValid } = blockWithoutAttributes;\n\t\t\tconst blockType = getBlockType( blockName );\n\t\t\tconst {\n\t\t\t\tsupportsLayout,\n\t\t\t\tisPreviewMode,\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes,\n\t\t\t} = getSettings();\n\n\t\t\tconst bindableAttributes =\n\t\t\t\t__experimentalBlockBindingsSupportedAttributes?.[ blockName ];\n\n\t\t\tconst hasLightBlockWrapper = blockType?.apiVersion > 1;\n\t\t\tconst previewContext = {\n\t\t\t\tisPreviewMode,\n\t\t\t\tblockWithoutAttributes,\n\t\t\t\tname: blockName,\n\t\t\t\tattributes,\n\t\t\t\tisValid,\n\t\t\t\tthemeSupportsLayout: supportsLayout,\n\t\t\t\tindex: getBlockIndex( clientId ),\n\t\t\t\tisReusable: isReusableBlock( blockType ),\n\t\t\t\tclassName: hasLightBlockWrapper\n\t\t\t\t\t? attributes.className\n\t\t\t\t\t: undefined,\n\t\t\t\tdefaultClassName: hasLightBlockWrapper\n\t\t\t\t\t? getBlockDefaultClassName( blockName )\n\t\t\t\t\t: undefined,\n\t\t\t\tblockTitle: blockType?.title,\n\t\t\t\tisBlockHidden: attributes?.metadata?.blockVisibility === false,\n\t\t\t\tbindableAttributes,\n\t\t\t};\n\n\t\t\t// When in preview mode, we can avoid a lot of selection and\n\t\t\t// editing related selectors.\n\t\t\tif ( isPreviewMode ) {\n\t\t\t\treturn previewContext;\n\t\t\t}\n\n\t\t\tconst { isBlockHidden: _isBlockHidden } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\tconst _isSelected = isBlockSelected( clientId );\n\t\t\tconst canRemove = canRemoveBlock( clientId );\n\t\t\tconst canMove = canMoveBlock( clientId );\n\t\t\tconst match = getActiveBlockVariation( blockName, attributes );\n\t\t\tconst isMultiSelected = isBlockMultiSelected( clientId );\n\t\t\tconst checkDeep = true;\n\t\t\tconst isAncestorOfSelectedBlock = hasSelectedInnerBlock(\n\t\t\t\tclientId,\n\t\t\t\tcheckDeep\n\t\t\t);\n\t\t\tconst blockEditingMode = getBlockEditingMode( clientId );\n\n\t\t\tconst multiple = hasBlockSupport( blockName, 'multiple', true );\n\n\t\t\t// For block types with `multiple` support, there is no \"original\n\t\t\t// block\" to be found in the content, as the block itself is valid.\n\t\t\tconst blocksWithSameName = multiple\n\t\t\t\t? []\n\t\t\t\t: getBlocksByName( blockName );\n\t\t\tconst isInvalid =\n\t\t\t\tblocksWithSameName.length &&\n\t\t\t\tblocksWithSameName[ 0 ] !== clientId;\n\n\t\t\treturn {\n\t\t\t\t...previewContext,\n\t\t\t\tmode: getBlockMode( clientId ),\n\t\t\t\tisSelectionEnabled: isSelectionEnabled(),\n\t\t\t\tisLocked: !! getTemplateLock( rootClientId ),\n\t\t\t\tisSectionBlock: _isSectionBlock( clientId ),\n\t\t\t\tcanRemove,\n\t\t\t\tcanMove,\n\t\t\t\tisSelected: _isSelected,\n\t\t\t\tisTemporarilyEditingAsBlocks:\n\t\t\t\t\tgetTemporarilyEditingAsBlocks() === clientId,\n\t\t\t\tblockEditingMode,\n\t\t\t\tmayDisplayControls:\n\t\t\t\t\t_isSelected ||\n\t\t\t\t\t( isFirstMultiSelectedBlock( clientId ) &&\n\t\t\t\t\t\tgetMultiSelectedBlockClientIds().every(\n\t\t\t\t\t\t\t( id ) => getBlockName( id ) === blockName\n\t\t\t\t\t\t) ),\n\t\t\t\tmayDisplayParentControls:\n\t\t\t\t\t_hasBlockSupport(\n\t\t\t\t\t\tgetBlockName( clientId ),\n\t\t\t\t\t\t'__experimentalExposeControlsToChildren',\n\t\t\t\t\t\tfalse\n\t\t\t\t\t) && hasSelectedInnerBlock( clientId ),\n\t\t\t\tblockApiVersion: blockType?.apiVersion || 1,\n\t\t\t\tblockTitle: match?.title || blockType?.title,\n\t\t\t\tisSubtreeDisabled:\n\t\t\t\t\tblockEditingMode === 'disabled' &&\n\t\t\t\t\tisBlockSubtreeDisabled( clientId ),\n\t\t\t\thasOverlay:\n\t\t\t\t\t__unstableHasActiveBlockOverlayActive( clientId ) &&\n\t\t\t\t\t! isDragging(),\n\t\t\t\tinitialPosition: _isSelected\n\t\t\t\t\t? getSelectedBlocksInitialCaretPosition()\n\t\t\t\t\t: undefined,\n\t\t\t\tisHighlighted: isBlockHighlighted( clientId ),\n\t\t\t\tisMultiSelected,\n\t\t\t\tisPartiallySelected:\n\t\t\t\t\tisMultiSelected &&\n\t\t\t\t\t! __unstableIsFullySelected() &&\n\t\t\t\t\t! __unstableSelectionHasUnmergeableBlock(),\n\t\t\t\tisDragging: isBlockBeingDragged( clientId ),\n\t\t\t\thasChildSelected: isAncestorOfSelectedBlock,\n\t\t\t\tisEditingDisabled: blockEditingMode === 'disabled',\n\t\t\t\thasEditableOutline:\n\t\t\t\t\tblockEditingMode !== 'disabled' &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) === 'disabled',\n\t\t\t\toriginalBlockClientId: isInvalid\n\t\t\t\t\t? blocksWithSameName[ 0 ]\n\t\t\t\t\t: false,\n\t\t\t\tisBlockHidden: _isBlockHidden( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId, rootClientId ]\n\t);\n\n\tconst {\n\t\tisPreviewMode,\n\t\t// Fill values that end up as a public API and may not be defined in\n\t\t// preview mode.\n\t\tmode = 'visual',\n\t\tisSelectionEnabled = false,\n\t\tisLocked = false,\n\t\tcanRemove = false,\n\t\tcanMove = false,\n\t\tblockWithoutAttributes,\n\t\tname,\n\t\tattributes,\n\t\tisValid,\n\t\tisSelected = false,\n\t\tthemeSupportsLayout,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tblockEditingMode,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\tindex,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisSectionBlock,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tclassName,\n\t\tdefaultClassName,\n\t\toriginalBlockClientId,\n\t\tisBlockHidden,\n\t\tbindableAttributes,\n\t} = selectedProps;\n\n\t// Users of the editor.BlockListBlock filter used to be able to\n\t// access the block prop.\n\t// Ideally these blocks would rely on the clientId prop only.\n\t// This is kept for backward compatibility reasons.\n\tconst block = useMemo(\n\t\t() => ( { ...blockWithoutAttributes, attributes } ),\n\t\t[ blockWithoutAttributes, attributes ]\n\t);\n\n\t// Block is sometimes not mounted at the right time, causing it be\n\t// undefined see issue for more info\n\t// https://github.com/WordPress/gutenberg/issues/17013\n\tif ( ! selectedProps ) {\n\t\treturn null;\n\t}\n\n\tconst privateContext = {\n\t\tisPreviewMode,\n\t\tclientId,\n\t\tclassName,\n\t\tindex,\n\t\tmode,\n\t\tname,\n\t\tblockApiVersion,\n\t\tblockTitle,\n\t\tisSelected,\n\t\tisSubtreeDisabled,\n\t\thasOverlay,\n\t\tinitialPosition,\n\t\tblockEditingMode,\n\t\tisHighlighted,\n\t\tisMultiSelected,\n\t\tisPartiallySelected,\n\t\tisReusable,\n\t\tisDragging,\n\t\thasChildSelected,\n\t\tisSectionBlock,\n\t\tisEditingDisabled,\n\t\thasEditableOutline,\n\t\tisTemporarilyEditingAsBlocks,\n\t\tdefaultClassName,\n\t\tmayDisplayControls,\n\t\tmayDisplayParentControls,\n\t\toriginalBlockClientId,\n\t\tthemeSupportsLayout,\n\t\tcanMove,\n\t\tisBlockHidden,\n\t\tbindableAttributes,\n\t};\n\n\tif (\n\t\tisBlockHidden &&\n\t\t! isSelected &&\n\t\t! isMultiSelected &&\n\t\t! hasChildSelected\n\t) {\n\t\treturn null;\n\t}\n\n\t// Here we separate between the props passed to BlockListBlock and any other\n\t// information we selected for internal use. BlockListBlock is a filtered\n\t// component and thus ALL the props are PUBLIC API.\n\n\t// Note that the context value doesn't have to be memoized in this case\n\t// because when it changes, this component will be re-rendered anyway, and\n\t// none of the consumers (BlockListBlock and useBlockProps) are memoized or\n\t// \"pure\". This is different from the public BlockEditContext, where\n\t// consumers might be memoized or \"pure\".\n\treturn (\n\t\t<PrivateBlockContext.Provider value={ privateContext }>\n\t\t\t<BlockListBlock\n\t\t\t\t{ ...props }\n\t\t\t\t// WARNING: all the following props are public API (through the\n\t\t\t\t// editor.BlockListBlock filter) and normally nothing new should\n\t\t\t\t// be added to it.\n\t\t\t\t{ ...{\n\t\t\t\t\tmode,\n\t\t\t\t\tisSelectionEnabled,\n\t\t\t\t\tisLocked,\n\t\t\t\t\tcanRemove,\n\t\t\t\t\tcanMove,\n\t\t\t\t\t// Users of the editor.BlockListBlock filter used to be able\n\t\t\t\t\t// to access the block prop. Ideally these blocks would rely\n\t\t\t\t\t// on the clientId prop only. This is kept for backward\n\t\t\t\t\t// compatibility reasons.\n\t\t\t\t\tblock,\n\t\t\t\t\tname,\n\t\t\t\t\tattributes,\n\t\t\t\t\tisValid,\n\t\t\t\t\tisSelected,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PrivateBlockContext.Provider>\n\t);\n}\n\nexport default memo( BlockListBlockProvider );\n"],
5
+ "mappings": "AA6EE,SAuHC,UAvHD,KA8GC,YA9GD;AA1EF,OAAO,UAAU;AAKjB,SAAS,MAAM,SAAS,YAAY,eAAe;AACnD;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,mBAAmB;AAC5B,SAAS,cAAc,iBAAiB;AACxC,SAAS,eAAe;AACxB,SAAS,gBAAgB;AAKzB,OAAO,eAAe;AACtB,OAAO,yBAAyB;AAChC,OAAO,uBAAuB;AAC9B,OAAO,wBAAwB;AAC/B,OAAO,eAAe;AACtB,SAAS,qBAAqB;AAC9B,SAAS,SAAS,wBAAwB;AAC1C,SAAS,iBAAiB;AAC1B,SAAS,2BAA2B;AAEpC,SAAS,cAAc;AAUvB,SAAS,kBAAmB,QAAQ,QAAS;AAC5C,QAAM,WAAW;AAAA,IAChB,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AAGA,MACC,QAAQ,eAAgB,WAAY,KACpC,QAAQ,eAAgB,WAAY,GACnC;AACD,aAAS,YAAY,KAAM,OAAO,WAAW,OAAO,SAAU;AAAA,EAC/D;AAEA,MACC,QAAQ,eAAgB,OAAQ,KAChC,QAAQ,eAAgB,OAAQ,GAC/B;AACD,aAAS,QAAQ,EAAE,GAAG,OAAO,OAAO,GAAG,OAAO,MAAM;AAAA,EACrD;AAEA,SAAO;AACR;AAEA,SAAS,MAAO,EAAE,UAAU,QAAQ,GAAG,MAAM,GAAI;AAChD,SACC,oBAAC,SAAM,GAAG,cAAe,OAAO,EAAE,kBAAkB,OAAO,CAAE,GAC1D,UACH;AAEF;AAEA,SAAS,eAAgB;AAAA,EACxB,OAAO,EAAE,sBAAsB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,4BAA4B;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACJ,IAAI,WAAY,mBAAoB;AAEpC,QAAM,eAAe,UAAU,KAAK,CAAC;AAMrC,MAAI,YACH;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAoB,WAAW,SAAY;AAAA,MAC3C,WAAY,YAAY,YAAY;AAAA,MACpC,UAAW,YAAY,WAAW;AAAA,MAClC,aAAc,YAAY,UAAU;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA,4BAA6B;AAAA,MAC7B,wBACC,OAAO,KAAM,YAAa,EAAE,SAAS,eAAe;AAAA,MAErD;AAAA,MACA;AAAA,MACA,kBAAmB,QAAQ;AAAA,MAC3B,eAAgB,QAAQ;AAAA;AAAA,EACzB;AAGD,QAAM,YAAY,aAAc,IAAK;AAGrC,MAAK,WAAW,qBAAsB;AACrC,mBAAe;AAAA,MACd;AAAA,MACA,UAAU,oBAAqB,UAAW;AAAA,IAC3C;AAAA,EACD;AAEA,QAAM,YACL,gBACA,CAAC,CAAE,aAAc,YAAa,KAC9B,CAAE;AAIH,QAAM,WAAW,WAAW,SAAU,oBAAqB;AAU3D,MAAK,WAAY;AAChB,gBACC;AAAA,MAAC;AAAA;AAAA,QACA,WAAY,KAAM,YAAY,YAAY,SAAU;AAAA,QACpD,cAAa,aAAc,YAAa;AAAA,QAEtC;AAAA;AAAA,IACH;AAAA,EAEF;AAEA,MAAI;AAEJ,MAAK,CAAE,SAAU;AAChB,UAAM,cAAc,wBACjB,kBAAmB,qBAAsB,IACzC,eAAgB,WAAW,UAAW;AAEzC,YACC,qBAAC,SAAM,WAAU,eAChB;AAAA,0BAAC,uBAAoB,UAAsB;AAAA,MAC3C,oBAAC,WAAU,mBAAU,WAAY,GAAG;AAAA,OACrC;AAAA,EAEF,WAAY,SAAS,QAAS;AAG7B,YACC,iCACC;AAAA,0BAAC,SAAI,OAAQ,EAAE,SAAS,OAAO,GAAM,qBAAW;AAAA,MAChD,oBAAC,SAAM,QAAM,MACZ,8BAAC,aAAU,UAAsB,GAClC;AAAA,OACD;AAAA,EAEF,WAAY,WAAW,aAAa,GAAI;AACvC,YAAQ;AAAA,EACT,OAAO;AACN,YAAQ,oBAAC,SAAQ,qBAAW;AAAA,EAC7B;AAEA,QAAM,EAAE,cAAc,WAAW,GAAG,iBAAiB,IAAI,gBAAgB,CAAC;AAC1E,QAAM,sBAAsB;AAAA,IAC3B,GAAG;AAAA,IACH,WAAW;AAAA,MACV,iBAAiB;AAAA,MACjB,aAAa,uBAAuB,QAAS,SAAU;AAAA,MACvD,EAAI,aAAa,aAAc;AAAA,IAChC;AAAA,EACD;AAUA,SACC;AAAA,IAAC,oBAAoB;AAAA,IAApB;AAAA,MACA,OAAQ;AAAA,QACP,cAAc;AAAA,QACd;AAAA,QACA,GAAG;AAAA,MACJ;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACA,UACC,oBAAC,SAAM,WAAU,eAChB,8BAAC,qBAAkB,GACpB;AAAA,UAGC;AAAA;AAAA,MACH;AAAA;AAAA,EACD;AAEF;AAEA,MAAM,oBAAoB,aAAc,CAAE,UAAU,UAAU,aAAc;AAC3E,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI,SAAU,gBAAiB;AAI/B,SAAO;AAAA,IACN,cAAe,gBAAiB;AAC/B,YAAM,EAAE,+BAA+B,IACtC,SAAS,OAAQ,gBAAiB;AACnC,YAAM,8BACL,+BAA+B;AAChC,YAAM,EAAE,UAAU,WAAW,IAAI;AACjC,YAAM,YAAY,4BAA4B,SAC3C,8BACA,CAAE,QAAS;AACd,YAAM,gBACL,OAAO,mBAAmB,aACvB,eAAgB,UAAW,IAC3B;AAEJ,4BAAuB,WAAW,aAAc;AAAA,IACjD;AAAA,IACA,eAAgB,QAAQ,OAAQ;AAC/B,YAAM,EAAE,aAAa,IAAI;AACzB,mBAAc,QAAQ,OAAO,YAAa;AAAA,IAC3C;AAAA,IACA,oBAAqB,QAAS;AAC7B,YAAM,EAAE,UAAU,aAAa,IAAI;AACnC,YAAM,EAAE,cAAc,IAAI,SAAS,OAAQ,gBAAiB;AAC5D,YAAM,QAAQ,cAAe,QAAS;AACtC,mBAAc,QAAQ,QAAQ,GAAG,YAAa;AAAA,IAC/C;AAAA,IACA,QAAS,SAAU;AAClB,YAAM,EAAE,UAAU,aAAa,IAAI;AACnC,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,SAAS,OAAQ,gBAAiB;AAEtC,eAAS,0BAA0B;AAClC,cAAM,QAAQ,SAAU,QAAS;AACjC,cAAM,mBAAmB,oBAAoB;AAC7C,cAAM,mBAAmB,aAAc,gBAAiB;AACxD,YAAK,aAAc,QAAS,MAAM,kBAAmB;AACpD,gBAAM,cAAc;AAAA,YACnB;AAAA,YACA;AAAA,UACD;AACA,cAAK,eAAe,YAAY,QAAS;AACxC,0BAAe,UAAU,WAAY;AAAA,UACtC;AAAA,QACD,WAAY,yBAA0B,KAAM,GAAI;AAC/C,gBAAM,oBAAoB,qBAAsB,QAAS;AACzD,cAAK,mBAAoB;AACxB,qBAAS,MAAO,MAAM;AACrB,0BAAa,QAAS;AACtB,0BAAa,iBAAkB;AAAA,YAChC,CAAE;AAAA,UACH;AAAA,QACD,WAAY,iBAAiB,OAAQ;AACpC,gBAAM,aAAa,iBAAiB;AAAA,YACnC,CAAC;AAAA,YACD,MAAM;AAAA,UACP;AACA;AAAA,YACC,CAAE,QAAS;AAAA,YACX,CAAE,YAAa,kBAAkB,UAAW,CAAE;AAAA,UAC/C;AAAA,QACD;AAAA,MACD;AAWA,eAAS,gBAAiB,WAAW,kBAAkB,MAAO;AAC7D,cAAM,mBAAmB,aAAc,SAAU;AACjD,cAAM,mBAAmB,aAAc,gBAAiB;AACxD,cAAM,mBAAmB,iBAAiB,aAAa;AACvD,cAAM,qBAAqB,qBAAsB,SAAU;AAC3D,cAAM,aAAa,cAAe,SAAU;AAC5C,cAAM,CAAE,aAAc,IAAI;AAE1B,YACC,WAAW,WAAW,KACtB,kBAAmB,SAAU,aAAc,CAAE,GAC5C;AACD,sBAAa,SAAU;AAAA,QACxB,WAAY,kBAAmB;AAC9B,mBAAS,MAAO,MAAM;AACrB,gBACC;AAAA,cACC,aAAc,aAAc;AAAA,cAC5B;AAAA,YACD,GACC;AACD;AAAA,gBACC,CAAE,aAAc;AAAA,gBAChB;AAAA,gBACA;AAAA,gBACA,cAAe,SAAU;AAAA,cAC1B;AAAA,YACD,OAAO;AACN,oBAAM,cAAc;AAAA,gBACnB,SAAU,aAAc;AAAA,gBACxB,oBAAoB;AAAA,cACrB;AAEA,kBACC,eACA,YAAY,UACZ,YAAY;AAAA,gBAAO,CAAE,UACpB;AAAA,kBACC,MAAM;AAAA,kBACN;AAAA,gBACD;AAAA,cACD,GACC;AACD;AAAA,kBACC;AAAA,kBACA,cAAe,SAAU;AAAA,kBACzB;AAAA,kBACA;AAAA,gBACD;AACA,4BAAa,eAAe,KAAM;AAAA,cACnC,OAAO;AACN,wCAAwB;AAAA,cACzB;AAAA,YACD;AAEA,gBACC,CAAE,cAAe,SAAU,EAAE,UAC7B,kBAAmB,SAAU,SAAU,CAAE,GACxC;AACD,0BAAa,WAAW,KAAM;AAAA,YAC/B;AAAA,UACD,CAAE;AAAA,QACH,OAAO;AACN,kCAAwB;AAAA,QACzB;AAAA,MACD;AAIA,UAAK,SAAU;AACd,YAAK,cAAe;AACnB,gBAAM,mBACL,qBAAsB,YAAa;AAEpC,cAAK,kBAAmB;AAIvB,gBACC,aAAc,YAAa,MAC3B,aAAc,gBAAiB,GAC9B;AACD,oBAAM,iBACL,mBAAoB,YAAa;AAClC,oBAAM,yBACL,mBAAoB,gBAAiB;AAEtC,kBACC,OAAO,KAAM,cAAe,EAAE;AAAA,gBAC7B,CAAE,QACD,eAAgB,GAAI,MACpB,uBAAwB,GAAI;AAAA,cAC9B,GACC;AACD,yBAAS,MAAO,MAAM;AACrB;AAAA,oBACC,cAAe,gBAAiB;AAAA,oBAChC;AAAA,oBACA;AAAA,kBACD;AACA,8BAAa,kBAAkB,KAAM;AAAA,gBACtC,CAAE;AACF;AAAA,cACD;AAAA,YACD,OAAO;AACN,0BAAa,cAAc,gBAAiB;AAC5C;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,cAAM,oBAAoB,qBAAsB,QAAS;AAEzD,YAAK,CAAE,mBAAoB;AAC1B;AAAA,QACD;AAEA,YAAK,cAAe,iBAAkB,EAAE,QAAS;AAChD,0BAAiB,mBAAmB,KAAM;AAAA,QAC3C,OAAO;AACN,sBAAa,UAAU,iBAAkB;AAAA,QAC1C;AAAA,MACD,OAAO;AACN,cAAM,wBACL,yBAA0B,QAAS;AAEpC,YAAK,uBAAwB;AAC5B,sBAAa,uBAAuB,QAAS;AAAA,QAC9C,WAAY,cAAe;AAC1B,gBAAM,uBACL,yBAA0B,YAAa;AAIxC,cACC,wBACA,aAAc,YAAa,MAC1B,aAAc,oBAAqB,GACnC;AACD,kBAAM,iBACL,mBAAoB,YAAa;AAClC,kBAAM,yBACL,mBAAoB,oBAAqB;AAE1C,gBACC,OAAO,KAAM,cAAe,EAAE;AAAA,cAC7B,CAAE,QACD,eAAgB,GAAI,MACpB,uBAAwB,GAAI;AAAA,YAC9B,GACC;AACD,uBAAS,MAAO,MAAM;AACrB;AAAA,kBACC,cAAe,YAAa;AAAA,kBAC5B;AAAA,kBACA;AAAA,gBACD;AACA,4BAAa,cAAc,KAAM;AAAA,cAClC,CAAE;AACF;AAAA,YACD;AAAA,UACD;AAEA,0BAAiB,YAAa;AAAA,QAC/B,OAAO;AACN,kCAAwB;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAAA,IACA,UAAW,QAAQ,eAAe,iBAAkB;AACnD,UACC,OAAO,UACP,CAAE,yBAA0B,OAAQ,OAAO,SAAS,CAAE,CAAE,GACvD;AACD,6CAAqC;AAAA,MACtC;AAEA,YAAM,oBACL,QAAQ,WAAW,KAAK,MAAM,QAAS,OAAQ,CAAE,CAAE,IAChD,OAAQ,CAAE,IACV;AACJ;AAAA,QACC,CAAE,SAAS,QAAS;AAAA,QACpB;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,IACA,WAAW;AACV,kBAAa,SAAS,QAAS;AAAA,IAChC;AAAA,IACA,gBAAiB,kBAAmB;AACnC,sBAAiB,gBAAiB;AAAA,IACnC;AAAA,EACD;AACD,CAAE;AAIF,iBAAiB;AAAA,EAChB;AAAA,EACA,YAAa,uBAAwB;AACtC,EAAG,cAAe;AAQlB,SAAS,uBAAwB,OAAQ;AACxC,QAAM,EAAE,UAAU,aAAa,IAAI;AACnC,QAAM,gBAAgB;AAAA,IACrB,CAAE,WAAY;AACb,YAAM;AAAA,QACL;AAAA,QACA;AAAA,QACA,oBAAAA;AAAA,QACA;AAAA,QACA,gBAAgB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAAC;AAAA,QACA;AAAA,QACA;AAAA,MACD,IAAI,OAAQ,OAAQ,gBAAiB,CAAE;AACvC,YAAMC,0BACL,0BAA2B,QAAS;AAMrC,UAAK,CAAEA,yBAAyB;AAC/B;AAAA,MACD;AAEA,YAAM;AAAA,QACL,iBAAiB;AAAA,QACjB;AAAA,MACD,IAAI,OAAQ,WAAY;AACxB,YAAMC,cAAa,mBAAoB,QAAS;AAChD,YAAM,EAAE,MAAM,WAAW,SAAAC,SAAQ,IAAIF;AACrC,YAAM,YAAY,aAAc,SAAU;AAC1C,YAAM;AAAA,QACL;AAAA,QACA,eAAAG;AAAA,QACA;AAAA,MACD,IAAI,YAAY;AAEhB,YAAMC,sBACL,iDAAkD,SAAU;AAE7D,YAAM,uBAAuB,WAAW,aAAa;AACrD,YAAM,iBAAiB;AAAA,QACtB,eAAAD;AAAA,QACA,wBAAAH;AAAA,QACA,MAAM;AAAA,QACN,YAAAC;AAAA,QACA,SAAAC;AAAA,QACA,qBAAqB;AAAA,QACrB,OAAO,cAAe,QAAS;AAAA,QAC/B,YAAY,gBAAiB,SAAU;AAAA,QACvC,WAAW,uBACRD,YAAW,YACX;AAAA,QACH,kBAAkB,uBACf,yBAA0B,SAAU,IACpC;AAAA,QACH,YAAY,WAAW;AAAA,QACvB,eAAeA,aAAY,UAAU,oBAAoB;AAAA,QACzD,oBAAAG;AAAA,MACD;AAIA,UAAKD,gBAAgB;AACpB,eAAO;AAAA,MACR;AAEA,YAAM,EAAE,eAAe,eAAe,IAAI;AAAA,QACzC,OAAQ,gBAAiB;AAAA,MAC1B;AACA,YAAM,cAAc,gBAAiB,QAAS;AAC9C,YAAME,aAAY,eAAgB,QAAS;AAC3C,YAAMC,WAAU,aAAc,QAAS;AACvC,YAAM,QAAQ,wBAAyB,WAAWL,WAAW;AAC7D,YAAMM,mBAAkB,qBAAsB,QAAS;AACvD,YAAM,YAAY;AAClB,YAAM,4BAA4B;AAAA,QACjC;AAAA,QACA;AAAA,MACD;AACA,YAAMC,oBAAmB,oBAAqB,QAAS;AAEvD,YAAM,WAAW,gBAAiB,WAAW,YAAY,IAAK;AAI9D,YAAM,qBAAqB,WACxB,CAAC,IACD,gBAAiB,SAAU;AAC9B,YAAM,YACL,mBAAmB,UACnB,mBAAoB,CAAE,MAAM;AAE7B,aAAO;AAAA,QACN,GAAG;AAAA,QACH,MAAM,aAAc,QAAS;AAAA,QAC7B,oBAAoBV,oBAAmB;AAAA,QACvC,UAAU,CAAC,CAAE,gBAAiB,YAAa;AAAA,QAC3C,gBAAgB,gBAAiB,QAAS;AAAA,QAC1C,WAAAO;AAAA,QACA,SAAAC;AAAA,QACA,YAAY;AAAA,QACZ,8BACC,8BAA8B,MAAM;AAAA,QACrC,kBAAAE;AAAA,QACA,oBACC,eACE,0BAA2B,QAAS,KACrC,+BAA+B,EAAE;AAAA,UAChC,CAAE,OAAQ,aAAc,EAAG,MAAM;AAAA,QAClC;AAAA,QACF,0BACC;AAAA,UACC,aAAc,QAAS;AAAA,UACvB;AAAA,UACA;AAAA,QACD,KAAK,sBAAuB,QAAS;AAAA,QACtC,iBAAiB,WAAW,cAAc;AAAA,QAC1C,YAAY,OAAO,SAAS,WAAW;AAAA,QACvC,mBACCA,sBAAqB,cACrB,uBAAwB,QAAS;AAAA,QAClC,YACC,sCAAuC,QAAS,KAChD,CAAET,YAAW;AAAA,QACd,iBAAiB,cACd,sCAAsC,IACtC;AAAA,QACH,eAAe,mBAAoB,QAAS;AAAA,QAC5C,iBAAAQ;AAAA,QACA,qBACCA,oBACA,CAAE,0BAA0B,KAC5B,CAAE,uCAAuC;AAAA,QAC1C,YAAY,oBAAqB,QAAS;AAAA,QAC1C,kBAAkB;AAAA,QAClB,mBAAmBC,sBAAqB;AAAA,QACxC,oBACCA,sBAAqB,cACrB,oBAAqB,YAAa,MAAM;AAAA,QACzC,uBAAuB,YACpB,mBAAoB,CAAE,IACtB;AAAA,QACH,eAAe,eAAgB,QAAS;AAAA,MACzC;AAAA,IACD;AAAA,IACA,CAAE,UAAU,YAAa;AAAA,EAC1B;AAEA,QAAM;AAAA,IACL;AAAA;AAAA;AAAA,IAGA,OAAO;AAAA,IACP,qBAAqB;AAAA,IACrB,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,IAAI;AAMJ,QAAM,QAAQ;AAAA,IACb,OAAQ,EAAE,GAAG,wBAAwB,WAAW;AAAA,IAChD,CAAE,wBAAwB,UAAW;AAAA,EACtC;AAKA,MAAK,CAAE,eAAgB;AACtB,WAAO;AAAA,EACR;AAEA,QAAM,iBAAiB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,MACC,iBACA,CAAE,cACF,CAAE,mBACF,CAAE,kBACD;AACD,WAAO;AAAA,EACR;AAWA,SACC,oBAAC,oBAAoB,UAApB,EAA6B,OAAQ,gBACrC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MAIH,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA;AAAA,EACD,GACD;AAEF;AAEA,IAAO,gBAAQ,KAAM,sBAAuB;",
6
6
  "names": ["isSelectionEnabled", "isDragging", "blockWithoutAttributes", "attributes", "isValid", "isPreviewMode", "bindableAttributes", "canRemove", "canMove", "isMultiSelected", "blockEditingMode"]
7
7
  }
@@ -148,7 +148,7 @@ function Items({
148
148
  getTemplateLock,
149
149
  getBlockEditingMode,
150
150
  isSectionBlock,
151
- isContainerInsertableToInWriteMode,
151
+ isContainerInsertableToInContentOnlyMode,
152
152
  getBlockName,
153
153
  isZoomOut: _isZoomOut,
154
154
  canInsertBlockType
@@ -173,7 +173,7 @@ function Items({
173
173
  selectedBlocks: selectedBlockClientIds,
174
174
  visibleBlocks: __unstableGetVisibleBlocks(),
175
175
  isZoomOut: _isZoomOut(),
176
- shouldRenderAppender: (!isSectionBlock(rootClientId) || isContainerInsertableToInWriteMode(
176
+ shouldRenderAppender: (!isSectionBlock(rootClientId) || isContainerInsertableToInContentOnlyMode(
177
177
  getBlockName(selectedBlockClientId),
178
178
  rootClientId
179
179
  )) && getBlockEditingMode(rootClientId) !== "disabled" && !getTemplateLock(rootClientId) && hasAppender && !_isZoomOut() && (hasCustomAppender || hasSelectedRoot || showRootAppender)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-list/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAsyncModeProvider,\n\tuseSelect,\n\tuseDispatch,\n\tuseRegistry,\n} from '@wordpress/data';\nimport { useMergeRefs, useDebounce } from '@wordpress/compose';\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tuseEffect,\n} from '@wordpress/element';\nimport { getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockListBlock from './block';\nimport BlockListAppender from '../block-list-appender';\nimport { useInBetweenInserter } from './use-in-between-inserter';\nimport { store as blockEditorStore } from '../../store';\nimport { LayoutProvider, defaultLayout } from './layout';\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useInnerBlocksProps } from '../inner-blocks';\nimport {\n\tBlockEditContextProvider,\n\tDEFAULT_BLOCK_EDIT_CONTEXT,\n} from '../block-edit/context';\nimport { useTypingObserver } from '../observe-typing';\nimport { ZoomOutSeparator } from './zoom-out-separator';\nimport { unlock } from '../../lock-unlock';\n\nexport const IntersectionObserver = createContext();\nIntersectionObserver.displayName = 'IntersectionObserverContext';\n\nconst pendingBlockVisibilityUpdatesPerRegistry = new WeakMap();\nconst delayedBlockVisibilityDebounceOptions = {\n\ttrailing: true,\n};\n\nfunction Root( { className, ...settings } ) {\n\tconst { isOutlineMode, isFocusMode, temporarilyEditingAsBlocks } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tgetTemporarilyEditingAsBlocks,\n\t\t\t\tisTyping,\n\t\t\t\thasBlockSpotlight,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { outlineMode, focusMode } = getSettings();\n\t\t\treturn {\n\t\t\t\tisOutlineMode: outlineMode && ! isTyping(),\n\t\t\t\tisFocusMode: focusMode || hasBlockSpotlight(),\n\t\t\t\ttemporarilyEditingAsBlocks: getTemporarilyEditingAsBlocks(),\n\t\t\t};\n\t\t}, [] );\n\tconst registry = useRegistry();\n\tconst { setBlockVisibility } = useDispatch( blockEditorStore );\n\n\tconst delayedBlockVisibilityUpdates = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst updates = {};\n\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t.get( registry )\n\t\t\t\t.forEach( ( [ id, isIntersecting ] ) => {\n\t\t\t\t\tupdates[ id ] = isIntersecting;\n\t\t\t\t} );\n\t\t\tsetBlockVisibility( updates );\n\t\t}, [ registry ] ),\n\t\t300,\n\t\tdelayedBlockVisibilityDebounceOptions\n\t);\n\tconst intersectionObserver = useMemo( () => {\n\t\tconst { IntersectionObserver: Observer } = window;\n\n\t\tif ( ! Observer ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn new Observer( ( entries ) => {\n\t\t\tif ( ! pendingBlockVisibilityUpdatesPerRegistry.get( registry ) ) {\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry.set( registry, [] );\n\t\t\t}\n\t\t\tfor ( const entry of entries ) {\n\t\t\t\tconst clientId = entry.target.getAttribute( 'data-block' );\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t\t.get( registry )\n\t\t\t\t\t.push( [ clientId, entry.isIntersecting ] );\n\t\t\t}\n\t\t\tdelayedBlockVisibilityUpdates();\n\t\t} );\n\t}, [] );\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tref: useMergeRefs( [\n\t\t\t\tuseBlockSelectionClearer(),\n\t\t\t\tuseInBetweenInserter(),\n\t\t\t\tuseTypingObserver(),\n\t\t\t] ),\n\t\t\tclassName: clsx( 'is-root-container', className, {\n\t\t\t\t'is-outline-mode': isOutlineMode,\n\t\t\t\t'is-focus-mode': isFocusMode,\n\t\t\t} ),\n\t\t},\n\t\tsettings\n\t);\n\treturn (\n\t\t<IntersectionObserver.Provider value={ intersectionObserver }>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t\t{ !! temporarilyEditingAsBlocks && (\n\t\t\t\t<StopEditingAsBlocksOnOutsideSelect\n\t\t\t\t\tclientId={ temporarilyEditingAsBlocks }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</IntersectionObserver.Provider>\n\t);\n}\n\nfunction StopEditingAsBlocksOnOutsideSelect( { clientId } ) {\n\tconst { stopEditingAsBlocks } = unlock( useDispatch( blockEditorStore ) );\n\tconst isBlockOrDescendantSelected = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\tisBlockSelected( clientId ) ||\n\t\t\t\thasSelectedInnerBlock( clientId, true )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isBlockOrDescendantSelected ) {\n\t\t\tstopEditingAsBlocks( clientId );\n\t\t}\n\t}, [ isBlockOrDescendantSelected, clientId, stopEditingAsBlocks ] );\n\treturn null;\n}\n\nexport default function BlockList( settings ) {\n\treturn (\n\t\t<BlockEditContextProvider value={ DEFAULT_BLOCK_EDIT_CONTEXT }>\n\t\t\t<Root { ...settings } />\n\t\t</BlockEditContextProvider>\n\t);\n}\n\nconst EMPTY_ARRAY = [];\nconst EMPTY_SET = new Set();\n\nfunction Items( {\n\tplaceholder,\n\trootClientId,\n\trenderAppender: CustomAppender,\n\t__experimentalAppenderTagName,\n\tlayout = defaultLayout,\n} ) {\n\t// Avoid passing CustomAppender to useSelect because it could be a new\n\t// function on every render.\n\tconst hasAppender = CustomAppender !== false;\n\tconst hasCustomAppender = !! CustomAppender;\n\tconst {\n\t\torder,\n\t\tisZoomOut,\n\t\tselectedBlocks,\n\t\tvisibleBlocks,\n\t\tshouldRenderAppender,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\t__unstableGetVisibleBlocks,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tisSectionBlock,\n\t\t\t\tisContainerInsertableToInWriteMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisZoomOut: _isZoomOut,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst _order = getBlockOrder( rootClientId );\n\n\t\t\tif ( getSettings().isPreviewMode ) {\n\t\t\t\treturn {\n\t\t\t\t\torder: _order,\n\t\t\t\t\tselectedBlocks: EMPTY_ARRAY,\n\t\t\t\t\tvisibleBlocks: EMPTY_SET,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst showRootAppender =\n\t\t\t\t! rootClientId &&\n\t\t\t\t! selectedBlockClientId &&\n\t\t\t\t( ! _order.length ||\n\t\t\t\t\t! canInsertBlockType(\n\t\t\t\t\t\tgetDefaultBlockName(),\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t) );\n\t\t\tconst hasSelectedRoot = !! (\n\t\t\t\trootClientId &&\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\trootClientId === selectedBlockClientId\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\torder: _order,\n\t\t\t\tselectedBlocks: selectedBlockClientIds,\n\t\t\t\tvisibleBlocks: __unstableGetVisibleBlocks(),\n\t\t\t\tisZoomOut: _isZoomOut(),\n\t\t\t\tshouldRenderAppender:\n\t\t\t\t\t( ! isSectionBlock( rootClientId ) ||\n\t\t\t\t\t\tisContainerInsertableToInWriteMode(\n\t\t\t\t\t\t\tgetBlockName( selectedBlockClientId ),\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t) ) &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) !== 'disabled' &&\n\t\t\t\t\t! getTemplateLock( rootClientId ) &&\n\t\t\t\t\thasAppender &&\n\t\t\t\t\t! _isZoomOut() &&\n\t\t\t\t\t( hasCustomAppender ||\n\t\t\t\t\t\thasSelectedRoot ||\n\t\t\t\t\t\tshowRootAppender ),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, hasAppender, hasCustomAppender ]\n\t);\n\n\treturn (\n\t\t<LayoutProvider value={ layout }>\n\t\t\t{ order.map( ( clientId ) => (\n\t\t\t\t<AsyncModeProvider\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t// Only provide data asynchronously if the block is\n\t\t\t\t\t\t// not visible and not selected.\n\t\t\t\t\t\t! visibleBlocks.has( clientId ) &&\n\t\t\t\t\t\t! selectedBlocks.includes( clientId )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isZoomOut && (\n\t\t\t\t\t\t<ZoomOutSeparator\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tposition=\"top\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isZoomOut && (\n\t\t\t\t\t\t<ZoomOutSeparator\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</AsyncModeProvider>\n\t\t\t) ) }\n\t\t\t{ order.length < 1 && placeholder }\n\t\t\t{ shouldRenderAppender && (\n\t\t\t\t<BlockListAppender\n\t\t\t\t\ttagName={ __experimentalAppenderTagName }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tCustomAppender={ CustomAppender }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</LayoutProvider>\n\t);\n}\n\nexport function BlockListItems( props ) {\n\t// This component needs to always be synchronous as it's the one changing\n\t// the async mode depending on the block selection.\n\treturn (\n\t\t<AsyncModeProvider value={ false }>\n\t\t\t<Items { ...props } />\n\t\t</AsyncModeProvider>\n\t);\n}\n"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tAsyncModeProvider,\n\tuseSelect,\n\tuseDispatch,\n\tuseRegistry,\n} from '@wordpress/data';\nimport { useMergeRefs, useDebounce } from '@wordpress/compose';\nimport {\n\tcreateContext,\n\tuseMemo,\n\tuseCallback,\n\tuseEffect,\n} from '@wordpress/element';\nimport { getDefaultBlockName } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport BlockListBlock from './block';\nimport BlockListAppender from '../block-list-appender';\nimport { useInBetweenInserter } from './use-in-between-inserter';\nimport { store as blockEditorStore } from '../../store';\nimport { LayoutProvider, defaultLayout } from './layout';\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useInnerBlocksProps } from '../inner-blocks';\nimport {\n\tBlockEditContextProvider,\n\tDEFAULT_BLOCK_EDIT_CONTEXT,\n} from '../block-edit/context';\nimport { useTypingObserver } from '../observe-typing';\nimport { ZoomOutSeparator } from './zoom-out-separator';\nimport { unlock } from '../../lock-unlock';\n\nexport const IntersectionObserver = createContext();\nIntersectionObserver.displayName = 'IntersectionObserverContext';\n\nconst pendingBlockVisibilityUpdatesPerRegistry = new WeakMap();\nconst delayedBlockVisibilityDebounceOptions = {\n\ttrailing: true,\n};\n\nfunction Root( { className, ...settings } ) {\n\tconst { isOutlineMode, isFocusMode, temporarilyEditingAsBlocks } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tgetTemporarilyEditingAsBlocks,\n\t\t\t\tisTyping,\n\t\t\t\thasBlockSpotlight,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst { outlineMode, focusMode } = getSettings();\n\t\t\treturn {\n\t\t\t\tisOutlineMode: outlineMode && ! isTyping(),\n\t\t\t\tisFocusMode: focusMode || hasBlockSpotlight(),\n\t\t\t\ttemporarilyEditingAsBlocks: getTemporarilyEditingAsBlocks(),\n\t\t\t};\n\t\t}, [] );\n\tconst registry = useRegistry();\n\tconst { setBlockVisibility } = useDispatch( blockEditorStore );\n\n\tconst delayedBlockVisibilityUpdates = useDebounce(\n\t\tuseCallback( () => {\n\t\t\tconst updates = {};\n\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t.get( registry )\n\t\t\t\t.forEach( ( [ id, isIntersecting ] ) => {\n\t\t\t\t\tupdates[ id ] = isIntersecting;\n\t\t\t\t} );\n\t\t\tsetBlockVisibility( updates );\n\t\t}, [ registry ] ),\n\t\t300,\n\t\tdelayedBlockVisibilityDebounceOptions\n\t);\n\tconst intersectionObserver = useMemo( () => {\n\t\tconst { IntersectionObserver: Observer } = window;\n\n\t\tif ( ! Observer ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn new Observer( ( entries ) => {\n\t\t\tif ( ! pendingBlockVisibilityUpdatesPerRegistry.get( registry ) ) {\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry.set( registry, [] );\n\t\t\t}\n\t\t\tfor ( const entry of entries ) {\n\t\t\t\tconst clientId = entry.target.getAttribute( 'data-block' );\n\t\t\t\tpendingBlockVisibilityUpdatesPerRegistry\n\t\t\t\t\t.get( registry )\n\t\t\t\t\t.push( [ clientId, entry.isIntersecting ] );\n\t\t\t}\n\t\t\tdelayedBlockVisibilityUpdates();\n\t\t} );\n\t}, [] );\n\tconst innerBlocksProps = useInnerBlocksProps(\n\t\t{\n\t\t\tref: useMergeRefs( [\n\t\t\t\tuseBlockSelectionClearer(),\n\t\t\t\tuseInBetweenInserter(),\n\t\t\t\tuseTypingObserver(),\n\t\t\t] ),\n\t\t\tclassName: clsx( 'is-root-container', className, {\n\t\t\t\t'is-outline-mode': isOutlineMode,\n\t\t\t\t'is-focus-mode': isFocusMode,\n\t\t\t} ),\n\t\t},\n\t\tsettings\n\t);\n\treturn (\n\t\t<IntersectionObserver.Provider value={ intersectionObserver }>\n\t\t\t<div { ...innerBlocksProps } />\n\t\t\t{ !! temporarilyEditingAsBlocks && (\n\t\t\t\t<StopEditingAsBlocksOnOutsideSelect\n\t\t\t\t\tclientId={ temporarilyEditingAsBlocks }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</IntersectionObserver.Provider>\n\t);\n}\n\nfunction StopEditingAsBlocksOnOutsideSelect( { clientId } ) {\n\tconst { stopEditingAsBlocks } = unlock( useDispatch( blockEditorStore ) );\n\tconst isBlockOrDescendantSelected = useSelect(\n\t\t( select ) => {\n\t\t\tconst { isBlockSelected, hasSelectedInnerBlock } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn (\n\t\t\t\tisBlockSelected( clientId ) ||\n\t\t\t\thasSelectedInnerBlock( clientId, true )\n\t\t\t);\n\t\t},\n\t\t[ clientId ]\n\t);\n\tuseEffect( () => {\n\t\tif ( ! isBlockOrDescendantSelected ) {\n\t\t\tstopEditingAsBlocks( clientId );\n\t\t}\n\t}, [ isBlockOrDescendantSelected, clientId, stopEditingAsBlocks ] );\n\treturn null;\n}\n\nexport default function BlockList( settings ) {\n\treturn (\n\t\t<BlockEditContextProvider value={ DEFAULT_BLOCK_EDIT_CONTEXT }>\n\t\t\t<Root { ...settings } />\n\t\t</BlockEditContextProvider>\n\t);\n}\n\nconst EMPTY_ARRAY = [];\nconst EMPTY_SET = new Set();\n\nfunction Items( {\n\tplaceholder,\n\trootClientId,\n\trenderAppender: CustomAppender,\n\t__experimentalAppenderTagName,\n\tlayout = defaultLayout,\n} ) {\n\t// Avoid passing CustomAppender to useSelect because it could be a new\n\t// function on every render.\n\tconst hasAppender = CustomAppender !== false;\n\tconst hasCustomAppender = !! CustomAppender;\n\tconst {\n\t\torder,\n\t\tisZoomOut,\n\t\tselectedBlocks,\n\t\tvisibleBlocks,\n\t\tshouldRenderAppender,\n\t} = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSettings,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSelectedBlockClientIds,\n\t\t\t\t__unstableGetVisibleBlocks,\n\t\t\t\tgetTemplateLock,\n\t\t\t\tgetBlockEditingMode,\n\t\t\t\tisSectionBlock,\n\t\t\t\tisContainerInsertableToInContentOnlyMode,\n\t\t\t\tgetBlockName,\n\t\t\t\tisZoomOut: _isZoomOut,\n\t\t\t\tcanInsertBlockType,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\tconst _order = getBlockOrder( rootClientId );\n\n\t\t\tif ( getSettings().isPreviewMode ) {\n\t\t\t\treturn {\n\t\t\t\t\torder: _order,\n\t\t\t\t\tselectedBlocks: EMPTY_ARRAY,\n\t\t\t\t\tvisibleBlocks: EMPTY_SET,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst selectedBlockClientId = selectedBlockClientIds[ 0 ];\n\t\t\tconst showRootAppender =\n\t\t\t\t! rootClientId &&\n\t\t\t\t! selectedBlockClientId &&\n\t\t\t\t( ! _order.length ||\n\t\t\t\t\t! canInsertBlockType(\n\t\t\t\t\t\tgetDefaultBlockName(),\n\t\t\t\t\t\trootClientId\n\t\t\t\t\t) );\n\t\t\tconst hasSelectedRoot = !! (\n\t\t\t\trootClientId &&\n\t\t\t\tselectedBlockClientId &&\n\t\t\t\trootClientId === selectedBlockClientId\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\torder: _order,\n\t\t\t\tselectedBlocks: selectedBlockClientIds,\n\t\t\t\tvisibleBlocks: __unstableGetVisibleBlocks(),\n\t\t\t\tisZoomOut: _isZoomOut(),\n\t\t\t\tshouldRenderAppender:\n\t\t\t\t\t( ! isSectionBlock( rootClientId ) ||\n\t\t\t\t\t\tisContainerInsertableToInContentOnlyMode(\n\t\t\t\t\t\t\tgetBlockName( selectedBlockClientId ),\n\t\t\t\t\t\t\trootClientId\n\t\t\t\t\t\t) ) &&\n\t\t\t\t\tgetBlockEditingMode( rootClientId ) !== 'disabled' &&\n\t\t\t\t\t! getTemplateLock( rootClientId ) &&\n\t\t\t\t\thasAppender &&\n\t\t\t\t\t! _isZoomOut() &&\n\t\t\t\t\t( hasCustomAppender ||\n\t\t\t\t\t\thasSelectedRoot ||\n\t\t\t\t\t\tshowRootAppender ),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, hasAppender, hasCustomAppender ]\n\t);\n\n\treturn (\n\t\t<LayoutProvider value={ layout }>\n\t\t\t{ order.map( ( clientId ) => (\n\t\t\t\t<AsyncModeProvider\n\t\t\t\t\tkey={ clientId }\n\t\t\t\t\tvalue={\n\t\t\t\t\t\t// Only provide data asynchronously if the block is\n\t\t\t\t\t\t// not visible and not selected.\n\t\t\t\t\t\t! visibleBlocks.has( clientId ) &&\n\t\t\t\t\t\t! selectedBlocks.includes( clientId )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{ isZoomOut && (\n\t\t\t\t\t\t<ZoomOutSeparator\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tposition=\"top\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<BlockListBlock\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isZoomOut && (\n\t\t\t\t\t\t<ZoomOutSeparator\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tposition=\"bottom\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</AsyncModeProvider>\n\t\t\t) ) }\n\t\t\t{ order.length < 1 && placeholder }\n\t\t\t{ shouldRenderAppender && (\n\t\t\t\t<BlockListAppender\n\t\t\t\t\ttagName={ __experimentalAppenderTagName }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\tCustomAppender={ CustomAppender }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</LayoutProvider>\n\t);\n}\n\nexport function BlockListItems( props ) {\n\t// This component needs to always be synchronous as it's the one changing\n\t// the async mode depending on the block selection.\n\treturn (\n\t\t<AsyncModeProvider value={ false }>\n\t\t\t<Items { ...props } />\n\t\t</AsyncModeProvider>\n\t);\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -8,11 +8,9 @@ import {
8
8
  } from "@wordpress/components";
9
9
  import { __ } from "@wordpress/i18n";
10
10
  import { useDispatch, useSelect } from "@wordpress/data";
11
- import { useContext } from "@wordpress/element";
12
11
  import useStylesForBlocks from "../block-styles/use-styles-for-block";
13
12
  import { replaceActiveStyle } from "../block-styles/utils";
14
13
  import { store as blockEditorStore } from "../../store";
15
- import { GlobalStylesContext } from "../global-styles";
16
14
  import { globalStylesDataKey } from "../../store/private-keys";
17
15
  import { getVariationStylesWithRefValues } from "../../hooks/block-style-variation";
18
16
  const styleIcon = /* @__PURE__ */ jsxs(
@@ -42,7 +40,6 @@ function SwitchSectionStyle({ clientId }) {
42
40
  clientId
43
41
  });
44
42
  const { updateBlockAttributes } = useDispatch(blockEditorStore);
45
- const { merged: mergedConfig } = useContext(GlobalStylesContext);
46
43
  const { globalSettings, globalStyles, blockName } = useSelect(
47
44
  (select) => {
48
45
  const settings = select(blockEditorStore).getSettings();
@@ -56,8 +53,8 @@ function SwitchSectionStyle({ clientId }) {
56
53
  );
57
54
  const activeStyleBackground = activeStyle?.name ? getVariationStylesWithRefValues(
58
55
  {
59
- settings: mergedConfig?.settings ?? globalSettings,
60
- styles: mergedConfig?.styles ?? globalStyles
56
+ settings: globalSettings,
57
+ styles: globalStyles
61
58
  },
62
59
  blockName,
63
60
  activeStyle.name
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/block-toolbar/switch-section-style.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tToolbarButton,\n\tToolbarGroup,\n\tIcon,\n\tPath,\n\tSVG,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport useStylesForBlocks from '../block-styles/use-styles-for-block';\nimport { replaceActiveStyle } from '../block-styles/utils';\nimport { store as blockEditorStore } from '../../store';\nimport { GlobalStylesContext } from '../global-styles';\nimport { globalStylesDataKey } from '../../store/private-keys';\nimport { getVariationStylesWithRefValues } from '../../hooks/block-style-variation';\n\nconst styleIcon = (\n\t<SVG\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\taria-hidden=\"true\"\n\t\tfocusable=\"false\"\n\t>\n\t\t<Path d=\"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3z\" />\n\t\t<Path\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\td=\"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3z\"\n\t\t/>\n\t</SVG>\n);\n\nfunction SwitchSectionStyle( { clientId } ) {\n\tconst { stylesToRender, activeStyle, className } = useStylesForBlocks( {\n\t\tclientId,\n\t} );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// Get global styles data\n\tconst { merged: mergedConfig } = useContext( GlobalStylesContext );\n\tconst { globalSettings, globalStyles, blockName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\treturn {\n\t\t\t\tglobalSettings: settings.__experimentalFeatures,\n\t\t\t\tglobalStyles: settings[ globalStylesDataKey ],\n\t\t\t\tblockName: select( blockEditorStore ).getBlockName( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Get the background color for the active style\n\tconst activeStyleBackground = activeStyle?.name\n\t\t? getVariationStylesWithRefValues(\n\t\t\t\t{\n\t\t\t\t\tsettings: mergedConfig?.settings ?? globalSettings,\n\t\t\t\t\tstyles: mergedConfig?.styles ?? globalStyles,\n\t\t\t\t},\n\t\t\t\tblockName,\n\t\t\t\tactiveStyle.name\n\t\t )?.color?.background\n\t\t: undefined;\n\n\tif ( ! stylesToRender || stylesToRender.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst handleStyleSwitch = () => {\n\t\tconst currentIndex = stylesToRender.findIndex(\n\t\t\t( style ) => style.name === activeStyle.name\n\t\t);\n\n\t\tconst nextIndex = ( currentIndex + 1 ) % stylesToRender.length;\n\t\tconst nextStyle = stylesToRender[ nextIndex ];\n\n\t\tconst styleClassName = replaceActiveStyle(\n\t\t\tclassName,\n\t\t\tactiveStyle,\n\t\t\tnextStyle\n\t\t);\n\n\t\tupdateBlockAttributes( clientId, {\n\t\t\tclassName: styleClassName,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\tonClick={ handleStyleSwitch }\n\t\t\t\tlabel={ __( 'Shuffle styles' ) }\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\ticon={ styleIcon }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tfill: activeStyleBackground || 'transparent',\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ToolbarButton>\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default SwitchSectionStyle;\n"],
5
- "mappings": "AAyBC,SAQC,KARD;AAtBD;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,UAAU;AACnB,SAAS,aAAa,iBAAiB;AACvC,SAAS,kBAAkB;AAK3B,OAAO,wBAAwB;AAC/B,SAAS,0BAA0B;AACnC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,2BAA2B;AACpC,SAAS,2BAA2B;AACpC,SAAS,uCAAuC;AAEhD,MAAM,YACL;AAAA,EAAC;AAAA;AAAA,IACA,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,eAAY;AAAA,IACZ,WAAU;AAAA,IAEV;AAAA,0BAAC,QAAK,GAAE,uLAAsL;AAAA,MAC9L;AAAA,QAAC;AAAA;AAAA,UACA,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,GAAE;AAAA;AAAA,MACH;AAAA;AAAA;AACD;AAGD,SAAS,mBAAoB,EAAE,SAAS,GAAI;AAC3C,QAAM,EAAE,gBAAgB,aAAa,UAAU,IAAI,mBAAoB;AAAA,IACtE;AAAA,EACD,CAAE;AACF,QAAM,EAAE,sBAAsB,IAAI,YAAa,gBAAiB;AAGhE,QAAM,EAAE,QAAQ,aAAa,IAAI,WAAY,mBAAoB;AACjE,QAAM,EAAE,gBAAgB,cAAc,UAAU,IAAI;AAAA,IACnD,CAAE,WAAY;AACb,YAAM,WAAW,OAAQ,gBAAiB,EAAE,YAAY;AACxD,aAAO;AAAA,QACN,gBAAgB,SAAS;AAAA,QACzB,cAAc,SAAU,mBAAoB;AAAA,QAC5C,WAAW,OAAQ,gBAAiB,EAAE,aAAc,QAAS;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAGA,QAAM,wBAAwB,aAAa,OACxC;AAAA,IACA;AAAA,MACC,UAAU,cAAc,YAAY;AAAA,MACpC,QAAQ,cAAc,UAAU;AAAA,IACjC;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACZ,GAAG,OAAO,aACV;AAEH,MAAK,CAAE,kBAAkB,eAAe,WAAW,GAAI;AACtD,WAAO;AAAA,EACR;AAEA,QAAM,oBAAoB,MAAM;AAC/B,UAAM,eAAe,eAAe;AAAA,MACnC,CAAE,UAAW,MAAM,SAAS,YAAY;AAAA,IACzC;AAEA,UAAM,aAAc,eAAe,KAAM,eAAe;AACxD,UAAM,YAAY,eAAgB,SAAU;AAE5C,UAAM,iBAAiB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,0BAAuB,UAAU;AAAA,MAChC,WAAW;AAAA,IACZ,CAAE;AAAA,EACH;AAEA,SACC,oBAAC,gBACA;AAAA,IAAC;AAAA;AAAA,MACA,SAAU;AAAA,MACV,OAAQ,GAAI,gBAAiB;AAAA,MAE7B;AAAA,QAAC;AAAA;AAAA,UACA,MAAO;AAAA,UACP,OAAQ;AAAA,YACP,MAAM,yBAAyB;AAAA,UAChC;AAAA;AAAA,MACD;AAAA;AAAA,EACD,GACD;AAEF;AAEA,IAAO,+BAAQ;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tToolbarButton,\n\tToolbarGroup,\n\tIcon,\n\tPath,\n\tSVG,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport useStylesForBlocks from '../block-styles/use-styles-for-block';\nimport { replaceActiveStyle } from '../block-styles/utils';\nimport { store as blockEditorStore } from '../../store';\nimport { globalStylesDataKey } from '../../store/private-keys';\nimport { getVariationStylesWithRefValues } from '../../hooks/block-style-variation';\n\nconst styleIcon = (\n\t<SVG\n\t\tviewBox=\"0 0 24 24\"\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\twidth=\"24\"\n\t\theight=\"24\"\n\t\taria-hidden=\"true\"\n\t\tfocusable=\"false\"\n\t>\n\t\t<Path d=\"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3z\" />\n\t\t<Path\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\td=\"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3z\"\n\t\t/>\n\t</SVG>\n);\n\nfunction SwitchSectionStyle( { clientId } ) {\n\tconst { stylesToRender, activeStyle, className } = useStylesForBlocks( {\n\t\tclientId,\n\t} );\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\n\t// Get global styles data\n\tconst { globalSettings, globalStyles, blockName } = useSelect(\n\t\t( select ) => {\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\t\treturn {\n\t\t\t\tglobalSettings: settings.__experimentalFeatures,\n\t\t\t\tglobalStyles: settings[ globalStylesDataKey ],\n\t\t\t\tblockName: select( blockEditorStore ).getBlockName( clientId ),\n\t\t\t};\n\t\t},\n\t\t[ clientId ]\n\t);\n\n\t// Get the background color for the active style\n\tconst activeStyleBackground = activeStyle?.name\n\t\t? getVariationStylesWithRefValues(\n\t\t\t\t{\n\t\t\t\t\tsettings: globalSettings,\n\t\t\t\t\tstyles: globalStyles,\n\t\t\t\t},\n\t\t\t\tblockName,\n\t\t\t\tactiveStyle.name\n\t\t )?.color?.background\n\t\t: undefined;\n\n\tif ( ! stylesToRender || stylesToRender.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst handleStyleSwitch = () => {\n\t\tconst currentIndex = stylesToRender.findIndex(\n\t\t\t( style ) => style.name === activeStyle.name\n\t\t);\n\n\t\tconst nextIndex = ( currentIndex + 1 ) % stylesToRender.length;\n\t\tconst nextStyle = stylesToRender[ nextIndex ];\n\n\t\tconst styleClassName = replaceActiveStyle(\n\t\t\tclassName,\n\t\t\tactiveStyle,\n\t\t\tnextStyle\n\t\t);\n\n\t\tupdateBlockAttributes( clientId, {\n\t\t\tclassName: styleClassName,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<ToolbarGroup>\n\t\t\t<ToolbarButton\n\t\t\t\tonClick={ handleStyleSwitch }\n\t\t\t\tlabel={ __( 'Shuffle styles' ) }\n\t\t\t>\n\t\t\t\t<Icon\n\t\t\t\t\ticon={ styleIcon }\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tfill: activeStyleBackground || 'transparent',\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ToolbarButton>\n\t\t</ToolbarGroup>\n\t);\n}\n\nexport default SwitchSectionStyle;\n"],
5
+ "mappings": "AAuBC,SAQC,KARD;AApBD;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,UAAU;AACnB,SAAS,aAAa,iBAAiB;AAKvC,OAAO,wBAAwB;AAC/B,SAAS,0BAA0B;AACnC,SAAS,SAAS,wBAAwB;AAC1C,SAAS,2BAA2B;AACpC,SAAS,uCAAuC;AAEhD,MAAM,YACL;AAAA,EAAC;AAAA;AAAA,IACA,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,eAAY;AAAA,IACZ,WAAU;AAAA,IAEV;AAAA,0BAAC,QAAK,GAAE,uLAAsL;AAAA,MAC9L;AAAA,QAAC;AAAA;AAAA,UACA,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,GAAE;AAAA;AAAA,MACH;AAAA;AAAA;AACD;AAGD,SAAS,mBAAoB,EAAE,SAAS,GAAI;AAC3C,QAAM,EAAE,gBAAgB,aAAa,UAAU,IAAI,mBAAoB;AAAA,IACtE;AAAA,EACD,CAAE;AACF,QAAM,EAAE,sBAAsB,IAAI,YAAa,gBAAiB;AAGhE,QAAM,EAAE,gBAAgB,cAAc,UAAU,IAAI;AAAA,IACnD,CAAE,WAAY;AACb,YAAM,WAAW,OAAQ,gBAAiB,EAAE,YAAY;AACxD,aAAO;AAAA,QACN,gBAAgB,SAAS;AAAA,QACzB,cAAc,SAAU,mBAAoB;AAAA,QAC5C,WAAW,OAAQ,gBAAiB,EAAE,aAAc,QAAS;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAE,QAAS;AAAA,EACZ;AAGA,QAAM,wBAAwB,aAAa,OACxC;AAAA,IACA;AAAA,MACC,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,IACA;AAAA,IACA,YAAY;AAAA,EACZ,GAAG,OAAO,aACV;AAEH,MAAK,CAAE,kBAAkB,eAAe,WAAW,GAAI;AACtD,WAAO;AAAA,EACR;AAEA,QAAM,oBAAoB,MAAM;AAC/B,UAAM,eAAe,eAAe;AAAA,MACnC,CAAE,UAAW,MAAM,SAAS,YAAY;AAAA,IACzC;AAEA,UAAM,aAAc,eAAe,KAAM,eAAe;AACxD,UAAM,YAAY,eAAgB,SAAU;AAE5C,UAAM,iBAAiB;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,0BAAuB,UAAU;AAAA,MAChC,WAAW;AAAA,IACZ,CAAE;AAAA,EACH;AAEA,SACC,oBAAC,gBACA;AAAA,IAAC;AAAA;AAAA,MACA,SAAU;AAAA,MACV,OAAQ,GAAI,gBAAiB;AAAA,MAE7B;AAAA,QAAC;AAAA;AAAA,UACA,MAAO;AAAA,UACP,OAAQ;AAAA,YACP,MAAM,yBAAyB;AAAA,UAChC;AAAA;AAAA,MACD;AAAA;AAAA,EACD,GACD;AAEF;AAEA,IAAO,+BAAQ;",
6
6
  "names": []
7
7
  }
@@ -1,103 +1,8 @@
1
- import fastDeepEqual from "fast-deep-equal/es6";
2
- import { useContext, useCallback, useMemo } from "@wordpress/element";
1
+ import { useMemo } from "@wordpress/element";
3
2
  import { useSelect } from "@wordpress/data";
4
3
  import { store as blocksStore } from "@wordpress/blocks";
5
4
  import { _x } from "@wordpress/i18n";
6
- import {
7
- getSetting,
8
- getStyle,
9
- getPresetVariableFromValue
10
- } from "@wordpress/global-styles-engine";
11
- import { setImmutably } from "../../utils/object";
12
- import { GlobalStylesContext } from "./context";
13
5
  import { unlock } from "../../lock-unlock";
14
- const EMPTY_CONFIG = { settings: {}, styles: {} };
15
- const useGlobalStylesReset = () => {
16
- const { user, setUserConfig } = useContext(GlobalStylesContext);
17
- const config = {
18
- settings: user.settings,
19
- styles: user.styles
20
- };
21
- const canReset = !!config && !fastDeepEqual(config, EMPTY_CONFIG);
22
- return [
23
- canReset,
24
- useCallback(() => setUserConfig(EMPTY_CONFIG), [setUserConfig])
25
- ];
26
- };
27
- function useGlobalSetting(propertyPath, blockName, source = "all") {
28
- const { setUserConfig, ...configs } = useContext(GlobalStylesContext);
29
- const appendedBlockPath = blockName ? ".blocks." + blockName : "";
30
- const appendedPropertyPath = propertyPath ? "." + propertyPath : "";
31
- const contextualPath = `settings${appendedBlockPath}${appendedPropertyPath}`;
32
- const sourceKey = source === "all" ? "merged" : source;
33
- const settingValue = useMemo(() => {
34
- const configToUse = configs[sourceKey];
35
- if (!configToUse) {
36
- throw "Unsupported source";
37
- }
38
- return getSetting(configToUse, propertyPath, blockName);
39
- }, [configs, sourceKey, propertyPath, blockName]);
40
- const setSetting = (newValue) => {
41
- setUserConfig(
42
- (currentConfig) => setImmutably(currentConfig, contextualPath.split("."), newValue)
43
- );
44
- };
45
- return [settingValue, setSetting];
46
- }
47
- function useGlobalStyle(path, blockName, source = "all", { shouldDecodeEncode = true } = {}) {
48
- const {
49
- merged: mergedConfig,
50
- base: baseConfig,
51
- user: userConfig,
52
- setUserConfig
53
- } = useContext(GlobalStylesContext);
54
- const appendedPath = path ? "." + path : "";
55
- const finalPath = !blockName ? `styles${appendedPath}` : `styles.blocks.${blockName}${appendedPath}`;
56
- const setStyle = (newValue) => {
57
- setUserConfig(
58
- (currentConfig) => setImmutably(
59
- currentConfig,
60
- finalPath.split("."),
61
- shouldDecodeEncode ? getPresetVariableFromValue(
62
- mergedConfig.settings,
63
- blockName,
64
- path,
65
- newValue
66
- ) : newValue
67
- )
68
- );
69
- };
70
- let result;
71
- switch (source) {
72
- case "all":
73
- result = getStyle(
74
- mergedConfig,
75
- path,
76
- blockName,
77
- shouldDecodeEncode
78
- );
79
- break;
80
- case "user":
81
- result = getStyle(
82
- userConfig,
83
- path,
84
- blockName,
85
- shouldDecodeEncode
86
- );
87
- break;
88
- case "base":
89
- result = getStyle(
90
- baseConfig,
91
- path,
92
- blockName,
93
- shouldDecodeEncode
94
- );
95
- break;
96
- default:
97
- throw "Unsupported source";
98
- }
99
- return [result, setStyle];
100
- }
101
6
  function useSettingsForBlockElement(parentSettings, blockName, element) {
102
7
  const { supportedStyles, supports } = useSelect(
103
8
  (select) => {
@@ -311,9 +216,6 @@ function useGradientsPerOrigin(settings) {
311
216
  }
312
217
  export {
313
218
  useColorsPerOrigin,
314
- useGlobalSetting,
315
- useGlobalStyle,
316
- useGlobalStylesReset,
317
219
  useGradientsPerOrigin,
318
220
  useSettingsForBlockElement
319
221
  };