@wordpress/block-editor 11.3.0 → 11.3.1

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 (48) hide show
  1. package/build/components/block-actions/index.js +7 -2
  2. package/build/components/block-actions/index.js.map +1 -1
  3. package/build/components/iframe/index.js +5 -3
  4. package/build/components/iframe/index.js.map +1 -1
  5. package/build/components/inserter/block-patterns-tab.js +2 -1
  6. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  7. package/build/components/inserter/menu.js +4 -1
  8. package/build/components/inserter/menu.js.map +1 -1
  9. package/build/components/off-canvas-editor/block-contents.js +3 -1
  10. package/build/components/off-canvas-editor/block-contents.js.map +1 -1
  11. package/build/components/off-canvas-editor/index.js +16 -4
  12. package/build/components/off-canvas-editor/index.js.map +1 -1
  13. package/build/hooks/position.js +5 -2
  14. package/build/hooks/position.js.map +1 -1
  15. package/build/store/private-selectors.js +14 -0
  16. package/build/store/private-selectors.js.map +1 -1
  17. package/build/store/selectors.js +0 -14
  18. package/build/store/selectors.js.map +1 -1
  19. package/build-module/components/block-actions/index.js +7 -2
  20. package/build-module/components/block-actions/index.js.map +1 -1
  21. package/build-module/components/iframe/index.js +6 -4
  22. package/build-module/components/iframe/index.js.map +1 -1
  23. package/build-module/components/inserter/block-patterns-tab.js +2 -1
  24. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  25. package/build-module/components/inserter/menu.js +4 -1
  26. package/build-module/components/inserter/menu.js.map +1 -1
  27. package/build-module/components/off-canvas-editor/block-contents.js +2 -1
  28. package/build-module/components/off-canvas-editor/block-contents.js.map +1 -1
  29. package/build-module/components/off-canvas-editor/index.js +16 -4
  30. package/build-module/components/off-canvas-editor/index.js.map +1 -1
  31. package/build-module/hooks/position.js +5 -2
  32. package/build-module/hooks/position.js.map +1 -1
  33. package/build-module/store/private-selectors.js +12 -0
  34. package/build-module/store/private-selectors.js.map +1 -1
  35. package/build-module/store/selectors.js +0 -12
  36. package/build-module/store/selectors.js.map +1 -1
  37. package/package.json +30 -30
  38. package/src/components/block-actions/index.js +9 -0
  39. package/src/components/iframe/index.js +8 -2
  40. package/src/components/inserter/block-patterns-tab.js +2 -1
  41. package/src/components/inserter/menu.js +8 -1
  42. package/src/components/off-canvas-editor/block-contents.js +2 -1
  43. package/src/components/off-canvas-editor/index.js +18 -3
  44. package/src/hooks/position.js +4 -0
  45. package/src/store/private-selectors.js +10 -0
  46. package/src/store/selectors.js +0 -10
  47. package/src/store/test/private-selectors.js +29 -1
  48. package/src/store/test/selectors.js +0 -24
@@ -44,7 +44,9 @@ export default function BlockActions(_ref) {
44
44
  flashBlock,
45
45
  setBlockMovingClientId,
46
46
  setNavigationMode,
47
- selectBlock
47
+ selectBlock,
48
+ clearSelectedBlock,
49
+ multiSelect
48
50
  } = useDispatch(blockEditorStore);
49
51
  const notifyCopy = useNotifyCopy();
50
52
  const pasteStyles = usePasteStyles();
@@ -126,7 +128,10 @@ export default function BlockActions(_ref) {
126
128
  },
127
129
 
128
130
  async onPasteStyles() {
129
- await pasteStyles(blocks);
131
+ await pasteStyles(blocks); // Need to reselect the block(s) in order for optional tool panel control changes to register.
132
+
133
+ clearSelectedBlock();
134
+ multiSelect(blocks[0].clientId, blocks[blocks.length - 1].clientId);
130
135
  }
131
136
 
