@wordpress/block-editor 14.3.6 → 14.3.7

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 (110) 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-module/components/block-list/use-block-props/use-selected-block-event-handlers.js +14 -6
  37. package/build-module/components/block-list/use-block-props/use-selected-block-event-handlers.js.map +1 -1
  38. package/build-module/components/block-list/zoom-out-separator.js +10 -7
  39. package/build-module/components/block-list/zoom-out-separator.js.map +1 -1
  40. package/build-module/components/block-popover/index.js +1 -1
  41. package/build-module/components/block-popover/index.js.map +1 -1
  42. package/build-module/components/block-toolbar/index.js +30 -18
  43. package/build-module/components/block-toolbar/index.js.map +1 -1
  44. package/build-module/components/block-toolbar/use-has-block-toolbar.js +3 -3
  45. package/build-module/components/block-toolbar/use-has-block-toolbar.js.map +1 -1
  46. package/build-module/components/block-tools/index.js +1 -6
  47. package/build-module/components/block-tools/index.js.map +1 -1
  48. package/build-module/components/block-tools/use-show-block-tools.js +4 -6
  49. package/build-module/components/block-tools/use-show-block-tools.js.map +1 -1
  50. package/build-module/components/block-tools/zoom-out-mode-inserters.js +22 -36
  51. package/build-module/components/block-tools/zoom-out-mode-inserters.js.map +1 -1
  52. package/build-module/components/iframe/index.js +40 -10
  53. package/build-module/components/iframe/index.js.map +1 -1
  54. package/build-module/components/inserter/block-patterns-tab/index.js +5 -1
  55. package/build-module/components/inserter/block-patterns-tab/index.js.map +1 -1
  56. package/build-module/components/inserter/hooks/use-insertion-point.js +16 -4
  57. package/build-module/components/inserter/hooks/use-insertion-point.js.map +1 -1
  58. package/build-module/components/inserter/media-tab/media-tab.js +5 -1
  59. package/build-module/components/inserter/media-tab/media-tab.js.map +1 -1
  60. package/build-module/components/inserter/menu.js +5 -2
  61. package/build-module/components/inserter/menu.js.map +1 -1
  62. package/build-module/hooks/block-bindings.js +13 -2
  63. package/build-module/hooks/block-bindings.js.map +1 -1
  64. package/build-module/hooks/use-zoom-out.js +24 -17
  65. package/build-module/hooks/use-zoom-out.js.map +1 -1
  66. package/build-module/store/private-selectors.js +35 -2
  67. package/build-module/store/private-selectors.js.map +1 -1
  68. package/build-module/store/selectors.js +15 -8
  69. package/build-module/store/selectors.js.map +1 -1
  70. package/build-style/content-rtl.css +14 -20
  71. package/build-style/content.css +14 -20
  72. package/build-style/style-rtl.css +28 -21
  73. package/build-style/style.css +28 -21
  74. package/package.json +6 -6
  75. package/src/components/block-canvas/style.scss +1 -0
  76. package/src/components/block-list/content.scss +3 -2
  77. package/src/components/block-list/use-block-props/use-selected-block-event-handlers.js +25 -4
  78. package/src/components/block-list/zoom-out-separator.js +8 -6
  79. package/src/components/block-popover/index.js +2 -2
  80. package/src/components/block-toolbar/index.js +37 -24
  81. package/src/components/block-toolbar/style.scss +10 -1
  82. package/src/components/block-toolbar/use-has-block-toolbar.js +19 -28
  83. package/src/components/block-tools/index.js +0 -9
  84. package/src/components/block-tools/style.scss +2 -26
  85. package/src/components/block-tools/use-show-block-tools.js +2 -10
  86. package/src/components/block-tools/zoom-out-mode-inserters.js +26 -50
  87. package/src/components/iframe/content.scss +16 -24
  88. package/src/components/iframe/index.js +53 -12
  89. package/src/components/iframe/style.scss +6 -5
  90. package/src/components/inserter/block-patterns-tab/index.js +6 -1
  91. package/src/components/inserter/hooks/use-insertion-point.js +23 -5
  92. package/src/components/inserter/media-tab/media-tab.js +6 -1
  93. package/src/components/inserter/menu.js +7 -1
  94. package/src/components/inserter/style.scss +6 -0
  95. package/src/components/rich-text/style.scss +5 -0
  96. package/src/hooks/block-bindings.js +40 -23
  97. package/src/hooks/use-zoom-out.js +36 -20
  98. package/src/store/private-selectors.js +40 -1
  99. package/src/store/selectors.js +16 -8
  100. package/src/style.scss +1 -0
  101. package/build/components/block-tools/zoom-out-popover.js +0 -57
  102. package/build/components/block-tools/zoom-out-popover.js.map +0 -1
  103. package/build/components/block-tools/zoom-out-toolbar.js +0 -159
  104. package/build/components/block-tools/zoom-out-toolbar.js.map +0 -1
  105. package/build-module/components/block-tools/zoom-out-popover.js +0 -48
  106. package/build-module/components/block-tools/zoom-out-popover.js.map +0 -1
  107. package/build-module/components/block-tools/zoom-out-toolbar.js +0 -152
  108. package/build-module/components/block-tools/zoom-out-toolbar.js.map +0 -1
  109. package/src/components/block-tools/zoom-out-popover.js +0 -46
  110. package/src/components/block-tools/zoom-out-toolbar.js +0 -167
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_blocks","_i18n","_a11y","_element","_store","_lockUnlock","getIndex","destinationRootClientId","destinationIndex","rootClientId","registry","parents","select","blockEditorStore","getBlockParents","parentIndex","indexOf","getBlockIndex","getBlockOrder","length","useInsertionPoint","insertionIndex","clientId","isAppender","onSelect","shouldFocusBlock","selectBlockOnInsert","useRegistry","getSelectedBlock","useSelect","getSelectedBlockClientId","getBlockRootClientId","selectedBlockClientId","_destinationRootClientId","_destinationIndex","undefined","replaceBlocks","insertBlocks","showInsertionPoint","hideInsertionPoint","setLastFocus","unlock","useDispatch","onInsertBlocks","useCallback","blocks","meta","shouldForceFocusBlock","_rootClientId","selectedBlock","isUnmodifiedDefaultBlock","blockLength","Array","isArray","message","sprintf","_n","speak","onToggleInsertionPoint","item","hasOwnProperty","_default","exports","default"],"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":["_data","require","_blocks","_i18n","_a11y","_element","_store","_lockUnlock","getIndex","destinationRootClientId","destinationIndex","rootClientId","registry","parents","select","blockEditorStore","getBlockParents","parentIndex","indexOf","getBlockIndex","getBlockOrder","length","useInsertionPoint","insertionIndex","clientId","isAppender","onSelect","shouldFocusBlock","selectBlockOnInsert","useRegistry","getSelectedBlock","useSelect","getSelectedBlockClientId","getBlockRootClientId","getSectionRootClientId","__unstableGetEditorMode","unlock","selectedBlockClientId","_destinationRootClientId","_destinationIndex","undefined","sectionRootClientId","replaceBlocks","insertBlocks","showInsertionPoint","hideInsertionPoint","setLastFocus","useDispatch","onInsertBlocks","useCallback","blocks","meta","shouldForceFocusBlock","_rootClientId","selectedBlock","isUnmodifiedDefaultBlock","blockLength","Array","isArray","message","sprintf","_n","speak","onToggleInsertionPoint","item","hasOwnProperty","_default","exports","default"],"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":[]}
@@ -31,6 +31,7 @@ function MediaTab({
31
31
  rootClientId,
32
32
  selectedCategory,
33
33
  onSelectCategory,
34
+ setHasCategories,
34
35
  onInsert,
35
36
  children
36
37
  }) {
@@ -48,6 +49,9 @@ function MediaTab({
48
49
  ...mediaCategory,
49
50
  label: mediaCategory.labels.name
50
51
  })), [mediaCategories]);
