@wordpress/block-editor 14.3.6 → 14.3.8

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 (117) hide show
  1. package/README.md +2 -2
  2. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js +14 -6
  3. package/build/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  4. package/build/components/block-list/zoom-out-separator.js +10 -7
  5. package/build/components/block-list/zoom-out-separator.js.map +1 -1
  6. package/build/components/block-popover/index.js +1 -1
  7. package/build/components/block-popover/index.js.map +1 -1
  8. package/build/components/block-toolbar/index.js +28 -16
  9. package/build/components/block-toolbar/index.js.map +1 -1
  10. package/build/components/block-toolbar/use-has-block-toolbar.js +3 -3
  11. package/build/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  12. package/build/components/block-tools/index.js +1 -6
  13. package/build/components/block-tools/index.js.map +1 -1
  14. package/build/components/block-tools/use-show-block-tools.js +4 -6
  15. package/build/components/block-tools/use-show-block-tools.js.map +1 -1
  16. package/build/components/block-tools/zoom-out-mode-inserters.js +22 -36
  17. package/build/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  18. package/build/components/iframe/index.js +40 -10
  19. package/build/components/iframe/index.js.map +1 -1
  20. package/build/components/inserter/block-patterns-tab/index.js +4 -0
  21. package/build/components/inserter/block-patterns-tab/index.js.map +1 -1
  22. package/build/components/inserter/hooks/use-insertion-point.js +16 -4
  23. package/build/components/inserter/hooks/use-insertion-point.js.map +1 -1
  24. package/build/components/inserter/media-tab/media-tab.js +4 -0
  25. package/build/components/inserter/media-tab/media-tab.js.map +1 -1
  26. package/build/components/inserter/menu.js +5 -2
  27. package/build/components/inserter/menu.js.map +1 -1
  28. package/build/hooks/block-bindings.js +12 -1
  29. package/build/hooks/block-bindings.js.map +1 -1
  30. package/build/hooks/use-zoom-out.js +24 -16
  31. package/build/hooks/use-zoom-out.js.map +1 -1
  32. package/build/store/private-selectors.js +37 -2
  33. package/build/store/private-selectors.js.map +1 -1
  34. package/build/store/selectors.js +15 -8
  35. package/build/store/selectors.js.map +1 -1
  36. package/build/utils/dom.js +16 -1
  37. package/build/utils/dom.js.map +1 -1
  38. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +14 -6
  39. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  40. package/build-module/components/block-list/zoom-out-separator.js +10 -7
  41. package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
  42. package/build-module/components/block-popover/index.js +1 -1
  43. package/build-module/components/block-popover/index.js.map +1 -1
  44. package/build-module/components/block-toolbar/index.js +30 -18
  45. package/build-module/components/block-toolbar/index.js.map +1 -1
  46. package/build-module/components/block-toolbar/use-has-block-toolbar.js +3 -3
  47. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  48. package/build-module/components/block-tools/index.js +1 -6
  49. package/build-module/components/block-tools/index.js.map +1 -1
  50. package/build-module/components/block-tools/use-show-block-tools.js +4 -6
  51. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  52. package/build-module/components/block-tools/zoom-out-mode-inserters.js +22 -36
  53. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  54. package/build-module/components/iframe/index.js +40 -10
  55. package/build-module/components/iframe/index.js.map +1 -1
  56. package/build-module/components/inserter/block-patterns-tab/index.js +5 -1
  57. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  58. package/build-module/components/inserter/hooks/use-insertion-point.js +16 -4
  59. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  60. package/build-module/components/inserter/media-tab/media-tab.js +5 -1
  61. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  62. package/build-module/components/inserter/menu.js +5 -2
  63. package/build-module/components/inserter/menu.js.map +1 -1
  64. package/build-module/hooks/block-bindings.js +13 -2
  65. package/build-module/hooks/block-bindings.js.map +1 -1
  66. package/build-module/hooks/use-zoom-out.js +24 -17
  67. package/build-module/hooks/use-zoom-out.js.map +1 -1
  68. package/build-module/store/private-selectors.js +35 -2
  69. package/build-module/store/private-selectors.js.map +1 -1
  70. package/build-module/store/selectors.js +15 -8
  71. package/build-module/store/selectors.js.map +1 -1
  72. package/build-module/utils/dom.js +16 -1
  73. package/build-module/utils/dom.js.map +1 -1
  74. package/build-style/content-rtl.css +14 -20
  75. package/build-style/content.css +14 -20
  76. package/build-style/style-rtl.css +28 -21
  77. package/build-style/style.css +28 -21
  78. package/build-types/utils/dom.d.ts.map +1 -1
  79. package/package.json +6 -6
  80. package/src/components/block-canvas/style.scss +1 -0
  81. package/src/components/block-list/content.scss +3 -2
  82. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +25 -4
  83. package/src/components/block-list/zoom-out-separator.js +8 -6
  84. package/src/components/block-popover/index.js +2 -2
  85. package/src/components/block-toolbar/index.js +37 -24
  86. package/src/components/block-toolbar/style.scss +10 -1
  87. package/src/components/block-toolbar/use-has-block-toolbar.js +19 -28
  88. package/src/components/block-tools/index.js +0 -9
  89. package/src/components/block-tools/style.scss +2 -26
  90. package/src/components/block-tools/use-show-block-tools.js +2 -10
  91. package/src/components/block-tools/zoom-out-mode-inserters.js +26 -50
  92. package/src/components/iframe/content.scss +16 -24
  93. package/src/components/iframe/index.js +53 -12
  94. package/src/components/iframe/style.scss +6 -5
  95. package/src/components/inserter/block-patterns-tab/index.js +6 -1
  96. package/src/components/inserter/hooks/use-insertion-point.js +23 -5
  97. package/src/components/inserter/media-tab/media-tab.js +6 -1
  98. package/src/components/inserter/menu.js +7 -1
  99. package/src/components/inserter/style.scss +6 -0
  100. package/src/components/rich-text/style.scss +5 -0
  101. package/src/hooks/block-bindings.js +40 -23
  102. package/src/hooks/use-zoom-out.js +36 -20
  103. package/src/store/private-selectors.js +40 -1
  104. package/src/store/selectors.js +16 -8
  105. package/src/style.scss +1 -0
  106. package/src/utils/dom.js +22 -2
  107. package/tsconfig.tsbuildinfo +1 -1
  108. package/build/components/block-tools/zoom-out-popover.js +0 -57
  109. package/build/components/block-tools/zoom-out-popover.js.map +0 -1
  110. package/build/components/block-tools/zoom-out-toolbar.js +0 -159
  111. package/build/components/block-tools/zoom-out-toolbar.js.map +0 -1
  112. package/build-module/components/block-tools/zoom-out-popover.js +0 -48
  113. package/build-module/components/block-tools/zoom-out-popover.js.map +0 -1
  114. package/build-module/components/block-tools/zoom-out-toolbar.js +0 -152
  115. package/build-module/components/block-tools/zoom-out-toolbar.js.map +0 -1
  116. package/src/components/block-tools/zoom-out-popover.js +0 -46
  117. package/src/components/block-tools/zoom-out-toolbar.js +0 -167
@@ -70,8 +70,10 @@ function useInsertionPoint({
70
70
  getSelectedBlockClientId,
71
71
  getBlockRootClientId,
72
72
  getBlockIndex,
73
- getBlockOrder
74
- } = select(blockEditorStore);
73
+ getBlockOrder,
74
+ getSectionRootClientId,
75
+ __unstableGetEditorMode
76
+ } = unlock(select(blockEditorStore));
75
77
  const selectedBlockClientId = getSelectedBlockClientId();
76
78
  let _destinationRootClientId = rootClientId;
77
79
  let _destinationIndex;