132
137
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/block-actions/index.js"],"names":["useDispatch","useSelect","hasBlockSupport","switchToBlockType","store","blocksStore","useNotifyCopy","usePasteStyles","blockEditorStore","BlockActions","clientIds","children","__experimentalUpdateSelection","updateSelection","canInsertBlockType","getBlockRootClientId","getBlocksByClientId","canMoveBlocks","canRemoveBlocks","getDefaultBlockName","getGroupingBlockName","blocks","rootClientId","canDuplicate","every","block","name","canInsertDefaultBlock","canMove","canRemove","removeBlocks","replaceBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","flashBlock","setBlockMovingClientId","setNavigationMode","selectBlock","notifyCopy","pasteStyles","onDuplicate","onRemove","onInsertBefore","clientId","Array","isArray","onInsertAfter","length","onMoveTo","onGroup","groupingBlockName","newBlocks","onUngroup","innerBlocks","onCopy","selectedBlockClientIds","map","onPasteStyles"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\thasBlockSupport,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useNotifyCopy } from '../copy-handler';\nimport usePasteStyles from '../use-paste-styles';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockActions( {\n\tclientIds,\n\tchildren,\n\t__experimentalUpdateSelection: updateSelection,\n} ) {\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanMoveBlocks,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\n\tconst canMove = canMoveBlocks( clientIds, rootClientId );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tflashBlock,\n\t\tsetBlockMovingClientId,\n\t\tsetNavigationMode,\n\t\tselectBlock,\n\t} = useDispatch( blockEditorStore );\n\n\tconst notifyCopy = useNotifyCopy();\n\tconst pasteStyles = usePasteStyles();\n\n\treturn children( {\n\t\tcanDuplicate,\n\t\tcanInsertDefaultBlock,\n\t\tcanMove,\n\t\tcanRemove,\n\t\trootClientId,\n\t\tblocks,\n\t\tonDuplicate() {\n\t\t\treturn duplicateBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonRemove() {\n\t\t\treturn removeBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonInsertBefore() {\n\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t: clientId;\n\t\t\tinsertBeforeBlock( clientId );\n\t\t},\n\t\tonInsertAfter() {\n\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t: clientId;\n\t\t\tinsertAfterBlock( clientId );\n\t\t},\n\t\tonMoveTo() {\n\t\t\tsetNavigationMode( true );\n\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t},\n\t\tonGroup() {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\t\tif ( ! newBlocks ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t},\n\t\tonUngroup() {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\t\tif ( ! innerBlocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treplaceBlocks( clientIds, innerBlocks );\n\t\t},\n\t\tonCopy() {\n\t\t\tconst selectedBlockClientIds = blocks.map(\n\t\t\t\t( { clientId } ) => clientId\n\t\t\t);\n\t\t\tif ( blocks.length === 1 ) {\n\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t}\n\t\t\tnotifyCopy( 'copy', selectedBlockClientIds );\n\t\t},\n\t\tasync onPasteStyles() {\n\t\t\tawait pasteStyles( blocks );\n\t\t},\n\t} );\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/block-actions/index.js"],"names":["useDispatch","useSelect","hasBlockSupport","switchToBlockType","store","blocksStore","useNotifyCopy","usePasteStyles","blockEditorStore","BlockActions","clientIds","children","__experimentalUpdateSelection","updateSelection","canInsertBlockType","getBlockRootClientId","getBlocksByClientId","canMoveBlocks","canRemoveBlocks","getDefaultBlockName","getGroupingBlockName","blocks","rootClientId","canDuplicate","every","block","name","canInsertDefaultBlock","canMove","canRemove","removeBlocks","replaceBlocks","duplicateBlocks","insertAfterBlock","insertBeforeBlock","flashBlock","setBlockMovingClientId","setNavigationMode","selectBlock","clearSelectedBlock","multiSelect","notifyCopy","pasteStyles","onDuplicate","onRemove","onInsertBefore","clientId","Array","isArray","onInsertAfter","length","onMoveTo","onGroup","groupingBlockName","newBlocks","onUngroup","innerBlocks","onCopy","selectedBlockClientIds","map","onPasteStyles"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\thasBlockSupport,\n\tswitchToBlockType,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport { useNotifyCopy } from '../copy-handler';\nimport usePasteStyles from '../use-paste-styles';\nimport { store as blockEditorStore } from '../../store';\n\nexport default function BlockActions( {\n\tclientIds,\n\tchildren,\n\t__experimentalUpdateSelection: updateSelection,\n} ) {\n\tconst {\n\t\tcanInsertBlockType,\n\t\tgetBlockRootClientId,\n\t\tgetBlocksByClientId,\n\t\tcanMoveBlocks,\n\t\tcanRemoveBlocks,\n\t} = useSelect( blockEditorStore );\n\tconst { getDefaultBlockName, getGroupingBlockName } =\n\t\tuseSelect( blocksStore );\n\n\tconst blocks = getBlocksByClientId( clientIds );\n\tconst rootClientId = getBlockRootClientId( clientIds[ 0 ] );\n\tconst canDuplicate = blocks.every( ( block ) => {\n\t\treturn (\n\t\t\t!! block &&\n\t\t\thasBlockSupport( block.name, 'multiple', true ) &&\n\t\t\tcanInsertBlockType( block.name, rootClientId )\n\t\t);\n\t} );\n\n\tconst canInsertDefaultBlock = canInsertBlockType(\n\t\tgetDefaultBlockName(),\n\t\trootClientId\n\t);\n\n\tconst canMove = canMoveBlocks( clientIds, rootClientId );\n\tconst canRemove = canRemoveBlocks( clientIds, rootClientId );\n\n\tconst {\n\t\tremoveBlocks,\n\t\treplaceBlocks,\n\t\tduplicateBlocks,\n\t\tinsertAfterBlock,\n\t\tinsertBeforeBlock,\n\t\tflashBlock,\n\t\tsetBlockMovingClientId,\n\t\tsetNavigationMode,\n\t\tselectBlock,\n\t\tclearSelectedBlock,\n\t\tmultiSelect,\n\t} = useDispatch( blockEditorStore );\n\n\tconst notifyCopy = useNotifyCopy();\n\tconst pasteStyles = usePasteStyles();\n\n\treturn children( {\n\t\tcanDuplicate,\n\t\tcanInsertDefaultBlock,\n\t\tcanMove,\n\t\tcanRemove,\n\t\trootClientId,\n\t\tblocks,\n\t\tonDuplicate() {\n\t\t\treturn duplicateBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonRemove() {\n\t\t\treturn removeBlocks( clientIds, updateSelection );\n\t\t},\n\t\tonInsertBefore() {\n\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t? clientIds[ 0 ]\n\t\t\t\t: clientId;\n\t\t\tinsertBeforeBlock( clientId );\n\t\t},\n\t\tonInsertAfter() {\n\t\t\tconst clientId = Array.isArray( clientIds )\n\t\t\t\t? clientIds[ clientIds.length - 1 ]\n\t\t\t\t: clientId;\n\t\t\tinsertAfterBlock( clientId );\n\t\t},\n\t\tonMoveTo() {\n\t\t\tsetNavigationMode( true );\n\t\t\tselectBlock( clientIds[ 0 ] );\n\t\t\tsetBlockMovingClientId( clientIds[ 0 ] );\n\t\t},\n\t\tonGroup() {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst groupingBlockName = getGroupingBlockName();\n\n\t\t\t// Activate the `transform` on `core/group` which does the conversion.\n\t\t\tconst newBlocks = switchToBlockType( blocks, groupingBlockName );\n\n\t\t\tif ( ! newBlocks ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treplaceBlocks( clientIds, newBlocks );\n\t\t},\n\t\tonUngroup() {\n\t\t\tif ( ! blocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst innerBlocks = blocks[ 0 ].innerBlocks;\n\n\t\t\tif ( ! innerBlocks.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treplaceBlocks( clientIds, innerBlocks );\n\t\t},\n\t\tonCopy() {\n\t\t\tconst selectedBlockClientIds = blocks.map(\n\t\t\t\t( { clientId } ) => clientId\n\t\t\t);\n\t\t\tif ( blocks.length === 1 ) {\n\t\t\t\tflashBlock( selectedBlockClientIds[ 0 ] );\n\t\t\t}\n\t\t\tnotifyCopy( 'copy', selectedBlockClientIds );\n\t\t},\n\t\tasync onPasteStyles() {\n\t\t\tawait pasteStyles( blocks );\n\n\t\t\t// Need to reselect the block(s) in order for optional tool panel control changes to register.\n\t\t\tclearSelectedBlock();\n\t\t\tmultiSelect(\n\t\t\t\tblocks[ 0 ].clientId,\n\t\t\t\tblocks[ blocks.length - 1 ].clientId\n\t\t\t);\n\t\t},\n\t} );\n}\n"]}
@@ -11,7 +11,7 @@ import classnames from 'classnames';
11
11
 
12
12
  import { useState, createPortal, forwardRef, useMemo, useReducer, renderToString } from '@wordpress/element';
13
13
  import { __ } from '@wordpress/i18n';
14
- import { useResizeObserver, useMergeRefs, useRefEffect } from '@wordpress/compose';
14
+ import { useResizeObserver, useMergeRefs, useRefEffect, useDisabled } from '@wordpress/compose';
15
15
  import { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';
16
16
  import { useSelect } from '@wordpress/data';
17
17
  /**
@@ -183,7 +183,10 @@ function Iframe(_ref2) {
183
183
  forceRender();
184
184
  });
185
185
  }, []);
186
- const bodyRef = useMergeRefs([contentRef, clearerRef, writingFlowRef]);
186
+ const disabledRef = useDisabled({
187
+ isDisabled: !readonly
188
+ });
189
+ const bodyRef = useMergeRefs([contentRef, clearerRef, writingFlowRef, disabledRef]);
187
190
  const styleAssets = createElement(Fragment, null, createElement("style", null, 'html{height:auto!important;}body{margin:0}'), [...styles, ...neededCompatStyles].map(_ref3 => {
188
191
  let {
189
192
  tagName,
@@ -236,8 +239,7 @@ function Iframe(_ref2) {
236
239
  marginBottom: `-${contentHeight * (1 - scale) - frameSize}px`,
237
240
  marginTop: frameSize,
238
241
  transform: `scale( ${scale} )`
239
- },
240
- inert: readonly ? 'true' : undefined
242
+ }
241
243
  }, contentResizeListener, createElement(StyleProvider, {
242
244
  document: iframeDocument
243
245
  }, children))), iframeDocument.documentElement)), tabIndex >= 0 && after);
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/iframe/index.js"],"names":["classnames","useState","createPortal","forwardRef","useMemo","useReducer","renderToString","__","useResizeObserver","useMergeRefs","useRefEffect","__experimentalStyleProvider","StyleProvider","useSelect","useBlockSelectionClearer","useWritingFlow","useCompatibilityStyles","store","blockEditorStore","bubbleEvents","doc","defaultView","frameElement","bubbleEvent","event","prototype","Object","getPrototypeOf","constructorName","constructor","name","Constructor","window","init","key","MouseEvent","rect","getBoundingClientRect","clientX","left","clientY","top","newEvent","type","cancelled","dispatchEvent","preventDefault","eventTypes","addEventListener","useParsedAssets","html","document","implementation","createHTMLDocument","body","innerHTML","Array","from","children","loadScript","head","id","src","Promise","resolve","reject","script","ownerDocument","createElement","onload","onerror","appendChild","Iframe","contentRef","tabIndex","scale","frameSize","readonly","forwardedRef","ref","props","assets","select","getSettings","__unstableResolvedAssets","forceRender","iframeDocument","setIframeDocument","bodyClasses","setBodyClasses","styles","styleIds","map","style","compatStyles","neededCompatStyles","filter","includes","scripts","clearerRef","before","writingFlowRef","after","contentResizeListener","height","contentHeight","setRef","node","iFrameDocument","preventFileDropDefault","setDocumentIfReady","contentDocument","readyState","documentElement","classList","startsWith","dir","removeChild","removeEventListener","headRef","element","reduce","promise","then","finally","bodyRef","styleAssets","tagName","href","rel","media","textContent","TagName","toLowerCase","srcDoc","marginBottom","marginTop","transform","undefined","IframeIfReady","isInitialised","__internalIsInitialized"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tcreatePortal,\n\tforwardRef,\n\tuseMemo,\n\tuseReducer,\n\trenderToString,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseResizeObserver,\n\tuseMergeRefs,\n\tuseRefEffect,\n} from '@wordpress/compose';\nimport { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useWritingFlow } from '../writing-flow';\nimport { useCompatibilityStyles } from './use-compatibility-styles';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Bubbles some event types (keydown, keypress, and dragover) to parent document\n * document to ensure that the keyboard shortcuts and drag and drop work.\n *\n * Ideally, we should remove event bubbling in the future. Keyboard shortcuts\n * should be context dependent, e.g. actions on blocks like Cmd+A should not\n * work globally outside the block editor.\n *\n * @param {Document} doc Document to attach listeners to.\n */\nfunction bubbleEvents( doc ) {\n\tconst { defaultView } = doc;\n\tconst { frameElement } = defaultView;\n\n\tfunction bubbleEvent( event ) {\n\t\tconst prototype = Object.getPrototypeOf( event );\n\t\tconst constructorName = prototype.constructor.name;\n\t\tconst Constructor = window[ constructorName ];\n\n\t\tconst init = {};\n\n\t\tfor ( const key in event ) {\n\t\t\tinit[ key ] = event[ key ];\n\t\t}\n\n\t\tif ( event instanceof defaultView.MouseEvent ) {\n\t\t\tconst rect = frameElement.getBoundingClientRect();\n\t\t\tinit.clientX += rect.left;\n\t\t\tinit.clientY += rect.top;\n\t\t}\n\n\t\tconst newEvent = new Constructor( event.type, init );\n\t\tconst cancelled = ! frameElement.dispatchEvent( newEvent );\n\n\t\tif ( cancelled ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tconst eventTypes = [ 'dragover' ];\n\n\tfor ( const name of eventTypes ) {\n\t\tdoc.addEventListener( name, bubbleEvent );\n\t}\n}\n\nfunction useParsedAssets( html ) {\n\treturn useMemo( () => {\n\t\tconst doc = document.implementation.createHTMLDocument( '' );\n\t\tdoc.body.innerHTML = html;\n\t\treturn Array.from( doc.body.children );\n\t}, [ html ] );\n}\n\nasync function loadScript( head, { id, src } ) {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst script = head.ownerDocument.createElement( 'script' );\n\t\tscript.id = id;\n\t\tif ( src ) {\n\t\t\tscript.src = src;\n\t\t\tscript.onload = () => resolve();\n\t\t\tscript.onerror = () => reject();\n\t\t} else {\n\t\t\tresolve();\n\t\t}\n\t\thead.appendChild( script );\n\t} );\n}\n\nfunction Iframe( {\n\tcontentRef,\n\tchildren,\n\thead,\n\ttabIndex = 0,\n\tscale = 1,\n\tframeSize = 0,\n\treadonly,\n\tforwardedRef: ref,\n\t...props\n} ) {\n\tconst assets = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__unstableResolvedAssets,\n\t\t[]\n\t);\n\tconst [ , forceRender ] = useReducer( () => ( {} ) );\n\tconst [ iframeDocument, setIframeDocument ] = useState();\n\tconst [ bodyClasses, setBodyClasses ] = useState( [] );\n\tconst styles = useParsedAssets( assets?.styles );\n\tconst styleIds = styles.map( ( style ) => style.id );\n\tconst compatStyles = useCompatibilityStyles();\n\tconst neededCompatStyles = compatStyles.filter(\n\t\t( style ) => ! styleIds.includes( style.id )\n\t);\n\tconst scripts = useParsedAssets( assets?.scripts );\n\tconst clearerRef = useBlockSelectionClearer();\n\tconst [ before, writingFlowRef, after ] = useWritingFlow();\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst setRef = useRefEffect( ( node ) => {\n\t\tlet iFrameDocument;\n\t\t// Prevent the default browser action for files dropped outside of dropzones.\n\t\tfunction preventFileDropDefault( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tfunction setDocumentIfReady() {\n\t\t\tconst { contentDocument, ownerDocument } = node;\n\t\t\tconst { readyState, documentElement } = contentDocument;\n\t\t\tiFrameDocument = contentDocument;\n\n\t\t\tif ( readyState !== 'interactive' && readyState !== 'complete' ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tbubbleEvents( contentDocument );\n\t\t\tsetIframeDocument( contentDocument );\n\t\t\tclearerRef( documentElement );\n\n\t\t\t// Ideally ALL classes that are added through get_body_class should\n\t\t\t// be added in the editor too, which we'll somehow have to get from\n\t\t\t// the server in the future (which will run the PHP filters).\n\t\t\tsetBodyClasses(\n\t\t\t\tArray.from( ownerDocument.body.classList ).filter(\n\t\t\t\t\t( name ) =>\n\t\t\t\t\t\tname.startsWith( 'admin-color-' ) ||\n\t\t\t\t\t\tname.startsWith( 'post-type-' ) ||\n\t\t\t\t\t\tname === 'wp-embed-responsive'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcontentDocument.dir = ownerDocument.dir;\n\t\t\tdocumentElement.removeChild( contentDocument.head );\n\t\t\tdocumentElement.removeChild( contentDocument.body );\n\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\treturn true;\n\t\t}\n\n\t\t// Document set with srcDoc is not immediately ready.\n\t\tnode.addEventListener( 'load', setDocumentIfReady );\n\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'load', setDocumentIfReady );\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t};\n\t}, [] );\n\n\tconst headRef = useRefEffect( ( element ) => {\n\t\tscripts\n\t\t\t.reduce(\n\t\t\t\t( promise, script ) =>\n\t\t\t\t\tpromise.then( () => loadScript( element, script ) ),\n\t\t\t\tPromise.resolve()\n\t\t\t)\n\t\t\t.finally( () => {\n\t\t\t\t// When script are loaded, re-render blocks to allow them\n\t\t\t\t// to initialise.\n\t\t\t\tforceRender();\n\t\t\t} );\n\t}, [] );\n\tconst bodyRef = useMergeRefs( [ contentRef, clearerRef, writingFlowRef ] );\n\n\tconst styleAssets = (\n\t\t<>\n\t\t\t<style>{ 'html{height:auto!important;}body{margin:0}' }</style>\n\t\t\t{ [ ...styles, ...neededCompatStyles ].map(\n\t\t\t\t( { tagName, href, id, rel, media, textContent } ) => {\n\t\t\t\t\tconst TagName = tagName.toLowerCase();\n\n\t\t\t\t\tif ( TagName === 'style' ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TagName { ...{ id } } key={ id }>\n\t\t\t\t\t\t\t\t{ textContent }\n\t\t\t\t\t\t\t</TagName>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TagName { ...{ href, id, rel, media } } key={ id } />\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t) }\n\t\t</>\n\t);\n\n\t// Correct doctype is required to enable rendering in standards\n\t// mode. Also preload the styles to avoid a flash of unstyled\n\t// content.\n\tconst srcDoc = useMemo( () => {\n\t\treturn '<!doctype html>' + renderToString( styleAssets );\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t{ tabIndex >= 0 && before }\n\t\t\t<iframe\n\t\t\t\t{ ...props }\n\t\t\t\tref={ useMergeRefs( [ ref, setRef ] ) }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t// Correct doctype is required to enable rendering in standards\n\t\t\t\t// mode. Also preload the styles to avoid a flash of unstyled\n\t\t\t\t// content.\n\t\t\t\tsrcDoc={ srcDoc }\n\t\t\t\ttitle={ __( 'Editor canvas' ) }\n\t\t\t>\n\t\t\t\t{ iframeDocument &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<head ref={ headRef }>\n\t\t\t\t\t\t\t\t{ styleAssets }\n\t\t\t\t\t\t\t\t{ head }\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t{ `html { transition: background 5s; ${\n\t\t\t\t\t\t\t\t\t\tframeSize\n\t\t\t\t\t\t\t\t\t\t\t? 'background: #2f2f2f; transition: background 0s;'\n\t\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</style>\n\t\t\t\t\t\t\t</head>\n\t\t\t\t\t\t\t<body\n\t\t\t\t\t\t\t\tref={ bodyRef }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'block-editor-iframe__body',\n\t\t\t\t\t\t\t\t\t'editor-styles-wrapper',\n\t\t\t\t\t\t\t\t\t...bodyClasses\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t// This is the remaining percentage from the scaling down\n\t\t\t\t\t\t\t\t\t// of the iframe body(`scale(0.45)`). We also need to subtract\n\t\t\t\t\t\t\t\t\t// the body's bottom margin.\n\t\t\t\t\t\t\t\t\tmarginBottom: `-${\n\t\t\t\t\t\t\t\t\t\tcontentHeight * ( 1 - scale ) -\n\t\t\t\t\t\t\t\t\t\tframeSize\n\t\t\t\t\t\t\t\t\t}px`,\n\t\t\t\t\t\t\t\t\tmarginTop: frameSize,\n\t\t\t\t\t\t\t\t\ttransform: `scale( ${ scale } )`,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tinert={ readonly ? 'true' : undefined }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t\t\t\t<StyleProvider document={ iframeDocument }>\n\t\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</>,\n\t\t\t\t\t\tiframeDocument.documentElement\n\t\t\t\t\t) }\n\t\t\t</iframe>\n\t\t\t{ tabIndex >= 0 && after }\n\t\t</>\n\t);\n}\n\nfunction IframeIfReady( props, ref ) {\n\tconst isInitialised = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__internalIsInitialized,\n\t\t[]\n\t);\n\n\t// We shouldn't render the iframe until the editor settings are initialised.\n\t// The initial settings are needed to get the styles for the srcDoc, which\n\t// cannot be changed after the iframe is mounted. srcDoc is used to to set\n\t// the initial iframe HTML, which is required to avoid a flash of unstyled\n\t// content.\n\tif ( ! isInitialised ) {\n\t\treturn null;\n\t}\n\n\treturn <Iframe { ...props } forwardedRef={ ref } />;\n}\n\nexport default forwardRef( IframeIfReady );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/iframe/index.js"],"names":["classnames","useState","createPortal","forwardRef","useMemo","useReducer","renderToString","__","useResizeObserver","useMergeRefs","useRefEffect","useDisabled","__experimentalStyleProvider","StyleProvider","useSelect","useBlockSelectionClearer","useWritingFlow","useCompatibilityStyles","store","blockEditorStore","bubbleEvents","doc","defaultView","frameElement","bubbleEvent","event","prototype","Object","getPrototypeOf","constructorName","constructor","name","Constructor","window","init","key","MouseEvent","rect","getBoundingClientRect","clientX","left","clientY","top","newEvent","type","cancelled","dispatchEvent","preventDefault","eventTypes","addEventListener","useParsedAssets","html","document","implementation","createHTMLDocument","body","innerHTML","Array","from","children","loadScript","head","id","src","Promise","resolve","reject","script","ownerDocument","createElement","onload","onerror","appendChild","Iframe","contentRef","tabIndex","scale","frameSize","readonly","forwardedRef","ref","props","assets","select","getSettings","__unstableResolvedAssets","forceRender","iframeDocument","setIframeDocument","bodyClasses","setBodyClasses","styles","styleIds","map","style","compatStyles","neededCompatStyles","filter","includes","scripts","clearerRef","before","writingFlowRef","after","contentResizeListener","height","contentHeight","setRef","node","iFrameDocument","preventFileDropDefault","setDocumentIfReady","contentDocument","readyState","documentElement","classList","startsWith","dir","removeChild","removeEventListener","headRef","element","reduce","promise","then","finally","disabledRef","isDisabled","bodyRef","styleAssets","tagName","href","rel","media","textContent","TagName","toLowerCase","srcDoc","marginBottom","marginTop","transform","IframeIfReady","isInitialised","__internalIsInitialized"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tcreatePortal,\n\tforwardRef,\n\tuseMemo,\n\tuseReducer,\n\trenderToString,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseResizeObserver,\n\tuseMergeRefs,\n\tuseRefEffect,\n\tuseDisabled,\n} from '@wordpress/compose';\nimport { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useWritingFlow } from '../writing-flow';\nimport { useCompatibilityStyles } from './use-compatibility-styles';\nimport { store as blockEditorStore } from '../../store';\n\n/**\n * Bubbles some event types (keydown, keypress, and dragover) to parent document\n * document to ensure that the keyboard shortcuts and drag and drop work.\n *\n * Ideally, we should remove event bubbling in the future. Keyboard shortcuts\n * should be context dependent, e.g. actions on blocks like Cmd+A should not\n * work globally outside the block editor.\n *\n * @param {Document} doc Document to attach listeners to.\n */\nfunction bubbleEvents( doc ) {\n\tconst { defaultView } = doc;\n\tconst { frameElement } = defaultView;\n\n\tfunction bubbleEvent( event ) {\n\t\tconst prototype = Object.getPrototypeOf( event );\n\t\tconst constructorName = prototype.constructor.name;\n\t\tconst Constructor = window[ constructorName ];\n\n\t\tconst init = {};\n\n\t\tfor ( const key in event ) {\n\t\t\tinit[ key ] = event[ key ];\n\t\t}\n\n\t\tif ( event instanceof defaultView.MouseEvent ) {\n\t\t\tconst rect = frameElement.getBoundingClientRect();\n\t\t\tinit.clientX += rect.left;\n\t\t\tinit.clientY += rect.top;\n\t\t}\n\n\t\tconst newEvent = new Constructor( event.type, init );\n\t\tconst cancelled = ! frameElement.dispatchEvent( newEvent );\n\n\t\tif ( cancelled ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tconst eventTypes = [ 'dragover' ];\n\n\tfor ( const name of eventTypes ) {\n\t\tdoc.addEventListener( name, bubbleEvent );\n\t}\n}\n\nfunction useParsedAssets( html ) {\n\treturn useMemo( () => {\n\t\tconst doc = document.implementation.createHTMLDocument( '' );\n\t\tdoc.body.innerHTML = html;\n\t\treturn Array.from( doc.body.children );\n\t}, [ html ] );\n}\n\nasync function loadScript( head, { id, src } ) {\n\treturn new Promise( ( resolve, reject ) => {\n\t\tconst script = head.ownerDocument.createElement( 'script' );\n\t\tscript.id = id;\n\t\tif ( src ) {\n\t\t\tscript.src = src;\n\t\t\tscript.onload = () => resolve();\n\t\t\tscript.onerror = () => reject();\n\t\t} else {\n\t\t\tresolve();\n\t\t}\n\t\thead.appendChild( script );\n\t} );\n}\n\nfunction Iframe( {\n\tcontentRef,\n\tchildren,\n\thead,\n\ttabIndex = 0,\n\tscale = 1,\n\tframeSize = 0,\n\treadonly,\n\tforwardedRef: ref,\n\t...props\n} ) {\n\tconst assets = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__unstableResolvedAssets,\n\t\t[]\n\t);\n\tconst [ , forceRender ] = useReducer( () => ( {} ) );\n\tconst [ iframeDocument, setIframeDocument ] = useState();\n\tconst [ bodyClasses, setBodyClasses ] = useState( [] );\n\tconst styles = useParsedAssets( assets?.styles );\n\tconst styleIds = styles.map( ( style ) => style.id );\n\tconst compatStyles = useCompatibilityStyles();\n\tconst neededCompatStyles = compatStyles.filter(\n\t\t( style ) => ! styleIds.includes( style.id )\n\t);\n\tconst scripts = useParsedAssets( assets?.scripts );\n\tconst clearerRef = useBlockSelectionClearer();\n\tconst [ before, writingFlowRef, after ] = useWritingFlow();\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst setRef = useRefEffect( ( node ) => {\n\t\tlet iFrameDocument;\n\t\t// Prevent the default browser action for files dropped outside of dropzones.\n\t\tfunction preventFileDropDefault( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tfunction setDocumentIfReady() {\n\t\t\tconst { contentDocument, ownerDocument } = node;\n\t\t\tconst { readyState, documentElement } = contentDocument;\n\t\t\tiFrameDocument = contentDocument;\n\n\t\t\tif ( readyState !== 'interactive' && readyState !== 'complete' ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tbubbleEvents( contentDocument );\n\t\t\tsetIframeDocument( contentDocument );\n\t\t\tclearerRef( documentElement );\n\n\t\t\t// Ideally ALL classes that are added through get_body_class should\n\t\t\t// be added in the editor too, which we'll somehow have to get from\n\t\t\t// the server in the future (which will run the PHP filters).\n\t\t\tsetBodyClasses(\n\t\t\t\tArray.from( ownerDocument.body.classList ).filter(\n\t\t\t\t\t( name ) =>\n\t\t\t\t\t\tname.startsWith( 'admin-color-' ) ||\n\t\t\t\t\t\tname.startsWith( 'post-type-' ) ||\n\t\t\t\t\t\tname === 'wp-embed-responsive'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcontentDocument.dir = ownerDocument.dir;\n\t\t\tdocumentElement.removeChild( contentDocument.head );\n\t\t\tdocumentElement.removeChild( contentDocument.body );\n\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\treturn true;\n\t\t}\n\n\t\t// Document set with srcDoc is not immediately ready.\n\t\tnode.addEventListener( 'load', setDocumentIfReady );\n\n\t\treturn () => {\n\t\t\tnode.removeEventListener( 'load', setDocumentIfReady );\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t};\n\t}, [] );\n\n\tconst headRef = useRefEffect( ( element ) => {\n\t\tscripts\n\t\t\t.reduce(\n\t\t\t\t( promise, script ) =>\n\t\t\t\t\tpromise.then( () => loadScript( element, script ) ),\n\t\t\t\tPromise.resolve()\n\t\t\t)\n\t\t\t.finally( () => {\n\t\t\t\t// When script are loaded, re-render blocks to allow them\n\t\t\t\t// to initialise.\n\t\t\t\tforceRender();\n\t\t\t} );\n\t}, [] );\n\tconst disabledRef = useDisabled( { isDisabled: ! readonly } );\n\tconst bodyRef = useMergeRefs( [\n\t\tcontentRef,\n\t\tclearerRef,\n\t\twritingFlowRef,\n\t\tdisabledRef,\n\t] );\n\n\tconst styleAssets = (\n\t\t<>\n\t\t\t<style>{ 'html{height:auto!important;}body{margin:0}' }</style>\n\t\t\t{ [ ...styles, ...neededCompatStyles ].map(\n\t\t\t\t( { tagName, href, id, rel, media, textContent } ) => {\n\t\t\t\t\tconst TagName = tagName.toLowerCase();\n\n\t\t\t\t\tif ( TagName === 'style' ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TagName { ...{ id } } key={ id }>\n\t\t\t\t\t\t\t\t{ textContent }\n\t\t\t\t\t\t\t</TagName>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TagName { ...{ href, id, rel, media } } key={ id } />\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t) }\n\t\t</>\n\t);\n\n\t// Correct doctype is required to enable rendering in standards\n\t// mode. Also preload the styles to avoid a flash of unstyled\n\t// content.\n\tconst srcDoc = useMemo( () => {\n\t\treturn '<!doctype html>' + renderToString( styleAssets );\n\t}, [] );\n\n\treturn (\n\t\t<>\n\t\t\t{ tabIndex >= 0 && before }\n\t\t\t<iframe\n\t\t\t\t{ ...props }\n\t\t\t\tref={ useMergeRefs( [ ref, setRef ] ) }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t// Correct doctype is required to enable rendering in standards\n\t\t\t\t// mode. Also preload the styles to avoid a flash of unstyled\n\t\t\t\t// content.\n\t\t\t\tsrcDoc={ srcDoc }\n\t\t\t\ttitle={ __( 'Editor canvas' ) }\n\t\t\t>\n\t\t\t\t{ iframeDocument &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<head ref={ headRef }>\n\t\t\t\t\t\t\t\t{ styleAssets }\n\t\t\t\t\t\t\t\t{ head }\n\t\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t\t{ `html { transition: background 5s; ${\n\t\t\t\t\t\t\t\t\t\tframeSize\n\t\t\t\t\t\t\t\t\t\t\t? 'background: #2f2f2f; transition: background 0s;'\n\t\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</style>\n\t\t\t\t\t\t\t</head>\n\t\t\t\t\t\t\t<body\n\t\t\t\t\t\t\t\tref={ bodyRef }\n\t\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t\t'block-editor-iframe__body',\n\t\t\t\t\t\t\t\t\t'editor-styles-wrapper',\n\t\t\t\t\t\t\t\t\t...bodyClasses\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t// This is the remaining percentage from the scaling down\n\t\t\t\t\t\t\t\t\t// of the iframe body(`scale(0.45)`). We also need to subtract\n\t\t\t\t\t\t\t\t\t// the body's bottom margin.\n\t\t\t\t\t\t\t\t\tmarginBottom: `-${\n\t\t\t\t\t\t\t\t\t\tcontentHeight * ( 1 - scale ) -\n\t\t\t\t\t\t\t\t\t\tframeSize\n\t\t\t\t\t\t\t\t\t}px`,\n\t\t\t\t\t\t\t\t\tmarginTop: frameSize,\n\t\t\t\t\t\t\t\t\ttransform: `scale( ${ scale } )`,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t\t\t\t<StyleProvider document={ iframeDocument }>\n\t\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</>,\n\t\t\t\t\t\tiframeDocument.documentElement\n\t\t\t\t\t) }\n\t\t\t</iframe>\n\t\t\t{ tabIndex >= 0 && after }\n\t\t</>\n\t);\n}\n\nfunction IframeIfReady( props, ref ) {\n\tconst isInitialised = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__internalIsInitialized,\n\t\t[]\n\t);\n\n\t// We shouldn't render the iframe until the editor settings are initialised.\n\t// The initial settings are needed to get the styles for the srcDoc, which\n\t// cannot be changed after the iframe is mounted. srcDoc is used to to set\n\t// the initial iframe HTML, which is required to avoid a flash of unstyled\n\t// content.\n\tif ( ! isInitialised ) {\n\t\treturn null;\n\t}\n\n\treturn <Iframe { ...props } forwardedRef={ ref } />;\n}\n\nexport default forwardRef( IframeIfReady );\n"]}
@@ -146,6 +146,7 @@ function BlockPatternsTabs(_ref5) {
146
146
  } = _ref5;
147
147
  const [showPatternsExplorer, setShowPatternsExplorer] = useState(false);
148
148
  const categories = usePatternsCategories(rootClientId);
149
+ const initialCategory = selectedCategory || categories[0];
149
150
  const isMobile = useViewportMatch('medium', '<');
150
151
  return createElement(Fragment, null, !isMobile && createElement("div", {
151
152
  className: "block-editor-inserter__block-patterns-tabs-container"
@@ -177,7 +178,7 @@ function BlockPatternsTabs(_ref5) {
177
178
  category: category,
178
179
  showTitlesAsTooltip: false
179
180
  })), showPatternsExplorer && createElement(PatternsExplorerModal, {
180
- initialCategory: selectedCategory,
181
+ initialCategory: initialCategory,
181
182
  patternCategories: categories,
182
183
  onModalClose: () => setShowPatternsExplorer(false)
183
184
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["useMemo","useState","useCallback","useRef","useEffect","_x","__","useAsyncList","useViewportMatch","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalHStack","HStack","FlexBlock","Button","Icon","chevronRight","focus","usePatternsState","BlockPatternList","PatternsExplorerModal","MobileTabNavigation","usePatternsCategories","rootClientId","allPatterns","allCategories","undefined","hasRegisteredCategory","pattern","categories","length","some","cat","category","name","populatedCategories","filter","includes","sort","currentName","nextName","categoryName","find","push","label","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","container","timeout","setTimeout","firstTabbable","tabbable","current","clearTimeout","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","availablePatternCategories","availableCategory","currentShownPatterns","description","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","isMobile","map"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __ } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\n\nfunction usePatternsCategories( rootClientId ) {\n\tconst [ allPatterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\tif (\n\t\t\t\t\t! [ currentName, nextName ].some( ( categoryName ) =>\n\t\t\t\t\t\t[ 'featured', 'text' ].includes( categoryName )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\t// Move `featured` category to the top and `text` to the bottom.\n\t\t\t\treturn currentName === 'featured' || nextName === 'text'\n\t\t\t\t\t? -1\n\t\t\t\t\t: 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories( rootClientId );\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, category ]\n\t);\n\n\tconst currentShownPatterns = useAsyncList( currentCategoryPatterns );\n\n\t// Hide block pattern preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories( rootClientId );\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\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\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\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\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\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<BlockPatternsCategoryPanel\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\tshowTitlesAsTooltip={ false }\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\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ selectedCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"names":["useMemo","useState","useCallback","useRef","useEffect","_x","__","useAsyncList","useViewportMatch","__experimentalItemGroup","ItemGroup","__experimentalItem","Item","__experimentalHStack","HStack","FlexBlock","Button","Icon","chevronRight","focus","usePatternsState","BlockPatternList","PatternsExplorerModal","MobileTabNavigation","usePatternsCategories","rootClientId","allPatterns","allCategories","undefined","hasRegisteredCategory","pattern","categories","length","some","cat","category","name","populatedCategories","filter","includes","sort","currentName","nextName","categoryName","find","push","label","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","container","timeout","setTimeout","firstTabbable","tabbable","current","clearTimeout","BlockPatternsCategoryPanel","onClick","availableCategories","currentCategoryPatterns","availablePatternCategories","availableCategory","currentShownPatterns","description","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","initialCategory","isMobile","map"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __ } from '@wordpress/i18n';\nimport { useAsyncList, useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\n\nfunction usePatternsCategories( rootClientId ) {\n\tconst [ allPatterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tallPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( { name: currentName }, { name: nextName } ) => {\n\t\t\t\tif (\n\t\t\t\t\t! [ currentName, nextName ].some( ( categoryName ) =>\n\t\t\t\t\t\t[ 'featured', 'text' ].includes( categoryName )\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\t// Move `featured` category to the top and `text` to the bottom.\n\t\t\t\treturn currentName === 'featured' || nextName === 'text'\n\t\t\t\t\t? -1\n\t\t\t\t\t: 1;\n\t\t\t} );\n\n\t\tif (\n\t\t\tallPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\n\t\treturn categories;\n\t}, [ allPatterns, allCategories ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClick ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\n\tconst availableCategories = usePatternsCategories( rootClientId );\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[ allPatterns, category ]\n\t);\n\n\tconst currentShownPatterns = useAsyncList( currentCategoryPatterns );\n\n\t// Hide block pattern preview on unmount.\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tif ( ! currentCategoryPatterns.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<div className=\"block-editor-inserter__patterns-category-panel-title\">\n\t\t\t\t{ category.label }\n\t\t\t</div>\n\t\t\t<p>{ category.description }</p>\n\t\t\t<BlockPatternList\n\t\t\t\tshownPatterns={ currentShownPatterns }\n\t\t\t\tblockPatterns={ currentCategoryPatterns }\n\t\t\t\tonClickPattern={ onClick }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tlabel={ category.label }\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tcategory={ category.label }\n\t\t\t\tisDraggable\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\tconst categories = usePatternsCategories( rootClientId );\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav aria-label={ __( 'Block pattern categories' ) }>\n\t\t\t\t\t\t<ItemGroup\n\t\t\t\t\t\t\trole=\"list\"\n\t\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\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\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon icon={ chevronRight } />\n\t\t\t\t\t\t\t\t\t</HStack>\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\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\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<BlockPatternsCategoryPanel\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\tshowTitlesAsTooltip={ false }\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\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"]}
@@ -90,6 +90,9 @@ function InserterMenu(_ref, ref) {
90
90
  onToggleInsertionPoint(!!item);
91
91
  setHoveredItem(item);
92
92
  }, [onToggleInsertionPoint, setHoveredItem]);
93
+ const onHoverPattern = useCallback(item => {
94
+ onToggleInsertionPoint(!!item);
95
+ }, [onToggleInsertionPoint]);
93
96
  const onClickPatternCategory = useCallback(patternCategory => {
94
97
  setSelectedPatternCategory(patternCategory);
95
98
  }, [setSelectedPatternCategory]);
@@ -188,7 +191,7 @@ function InserterMenu(_ref, ref) {
188
191
  }), showPatternPanel && createElement(BlockPatternsCategoryDialog, {
189
192
  rootClientId: destinationRootClientId,
190
193
  onInsert: onInsertPattern,
191
- onHover: onHover,
194
+ onHover: onHoverPattern,
192
195
  category: selectedPatternCategory,
193
196
  showTitlesAsTooltip: true
194
197
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"names":["classnames","forwardRef","useState","useCallback","useMemo","useImperativeHandle","useRef","VisuallyHidden","SearchControl","__","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTabs","BlockPatternsCategoryDialog","ReusableBlocksTab","MediaTab","MediaCategoryDialog","useMediaCategories","InserterSearchResults","useDebouncedInput","useInsertionPoint","InserterTabs","store","blockEditorStore","InserterMenu","ref","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","prioritizePatterns","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","selectedMediaCategory","setSelectedMediaCategory","selectedTab","setSelectedTab","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","showPatterns","inserterItems","select","__experimentalGetAllowedPatterns","getInserterItems","length","hasReusableBlocks","some","category","mediaCategories","showMedia","onInsert","blocks","meta","shouldForceFocusBlock","onInsertPattern","patternName","onHover","item","onClickPatternCategory","patternCategory","blocksTab","patternsTab","reusableBlocksTab","mediaTab","getCurrentTab","tab","name","searchRef","focusSearch","current","focus","showPatternPanel","showAsTabs","showMediaPanel","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseImperativeHandle,\n\tuseRef,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\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 BlockPatternsTabs, {\n\tBlockPatternsCategoryDialog,\n} from './block-patterns-tab';\nimport ReusableBlocksTab from './reusable-blocks-tab';\nimport { MediaTab, MediaCategoryDialog, useMediaCategories } from './media-tab';\nimport InserterSearchResults from './search-results';\nimport useDebouncedInput from './hooks/use-debounced-input';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport InserterTabs from './tabs';\nimport { store as blockEditorStore } from '../../store';\n\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\tprioritizePatterns,\n\t},\n\tref\n) {\n\tconst [ filterValue, setFilterValue, delayedFilterValue ] =\n\t\tuseDebouncedInput( __experimentalFilterValue );\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] =\n\t\tuseState( null );\n\tconst [ selectedMediaCategory, setSelectedMediaCategory ] =\n\t\tuseState( null );\n\tconst [ selectedTab, setSelectedTab ] = useState( null );\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 { showPatterns, inserterItems } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getInserterItems } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tshowPatterns: !! __experimentalGetAllowedPatterns(\n\t\t\t\t\tdestinationRootClientId\n\t\t\t\t).length,\n\t\t\t\tinserterItems: getInserterItems( destinationRootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ destinationRootClientId ]\n\t);\n\tconst hasReusableBlocks = useMemo( () => {\n\t\treturn inserterItems.some(\n\t\t\t( { category } ) => category === 'reusable'\n\t\t);\n\t}, [ inserterItems ] );\n\n\tconst mediaCategories = useMediaCategories( destinationRootClientId );\n\tconst showMedia = !! mediaCategories.length;\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock ) => {\n\t\t\tonInsertBlocks( blocks, meta, shouldForceFocusBlock );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName ) => {\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 ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t},\n\t\t[ setSelectedPatternCategory ]\n\t);\n\n\tconst blocksTab = useMemo(\n\t\t() => (\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\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\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tonHover,\n\t\t\tdelayedFilterValue,\n\t\t\tshowMostUsedBlocks,\n\t\t\tshowInserterHelpPanel,\n\t\t]\n\t);\n\n\tconst patternsTab = useMemo(\n\t\t() => (\n\t\t\t<BlockPatternsTabs\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),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsertPattern,\n\t\t\tonClickPatternCategory,\n\t\t\tselectedPatternCategory,\n\t\t]\n\t);\n\n\tconst reusableBlocksTab = useMemo(\n\t\t() => (\n\t\t\t<ReusableBlocksTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t/>\n\t\t),\n\t\t[ destinationRootClientId, onInsert, onHover ]\n\t);\n\n\tconst mediaTab = useMemo(\n\t\t() => (\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),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tselectedMediaCategory,\n\t\t\tsetSelectedMediaCategory,\n\t\t]\n\t);\n\n\tconst getCurrentTab = useCallback(\n\t\t( tab ) => {\n\t\t\tif ( tab.name === 'blocks' ) {\n\t\t\t\treturn blocksTab;\n\t\t\t} else if ( tab.name === 'patterns' ) {\n\t\t\t\treturn patternsTab;\n\t\t\t} else if ( tab.name === 'reusable' ) {\n\t\t\t\treturn reusableBlocksTab;\n\t\t\t} else if ( tab.name === 'media' ) {\n\t\t\t\treturn mediaTab;\n\t\t\t}\n\t\t},\n\t\t[ blocksTab, patternsTab, reusableBlocksTab, mediaTab ]\n\t);\n\n\tconst searchRef = useRef();\n\tuseImperativeHandle( ref, () => ( {\n\t\tfocusSearch: () => {\n\t\t\tsearchRef.current.focus();\n\t\t},\n\t} ) );\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' &&\n\t\t! delayedFilterValue &&\n\t\tselectedPatternCategory;\n\tconst showAsTabs =\n\t\t! delayedFilterValue &&\n\t\t( showPatterns || hasReusableBlocks || showMedia );\n\tconst showMediaPanel =\n\t\tselectedTab === 'media' &&\n\t\t! delayedFilterValue &&\n\t\tselectedMediaCategory;\n\treturn (\n\t\t<div className=\"block-editor-inserter__menu\">\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'block-editor-inserter__main-area', {\n\t\t\t\t\t'show-as-tabs': showAsTabs,\n\t\t\t\t} ) }\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 ) setHoveredItem( null );\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\tref={ searchRef }\n\t\t\t\t/>\n\t\t\t\t{ !! delayedFilterValue && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\t\tfilterValue={ delayedFilterValue }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ showAsTabs && (\n\t\t\t\t\t<InserterTabs\n\t\t\t\t\t\tshowPatterns={ showPatterns }\n\t\t\t\t\t\tshowReusableBlocks={ hasReusableBlocks }\n\t\t\t\t\t\tshowMedia={ showMedia }\n\t\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\t\tonSelect={ setSelectedTab }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ getCurrentTab }\n\t\t\t\t\t</InserterTabs>\n\t\t\t\t) }\n\t\t\t\t{ ! delayedFilterValue && ! showAsTabs && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t{ blocksTab }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ showMediaPanel && (\n\t\t\t\t<MediaCategoryDialog\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\tcategory={ selectedMediaCategory }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t) }\n\t\t\t{ showPatternPanel && (\n\t\t\t\t<BlockPatternsCategoryDialog\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InserterMenu );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"names":["classnames","forwardRef","useState","useCallback","useMemo","useImperativeHandle","useRef","VisuallyHidden","SearchControl","__","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTabs","BlockPatternsCategoryDialog","ReusableBlocksTab","MediaTab","MediaCategoryDialog","useMediaCategories","InserterSearchResults","useDebouncedInput","useInsertionPoint","InserterTabs","store","blockEditorStore","InserterMenu","ref","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","prioritizePatterns","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","selectedMediaCategory","setSelectedMediaCategory","selectedTab","setSelectedTab","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","showPatterns","inserterItems","select","__experimentalGetAllowedPatterns","getInserterItems","length","hasReusableBlocks","some","category","mediaCategories","showMedia","onInsert","blocks","meta","shouldForceFocusBlock","onInsertPattern","patternName","onHover","item","onHoverPattern","onClickPatternCategory","patternCategory","blocksTab","patternsTab","reusableBlocksTab","mediaTab","getCurrentTab","tab","name","searchRef","focusSearch","current","focus","showPatternPanel","showAsTabs","showMediaPanel","value"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseImperativeHandle,\n\tuseRef,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\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 BlockPatternsTabs, {\n\tBlockPatternsCategoryDialog,\n} from './block-patterns-tab';\nimport ReusableBlocksTab from './reusable-blocks-tab';\nimport { MediaTab, MediaCategoryDialog, useMediaCategories } from './media-tab';\nimport InserterSearchResults from './search-results';\nimport useDebouncedInput from './hooks/use-debounced-input';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport InserterTabs from './tabs';\nimport { store as blockEditorStore } from '../../store';\n\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\tprioritizePatterns,\n\t},\n\tref\n) {\n\tconst [ filterValue, setFilterValue, delayedFilterValue ] =\n\t\tuseDebouncedInput( __experimentalFilterValue );\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] =\n\t\tuseState( null );\n\tconst [ selectedMediaCategory, setSelectedMediaCategory ] =\n\t\tuseState( null );\n\tconst [ selectedTab, setSelectedTab ] = useState( null );\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 { showPatterns, inserterItems } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { __experimentalGetAllowedPatterns, getInserterItems } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tshowPatterns: !! __experimentalGetAllowedPatterns(\n\t\t\t\t\tdestinationRootClientId\n\t\t\t\t).length,\n\t\t\t\tinserterItems: getInserterItems( destinationRootClientId ),\n\t\t\t};\n\t\t},\n\t\t[ destinationRootClientId ]\n\t);\n\tconst hasReusableBlocks = useMemo( () => {\n\t\treturn inserterItems.some(\n\t\t\t( { category } ) => category === 'reusable'\n\t\t);\n\t}, [ inserterItems ] );\n\n\tconst mediaCategories = useMediaCategories( destinationRootClientId );\n\tconst showMedia = !! mediaCategories.length;\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock ) => {\n\t\t\tonInsertBlocks( blocks, meta, shouldForceFocusBlock );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName ) => {\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 onHoverPattern = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( !! item );\n\t\t},\n\t\t[ onToggleInsertionPoint ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t},\n\t\t[ setSelectedPatternCategory ]\n\t);\n\n\tconst blocksTab = useMemo(\n\t\t() => (\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\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\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tonHover,\n\t\t\tdelayedFilterValue,\n\t\t\tshowMostUsedBlocks,\n\t\t\tshowInserterHelpPanel,\n\t\t]\n\t);\n\n\tconst patternsTab = useMemo(\n\t\t() => (\n\t\t\t<BlockPatternsTabs\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),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsertPattern,\n\t\t\tonClickPatternCategory,\n\t\t\tselectedPatternCategory,\n\t\t]\n\t);\n\n\tconst reusableBlocksTab = useMemo(\n\t\t() => (\n\t\t\t<ReusableBlocksTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t/>\n\t\t),\n\t\t[ destinationRootClientId, onInsert, onHover ]\n\t);\n\n\tconst mediaTab = useMemo(\n\t\t() => (\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),\n\t\t[\n\t\t\tdestinationRootClientId,\n\t\t\tonInsert,\n\t\t\tselectedMediaCategory,\n\t\t\tsetSelectedMediaCategory,\n\t\t]\n\t);\n\n\tconst getCurrentTab = useCallback(\n\t\t( tab ) => {\n\t\t\tif ( tab.name === 'blocks' ) {\n\t\t\t\treturn blocksTab;\n\t\t\t} else if ( tab.name === 'patterns' ) {\n\t\t\t\treturn patternsTab;\n\t\t\t} else if ( tab.name === 'reusable' ) {\n\t\t\t\treturn reusableBlocksTab;\n\t\t\t} else if ( tab.name === 'media' ) {\n\t\t\t\treturn mediaTab;\n\t\t\t}\n\t\t},\n\t\t[ blocksTab, patternsTab, reusableBlocksTab, mediaTab ]\n\t);\n\n\tconst searchRef = useRef();\n\tuseImperativeHandle( ref, () => ( {\n\t\tfocusSearch: () => {\n\t\t\tsearchRef.current.focus();\n\t\t},\n\t} ) );\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' &&\n\t\t! delayedFilterValue &&\n\t\tselectedPatternCategory;\n\tconst showAsTabs =\n\t\t! delayedFilterValue &&\n\t\t( showPatterns || hasReusableBlocks || showMedia );\n\tconst showMediaPanel =\n\t\tselectedTab === 'media' &&\n\t\t! delayedFilterValue &&\n\t\tselectedMediaCategory;\n\treturn (\n\t\t<div className=\"block-editor-inserter__menu\">\n\t\t\t<div\n\t\t\t\tclassName={ classnames( 'block-editor-inserter__main-area', {\n\t\t\t\t\t'show-as-tabs': showAsTabs,\n\t\t\t\t} ) }\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 ) setHoveredItem( null );\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\tref={ searchRef }\n\t\t\t\t/>\n\t\t\t\t{ !! delayedFilterValue && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\t\tfilterValue={ delayedFilterValue }\n\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t\t{ showAsTabs && (\n\t\t\t\t\t<InserterTabs\n\t\t\t\t\t\tshowPatterns={ showPatterns }\n\t\t\t\t\t\tshowReusableBlocks={ hasReusableBlocks }\n\t\t\t\t\t\tshowMedia={ showMedia }\n\t\t\t\t\t\tprioritizePatterns={ prioritizePatterns }\n\t\t\t\t\t\tonSelect={ setSelectedTab }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ getCurrentTab }\n\t\t\t\t\t</InserterTabs>\n\t\t\t\t) }\n\t\t\t\t{ ! delayedFilterValue && ! showAsTabs && (\n\t\t\t\t\t<div className=\"block-editor-inserter__no-tab-container\">\n\t\t\t\t\t\t{ blocksTab }\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ showMediaPanel && (\n\t\t\t\t<MediaCategoryDialog\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\tcategory={ selectedMediaCategory }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t) }\n\t\t\t{ showPatternPanel && (\n\t\t\t\t<BlockPatternsCategoryDialog\n\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\tonHover={ onHoverPattern }\n\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport default forwardRef( InserterMenu );\n"]}
@@ -15,6 +15,7 @@ import { forwardRef, useEffect, useState } from '@wordpress/element';
15
15
  * Internal dependencies
16
16
  */
17
17
 
18
+ import { unlock } from '../../experiments';
18
19
  import ListViewBlockSelectButton from './block-select-button';
19
20
  import BlockDraggable from '../block-draggable';
20
21
  import { store as blockEditorStore } from '../../store';
@@ -48,7 +49,7 @@ const ListViewBlockContents = forwardRef((_ref, ref) => {
48
49
  hasBlockMovingClientId,
49
50
  getSelectedBlockClientId,
50
51
  getLastInsertedBlocksClientIds
51
- } = select(blockEditorStore);
52
+ } = unlock(select(blockEditorStore));
52
53
  const lastInsertedBlocksClientIds = getLastInsertedBlocksClientIds();
53
54
  return {
54
55
  blockMovingClientId: hasBlockMovingClientId(),
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/off-canvas-editor/block-contents.js"],"names":["classnames","useSelect","forwardRef","useEffect","useState","ListViewBlockSelectButton","BlockDraggable","store","blockEditorStore","updateAttributes","LinkUI","useInsertedBlock","BLOCKS_WITH_LINK_UI_SUPPORT","ListViewBlockContents","ref","onClick","onToggleExpanded","block","isSelected","position","siblingBlockCount","level","isExpanded","selectedClientIds","props","clientId","isLinkUIOpen","setIsLinkUIOpen","blockMovingClientId","selectedBlockInBlockEditor","lastInsertedBlockClientId","select","hasBlockMovingClientId","getSelectedBlockClientId","getLastInsertedBlocksClientIds","lastInsertedBlocksClientIds","insertedBlockAttributes","insertedBlockName","setInsertedBlockAttributes","hasExistingLinkValue","id","includes","isBlockMoveTarget","className","draggableClientIds","updatedValue","draggable","onDragStart","onDragEnd"],"mappings":";;;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,UAAT,EAAqBC,SAArB,EAAgCC,QAAhC,QAAgD,oBAAhD;AAEA;AACA;AACA;;AACA,OAAOC,yBAAP,MAAsC,uBAAtC;AACA,OAAOC,cAAP,MAA2B,oBAA3B;AACA,SAASC,KAAK,IAAIC,gBAAlB,QAA0C,aAA1C;AACA,SAASC,gBAAT,QAAiC,qBAAjC;AACA,SAASC,MAAT,QAAuB,WAAvB;AACA,SAASC,gBAAT,QAAiC,sBAAjC;AAEA,MAAMC,2BAA2B,GAAG,CACnC,sBADmC,EAEnC,yBAFmC,CAApC;AAKA,MAAMC,qBAAqB,GAAGX,UAAU,CACvC,OAaCY,GAbD,KAcK;AAAA,MAbJ;AACCC,IAAAA,OADD;AAECC,IAAAA,gBAFD;AAGCC,IAAAA,KAHD;AAICC,IAAAA,UAJD;AAKCC,IAAAA,QALD;AAMCC,IAAAA,iBAND;AAOCC,IAAAA,KAPD;AAQCC,IAAAA,UARD;AASCC,IAAAA,iBATD;AAUC,OAAGC;AAVJ,GAaI;AACJ,QAAM;AAAEC,IAAAA;AAAF,MAAeR,KAArB;AACA,QAAM,CAAES,YAAF,EAAgBC,eAAhB,IAAoCvB,QAAQ,EAAlD;AACA,QAAM;AACLwB,IAAAA,mBADK;AAELC,IAAAA,0BAFK;AAGLC,IAAAA;AAHK,MAIF7B,SAAS,CACV8B,MAAF,IAAc;AACb,UAAM;AACLC,MAAAA,sBADK;AAELC,MAAAA,wBAFK;AAGLC,MAAAA;AAHK,QAIFH,MAAM,CAAEvB,gBAAF,CAJV;AAKA,UAAM2B,2BAA2B,GAChCD,8BAA8B,EAD/B;AAEA,WAAO;AACNN,MAAAA,mBAAmB,EAAEI,sBAAsB,EADrC;AAENH,MAAAA,0BAA0B,EAAEI,wBAAwB,EAF9C;AAGNH,MAAAA,yBAAyB,EACxBK,2BAA2B,IAC3BA,2BAA2B,CAAE,CAAF;AALtB,KAAP;AAOA,GAhBW,EAiBZ,CAAEV,QAAF,CAjBY,CAJb;AAwBA,QAAM;AACLW,IAAAA,uBADK;AAELC,IAAAA,iBAFK;AAGLC,IAAAA;AAHK,MAIF3B,gBAAgB,CAAEmB,yBAAF,CAJpB;AAMA,QAAMS,oBAAoB,GAAGH,uBAAH,aAAGA,uBAAH,uBAAGA,uBAAuB,CAAEI,EAAtD;AAEArC,EAAAA,SAAS,CAAE,MAAM;AAChB,QACCsB,QAAQ,KAAKK,yBAAb,IACAlB,2BADA,aACAA,2BADA,eACAA,2BAA2B,CAAE6B,QAA7B,CAAuCJ,iBAAvC,CADA,IAEA,CAAEE,oBAHH,CAGwB;AAHxB,MAIE;AACDZ,MAAAA,eAAe,CAAE,IAAF,CAAf;AACA;AACD,GARQ,EAQN,CACFG,yBADE,EAEFL,QAFE,EAGFY,iBAHE,EAIFE,oBAJE,CARM,CAAT;AAeA,QAAMG,iBAAiB,GACtBd,mBAAmB,IAAIC,0BAA0B,KAAKJ,QADvD;AAGA,QAAMkB,SAAS,GAAG3C,UAAU,CAAE,uCAAF,EAA2C;AACtE,0BAAsB0C;AADgD,GAA3C,CAA5B,CArDI,CAyDJ;AACA;AACA;AACA;;AACA,QAAME,kBAAkB,GAAGrB,iBAAiB,CAACkB,QAAlB,CAA4BhB,QAA5B,IACxBF,iBADwB,GAExB,CAAEE,QAAF,CAFH;AAIA,SACC,8BACGC,YAAY,IACb,cAAC,MAAD;AACC,IAAA,QAAQ,EAAGI,yBADZ;AAEC,IAAA,IAAI,EAAGM,uBAFR;AAGC,IAAA,OAAO,EAAG,MAAMT,eAAe,CAAE,KAAF,CAHhC;AAIC,IAAA,mBAAmB,EAAG,KAJvB;AAKC,IAAA,QAAQ,EAAKkB,YAAF,IAAoB;AAC9BpC,MAAAA,gBAAgB,CACfoC,YADe,EAEfP,0BAFe,EAGfF,uBAHe,CAAhB;AAKAT,MAAAA,eAAe,CAAE,KAAF,CAAf;AACA;AAZF,IAFF,EAiBC,cAAC,cAAD;AAAgB,IAAA,SAAS,EAAGiB;AAA5B,KACG;AAAA,QAAE;AAAEE,MAAAA,SAAF;AAAaC,MAAAA,WAAb;AAA0BC,MAAAA;AAA1B,KAAF;AAAA,WACD,cAAC,yBAAD;AACC,MAAA,GAAG,EAAGlC,GADP;AAEC,MAAA,SAAS,EAAG6B,SAFb;AAGC,MAAA,KAAK,EAAG1B,KAHT;AAIC,MAAA,OAAO,EAAGF,OAJX;AAKC,MAAA,gBAAgB,EAAGC,gBALpB;AAMC,MAAA,UAAU,EAAGE,UANd;AAOC,MAAA,QAAQ,EAAGC,QAPZ;AAQC,MAAA,iBAAiB,EAAGC,iBARrB;AASC,MAAA,KAAK,EAAGC,KATT;AAUC,MAAA,SAAS,EAAGyB,SAVb;AAWC,MAAA,WAAW,EAAGC,WAXf;AAYC,MAAA,SAAS,EAAGC,SAZb;AAaC,MAAA,UAAU,EAAG1B;AAbd,OAcME,KAdN,EADC;AAAA,GADH,CAjBD,CADD;AAwCA,CAxHsC,CAAxC;AA2HA,eAAeX,qBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { forwardRef, useEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport ListViewBlockSelectButton from './block-select-button';\nimport BlockDraggable from '../block-draggable';\nimport { store as blockEditorStore } from '../../store';\nimport { updateAttributes } from './update-attributes';\nimport { LinkUI } from './link-ui';\nimport { useInsertedBlock } from './use-inserted-block';\n\nconst BLOCKS_WITH_LINK_UI_SUPPORT = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n];\n\nconst ListViewBlockContents = forwardRef(\n\t(\n\t\t{\n\t\t\tonClick,\n\t\t\tonToggleExpanded,\n\t\t\tblock,\n\t\t\tisSelected,\n\t\t\tposition,\n\t\t\tsiblingBlockCount,\n\t\t\tlevel,\n\t\t\tisExpanded,\n\t\t\tselectedClientIds,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst { clientId } = block;\n\t\tconst [ isLinkUIOpen, setIsLinkUIOpen ] = useState();\n\t\tconst {\n\t\t\tblockMovingClientId,\n\t\t\tselectedBlockInBlockEditor,\n\t\t\tlastInsertedBlockClientId,\n\t\t} = useSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\thasBlockMovingClientId,\n\t\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\t\tgetLastInsertedBlocksClientIds,\n\t\t\t\t} = select( blockEditorStore );\n\t\t\t\tconst lastInsertedBlocksClientIds =\n\t\t\t\t\tgetLastInsertedBlocksClientIds();\n\t\t\t\treturn {\n\t\t\t\t\tblockMovingClientId: hasBlockMovingClientId(),\n\t\t\t\t\tselectedBlockInBlockEditor: getSelectedBlockClientId(),\n\t\t\t\t\tlastInsertedBlockClientId:\n\t\t\t\t\t\tlastInsertedBlocksClientIds &&\n\t\t\t\t\t\tlastInsertedBlocksClientIds[ 0 ],\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\n\t\tconst {\n\t\t\tinsertedBlockAttributes,\n\t\t\tinsertedBlockName,\n\t\t\tsetInsertedBlockAttributes,\n\t\t} = useInsertedBlock( lastInsertedBlockClientId );\n\n\t\tconst hasExistingLinkValue = insertedBlockAttributes?.id;\n\n\t\tuseEffect( () => {\n\t\t\tif (\n\t\t\t\tclientId === lastInsertedBlockClientId &&\n\t\t\t\tBLOCKS_WITH_LINK_UI_SUPPORT?.includes( insertedBlockName ) &&\n\t\t\t\t! hasExistingLinkValue // don't re-show the Link UI if the block already has a link value.\n\t\t\t) {\n\t\t\t\tsetIsLinkUIOpen( true );\n\t\t\t}\n\t\t}, [\n\t\t\tlastInsertedBlockClientId,\n\t\t\tclientId,\n\t\t\tinsertedBlockName,\n\t\t\thasExistingLinkValue,\n\t\t] );\n\n\t\tconst isBlockMoveTarget =\n\t\t\tblockMovingClientId && selectedBlockInBlockEditor === clientId;\n\n\t\tconst className = classnames( 'block-editor-list-view-block-contents', {\n\t\t\t'is-dropping-before': isBlockMoveTarget,\n\t\t} );\n\n\t\t// Only include all selected blocks if the currently clicked on block\n\t\t// is one of the selected blocks. This ensures that if a user attempts\n\t\t// to drag a block that isn't part of the selection, they're still able\n\t\t// to drag it and rearrange its position.\n\t\tconst draggableClientIds = selectedClientIds.includes( clientId )\n\t\t\t? selectedClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ isLinkUIOpen && (\n\t\t\t\t\t<LinkUI\n\t\t\t\t\t\tclientId={ lastInsertedBlockClientId }\n\t\t\t\t\t\tlink={ insertedBlockAttributes }\n\t\t\t\t\t\tonClose={ () => setIsLinkUIOpen( false ) }\n\t\t\t\t\t\thasCreateSuggestion={ false }\n\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\tsetInsertedBlockAttributes,\n\t\t\t\t\t\t\t\tinsertedBlockAttributes\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tsetIsLinkUIOpen( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockDraggable clientIds={ draggableClientIds }>\n\t\t\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t\t\t<ListViewBlockSelectButton\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t\tonToggleExpanded={ onToggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockDraggable>\n\t\t\t</>\n\t\t);\n\t}\n);\n\nexport default ListViewBlockContents;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/off-canvas-editor/block-contents.js"],"names":["classnames","useSelect","forwardRef","useEffect","useState","unlock","ListViewBlockSelectButton","BlockDraggable","store","blockEditorStore","updateAttributes","LinkUI","useInsertedBlock","BLOCKS_WITH_LINK_UI_SUPPORT","ListViewBlockContents","ref","onClick","onToggleExpanded","block","isSelected","position","siblingBlockCount","level","isExpanded","selectedClientIds","props","clientId","isLinkUIOpen","setIsLinkUIOpen","blockMovingClientId","selectedBlockInBlockEditor","lastInsertedBlockClientId","select","hasBlockMovingClientId","getSelectedBlockClientId","getLastInsertedBlocksClientIds","lastInsertedBlocksClientIds","insertedBlockAttributes","insertedBlockName","setInsertedBlockAttributes","hasExistingLinkValue","id","includes","isBlockMoveTarget","className","draggableClientIds","updatedValue","draggable","onDragStart","onDragEnd"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect } from '@wordpress/data';\nimport { forwardRef, useEffect, useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../experiments';\nimport ListViewBlockSelectButton from './block-select-button';\nimport BlockDraggable from '../block-draggable';\nimport { store as blockEditorStore } from '../../store';\nimport { updateAttributes } from './update-attributes';\nimport { LinkUI } from './link-ui';\nimport { useInsertedBlock } from './use-inserted-block';\n\nconst BLOCKS_WITH_LINK_UI_SUPPORT = [\n\t'core/navigation-link',\n\t'core/navigation-submenu',\n];\n\nconst ListViewBlockContents = forwardRef(\n\t(\n\t\t{\n\t\t\tonClick,\n\t\t\tonToggleExpanded,\n\t\t\tblock,\n\t\t\tisSelected,\n\t\t\tposition,\n\t\t\tsiblingBlockCount,\n\t\t\tlevel,\n\t\t\tisExpanded,\n\t\t\tselectedClientIds,\n\t\t\t...props\n\t\t},\n\t\tref\n\t) => {\n\t\tconst { clientId } = block;\n\t\tconst [ isLinkUIOpen, setIsLinkUIOpen ] = useState();\n\t\tconst {\n\t\t\tblockMovingClientId,\n\t\t\tselectedBlockInBlockEditor,\n\t\t\tlastInsertedBlockClientId,\n\t\t} = useSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst {\n\t\t\t\t\thasBlockMovingClientId,\n\t\t\t\t\tgetSelectedBlockClientId,\n\t\t\t\t\tgetLastInsertedBlocksClientIds,\n\t\t\t\t} = unlock( select( blockEditorStore ) );\n\t\t\t\tconst lastInsertedBlocksClientIds =\n\t\t\t\t\tgetLastInsertedBlocksClientIds();\n\t\t\t\treturn {\n\t\t\t\t\tblockMovingClientId: hasBlockMovingClientId(),\n\t\t\t\t\tselectedBlockInBlockEditor: getSelectedBlockClientId(),\n\t\t\t\t\tlastInsertedBlockClientId:\n\t\t\t\t\t\tlastInsertedBlocksClientIds &&\n\t\t\t\t\t\tlastInsertedBlocksClientIds[ 0 ],\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ clientId ]\n\t\t);\n\n\t\tconst {\n\t\t\tinsertedBlockAttributes,\n\t\t\tinsertedBlockName,\n\t\t\tsetInsertedBlockAttributes,\n\t\t} = useInsertedBlock( lastInsertedBlockClientId );\n\n\t\tconst hasExistingLinkValue = insertedBlockAttributes?.id;\n\n\t\tuseEffect( () => {\n\t\t\tif (\n\t\t\t\tclientId === lastInsertedBlockClientId &&\n\t\t\t\tBLOCKS_WITH_LINK_UI_SUPPORT?.includes( insertedBlockName ) &&\n\t\t\t\t! hasExistingLinkValue // don't re-show the Link UI if the block already has a link value.\n\t\t\t) {\n\t\t\t\tsetIsLinkUIOpen( true );\n\t\t\t}\n\t\t}, [\n\t\t\tlastInsertedBlockClientId,\n\t\t\tclientId,\n\t\t\tinsertedBlockName,\n\t\t\thasExistingLinkValue,\n\t\t] );\n\n\t\tconst isBlockMoveTarget =\n\t\t\tblockMovingClientId && selectedBlockInBlockEditor === clientId;\n\n\t\tconst className = classnames( 'block-editor-list-view-block-contents', {\n\t\t\t'is-dropping-before': isBlockMoveTarget,\n\t\t} );\n\n\t\t// Only include all selected blocks if the currently clicked on block\n\t\t// is one of the selected blocks. This ensures that if a user attempts\n\t\t// to drag a block that isn't part of the selection, they're still able\n\t\t// to drag it and rearrange its position.\n\t\tconst draggableClientIds = selectedClientIds.includes( clientId )\n\t\t\t? selectedClientIds\n\t\t\t: [ clientId ];\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t{ isLinkUIOpen && (\n\t\t\t\t\t<LinkUI\n\t\t\t\t\t\tclientId={ lastInsertedBlockClientId }\n\t\t\t\t\t\tlink={ insertedBlockAttributes }\n\t\t\t\t\t\tonClose={ () => setIsLinkUIOpen( false ) }\n\t\t\t\t\t\thasCreateSuggestion={ false }\n\t\t\t\t\t\tonChange={ ( updatedValue ) => {\n\t\t\t\t\t\t\tupdateAttributes(\n\t\t\t\t\t\t\t\tupdatedValue,\n\t\t\t\t\t\t\t\tsetInsertedBlockAttributes,\n\t\t\t\t\t\t\t\tinsertedBlockAttributes\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tsetIsLinkUIOpen( false );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<BlockDraggable clientIds={ draggableClientIds }>\n\t\t\t\t\t{ ( { draggable, onDragStart, onDragEnd } ) => (\n\t\t\t\t\t\t<ListViewBlockSelectButton\n\t\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\t\tblock={ block }\n\t\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\t\tonToggleExpanded={ onToggleExpanded }\n\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\tposition={ position }\n\t\t\t\t\t\t\tsiblingBlockCount={ siblingBlockCount }\n\t\t\t\t\t\t\tlevel={ level }\n\t\t\t\t\t\t\tdraggable={ draggable }\n\t\t\t\t\t\t\tonDragStart={ onDragStart }\n\t\t\t\t\t\t\tonDragEnd={ onDragEnd }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</BlockDraggable>\n\t\t\t</>\n\t\t);\n\t}\n);\n\nexport default ListViewBlockContents;\n"]}
@@ -43,6 +43,8 @@ export const BLOCK_LIST_ITEM_HEIGHT = 36;
43
43
  * @param {boolean} props.showBlockMovers Flag to enable block movers
44
44
  * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.
45
45
  * @param {Object} props.LeafMoreMenu Optional more menu substitution.
46
+ * @param {string} props.description Optional accessible description for the tree grid component.
47
+ * @param {string} props.onSelect Optional callback to be invoked when a block is selected.
46
48
  * @param {Object} ref Forwarded ref
47
49
  */
48
50
 
@@ -52,8 +54,13 @@ function OffCanvasEditor(_ref, ref) {
52
54
  blocks,
53
55
  showBlockMovers = false,
54
56
  isExpanded = false,
55
- LeafMoreMenu
57
+ LeafMoreMenu,
58
+ description = __('Block navigation structure'),
59
+ onSelect
56
60
  } = _ref;
61
+ const {
62
+ getBlock
63
+ } = useSelect(blockEditorStore);
57
64
  const {
58
65
  clientIdsTree,
59
66
  draggedClientIds,
@@ -94,7 +101,11 @@ function OffCanvasEditor(_ref, ref) {
94
101
  const selectEditorBlock = useCallback((event, blockClientId) => {
95
102
  updateBlockSelection(event, blockClientId);
96
103
  setSelectedTreeId(blockClientId);
97
- }, [setSelectedTreeId, updateBlockSelection]);
104
+
105
+ if (onSelect) {
106
+ onSelect(getBlock(blockClientId));
107
+ }
108
+ }, [setSelectedTreeId, updateBlockSelection, onSelect, getBlock]);
98
109
  useEffect(() => {
99
110
  isMounted.current = true;
100
111
  }, []); // List View renders a fixed number of items and relies on each having a fixed item height of 36px.
@@ -164,8 +175,9 @@ function OffCanvasEditor(_ref, ref) {
164
175
  ref: treeGridRef,
165
176
  onCollapseRow: collapseRow,
166
177
  onExpandRow: expandRow,
167
- onFocusRow: focusRow,
168
- applicationAriaLabel: __('Block navigation structure')
178
+ onFocusRow: focusRow // eslint-disable-next-line jsx-a11y/aria-props
179
+ ,
180
+ "aria-description": description
169
181
  }, createElement(ListViewContext.Provider, {
170
182
  value: contextValue
171
183
  }, createElement(ListViewBranch, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-editor/src/components/off-canvas-editor/index.js"],"names":["useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","__experimentalTreeGridRow","TreeGridRow","__experimentalTreeGridCell","TreeGridCell","AsyncModeProvider","useSelect","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","__","ListViewBranch","ListViewContext","ListViewDropIndicator","useBlockSelection","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","OffCanvasEditor","ref","blocks","showBlockMovers","isExpanded","LeafMoreMenu","clientIdsTree","draggedClientIds","selectedClientIds","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","isMounted","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","blockClientId","current","fixedListWindow","useWindowing","windowOverscan","expand","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","isTreeGridMounted"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport {\n\t__experimentalTreeGrid as TreeGrid,\n\t__experimentalTreeGridRow as TreeGridRow,\n\t__experimentalTreeGridCell as TreeGridCell,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {boolean} props.showBlockMovers Flag to enable block movers\n * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.\n * @param {Object} props.LeafMoreMenu Optional more menu substitution.\n * @param {Object} ref Forwarded ref\n */\nfunction OffCanvasEditor(\n\t{ id, blocks, showBlockMovers = false, isExpanded = false, LeafMoreMenu },\n\tref\n) {\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( blocks );\n\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst isMounted = useRef( false );\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t( event, blockClientId ) => {\n\t\t\tupdateBlockSelection( event, blockClientId );\n\t\t\tsetSelectedTreeId( blockClientId );\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection ]\n\t);\n\tuseEffect( () => {\n\t\tisMounted.current = true;\n\t}, [] );\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\tconst expand = useCallback(\n\t\t( blockClientId ) => {\n\t\t\tif ( ! blockClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( {\n\t\t\t\ttype: 'expand',\n\t\t\t\tclientIds: [ blockClientId ],\n\t\t\t} );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( blockClientId ) => {\n\t\t\tif ( ! blockClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( {\n\t\t\t\ttype: 'collapse',\n\t\t\t\tclientIds: [ blockClientId ],\n\t\t\t} );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tisTreeGridMounted: isMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tLeafMoreMenu,\n\t\t} ),\n\t\t[\n\t\t\tisMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tLeafMoreMenu,\n\t\t]\n\t);\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<div className=\"offcanvas-editor-list-view-tree-wrapper\">\n\t\t\t\t<TreeGrid\n\t\t\t\t\tid={ id }\n\t\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\t\tref={ treeGridRef }\n\t\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\t\tapplicationAriaLabel={ __( 'Block navigation structure' ) }\n\t\t\t\t>\n\t\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TreeGridRow\n\t\t\t\t\t\t\tlevel={ 1 }\n\t\t\t\t\t\t\tsetSize={ 1 }\n\t\t\t\t\t\t\tpositionInSet={ 1 }\n\t\t\t\t\t\t\tisExpanded={ true }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ ! clientIdsTree.length && (\n\t\t\t\t\t\t\t\t<TreeGridCell withoutGridItem>\n\t\t\t\t\t\t\t\t\t<div className=\"offcanvas-editor-list-view-is-empty\">\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'Your menu is currently empty. Add your first menu item to get started.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</TreeGridCell>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridRow>\n\t\t\t\t\t</ListViewContext.Provider>\n\t\t\t\t</TreeGrid>\n\t\t\t</div>\n\t\t</AsyncModeProvider>\n\t);\n}\n\nexport default forwardRef( OffCanvasEditor );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-editor/src/components/off-canvas-editor/index.js"],"names":["useMergeRefs","__experimentalUseFixedWindowList","useFixedWindowList","__experimentalTreeGrid","TreeGrid","__experimentalTreeGridRow","TreeGridRow","__experimentalTreeGridCell","TreeGridCell","AsyncModeProvider","useSelect","useCallback","useEffect","useMemo","useRef","useReducer","forwardRef","__","ListViewBranch","ListViewContext","ListViewDropIndicator","useBlockSelection","useListViewClientIds","useListViewDropZone","useListViewExpandSelectedItem","store","blockEditorStore","expanded","state","action","Array","isArray","clientIds","reduce","newState","id","type","BLOCK_LIST_ITEM_HEIGHT","OffCanvasEditor","ref","blocks","showBlockMovers","isExpanded","LeafMoreMenu","description","onSelect","getBlock","clientIdsTree","draggedClientIds","selectedClientIds","visibleBlockCount","shouldShowInnerBlocks","select","getGlobalBlockCount","getClientIdsOfDescendants","__unstableGetEditorMode","draggedBlockCount","length","updateBlockSelection","expandedState","setExpandedState","dropZoneRef","target","blockDropTarget","elementRef","treeGridRef","isMounted","setSelectedTreeId","firstSelectedBlockClientId","selectEditorBlock","event","blockClientId","current","fixedListWindow","useWindowing","windowOverscan","expand","collapse","expandRow","row","dataset","block","collapseRow","focusRow","startRow","endRow","shiftKey","contextValue","isTreeGridMounted"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMergeRefs,\n\t__experimentalUseFixedWindowList as useFixedWindowList,\n} from '@wordpress/compose';\nimport {\n\t__experimentalTreeGrid as TreeGrid,\n\t__experimentalTreeGridRow as TreeGridRow,\n\t__experimentalTreeGridCell as TreeGridCell,\n} from '@wordpress/components';\nimport { AsyncModeProvider, useSelect } from '@wordpress/data';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseReducer,\n\tforwardRef,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport ListViewBranch from './branch';\nimport { ListViewContext } from './context';\nimport ListViewDropIndicator from './drop-indicator';\nimport useBlockSelection from './use-block-selection';\nimport useListViewClientIds from './use-list-view-client-ids';\nimport useListViewDropZone from './use-list-view-drop-zone';\nimport useListViewExpandSelectedItem from './use-list-view-expand-selected-item';\nimport { store as blockEditorStore } from '../../store';\n\nconst expanded = ( state, action ) => {\n\tif ( Array.isArray( action.clientIds ) ) {\n\t\treturn {\n\t\t\t...state,\n\t\t\t...action.clientIds.reduce(\n\t\t\t\t( newState, id ) => ( {\n\t\t\t\t\t...newState,\n\t\t\t\t\t[ id ]: action.type === 'expand',\n\t\t\t\t} ),\n\t\t\t\t{}\n\t\t\t),\n\t\t};\n\t}\n\treturn state;\n};\n\nexport const BLOCK_LIST_ITEM_HEIGHT = 36;\n\n/**\n * Show a hierarchical list of blocks.\n *\n * @param {Object} props Components props.\n * @param {string} props.id An HTML element id for the root element of ListView.\n * @param {Array} props.blocks Custom subset of block client IDs to be used instead of the default hierarchy.\n * @param {boolean} props.showBlockMovers Flag to enable block movers\n * @param {boolean} props.isExpanded Flag to determine whether nested levels are expanded by default.\n * @param {Object} props.LeafMoreMenu Optional more menu substitution.\n * @param {string} props.description Optional accessible description for the tree grid component.\n * @param {string} props.onSelect Optional callback to be invoked when a block is selected.\n * @param {Object} ref Forwarded ref\n */\nfunction OffCanvasEditor(\n\t{\n\t\tid,\n\t\tblocks,\n\t\tshowBlockMovers = false,\n\t\tisExpanded = false,\n\t\tLeafMoreMenu,\n\t\tdescription = __( 'Block navigation structure' ),\n\t\tonSelect,\n\t},\n\tref\n) {\n\tconst { getBlock } = useSelect( blockEditorStore );\n\tconst { clientIdsTree, draggedClientIds, selectedClientIds } =\n\t\tuseListViewClientIds( blocks );\n\n\tconst { visibleBlockCount, shouldShowInnerBlocks } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetGlobalBlockCount,\n\t\t\t\tgetClientIdsOfDescendants,\n\t\t\t\t__unstableGetEditorMode,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst draggedBlockCount =\n\t\t\t\tdraggedClientIds?.length > 0\n\t\t\t\t\t? getClientIdsOfDescendants( draggedClientIds ).length + 1\n\t\t\t\t\t: 0;\n\t\t\treturn {\n\t\t\t\tvisibleBlockCount: getGlobalBlockCount() - draggedBlockCount,\n\t\t\t\tshouldShowInnerBlocks: __unstableGetEditorMode() !== 'zoom-out',\n\t\t\t};\n\t\t},\n\t\t[ draggedClientIds ]\n\t);\n\n\tconst { updateBlockSelection } = useBlockSelection();\n\n\tconst [ expandedState, setExpandedState ] = useReducer( expanded, {} );\n\n\tconst { ref: dropZoneRef, target: blockDropTarget } = useListViewDropZone();\n\tconst elementRef = useRef();\n\tconst treeGridRef = useMergeRefs( [ elementRef, dropZoneRef, ref ] );\n\n\tconst isMounted = useRef( false );\n\tconst { setSelectedTreeId } = useListViewExpandSelectedItem( {\n\t\tfirstSelectedBlockClientId: selectedClientIds[ 0 ],\n\t\tsetExpandedState,\n\t} );\n\tconst selectEditorBlock = useCallback(\n\t\t( event, blockClientId ) => {\n\t\t\tupdateBlockSelection( event, blockClientId );\n\t\t\tsetSelectedTreeId( blockClientId );\n\t\t\tif ( onSelect ) {\n\t\t\t\tonSelect( getBlock( blockClientId ) );\n\t\t\t}\n\t\t},\n\t\t[ setSelectedTreeId, updateBlockSelection, onSelect, getBlock ]\n\t);\n\tuseEffect( () => {\n\t\tisMounted.current = true;\n\t}, [] );\n\n\t// List View renders a fixed number of items and relies on each having a fixed item height of 36px.\n\t// If this value changes, we should also change the itemHeight value set in useFixedWindowList.\n\t// See: https://github.com/WordPress/gutenberg/pull/35230 for additional context.\n\tconst [ fixedListWindow ] = useFixedWindowList(\n\t\telementRef,\n\t\tBLOCK_LIST_ITEM_HEIGHT,\n\t\tvisibleBlockCount,\n\t\t{\n\t\t\tuseWindowing: true,\n\t\t\twindowOverscan: 40,\n\t\t}\n\t);\n\n\tconst expand = useCallback(\n\t\t( blockClientId ) => {\n\t\t\tif ( ! blockClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( {\n\t\t\t\ttype: 'expand',\n\t\t\t\tclientIds: [ blockClientId ],\n\t\t\t} );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst collapse = useCallback(\n\t\t( blockClientId ) => {\n\t\t\tif ( ! blockClientId ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsetExpandedState( {\n\t\t\t\ttype: 'collapse',\n\t\t\t\tclientIds: [ blockClientId ],\n\t\t\t} );\n\t\t},\n\t\t[ setExpandedState ]\n\t);\n\tconst expandRow = useCallback(\n\t\t( row ) => {\n\t\t\texpand( row?.dataset?.block );\n\t\t},\n\t\t[ expand ]\n\t);\n\tconst collapseRow = useCallback(\n\t\t( row ) => {\n\t\t\tcollapse( row?.dataset?.block );\n\t\t},\n\t\t[ collapse ]\n\t);\n\tconst focusRow = useCallback(\n\t\t( event, startRow, endRow ) => {\n\t\t\tif ( event.shiftKey ) {\n\t\t\t\tupdateBlockSelection(\n\t\t\t\t\tevent,\n\t\t\t\t\tstartRow?.dataset?.block,\n\t\t\t\t\tendRow?.dataset?.block\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t[ updateBlockSelection ]\n\t);\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tisTreeGridMounted: isMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tLeafMoreMenu,\n\t\t} ),\n\t\t[\n\t\t\tisMounted.current,\n\t\t\tdraggedClientIds,\n\t\t\texpandedState,\n\t\t\texpand,\n\t\t\tcollapse,\n\t\t\tLeafMoreMenu,\n\t\t]\n\t);\n\n\treturn (\n\t\t<AsyncModeProvider value={ true }>\n\t\t\t<ListViewDropIndicator\n\t\t\t\tlistViewRef={ elementRef }\n\t\t\t\tblockDropTarget={ blockDropTarget }\n\t\t\t/>\n\t\t\t<div className=\"offcanvas-editor-list-view-tree-wrapper\">\n\t\t\t\t<TreeGrid\n\t\t\t\t\tid={ id }\n\t\t\t\t\tclassName=\"block-editor-list-view-tree\"\n\t\t\t\t\taria-label={ __( 'Block navigation structure' ) }\n\t\t\t\t\tref={ treeGridRef }\n\t\t\t\t\tonCollapseRow={ collapseRow }\n\t\t\t\t\tonExpandRow={ expandRow }\n\t\t\t\t\tonFocusRow={ focusRow }\n\t\t\t\t\t// eslint-disable-next-line jsx-a11y/aria-props\n\t\t\t\t\taria-description={ description }\n\t\t\t\t>\n\t\t\t\t\t<ListViewContext.Provider value={ contextValue }>\n\t\t\t\t\t\t<ListViewBranch\n\t\t\t\t\t\t\tblocks={ clientIdsTree }\n\t\t\t\t\t\t\tselectBlock={ selectEditorBlock }\n\t\t\t\t\t\t\tshowBlockMovers={ showBlockMovers }\n\t\t\t\t\t\t\tfixedListWindow={ fixedListWindow }\n\t\t\t\t\t\t\tselectedClientIds={ selectedClientIds }\n\t\t\t\t\t\t\tisExpanded={ isExpanded }\n\t\t\t\t\t\t\tshouldShowInnerBlocks={ shouldShowInnerBlocks }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<TreeGridRow\n\t\t\t\t\t\t\tlevel={ 1 }\n\t\t\t\t\t\t\tsetSize={ 1 }\n\t\t\t\t\t\t\tpositionInSet={ 1 }\n\t\t\t\t\t\t\tisExpanded={ true }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ ! clientIdsTree.length && (\n\t\t\t\t\t\t\t\t<TreeGridCell withoutGridItem>\n\t\t\t\t\t\t\t\t\t<div className=\"offcanvas-editor-list-view-is-empty\">\n\t\t\t\t\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t\t\t\t\t'Your menu is currently empty. Add your first menu item to get started.'\n\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</TreeGridCell>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</TreeGridRow>\n\t\t\t\t\t</ListViewContext.Provider>\n\t\t\t\t</TreeGrid>\n\t\t\t</div>\n\t\t</AsyncModeProvider>\n\t);\n}\n\nexport default forwardRef( OffCanvasEditor );\n"]}