52
+ (0, _element.useEffect)(() => {
53
+ setHasCategories(!!categories.length);
54
+ }, [categories, setHasCategories]);
51
55
  if (!categories.length) {
52
56
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_noResults.default, {});
53
57
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_compose","_components","_element","_mediaPanel","_check","_interopRequireDefault","_mediaUpload","_hooks","_utils","_mobileTabNavigation","_categoryTabs","_noResults","_jsxRuntime","ALLOWED_MEDIA_TYPES","MediaTab","rootClientId","selectedCategory","onSelectCategory","onInsert","children","mediaCategories","useMediaCategories","isMobile","useViewportMatch","baseCssClass","onSelectMedia","useCallback","media","url","block","getBlockAndPreviewFromMedia","type","categories","useMemo","map","mediaCategory","label","labels","name","length","jsx","default","jsxs","Fragment","className","multiple","onSelect","allowedTypes","render","open","Button","__next40pxDefaultSize","onClick","event","target","focus","variant","__","category","MediaCategoryPanel","_default","exports"],"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":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAKA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,YAAA,GAAAD,sBAAA,CAAAN,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,MAAA,GAAAT,OAAA;AACA,IAAAU,oBAAA,GAAAJ,sBAAA,CAAAN,OAAA;AACA,IAAAW,aAAA,GAAAL,sBAAA,CAAAN,OAAA;AACA,IAAAY,UAAA,GAAAN,sBAAA,CAAAN,OAAA;AAA8C,IAAAa,WAAA,GAAAb,OAAA;AAlB9C;AACA;AACA;;AAMA;AACA;AACA;;AAUA,MAAMc,mBAAmB,GAAG,CAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAE;AAEzD,SAASC,QAAQA,CAAE;EAClBC,YAAY;EACZC,gBAAgB;EAChBC,gBAAgB;EAChBC,QAAQ;EACRC;AACD,CAAC,EAAG;EACH,MAAMC,eAAe,GAAG,IAAAC,yBAAkB,EAAEN,YAAa,CAAC;EAC1D,MAAMO,QAAQ,GAAG,IAAAC,yBAAgB,EAAE,QAAQ,EAAE,GAAI,CAAC;EAClD,MAAMC,YAAY,GAAG,mCAAmC;EACxD,MAAMC,aAAa,GAAG,IAAAC,oBAAW,EAC9BC,KAAK,IAAM;IACZ,IAAK,CAAEA,KAAK,EAAEC,GAAG,EAAG;MACnB;IACD;IACA,MAAM,CAAEC,KAAK,CAAE,GAAG,IAAAC,kCAA2B,EAAEH,KAAK,EAAEA,KAAK,CAACI,IAAK,CAAC;IAClEb,QAAQ,CAAEW,KAAM,CAAC;EAClB,CAAC,EACD,CAAEX,QAAQ,CACX,CAAC;EACD,MAAMc,UAAU,GAAG,IAAAC,gBAAO,EACzB,MACCb,eAAe,CAACc,GAAG,CAAIC,aAAa,KAAQ;IAC3C,GAAGA,aAAa;IAChBC,KAAK,EAAED,aAAa,CAACE,MAAM,CAACC;EAC7B,CAAC,CAAG,CAAC,EACN,CAAElB,eAAe,CAClB,CAAC;EAED,IAAK,CAAEY,UAAU,CAACO,MAAM,EAAG;IAC1B,oBAAO,IAAA3B,WAAA,CAAA4B,GAAA,EAAC7B,UAAA,CAAA8B,OAAiB,IAAE,CAAC;EAC7B;EAEA,oBACC,IAAA7B,WAAA,CAAA8B,IAAA,EAAA9B,WAAA,CAAA+B,QAAA;IAAAxB,QAAA,GACG,CAAEG,QAAQ,iBACX,IAAAV,WAAA,CAAA8B,IAAA;MAAKE,SAAS,EAAI,GAAGpB,YAAc,YAAa;MAAAL,QAAA,gBAC/C,IAAAP,WAAA,CAAA4B,GAAA,EAAC9B,aAAA,CAAA+B,OAAY;QACZT,UAAU,EAAGA,UAAY;QACzBhB,gBAAgB,EAAGA,gBAAkB;QACrCC,gBAAgB,EAAGA,gBAAkB;QAAAE,QAAA,EAEnCA;MAAQ,CACG,CAAC,eACf,IAAAP,WAAA,CAAA4B,GAAA,EAACpC,MAAA,CAAAqC,OAAgB;QAAAtB,QAAA,eAChB,IAAAP,WAAA,CAAA4B,GAAA,EAAClC,YAAA,CAAAmC,OAAW;UACXI,QAAQ,EAAG,KAAO;UAClBC,QAAQ,EAAGrB,aAAe;UAC1BsB,YAAY,EAAGlC,mBAAqB;UACpCmC,MAAM,EAAGA,CAAE;YAAEC;UAAK,CAAC,kBAClB,IAAArC,WAAA,CAAA4B,GAAA,EAACvC,WAAA,CAAAiD,MAAM;YACNC,qBAAqB;YACrBC,OAAO,EAAKC,KAAK,IAAM;cACtB;cACA;cACA;cACA;cACA;cACA;cACAA,KAAK,CAACC,MAAM,CAACC,KAAK,CAAC,CAAC;cACpBN,IAAI,CAAC,CAAC;YACP,CAAG;YACHL,SAAS,EAAC,6CAA6C;YACvDY,OAAO,EAAC,WAAW;YACnB,wDAAqD,cAAc;YAAArC,QAAA,EAEjE,IAAAsC,QAAE,EAAE,oBAAqB;UAAC,CACrB;QACN,CACH;MAAC,CACe,CAAC;IAAA,CACf,CACL,EACCnC,QAAQ,iBACT,IAAAV,WAAA,CAAA4B,GAAA,EAAC/B,oBAAA,CAAAgC,OAAmB;MAACT,UAAU,EAAGA,UAAY;MAAAb,QAAA,EACzCuC,QAAQ,iBACX,IAAA9C,WAAA,CAAA4B,GAAA,EAACrC,WAAA,CAAAwD,kBAAkB;QAClBzC,QAAQ,EAAGA,QAAU;QACrBH,YAAY,EAAGA,YAAc;QAC7B2C,QAAQ,EAAGA;MAAU,CACrB;IACD,CACmB,CACrB;EAAA,CACA,CAAC;AAEL;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAApB,OAAA,GAEc3B,QAAQ","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_compose","_components","_element","_mediaPanel","_check","_interopRequireDefault","_mediaUpload","_hooks","_utils","_mobileTabNavigation","_categoryTabs","_noResults","_jsxRuntime","ALLOWED_MEDIA_TYPES","MediaTab","rootClientId","selectedCategory","onSelectCategory","setHasCategories","onInsert","children","mediaCategories","useMediaCategories","isMobile","useViewportMatch","baseCssClass","onSelectMedia","useCallback","media","url","block","getBlockAndPreviewFromMedia","type","categories","useMemo","map","mediaCategory","label","labels","name","useEffect","length","jsx","default","jsxs","Fragment","className","multiple","onSelect","allowedTypes","render","open","Button","__next40pxDefaultSize","onClick","event","target","focus","variant","__","category","MediaCategoryPanel","_default","exports"],"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":[]}
@@ -57,6 +57,7 @@ function InserterMenu({
57
57
  const [selectedPatternCategory, setSelectedPatternCategory] = (0, _element.useState)(__experimentalInitialCategory);
58
58
  const [patternFilter, setPatternFilter] = (0, _element.useState)('all');
59
59
  const [selectedMediaCategory, setSelectedMediaCategory] = (0, _element.useState)(null);
60
+ const [hasCategories, setHasCategories] = (0, _element.useState)(true);
60
61
  function getInitialTab() {
61
62
  if (__experimentalInitialTab) {
62
63
  return __experimentalInitialTab;
@@ -104,8 +105,8 @@ function InserterMenu({
104
105
  setPatternFilter(filter);
105
106
  onPatternCategorySelection?.();
106
107
  }, [setSelectedPatternCategory, onPatternCategorySelection]);
107
- const showPatternPanel = selectedTab === 'patterns' && !delayedFilterValue && !!selectedPatternCategory;
108
- const showMediaPanel = selectedTab === 'media' && !!selectedMediaCategory;
108
+ const showPatternPanel = selectedTab === 'patterns' && hasCategories && !delayedFilterValue && !!selectedPatternCategory;
109
+ const showMediaPanel = selectedTab === 'media' && !!selectedMediaCategory && hasCategories;
109
110
  const inserterSearch = (0, _element.useMemo)(() => {
110
111
  if (selectedTab === 'media') {
111
112
  return null;
@@ -163,6 +164,7 @@ function InserterMenu({
163
164
  onInsert: onInsertPattern,
164
165
  onSelectCategory: onClickPatternCategory,
165
166
  selectedCategory: selectedPatternCategory,
167
+ setHasCategories: setHasCategories,
166
168
  children: showPatternPanel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_patternCategoryPreviews.PatternCategoryPreviews, {
167
169
  rootClientId: destinationRootClientId,
168
170
  onInsert: onInsertPattern,
@@ -178,6 +180,7 @@ function InserterMenu({
178
180
  selectedCategory: selectedMediaCategory,
179
181
  onSelectCategory: setSelectedMediaCategory,
180
182
  onInsert: onInsert,
183
+ setHasCategories: setHasCategories,
181
184
  children: showMediaPanel && /*#__PURE__*/(0, _jsxRuntime.jsx)(_mediaTab.MediaCategoryPanel, {
182
185
  rootClientId: destinationRootClientId,
183
186
  onInsert: onInsert,
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_components","_i18n","_compose","_data","_tips","_previewPanel","_blockTypesTab","_blockPatternsTab","_patternCategoryPreviews","_mediaTab","_searchResults","_useInsertionPoint","_store","_tabbedSidebar","_useZoomOut","_jsxRuntime","NOOP","InserterMenu","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","onPatternCategorySelection","onClose","__experimentalInitialTab","__experimentalInitialCategory","ref","isZoomOutMode","useSelect","select","blockEditorStore","__unstableGetEditorMode","filterValue","setFilterValue","delayedFilterValue","useDebouncedInput","hoveredItem","setHoveredItem","useState","selectedPatternCategory","setSelectedPatternCategory","patternFilter","setPatternFilter","selectedMediaCategory","setSelectedMediaCategory","getInitialTab","selectedTab","setSelectedTab","shouldUseZoomOut","useZoomOut","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","useInsertionPoint","insertionIndex","blockTypesTabRef","useRef","onInsert","useCallback","blocks","meta","shouldForceFocusBlock","_rootClientId","window","requestAnimationFrame","current","contains","ownerDocument","activeElement","querySelector","focus","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","filter","showPatternPanel","showMediaPanel","inserterSearch","useMemo","jsxs","Fragment","children","jsx","SearchControl","__nextHasNoMarginBottom","className","onChange","value","label","__","placeholder","default","showBlockDirectory","prioritizePatterns","blocksTab","VisuallyHidden","as","patternsTab","onSelectCategory","selectedCategory","PatternCategoryPreviews","category","showTitlesAsTooltip","mediaTab","MediaTab","MediaCategoryPanel","handleSetSelectedTab","tabsRef","useLayoutEffect","clsx","closeButtonLabel","tabs","name","title","panel","Popover","placement","offset","focusOnMount","animate","PrivateInserterMenu","exports","forwardRef","PublicInserterMenu","props","_default"],"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":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_element","_components","_i18n","_compose","_data","_tips","_previewPanel","_blockTypesTab","_blockPatternsTab","_patternCategoryPreviews","_mediaTab","_searchResults","_useInsertionPoint","_store","_tabbedSidebar","_useZoomOut","_jsxRuntime","NOOP","InserterMenu","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","onPatternCategorySelection","onClose","__experimentalInitialTab","__experimentalInitialCategory","ref","isZoomOutMode","useSelect","select","blockEditorStore","__unstableGetEditorMode","filterValue","setFilterValue","delayedFilterValue","useDebouncedInput","hoveredItem","setHoveredItem","useState","selectedPatternCategory","setSelectedPatternCategory","patternFilter","setPatternFilter","selectedMediaCategory","setSelectedMediaCategory","hasCategories","setHasCategories","getInitialTab","selectedTab","setSelectedTab","shouldUseZoomOut","useZoomOut","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","useInsertionPoint","insertionIndex","blockTypesTabRef","useRef","onInsert","useCallback","blocks","meta","shouldForceFocusBlock","_rootClientId","window","requestAnimationFrame","current","contains","ownerDocument","activeElement","querySelector","focus","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","filter","showPatternPanel","showMediaPanel","inserterSearch","useMemo","jsxs","Fragment","children","jsx","SearchControl","__nextHasNoMarginBottom","className","onChange","value","label","__","placeholder","default","showBlockDirectory","prioritizePatterns","blocksTab","VisuallyHidden","as","patternsTab","onSelectCategory","selectedCategory","PatternCategoryPreviews","category","showTitlesAsTooltip","mediaTab","MediaTab","MediaCategoryPanel","handleSetSelectedTab","tabsRef","useLayoutEffect","clsx","closeButtonLabel","tabs","name","title","panel","Popover","placement","offset","focusOnMount","animate","PrivateInserterMenu","exports","forwardRef","PublicInserterMenu","props","_default"],"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":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AAQA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,KAAA,GAAAL,OAAA;AAKA,IAAAM,KAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,aAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,cAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,iBAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,wBAAA,GAAAV,OAAA;AACA,IAAAW,SAAA,GAAAX,OAAA;AACA,IAAAY,cAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,kBAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,MAAA,GAAAd,OAAA;AACA,IAAAe,cAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,WAAA,GAAAhB,OAAA;AAAsD,IAAAiB,WAAA,GAAAjB,OAAA;AAlCtD;AACA;AACA;;AAGA;AACA;AACA;;AAcA;AACA;AACA;;AAaA,MAAMkB,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,GAAG,IAAAC,eAAS,EAC5BC,MAAM,IACPA,MAAM,CAAEC,YAAiB,CAAC,CAACC,uBAAuB,CAAC,CAAC,KAAK,UAAU,EACpE,EACD,CAAC;EACD,MAAM,CAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,CAAE,GACxD,IAAAC,0BAAiB,EAAEf,yBAA0B,CAAC;EAC/C,MAAM,CAAEgB,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAC,iBAAQ,EAAE,IAAK,CAAC;EACxD,MAAM,CAAEC,uBAAuB,EAAEC,0BAA0B,CAAE,GAAG,IAAAF,iBAAQ,EACvEb,6BACD,CAAC;EACD,MAAM,CAAEgB,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAJ,iBAAQ,EAAE,KAAM,CAAC;EAC7D,MAAM,CAAEK,qBAAqB,EAAEC,wBAAwB,CAAE,GACxD,IAAAN,iBAAQ,EAAE,IAAK,CAAC;EAEjB,MAAM,CAAEO,aAAa,EAAEC,gBAAgB,CAAE,GAAG,IAAAR,iBAAQ,EAAE,IAAK,CAAC;EAC5D,SAASS,aAAaA,CAAA,EAAG;IACxB,IAAKvB,wBAAwB,EAAG;MAC/B,OAAOA,wBAAwB;IAChC;IAEA,IAAKG,aAAa,EAAG;MACpB,OAAO,UAAU;IAClB;EACD;EACA,MAAM,CAAEqB,WAAW,EAAEC,cAAc,CAAE,GAAG,IAAAX,iBAAQ,EAAES,aAAa,CAAC,CAAE,CAAC;EAEnE,MAAMG,gBAAgB,GACrBF,WAAW,KAAK,UAAU,IAAIA,WAAW,KAAK,OAAO;EACtD,IAAAG,sBAAU,EAAED,gBAAiB,CAAC;EAE9B,MAAM,CAAEE,uBAAuB,EAAEC,cAAc,EAAEC,sBAAsB,CAAE,GACxE,IAAAC,0BAAiB,EAAE;IAClB1C,YAAY;IACZC,QAAQ;IACRC,UAAU;IACVyC,cAAc,EAAExC,4BAA4B;IAC5CK;EACD,CAAE,CAAC;EACJ,MAAMoC,gBAAgB,GAAG,IAAAC,eAAM,EAAC,CAAC;EAEjC,MAAMC,QAAQ,GAAG,IAAAC,oBAAW,EAC3B,CAAEC,MAAM,EAAEC,IAAI,EAAEC,qBAAqB,EAAEC,aAAa,KAAM;IACzDX,cAAc,CACbQ,MAAM,EACNC,IAAI,EACJC,qBAAqB,EACrBC,aACD,CAAC;IACD/C,QAAQ,CAAE4C,MAAO,CAAC;;IAElB;IACAI,MAAM,CAACC,qBAAqB,CAAE,MAAM;MACnC,IACC,CAAE7C,gBAAgB,IAClB,CAAEoC,gBAAgB,CAACU,OAAO,EAAEC,QAAQ,CACnC1C,GAAG,CAACyC,OAAO,CAACE,aAAa,CAACC,aAC3B,CAAC,EACA;QACD;QACAb,gBAAgB,CAACU,OAAO,EAAEI,aAAa,CAAE,QAAS,CAAC,CAACC,KAAK,CAAC,CAAC;MAC5D;IACD,CAAE,CAAC;EACJ,CAAC,EACD,CAAEnB,cAAc,EAAEpC,QAAQ,EAAEI,gBAAgB,CAC7C,CAAC;EAED,MAAMoD,eAAe,GAAG,IAAAb,oBAAW,EAClC,CAAEC,MAAM,EAAEa,WAAW,KAAM;IAC1BpB,sBAAsB,CAAE,KAAM,CAAC;IAC/BD,cAAc,CAAEQ,MAAM,EAAE;MAAEa;IAAY,CAAE,CAAC;IACzCzD,QAAQ,CAAC,CAAC;EACX,CAAC,EACD,CAAEoC,cAAc,EAAEpC,QAAQ,CAC3B,CAAC;EAED,MAAM0D,OAAO,GAAG,IAAAf,oBAAW,EACxBgB,IAAI,IAAM;IACXtB,sBAAsB,CAAEsB,IAAK,CAAC;IAC9BvC,cAAc,CAAEuC,IAAK,CAAC;EACvB,CAAC,EACD,CAAEtB,sBAAsB,EAAEjB,cAAc,CACzC,CAAC;EAED,MAAMwC,sBAAsB,GAAG,IAAAjB,oBAAW,EACzC,CAAEkB,eAAe,EAAEC,MAAM,KAAM;IAC9BvC,0BAA0B,CAAEsC,eAAgB,CAAC;IAC7CpC,gBAAgB,CAAEqC,MAAO,CAAC;IAC1BzD,0BAA0B,GAAG,CAAC;EAC/B,CAAC,EACD,CAAEkB,0BAA0B,EAAElB,0BAA0B,CACzD,CAAC;EAED,MAAM0D,gBAAgB,GACrBhC,WAAW,KAAK,UAAU,IAC1BH,aAAa,IACb,CAAEX,kBAAkB,IACpB,CAAC,CAAEK,uBAAuB;EAE3B,MAAM0C,cAAc,GACnBjC,WAAW,KAAK,OAAO,IAAI,CAAC,CAAEL,qBAAqB,IAAIE,aAAa;EAErE,MAAMqC,cAAc,GAAG,IAAAC,gBAAO,EAAE,MAAM;IACrC,IAAKnC,WAAW,KAAK,OAAO,EAAG;MAC9B,OAAO,IAAI;IACZ;IAEA,oBACC,IAAAtC,WAAA,CAAA0E,IAAA,EAAA1E,WAAA,CAAA2E,QAAA;MAAAC,QAAA,gBACC,IAAA5E,WAAA,CAAA6E,GAAA,EAAC5F,WAAA,CAAA6F,aAAa;QACbC,uBAAuB;QACvBC,SAAS,EAAC,+BAA+B;QACzCC,QAAQ,EAAKC,KAAK,IAAM;UACvB,IAAKxD,WAAW,EAAG;YAClBC,cAAc,CAAE,IAAK,CAAC;UACvB;UACAJ,cAAc,CAAE2D,KAAM,CAAC;QACxB,CAAG;QACHA,KAAK,EAAG5D,WAAa;QACrB6D,KAAK,EAAG,IAAAC,QAAE,EAAE,gCAAiC,CAAG;QAChDC,WAAW,EAAG,IAAAD,QAAE,EAAE,QAAS;MAAG,CAC9B,CAAC,EACA,CAAC,CAAE5D,kBAAkB,iBACtB,IAAAxB,WAAA,CAAA6E,GAAA,EAAClF,cAAA,CAAA2F,OAAqB;QACrBhE,WAAW,EAAGE,kBAAoB;QAClCjB,QAAQ,EAAGA,QAAU;QACrB0D,OAAO,EAAGA,OAAS;QACnB9D,YAAY,EAAGA,YAAc;QAC7BC,QAAQ,EAAGA,QAAU;QACrBC,UAAU,EAAGA,UAAY;QACzBC,4BAA4B,EAC3BA,4BACA;QACDiF,kBAAkB;QAClB5E,gBAAgB,EAAGA,gBAAkB;QACrC6E,kBAAkB,EAAGlD,WAAW,KAAK;MAAY,CACjD,CACD;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFA,WAAW,EACXZ,WAAW,EACXC,cAAc,EACdJ,cAAc,EACdD,WAAW,EACXE,kBAAkB,EAClBjB,QAAQ,EACR0D,OAAO,EACPtD,gBAAgB,EAChBP,QAAQ,EACRD,YAAY,EACZG,4BAA4B,EAC5BD,UAAU,CACT,CAAC;EAEH,MAAMoF,SAAS,GAAG,IAAAhB,gBAAO,EAAE,MAAM;IAChC,oBACC,IAAAzE,WAAA,CAAA0E,IAAA,EAAA1E,WAAA,CAAA2E,QAAA;MAAAC,QAAA,gBACC,IAAA5E,WAAA,CAAA6E,GAAA;QAAKG,SAAS,EAAC,mCAAmC;QAAAJ,QAAA,eACjD,IAAA5E,WAAA,CAAA6E,GAAA,EAACtF,cAAA,CAAA+F,OAAa;UACbtE,GAAG,EAAG+B,gBAAkB;UACxB5C,YAAY,EAAGuC,uBAAyB;UACxCO,QAAQ,EAAGA,QAAU;UACrBgB,OAAO,EAAGA,OAAS;UACnBxD,kBAAkB,EAAGA;QAAoB,CACzC;MAAC,CACE,CAAC,EACJD,qBAAqB,iBACtB,IAAAR,WAAA,CAAA0E,IAAA;QAAKM,SAAS,EAAC,6BAA6B;QAAAJ,QAAA,gBAC3C,IAAA5E,WAAA,CAAA6E,GAAA,EAAC5F,WAAA,CAAAyG,cAAc;UAACC,EAAE,EAAC,IAAI;UAAAf,QAAA,EACpB,IAAAQ,QAAE,EAAE,kCAAmC;QAAC,CAC3B,CAAC,eACjB,IAAApF,WAAA,CAAA6E,GAAA,EAACxF,KAAA,CAAAiG,OAAI,IAAE,CAAC;MAAA,CACJ,CACL;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACF5C,uBAAuB,EACvBO,QAAQ,EACRgB,OAAO,EACPxD,kBAAkB,EAClBD,qBAAqB,CACpB,CAAC;EAEH,MAAMoF,WAAW,GAAG,IAAAnB,gBAAO,EAAE,MAAM;IAClC,oBACC,IAAAzE,WAAA,CAAA6E,GAAA,EAACrF,iBAAA,CAAA8F,OAAgB;MAChBnF,YAAY,EAAGuC,uBAAyB;MACxCO,QAAQ,EAAGc,eAAiB;MAC5B8B,gBAAgB,EAAG1B,sBAAwB;MAC3C2B,gBAAgB,EAAGjE,uBAAyB;MAC5CO,gBAAgB,EAAGA,gBAAkB;MAAAwC,QAAA,EAEnCN,gBAAgB,iBACjB,IAAAtE,WAAA,CAAA6E,GAAA,EAACpF,wBAAA,CAAAsG,uBAAuB;QACvB5F,YAAY,EAAGuC,uBAAyB;QACxCO,QAAQ,EAAGc,eAAiB;QAC5BiC,QAAQ,EAAGnE,uBAAyB;QACpCE,aAAa,EAAGA,aAAe;QAC/BkE,mBAAmB;MAAA,CACnB;IACD,CACgB,CAAC;EAErB,CAAC,EAAE,CACFvD,uBAAuB,EACvBqB,eAAe,EACfI,sBAAsB,EACtBpC,aAAa,EACbF,uBAAuB,EACvByC,gBAAgB,CACf,CAAC;EAEH,MAAM4B,QAAQ,GAAG,IAAAzB,gBAAO,EAAE,MAAM;IAC/B,oBACC,IAAAzE,WAAA,CAAA6E,GAAA,EAACnF,SAAA,CAAAyG,QAAQ;MACRhG,YAAY,EAAGuC,uBAAyB;MACxCoD,gBAAgB,EAAG7D,qBAAuB;MAC1C4D,gBAAgB,EAAG3D,wBAA0B;MAC7Ce,QAAQ,EAAGA,QAAU;MACrBb,gBAAgB,EAAGA,gBAAkB;MAAAwC,QAAA,EAEnCL,cAAc,iBACf,IAAAvE,WAAA,CAAA6E,GAAA,EAACnF,SAAA,CAAA0G,kBAAkB;QAClBjG,YAAY,EAAGuC,uBAAyB;QACxCO,QAAQ,EAAGA,QAAU;QACrB+C,QAAQ,EAAG/D;MAAuB,CAClC;IACD,CACQ,CAAC;EAEb,CAAC,EAAE,CACFS,uBAAuB,EACvBO,QAAQ,EACRhB,qBAAqB,EACrBC,wBAAwB,EACxBqC,cAAc,CACb,CAAC;EAEH,MAAM8B,oBAAoB,GAAKnB,KAAK,IAAM;IACzC;IACA,IAAKA,KAAK,KAAK,UAAU,EAAG;MAC3BpD,0BAA0B,CAAE,IAAK,CAAC;IACnC;IACAS,cAAc,CAAE2C,KAAM,CAAC;EACxB,CAAC;;EAED;EACA,MAAMoB,OAAO,GAAG,IAAAtD,eAAM,EAAC,CAAC;EACxB,IAAAuD,wBAAe,EAAE,MAAM;IACtB,IAAKD,OAAO,CAAC7C,OAAO,EAAG;MACtBF,MAAM,CAACC,qBAAqB,CAAE,MAAM;QACnC8C,OAAO,CAAC7C,OAAO,CACbI,aAAa,CAAE,oCAAqC,CAAC,EACpDC,KAAK,CAAC,CAAC;MACX,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,EAAG,CAAC;EAEP,oBACC,IAAA9D,WAAA,CAAA0E,IAAA;IACCM,SAAS,EAAG,IAAAwB,aAAI,EAAE,6BAA6B,EAAE;MAChD,YAAY,EAAElC,gBAAgB,IAAIC,cAAc;MAChD,aAAa,EAAEtD;IAChB,CAAE,CAAG;IACLD,GAAG,EAAGA,GAAK;IAAA4D,QAAA,gBAEX,IAAA5E,WAAA,CAAA6E,GAAA;MAAKG,SAAS,EAAC,kCAAkC;MAAAJ,QAAA,eAChD,IAAA5E,WAAA,CAAA6E,GAAA,EAAC/E,cAAA,CAAAwF,OAAa;QACbtE,GAAG,EAAGsF,OAAS;QACf/F,QAAQ,EAAG8F,oBAAsB;QACjCxF,OAAO,EAAGA,OAAS;QACnByB,WAAW,EAAGA,WAAa;QAC3BmE,gBAAgB,EAAG,IAAArB,QAAE,EAAE,sBAAuB,CAAG;QACjDsB,IAAI,EAAG,CACN;UACCC,IAAI,EAAE,QAAQ;UACdC,KAAK,EAAE,IAAAxB,QAAE,EAAE,QAAS,CAAC;UACrByB,KAAK,eACJ,IAAA7G,WAAA,CAAA0E,IAAA,EAAA1E,WAAA,CAAA2E,QAAA;YAAAC,QAAA,GACGJ,cAAc,EACdlC,WAAW,KAAK,QAAQ,IACzB,CAAEd,kBAAkB,IACpBiE,SAAS;UAAA,CACT;QAEJ,CAAC,EACD;UACCkB,IAAI,EAAE,UAAU;UAChBC,KAAK,EAAE,IAAAxB,QAAE,EAAE,UAAW,CAAC;UACvByB,KAAK,eACJ,IAAA7G,WAAA,CAAA0E,IAAA,EAAA1E,WAAA,CAAA2E,QAAA;YAAAC,QAAA,GACGJ,cAAc,EACdlC,WAAW,KAAK,UAAU,IAC3B,CAAEd,kBAAkB,IACpBoE,WAAW;UAAA,CACX;QAEJ,CAAC,EACD;UACCe,IAAI,EAAE,OAAO;UACbC,KAAK,EAAE,IAAAxB,QAAE,EAAE,OAAQ,CAAC;UACpByB,KAAK,eACJ,IAAA7G,WAAA,CAAA0E,IAAA,EAAA1E,WAAA,CAAA2E,QAAA;YAAAC,QAAA,GACGJ,cAAc,EACd0B,QAAQ;UAAA,CACT;QAEJ,CAAC;MACC,CACH;IAAC,CACE,CAAC,EACJ1F,qBAAqB,IAAIkB,WAAW,iBACrC,IAAA1B,WAAA,CAAA6E,GAAA,EAAC5F,WAAA,CAAA6H,OAAO;MACP9B,SAAS,EAAC,mDAAmD;MAC7D+B,SAAS,EAAC,aAAa;MACvBC,MAAM,EAAG,EAAI;MACbC,YAAY,EAAG,KAAO;MACtBC,OAAO,EAAG,KAAO;MAAAtC,QAAA,eAEjB,IAAA5E,WAAA,CAAA6E,GAAA,EAACvF,aAAA,CAAAgG,OAAoB;QAACpB,IAAI,EAAGxC;MAAa,CAAE;IAAC,CACrC,CACT;EAAA,CACG,CAAC;AAER;AAEO,MAAMyF,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,IAAAE,mBAAU,EAAEnH,YAAa,CAAC;AAE7D,SAASoH,kBAAkBA,CAAEC,KAAK,EAAEvG,GAAG,EAAG;EACzC,oBACC,IAAAhB,WAAA,CAAA6E,GAAA,EAACsC,mBAAmB;IAAA,GACdI,KAAK;IACV3G,0BAA0B,EAAGX,IAAM;IACnCe,GAAG,EAAGA;EAAK,CACX,CAAC;AAEJ;AAAC,IAAAwG,QAAA,GAAAJ,OAAA,CAAA9B,OAAA,GAEc,IAAA+B,mBAAU,EAAEC,kBAAmB,CAAC","ignoreList":[]}
@@ -15,6 +15,7 @@ var _useBindingsAttributes = require("../hooks/use-bindings-attributes");
15
15
  var _lockUnlock = require("../lock-unlock");
16
16
  var _inspectorControls = _interopRequireDefault(require("../components/inspector-controls"));
17
17
  var _blockContext = _interopRequireDefault(require("../components/block-context"));
18
+ var _blockEdit = require("../components/block-edit");
18
19
  var _blockBindings = require("../utils/block-bindings");
19
20
  var _store = require("../store");
20
21
  var _jsxRuntime = require("react/jsx-runtime");
@@ -45,17 +46,27 @@ function BlockBindingsPanelDropdown({
45
46
  attribute,
46
47
  binding
47
48
  }) {
49
+ const {
50
+ clientId
51
+ } = (0, _blockEdit.useBlockEditContext)();
48
52
  const registeredSources = (0, _blocks.getBlockBindingsSources)();
49
53
  const {
50
54
  updateBlockBindings
51
55
  } = (0, _blockBindings.useBlockBindingsUtils)();
52
56
  const currentKey = binding?.args?.key;
57
+ const attributeType = (0, _data.useSelect)(select => {
58
+ const {
59
+ name: blockName
60
+ } = select(_store.store).getBlock(clientId);
61
+ const _attributeType = (0, _blocks.getBlockType)(blockName).attributes?.[attribute]?.type;
62
+ return _attributeType === 'rich-text' ? 'string' : _attributeType;
63
+ }, [clientId, attribute]);
53
64
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
54
65
  children: Object.entries(fieldsList).map(([name, fields], i) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_element.Fragment, {
55
66
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(DropdownMenuV2.Group, {
56
67
  children: [Object.keys(fieldsList).length > 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(DropdownMenuV2.GroupLabel, {
57
68
  children: registeredSources[name].label
58
- }), Object.entries(fields).map(([key, args]) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(DropdownMenuV2.RadioItem, {
69
+ }), Object.entries(fields).filter(([, args]) => args?.type === attributeType).map(([key, args]) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(DropdownMenuV2.RadioItem, {
59
70
  onChange: () => updateBlockBindings({
60
71
  [attribute]: {
61
72
  source: name,
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_blocks","_components","_data","_element","_compose","_useBindingsAttributes","_lockUnlock","_inspectorControls","_interopRequireDefault","_blockContext","_blockBindings","_store","_jsxRuntime","DropdownMenuV2","unlock","componentsPrivateApis","EMPTY_OBJECT","useToolsPanelDropdownMenuProps","isMobile","useViewportMatch","popoverProps","placement","offset","BlockBindingsPanelDropdown","fieldsList","attribute","binding","registeredSources","getBlockBindingsSources","updateBlockBindings","useBlockBindingsUtils","currentKey","args","key","jsx","Fragment","children","Object","entries","map","name","fields","i","jsxs","Group","keys","length","GroupLabel","label","RadioItem","onChange","source","value","checked","ItemLabel","ItemHelpText","Separator","BlockBindingsAttribute","sourceName","sourceProps","getBlockBindingsSource","isSourceInvalid","__experimentalVStack","className","spacing","__experimentalText","truncate","variant","isDestructive","__","ReadOnlyBlockBindingsPanelItems","bindings","__experimentalItem","EditableBlockBindingsPanelItems","attributes","__experimentalToolsPanelItem","hasValue","onDeselect","undefined","gutter","trigger","BlockBindingsPanel","blockName","metadata","blockContext","useContext","BlockContext","removeAllBlockBindings","bindableAttributes","getBindableAttributes","dropdownMenuProps","_fieldsList","canUpdateBlockBindings","useSelect","select","forEach","getFieldsList","usesContext","context","sourceList","values","blockEditorStore","getSettings","filteredBindings","canBindAttribute","readOnly","default","group","__experimentalToolsPanel","resetAll","__experimentalItemGroup","isBordered","isSeparated","exports","_default","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":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAIA,IAAAE,WAAA,GAAAF,OAAA;AASA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAKA,IAAAM,sBAAA,GAAAN,OAAA;AAIA,IAAAO,WAAA,GAAAP,OAAA;AACA,IAAAQ,kBAAA,GAAAC,sBAAA,CAAAT,OAAA;AACA,IAAAU,aAAA,GAAAD,sBAAA,CAAAT,OAAA;AACA,IAAAW,cAAA,GAAAX,OAAA;AACA,IAAAY,MAAA,GAAAZ,OAAA;AAAqD,IAAAa,WAAA,GAAAb,OAAA;AAhCrD;AACA;AACA;;AAmBA;AACA;AACA;;AAWA,MAAM;EAAEc;AAAe,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAE1D,MAAMC,YAAY,GAAG,CAAC,CAAC;AAEvB,MAAMC,8BAA8B,GAAGA,CAAA,KAAM;EAC5C,MAAMC,QAAQ,GAAG,IAAAC,yBAAgB,EAAE,QAAQ,EAAE,GAAI,CAAC;EAClD,OAAO,CAAED,QAAQ,GACd;IACAE,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,MAAMC,iBAAiB,GAAG,IAAAC,+BAAuB,EAAC,CAAC;EACnD,MAAM;IAAEC;EAAoB,CAAC,GAAG,IAAAC,oCAAqB,EAAC,CAAC;EACvD,MAAMC,UAAU,GAAGL,OAAO,EAAEM,IAAI,EAAEC,GAAG;EACrC,oBACC,IAAArB,WAAA,CAAAsB,GAAA,EAAAtB,WAAA,CAAAuB,QAAA;IAAAC,QAAA,EACGC,MAAM,CAACC,OAAO,CAAEd,UAAW,CAAC,CAACe,GAAG,CAAE,CAAE,CAAEC,IAAI,EAAEC,MAAM,CAAE,EAAEC,CAAC,kBACxD,IAAA9B,WAAA,CAAA+B,IAAA,EAACxC,QAAA,CAAAgC,QAAQ;MAAAC,QAAA,gBACR,IAAAxB,WAAA,CAAA+B,IAAA,EAAC9B,cAAc,CAAC+B,KAAK;QAAAR,QAAA,GAClBC,MAAM,CAACQ,IAAI,CAAErB,UAAW,CAAC,CAACsB,MAAM,GAAG,CAAC,iBACrC,IAAAlC,WAAA,CAAAsB,GAAA,EAACrB,cAAc,CAACkC,UAAU;UAAAX,QAAA,EACvBT,iBAAiB,CAAEa,IAAI,CAAE,CAACQ;QAAK,CACP,CAC3B,EACCX,MAAM,CAACC,OAAO,CAAEG,MAAO,CAAC,CAACF,GAAG,CAAE,CAAE,CAAEN,GAAG,EAAED,IAAI,CAAE,kBAC9C,IAAApB,WAAA,CAAA+B,IAAA,EAAC9B,cAAc,CAACoC,SAAS;UAExBC,QAAQ,EAAGA,CAAA,KACVrB,mBAAmB,CAAE;YACpB,CAAEJ,SAAS,GAAI;cACd0B,MAAM,EAAEX,IAAI;cACZR,IAAI,EAAE;gBAAEC;cAAI;YACb;UACD,CAAE,CACF;UACDO,IAAI,EAAGf,SAAS,GAAG,UAAY;UAC/B2B,KAAK,EAAGnB,GAAK;UACboB,OAAO,EAAGpB,GAAG,KAAKF,UAAY;UAAAK,QAAA,gBAE9B,IAAAxB,WAAA,CAAAsB,GAAA,EAACrB,cAAc,CAACyC,SAAS;YAAAlB,QAAA,EACtBJ,IAAI,EAAEgB;UAAK,CACY,CAAC,eAC3B,IAAApC,WAAA,CAAAsB,GAAA,EAACrB,cAAc,CAAC0C,YAAY;YAAAnB,QAAA,EACzBJ,IAAI,EAAEoB;UAAK,CACe,CAAC;QAAA,GAlBxBnB,GAmBmB,CACzB,CAAC;MAAA,CACkB,CAAC,EACrBS,CAAC,KAAKL,MAAM,CAACQ,IAAI,CAAErB,UAAW,CAAC,CAACsB,MAAM,GAAG,CAAC,iBAC3C,IAAAlC,WAAA,CAAAsB,GAAA,EAACrB,cAAc,CAAC2C,SAAS,IAAE,CAC3B;IAAA,GAjCchB,IAkCN,CACT;EAAC,CACF,CAAC;AAEL;AAEA,SAASiB,sBAAsBA,CAAE;EAAEhC,SAAS;EAAEC,OAAO;EAAEF;AAAW,CAAC,EAAG;EACrE,MAAM;IAAE2B,MAAM,EAAEO,UAAU;IAAE1B;EAAK,CAAC,GAAGN,OAAO,IAAI,CAAC,CAAC;EAClD,MAAMiC,WAAW,GAAG,IAAAC,8BAAsB,EAAEF,UAAW,CAAC;EACxD,MAAMG,eAAe,GAAG,CAAEF,WAAW;EACrC,oBACC,IAAA/C,WAAA,CAAA+B,IAAA,EAAC1C,WAAA,CAAA6D,oBAAM;IAACC,SAAS,EAAC,6BAA6B;IAACC,OAAO,EAAG,CAAG;IAAA5B,QAAA,gBAC5D,IAAAxB,WAAA,CAAAsB,GAAA,EAACjC,WAAA,CAAAgE,kBAAI;MAACC,QAAQ;MAAA9B,QAAA,EAAGX;IAAS,CAAQ,CAAC,EACjC,CAAC,CAAEC,OAAO,iBACX,IAAAd,WAAA,CAAAsB,GAAA,EAACjC,WAAA,CAAAgE,kBAAI;MACJC,QAAQ;MACRC,OAAO,EAAG,CAAEN,eAAe,IAAI,OAAS;MACxCO,aAAa,EAAGP,eAAiB;MAAAzB,QAAA,EAE/ByB,eAAe,GACd,IAAAQ,QAAE,EAAE,gBAAiB,CAAC,GACtB7C,UAAU,GAAIkC,UAAU,CAAE,GAAI1B,IAAI,EAAEC,GAAG,CAAE,EAAEe,KAAK,IAChDW,WAAW,EAAEX,KAAK,IAClBU;IAAU,CACR,CACN;EAAA,CACM,CAAC;AAEX;AAEA,SAASY,+BAA+BA,CAAE;EAAEC,QAAQ;EAAE/C;AAAW,CAAC,EAAG;EACpE,oBACC,IAAAZ,WAAA,CAAAsB,GAAA,EAAAtB,WAAA,CAAAuB,QAAA;IAAAC,QAAA,EACGC,MAAM,CAACC,OAAO,CAAEiC,QAAS,CAAC,CAAChC,GAAG,CAAE,CAAE,CAAEd,SAAS,EAAEC,OAAO,CAAE,kBACzD,IAAAd,WAAA,CAAAsB,GAAA,EAACjC,WAAA,CAAAuE,kBAAI;MAAApC,QAAA,eACJ,IAAAxB,WAAA,CAAAsB,GAAA,EAACuB,sBAAsB;QACtBhC,SAAS,EAAGA,SAAW;QACvBC,OAAO,EAAGA,OAAS;QACnBF,UAAU,EAAGA;MAAY,CACzB;IAAC,GALSC,SAMN,CACL;EAAC,CACF,CAAC;AAEL;AAEA,SAASgD,+BAA+BA,CAAE;EACzCC,UAAU;EACVH,QAAQ;EACR/C;AACD,CAAC,EAAG;EACH,MAAM;IAAEK;EAAoB,CAAC,GAAG,IAAAC,oCAAqB,EAAC,CAAC;EACvD,MAAMZ,QAAQ,GAAG,IAAAC,yBAAgB,EAAE,QAAQ,EAAE,GAAI,CAAC;EAClD,oBACC,IAAAP,WAAA,CAAAsB,GAAA,EAAAtB,WAAA,CAAAuB,QAAA;IAAAC,QAAA,EACGsC,UAAU,CAACnC,GAAG,CAAId,SAAS,IAAM;MAClC,MAAMC,OAAO,GAAG6C,QAAQ,CAAE9C,SAAS,CAAE;MACrC,oBACC,IAAAb,WAAA,CAAAsB,GAAA,EAACjC,WAAA,CAAA0E,4BAAc;QAEdC,QAAQ,EAAGA,CAAA,KAAM,CAAC,CAAElD,OAAS;QAC7BsB,KAAK,EAAGvB,SAAW;QACnBoD,UAAU,EAAGA,CAAA,KAAM;UAClBhD,mBAAmB,CAAE;YACpB,CAAEJ,SAAS,GAAIqD;UAChB,CAAE,CAAC;QACJ,CAAG;QAAA1C,QAAA,eAEH,IAAAxB,WAAA,CAAAsB,GAAA,EAACrB,cAAc;UACdQ,SAAS,EACRH,QAAQ,GAAG,cAAc,GAAG,YAC5B;UACD6D,MAAM,EAAG7D,QAAQ,GAAG,CAAC,GAAG,EAAI;UAC5B8D,OAAO,eACN,IAAApE,WAAA,CAAAsB,GAAA,EAACjC,WAAA,CAAAuE,kBAAI;YAAApC,QAAA,eACJ,IAAAxB,WAAA,CAAAsB,GAAA,EAACuB,sBAAsB;cACtBhC,SAAS,EAAGA,SAAW;cACvBC,OAAO,EAAGA,OAAS;cACnBF,UAAU,EAAGA;YAAY,CACzB;UAAC,CACG,CACN;UAAAY,QAAA,eAED,IAAAxB,WAAA,CAAAsB,GAAA,EAACX,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;AAEO,MAAMwD,kBAAkB,GAAGA,CAAE;EAAEzC,IAAI,EAAE0C,SAAS;EAAEC;AAAS,CAAC,KAAM;EACtE,MAAMC,YAAY,GAAG,IAAAC,mBAAU,EAAEC,qBAAa,CAAC;EAC/C,MAAM;IAAEC;EAAuB,CAAC,GAAG,IAAAzD,oCAAqB,EAAC,CAAC;EAC1D,MAAM0D,kBAAkB,GAAG,IAAAC,4CAAqB,EAAEP,SAAU,CAAC;EAC7D,MAAMQ,iBAAiB,GAAGzE,8BAA8B,CAAC,CAAC;;EAE1D;EACA;EACA;EACA,MAAM0E,WAAW,GAAG,CAAC,CAAC;EACtB,MAAM;IAAEnE,UAAU;IAAEoE;EAAuB,CAAC,GAAG,IAAAC,eAAS,EACrDC,MAAM,IAAM;IACb,IAAK,CAAEN,kBAAkB,IAAIA,kBAAkB,CAAC1C,MAAM,KAAK,CAAC,EAAG;MAC9D,OAAO9B,YAAY;IACpB;IACA,MAAMW,iBAAiB,GAAG,IAAAC,+BAAuB,EAAC,CAAC;IACnDS,MAAM,CAACC,OAAO,CAAEX,iBAAkB,CAAC,CAACoE,OAAO,CAC1C,CAAE,CAAErC,UAAU,EAAE;MAAEsC,aAAa;MAAEC;IAAY,CAAC,CAAE,KAAM;MACrD,IAAKD,aAAa,EAAG;QACpB;QACA,MAAME,OAAO,GAAG,CAAC,CAAC;QAClB,IAAKD,WAAW,EAAEnD,MAAM,EAAG;UAC1B,KAAM,MAAMb,GAAG,IAAIgE,WAAW,EAAG;YAChCC,OAAO,CAAEjE,GAAG,CAAE,GAAGmD,YAAY,CAAEnD,GAAG,CAAE;UACrC;QACD;QACA,MAAMkE,UAAU,GAAGH,aAAa,CAAE;UACjCF,MAAM;UACNI;QACD,CAAE,CAAC;QACH;QACA,IAAK7D,MAAM,CAACQ,IAAI,CAAEsD,UAAU,IAAI,CAAC,CAAE,CAAC,CAACrD,MAAM,EAAG;UAC7C6C,WAAW,CAAEjC,UAAU,CAAE,GAAG;YAAE,GAAGyC;UAAW,CAAC;QAC9C;MACD;IACD,CACD,CAAC;IACD,OAAO;MACN3E,UAAU,EACTa,MAAM,CAAC+D,MAAM,CAAET,WAAY,CAAC,CAAC7C,MAAM,GAAG,CAAC,GACpC6C,WAAW,GACX3E,YAAY;MAChB4E,sBAAsB,EACrBE,MAAM,CAAEO,YAAiB,CAAC,CAACC,WAAW,CAAC,CAAC,CACtCV;IACJ,CAAC;EACF,CAAC,EACD,CAAER,YAAY,EAAEI,kBAAkB,CACnC,CAAC;EACD;EACA,IAAK,CAAEA,kBAAkB,IAAIA,kBAAkB,CAAC1C,MAAM,KAAK,CAAC,EAAG;IAC9D,OAAO,IAAI;EACZ;EACA;EACA,MAAM;IAAEyB;EAAS,CAAC,GAAGY,QAAQ,IAAI,CAAC,CAAC;EACnC,MAAMoB,gBAAgB,GAAG;IAAE,GAAGhC;EAAS,CAAC;EACxClC,MAAM,CAACQ,IAAI,CAAE0D,gBAAiB,CAAC,CAACR,OAAO,CAAI9D,GAAG,IAAM;IACnD,IACC,CAAE,IAAAuE,uCAAgB,EAAEtB,SAAS,EAAEjD,GAAI,CAAC,IACpCsE,gBAAgB,CAAEtE,GAAG,CAAE,CAACkB,MAAM,KAAK,wBAAwB,EAC1D;MACD,OAAOoD,gBAAgB,CAAEtE,GAAG,CAAE;IAC/B;EACD,CAAE,CAAC;;EAEH;EACA,MAAMwE,QAAQ,GACb,CAAEb,sBAAsB,IAAI,CAAEvD,MAAM,CAACQ,IAAI,CAAErB,UAAW,CAAC,CAACsB,MAAM;EAE/D,IAAK2D,QAAQ,IAAIpE,MAAM,CAACQ,IAAI,CAAE0D,gBAAiB,CAAC,CAACzD,MAAM,KAAK,CAAC,EAAG;IAC/D,OAAO,IAAI;EACZ;EAEA,oBACC,IAAAlC,WAAA,CAAAsB,GAAA,EAAC3B,kBAAA,CAAAmG,OAAiB;IAACC,KAAK,EAAC,UAAU;IAAAvE,QAAA,eAClC,IAAAxB,WAAA,CAAA+B,IAAA,EAAC1C,WAAA,CAAA2G,wBAAU;MACV5D,KAAK,EAAG,IAAAqB,QAAE,EAAE,YAAa,CAAG;MAC5BwC,QAAQ,EAAGA,CAAA,KAAM;QAChBtB,sBAAsB,CAAC,CAAC;MACzB,CAAG;MACHG,iBAAiB,EAAGA,iBAAmB;MACvC3B,SAAS,EAAC,8BAA8B;MAAA3B,QAAA,gBAExC,IAAAxB,WAAA,CAAAsB,GAAA,EAACjC,WAAA,CAAA6G,uBAAS;QAACC,UAAU;QAACC,WAAW;QAAA5E,QAAA,EAC9BqE,QAAQ,gBACT,IAAA7F,WAAA,CAAAsB,GAAA,EAACoC,+BAA+B;UAC/BC,QAAQ,EAAGgC,gBAAkB;UAC7B/E,UAAU,EAAGA;QAAY,CACzB,CAAC,gBAEF,IAAAZ,WAAA,CAAAsB,GAAA,EAACuC,+BAA+B;UAC/BC,UAAU,EAAGc,kBAAoB;UACjCjB,QAAQ,EAAGgC,gBAAkB;UAC7B/E,UAAU,EAAGA;QAAY,CACzB;MACD,CACS,CAAC,eACZ,IAAAZ,WAAA,CAAAsB,GAAA,EAACjC,WAAA,CAAA6G,uBAAS;QAAA1E,QAAA,eACT,IAAAxB,WAAA,CAAAsB,GAAA,EAACjC,WAAA,CAAAgE,kBAAI;UAACE,OAAO,EAAC,OAAO;UAAA/B,QAAA,EAClB,IAAAiC,QAAE,EACH,8DACD;QAAC,CACI;MAAC,CACG,CAAC;IAAA,CACD;EAAC,CACK,CAAC;AAEtB,CAAC;AAAC4C,OAAA,CAAAhC,kBAAA,GAAAA,kBAAA;AAAA,IAAAiC,QAAA,GAAAD,OAAA,CAAAP,OAAA,GAEa;EACdS,IAAI,EAAElC,kBAAkB;EACxBmC,aAAa,EAAE,CAAE,UAAU,CAAE;EAC7BC,UAAUA,CAAA,EAAG;IACZ,OAAO,IAAI;EACZ;AACD,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_i18n","require","_blocks","_components","_data","_element","_compose","_useBindingsAttributes","_lockUnlock","_inspectorControls","_interopRequireDefault","_blockContext","_blockEdit","_blockBindings","_store","_jsxRuntime","DropdownMenuV2","unlock","componentsPrivateApis","EMPTY_OBJECT","useToolsPanelDropdownMenuProps","isMobile","useViewportMatch","popoverProps","placement","offset","BlockBindingsPanelDropdown","fieldsList","attribute","binding","clientId","useBlockEditContext","registeredSources","getBlockBindingsSources","updateBlockBindings","useBlockBindingsUtils","currentKey","args","key","attributeType","useSelect","select","name","blockName","blockEditorStore","getBlock","_attributeType","getBlockType","attributes","type","jsx","Fragment","children","Object","entries","map","fields","i","jsxs","Group","keys","length","GroupLabel","label","filter","RadioItem","onChange","source","value","checked","ItemLabel","ItemHelpText","Separator","BlockBindingsAttribute","sourceName","sourceProps","getBlockBindingsSource","isSourceInvalid","__experimentalVStack","className","spacing","__experimentalText","truncate","variant","isDestructive","__","ReadOnlyBlockBindingsPanelItems","bindings","__experimentalItem","EditableBlockBindingsPanelItems","__experimentalToolsPanelItem","hasValue","onDeselect","undefined","gutter","trigger","BlockBindingsPanel","metadata","blockContext","useContext","BlockContext","removeAllBlockBindings","bindableAttributes","getBindableAttributes","dropdownMenuProps","_fieldsList","canUpdateBlockBindings","forEach","getFieldsList","usesContext","context","sourceList","values","getSettings","filteredBindings","canBindAttribute","readOnly","default","group","__experimentalToolsPanel","resetAll","__experimentalItemGroup","isBordered","isSeparated","exports","_default","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":"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","ignoreList":[]}
@@ -17,35 +17,43 @@ var _lockUnlock = require("../lock-unlock");
17
17
  */
18
18
 
19
19
  /**
20
- * A hook used to set the zoomed out view, invoking the hook sets the mode.
20
+ * A hook used to set the editor mode to zoomed out mode, invoking the hook sets the mode.
21
21
  *
22
- * @param {boolean} zoomOut If we should zoom out or not.
22
+ * @param {boolean} zoomOut If we should enter into zoomOut mode or not
23
23
  */
24
24
  function useZoomOut(zoomOut = true) {
25
25
  const {
26
+ __unstableSetEditorMode,
26
27
  setZoomLevel
27
28
  } = (0, _lockUnlock.unlock)((0, _data.useDispatch)(_store.store));
28
29
  const {
29
- isZoomOut
30
+ __unstableGetEditorMode
30
31
  } = (0, _lockUnlock.unlock)((0, _data.useSelect)(_store.store));
31
- const originalIsZoomOutRef = (0, _element.useRef)(null);
32
+ const originalEditingModeRef = (0, _element.useRef)(null);
33
+ const mode = __unstableGetEditorMode();
32
34
  (0, _element.useEffect)(() => {
33
35
  // Only set this on mount so we know what to return to when we unmount.
34
- if (!originalIsZoomOutRef.current) {
35
- originalIsZoomOutRef.current = isZoomOut();
36
- }
37
-
38
- // The effect opens the zoom-out view if we want it open and the canvas is not currently zoomed-out.
39
- if (zoomOut && isZoomOut() === false) {
40
- setZoomLevel(50);
41
- } else if (!zoomOut && isZoomOut() && originalIsZoomOutRef.current !== isZoomOut()) {
42
- setZoomLevel(originalIsZoomOutRef.current ? 50 : 100);
36
+ if (!originalEditingModeRef.current) {
37
+ originalEditingModeRef.current = mode;
43
38
  }
44
39
  return () => {
45
- if (isZoomOut() && isZoomOut() !== originalIsZoomOutRef.current) {
46
- setZoomLevel(originalIsZoomOutRef.current ? 50 : 100);
40
+ // We need to use __unstableGetEditorMode() here and not `mode`, as mode may not update on unmount
41
+ if (__unstableGetEditorMode() === 'zoom-out' && __unstableGetEditorMode() !== originalEditingModeRef.current) {
42
+ __unstableSetEditorMode(originalEditingModeRef.current);
43
+ setZoomLevel(100);
47
44
  }
48
45
  };
49
- }, [isZoomOut, setZoomLevel, zoomOut]);
46
+ }, []);
47
+
48
+ // The effect opens the zoom-out view if we want it open and it's not currently in zoom-out mode.
49
+ (0, _element.useEffect)(() => {
50
+ if (zoomOut && mode !== 'zoom-out') {
51
+ __unstableSetEditorMode('zoom-out');
52
+ setZoomLevel(50);
53
+ } else if (!zoomOut && __unstableGetEditorMode() === 'zoom-out' && originalEditingModeRef.current !== mode) {
54
+ __unstableSetEditorMode(originalEditingModeRef.current);
55
+ setZoomLevel(100);
56
+ }
57
+ }, [__unstableGetEditorMode, __unstableSetEditorMode, zoomOut, setZoomLevel]); // Mode is deliberately excluded from the dependencies so that the effect does not run when mode changes.
50
58
  }
51
59
  //# sourceMappingURL=use-zoom-out.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_data","require","_element","_store","_lockUnlock","useZoomOut","zoomOut","setZoomLevel","unlock","useDispatch","blockEditorStore","isZoomOut","useSelect","originalIsZoomOutRef","useRef","useEffect","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":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACO,SAASI,UAAUA,CAAEC,OAAO,GAAG,IAAI,EAAG;EAC5C,MAAM;IAAEC;EAAa,CAAC,GAAG,IAAAC,kBAAM,EAAE,IAAAC,iBAAW,EAAEC,YAAiB,CAAE,CAAC;EAClE,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAH,kBAAM,EAAE,IAAAI,eAAS,EAAEF,YAAiB,CAAE,CAAC;EAE7D,MAAMG,oBAAoB,GAAG,IAAAC,eAAM,EAAE,IAAK,CAAC;EAE3C,IAAAC,kBAAS,EAAE,MAAM;IAChB;IACA,IAAK,CAAEF,oBAAoB,CAACG,OAAO,EAAG;MACrCH,oBAAoB,CAACG,OAAO,GAAGL,SAAS,CAAC,CAAC;IAC3C;;IAEA;IACA,IAAKL,OAAO,IAAIK,SAAS,CAAC,CAAC,KAAK,KAAK,EAAG;MACvCJ,YAAY,CAAE,EAAG,CAAC;IACnB,CAAC,MAAM,IACN,CAAED,OAAO,IACTK,SAAS,CAAC,CAAC,IACXE,oBAAoB,CAACG,OAAO,KAAKL,SAAS,CAAC,CAAC,EAC3C;MACDJ,YAAY,CAAEM,oBAAoB,CAACG,OAAO,GAAG,EAAE,GAAG,GAAI,CAAC;IACxD;IAEA,OAAO,MAAM;MACZ,IAAKL,SAAS,CAAC,CAAC,IAAIA,SAAS,CAAC,CAAC,KAAKE,oBAAoB,CAACG,OAAO,EAAG;QAClET,YAAY,CAAEM,oBAAoB,CAACG,OAAO,GAAG,EAAE,GAAG,GAAI,CAAC;MACxD;IACD,CAAC;EACF,CAAC,EAAE,CAAEL,SAAS,EAAEJ,YAAY,EAAED,OAAO,CAAG,CAAC;AAC1C","ignoreList":[]}
1
+ {"version":3,"names":["_data","require","_element","_store","_lockUnlock","useZoomOut","zoomOut","__unstableSetEditorMode","setZoomLevel","unlock","useDispatch","blockEditorStore","__unstableGetEditorMode","useSelect","originalEditingModeRef","useRef","mode","useEffect","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":";;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAKA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACO,SAASI,UAAUA,CAAEC,OAAO,GAAG,IAAI,EAAG;EAC5C,MAAM;IAAEC,uBAAuB;IAAEC;EAAa,CAAC,GAAG,IAAAC,kBAAM,EACvD,IAAAC,iBAAW,EAAEC,YAAiB,CAC/B,CAAC;EACD,MAAM;IAAEC;EAAwB,CAAC,GAAG,IAAAH,kBAAM,EAAE,IAAAI,eAAS,EAAEF,YAAiB,CAAE,CAAC;EAE3E,MAAMG,sBAAsB,GAAG,IAAAC,eAAM,EAAE,IAAK,CAAC;EAC7C,MAAMC,IAAI,GAAGJ,uBAAuB,CAAC,CAAC;EAEtC,IAAAK,kBAAS,EAAE,MAAM;IAChB;IACA,IAAK,CAAEH,sBAAsB,CAACI,OAAO,EAAG;MACvCJ,sBAAsB,CAACI,OAAO,GAAGF,IAAI;IACtC;IAEA,OAAO,MAAM;MACZ;MACA,IACCJ,uBAAuB,CAAC,CAAC,KAAK,UAAU,IACxCA,uBAAuB,CAAC,CAAC,KAAKE,sBAAsB,CAACI,OAAO,EAC3D;QACDX,uBAAuB,CAAEO,sBAAsB,CAACI,OAAQ,CAAC;QACzDV,YAAY,CAAE,GAAI,CAAC;MACpB;IACD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;;EAEP;EACA,IAAAS,kBAAS,EAAE,MAAM;IAChB,IAAKX,OAAO,IAAIU,IAAI,KAAK,UAAU,EAAG;MACrCT,uBAAuB,CAAE,UAAW,CAAC;MACrCC,YAAY,CAAE,EAAG,CAAC;IACnB,CAAC,MAAM,IACN,CAAEF,OAAO,IACTM,uBAAuB,CAAC,CAAC,KAAK,UAAU,IACxCE,sBAAsB,CAACI,OAAO,KAAKF,IAAI,EACtC;MACDT,uBAAuB,CAAEO,sBAAsB,CAACI,OAAQ,CAAC;MACzDV,YAAY,CAAE,GAAI,CAAC;IACpB;EACD,CAAC,EAAE,CACFI,uBAAuB,EACvBL,uBAAuB,EACvBD,OAAO,EACPE,YAAY,CACX,CAAC,CAAC,CAAC;AACN","ignoreList":[]}
@@ -19,7 +19,7 @@ exports.getInserterMediaCategories = void 0;
19
19
  exports.getLastFocus = getLastFocus;
20
20
  exports.getLastInsertedBlocksClientIds = getLastInsertedBlocksClientIds;
21
21
  exports.getOpenedBlockSettingsMenu = getOpenedBlockSettingsMenu;
22
- exports.getPatternBySlug = void 0;
22
+ exports.getPatternBySlug = exports.getParentSectionBlock = void 0;
23
23
  exports.getRegisteredInserterMediaCategories = getRegisteredInserterMediaCategories;
24
24
  exports.getRemovalPromptData = getRemovalPromptData;
25
25
  exports.getReusableBlocks = void 0;
@@ -33,6 +33,7 @@ exports.isBlockInterfaceHidden = isBlockInterfaceHidden;
33
33
  exports.isBlockSubtreeDisabled = void 0;
34
34
  exports.isDragging = isDragging;
35
35
  exports.isResolvingPatterns = void 0;
36
+ exports.isSectionBlock = isSectionBlock;
36
37
  exports.isZoomOut = isZoomOut;
37
38
  exports.isZoomOutMode = isZoomOutMode;
38
39
  var _data = require("@wordpress/data");
@@ -436,7 +437,7 @@ const getBlockStyles = exports.getBlockStyles = (0, _data.createSelector)((state
436
437
  * @return {boolean} Is zoom out mode enabled.
437
438
  */
438
439
  function isZoomOutMode(state) {
439
- return state.editorMode === 'zoom-out';
440
+ return (0, _selectors.__unstableGetEditorMode)(state) === 'zoom-out';
440
441
  }
441
442
 
442
443
  /**
@@ -471,4 +472,38 @@ function getZoomLevel(state) {
471
472
  function isZoomOut(state) {
472
473
  return getZoomLevel(state) < 100;
473
474
  }
475
+
476
+ /**
477
+ * Retrieves the client ID of the parent section block.
478
+ *
479
+ * @param {Object} state Global application state.
480
+ * @param {string} clientId Client Id of the block.
481
+ *
482
+ * @return {?string} Client ID of the ancestor block that is content locking the block.
483
+ */
484
+ const getParentSectionBlock = (state, clientId) => {
485
+ let current = clientId;
486
+ let result;
487
+ while (!result && (current = state.blocks.parents.get(current))) {
488
+ if (isSectionBlock(state, current)) {
489
+ result = current;
490
+ }
491
+ }
492
+ return result;
493
+ };
494
+
495
+ /**
496
+ * Retrieves the client ID is a content locking parent
497
+ *
498
+ * @param {Object} state Global application state.
499
+ * @param {string} clientId Client Id of the block.
500
+ *
501
+ * @return {boolean} Whether the block is a content locking parent.
502
+ */
503
+ exports.getParentSectionBlock = getParentSectionBlock;
504
+ function isSectionBlock(state, clientId) {
505
+ const sectionRootClientId = getSectionRootClientId(state);
506
+ const sectionClientIds = (0, _selectors.getBlockOrder)(state, sectionRootClientId);
507
+ return (0, _selectors.getBlockName)(state, clientId) === 'core/block' || (0, _selectors.getTemplateLock)(state, clientId) === 'contentOnly' || (0, _selectors.isNavigationMode)(state) && sectionClientIds.includes(clientId);
508
+ }
474
509
  //# sourceMappingURL=private-selectors.js.map