@@ -82,8 +84,18 @@ function useInsertionPoint({
82
84
  // Insert after a specific client ID.
83
85
  _destinationIndex = getBlockIndex(clientId);
84
86
  } else if (!isAppender && selectedBlockClientId) {
85
- _destinationRootClientId = getBlockRootClientId(selectedBlockClientId);
86
- _destinationIndex = getBlockIndex(selectedBlockClientId) + 1;
87
+ const sectionRootClientId = getSectionRootClientId();
88
+
89
+ // Avoids empty inserter when the selected block is acting
90
+ // as the "root".
91
+ // See https://github.com/WordPress/gutenberg/pull/66214.
92
+ if (__unstableGetEditorMode() === 'zoom-out' && sectionRootClientId === selectedBlockClientId) {
93
+ _destinationRootClientId = sectionRootClientId;
94
+ _destinationIndex = getBlockOrder(_destinationRootClientId).length;
95
+ } else {
96
+ _destinationRootClientId = getBlockRootClientId(selectedBlockClientId);
97
+ _destinationIndex = getBlockIndex(selectedBlockClientId) + 1;
98
+ }
87
99
  } else {
88
100
  // Insert at the end of the list.
89
101
  _destinationIndex = getBlockOrder(_destinationRootClientId).length;
@@ -1 +1 @@
1
- {"version":3,"names":["useDispatch","useRegistry","useSelect","isUnmodifiedDefaultBlock","_n","sprintf","speak","useCallback","store","blockEditorStore","unlock","getIndex","destinationRootClientId","destinationIndex","rootClientId","registry","parents","select","getBlockParents","parentIndex","indexOf","getBlockIndex","getBlockOrder","length","useInsertionPoint","insertionIndex","clientId","isAppender","onSelect","shouldFocusBlock","selectBlockOnInsert","getSelectedBlock","getSelectedBlockClientId","getBlockRootClientId","selectedBlockClientId","_destinationRootClientId","_destinationIndex","undefined","replaceBlocks","insertBlocks","showInsertionPoint","hideInsertionPoint","setLastFocus","onInsertBlocks","blocks","meta","shouldForceFocusBlock","_rootClientId","selectedBlock","blockLength","Array","isArray","message","onToggleInsertionPoint","item","hasOwnProperty"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-insertion-point.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction getIndex( {\n\tdestinationRootClientId,\n\tdestinationIndex,\n\trootClientId,\n\tregistry,\n} ) {\n\tif ( rootClientId === destinationRootClientId ) {\n\t\treturn destinationIndex;\n\t}\n\tconst parents = [\n\t\t'',\n\t\t...registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlockParents( destinationRootClientId ),\n\t\tdestinationRootClientId,\n\t];\n\tconst parentIndex = parents.indexOf( rootClientId );\n\tif ( parentIndex !== -1 ) {\n\t\treturn (\n\t\t\tregistry\n\t\t\t\t.select( blockEditorStore )\n\t\t\t\t.getBlockIndex( parents[ parentIndex + 1 ] ) + 1\n\t\t);\n\t}\n\treturn registry.select( blockEditorStore ).getBlockOrder( rootClientId )\n\t\t.length;\n}\n\n/**\n * @typedef WPInserterConfig\n *\n * @property {string=} rootClientId If set, insertion will be into the\n * block with this ID.\n * @property {number=} insertionIndex If set, insertion will be into this\n * explicit position.\n * @property {string=} clientId If set, insertion will be after the\n * block with this ID.\n * @property {boolean=} isAppender Whether the inserter is an appender\n * or not.\n * @property {Function=} onSelect Called after insertion.\n */\n\n/**\n * Returns the insertion point state given the inserter config.\n *\n * @param {WPInserterConfig} config Inserter Config.\n * @return {Array} Insertion Point State (rootClientID, onInsertBlocks and onToggle).\n */\nfunction useInsertionPoint( {\n\trootClientId = '',\n\tinsertionIndex,\n\tclientId,\n\tisAppender,\n\tonSelect,\n\tshouldFocusBlock = true,\n\tselectBlockOnInsert = true,\n} ) {\n\tconst registry = useRegistry();\n\tconst { getSelectedBlock } = useSelect( blockEditorStore );\n\tconst { destinationRootClientId, destinationIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockOrder,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tlet _destinationRootClientId = rootClientId;\n\t\t\tlet _destinationIndex;\n\n\t\t\tif ( insertionIndex !== undefined ) {\n\t\t\t\t// Insert into a specific index.\n\t\t\t\t_destinationIndex = insertionIndex;\n\t\t\t} else if ( clientId ) {\n\t\t\t\t// Insert after a specific client ID.\n\t\t\t\t_destinationIndex = getBlockIndex( clientId );\n\t\t\t} else if ( ! isAppender && selectedBlockClientId ) {\n\t\t\t\t_destinationRootClientId = getBlockRootClientId(\n\t\t\t\t\tselectedBlockClientId\n\t\t\t\t);\n\t\t\t\t_destinationIndex = getBlockIndex( selectedBlockClientId ) + 1;\n\t\t\t} else {\n\t\t\t\t// Insert at the end of the list.\n\t\t\t\t_destinationIndex = getBlockOrder(\n\t\t\t\t\t_destinationRootClientId\n\t\t\t\t).length;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdestinationRootClientId: _destinationRootClientId,\n\t\t\t\tdestinationIndex: _destinationIndex,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, insertionIndex, clientId, isAppender ]\n\t);\n\n\tconst {\n\t\treplaceBlocks,\n\t\tinsertBlocks,\n\t\tshowInsertionPoint,\n\t\thideInsertionPoint,\n\t\tsetLastFocus,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst onInsertBlocks = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock = false, _rootClientId ) => {\n\t\t\t// When we are trying to move focus or select a new block on insert, we also\n\t\t\t// need to clear the last focus to avoid the focus being set to the wrong block\n\t\t\t// when tabbing back into the canvas if the block was added from outside the\n\t\t\t// editor canvas.\n\t\t\tif (\n\t\t\t\tshouldForceFocusBlock ||\n\t\t\t\tshouldFocusBlock ||\n\t\t\t\tselectBlockOnInsert\n\t\t\t) {\n\t\t\t\tsetLastFocus( null );\n\t\t\t}\n\n\t\t\tconst selectedBlock = getSelectedBlock();\n\n\t\t\tif (\n\t\t\t\t! isAppender &&\n\t\t\t\tselectedBlock &&\n\t\t\t\tisUnmodifiedDefaultBlock( selectedBlock )\n\t\t\t) {\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlock.clientId,\n\t\t\t\t\tblocks,\n\t\t\t\t\tnull,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tblocks,\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationIndex\n\t\t\t\t\t\t: getIndex( {\n\t\t\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t } ),\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationRootClientId\n\t\t\t\t\t\t: _rootClientId,\n\t\t\t\t\tselectBlockOnInsert,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst blockLength = Array.isArray( blocks ) ? blocks.length : 1;\n\t\t\tconst message = sprintf(\n\t\t\t\t// translators: %d: the name of the block that has been added\n\t\t\t\t_n( '%d block added.', '%d blocks added.', blockLength ),\n\t\t\t\tblockLength\n\t\t\t);\n\t\t\tspeak( message );\n\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( blocks );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tisAppender,\n\t\t\tgetSelectedBlock,\n\t\t\treplaceBlocks,\n\t\t\tinsertBlocks,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t\tonSelect,\n\t\t\tshouldFocusBlock,\n\t\t\tselectBlockOnInsert,\n\t\t]\n\t);\n\n\tconst onToggleInsertionPoint = useCallback(\n\t\t( item ) => {\n\t\t\tif ( item?.hasOwnProperty( 'rootClientId' ) ) {\n\t\t\t\tshowInsertionPoint(\n\t\t\t\t\titem.rootClientId,\n\t\t\t\t\tgetIndex( {\n\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\trootClientId: item.rootClientId,\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\thideInsertionPoint();\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tshowInsertionPoint,\n\t\t\thideInsertionPoint,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t]\n\t);\n\n\treturn [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ];\n}\n\nexport default useInsertionPoint;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useDispatch","useRegistry","useSelect","isUnmodifiedDefaultBlock","_n","sprintf","speak","useCallback","store","blockEditorStore","unlock","getIndex","destinationRootClientId","destinationIndex","rootClientId","registry","parents","select","getBlockParents","parentIndex","indexOf","getBlockIndex","getBlockOrder","length","useInsertionPoint","insertionIndex","clientId","isAppender","onSelect","shouldFocusBlock","selectBlockOnInsert","getSelectedBlock","getSelectedBlockClientId","getBlockRootClientId","getSectionRootClientId","__unstableGetEditorMode","selectedBlockClientId","_destinationRootClientId","_destinationIndex","undefined","sectionRootClientId","replaceBlocks","insertBlocks","showInsertionPoint","hideInsertionPoint","setLastFocus","onInsertBlocks","blocks","meta","shouldForceFocusBlock","_rootClientId","selectedBlock","blockLength","Array","isArray","message","onToggleInsertionPoint","item","hasOwnProperty"],"sources":["@wordpress/block-editor/src/components/inserter/hooks/use-insertion-point.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry, useSelect } from '@wordpress/data';\nimport { isUnmodifiedDefaultBlock } from '@wordpress/blocks';\nimport { _n, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { useCallback } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\nfunction getIndex( {\n\tdestinationRootClientId,\n\tdestinationIndex,\n\trootClientId,\n\tregistry,\n} ) {\n\tif ( rootClientId === destinationRootClientId ) {\n\t\treturn destinationIndex;\n\t}\n\tconst parents = [\n\t\t'',\n\t\t...registry\n\t\t\t.select( blockEditorStore )\n\t\t\t.getBlockParents( destinationRootClientId ),\n\t\tdestinationRootClientId,\n\t];\n\tconst parentIndex = parents.indexOf( rootClientId );\n\tif ( parentIndex !== -1 ) {\n\t\treturn (\n\t\t\tregistry\n\t\t\t\t.select( blockEditorStore )\n\t\t\t\t.getBlockIndex( parents[ parentIndex + 1 ] ) + 1\n\t\t);\n\t}\n\treturn registry.select( blockEditorStore ).getBlockOrder( rootClientId )\n\t\t.length;\n}\n\n/**\n * @typedef WPInserterConfig\n *\n * @property {string=} rootClientId If set, insertion will be into the\n * block with this ID.\n * @property {number=} insertionIndex If set, insertion will be into this\n * explicit position.\n * @property {string=} clientId If set, insertion will be after the\n * block with this ID.\n * @property {boolean=} isAppender Whether the inserter is an appender\n * or not.\n * @property {Function=} onSelect Called after insertion.\n */\n\n/**\n * Returns the insertion point state given the inserter config.\n *\n * @param {WPInserterConfig} config Inserter Config.\n * @return {Array} Insertion Point State (rootClientID, onInsertBlocks and onToggle).\n */\nfunction useInsertionPoint( {\n\trootClientId = '',\n\tinsertionIndex,\n\tclientId,\n\tisAppender,\n\tonSelect,\n\tshouldFocusBlock = true,\n\tselectBlockOnInsert = true,\n} ) {\n\tconst registry = useRegistry();\n\tconst { getSelectedBlock } = useSelect( blockEditorStore );\n\tconst { destinationRootClientId, destinationIndex } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\tgetBlockRootClientId,\n\t\t\t\tgetBlockIndex,\n\t\t\t\tgetBlockOrder,\n\t\t\t\tgetSectionRootClientId,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\tconst selectedBlockClientId = getSelectedBlockClientId();\n\n\t\t\tlet _destinationRootClientId = rootClientId;\n\t\t\tlet _destinationIndex;\n\n\t\t\tif ( insertionIndex !== undefined ) {\n\t\t\t\t// Insert into a specific index.\n\t\t\t\t_destinationIndex = insertionIndex;\n\t\t\t} else if ( clientId ) {\n\t\t\t\t// Insert after a specific client ID.\n\t\t\t\t_destinationIndex = getBlockIndex( clientId );\n\t\t\t} else if ( ! isAppender && selectedBlockClientId ) {\n\t\t\t\tconst sectionRootClientId = getSectionRootClientId();\n\n\t\t\t\t// Avoids empty inserter when the selected block is acting\n\t\t\t\t// as the \"root\".\n\t\t\t\t// See https://github.com/WordPress/gutenberg/pull/66214.\n\t\t\t\tif (\n\t\t\t\t\t__unstableGetEditorMode() === 'zoom-out' &&\n\t\t\t\t\tsectionRootClientId === selectedBlockClientId\n\t\t\t\t) {\n\t\t\t\t\t_destinationRootClientId = sectionRootClientId;\n\t\t\t\t\t_destinationIndex = getBlockOrder(\n\t\t\t\t\t\t_destinationRootClientId\n\t\t\t\t\t).length;\n\t\t\t\t} else {\n\t\t\t\t\t_destinationRootClientId = getBlockRootClientId(\n\t\t\t\t\t\tselectedBlockClientId\n\t\t\t\t\t);\n\t\t\t\t\t_destinationIndex =\n\t\t\t\t\t\tgetBlockIndex( selectedBlockClientId ) + 1;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Insert at the end of the list.\n\t\t\t\t_destinationIndex = getBlockOrder(\n\t\t\t\t\t_destinationRootClientId\n\t\t\t\t).length;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdestinationRootClientId: _destinationRootClientId,\n\t\t\t\tdestinationIndex: _destinationIndex,\n\t\t\t};\n\t\t},\n\t\t[ rootClientId, insertionIndex, clientId, isAppender ]\n\t);\n\n\tconst {\n\t\treplaceBlocks,\n\t\tinsertBlocks,\n\t\tshowInsertionPoint,\n\t\thideInsertionPoint,\n\t\tsetLastFocus,\n\t} = unlock( useDispatch( blockEditorStore ) );\n\n\tconst onInsertBlocks = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock = false, _rootClientId ) => {\n\t\t\t// When we are trying to move focus or select a new block on insert, we also\n\t\t\t// need to clear the last focus to avoid the focus being set to the wrong block\n\t\t\t// when tabbing back into the canvas if the block was added from outside the\n\t\t\t// editor canvas.\n\t\t\tif (\n\t\t\t\tshouldForceFocusBlock ||\n\t\t\t\tshouldFocusBlock ||\n\t\t\t\tselectBlockOnInsert\n\t\t\t) {\n\t\t\t\tsetLastFocus( null );\n\t\t\t}\n\n\t\t\tconst selectedBlock = getSelectedBlock();\n\n\t\t\tif (\n\t\t\t\t! isAppender &&\n\t\t\t\tselectedBlock &&\n\t\t\t\tisUnmodifiedDefaultBlock( selectedBlock )\n\t\t\t) {\n\t\t\t\treplaceBlocks(\n\t\t\t\t\tselectedBlock.clientId,\n\t\t\t\t\tblocks,\n\t\t\t\t\tnull,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tinsertBlocks(\n\t\t\t\t\tblocks,\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationIndex\n\t\t\t\t\t\t: getIndex( {\n\t\t\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\t\t\trootClientId: _rootClientId,\n\t\t\t\t\t\t\t\tregistry,\n\t\t\t\t\t\t } ),\n\t\t\t\t\tisAppender || _rootClientId === undefined\n\t\t\t\t\t\t? destinationRootClientId\n\t\t\t\t\t\t: _rootClientId,\n\t\t\t\t\tselectBlockOnInsert,\n\t\t\t\t\tshouldFocusBlock || shouldForceFocusBlock ? 0 : null,\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst blockLength = Array.isArray( blocks ) ? blocks.length : 1;\n\t\t\tconst message = sprintf(\n\t\t\t\t// translators: %d: the name of the block that has been added\n\t\t\t\t_n( '%d block added.', '%d blocks added.', blockLength ),\n\t\t\t\tblockLength\n\t\t\t);\n\t\t\tspeak( message );\n\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( blocks );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tisAppender,\n\t\t\tgetSelectedBlock,\n\t\t\treplaceBlocks,\n\t\t\tinsertBlocks,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t\tonSelect,\n\t\t\tshouldFocusBlock,\n\t\t\tselectBlockOnInsert,\n\t\t]\n\t);\n\n\tconst onToggleInsertionPoint = useCallback(\n\t\t( item ) => {\n\t\t\tif ( item?.hasOwnProperty( 'rootClientId' ) ) {\n\t\t\t\tshowInsertionPoint(\n\t\t\t\t\titem.rootClientId,\n\t\t\t\t\tgetIndex( {\n\t\t\t\t\t\tdestinationRootClientId,\n\t\t\t\t\t\tdestinationIndex,\n\t\t\t\t\t\trootClientId: item.rootClientId,\n\t\t\t\t\t\tregistry,\n\t\t\t\t\t} )\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\thideInsertionPoint();\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\tshowInsertionPoint,\n\t\t\thideInsertionPoint,\n\t\t\tdestinationRootClientId,\n\t\t\tdestinationIndex,\n\t\t]\n\t);\n\n\treturn [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ];\n}\n\nexport default useInsertionPoint;\n"],"mappings":"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","ignoreList":[]}
@@ -4,7 +4,7 @@
4
4
  import { __ } from '@wordpress/i18n';
5
5
  import { useViewportMatch } from '@wordpress/compose';
6
6
  import { Button } from '@wordpress/components';
7
- import { useCallback, useMemo } from '@wordpress/element';
7
+ import { useCallback, useEffect, useMemo } from '@wordpress/element';
8
8
 
9
9
  /**
10
10
  * Internal dependencies
@@ -25,6 +25,7 @@ function MediaTab({
25
25
  rootClientId,
26
26
  selectedCategory,
27
27
  onSelectCategory,
28
+ setHasCategories,
28
29
  onInsert,
29
30
  children
30
31
  }) {
@@ -42,6 +43,9 @@ function MediaTab({
42
43
  ...mediaCategory,
43
44
  label: mediaCategory.labels.name
44
45
  })), [mediaCategories]);
46
+ useEffect(() => {
47
+ setHasCategories(!!categories.length);
48
+ }, [categories, setHasCategories]);
45
49
  if (!categories.length) {
46
50
  return /*#__PURE__*/_jsx(InserterNoResults, {});
47
51
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__","useViewportMatch","Button","useCallback","useMemo","MediaCategoryPanel","MediaUploadCheck","MediaUpload","useMediaCategories","getBlockAndPreviewFromMedia","MobileTabNavigation","CategoryTabs","InserterNoResults","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ALLOWED_MEDIA_TYPES","MediaTab","rootClientId","selectedCategory","onSelectCategory","onInsert","children","mediaCategories","isMobile","baseCssClass","onSelectMedia","media","url","block","type","categories","map","mediaCategory","label","labels","name","length","className","multiple","onSelect","allowedTypes","render","open","__next40pxDefaultSize","onClick","event","target","focus","variant","category"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Button } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { MediaCategoryPanel } from './media-panel';\nimport MediaUploadCheck from '../../media-upload/check';\nimport MediaUpload from '../../media-upload';\nimport { useMediaCategories } from './hooks';\nimport { getBlockAndPreviewFromMedia } from './utils';\nimport MobileTabNavigation from '../mobile-tab-navigation';\nimport CategoryTabs from '../category-tabs';\nimport InserterNoResults from '../no-results';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image', 'video', 'audio' ];\n\nfunction MediaTab( {\n\trootClientId,\n\tselectedCategory,\n\tonSelectCategory,\n\tonInsert,\n\tchildren,\n} ) {\n\tconst mediaCategories = useMediaCategories( rootClientId );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tconst baseCssClass = 'block-editor-inserter__media-tabs';\n\tconst onSelectMedia = useCallback(\n\t\t( media ) => {\n\t\t\tif ( ! media?.url ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [ block ] = getBlockAndPreviewFromMedia( media, media.type );\n\t\t\tonInsert( block );\n\t\t},\n\t\t[ onInsert ]\n\t);\n\tconst categories = useMemo(\n\t\t() =>\n\t\t\tmediaCategories.map( ( mediaCategory ) => ( {\n\t\t\t\t...mediaCategory,\n\t\t\t\tlabel: mediaCategory.labels.name,\n\t\t\t} ) ),\n\t\t[ mediaCategories ]\n\t);\n\n\tif ( ! categories.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className={ `${ baseCssClass }-container` }>\n\t\t\t\t\t<CategoryTabs\n\t\t\t\t\t\tcategories={ categories }\n\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\tonSelectCategory={ onSelectCategory }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</CategoryTabs>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\tmultiple={ false }\n\t\t\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t// Safari doesn't emit a focus event on button elements when\n\t\t\t\t\t\t\t\t\t\t// clicked and we need to manually focus the button here.\n\t\t\t\t\t\t\t\t\t\t// The reason is that core's Media Library modal explicitly triggers a\n\t\t\t\t\t\t\t\t\t\t// focus event and therefore a `blur` event is triggered on a different\n\t\t\t\t\t\t\t\t\t\t// element, which doesn't contain the `data-unstable-ignore-focus-outside-for-relatedtarget`\n\t\t\t\t\t\t\t\t\t\t// attribute making the Inserter dialog to close.\n\t\t\t\t\t\t\t\t\t\tevent.target.focus();\n\t\t\t\t\t\t\t\t\t\topen();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-library-button\"\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tdata-unstable-ignore-focus-outside-for-relatedtarget=\".media-modal\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default MediaTab;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","useViewportMatch","Button","useCallback","useEffect","useMemo","MediaCategoryPanel","MediaUploadCheck","MediaUpload","useMediaCategories","getBlockAndPreviewFromMedia","MobileTabNavigation","CategoryTabs","InserterNoResults","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","ALLOWED_MEDIA_TYPES","MediaTab","rootClientId","selectedCategory","onSelectCategory","setHasCategories","onInsert","children","mediaCategories","isMobile","baseCssClass","onSelectMedia","media","url","block","type","categories","map","mediaCategory","label","labels","name","length","className","multiple","onSelect","allowedTypes","render","open","__next40pxDefaultSize","onClick","event","target","focus","variant","category"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/media-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport { Button } from '@wordpress/components';\nimport { useCallback, useEffect, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { MediaCategoryPanel } from './media-panel';\nimport MediaUploadCheck from '../../media-upload/check';\nimport MediaUpload from '../../media-upload';\nimport { useMediaCategories } from './hooks';\nimport { getBlockAndPreviewFromMedia } from './utils';\nimport MobileTabNavigation from '../mobile-tab-navigation';\nimport CategoryTabs from '../category-tabs';\nimport InserterNoResults from '../no-results';\n\nconst ALLOWED_MEDIA_TYPES = [ 'image', 'video', 'audio' ];\n\nfunction MediaTab( {\n\trootClientId,\n\tselectedCategory,\n\tonSelectCategory,\n\tsetHasCategories,\n\tonInsert,\n\tchildren,\n} ) {\n\tconst mediaCategories = useMediaCategories( rootClientId );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\tconst baseCssClass = 'block-editor-inserter__media-tabs';\n\tconst onSelectMedia = useCallback(\n\t\t( media ) => {\n\t\t\tif ( ! media?.url ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst [ block ] = getBlockAndPreviewFromMedia( media, media.type );\n\t\t\tonInsert( block );\n\t\t},\n\t\t[ onInsert ]\n\t);\n\tconst categories = useMemo(\n\t\t() =>\n\t\t\tmediaCategories.map( ( mediaCategory ) => ( {\n\t\t\t\t...mediaCategory,\n\t\t\t\tlabel: mediaCategory.labels.name,\n\t\t\t} ) ),\n\t\t[ mediaCategories ]\n\t);\n\n\tuseEffect( () => {\n\t\tsetHasCategories( !! categories.length );\n\t}, [ categories, setHasCategories ] );\n\n\tif ( ! categories.length ) {\n\t\treturn <InserterNoResults />;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className={ `${ baseCssClass }-container` }>\n\t\t\t\t\t<CategoryTabs\n\t\t\t\t\t\tcategories={ categories }\n\t\t\t\t\t\tselectedCategory={ selectedCategory }\n\t\t\t\t\t\tonSelectCategory={ onSelectCategory }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</CategoryTabs>\n\t\t\t\t\t<MediaUploadCheck>\n\t\t\t\t\t\t<MediaUpload\n\t\t\t\t\t\t\tmultiple={ false }\n\t\t\t\t\t\t\tonSelect={ onSelectMedia }\n\t\t\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\t\t\trender={ ( { open } ) => (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\t\t\t\t\t\t// Safari doesn't emit a focus event on button elements when\n\t\t\t\t\t\t\t\t\t\t// clicked and we need to manually focus the button here.\n\t\t\t\t\t\t\t\t\t\t// The reason is that core's Media Library modal explicitly triggers a\n\t\t\t\t\t\t\t\t\t\t// focus event and therefore a `blur` event is triggered on a different\n\t\t\t\t\t\t\t\t\t\t// element, which doesn't contain the `data-unstable-ignore-focus-outside-for-relatedtarget`\n\t\t\t\t\t\t\t\t\t\t// attribute making the Inserter dialog to close.\n\t\t\t\t\t\t\t\t\t\tevent.target.focus();\n\t\t\t\t\t\t\t\t\t\topen();\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__media-library-button\"\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t\tdata-unstable-ignore-focus-outside-for-relatedtarget=\".media-modal\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Open Media Library' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</MediaUploadCheck>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default MediaTab;\n"],"mappings":"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","ignoreList":[]}
@@ -51,6 +51,7 @@ function InserterMenu({
51
51
  const [selectedPatternCategory, setSelectedPatternCategory] = useState(__experimentalInitialCategory);
52
52
  const [patternFilter, setPatternFilter] = useState('all');
53
53
  const [selectedMediaCategory, setSelectedMediaCategory] = useState(null);
54
+ const [hasCategories, setHasCategories] = useState(true);
54
55
  function getInitialTab() {
55
56
  if (__experimentalInitialTab) {
56
57
  return __experimentalInitialTab;
@@ -98,8 +99,8 @@ function InserterMenu({
98
99
  setPatternFilter(filter);
99
100
  onPatternCategorySelection?.();
100
101
  }, [setSelectedPatternCategory, onPatternCategorySelection]);
101
- const showPatternPanel = selectedTab === 'patterns' && !delayedFilterValue && !!selectedPatternCategory;
102
- const showMediaPanel = selectedTab === 'media' && !!selectedMediaCategory;
102
+ const showPatternPanel = selectedTab === 'patterns' && hasCategories && !delayedFilterValue && !!selectedPatternCategory;
103
+ const showMediaPanel = selectedTab === 'media' && !!selectedMediaCategory && hasCategories;
103
104
  const inserterSearch = useMemo(() => {
104
105
  if (selectedTab === 'media') {
105
106
  return null;
@@ -157,6 +158,7 @@ function InserterMenu({
157
158
  onInsert: onInsertPattern,
158
159
  onSelectCategory: onClickPatternCategory,
159
160
  selectedCategory: selectedPatternCategory,
161
+ setHasCategories: setHasCategories,
160
162
  children: showPatternPanel && /*#__PURE__*/_jsx(PatternCategoryPreviews, {
161
163
  rootClientId: destinationRootClientId,
162
164
  onInsert: onInsertPattern,
@@ -172,6 +174,7 @@ function InserterMenu({
172
174
  selectedCategory: selectedMediaCategory,
173
175
  onSelectCategory: setSelectedMediaCategory,
174
176
  onInsert: onInsert,
177
+ setHasCategories: setHasCategories,
175
178
  children: showMediaPanel && /*#__PURE__*/_jsx(MediaCategoryPanel, {
176
179
  rootClientId: destinationRootClientId,
177
180
  onInsert: onInsert,
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","forwardRef","useState","useCallback","useMemo","useRef","useLayoutEffect","VisuallyHidden","SearchControl","Popover","__","useDebouncedInput","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTab","PatternCategoryPreviews","MediaTab","MediaCategoryPanel","InserterSearchResults","useInsertionPoint","store","blockEditorStore","TabbedSidebar","useZoomOut","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","NOOP","InserterMenu","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","onPatternCategorySelection","onClose","__experimentalInitialTab","__experimentalInitialCategory","ref","isZoomOutMode","select","__unstableGetEditorMode","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","patternFilter","setPatternFilter","selectedMediaCategory","setSelectedMediaCategory","getInitialTab","selectedTab","setSelectedTab","shouldUseZoomOut","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","blockTypesTabRef","onInsert","blocks","meta","shouldForceFocusBlock","_rootClientId","window","requestAnimationFrame","current","contains","ownerDocument","activeElement","querySelector","focus","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","filter","showPatternPanel","showMediaPanel","inserterSearch","children","__nextHasNoMarginBottom","className","onChange","value","label","placeholder","showBlockDirectory","prioritizePatterns","blocksTab","as","patternsTab","onSelectCategory","selectedCategory","category","showTitlesAsTooltip","mediaTab","handleSetSelectedTab","tabsRef","closeButtonLabel","tabs","name","title","panel","placement","offset","focusOnMount","animate","PrivateInserterMenu","PublicInserterMenu","props"],"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseRef,\n\tuseLayoutEffect,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl, Popover } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDebouncedInput } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Tips from './tips';\nimport InserterPreviewPanel from './preview-panel';\nimport BlockTypesTab from './block-types-tab';\nimport BlockPatternsTab from './block-patterns-tab';\nimport { PatternCategoryPreviews } from './block-patterns-tab/pattern-category-previews';\nimport { MediaTab, MediaCategoryPanel } from './media-tab';\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport { store as blockEditorStore } from '../../store';\nimport TabbedSidebar from '../tabbed-sidebar';\nimport { useZoomOut } from '../../hooks/use-zoom-out';\n\nconst NOOP = () => {};\nfunction InserterMenu(\n\t{\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\t__experimentalInsertionIndex,\n\t\tonSelect,\n\t\tshowInserterHelpPanel,\n\t\tshowMostUsedBlocks,\n\t\t__experimentalFilterValue = '',\n\t\tshouldFocusBlock = true,\n\t\tonPatternCategorySelection,\n\t\tonClose,\n\t\t__experimentalInitialTab,\n\t\t__experimentalInitialCategory,\n\t},\n\tref\n) {\n\tconst isZoomOutMode = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).__unstableGetEditorMode() === 'zoom-out',\n\t\t[]\n\t);\n\tconst [ filterValue, setFilterValue, delayedFilterValue ] =\n\t\tuseDebouncedInput( __experimentalFilterValue );\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] = useState(\n\t\t__experimentalInitialCategory\n\t);\n\tconst [ patternFilter, setPatternFilter ] = useState( 'all' );\n\tconst [ selectedMediaCategory, setSelectedMediaCategory ] =\n\t\tuseState( null );\n\tfunction getInitialTab() {\n\t\tif ( __experimentalInitialTab ) {\n\t\t\treturn __experimentalInitialTab;\n\t\t}\n\n\t\tif ( isZoomOutMode ) {\n\t\t\treturn 'patterns';\n\t\t}\n\t}\n\tconst [ selectedTab, setSelectedTab ] = useState( getInitialTab() );\n\n\tconst shouldUseZoomOut =\n\t\tselectedTab === 'patterns' || selectedTab === 'media';\n\tuseZoomOut( shouldUseZoomOut );\n\n\tconst [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ] =\n\t\tuseInsertionPoint( {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\t\tshouldFocusBlock,\n\t\t} );\n\tconst blockTypesTabRef = useRef();\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock, _rootClientId ) => {\n\t\t\tonInsertBlocks(\n\t\t\t\tblocks,\n\t\t\t\tmeta,\n\t\t\t\tshouldForceFocusBlock,\n\t\t\t\t_rootClientId\n\t\t\t);\n\t\t\tonSelect( blocks );\n\n\t\t\t// Check for focus loss due to filtering blocks by selected block type\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\tif (\n\t\t\t\t\t! shouldFocusBlock &&\n\t\t\t\t\t! blockTypesTabRef.current?.contains(\n\t\t\t\t\t\tref.current.ownerDocument.activeElement\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// There has been a focus loss, so focus the first button in the block types tab\n\t\t\t\t\tblockTypesTabRef.current?.querySelector( 'button' ).focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t[ onInsertBlocks, onSelect, shouldFocusBlock ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName ) => {\n\t\t\tonToggleInsertionPoint( false );\n\t\t\tonInsertBlocks( blocks, { patternName } );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onHover = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( item );\n\t\t\tsetHoveredItem( item );\n\t\t},\n\t\t[ onToggleInsertionPoint, setHoveredItem ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory, filter ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t\tsetPatternFilter( filter );\n\t\t\tonPatternCategorySelection?.();\n\t\t},\n\t\t[ setSelectedPatternCategory, onPatternCategorySelection ]\n\t);\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' &&\n\t\t! delayedFilterValue &&\n\t\t!! selectedPatternCategory;\n\n\tconst showMediaPanel = selectedTab === 'media' && !! selectedMediaCategory;\n\n\tconst inserterSearch = useMemo( () => {\n\t\tif ( selectedTab === 'media' ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tif ( hoveredItem ) {\n\t\t\t\t\t\t\tsetHoveredItem( null );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t\t{ !! delayedFilterValue && (\n\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\tfilterValue={ delayedFilterValue }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\tprioritizePatterns={ selectedTab === 'patterns' }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [\n\t\tselectedTab,\n\t\thoveredItem,\n\t\tsetHoveredItem,\n\t\tsetFilterValue,\n\t\tfilterValue,\n\t\tdelayedFilterValue,\n\t\tonSelect,\n\t\tonHover,\n\t\tshouldFocusBlock,\n\t\tclientId,\n\t\trootClientId,\n\t\t__experimentalInsertionIndex,\n\t\tisAppender,\n\t] );\n\n\tconst blocksTab = useMemo( () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div className=\"block-editor-inserter__block-list\">\n\t\t\t\t\t<BlockTypesTab\n\t\t\t\t\t\tref={ blockTypesTabRef }\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ showInserterHelpPanel && (\n\t\t\t\t\t<div className=\"block-editor-inserter__tips\">\n\t\t\t\t\t\t<VisuallyHidden as=\"h2\">\n\t\t\t\t\t\t\t{ __( 'A tip for using the block editor' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t<Tips />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsert,\n\t\tonHover,\n\t\tshowMostUsedBlocks,\n\t\tshowInserterHelpPanel,\n\t] );\n\n\tconst patternsTab = useMemo( () => {\n\t\treturn (\n\t\t\t<BlockPatternsTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\tonSelectCategory={ onClickPatternCategory }\n\t\t\t\tselectedCategory={ selectedPatternCategory }\n\t\t\t>\n\t\t\t\t{ showPatternPanel && (\n\t\t\t\t\t<PatternCategoryPreviews\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockPatternsTab>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsertPattern,\n\t\tonClickPatternCategory,\n\t\tpatternFilter,\n\t\tselectedPatternCategory,\n\t\tshowPatternPanel,\n\t] );\n\n\tconst mediaTab = useMemo( () => {\n\t\treturn (\n\t\t\t<MediaTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tselectedCategory={ selectedMediaCategory }\n\t\t\t\tonSelectCategory={ setSelectedMediaCategory }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t>\n\t\t\t\t{ showMediaPanel && (\n\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tcategory={ selectedMediaCategory }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</MediaTab>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsert,\n\t\tselectedMediaCategory,\n\t\tsetSelectedMediaCategory,\n\t\tshowMediaPanel,\n\t] );\n\n\tconst handleSetSelectedTab = ( value ) => {\n\t\t// If no longer on patterns tab remove the category setting.\n\t\tif ( value !== 'patterns' ) {\n\t\t\tsetSelectedPatternCategory( null );\n\t\t}\n\t\tsetSelectedTab( value );\n\t};\n\n\t// Focus first active tab, if any\n\tconst tabsRef = useRef();\n\tuseLayoutEffect( () => {\n\t\tif ( tabsRef.current ) {\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\ttabsRef.current\n\t\t\t\t\t.querySelector( '[role=\"tab\"][aria-selected=\"true\"]' )\n\t\t\t\t\t?.focus();\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'block-editor-inserter__menu', {\n\t\t\t\t'show-panel': showPatternPanel || showMediaPanel,\n\t\t\t\t'is-zoom-out': isZoomOutMode,\n\t\t\t} ) }\n\t\t\tref={ ref }\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__main-area\">\n\t\t\t\t<TabbedSidebar\n\t\t\t\t\tref={ tabsRef }\n\t\t\t\t\tonSelect={ handleSetSelectedTab }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\tselectedTab={ selectedTab }\n\t\t\t\t\tcloseButtonLabel={ __( 'Close block inserter' ) }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'blocks',\n\t\t\t\t\t\t\ttitle: __( 'Blocks' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ selectedTab === 'blocks' &&\n\t\t\t\t\t\t\t\t\t\t! delayedFilterValue &&\n\t\t\t\t\t\t\t\t\t\tblocksTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'patterns',\n\t\t\t\t\t\t\ttitle: __( 'Patterns' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ selectedTab === 'patterns' &&\n\t\t\t\t\t\t\t\t\t\t! delayedFilterValue &&\n\t\t\t\t\t\t\t\t\t\tpatternsTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'media',\n\t\t\t\t\t\t\ttitle: __( 'Media' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ mediaTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<Popover\n\t\t\t\t\tclassName=\"block-editor-inserter__preview-container__popover\"\n\t\t\t\t\tplacement=\"right-start\"\n\t\t\t\t\toffset={ 16 }\n\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\tanimate={ false }\n\t\t\t\t>\n\t\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const PrivateInserterMenu = forwardRef( InserterMenu );\n\nfunction PublicInserterMenu( props, ref ) {\n\treturn (\n\t\t<PrivateInserterMenu\n\t\t\t{ ...props }\n\t\t\tonPatternCategorySelection={ NOOP }\n\t\t\tref={ ref }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( PublicInserterMenu );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SACCC,UAAU,EACVC,QAAQ,EACRC,WAAW,EACXC,OAAO,EACPC,MAAM,EACNC,eAAe,QACT,oBAAoB;AAC3B,SAASC,cAAc,EAAEC,aAAa,EAAEC,OAAO,QAAQ,uBAAuB;AAC9E,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,iBAAiB,QAAQ,oBAAoB;AACtD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,oBAAoB,MAAM,iBAAiB;AAClD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,SAASC,uBAAuB,QAAQ,gDAAgD;AACxF,SAASC,QAAQ,EAAEC,kBAAkB,QAAQ,aAAa;AAC1D,OAAOC,qBAAqB,MAAM,kBAAkB;AACpD,OAAOC,iBAAiB,MAAM,6BAA6B;AAC3D,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,SAASC,UAAU,QAAQ,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEtD,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AACrB,SAASC,YAAYA,CACpB;EACCC,YAAY;EACZC,QAAQ;EACRC,UAAU;EACVC,4BAA4B;EAC5BC,QAAQ;EACRC,qBAAqB;EACrBC,kBAAkB;EAClBC,yBAAyB,GAAG,EAAE;EAC9BC,gBAAgB,GAAG,IAAI;EACvBC,0BAA0B;EAC1BC,OAAO;EACPC,wBAAwB;EACxBC;AACD,CAAC,EACDC,GAAG,EACF;EACD,MAAMC,aAAa,GAAGpC,SAAS,CAC5BqC,MAAM,IACPA,MAAM,CAAE1B,gBAAiB,CAAC,CAAC2B,uBAAuB,CAAC,CAAC,KAAK,UAAU,EACpE,EACD,CAAC;EACD,MAAM,CAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,CAAE,GACxD1C,iBAAiB,CAAE8B,yBAA0B,CAAC;EAC/C,MAAM,CAAEa,WAAW,EAAEC,cAAc,CAAE,GAAGrD,QAAQ,CAAE,IAAK,CAAC;EACxD,MAAM,CAAEsD,uBAAuB,EAAEC,0BAA0B,CAAE,GAAGvD,QAAQ,CACvE4C,6BACD,CAAC;EACD,MAAM,CAAEY,aAAa,EAAEC,gBAAgB,CAAE,GAAGzD,QAAQ,CAAE,KAAM,CAAC;EAC7D,MAAM,CAAE0D,qBAAqB,EAAEC,wBAAwB,CAAE,GACxD3D,QAAQ,CAAE,IAAK,CAAC;EACjB,SAAS4D,aAAaA,CAAA,EAAG;IACxB,IAAKjB,wBAAwB,EAAG;MAC/B,OAAOA,wBAAwB;IAChC;IAEA,IAAKG,aAAa,EAAG;MACpB,OAAO,UAAU;IAClB;EACD;EACA,MAAM,CAAEe,WAAW,EAAEC,cAAc,CAAE,GAAG9D,QAAQ,CAAE4D,aAAa,CAAC,CAAE,CAAC;EAEnE,MAAMG,gBAAgB,GACrBF,WAAW,KAAK,UAAU,IAAIA,WAAW,KAAK,OAAO;EACtDtC,UAAU,CAAEwC,gBAAiB,CAAC;EAE9B,MAAM,CAAEC,uBAAuB,EAAEC,cAAc,EAAEC,sBAAsB,CAAE,GACxE/C,iBAAiB,CAAE;IAClBa,YAAY;IACZC,QAAQ;IACRC,UAAU;IACViC,cAAc,EAAEhC,4BAA4B;IAC5CK;EACD,CAAE,CAAC;EACJ,MAAM4B,gBAAgB,GAAGjE,MAAM,CAAC,CAAC;EAEjC,MAAMkE,QAAQ,GAAGpE,WAAW,CAC3B,CAAEqE,MAAM,EAAEC,IAAI,EAAEC,qBAAqB,EAAEC,aAAa,KAAM;IACzDR,cAAc,CACbK,MAAM,EACNC,IAAI,EACJC,qBAAqB,EACrBC,aACD,CAAC;IACDrC,QAAQ,CAAEkC,MAAO,CAAC;;IAElB;IACAI,MAAM,CAACC,qBAAqB,CAAE,MAAM;MACnC,IACC,CAAEnC,gBAAgB,IAClB,CAAE4B,gBAAgB,CAACQ,OAAO,EAAEC,QAAQ,CACnChC,GAAG,CAAC+B,OAAO,CAACE,aAAa,CAACC,aAC3B,CAAC,EACA;QACD;QACAX,gBAAgB,CAACQ,OAAO,EAAEI,aAAa,CAAE,QAAS,CAAC,CAACC,KAAK,CAAC,CAAC;MAC5D;IACD,CAAE,CAAC;EACJ,CAAC,EACD,CAAEhB,cAAc,EAAE7B,QAAQ,EAAEI,gBAAgB,CAC7C,CAAC;EAED,MAAM0C,eAAe,GAAGjF,WAAW,CAClC,CAAEqE,MAAM,EAAEa,WAAW,KAAM;IAC1BjB,sBAAsB,CAAE,KAAM,CAAC;IAC/BD,cAAc,CAAEK,MAAM,EAAE;MAAEa;IAAY,CAAE,CAAC;IACzC/C,QAAQ,CAAC,CAAC;EACX,CAAC,EACD,CAAE6B,cAAc,EAAE7B,QAAQ,CAC3B,CAAC;EAED,MAAMgD,OAAO,GAAGnF,WAAW,CACxBoF,IAAI,IAAM;IACXnB,sBAAsB,CAAEmB,IAAK,CAAC;IAC9BhC,cAAc,CAAEgC,IAAK,CAAC;EACvB,CAAC,EACD,CAAEnB,sBAAsB,EAAEb,cAAc,CACzC,CAAC;EAED,MAAMiC,sBAAsB,GAAGrF,WAAW,CACzC,CAAEsF,eAAe,EAAEC,MAAM,KAAM;IAC9BjC,0BAA0B,CAAEgC,eAAgB,CAAC;IAC7C9B,gBAAgB,CAAE+B,MAAO,CAAC;IAC1B/C,0BAA0B,GAAG,CAAC;EAC/B,CAAC,EACD,CAAEc,0BAA0B,EAAEd,0BAA0B,CACzD,CAAC;EAED,MAAMgD,gBAAgB,GACrB5B,WAAW,KAAK,UAAU,IAC1B,CAAEV,kBAAkB,IACpB,CAAC,CAAEG,uBAAuB;EAE3B,MAAMoC,cAAc,GAAG7B,WAAW,KAAK,OAAO,IAAI,CAAC,CAAEH,qBAAqB;EAE1E,MAAMiC,cAAc,GAAGzF,OAAO,CAAE,MAAM;IACrC,IAAK2D,WAAW,KAAK,OAAO,EAAG;MAC9B,OAAO,IAAI;IACZ;IAEA,oBACChC,KAAA,CAAAF,SAAA;MAAAiE,QAAA,gBACCnE,IAAA,CAACnB,aAAa;QACbuF,uBAAuB;QACvBC,SAAS,EAAC,+BAA+B;QACzCC,QAAQ,EAAKC,KAAK,IAAM;UACvB,IAAK5C,WAAW,EAAG;YAClBC,cAAc,CAAE,IAAK,CAAC;UACvB;UACAH,cAAc,CAAE8C,KAAM,CAAC;QACxB,CAAG;QACHA,KAAK,EAAG/C,WAAa;QACrBgD,KAAK,EAAGzF,EAAE,CAAE,gCAAiC,CAAG;QAChD0F,WAAW,EAAG1F,EAAE,CAAE,QAAS;MAAG,CAC9B,CAAC,EACA,CAAC,CAAE2C,kBAAkB,iBACtB1B,IAAA,CAACP,qBAAqB;QACrB+B,WAAW,EAAGE,kBAAoB;QAClCf,QAAQ,EAAGA,QAAU;QACrBgD,OAAO,EAAGA,OAAS;QACnBpD,YAAY,EAAGA,YAAc;QAC7BC,QAAQ,EAAGA,QAAU;QACrBC,UAAU,EAAGA,UAAY;QACzBC,4BAA4B,EAC3BA,4BACA;QACDgE,kBAAkB;QAClB3D,gBAAgB,EAAGA,gBAAkB;QACrC4D,kBAAkB,EAAGvC,WAAW,KAAK;MAAY,CACjD,CACD;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFA,WAAW,EACXT,WAAW,EACXC,cAAc,EACdH,cAAc,EACdD,WAAW,EACXE,kBAAkB,EAClBf,QAAQ,EACRgD,OAAO,EACP5C,gBAAgB,EAChBP,QAAQ,EACRD,YAAY,EACZG,4BAA4B,EAC5BD,UAAU,CACT,CAAC;EAEH,MAAMmE,SAAS,GAAGnG,OAAO,CAAE,MAAM;IAChC,oBACC2B,KAAA,CAAAF,SAAA;MAAAiE,QAAA,gBACCnE,IAAA;QAAKqE,SAAS,EAAC,mCAAmC;QAAAF,QAAA,eACjDnE,IAAA,CAACZ,aAAa;UACbgC,GAAG,EAAGuB,gBAAkB;UACxBpC,YAAY,EAAGgC,uBAAyB;UACxCK,QAAQ,EAAGA,QAAU;UACrBe,OAAO,EAAGA,OAAS;UACnB9C,kBAAkB,EAAGA;QAAoB,CACzC;MAAC,CACE,CAAC,EACJD,qBAAqB,iBACtBR,KAAA;QAAKiE,SAAS,EAAC,6BAA6B;QAAAF,QAAA,gBAC3CnE,IAAA,CAACpB,cAAc;UAACiG,EAAE,EAAC,IAAI;UAAAV,QAAA,EACpBpF,EAAE,CAAE,kCAAmC;QAAC,CAC3B,CAAC,eACjBiB,IAAA,CAACd,IAAI,IAAE,CAAC;MAAA,CACJ,CACL;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFqD,uBAAuB,EACvBK,QAAQ,EACRe,OAAO,EACP9C,kBAAkB,EAClBD,qBAAqB,CACpB,CAAC;EAEH,MAAMkE,WAAW,GAAGrG,OAAO,CAAE,MAAM;IAClC,oBACCuB,IAAA,CAACX,gBAAgB;MAChBkB,YAAY,EAAGgC,uBAAyB;MACxCK,QAAQ,EAAGa,eAAiB;MAC5BsB,gBAAgB,EAAGlB,sBAAwB;MAC3CmB,gBAAgB,EAAGnD,uBAAyB;MAAAsC,QAAA,EAE1CH,gBAAgB,iBACjBhE,IAAA,CAACV,uBAAuB;QACvBiB,YAAY,EAAGgC,uBAAyB;QACxCK,QAAQ,EAAGa,eAAiB;QAC5BwB,QAAQ,EAAGpD,uBAAyB;QACpCE,aAAa,EAAGA,aAAe;QAC/BmD,mBAAmB;MAAA,CACnB;IACD,CACgB,CAAC;EAErB,CAAC,EAAE,CACF3C,uBAAuB,EACvBkB,eAAe,EACfI,sBAAsB,EACtB9B,aAAa,EACbF,uBAAuB,EACvBmC,gBAAgB,CACf,CAAC;EAEH,MAAMmB,QAAQ,GAAG1G,OAAO,CAAE,MAAM;IAC/B,oBACCuB,IAAA,CAACT,QAAQ;MACRgB,YAAY,EAAGgC,uBAAyB;MACxCyC,gBAAgB,EAAG/C,qBAAuB;MAC1C8C,gBAAgB,EAAG7C,wBAA0B;MAC7CU,QAAQ,EAAGA,QAAU;MAAAuB,QAAA,EAEnBF,cAAc,iBACfjE,IAAA,CAACR,kBAAkB;QAClBe,YAAY,EAAGgC,uBAAyB;QACxCK,QAAQ,EAAGA,QAAU;QACrBqC,QAAQ,EAAGhD;MAAuB,CAClC;IACD,CACQ,CAAC;EAEb,CAAC,EAAE,CACFM,uBAAuB,EACvBK,QAAQ,EACRX,qBAAqB,EACrBC,wBAAwB,EACxB+B,cAAc,CACb,CAAC;EAEH,MAAMmB,oBAAoB,GAAKb,KAAK,IAAM;IACzC;IACA,IAAKA,KAAK,KAAK,UAAU,EAAG;MAC3BzC,0BAA0B,CAAE,IAAK,CAAC;IACnC;IACAO,cAAc,CAAEkC,KAAM,CAAC;EACxB,CAAC;;EAED;EACA,MAAMc,OAAO,GAAG3G,MAAM,CAAC,CAAC;EACxBC,eAAe,CAAE,MAAM;IACtB,IAAK0G,OAAO,CAAClC,OAAO,EAAG;MACtBF,MAAM,CAACC,qBAAqB,CAAE,MAAM;QACnCmC,OAAO,CAAClC,OAAO,CACbI,aAAa,CAAE,oCAAqC,CAAC,EACpDC,KAAK,CAAC,CAAC;MACX,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,EAAG,CAAC;EAEP,oBACCpD,KAAA;IACCiE,SAAS,EAAGhG,IAAI,CAAE,6BAA6B,EAAE;MAChD,YAAY,EAAE2F,gBAAgB,IAAIC,cAAc;MAChD,aAAa,EAAE5C;IAChB,CAAE,CAAG;IACLD,GAAG,EAAGA,GAAK;IAAA+C,QAAA,gBAEXnE,IAAA;MAAKqE,SAAS,EAAC,kCAAkC;MAAAF,QAAA,eAChDnE,IAAA,CAACH,aAAa;QACbuB,GAAG,EAAGiE,OAAS;QACf1E,QAAQ,EAAGyE,oBAAsB;QACjCnE,OAAO,EAAGA,OAAS;QACnBmB,WAAW,EAAGA,WAAa;QAC3BkD,gBAAgB,EAAGvG,EAAE,CAAE,sBAAuB,CAAG;QACjDwG,IAAI,EAAG,CACN;UACCC,IAAI,EAAE,QAAQ;UACdC,KAAK,EAAE1G,EAAE,CAAE,QAAS,CAAC;UACrB2G,KAAK,eACJtF,KAAA,CAAAF,SAAA;YAAAiE,QAAA,GACGD,cAAc,EACd9B,WAAW,KAAK,QAAQ,IACzB,CAAEV,kBAAkB,IACpBkD,SAAS;UAAA,CACT;QAEJ,CAAC,EACD;UACCY,IAAI,EAAE,UAAU;UAChBC,KAAK,EAAE1G,EAAE,CAAE,UAAW,CAAC;UACvB2G,KAAK,eACJtF,KAAA,CAAAF,SAAA;YAAAiE,QAAA,GACGD,cAAc,EACd9B,WAAW,KAAK,UAAU,IAC3B,CAAEV,kBAAkB,IACpBoD,WAAW;UAAA,CACX;QAEJ,CAAC,EACD;UACCU,IAAI,EAAE,OAAO;UACbC,KAAK,EAAE1G,EAAE,CAAE,OAAQ,CAAC;UACpB2G,KAAK,eACJtF,KAAA,CAAAF,SAAA;YAAAiE,QAAA,GACGD,cAAc,EACdiB,QAAQ;UAAA,CACT;QAEJ,CAAC;MACC,CACH;IAAC,CACE,CAAC,EACJvE,qBAAqB,IAAIe,WAAW,iBACrC3B,IAAA,CAAClB,OAAO;MACPuF,SAAS,EAAC,mDAAmD;MAC7DsB,SAAS,EAAC,aAAa;MACvBC,MAAM,EAAG,EAAI;MACbC,YAAY,EAAG,KAAO;MACtBC,OAAO,EAAG,KAAO;MAAA3B,QAAA,eAEjBnE,IAAA,CAACb,oBAAoB;QAACyE,IAAI,EAAGjC;MAAa,CAAE;IAAC,CACrC,CACT;EAAA,CACG,CAAC;AAER;AAEA,OAAO,MAAMoE,mBAAmB,GAAGzH,UAAU,CAAEgC,YAAa,CAAC;AAE7D,SAAS0F,kBAAkBA,CAAEC,KAAK,EAAE7E,GAAG,EAAG;EACzC,oBACCpB,IAAA,CAAC+F,mBAAmB;IAAA,GACdE,KAAK;IACVjF,0BAA0B,EAAGX,IAAM;IACnCe,GAAG,EAAGA;EAAK,CACX,CAAC;AAEJ;AAEA,eAAe9C,UAAU,CAAE0H,kBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["clsx","forwardRef","useState","useCallback","useMemo","useRef","useLayoutEffect","VisuallyHidden","SearchControl","Popover","__","useDebouncedInput","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTab","PatternCategoryPreviews","MediaTab","MediaCategoryPanel","InserterSearchResults","useInsertionPoint","store","blockEditorStore","TabbedSidebar","useZoomOut","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","NOOP","InserterMenu","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","onPatternCategorySelection","onClose","__experimentalInitialTab","__experimentalInitialCategory","ref","isZoomOutMode","select","__unstableGetEditorMode","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","patternFilter","setPatternFilter","selectedMediaCategory","setSelectedMediaCategory","hasCategories","setHasCategories","getInitialTab","selectedTab","setSelectedTab","shouldUseZoomOut","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","blockTypesTabRef","onInsert","blocks","meta","shouldForceFocusBlock","_rootClientId","window","requestAnimationFrame","current","contains","ownerDocument","activeElement","querySelector","focus","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","filter","showPatternPanel","showMediaPanel","inserterSearch","children","__nextHasNoMarginBottom","className","onChange","value","label","placeholder","showBlockDirectory","prioritizePatterns","blocksTab","as","patternsTab","onSelectCategory","selectedCategory","category","showTitlesAsTooltip","mediaTab","handleSetSelectedTab","tabsRef","closeButtonLabel","tabs","name","title","panel","placement","offset","focusOnMount","animate","PrivateInserterMenu","PublicInserterMenu","props"],"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseRef,\n\tuseLayoutEffect,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl, Popover } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDebouncedInput } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Tips from './tips';\nimport InserterPreviewPanel from './preview-panel';\nimport BlockTypesTab from './block-types-tab';\nimport BlockPatternsTab from './block-patterns-tab';\nimport { PatternCategoryPreviews } from './block-patterns-tab/pattern-category-previews';\nimport { MediaTab, MediaCategoryPanel } from './media-tab';\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport { store as blockEditorStore } from '../../store';\nimport TabbedSidebar from '../tabbed-sidebar';\nimport { useZoomOut } from '../../hooks/use-zoom-out';\n\nconst NOOP = () => {};\nfunction InserterMenu(\n\t{\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\t__experimentalInsertionIndex,\n\t\tonSelect,\n\t\tshowInserterHelpPanel,\n\t\tshowMostUsedBlocks,\n\t\t__experimentalFilterValue = '',\n\t\tshouldFocusBlock = true,\n\t\tonPatternCategorySelection,\n\t\tonClose,\n\t\t__experimentalInitialTab,\n\t\t__experimentalInitialCategory,\n\t},\n\tref\n) {\n\tconst isZoomOutMode = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).__unstableGetEditorMode() === 'zoom-out',\n\t\t[]\n\t);\n\tconst [ filterValue, setFilterValue, delayedFilterValue ] =\n\t\tuseDebouncedInput( __experimentalFilterValue );\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] = useState(\n\t\t__experimentalInitialCategory\n\t);\n\tconst [ patternFilter, setPatternFilter ] = useState( 'all' );\n\tconst [ selectedMediaCategory, setSelectedMediaCategory ] =\n\t\tuseState( null );\n\n\tconst [ hasCategories, setHasCategories ] = useState( true );\n\tfunction getInitialTab() {\n\t\tif ( __experimentalInitialTab ) {\n\t\t\treturn __experimentalInitialTab;\n\t\t}\n\n\t\tif ( isZoomOutMode ) {\n\t\t\treturn 'patterns';\n\t\t}\n\t}\n\tconst [ selectedTab, setSelectedTab ] = useState( getInitialTab() );\n\n\tconst shouldUseZoomOut =\n\t\tselectedTab === 'patterns' || selectedTab === 'media';\n\tuseZoomOut( shouldUseZoomOut );\n\n\tconst [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ] =\n\t\tuseInsertionPoint( {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\t\tshouldFocusBlock,\n\t\t} );\n\tconst blockTypesTabRef = useRef();\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock, _rootClientId ) => {\n\t\t\tonInsertBlocks(\n\t\t\t\tblocks,\n\t\t\t\tmeta,\n\t\t\t\tshouldForceFocusBlock,\n\t\t\t\t_rootClientId\n\t\t\t);\n\t\t\tonSelect( blocks );\n\n\t\t\t// Check for focus loss due to filtering blocks by selected block type\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\tif (\n\t\t\t\t\t! shouldFocusBlock &&\n\t\t\t\t\t! blockTypesTabRef.current?.contains(\n\t\t\t\t\t\tref.current.ownerDocument.activeElement\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// There has been a focus loss, so focus the first button in the block types tab\n\t\t\t\t\tblockTypesTabRef.current?.querySelector( 'button' ).focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t[ onInsertBlocks, onSelect, shouldFocusBlock ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName ) => {\n\t\t\tonToggleInsertionPoint( false );\n\t\t\tonInsertBlocks( blocks, { patternName } );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onHover = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( item );\n\t\t\tsetHoveredItem( item );\n\t\t},\n\t\t[ onToggleInsertionPoint, setHoveredItem ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory, filter ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t\tsetPatternFilter( filter );\n\t\t\tonPatternCategorySelection?.();\n\t\t},\n\t\t[ setSelectedPatternCategory, onPatternCategorySelection ]\n\t);\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' &&\n\t\thasCategories &&\n\t\t! delayedFilterValue &&\n\t\t!! selectedPatternCategory;\n\n\tconst showMediaPanel =\n\t\tselectedTab === 'media' && !! selectedMediaCategory && hasCategories;\n\n\tconst inserterSearch = useMemo( () => {\n\t\tif ( selectedTab === 'media' ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tif ( hoveredItem ) {\n\t\t\t\t\t\t\tsetHoveredItem( null );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tlabel={ __( 'Search for blocks and patterns' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t\t{ !! delayedFilterValue && (\n\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\tfilterValue={ delayedFilterValue }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\tprioritizePatterns={ selectedTab === 'patterns' }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [\n\t\tselectedTab,\n\t\thoveredItem,\n\t\tsetHoveredItem,\n\t\tsetFilterValue,\n\t\tfilterValue,\n\t\tdelayedFilterValue,\n\t\tonSelect,\n\t\tonHover,\n\t\tshouldFocusBlock,\n\t\tclientId,\n\t\trootClientId,\n\t\t__experimentalInsertionIndex,\n\t\tisAppender,\n\t] );\n\n\tconst blocksTab = useMemo( () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div className=\"block-editor-inserter__block-list\">\n\t\t\t\t\t<BlockTypesTab\n\t\t\t\t\t\tref={ blockTypesTabRef }\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ showInserterHelpPanel && (\n\t\t\t\t\t<div className=\"block-editor-inserter__tips\">\n\t\t\t\t\t\t<VisuallyHidden as=\"h2\">\n\t\t\t\t\t\t\t{ __( 'A tip for using the block editor' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t<Tips />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsert,\n\t\tonHover,\n\t\tshowMostUsedBlocks,\n\t\tshowInserterHelpPanel,\n\t] );\n\n\tconst patternsTab = useMemo( () => {\n\t\treturn (\n\t\t\t<BlockPatternsTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\tonSelectCategory={ onClickPatternCategory }\n\t\t\t\tselectedCategory={ selectedPatternCategory }\n\t\t\t\tsetHasCategories={ setHasCategories }\n\t\t\t>\n\t\t\t\t{ showPatternPanel && (\n\t\t\t\t\t<PatternCategoryPreviews\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockPatternsTab>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsertPattern,\n\t\tonClickPatternCategory,\n\t\tpatternFilter,\n\t\tselectedPatternCategory,\n\t\tshowPatternPanel,\n\t] );\n\n\tconst mediaTab = useMemo( () => {\n\t\treturn (\n\t\t\t<MediaTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tselectedCategory={ selectedMediaCategory }\n\t\t\t\tonSelectCategory={ setSelectedMediaCategory }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tsetHasCategories={ setHasCategories }\n\t\t\t>\n\t\t\t\t{ showMediaPanel && (\n\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tcategory={ selectedMediaCategory }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</MediaTab>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsert,\n\t\tselectedMediaCategory,\n\t\tsetSelectedMediaCategory,\n\t\tshowMediaPanel,\n\t] );\n\n\tconst handleSetSelectedTab = ( value ) => {\n\t\t// If no longer on patterns tab remove the category setting.\n\t\tif ( value !== 'patterns' ) {\n\t\t\tsetSelectedPatternCategory( null );\n\t\t}\n\t\tsetSelectedTab( value );\n\t};\n\n\t// Focus first active tab, if any\n\tconst tabsRef = useRef();\n\tuseLayoutEffect( () => {\n\t\tif ( tabsRef.current ) {\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\ttabsRef.current\n\t\t\t\t\t.querySelector( '[role=\"tab\"][aria-selected=\"true\"]' )\n\t\t\t\t\t?.focus();\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'block-editor-inserter__menu', {\n\t\t\t\t'show-panel': showPatternPanel || showMediaPanel,\n\t\t\t\t'is-zoom-out': isZoomOutMode,\n\t\t\t} ) }\n\t\t\tref={ ref }\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__main-area\">\n\t\t\t\t<TabbedSidebar\n\t\t\t\t\tref={ tabsRef }\n\t\t\t\t\tonSelect={ handleSetSelectedTab }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\tselectedTab={ selectedTab }\n\t\t\t\t\tcloseButtonLabel={ __( 'Close block inserter' ) }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'blocks',\n\t\t\t\t\t\t\ttitle: __( 'Blocks' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ selectedTab === 'blocks' &&\n\t\t\t\t\t\t\t\t\t\t! delayedFilterValue &&\n\t\t\t\t\t\t\t\t\t\tblocksTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'patterns',\n\t\t\t\t\t\t\ttitle: __( 'Patterns' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ selectedTab === 'patterns' &&\n\t\t\t\t\t\t\t\t\t\t! delayedFilterValue &&\n\t\t\t\t\t\t\t\t\t\tpatternsTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'media',\n\t\t\t\t\t\t\ttitle: __( 'Media' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ mediaTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<Popover\n\t\t\t\t\tclassName=\"block-editor-inserter__preview-container__popover\"\n\t\t\t\t\tplacement=\"right-start\"\n\t\t\t\t\toffset={ 16 }\n\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\tanimate={ false }\n\t\t\t\t>\n\t\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const PrivateInserterMenu = forwardRef( InserterMenu );\n\nfunction PublicInserterMenu( props, ref ) {\n\treturn (\n\t\t<PrivateInserterMenu\n\t\t\t{ ...props }\n\t\t\tonPatternCategorySelection={ NOOP }\n\t\t\tref={ ref }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( PublicInserterMenu );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SACCC,UAAU,EACVC,QAAQ,EACRC,WAAW,EACXC,OAAO,EACPC,MAAM,EACNC,eAAe,QACT,oBAAoB;AAC3B,SAASC,cAAc,EAAEC,aAAa,EAAEC,OAAO,QAAQ,uBAAuB;AAC9E,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,iBAAiB,QAAQ,oBAAoB;AACtD,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,oBAAoB,MAAM,iBAAiB;AAClD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,SAASC,uBAAuB,QAAQ,gDAAgD;AACxF,SAASC,QAAQ,EAAEC,kBAAkB,QAAQ,aAAa;AAC1D,OAAOC,qBAAqB,MAAM,kBAAkB;AACpD,OAAOC,iBAAiB,MAAM,6BAA6B;AAC3D,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,SAASC,UAAU,QAAQ,0BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEtD,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AACrB,SAASC,YAAYA,CACpB;EACCC,YAAY;EACZC,QAAQ;EACRC,UAAU;EACVC,4BAA4B;EAC5BC,QAAQ;EACRC,qBAAqB;EACrBC,kBAAkB;EAClBC,yBAAyB,GAAG,EAAE;EAC9BC,gBAAgB,GAAG,IAAI;EACvBC,0BAA0B;EAC1BC,OAAO;EACPC,wBAAwB;EACxBC;AACD,CAAC,EACDC,GAAG,EACF;EACD,MAAMC,aAAa,GAAGpC,SAAS,CAC5BqC,MAAM,IACPA,MAAM,CAAE1B,gBAAiB,CAAC,CAAC2B,uBAAuB,CAAC,CAAC,KAAK,UAAU,EACpE,EACD,CAAC;EACD,MAAM,CAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,CAAE,GACxD1C,iBAAiB,CAAE8B,yBAA0B,CAAC;EAC/C,MAAM,CAAEa,WAAW,EAAEC,cAAc,CAAE,GAAGrD,QAAQ,CAAE,IAAK,CAAC;EACxD,MAAM,CAAEsD,uBAAuB,EAAEC,0BAA0B,CAAE,GAAGvD,QAAQ,CACvE4C,6BACD,CAAC;EACD,MAAM,CAAEY,aAAa,EAAEC,gBAAgB,CAAE,GAAGzD,QAAQ,CAAE,KAAM,CAAC;EAC7D,MAAM,CAAE0D,qBAAqB,EAAEC,wBAAwB,CAAE,GACxD3D,QAAQ,CAAE,IAAK,CAAC;EAEjB,MAAM,CAAE4D,aAAa,EAAEC,gBAAgB,CAAE,GAAG7D,QAAQ,CAAE,IAAK,CAAC;EAC5D,SAAS8D,aAAaA,CAAA,EAAG;IACxB,IAAKnB,wBAAwB,EAAG;MAC/B,OAAOA,wBAAwB;IAChC;IAEA,IAAKG,aAAa,EAAG;MACpB,OAAO,UAAU;IAClB;EACD;EACA,MAAM,CAAEiB,WAAW,EAAEC,cAAc,CAAE,GAAGhE,QAAQ,CAAE8D,aAAa,CAAC,CAAE,CAAC;EAEnE,MAAMG,gBAAgB,GACrBF,WAAW,KAAK,UAAU,IAAIA,WAAW,KAAK,OAAO;EACtDxC,UAAU,CAAE0C,gBAAiB,CAAC;EAE9B,MAAM,CAAEC,uBAAuB,EAAEC,cAAc,EAAEC,sBAAsB,CAAE,GACxEjD,iBAAiB,CAAE;IAClBa,YAAY;IACZC,QAAQ;IACRC,UAAU;IACVmC,cAAc,EAAElC,4BAA4B;IAC5CK;EACD,CAAE,CAAC;EACJ,MAAM8B,gBAAgB,GAAGnE,MAAM,CAAC,CAAC;EAEjC,MAAMoE,QAAQ,GAAGtE,WAAW,CAC3B,CAAEuE,MAAM,EAAEC,IAAI,EAAEC,qBAAqB,EAAEC,aAAa,KAAM;IACzDR,cAAc,CACbK,MAAM,EACNC,IAAI,EACJC,qBAAqB,EACrBC,aACD,CAAC;IACDvC,QAAQ,CAAEoC,MAAO,CAAC;;IAElB;IACAI,MAAM,CAACC,qBAAqB,CAAE,MAAM;MACnC,IACC,CAAErC,gBAAgB,IAClB,CAAE8B,gBAAgB,CAACQ,OAAO,EAAEC,QAAQ,CACnClC,GAAG,CAACiC,OAAO,CAACE,aAAa,CAACC,aAC3B,CAAC,EACA;QACD;QACAX,gBAAgB,CAACQ,OAAO,EAAEI,aAAa,CAAE,QAAS,CAAC,CAACC,KAAK,CAAC,CAAC;MAC5D;IACD,CAAE,CAAC;EACJ,CAAC,EACD,CAAEhB,cAAc,EAAE/B,QAAQ,EAAEI,gBAAgB,CAC7C,CAAC;EAED,MAAM4C,eAAe,GAAGnF,WAAW,CAClC,CAAEuE,MAAM,EAAEa,WAAW,KAAM;IAC1BjB,sBAAsB,CAAE,KAAM,CAAC;IAC/BD,cAAc,CAAEK,MAAM,EAAE;MAAEa;IAAY,CAAE,CAAC;IACzCjD,QAAQ,CAAC,CAAC;EACX,CAAC,EACD,CAAE+B,cAAc,EAAE/B,QAAQ,CAC3B,CAAC;EAED,MAAMkD,OAAO,GAAGrF,WAAW,CACxBsF,IAAI,IAAM;IACXnB,sBAAsB,CAAEmB,IAAK,CAAC;IAC9BlC,cAAc,CAAEkC,IAAK,CAAC;EACvB,CAAC,EACD,CAAEnB,sBAAsB,EAAEf,cAAc,CACzC,CAAC;EAED,MAAMmC,sBAAsB,GAAGvF,WAAW,CACzC,CAAEwF,eAAe,EAAEC,MAAM,KAAM;IAC9BnC,0BAA0B,CAAEkC,eAAgB,CAAC;IAC7ChC,gBAAgB,CAAEiC,MAAO,CAAC;IAC1BjD,0BAA0B,GAAG,CAAC;EAC/B,CAAC,EACD,CAAEc,0BAA0B,EAAEd,0BAA0B,CACzD,CAAC;EAED,MAAMkD,gBAAgB,GACrB5B,WAAW,KAAK,UAAU,IAC1BH,aAAa,IACb,CAAET,kBAAkB,IACpB,CAAC,CAAEG,uBAAuB;EAE3B,MAAMsC,cAAc,GACnB7B,WAAW,KAAK,OAAO,IAAI,CAAC,CAAEL,qBAAqB,IAAIE,aAAa;EAErE,MAAMiC,cAAc,GAAG3F,OAAO,CAAE,MAAM;IACrC,IAAK6D,WAAW,KAAK,OAAO,EAAG;MAC9B,OAAO,IAAI;IACZ;IAEA,oBACClC,KAAA,CAAAF,SAAA;MAAAmE,QAAA,gBACCrE,IAAA,CAACnB,aAAa;QACbyF,uBAAuB;QACvBC,SAAS,EAAC,+BAA+B;QACzCC,QAAQ,EAAKC,KAAK,IAAM;UACvB,IAAK9C,WAAW,EAAG;YAClBC,cAAc,CAAE,IAAK,CAAC;UACvB;UACAH,cAAc,CAAEgD,KAAM,CAAC;QACxB,CAAG;QACHA,KAAK,EAAGjD,WAAa;QACrBkD,KAAK,EAAG3F,EAAE,CAAE,gCAAiC,CAAG;QAChD4F,WAAW,EAAG5F,EAAE,CAAE,QAAS;MAAG,CAC9B,CAAC,EACA,CAAC,CAAE2C,kBAAkB,iBACtB1B,IAAA,CAACP,qBAAqB;QACrB+B,WAAW,EAAGE,kBAAoB;QAClCf,QAAQ,EAAGA,QAAU;QACrBkD,OAAO,EAAGA,OAAS;QACnBtD,YAAY,EAAGA,YAAc;QAC7BC,QAAQ,EAAGA,QAAU;QACrBC,UAAU,EAAGA,UAAY;QACzBC,4BAA4B,EAC3BA,4BACA;QACDkE,kBAAkB;QAClB7D,gBAAgB,EAAGA,gBAAkB;QACrC8D,kBAAkB,EAAGvC,WAAW,KAAK;MAAY,CACjD,CACD;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFA,WAAW,EACXX,WAAW,EACXC,cAAc,EACdH,cAAc,EACdD,WAAW,EACXE,kBAAkB,EAClBf,QAAQ,EACRkD,OAAO,EACP9C,gBAAgB,EAChBP,QAAQ,EACRD,YAAY,EACZG,4BAA4B,EAC5BD,UAAU,CACT,CAAC;EAEH,MAAMqE,SAAS,GAAGrG,OAAO,CAAE,MAAM;IAChC,oBACC2B,KAAA,CAAAF,SAAA;MAAAmE,QAAA,gBACCrE,IAAA;QAAKuE,SAAS,EAAC,mCAAmC;QAAAF,QAAA,eACjDrE,IAAA,CAACZ,aAAa;UACbgC,GAAG,EAAGyB,gBAAkB;UACxBtC,YAAY,EAAGkC,uBAAyB;UACxCK,QAAQ,EAAGA,QAAU;UACrBe,OAAO,EAAGA,OAAS;UACnBhD,kBAAkB,EAAGA;QAAoB,CACzC;MAAC,CACE,CAAC,EACJD,qBAAqB,iBACtBR,KAAA;QAAKmE,SAAS,EAAC,6BAA6B;QAAAF,QAAA,gBAC3CrE,IAAA,CAACpB,cAAc;UAACmG,EAAE,EAAC,IAAI;UAAAV,QAAA,EACpBtF,EAAE,CAAE,kCAAmC;QAAC,CAC3B,CAAC,eACjBiB,IAAA,CAACd,IAAI,IAAE,CAAC;MAAA,CACJ,CACL;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFuD,uBAAuB,EACvBK,QAAQ,EACRe,OAAO,EACPhD,kBAAkB,EAClBD,qBAAqB,CACpB,CAAC;EAEH,MAAMoE,WAAW,GAAGvG,OAAO,CAAE,MAAM;IAClC,oBACCuB,IAAA,CAACX,gBAAgB;MAChBkB,YAAY,EAAGkC,uBAAyB;MACxCK,QAAQ,EAAGa,eAAiB;MAC5BsB,gBAAgB,EAAGlB,sBAAwB;MAC3CmB,gBAAgB,EAAGrD,uBAAyB;MAC5CO,gBAAgB,EAAGA,gBAAkB;MAAAiC,QAAA,EAEnCH,gBAAgB,iBACjBlE,IAAA,CAACV,uBAAuB;QACvBiB,YAAY,EAAGkC,uBAAyB;QACxCK,QAAQ,EAAGa,eAAiB;QAC5BwB,QAAQ,EAAGtD,uBAAyB;QACpCE,aAAa,EAAGA,aAAe;QAC/BqD,mBAAmB;MAAA,CACnB;IACD,CACgB,CAAC;EAErB,CAAC,EAAE,CACF3C,uBAAuB,EACvBkB,eAAe,EACfI,sBAAsB,EACtBhC,aAAa,EACbF,uBAAuB,EACvBqC,gBAAgB,CACf,CAAC;EAEH,MAAMmB,QAAQ,GAAG5G,OAAO,CAAE,MAAM;IAC/B,oBACCuB,IAAA,CAACT,QAAQ;MACRgB,YAAY,EAAGkC,uBAAyB;MACxCyC,gBAAgB,EAAGjD,qBAAuB;MAC1CgD,gBAAgB,EAAG/C,wBAA0B;MAC7CY,QAAQ,EAAGA,QAAU;MACrBV,gBAAgB,EAAGA,gBAAkB;MAAAiC,QAAA,EAEnCF,cAAc,iBACfnE,IAAA,CAACR,kBAAkB;QAClBe,YAAY,EAAGkC,uBAAyB;QACxCK,QAAQ,EAAGA,QAAU;QACrBqC,QAAQ,EAAGlD;MAAuB,CAClC;IACD,CACQ,CAAC;EAEb,CAAC,EAAE,CACFQ,uBAAuB,EACvBK,QAAQ,EACRb,qBAAqB,EACrBC,wBAAwB,EACxBiC,cAAc,CACb,CAAC;EAEH,MAAMmB,oBAAoB,GAAKb,KAAK,IAAM;IACzC;IACA,IAAKA,KAAK,KAAK,UAAU,EAAG;MAC3B3C,0BAA0B,CAAE,IAAK,CAAC;IACnC;IACAS,cAAc,CAAEkC,KAAM,CAAC;EACxB,CAAC;;EAED;EACA,MAAMc,OAAO,GAAG7G,MAAM,CAAC,CAAC;EACxBC,eAAe,CAAE,MAAM;IACtB,IAAK4G,OAAO,CAAClC,OAAO,EAAG;MACtBF,MAAM,CAACC,qBAAqB,CAAE,MAAM;QACnCmC,OAAO,CAAClC,OAAO,CACbI,aAAa,CAAE,oCAAqC,CAAC,EACpDC,KAAK,CAAC,CAAC;MACX,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,EAAG,CAAC;EAEP,oBACCtD,KAAA;IACCmE,SAAS,EAAGlG,IAAI,CAAE,6BAA6B,EAAE;MAChD,YAAY,EAAE6F,gBAAgB,IAAIC,cAAc;MAChD,aAAa,EAAE9C;IAChB,CAAE,CAAG;IACLD,GAAG,EAAGA,GAAK;IAAAiD,QAAA,gBAEXrE,IAAA;MAAKuE,SAAS,EAAC,kCAAkC;MAAAF,QAAA,eAChDrE,IAAA,CAACH,aAAa;QACbuB,GAAG,EAAGmE,OAAS;QACf5E,QAAQ,EAAG2E,oBAAsB;QACjCrE,OAAO,EAAGA,OAAS;QACnBqB,WAAW,EAAGA,WAAa;QAC3BkD,gBAAgB,EAAGzG,EAAE,CAAE,sBAAuB,CAAG;QACjD0G,IAAI,EAAG,CACN;UACCC,IAAI,EAAE,QAAQ;UACdC,KAAK,EAAE5G,EAAE,CAAE,QAAS,CAAC;UACrB6G,KAAK,eACJxF,KAAA,CAAAF,SAAA;YAAAmE,QAAA,GACGD,cAAc,EACd9B,WAAW,KAAK,QAAQ,IACzB,CAAEZ,kBAAkB,IACpBoD,SAAS;UAAA,CACT;QAEJ,CAAC,EACD;UACCY,IAAI,EAAE,UAAU;UAChBC,KAAK,EAAE5G,EAAE,CAAE,UAAW,CAAC;UACvB6G,KAAK,eACJxF,KAAA,CAAAF,SAAA;YAAAmE,QAAA,GACGD,cAAc,EACd9B,WAAW,KAAK,UAAU,IAC3B,CAAEZ,kBAAkB,IACpBsD,WAAW;UAAA,CACX;QAEJ,CAAC,EACD;UACCU,IAAI,EAAE,OAAO;UACbC,KAAK,EAAE5G,EAAE,CAAE,OAAQ,CAAC;UACpB6G,KAAK,eACJxF,KAAA,CAAAF,SAAA;YAAAmE,QAAA,GACGD,cAAc,EACdiB,QAAQ;UAAA,CACT;QAEJ,CAAC;MACC,CACH;IAAC,CACE,CAAC,EACJzE,qBAAqB,IAAIe,WAAW,iBACrC3B,IAAA,CAAClB,OAAO;MACPyF,SAAS,EAAC,mDAAmD;MAC7DsB,SAAS,EAAC,aAAa;MACvBC,MAAM,EAAG,EAAI;MACbC,YAAY,EAAG,KAAO;MACtBC,OAAO,EAAG,KAAO;MAAA3B,QAAA,eAEjBrE,IAAA,CAACb,oBAAoB;QAAC2E,IAAI,EAAGnC;MAAa,CAAE;IAAC,CACrC,CACT;EAAA,CACG,CAAC;AAER;AAEA,OAAO,MAAMsE,mBAAmB,GAAG3H,UAAU,CAAEgC,YAAa,CAAC;AAE7D,SAAS4F,kBAAkBA,CAAEC,KAAK,EAAE/E,GAAG,EAAG;EACzC,oBACCpB,IAAA,CAACiG,mBAAmB;IAAA,GACdE,KAAK;IACVnF,0BAA0B,EAAGX,IAAM;IACnCe,GAAG,EAAGA;EAAK,CACX,CAAC;AAEJ;AAEA,eAAe9C,UAAU,CAAE4H,kBAAmB,CAAC","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { __ } from '@wordpress/i18n';
5
- import { getBlockBindingsSource, getBlockBindingsSources } from '@wordpress/blocks';
5
+ import { getBlockBindingsSource, getBlockBindingsSources, getBlockType } from '@wordpress/blocks';
6
6
  import { __experimentalItemGroup as ItemGroup, __experimentalItem as Item, __experimentalText as Text, __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem, __experimentalVStack as VStack, privateApis as componentsPrivateApis } from '@wordpress/components';
7
7
  import { useSelect } from '@wordpress/data';
8
8
  import { useContext, Fragment } from '@wordpress/element';
@@ -15,6 +15,7 @@ import { canBindAttribute, getBindableAttributes } from '../hooks/use-bindings-a
15
15
  import { unlock } from '../lock-unlock';
16
16
  import InspectorControls from '../components/inspector-controls';
17
17
  import BlockContext from '../components/block-context';
18
+ import { useBlockEditContext } from '../components/block-edit';
18
19
  import { useBlockBindingsUtils } from '../utils/block-bindings';
19
20
  import { store as blockEditorStore } from '../store';
20
21
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -39,17 +40,27 @@ function BlockBindingsPanelDropdown({
39
40
  attribute,
40
41
  binding
41
42
  }) {
43
+ const {
44
+ clientId
45
+ } = useBlockEditContext();
42
46
  const registeredSources = getBlockBindingsSources();
43
47
  const {
44
48
  updateBlockBindings
45
49
  } = useBlockBindingsUtils();
46
50
  const currentKey = binding?.args?.key;
51
+ const attributeType = useSelect(select => {
52
+ const {
53
+ name: blockName
54
+ } = select(blockEditorStore).getBlock(clientId);
55
+ const _attributeType = getBlockType(blockName).attributes?.[attribute]?.type;
56
+ return _attributeType === 'rich-text' ? 'string' : _attributeType;
57
+ }, [clientId, attribute]);
47
58
  return /*#__PURE__*/_jsx(_Fragment, {
48
59
  children: Object.entries(fieldsList).map(([name, fields], i) => /*#__PURE__*/_jsxs(Fragment, {
49
60
  children: [/*#__PURE__*/_jsxs(DropdownMenuV2.Group, {
50
61
  children: [Object.keys(fieldsList).length > 1 && /*#__PURE__*/_jsx(DropdownMenuV2.GroupLabel, {
51
62
  children: registeredSources[name].label
52
- }), Object.entries(fields).map(([key, args]) => /*#__PURE__*/_jsxs(DropdownMenuV2.RadioItem, {
63
+ }), Object.entries(fields).filter(([, args]) => args?.type === attributeType).map(([key, args]) => /*#__PURE__*/_jsxs(DropdownMenuV2.RadioItem, {
53
64
  onChange: () => updateBlockBindings({
54
65
  [attribute]: {
55
66
  source: name,
@@ -1 +1 @@
1
- {"version":3,"names":["__","getBlockBindingsSource","getBlockBindingsSources","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalText","Text","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__experimentalVStack","VStack","privateApis","componentsPrivateApis","useSelect","useContext","Fragment","useViewportMatch","canBindAttribute","getBindableAttributes","unlock","InspectorControls","BlockContext","useBlockBindingsUtils","store","blockEditorStore","jsx","_jsx","jsxs","_jsxs","_Fragment","DropdownMenuV2","EMPTY_OBJECT","useToolsPanelDropdownMenuProps","isMobile","popoverProps","placement","offset","BlockBindingsPanelDropdown","fieldsList","attribute","binding","registeredSources","updateBlockBindings","currentKey","args","key","children","Object","entries","map","name","fields","i","Group","keys","length","GroupLabel","label","RadioItem","onChange","source","value","checked","ItemLabel","ItemHelpText","Separator","BlockBindingsAttribute","sourceName","sourceProps","isSourceInvalid","className","spacing","truncate","variant","isDestructive","ReadOnlyBlockBindingsPanelItems","bindings","EditableBlockBindingsPanelItems","attributes","hasValue","onDeselect","undefined","gutter","trigger","BlockBindingsPanel","blockName","metadata","blockContext","removeAllBlockBindings","bindableAttributes","dropdownMenuProps","_fieldsList","canUpdateBlockBindings","select","forEach","getFieldsList","usesContext","context","sourceList","values","getSettings","filteredBindings","readOnly","group","resetAll","isBordered","isSeparated","edit","attributeKeys","hasSupport"],"sources":["@wordpress/block-editor/src/hooks/block-bindings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockBindingsSource,\n\tgetBlockBindingsSources,\n} from '@wordpress/blocks';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalText as Text,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalVStack as VStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, Fragment } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tcanBindAttribute,\n\tgetBindableAttributes,\n} from '../hooks/use-bindings-attributes';\nimport { unlock } from '../lock-unlock';\nimport InspectorControls from '../components/inspector-controls';\nimport BlockContext from '../components/block-context';\nimport { useBlockBindingsUtils } from '../utils/block-bindings';\nimport { store as blockEditorStore } from '../store';\n\nconst { DropdownMenuV2 } = unlock( componentsPrivateApis );\n\nconst EMPTY_OBJECT = {};\n\nconst useToolsPanelDropdownMenuProps = () => {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn ! isMobile\n\t\t? {\n\t\t\t\tpopoverProps: {\n\t\t\t\t\tplacement: 'left-start',\n\t\t\t\t\t// For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t\t\t\t\toffset: 259,\n\t\t\t\t},\n\t\t }\n\t\t: {};\n};\n\nfunction BlockBindingsPanelDropdown( { fieldsList, attribute, binding } ) {\n\tconst registeredSources = getBlockBindingsSources();\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\tconst currentKey = binding?.args?.key;\n\treturn (\n\t\t<>\n\t\t\t{ Object.entries( fieldsList ).map( ( [ name, fields ], i ) => (\n\t\t\t\t<Fragment key={ name }>\n\t\t\t\t\t<DropdownMenuV2.Group>\n\t\t\t\t\t\t{ Object.keys( fieldsList ).length > 1 && (\n\t\t\t\t\t\t\t<DropdownMenuV2.GroupLabel>\n\t\t\t\t\t\t\t\t{ registeredSources[ name ].label }\n\t\t\t\t\t\t\t</DropdownMenuV2.GroupLabel>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ Object.entries( fields ).map( ( [ key, args ] ) => (\n\t\t\t\t\t\t\t<DropdownMenuV2.RadioItem\n\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t\t\t\t\t[ attribute ]: {\n\t\t\t\t\t\t\t\t\t\t\tsource: name,\n\t\t\t\t\t\t\t\t\t\t\targs: { key },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tname={ attribute + '-binding' }\n\t\t\t\t\t\t\t\tvalue={ key }\n\t\t\t\t\t\t\t\tchecked={ key === currentKey }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t\t\t{ args?.label }\n\t\t\t\t\t\t\t\t</DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t\t<DropdownMenuV2.ItemHelpText>\n\t\t\t\t\t\t\t\t\t{ args?.value }\n\t\t\t\t\t\t\t\t</DropdownMenuV2.ItemHelpText>\n\t\t\t\t\t\t\t</DropdownMenuV2.RadioItem>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</DropdownMenuV2.Group>\n\t\t\t\t\t{ i !== Object.keys( fieldsList ).length - 1 && (\n\t\t\t\t\t\t<DropdownMenuV2.Separator />\n\t\t\t\t\t) }\n\t\t\t\t</Fragment>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction BlockBindingsAttribute( { attribute, binding, fieldsList } ) {\n\tconst { source: sourceName, args } = binding || {};\n\tconst sourceProps = getBlockBindingsSource( sourceName );\n\tconst isSourceInvalid = ! sourceProps;\n\treturn (\n\t\t<VStack className=\"block-editor-bindings__item\" spacing={ 0 }>\n\t\t\t<Text truncate>{ attribute }</Text>\n\t\t\t{ !! binding && (\n\t\t\t\t<Text\n\t\t\t\t\ttruncate\n\t\t\t\t\tvariant={ ! isSourceInvalid && 'muted' }\n\t\t\t\t\tisDestructive={ isSourceInvalid }\n\t\t\t\t>\n\t\t\t\t\t{ isSourceInvalid\n\t\t\t\t\t\t? __( 'Invalid source' )\n\t\t\t\t\t\t: fieldsList?.[ sourceName ]?.[ args?.key ]?.label ||\n\t\t\t\t\t\t sourceProps?.label ||\n\t\t\t\t\t\t sourceName }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nfunction ReadOnlyBlockBindingsPanelItems( { bindings, fieldsList } ) {\n\treturn (\n\t\t<>\n\t\t\t{ Object.entries( bindings ).map( ( [ attribute, binding ] ) => (\n\t\t\t\t<Item key={ attribute }>\n\t\t\t\t\t<BlockBindingsAttribute\n\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\tbinding={ binding }\n\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t/>\n\t\t\t\t</Item>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction EditableBlockBindingsPanelItems( {\n\tattributes,\n\tbindings,\n\tfieldsList,\n} ) {\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ attributes.map( ( attribute ) => {\n\t\t\t\tconst binding = bindings[ attribute ];\n\t\t\t\treturn (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tkey={ attribute }\n\t\t\t\t\t\thasValue={ () => !! binding }\n\t\t\t\t\t\tlabel={ attribute }\n\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t\t\t[ attribute ]: undefined,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuV2\n\t\t\t\t\t\t\tplacement={\n\t\t\t\t\t\t\t\tisMobile ? 'bottom-start' : 'left-start'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tgutter={ isMobile ? 8 : 36 }\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<Item>\n\t\t\t\t\t\t\t\t\t<BlockBindingsAttribute\n\t\t\t\t\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\t\t\t\t\tbinding={ binding }\n\t\t\t\t\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockBindingsPanelDropdown\n\t\t\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\t\t\tbinding={ binding }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</DropdownMenuV2>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n\nexport const BlockBindingsPanel = ( { name: blockName, metadata } ) => {\n\tconst blockContext = useContext( BlockContext );\n\tconst { removeAllBlockBindings } = useBlockBindingsUtils();\n\tconst bindableAttributes = getBindableAttributes( blockName );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\t// `useSelect` is used purposely here to ensure `getFieldsList`\n\t// is updated whenever there are updates in block context.\n\t// `source.getFieldsList` may also call a selector via `select`.\n\tconst _fieldsList = {};\n\tconst { fieldsList, canUpdateBlockBindings } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! bindableAttributes || bindableAttributes.length === 0 ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\tconst registeredSources = getBlockBindingsSources();\n\t\t\tObject.entries( registeredSources ).forEach(\n\t\t\t\t( [ sourceName, { getFieldsList, usesContext } ] ) => {\n\t\t\t\t\tif ( getFieldsList ) {\n\t\t\t\t\t\t// Populate context.\n\t\t\t\t\t\tconst context = {};\n\t\t\t\t\t\tif ( usesContext?.length ) {\n\t\t\t\t\t\t\tfor ( const key of usesContext ) {\n\t\t\t\t\t\t\t\tcontext[ key ] = blockContext[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst sourceList = getFieldsList( {\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t} );\n\t\t\t\t\t\t// Only add source if the list is not empty.\n\t\t\t\t\t\tif ( Object.keys( sourceList || {} ).length ) {\n\t\t\t\t\t\t\t_fieldsList[ sourceName ] = { ...sourceList };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tfieldsList:\n\t\t\t\t\tObject.values( _fieldsList ).length > 0\n\t\t\t\t\t\t? _fieldsList\n\t\t\t\t\t\t: EMPTY_OBJECT,\n\t\t\t\tcanUpdateBlockBindings:\n\t\t\t\t\tselect( blockEditorStore ).getSettings()\n\t\t\t\t\t\t.canUpdateBlockBindings,\n\t\t\t};\n\t\t},\n\t\t[ blockContext, bindableAttributes ]\n\t);\n\t// Return early if there are no bindable attributes.\n\tif ( ! bindableAttributes || bindableAttributes.length === 0 ) {\n\t\treturn null;\n\t}\n\t// Filter bindings to only show bindable attributes and remove pattern overrides.\n\tconst { bindings } = metadata || {};\n\tconst filteredBindings = { ...bindings };\n\tObject.keys( filteredBindings ).forEach( ( key ) => {\n\t\tif (\n\t\t\t! canBindAttribute( blockName, key ) ||\n\t\t\tfilteredBindings[ key ].source === 'core/pattern-overrides'\n\t\t) {\n\t\t\tdelete filteredBindings[ key ];\n\t\t}\n\t} );\n\n\t// Lock the UI when the user can't update bindings or there are no fields to connect to.\n\tconst readOnly =\n\t\t! canUpdateBlockBindings || ! Object.keys( fieldsList ).length;\n\n\tif ( readOnly && Object.keys( filteredBindings ).length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"bindings\">\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ __( 'Attributes' ) }\n\t\t\t\tresetAll={ () => {\n\t\t\t\t\tremoveAllBlockBindings();\n\t\t\t\t} }\n\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\tclassName=\"block-editor-bindings__panel\"\n\t\t\t>\n\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t{ readOnly ? (\n\t\t\t\t\t\t<ReadOnlyBlockBindingsPanelItems\n\t\t\t\t\t\t\tbindings={ filteredBindings }\n\t\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<EditableBlockBindingsPanelItems\n\t\t\t\t\t\t\tattributes={ bindableAttributes }\n\t\t\t\t\t\t\tbindings={ filteredBindings }\n\t\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ItemGroup>\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t<Text variant=\"muted\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Attributes connected to custom fields or other dynamic data.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t</ItemGroup>\n\t\t\t</ToolsPanel>\n\t\t</InspectorControls>\n\t);\n};\n\nexport default {\n\tedit: BlockBindingsPanel,\n\tattributeKeys: [ 'metadata' ],\n\thasSupport() {\n\t\treturn true;\n\t},\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","getBlockBindingsSource","getBlockBindingsSources","getBlockType","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalText","Text","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","__experimentalVStack","VStack","privateApis","componentsPrivateApis","useSelect","useContext","Fragment","useViewportMatch","canBindAttribute","getBindableAttributes","unlock","InspectorControls","BlockContext","useBlockEditContext","useBlockBindingsUtils","store","blockEditorStore","jsx","_jsx","jsxs","_jsxs","_Fragment","DropdownMenuV2","EMPTY_OBJECT","useToolsPanelDropdownMenuProps","isMobile","popoverProps","placement","offset","BlockBindingsPanelDropdown","fieldsList","attribute","binding","clientId","registeredSources","updateBlockBindings","currentKey","args","key","attributeType","select","name","blockName","getBlock","_attributeType","attributes","type","children","Object","entries","map","fields","i","Group","keys","length","GroupLabel","label","filter","RadioItem","onChange","source","value","checked","ItemLabel","ItemHelpText","Separator","BlockBindingsAttribute","sourceName","sourceProps","isSourceInvalid","className","spacing","truncate","variant","isDestructive","ReadOnlyBlockBindingsPanelItems","bindings","EditableBlockBindingsPanelItems","hasValue","onDeselect","undefined","gutter","trigger","BlockBindingsPanel","metadata","blockContext","removeAllBlockBindings","bindableAttributes","dropdownMenuProps","_fieldsList","canUpdateBlockBindings","forEach","getFieldsList","usesContext","context","sourceList","values","getSettings","filteredBindings","readOnly","group","resetAll","isBordered","isSeparated","edit","attributeKeys","hasSupport"],"sources":["@wordpress/block-editor/src/hooks/block-bindings.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockBindingsSource,\n\tgetBlockBindingsSources,\n\tgetBlockType,\n} from '@wordpress/blocks';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalText as Text,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalVStack as VStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, Fragment } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport {\n\tcanBindAttribute,\n\tgetBindableAttributes,\n} from '../hooks/use-bindings-attributes';\nimport { unlock } from '../lock-unlock';\nimport InspectorControls from '../components/inspector-controls';\nimport BlockContext from '../components/block-context';\nimport { useBlockEditContext } from '../components/block-edit';\nimport { useBlockBindingsUtils } from '../utils/block-bindings';\nimport { store as blockEditorStore } from '../store';\n\nconst { DropdownMenuV2 } = unlock( componentsPrivateApis );\n\nconst EMPTY_OBJECT = {};\n\nconst useToolsPanelDropdownMenuProps = () => {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn ! isMobile\n\t\t? {\n\t\t\t\tpopoverProps: {\n\t\t\t\t\tplacement: 'left-start',\n\t\t\t\t\t// For non-mobile, inner sidebar width (248px) - button width (24px) - border (1px) + padding (16px) + spacing (20px)\n\t\t\t\t\toffset: 259,\n\t\t\t\t},\n\t\t }\n\t\t: {};\n};\n\nfunction BlockBindingsPanelDropdown( { fieldsList, attribute, binding } ) {\n\tconst { clientId } = useBlockEditContext();\n\tconst registeredSources = getBlockBindingsSources();\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\tconst currentKey = binding?.args?.key;\n\tconst attributeType = useSelect(\n\t\t( select ) => {\n\t\t\tconst { name: blockName } =\n\t\t\t\tselect( blockEditorStore ).getBlock( clientId );\n\t\t\tconst _attributeType =\n\t\t\t\tgetBlockType( blockName ).attributes?.[ attribute ]?.type;\n\t\t\treturn _attributeType === 'rich-text' ? 'string' : _attributeType;\n\t\t},\n\t\t[ clientId, attribute ]\n\t);\n\treturn (\n\t\t<>\n\t\t\t{ Object.entries( fieldsList ).map( ( [ name, fields ], i ) => (\n\t\t\t\t<Fragment key={ name }>\n\t\t\t\t\t<DropdownMenuV2.Group>\n\t\t\t\t\t\t{ Object.keys( fieldsList ).length > 1 && (\n\t\t\t\t\t\t\t<DropdownMenuV2.GroupLabel>\n\t\t\t\t\t\t\t\t{ registeredSources[ name ].label }\n\t\t\t\t\t\t\t</DropdownMenuV2.GroupLabel>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ Object.entries( fields )\n\t\t\t\t\t\t\t.filter(\n\t\t\t\t\t\t\t\t( [ , args ] ) => args?.type === attributeType\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.map( ( [ key, args ] ) => (\n\t\t\t\t\t\t\t\t<DropdownMenuV2.RadioItem\n\t\t\t\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\t\t\t\tonChange={ () =>\n\t\t\t\t\t\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t\t\t\t\t\t[ attribute ]: {\n\t\t\t\t\t\t\t\t\t\t\t\tsource: name,\n\t\t\t\t\t\t\t\t\t\t\t\targs: { key },\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tname={ attribute + '-binding' }\n\t\t\t\t\t\t\t\t\tvalue={ key }\n\t\t\t\t\t\t\t\t\tchecked={ key === currentKey }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t\t\t\t{ args?.label }\n\t\t\t\t\t\t\t\t\t</DropdownMenuV2.ItemLabel>\n\t\t\t\t\t\t\t\t\t<DropdownMenuV2.ItemHelpText>\n\t\t\t\t\t\t\t\t\t\t{ args?.value }\n\t\t\t\t\t\t\t\t\t</DropdownMenuV2.ItemHelpText>\n\t\t\t\t\t\t\t\t</DropdownMenuV2.RadioItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t</DropdownMenuV2.Group>\n\t\t\t\t\t{ i !== Object.keys( fieldsList ).length - 1 && (\n\t\t\t\t\t\t<DropdownMenuV2.Separator />\n\t\t\t\t\t) }\n\t\t\t\t</Fragment>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction BlockBindingsAttribute( { attribute, binding, fieldsList } ) {\n\tconst { source: sourceName, args } = binding || {};\n\tconst sourceProps = getBlockBindingsSource( sourceName );\n\tconst isSourceInvalid = ! sourceProps;\n\treturn (\n\t\t<VStack className=\"block-editor-bindings__item\" spacing={ 0 }>\n\t\t\t<Text truncate>{ attribute }</Text>\n\t\t\t{ !! binding && (\n\t\t\t\t<Text\n\t\t\t\t\ttruncate\n\t\t\t\t\tvariant={ ! isSourceInvalid && 'muted' }\n\t\t\t\t\tisDestructive={ isSourceInvalid }\n\t\t\t\t>\n\t\t\t\t\t{ isSourceInvalid\n\t\t\t\t\t\t? __( 'Invalid source' )\n\t\t\t\t\t\t: fieldsList?.[ sourceName ]?.[ args?.key ]?.label ||\n\t\t\t\t\t\t sourceProps?.label ||\n\t\t\t\t\t\t sourceName }\n\t\t\t\t</Text>\n\t\t\t) }\n\t\t</VStack>\n\t);\n}\n\nfunction ReadOnlyBlockBindingsPanelItems( { bindings, fieldsList } ) {\n\treturn (\n\t\t<>\n\t\t\t{ Object.entries( bindings ).map( ( [ attribute, binding ] ) => (\n\t\t\t\t<Item key={ attribute }>\n\t\t\t\t\t<BlockBindingsAttribute\n\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\tbinding={ binding }\n\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t/>\n\t\t\t\t</Item>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\nfunction EditableBlockBindingsPanelItems( {\n\tattributes,\n\tbindings,\n\tfieldsList,\n} ) {\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ attributes.map( ( attribute ) => {\n\t\t\t\tconst binding = bindings[ attribute ];\n\t\t\t\treturn (\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tkey={ attribute }\n\t\t\t\t\t\thasValue={ () => !! binding }\n\t\t\t\t\t\tlabel={ attribute }\n\t\t\t\t\t\tonDeselect={ () => {\n\t\t\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t\t\t[ attribute ]: undefined,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<DropdownMenuV2\n\t\t\t\t\t\t\tplacement={\n\t\t\t\t\t\t\t\tisMobile ? 'bottom-start' : 'left-start'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tgutter={ isMobile ? 8 : 36 }\n\t\t\t\t\t\t\ttrigger={\n\t\t\t\t\t\t\t\t<Item>\n\t\t\t\t\t\t\t\t\t<BlockBindingsAttribute\n\t\t\t\t\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\t\t\t\t\tbinding={ binding }\n\t\t\t\t\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<BlockBindingsPanelDropdown\n\t\t\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\t\t\tbinding={ binding }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</DropdownMenuV2>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n\nexport const BlockBindingsPanel = ( { name: blockName, metadata } ) => {\n\tconst blockContext = useContext( BlockContext );\n\tconst { removeAllBlockBindings } = useBlockBindingsUtils();\n\tconst bindableAttributes = getBindableAttributes( blockName );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\t// `useSelect` is used purposely here to ensure `getFieldsList`\n\t// is updated whenever there are updates in block context.\n\t// `source.getFieldsList` may also call a selector via `select`.\n\tconst _fieldsList = {};\n\tconst { fieldsList, canUpdateBlockBindings } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! bindableAttributes || bindableAttributes.length === 0 ) {\n\t\t\t\treturn EMPTY_OBJECT;\n\t\t\t}\n\t\t\tconst registeredSources = getBlockBindingsSources();\n\t\t\tObject.entries( registeredSources ).forEach(\n\t\t\t\t( [ sourceName, { getFieldsList, usesContext } ] ) => {\n\t\t\t\t\tif ( getFieldsList ) {\n\t\t\t\t\t\t// Populate context.\n\t\t\t\t\t\tconst context = {};\n\t\t\t\t\t\tif ( usesContext?.length ) {\n\t\t\t\t\t\t\tfor ( const key of usesContext ) {\n\t\t\t\t\t\t\t\tcontext[ key ] = blockContext[ key ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst sourceList = getFieldsList( {\n\t\t\t\t\t\t\tselect,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t} );\n\t\t\t\t\t\t// Only add source if the list is not empty.\n\t\t\t\t\t\tif ( Object.keys( sourceList || {} ).length ) {\n\t\t\t\t\t\t\t_fieldsList[ sourceName ] = { ...sourceList };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tfieldsList:\n\t\t\t\t\tObject.values( _fieldsList ).length > 0\n\t\t\t\t\t\t? _fieldsList\n\t\t\t\t\t\t: EMPTY_OBJECT,\n\t\t\t\tcanUpdateBlockBindings:\n\t\t\t\t\tselect( blockEditorStore ).getSettings()\n\t\t\t\t\t\t.canUpdateBlockBindings,\n\t\t\t};\n\t\t},\n\t\t[ blockContext, bindableAttributes ]\n\t);\n\t// Return early if there are no bindable attributes.\n\tif ( ! bindableAttributes || bindableAttributes.length === 0 ) {\n\t\treturn null;\n\t}\n\t// Filter bindings to only show bindable attributes and remove pattern overrides.\n\tconst { bindings } = metadata || {};\n\tconst filteredBindings = { ...bindings };\n\tObject.keys( filteredBindings ).forEach( ( key ) => {\n\t\tif (\n\t\t\t! canBindAttribute( blockName, key ) ||\n\t\t\tfilteredBindings[ key ].source === 'core/pattern-overrides'\n\t\t) {\n\t\t\tdelete filteredBindings[ key ];\n\t\t}\n\t} );\n\n\t// Lock the UI when the user can't update bindings or there are no fields to connect to.\n\tconst readOnly =\n\t\t! canUpdateBlockBindings || ! Object.keys( fieldsList ).length;\n\n\tif ( readOnly && Object.keys( filteredBindings ).length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<InspectorControls group=\"bindings\">\n\t\t\t<ToolsPanel\n\t\t\t\tlabel={ __( 'Attributes' ) }\n\t\t\t\tresetAll={ () => {\n\t\t\t\t\tremoveAllBlockBindings();\n\t\t\t\t} }\n\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\tclassName=\"block-editor-bindings__panel\"\n\t\t\t>\n\t\t\t\t<ItemGroup isBordered isSeparated>\n\t\t\t\t\t{ readOnly ? (\n\t\t\t\t\t\t<ReadOnlyBlockBindingsPanelItems\n\t\t\t\t\t\t\tbindings={ filteredBindings }\n\t\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<EditableBlockBindingsPanelItems\n\t\t\t\t\t\t\tattributes={ bindableAttributes }\n\t\t\t\t\t\t\tbindings={ filteredBindings }\n\t\t\t\t\t\t\tfieldsList={ fieldsList }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</ItemGroup>\n\t\t\t\t<ItemGroup>\n\t\t\t\t\t<Text variant=\"muted\">\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Attributes connected to custom fields or other dynamic data.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Text>\n\t\t\t\t</ItemGroup>\n\t\t\t</ToolsPanel>\n\t\t</InspectorControls>\n\t);\n};\n\nexport default {\n\tedit: BlockBindingsPanel,\n\tattributeKeys: [ 'metadata' ],\n\thasSupport() {\n\t\treturn true;\n\t},\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SACCC,sBAAsB,EACtBC,uBAAuB,EACvBC,YAAY,QACN,mBAAmB;AAC1B,SACCC,uBAAuB,IAAIC,SAAS,EACpCC,kBAAkB,IAAIC,IAAI,EAC1BC,kBAAkB,IAAIC,IAAI,EAC1BC,wBAAwB,IAAIC,UAAU,EACtCC,4BAA4B,IAAIC,cAAc,EAC9CC,oBAAoB,IAAIC,MAAM,EAC9BC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,UAAU,EAAEC,QAAQ,QAAQ,oBAAoB;AACzD,SAASC,gBAAgB,QAAQ,oBAAoB;;AAErD;AACA;AACA;AACA,SACCC,gBAAgB,EAChBC,qBAAqB,QACf,kCAAkC;AACzC,SAASC,MAAM,QAAQ,gBAAgB;AACvC,OAAOC,iBAAiB,MAAM,kCAAkC;AAChE,OAAOC,YAAY,MAAM,6BAA6B;AACtD,SAASC,mBAAmB,QAAQ,0BAA0B;AAC9D,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAAA,SAAAd,QAAA,IAAAe,SAAA;AAErD,MAAM;EAAEC;AAAe,CAAC,GAAGZ,MAAM,CAAEP,qBAAsB,CAAC;AAE1D,MAAMoB,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAMC,8BAA8B,GAAGA,CAAA,KAAM;EAC5C,MAAMC,QAAQ,GAAGlB,gBAAgB,CAAE,QAAQ,EAAE,GAAI,CAAC;EAClD,OAAO,CAAEkB,QAAQ,GACd;IACAC,YAAY,EAAE;MACbC,SAAS,EAAE,YAAY;MACvB;MACAC,MAAM,EAAE;IACT;EACA,CAAC,GACD,CAAC,CAAC;AACN,CAAC;AAED,SAASC,0BAA0BA,CAAE;EAAEC,UAAU;EAAEC,SAAS;EAAEC;AAAQ,CAAC,EAAG;EACzE,MAAM;IAAEC;EAAS,CAAC,GAAGpB,mBAAmB,CAAC,CAAC;EAC1C,MAAMqB,iBAAiB,GAAG9C,uBAAuB,CAAC,CAAC;EACnD,MAAM;IAAE+C;EAAoB,CAAC,GAAGrB,qBAAqB,CAAC,CAAC;EACvD,MAAMsB,UAAU,GAAGJ,OAAO,EAAEK,IAAI,EAAEC,GAAG;EACrC,MAAMC,aAAa,GAAGnC,SAAS,CAC5BoC,MAAM,IAAM;IACb,MAAM;MAAEC,IAAI,EAAEC;IAAU,CAAC,GACxBF,MAAM,CAAExB,gBAAiB,CAAC,CAAC2B,QAAQ,CAAEV,QAAS,CAAC;IAChD,MAAMW,cAAc,GACnBvD,YAAY,CAAEqD,SAAU,CAAC,CAACG,UAAU,GAAId,SAAS,CAAE,EAAEe,IAAI;IAC1D,OAAOF,cAAc,KAAK,WAAW,GAAG,QAAQ,GAAGA,cAAc;EAClE,CAAC,EACD,CAAEX,QAAQ,EAAEF,SAAS,CACtB,CAAC;EACD,oBACCb,IAAA,CAAAG,SAAA;IAAA0B,QAAA,EACGC,MAAM,CAACC,OAAO,CAAEnB,UAAW,CAAC,CAACoB,GAAG,CAAE,CAAE,CAAET,IAAI,EAAEU,MAAM,CAAE,EAAEC,CAAC,kBACxDhC,KAAA,CAACd,QAAQ;MAAAyC,QAAA,gBACR3B,KAAA,CAACE,cAAc,CAAC+B,KAAK;QAAAN,QAAA,GAClBC,MAAM,CAACM,IAAI,CAAExB,UAAW,CAAC,CAACyB,MAAM,GAAG,CAAC,iBACrCrC,IAAA,CAACI,cAAc,CAACkC,UAAU;UAAAT,QAAA,EACvBb,iBAAiB,CAAEO,IAAI,CAAE,CAACgB;QAAK,CACP,CAC3B,EACCT,MAAM,CAACC,OAAO,CAAEE,MAAO,CAAC,CACxBO,MAAM,CACN,CAAE,GAAIrB,IAAI,CAAE,KAAMA,IAAI,EAAES,IAAI,KAAKP,aAClC,CAAC,CACAW,GAAG,CAAE,CAAE,CAAEZ,GAAG,EAAED,IAAI,CAAE,kBACpBjB,KAAA,CAACE,cAAc,CAACqC,SAAS;UAExBC,QAAQ,EAAGA,CAAA,KACVzB,mBAAmB,CAAE;YACpB,CAAEJ,SAAS,GAAI;cACd8B,MAAM,EAAEpB,IAAI;cACZJ,IAAI,EAAE;gBAAEC;cAAI;YACb;UACD,CAAE,CACF;UACDG,IAAI,EAAGV,SAAS,GAAG,UAAY;UAC/B+B,KAAK,EAAGxB,GAAK;UACbyB,OAAO,EAAGzB,GAAG,KAAKF,UAAY;UAAAW,QAAA,gBAE9B7B,IAAA,CAACI,cAAc,CAAC0C,SAAS;YAAAjB,QAAA,EACtBV,IAAI,EAAEoB;UAAK,CACY,CAAC,eAC3BvC,IAAA,CAACI,cAAc,CAAC2C,YAAY;YAAAlB,QAAA,EACzBV,IAAI,EAAEyB;UAAK,CACe,CAAC;QAAA,GAlBxBxB,GAmBmB,CACzB,CAAC;MAAA,CACiB,CAAC,EACrBc,CAAC,KAAKJ,MAAM,CAACM,IAAI,CAAExB,UAAW,CAAC,CAACyB,MAAM,GAAG,CAAC,iBAC3CrC,IAAA,CAACI,cAAc,CAAC4C,SAAS,IAAE,CAC3B;IAAA,GArCczB,IAsCN,CACT;EAAC,CACF,CAAC;AAEL;AAEA,SAAS0B,sBAAsBA,CAAE;EAAEpC,SAAS;EAAEC,OAAO;EAAEF;AAAW,CAAC,EAAG;EACrE,MAAM;IAAE+B,MAAM,EAAEO,UAAU;IAAE/B;EAAK,CAAC,GAAGL,OAAO,IAAI,CAAC,CAAC;EAClD,MAAMqC,WAAW,GAAGlF,sBAAsB,CAAEiF,UAAW,CAAC;EACxD,MAAME,eAAe,GAAG,CAAED,WAAW;EACrC,oBACCjD,KAAA,CAACnB,MAAM;IAACsE,SAAS,EAAC,6BAA6B;IAACC,OAAO,EAAG,CAAG;IAAAzB,QAAA,gBAC5D7B,IAAA,CAACvB,IAAI;MAAC8E,QAAQ;MAAA1B,QAAA,EAAGhB;IAAS,CAAQ,CAAC,EACjC,CAAC,CAAEC,OAAO,iBACXd,IAAA,CAACvB,IAAI;MACJ8E,QAAQ;MACRC,OAAO,EAAG,CAAEJ,eAAe,IAAI,OAAS;MACxCK,aAAa,EAAGL,eAAiB;MAAAvB,QAAA,EAE/BuB,eAAe,GACdpF,EAAE,CAAE,gBAAiB,CAAC,GACtB4C,UAAU,GAAIsC,UAAU,CAAE,GAAI/B,IAAI,EAAEC,GAAG,CAAE,EAAEmB,KAAK,IAChDY,WAAW,EAAEZ,KAAK,IAClBW;IAAU,CACR,CACN;EAAA,CACM,CAAC;AAEX;AAEA,SAASQ,+BAA+BA,CAAE;EAAEC,QAAQ;EAAE/C;AAAW,CAAC,EAAG;EACpE,oBACCZ,IAAA,CAAAG,SAAA;IAAA0B,QAAA,EACGC,MAAM,CAACC,OAAO,CAAE4B,QAAS,CAAC,CAAC3B,GAAG,CAAE,CAAE,CAAEnB,SAAS,EAAEC,OAAO,CAAE,kBACzDd,IAAA,CAACzB,IAAI;MAAAsD,QAAA,eACJ7B,IAAA,CAACiD,sBAAsB;QACtBpC,SAAS,EAAGA,SAAW;QACvBC,OAAO,EAAGA,OAAS;QACnBF,UAAU,EAAGA;MAAY,CACzB;IAAC,GALSC,SAMN,CACL;EAAC,CACF,CAAC;AAEL;AAEA,SAAS+C,+BAA+BA,CAAE;EACzCjC,UAAU;EACVgC,QAAQ;EACR/C;AACD,CAAC,EAAG;EACH,MAAM;IAAEK;EAAoB,CAAC,GAAGrB,qBAAqB,CAAC,CAAC;EACvD,MAAMW,QAAQ,GAAGlB,gBAAgB,CAAE,QAAQ,EAAE,GAAI,CAAC;EAClD,oBACCW,IAAA,CAAAG,SAAA;IAAA0B,QAAA,EACGF,UAAU,CAACK,GAAG,CAAInB,SAAS,IAAM;MAClC,MAAMC,OAAO,GAAG6C,QAAQ,CAAE9C,SAAS,CAAE;MACrC,oBACCb,IAAA,CAACnB,cAAc;QAEdgF,QAAQ,EAAGA,CAAA,KAAM,CAAC,CAAE/C,OAAS;QAC7ByB,KAAK,EAAG1B,SAAW;QACnBiD,UAAU,EAAGA,CAAA,KAAM;UAClB7C,mBAAmB,CAAE;YACpB,CAAEJ,SAAS,GAAIkD;UAChB,CAAE,CAAC;QACJ,CAAG;QAAAlC,QAAA,eAEH7B,IAAA,CAACI,cAAc;UACdK,SAAS,EACRF,QAAQ,GAAG,cAAc,GAAG,YAC5B;UACDyD,MAAM,EAAGzD,QAAQ,GAAG,CAAC,GAAG,EAAI;UAC5B0D,OAAO,eACNjE,IAAA,CAACzB,IAAI;YAAAsD,QAAA,eACJ7B,IAAA,CAACiD,sBAAsB;cACtBpC,SAAS,EAAGA,SAAW;cACvBC,OAAO,EAAGA,OAAS;cACnBF,UAAU,EAAGA;YAAY,CACzB;UAAC,CACG,CACN;UAAAiB,QAAA,eAED7B,IAAA,CAACW,0BAA0B;YAC1BC,UAAU,EAAGA,UAAY;YACzBC,SAAS,EAAGA,SAAW;YACvBC,OAAO,EAAGA;UAAS,CACnB;QAAC,CACa;MAAC,GA7BXD,SA8BS,CAAC;IAEnB,CAAE;EAAC,CACF,CAAC;AAEL;AAEA,OAAO,MAAMqD,kBAAkB,GAAGA,CAAE;EAAE3C,IAAI,EAAEC,SAAS;EAAE2C;AAAS,CAAC,KAAM;EACtE,MAAMC,YAAY,GAAGjF,UAAU,CAAEO,YAAa,CAAC;EAC/C,MAAM;IAAE2E;EAAuB,CAAC,GAAGzE,qBAAqB,CAAC,CAAC;EAC1D,MAAM0E,kBAAkB,GAAG/E,qBAAqB,CAAEiC,SAAU,CAAC;EAC7D,MAAM+C,iBAAiB,GAAGjE,8BAA8B,CAAC,CAAC;;EAE1D;EACA;EACA;EACA,MAAMkE,WAAW,GAAG,CAAC,CAAC;EACtB,MAAM;IAAE5D,UAAU;IAAE6D;EAAuB,CAAC,GAAGvF,SAAS,CACrDoC,MAAM,IAAM;IACb,IAAK,CAAEgD,kBAAkB,IAAIA,kBAAkB,CAACjC,MAAM,KAAK,CAAC,EAAG;MAC9D,OAAOhC,YAAY;IACpB;IACA,MAAMW,iBAAiB,GAAG9C,uBAAuB,CAAC,CAAC;IACnD4D,MAAM,CAACC,OAAO,CAAEf,iBAAkB,CAAC,CAAC0D,OAAO,CAC1C,CAAE,CAAExB,UAAU,EAAE;MAAEyB,aAAa;MAAEC;IAAY,CAAC,CAAE,KAAM;MACrD,IAAKD,aAAa,EAAG;QACpB;QACA,MAAME,OAAO,GAAG,CAAC,CAAC;QAClB,IAAKD,WAAW,EAAEvC,MAAM,EAAG;UAC1B,KAAM,MAAMjB,GAAG,IAAIwD,WAAW,EAAG;YAChCC,OAAO,CAAEzD,GAAG,CAAE,GAAGgD,YAAY,CAAEhD,GAAG,CAAE;UACrC;QACD;QACA,MAAM0D,UAAU,GAAGH,aAAa,CAAE;UACjCrD,MAAM;UACNuD;QACD,CAAE,CAAC;QACH;QACA,IAAK/C,MAAM,CAACM,IAAI,CAAE0C,UAAU,IAAI,CAAC,CAAE,CAAC,CAACzC,MAAM,EAAG;UAC7CmC,WAAW,CAAEtB,UAAU,CAAE,GAAG;YAAE,GAAG4B;UAAW,CAAC;QAC9C;MACD;IACD,CACD,CAAC;IACD,OAAO;MACNlE,UAAU,EACTkB,MAAM,CAACiD,MAAM,CAAEP,WAAY,CAAC,CAACnC,MAAM,GAAG,CAAC,GACpCmC,WAAW,GACXnE,YAAY;MAChBoE,sBAAsB,EACrBnD,MAAM,CAAExB,gBAAiB,CAAC,CAACkF,WAAW,CAAC,CAAC,CACtCP;IACJ,CAAC;EACF,CAAC,EACD,CAAEL,YAAY,EAAEE,kBAAkB,CACnC,CAAC;EACD;EACA,IAAK,CAAEA,kBAAkB,IAAIA,kBAAkB,CAACjC,MAAM,KAAK,CAAC,EAAG;IAC9D,OAAO,IAAI;EACZ;EACA;EACA,MAAM;IAAEsB;EAAS,CAAC,GAAGQ,QAAQ,IAAI,CAAC,CAAC;EACnC,MAAMc,gBAAgB,GAAG;IAAE,GAAGtB;EAAS,CAAC;EACxC7B,MAAM,CAACM,IAAI,CAAE6C,gBAAiB,CAAC,CAACP,OAAO,CAAItD,GAAG,IAAM;IACnD,IACC,CAAE9B,gBAAgB,CAAEkC,SAAS,EAAEJ,GAAI,CAAC,IACpC6D,gBAAgB,CAAE7D,GAAG,CAAE,CAACuB,MAAM,KAAK,wBAAwB,EAC1D;MACD,OAAOsC,gBAAgB,CAAE7D,GAAG,CAAE;IAC/B;EACD,CAAE,CAAC;;EAEH;EACA,MAAM8D,QAAQ,GACb,CAAET,sBAAsB,IAAI,CAAE3C,MAAM,CAACM,IAAI,CAAExB,UAAW,CAAC,CAACyB,MAAM;EAE/D,IAAK6C,QAAQ,IAAIpD,MAAM,CAACM,IAAI,CAAE6C,gBAAiB,CAAC,CAAC5C,MAAM,KAAK,CAAC,EAAG;IAC/D,OAAO,IAAI;EACZ;EAEA,oBACCrC,IAAA,CAACP,iBAAiB;IAAC0F,KAAK,EAAC,UAAU;IAAAtD,QAAA,eAClC3B,KAAA,CAACvB,UAAU;MACV4D,KAAK,EAAGvE,EAAE,CAAE,YAAa,CAAG;MAC5BoH,QAAQ,EAAGA,CAAA,KAAM;QAChBf,sBAAsB,CAAC,CAAC;MACzB,CAAG;MACHE,iBAAiB,EAAGA,iBAAmB;MACvClB,SAAS,EAAC,8BAA8B;MAAAxB,QAAA,gBAExC7B,IAAA,CAAC3B,SAAS;QAACgH,UAAU;QAACC,WAAW;QAAAzD,QAAA,EAC9BqD,QAAQ,gBACTlF,IAAA,CAAC0D,+BAA+B;UAC/BC,QAAQ,EAAGsB,gBAAkB;UAC7BrE,UAAU,EAAGA;QAAY,CACzB,CAAC,gBAEFZ,IAAA,CAAC4D,+BAA+B;UAC/BjC,UAAU,EAAG2C,kBAAoB;UACjCX,QAAQ,EAAGsB,gBAAkB;UAC7BrE,UAAU,EAAGA;QAAY,CACzB;MACD,CACS,CAAC,eACZZ,IAAA,CAAC3B,SAAS;QAAAwD,QAAA,eACT7B,IAAA,CAACvB,IAAI;UAAC+E,OAAO,EAAC,OAAO;UAAA3B,QAAA,EAClB7D,EAAE,CACH,8DACD;QAAC,CACI;MAAC,CACG,CAAC;IAAA,CACD;EAAC,CACK,CAAC;AAEtB,CAAC;AAED,eAAe;EACduH,IAAI,EAAErB,kBAAkB;EACxBsB,aAAa,EAAE,CAAE,UAAU,CAAE;EAC7BC,UAAUA,CAAA,EAAG;IACZ,OAAO,IAAI;EACZ;AACD,CAAC","ignoreList":[]}
@@ -9,37 +9,44 @@ import { useEffect, useRef } from '@wordpress/element';
9
9
  */
10
10
  import { store as blockEditorStore } from '../store';
11
11
  import { unlock } from '../lock-unlock';
12
-
13
12
  /**
14
- * A hook used to set the zoomed out view, invoking the hook sets the mode.
13
+ * A hook used to set the editor mode to zoomed out mode, invoking the hook sets the mode.
15
14
  *
16
- * @param {boolean} zoomOut If we should zoom out or not.
15
+ * @param {boolean} zoomOut If we should enter into zoomOut mode or not
17
16
  */
18
17
  export function useZoomOut(zoomOut = true) {
19
18
  const {
19
+ __unstableSetEditorMode,
20
20
  setZoomLevel
21
21
  } = unlock(useDispatch(blockEditorStore));
22
22
  const {
23
- isZoomOut
23
+ __unstableGetEditorMode
24
24
  } = unlock(useSelect(blockEditorStore));
25
- const originalIsZoomOutRef = useRef(null);
25
+ const originalEditingModeRef = useRef(null);
26
+ const mode = __unstableGetEditorMode();
26
27
  useEffect(() => {
27
28
  // Only set this on mount so we know what to return to when we unmount.
28
- if (!originalIsZoomOutRef.current) {
29
- originalIsZoomOutRef.current = isZoomOut();
30
- }
31
-
32
- // The effect opens the zoom-out view if we want it open and the canvas is not currently zoomed-out.
33
- if (zoomOut && isZoomOut() === false) {
34
- setZoomLevel(50);
35
- } else if (!zoomOut && isZoomOut() && originalIsZoomOutRef.current !== isZoomOut()) {
36
- setZoomLevel(originalIsZoomOutRef.current ? 50 : 100);
29
+ if (!originalEditingModeRef.current) {
30
+ originalEditingModeRef.current = mode;
37
31
  }
38
32
  return () => {
39
- if (isZoomOut() && isZoomOut() !== originalIsZoomOutRef.current) {
40
- setZoomLevel(originalIsZoomOutRef.current ? 50 : 100);
33
+ // We need to use __unstableGetEditorMode() here and not `mode`, as mode may not update on unmount
34
+ if (__unstableGetEditorMode() === 'zoom-out' && __unstableGetEditorMode() !== originalEditingModeRef.current) {
35
+ __unstableSetEditorMode(originalEditingModeRef.current);
36
+ setZoomLevel(100);
41
37
  }
42
38
  };
43
- }, [isZoomOut, setZoomLevel, zoomOut]);
39
+ }, []);
40
+
41
+ // The effect opens the zoom-out view if we want it open and it's not currently in zoom-out mode.
42
+ useEffect(() => {
43
+ if (zoomOut && mode !== 'zoom-out') {
44
+ __unstableSetEditorMode('zoom-out');
45
+ setZoomLevel(50);
46
+ } else if (!zoomOut && __unstableGetEditorMode() === 'zoom-out' && originalEditingModeRef.current !== mode) {
47
+ __unstableSetEditorMode(originalEditingModeRef.current);
48
+ setZoomLevel(100);
49
+ }
50
+ }, [__unstableGetEditorMode, __unstableSetEditorMode, zoomOut, setZoomLevel]); // Mode is deliberately excluded from the dependencies so that the effect does not run when mode changes.
44
51
  }
45
52
  //# sourceMappingURL=use-zoom-out.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useSelect","useDispatch","useEffect","useRef","store","blockEditorStore","unlock","useZoomOut","zoomOut","setZoomLevel","isZoomOut","originalIsZoomOutRef","current"],"sources":["@wordpress/block-editor/src/hooks/use-zoom-out.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n\n/**\n * A hook used to set the zoomed out view, invoking the hook sets the mode.\n *\n * @param {boolean} zoomOut If we should zoom out or not.\n */\nexport function useZoomOut( zoomOut = true ) {\n\tconst { setZoomLevel } = unlock( useDispatch( blockEditorStore ) );\n\tconst { isZoomOut } = unlock( useSelect( blockEditorStore ) );\n\n\tconst originalIsZoomOutRef = useRef( null );\n\n\tuseEffect( () => {\n\t\t// Only set this on mount so we know what to return to when we unmount.\n\t\tif ( ! originalIsZoomOutRef.current ) {\n\t\t\toriginalIsZoomOutRef.current = isZoomOut();\n\t\t}\n\n\t\t// The effect opens the zoom-out view if we want it open and the canvas is not currently zoomed-out.\n\t\tif ( zoomOut && isZoomOut() === false ) {\n\t\t\tsetZoomLevel( 50 );\n\t\t} else if (\n\t\t\t! zoomOut &&\n\t\t\tisZoomOut() &&\n\t\t\toriginalIsZoomOutRef.current !== isZoomOut()\n\t\t) {\n\t\t\tsetZoomLevel( originalIsZoomOutRef.current ? 50 : 100 );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( isZoomOut() && isZoomOut() !== originalIsZoomOutRef.current ) {\n\t\t\t\tsetZoomLevel( originalIsZoomOutRef.current ? 50 : 100 );\n\t\t\t}\n\t\t};\n\t}, [ isZoomOut, setZoomLevel, zoomOut ] );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;;AAEtD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,UAAU;AACpD,SAASC,MAAM,QAAQ,gBAAgB;;AAEvC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAEC,OAAO,GAAG,IAAI,EAAG;EAC5C,MAAM;IAAEC;EAAa,CAAC,GAAGH,MAAM,CAAEL,WAAW,CAAEI,gBAAiB,CAAE,CAAC;EAClE,MAAM;IAAEK;EAAU,CAAC,GAAGJ,MAAM,CAAEN,SAAS,CAAEK,gBAAiB,CAAE,CAAC;EAE7D,MAAMM,oBAAoB,GAAGR,MAAM,CAAE,IAAK,CAAC;EAE3CD,SAAS,CAAE,MAAM;IAChB;IACA,IAAK,CAAES,oBAAoB,CAACC,OAAO,EAAG;MACrCD,oBAAoB,CAACC,OAAO,GAAGF,SAAS,CAAC,CAAC;IAC3C;;IAEA;IACA,IAAKF,OAAO,IAAIE,SAAS,CAAC,CAAC,KAAK,KAAK,EAAG;MACvCD,YAAY,CAAE,EAAG,CAAC;IACnB,CAAC,MAAM,IACN,CAAED,OAAO,IACTE,SAAS,CAAC,CAAC,IACXC,oBAAoB,CAACC,OAAO,KAAKF,SAAS,CAAC,CAAC,EAC3C;MACDD,YAAY,CAAEE,oBAAoB,CAACC,OAAO,GAAG,EAAE,GAAG,GAAI,CAAC;IACxD;IAEA,OAAO,MAAM;MACZ,IAAKF,SAAS,CAAC,CAAC,IAAIA,SAAS,CAAC,CAAC,KAAKC,oBAAoB,CAACC,OAAO,EAAG;QAClEH,YAAY,CAAEE,oBAAoB,CAACC,OAAO,GAAG,EAAE,GAAG,GAAI,CAAC;MACxD;IACD,CAAC;EACF,CAAC,EAAE,CAAEF,SAAS,EAAED,YAAY,EAAED,OAAO,CAAG,CAAC;AAC1C","ignoreList":[]}
1
+ {"version":3,"names":["useSelect","useDispatch","useEffect","useRef","store","blockEditorStore","unlock","useZoomOut","zoomOut","__unstableSetEditorMode","setZoomLevel","__unstableGetEditorMode","originalEditingModeRef","mode","current"],"sources":["@wordpress/block-editor/src/hooks/use-zoom-out.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../store';\nimport { unlock } from '../lock-unlock';\n/**\n * A hook used to set the editor mode to zoomed out mode, invoking the hook sets the mode.\n *\n * @param {boolean} zoomOut If we should enter into zoomOut mode or not\n */\nexport function useZoomOut( zoomOut = true ) {\n\tconst { __unstableSetEditorMode, setZoomLevel } = unlock(\n\t\tuseDispatch( blockEditorStore )\n\t);\n\tconst { __unstableGetEditorMode } = unlock( useSelect( blockEditorStore ) );\n\n\tconst originalEditingModeRef = useRef( null );\n\tconst mode = __unstableGetEditorMode();\n\n\tuseEffect( () => {\n\t\t// Only set this on mount so we know what to return to when we unmount.\n\t\tif ( ! originalEditingModeRef.current ) {\n\t\t\toriginalEditingModeRef.current = mode;\n\t\t}\n\n\t\treturn () => {\n\t\t\t// We need to use __unstableGetEditorMode() here and not `mode`, as mode may not update on unmount\n\t\t\tif (\n\t\t\t\t__unstableGetEditorMode() === 'zoom-out' &&\n\t\t\t\t__unstableGetEditorMode() !== originalEditingModeRef.current\n\t\t\t) {\n\t\t\t\t__unstableSetEditorMode( originalEditingModeRef.current );\n\t\t\t\tsetZoomLevel( 100 );\n\t\t\t}\n\t\t};\n\t}, [] );\n\n\t// The effect opens the zoom-out view if we want it open and it's not currently in zoom-out mode.\n\tuseEffect( () => {\n\t\tif ( zoomOut && mode !== 'zoom-out' ) {\n\t\t\t__unstableSetEditorMode( 'zoom-out' );\n\t\t\tsetZoomLevel( 50 );\n\t\t} else if (\n\t\t\t! zoomOut &&\n\t\t\t__unstableGetEditorMode() === 'zoom-out' &&\n\t\t\toriginalEditingModeRef.current !== mode\n\t\t) {\n\t\t\t__unstableSetEditorMode( originalEditingModeRef.current );\n\t\t\tsetZoomLevel( 100 );\n\t\t}\n\t}, [\n\t\t__unstableGetEditorMode,\n\t\t__unstableSetEditorMode,\n\t\tzoomOut,\n\t\tsetZoomLevel,\n\t] ); // Mode is deliberately excluded from the dependencies so that the effect does not run when mode changes.\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,iBAAiB;AACxD,SAASC,SAAS,EAAEC,MAAM,QAAQ,oBAAoB;;AAEtD;AACA;AACA;AACA,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,UAAU;AACpD,SAASC,MAAM,QAAQ,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAEC,OAAO,GAAG,IAAI,EAAG;EAC5C,MAAM;IAAEC,uBAAuB;IAAEC;EAAa,CAAC,GAAGJ,MAAM,CACvDL,WAAW,CAAEI,gBAAiB,CAC/B,CAAC;EACD,MAAM;IAAEM;EAAwB,CAAC,GAAGL,MAAM,CAAEN,SAAS,CAAEK,gBAAiB,CAAE,CAAC;EAE3E,MAAMO,sBAAsB,GAAGT,MAAM,CAAE,IAAK,CAAC;EAC7C,MAAMU,IAAI,GAAGF,uBAAuB,CAAC,CAAC;EAEtCT,SAAS,CAAE,MAAM;IAChB;IACA,IAAK,CAAEU,sBAAsB,CAACE,OAAO,EAAG;MACvCF,sBAAsB,CAACE,OAAO,GAAGD,IAAI;IACtC;IAEA,OAAO,MAAM;MACZ;MACA,IACCF,uBAAuB,CAAC,CAAC,KAAK,UAAU,IACxCA,uBAAuB,CAAC,CAAC,KAAKC,sBAAsB,CAACE,OAAO,EAC3D;QACDL,uBAAuB,CAAEG,sBAAsB,CAACE,OAAQ,CAAC;QACzDJ,YAAY,CAAE,GAAI,CAAC;MACpB;IACD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;;EAEP;EACAR,SAAS,CAAE,MAAM;IAChB,IAAKM,OAAO,IAAIK,IAAI,KAAK,UAAU,EAAG;MACrCJ,uBAAuB,CAAE,UAAW,CAAC;MACrCC,YAAY,CAAE,EAAG,CAAC;IACnB,CAAC,MAAM,IACN,CAAEF,OAAO,IACTG,uBAAuB,CAAC,CAAC,KAAK,UAAU,IACxCC,sBAAsB,CAACE,OAAO,KAAKD,IAAI,EACtC;MACDJ,uBAAuB,CAAEG,sBAAsB,CAACE,OAAQ,CAAC;MACzDJ,YAAY,CAAE,GAAI,CAAC;IACpB;EACD,CAAC,EAAE,CACFC,uBAAuB,EACvBF,uBAAuB,EACvBD,OAAO,EACPE,YAAY,CACX,CAAC,CAAC,CAAC;AACN","ignoreList":[]}
@@ -6,7 +6,7 @@ import { createSelector, createRegistrySelector } from '@wordpress/data';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import { getBlockOrder, getBlockParents, getBlockEditingMode, getSettings, canInsertBlockType, getBlockName, getTemplateLock, getClientIdsWithDescendants } from './selectors';
9
+ import { getBlockOrder, getBlockParents, getBlockEditingMode, getSettings, canInsertBlockType, getBlockName, getTemplateLock, getClientIdsWithDescendants, isNavigationMode, __unstableGetEditorMode } from './selectors';
10
10
  import { checkAllowListRecursive, getAllPatternsDependants, getInsertBlockTypeDependants, getGrammar } from './utils';
11
11
  import { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';
12
12
  import { STORE_NAME } from './constants';
@@ -398,7 +398,7 @@ export const getBlockStyles = createSelector((state, clientIds) => clientIds.red
398
398
  * @return {boolean} Is zoom out mode enabled.
399
399
  */
400
400
  export function isZoomOutMode(state) {
401
- return state.editorMode === 'zoom-out';
401
+ return __unstableGetEditorMode(state) === 'zoom-out';
402
402
  }
403
403
 
404
404
  /**
@@ -433,4 +433,37 @@ export function getZoomLevel(state) {
433
433
  export function isZoomOut(state) {
434
434
  return getZoomLevel(state) < 100;
435
435
  }
436
+
437
+ /**
438
+ * Retrieves the client ID of the parent section block.
439
+ *
440
+ * @param {Object} state Global application state.
441
+ * @param {string} clientId Client Id of the block.
442
+ *
443
+ * @return {?string} Client ID of the ancestor block that is content locking the block.
444
+ */
445
+ export const getParentSectionBlock = (state, clientId) => {
446
+ let current = clientId;
447
+ let result;
448
+ while (!result && (current = state.blocks.parents.get(current))) {
449
+ if (isSectionBlock(state, current)) {
450
+ result = current;
451
+ }
452
+ }
453
+ return result;
454
+ };
455
+
456
+ /**
457
+ * Retrieves the client ID is a content locking parent
458
+ *
459
+ * @param {Object} state Global application state.
460
+ * @param {string} clientId Client Id of the block.
461
+ *
462
+ * @return {boolean} Whether the block is a content locking parent.
463
+ */
464
+ export function isSectionBlock(state, clientId) {
465
+ const sectionRootClientId = getSectionRootClientId(state);
466
+ const sectionClientIds = getBlockOrder(state, sectionRootClientId);
467
+ return getBlockName(state, clientId) === 'core/block' || getTemplateLock(state, clientId) === 'contentOnly' || isNavigationMode(state) && sectionClientIds.includes(clientId);
468
+ }
436
469
  //# sourceMappingURL=private-selectors.js.map