@wordpress/block-editor 14.11.0 → 14.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/grid/grid-visualizer.js +11 -19
  3. package/build/components/grid/grid-visualizer.js.map +1 -1
  4. package/build/components/grid/utils.js +6 -4
  5. package/build/components/grid/utils.js.map +1 -1
  6. package/build/components/inserter/menu.js +13 -2
  7. package/build/components/inserter/menu.js.map +1 -1
  8. package/build/components/inspector-controls-tabs/position-controls-panel.js +49 -21
  9. package/build/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  10. package/build/components/spacing-sizes-control/index.js +44 -2
  11. package/build/components/spacing-sizes-control/index.js.map +1 -1
  12. package/build/components/spacing-sizes-control/linked-button.js +6 -9
  13. package/build/components/spacing-sizes-control/linked-button.js.map +1 -1
  14. package/build/components/spacing-sizes-control/utils.js +0 -108
  15. package/build/components/spacing-sizes-control/utils.js.map +1 -1
  16. package/build/hooks/contrast-checker.js +41 -22
  17. package/build/hooks/contrast-checker.js.map +1 -1
  18. package/build/hooks/custom-class-name.js +2 -1
  19. package/build/hooks/custom-class-name.js.map +1 -1
  20. package/build/store/selectors.js +13 -2
  21. package/build/store/selectors.js.map +1 -1
  22. package/build-module/components/grid/grid-visualizer.js +11 -19
  23. package/build-module/components/grid/grid-visualizer.js.map +1 -1
  24. package/build-module/components/grid/utils.js +6 -4
  25. package/build-module/components/grid/utils.js.map +1 -1
  26. package/build-module/components/inserter/menu.js +13 -2
  27. package/build-module/components/inserter/menu.js.map +1 -1
  28. package/build-module/components/inspector-controls-tabs/position-controls-panel.js +51 -23
  29. package/build-module/components/inspector-controls-tabs/position-controls-panel.js.map +1 -1
  30. package/build-module/components/spacing-sizes-control/index.js +45 -1
  31. package/build-module/components/spacing-sizes-control/index.js.map +1 -1
  32. package/build-module/components/spacing-sizes-control/linked-button.js +7 -10
  33. package/build-module/components/spacing-sizes-control/linked-button.js.map +1 -1
  34. package/build-module/components/spacing-sizes-control/utils.js +0 -104
  35. package/build-module/components/spacing-sizes-control/utils.js.map +1 -1
  36. package/build-module/hooks/contrast-checker.js +42 -23
  37. package/build-module/hooks/contrast-checker.js.map +1 -1
  38. package/build-module/hooks/custom-class-name.js +2 -1
  39. package/build-module/hooks/custom-class-name.js.map +1 -1
  40. package/build-module/store/selectors.js +13 -2
  41. package/build-module/store/selectors.js.map +1 -1
  42. package/build-style/style-rtl.css +1 -0
  43. package/build-style/style.css +1 -0
  44. package/package.json +34 -34
  45. package/src/components/grid/grid-visualizer.js +10 -21
  46. package/src/components/grid/style.scss +1 -0
  47. package/src/components/grid/utils.js +6 -4
  48. package/src/components/inserter/menu.js +11 -9
  49. package/src/components/inspector-controls-tabs/position-controls-panel.js +62 -27
  50. package/src/components/spacing-sizes-control/README.md +93 -0
  51. package/src/components/spacing-sizes-control/index.js +44 -1
  52. package/src/components/spacing-sizes-control/linked-button.js +8 -10
  53. package/src/components/spacing-sizes-control/test/utils.js +0 -151
  54. package/src/components/spacing-sizes-control/utils.js +0 -106
  55. package/src/hooks/contrast-checker.js +64 -30
  56. package/src/hooks/custom-class-name.js +2 -1
  57. package/src/store/selectors.js +15 -7
@@ -48,27 +48,19 @@ const GridVisualizerGrid = forwardRef(({
48
48
  const [gridInfo, setGridInfo] = useState(() => getGridInfo(gridElement));
49
49
  const [isDroppingAllowed, setIsDroppingAllowed] = useState(false);
50
50
  useEffect(() => {
51
- const observers = [];
52
- for (const element of [gridElement, ...gridElement.children]) {
53
- const observer = new window.ResizeObserver(() => {
54
- setGridInfo(getGridInfo(gridElement));
55
- });
56
- observer.observe(element);
57
- observers.push(observer);
58
- }
59
- const mutationObserver = new window.MutationObserver(() => {
60
- setGridInfo(getGridInfo(gridElement));
51
+ const resizeCallback = () => setGridInfo(getGridInfo(gridElement));
52
+ // Both border-box and content-box are observed as they may change
53
+ // independently. This requires two observers because a single one
54
+ // can’t be made to monitor both on the same element.
55
+ const borderBoxSpy = new window.ResizeObserver(resizeCallback);
56
+ borderBoxSpy.observe(gridElement, {
57
+ box: 'border-box'
61
58
  });
62
- mutationObserver.observe(gridElement, {
63
- attributeFilter: ['style', 'class'],
64
- childList: true,
65
- subtree: true
66
- });
67
- observers.push(mutationObserver);
59
+ const contentBoxSpy = new window.ResizeObserver(resizeCallback);
60
+ contentBoxSpy.observe(gridElement);
68
61
  return () => {
69
- for (const observer of observers) {
70
- observer.disconnect();
71
- }
62
+ borderBoxSpy.disconnect();
63
+ contentBoxSpy.disconnect();
72
64
  };
73
65
  }, [gridElement]);
74
66
  useEffect(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useState","useEffect","forwardRef","useMemo","useSelect","useDispatch","__experimentalUseDropZone","useDropZone","useBlockElement","BlockPopoverCover","range","GridRect","getGridInfo","store","blockEditorStore","useGetNumberOfBlocksBeforeCell","ButtonBlockAppender","unlock","jsx","_jsx","GridVisualizer","clientId","contentRef","parentLayout","isDistractionFree","select","getSettings","gridElement","isManualGrid","isManualPlacement","window","__experimentalEnableGridInteractivity","GridVisualizerGrid","gridClientId","ref","gridInfo","setGridInfo","isDroppingAllowed","setIsDroppingAllowed","observers","element","children","observer","ResizeObserver","observe","push","mutationObserver","MutationObserver","attributeFilter","childList","subtree","disconnect","onGlobalDrag","onGlobalDragEnd","document","addEventListener","removeEventListener","className","__unstablePopoverSlot","style","ManualGridVisualizer","Array","from","length","numItems","_","i","GridVisualizerCell","color","currentColor","highlightedRect","setHighlightedRect","gridItemStyles","getBlockOrder","getBlockStyles","blockOrder","occupiedRects","rects","Object","values","_style$layout","columnStart","rowStart","columnSpan","rowSpan","layout","numRows","map","row","numColumns","column","_highlightedRect$cont","isCellOccupied","some","rect","contains","isHighlighted","GridVisualizerDropZone","GridVisualizerAppender","boxShadow","useGridVisualizerDropZone","getBlockAttributes","getBlockRootClientId","canInsertBlockType","getBlockName","updateBlockAttributes","moveBlocksToPosition","__unstableMarkNextChangeAsNotPersistent","getNumberOfBlocksBeforeCell","useDropZoneWithValidation","validateDrag","srcClientId","blockName","attributes","isInBounds","containsRect","onDragEnter","onDragLeave","prevHighlightedRect","onDrop","rootClientId","onSelect","block","getDraggedBlockClientIds"],"sources":["@wordpress/block-editor/src/components/grid/grid-visualizer.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, forwardRef, useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalUseDropZone as useDropZone } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport BlockPopoverCover from '../block-popover/cover';\nimport { range, GridRect, getGridInfo } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport { useGetNumberOfBlocksBeforeCell } from './use-get-number-of-blocks-before-cell';\nimport ButtonBlockAppender from '../button-block-appender';\nimport { unlock } from '../../lock-unlock';\n\nexport function GridVisualizer( { clientId, contentRef, parentLayout } ) {\n\tconst isDistractionFree = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().isDistractionFree,\n\t\t[]\n\t);\n\tconst gridElement = useBlockElement( clientId );\n\n\tif ( isDistractionFree || ! gridElement ) {\n\t\treturn null;\n\t}\n\n\tconst isManualGrid =\n\t\tparentLayout?.isManualPlacement &&\n\t\twindow.__experimentalEnableGridInteractivity;\n\treturn (\n\t\t<GridVisualizerGrid\n\t\t\tgridClientId={ clientId }\n\t\t\tgridElement={ gridElement }\n\t\t\tisManualGrid={ isManualGrid }\n\t\t\tref={ contentRef }\n\t\t/>\n\t);\n}\n\nconst GridVisualizerGrid = forwardRef(\n\t( { gridClientId, gridElement, isManualGrid }, ref ) => {\n\t\tconst [ gridInfo, setGridInfo ] = useState( () =>\n\t\t\tgetGridInfo( gridElement )\n\t\t);\n\t\tconst [ isDroppingAllowed, setIsDroppingAllowed ] = useState( false );\n\n\t\tuseEffect( () => {\n\t\t\tconst observers = [];\n\t\t\tfor ( const element of [ gridElement, ...gridElement.children ] ) {\n\t\t\t\tconst observer = new window.ResizeObserver( () => {\n\t\t\t\t\tsetGridInfo( getGridInfo( gridElement ) );\n\t\t\t\t} );\n\t\t\t\tobserver.observe( element );\n\t\t\t\tobservers.push( observer );\n\t\t\t}\n\n\t\t\tconst mutationObserver = new window.MutationObserver( () => {\n\t\t\t\tsetGridInfo( getGridInfo( gridElement ) );\n\t\t\t} );\n\t\t\tmutationObserver.observe( gridElement, {\n\t\t\t\tattributeFilter: [ 'style', 'class' ],\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t} );\n\t\t\tobservers.push( mutationObserver );\n\n\t\t\treturn () => {\n\t\t\t\tfor ( const observer of observers ) {\n\t\t\t\t\tobserver.disconnect();\n\t\t\t\t}\n\t\t\t};\n\t\t}, [ gridElement ] );\n\n\t\tuseEffect( () => {\n\t\t\tfunction onGlobalDrag() {\n\t\t\t\tsetIsDroppingAllowed( true );\n\t\t\t}\n\t\t\tfunction onGlobalDragEnd() {\n\t\t\t\tsetIsDroppingAllowed( false );\n\t\t\t}\n\t\t\tdocument.addEventListener( 'drag', onGlobalDrag );\n\t\t\tdocument.addEventListener( 'dragend', onGlobalDragEnd );\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener( 'drag', onGlobalDrag );\n\t\t\t\tdocument.removeEventListener( 'dragend', onGlobalDragEnd );\n\t\t\t};\n\t\t}, [] );\n\n\t\treturn (\n\t\t\t<BlockPopoverCover\n\t\t\t\tclassName={ clsx( 'block-editor-grid-visualizer', {\n\t\t\t\t\t'is-dropping-allowed': isDroppingAllowed,\n\t\t\t\t} ) }\n\t\t\t\tclientId={ gridClientId }\n\t\t\t\t__unstablePopoverSlot=\"__unstable-block-tools-after\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tclassName=\"block-editor-grid-visualizer__grid\"\n\t\t\t\t\tstyle={ gridInfo.style }\n\t\t\t\t>\n\t\t\t\t\t{ isManualGrid ? (\n\t\t\t\t\t\t<ManualGridVisualizer\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tArray.from( { length: gridInfo.numItems }, ( _, i ) => (\n\t\t\t\t\t\t\t<GridVisualizerCell\n\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\tcolor={ gridInfo.currentColor }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) )\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</BlockPopoverCover>\n\t\t);\n\t}\n);\n\nfunction ManualGridVisualizer( { gridClientId, gridInfo } ) {\n\tconst [ highlightedRect, setHighlightedRect ] = useState( null );\n\n\tconst gridItemStyles = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder, getBlockStyles } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\tconst blockOrder = getBlockOrder( gridClientId );\n\t\t\treturn getBlockStyles( blockOrder );\n\t\t},\n\t\t[ gridClientId ]\n\t);\n\tconst occupiedRects = useMemo( () => {\n\t\tconst rects = [];\n\t\tfor ( const style of Object.values( gridItemStyles ) ) {\n\t\t\tconst {\n\t\t\t\tcolumnStart,\n\t\t\t\trowStart,\n\t\t\t\tcolumnSpan = 1,\n\t\t\t\trowSpan = 1,\n\t\t\t} = style?.layout ?? {};\n\t\t\tif ( ! columnStart || ! rowStart ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\trects.push(\n\t\t\t\tnew GridRect( {\n\t\t\t\t\tcolumnStart,\n\t\t\t\t\trowStart,\n\t\t\t\t\tcolumnSpan,\n\t\t\t\t\trowSpan,\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\t\treturn rects;\n\t}, [ gridItemStyles ] );\n\n\treturn range( 1, gridInfo.numRows ).map( ( row ) =>\n\t\trange( 1, gridInfo.numColumns ).map( ( column ) => {\n\t\t\tconst isCellOccupied = occupiedRects.some( ( rect ) =>\n\t\t\t\trect.contains( column, row )\n\t\t\t);\n\t\t\tconst isHighlighted =\n\t\t\t\thighlightedRect?.contains( column, row ) ?? false;\n\t\t\treturn (\n\t\t\t\t<GridVisualizerCell\n\t\t\t\t\tkey={ `${ row }-${ column }` }\n\t\t\t\t\tcolor={ gridInfo.currentColor }\n\t\t\t\t\tclassName={ isHighlighted && 'is-highlighted' }\n\t\t\t\t>\n\t\t\t\t\t{ isCellOccupied ? (\n\t\t\t\t\t\t<GridVisualizerDropZone\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\trow={ row }\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t\tsetHighlightedRect={ setHighlightedRect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<GridVisualizerAppender\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\trow={ row }\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t\tsetHighlightedRect={ setHighlightedRect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</GridVisualizerCell>\n\t\t\t);\n\t\t} )\n\t);\n}\n\nfunction GridVisualizerCell( { color, children, className } ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-grid-visualizer__cell',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\tstyle={ {\n\t\t\t\tboxShadow: `inset 0 0 0 1px color-mix(in srgb, ${ color } 20%, #0000)`,\n\t\t\t\tcolor,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction useGridVisualizerDropZone(\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect\n) {\n\tconst {\n\t\tgetBlockAttributes,\n\t\tgetBlockRootClientId,\n\t\tcanInsertBlockType,\n\t\tgetBlockName,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tmoveBlocksToPosition,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tgridInfo.numColumns\n\t);\n\n\treturn useDropZoneWithValidation( {\n\t\tvalidateDrag( srcClientId ) {\n\t\t\tconst blockName = getBlockName( srcClientId );\n\t\t\tif ( ! canInsertBlockType( blockName, gridClientId ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tconst rect = new GridRect( {\n\t\t\t\tcolumnStart: column,\n\t\t\t\trowStart: row,\n\t\t\t\tcolumnSpan: attributes.style?.layout?.columnSpan,\n\t\t\t\trowSpan: attributes.style?.layout?.rowSpan,\n\t\t\t} );\n\t\t\tconst isInBounds = new GridRect( {\n\t\t\t\tcolumnSpan: gridInfo.numColumns,\n\t\t\t\trowSpan: gridInfo.numRows,\n\t\t\t} ).containsRect( rect );\n\t\t\treturn isInBounds;\n\t\t},\n\t\tonDragEnter( srcClientId ) {\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tsetHighlightedRect(\n\t\t\t\tnew GridRect( {\n\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\trowStart: row,\n\t\t\t\t\tcolumnSpan: attributes.style?.layout?.columnSpan,\n\t\t\t\t\trowSpan: attributes.style?.layout?.rowSpan,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tonDragLeave() {\n\t\t\t// onDragEnter can be called before onDragLeave if the user moves\n\t\t\t// their mouse quickly, so only clear the highlight if it was set\n\t\t\t// by this cell.\n\t\t\tsetHighlightedRect( ( prevHighlightedRect ) =>\n\t\t\t\tprevHighlightedRect?.columnStart === column &&\n\t\t\t\tprevHighlightedRect?.rowStart === row\n\t\t\t\t\t? null\n\t\t\t\t\t: prevHighlightedRect\n\t\t\t);\n\t\t},\n\t\tonDrop( srcClientId ) {\n\t\t\tsetHighlightedRect( null );\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tupdateBlockAttributes( srcClientId, {\n\t\t\t\tstyle: {\n\t\t\t\t\t...attributes.style,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...attributes.style?.layout,\n\t\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\t\trowStart: row,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} );\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tmoveBlocksToPosition(\n\t\t\t\t[ srcClientId ],\n\t\t\t\tgetBlockRootClientId( srcClientId ),\n\t\t\t\tgridClientId,\n\t\t\t\tgetNumberOfBlocksBeforeCell( column, row )\n\t\t\t);\n\t\t},\n\t} );\n}\n\nfunction GridVisualizerDropZone( {\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect,\n} ) {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-grid-visualizer__drop-zone\"\n\t\t\tref={ useGridVisualizerDropZone(\n\t\t\t\tcolumn,\n\t\t\t\trow,\n\t\t\t\tgridClientId,\n\t\t\t\tgridInfo,\n\t\t\t\tsetHighlightedRect\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction GridVisualizerAppender( {\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect,\n} ) {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tmoveBlocksToPosition,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tgridInfo.numColumns\n\t);\n\n\treturn (\n\t\t<ButtonBlockAppender\n\t\t\trootClientId={ gridClientId }\n\t\t\tclassName=\"block-editor-grid-visualizer__appender\"\n\t\t\tref={ useGridVisualizerDropZone(\n\t\t\t\tcolumn,\n\t\t\t\trow,\n\t\t\t\tgridClientId,\n\t\t\t\tgridInfo,\n\t\t\t\tsetHighlightedRect\n\t\t\t) }\n\t\t\tstyle={ {\n\t\t\t\tcolor: gridInfo.currentColor,\n\t\t\t} }\n\t\t\tonSelect={ ( block ) => {\n\t\t\t\tif ( ! block ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\t\t\trowStart: row,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t[ block.clientId ],\n\t\t\t\t\tgridClientId,\n\t\t\t\t\tgridClientId,\n\t\t\t\t\tgetNumberOfBlocksBeforeCell( column, row )\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction useDropZoneWithValidation( {\n\tvalidateDrag,\n\tonDragEnter,\n\tonDragLeave,\n\tonDrop,\n} ) {\n\tconst { getDraggedBlockClientIds } = useSelect( blockEditorStore );\n\treturn useDropZone( {\n\t\tonDragEnter() {\n\t\t\tconst [ srcClientId ] = getDraggedBlockClientIds();\n\t\t\tif ( srcClientId && validateDrag( srcClientId ) ) {\n\t\t\t\tonDragEnter( srcClientId );\n\t\t\t}\n\t\t},\n\t\tonDragLeave() {\n\t\t\tonDragLeave();\n\t\t},\n\t\tonDrop() {\n\t\t\tconst [ srcClientId ] = getDraggedBlockClientIds();\n\t\t\tif ( srcClientId && validateDrag( srcClientId ) ) {\n\t\t\t\tonDrop( srcClientId );\n\t\t\t}\n\t\t},\n\t} );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useState","useEffect","forwardRef","useMemo","useSelect","useDispatch","__experimentalUseDropZone","useDropZone","useBlockElement","BlockPopoverCover","range","GridRect","getGridInfo","store","blockEditorStore","useGetNumberOfBlocksBeforeCell","ButtonBlockAppender","unlock","jsx","_jsx","GridVisualizer","clientId","contentRef","parentLayout","isDistractionFree","select","getSettings","gridElement","isManualGrid","isManualPlacement","window","__experimentalEnableGridInteractivity","GridVisualizerGrid","gridClientId","ref","gridInfo","setGridInfo","isDroppingAllowed","setIsDroppingAllowed","resizeCallback","borderBoxSpy","ResizeObserver","observe","box","contentBoxSpy","disconnect","onGlobalDrag","onGlobalDragEnd","document","addEventListener","removeEventListener","className","__unstablePopoverSlot","children","style","ManualGridVisualizer","Array","from","length","numItems","_","i","GridVisualizerCell","color","currentColor","highlightedRect","setHighlightedRect","gridItemStyles","getBlockOrder","getBlockStyles","blockOrder","occupiedRects","rects","Object","values","_style$layout","columnStart","rowStart","columnSpan","rowSpan","layout","push","numRows","map","row","numColumns","column","_highlightedRect$cont","isCellOccupied","some","rect","contains","isHighlighted","GridVisualizerDropZone","GridVisualizerAppender","boxShadow","useGridVisualizerDropZone","getBlockAttributes","getBlockRootClientId","canInsertBlockType","getBlockName","updateBlockAttributes","moveBlocksToPosition","__unstableMarkNextChangeAsNotPersistent","getNumberOfBlocksBeforeCell","useDropZoneWithValidation","validateDrag","srcClientId","blockName","attributes","isInBounds","containsRect","onDragEnter","onDragLeave","prevHighlightedRect","onDrop","rootClientId","onSelect","block","getDraggedBlockClientIds"],"sources":["@wordpress/block-editor/src/components/grid/grid-visualizer.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useState, useEffect, forwardRef, useMemo } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { __experimentalUseDropZone as useDropZone } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { useBlockElement } from '../block-list/use-block-props/use-block-refs';\nimport BlockPopoverCover from '../block-popover/cover';\nimport { range, GridRect, getGridInfo } from './utils';\nimport { store as blockEditorStore } from '../../store';\nimport { useGetNumberOfBlocksBeforeCell } from './use-get-number-of-blocks-before-cell';\nimport ButtonBlockAppender from '../button-block-appender';\nimport { unlock } from '../../lock-unlock';\n\nexport function GridVisualizer( { clientId, contentRef, parentLayout } ) {\n\tconst isDistractionFree = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().isDistractionFree,\n\t\t[]\n\t);\n\tconst gridElement = useBlockElement( clientId );\n\n\tif ( isDistractionFree || ! gridElement ) {\n\t\treturn null;\n\t}\n\n\tconst isManualGrid =\n\t\tparentLayout?.isManualPlacement &&\n\t\twindow.__experimentalEnableGridInteractivity;\n\treturn (\n\t\t<GridVisualizerGrid\n\t\t\tgridClientId={ clientId }\n\t\t\tgridElement={ gridElement }\n\t\t\tisManualGrid={ isManualGrid }\n\t\t\tref={ contentRef }\n\t\t/>\n\t);\n}\n\nconst GridVisualizerGrid = forwardRef(\n\t( { gridClientId, gridElement, isManualGrid }, ref ) => {\n\t\tconst [ gridInfo, setGridInfo ] = useState( () =>\n\t\t\tgetGridInfo( gridElement )\n\t\t);\n\t\tconst [ isDroppingAllowed, setIsDroppingAllowed ] = useState( false );\n\n\t\tuseEffect( () => {\n\t\t\tconst resizeCallback = () =>\n\t\t\t\tsetGridInfo( getGridInfo( gridElement ) );\n\t\t\t// Both border-box and content-box are observed as they may change\n\t\t\t// independently. This requires two observers because a single one\n\t\t\t// can’t be made to monitor both on the same element.\n\t\t\tconst borderBoxSpy = new window.ResizeObserver( resizeCallback );\n\t\t\tborderBoxSpy.observe( gridElement, { box: 'border-box' } );\n\t\t\tconst contentBoxSpy = new window.ResizeObserver( resizeCallback );\n\t\t\tcontentBoxSpy.observe( gridElement );\n\t\t\treturn () => {\n\t\t\t\tborderBoxSpy.disconnect();\n\t\t\t\tcontentBoxSpy.disconnect();\n\t\t\t};\n\t\t}, [ gridElement ] );\n\n\t\tuseEffect( () => {\n\t\t\tfunction onGlobalDrag() {\n\t\t\t\tsetIsDroppingAllowed( true );\n\t\t\t}\n\t\t\tfunction onGlobalDragEnd() {\n\t\t\t\tsetIsDroppingAllowed( false );\n\t\t\t}\n\t\t\tdocument.addEventListener( 'drag', onGlobalDrag );\n\t\t\tdocument.addEventListener( 'dragend', onGlobalDragEnd );\n\t\t\treturn () => {\n\t\t\t\tdocument.removeEventListener( 'drag', onGlobalDrag );\n\t\t\t\tdocument.removeEventListener( 'dragend', onGlobalDragEnd );\n\t\t\t};\n\t\t}, [] );\n\n\t\treturn (\n\t\t\t<BlockPopoverCover\n\t\t\t\tclassName={ clsx( 'block-editor-grid-visualizer', {\n\t\t\t\t\t'is-dropping-allowed': isDroppingAllowed,\n\t\t\t\t} ) }\n\t\t\t\tclientId={ gridClientId }\n\t\t\t\t__unstablePopoverSlot=\"__unstable-block-tools-after\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tref={ ref }\n\t\t\t\t\tclassName=\"block-editor-grid-visualizer__grid\"\n\t\t\t\t\tstyle={ gridInfo.style }\n\t\t\t\t>\n\t\t\t\t\t{ isManualGrid ? (\n\t\t\t\t\t\t<ManualGridVisualizer\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\tArray.from( { length: gridInfo.numItems }, ( _, i ) => (\n\t\t\t\t\t\t\t<GridVisualizerCell\n\t\t\t\t\t\t\t\tkey={ i }\n\t\t\t\t\t\t\t\tcolor={ gridInfo.currentColor }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) )\n\t\t\t\t\t) }\n\t\t\t\t</div>\n\t\t\t</BlockPopoverCover>\n\t\t);\n\t}\n);\n\nfunction ManualGridVisualizer( { gridClientId, gridInfo } ) {\n\tconst [ highlightedRect, setHighlightedRect ] = useState( null );\n\n\tconst gridItemStyles = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getBlockOrder, getBlockStyles } = unlock(\n\t\t\t\tselect( blockEditorStore )\n\t\t\t);\n\t\t\tconst blockOrder = getBlockOrder( gridClientId );\n\t\t\treturn getBlockStyles( blockOrder );\n\t\t},\n\t\t[ gridClientId ]\n\t);\n\tconst occupiedRects = useMemo( () => {\n\t\tconst rects = [];\n\t\tfor ( const style of Object.values( gridItemStyles ) ) {\n\t\t\tconst {\n\t\t\t\tcolumnStart,\n\t\t\t\trowStart,\n\t\t\t\tcolumnSpan = 1,\n\t\t\t\trowSpan = 1,\n\t\t\t} = style?.layout ?? {};\n\t\t\tif ( ! columnStart || ! rowStart ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\trects.push(\n\t\t\t\tnew GridRect( {\n\t\t\t\t\tcolumnStart,\n\t\t\t\t\trowStart,\n\t\t\t\t\tcolumnSpan,\n\t\t\t\t\trowSpan,\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\t\treturn rects;\n\t}, [ gridItemStyles ] );\n\n\treturn range( 1, gridInfo.numRows ).map( ( row ) =>\n\t\trange( 1, gridInfo.numColumns ).map( ( column ) => {\n\t\t\tconst isCellOccupied = occupiedRects.some( ( rect ) =>\n\t\t\t\trect.contains( column, row )\n\t\t\t);\n\t\t\tconst isHighlighted =\n\t\t\t\thighlightedRect?.contains( column, row ) ?? false;\n\t\t\treturn (\n\t\t\t\t<GridVisualizerCell\n\t\t\t\t\tkey={ `${ row }-${ column }` }\n\t\t\t\t\tcolor={ gridInfo.currentColor }\n\t\t\t\t\tclassName={ isHighlighted && 'is-highlighted' }\n\t\t\t\t>\n\t\t\t\t\t{ isCellOccupied ? (\n\t\t\t\t\t\t<GridVisualizerDropZone\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\trow={ row }\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t\tsetHighlightedRect={ setHighlightedRect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<GridVisualizerAppender\n\t\t\t\t\t\t\tcolumn={ column }\n\t\t\t\t\t\t\trow={ row }\n\t\t\t\t\t\t\tgridClientId={ gridClientId }\n\t\t\t\t\t\t\tgridInfo={ gridInfo }\n\t\t\t\t\t\t\tsetHighlightedRect={ setHighlightedRect }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</GridVisualizerCell>\n\t\t\t);\n\t\t} )\n\t);\n}\n\nfunction GridVisualizerCell( { color, children, className } ) {\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx(\n\t\t\t\t'block-editor-grid-visualizer__cell',\n\t\t\t\tclassName\n\t\t\t) }\n\t\t\tstyle={ {\n\t\t\t\tboxShadow: `inset 0 0 0 1px color-mix(in srgb, ${ color } 20%, #0000)`,\n\t\t\t\tcolor,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</div>\n\t);\n}\n\nfunction useGridVisualizerDropZone(\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect\n) {\n\tconst {\n\t\tgetBlockAttributes,\n\t\tgetBlockRootClientId,\n\t\tcanInsertBlockType,\n\t\tgetBlockName,\n\t} = useSelect( blockEditorStore );\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tmoveBlocksToPosition,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tgridInfo.numColumns\n\t);\n\n\treturn useDropZoneWithValidation( {\n\t\tvalidateDrag( srcClientId ) {\n\t\t\tconst blockName = getBlockName( srcClientId );\n\t\t\tif ( ! canInsertBlockType( blockName, gridClientId ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tconst rect = new GridRect( {\n\t\t\t\tcolumnStart: column,\n\t\t\t\trowStart: row,\n\t\t\t\tcolumnSpan: attributes.style?.layout?.columnSpan,\n\t\t\t\trowSpan: attributes.style?.layout?.rowSpan,\n\t\t\t} );\n\t\t\tconst isInBounds = new GridRect( {\n\t\t\t\tcolumnSpan: gridInfo.numColumns,\n\t\t\t\trowSpan: gridInfo.numRows,\n\t\t\t} ).containsRect( rect );\n\t\t\treturn isInBounds;\n\t\t},\n\t\tonDragEnter( srcClientId ) {\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tsetHighlightedRect(\n\t\t\t\tnew GridRect( {\n\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\trowStart: row,\n\t\t\t\t\tcolumnSpan: attributes.style?.layout?.columnSpan,\n\t\t\t\t\trowSpan: attributes.style?.layout?.rowSpan,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tonDragLeave() {\n\t\t\t// onDragEnter can be called before onDragLeave if the user moves\n\t\t\t// their mouse quickly, so only clear the highlight if it was set\n\t\t\t// by this cell.\n\t\t\tsetHighlightedRect( ( prevHighlightedRect ) =>\n\t\t\t\tprevHighlightedRect?.columnStart === column &&\n\t\t\t\tprevHighlightedRect?.rowStart === row\n\t\t\t\t\t? null\n\t\t\t\t\t: prevHighlightedRect\n\t\t\t);\n\t\t},\n\t\tonDrop( srcClientId ) {\n\t\t\tsetHighlightedRect( null );\n\t\t\tconst attributes = getBlockAttributes( srcClientId );\n\t\t\tupdateBlockAttributes( srcClientId, {\n\t\t\t\tstyle: {\n\t\t\t\t\t...attributes.style,\n\t\t\t\t\tlayout: {\n\t\t\t\t\t\t...attributes.style?.layout,\n\t\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\t\trowStart: row,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} );\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tmoveBlocksToPosition(\n\t\t\t\t[ srcClientId ],\n\t\t\t\tgetBlockRootClientId( srcClientId ),\n\t\t\t\tgridClientId,\n\t\t\t\tgetNumberOfBlocksBeforeCell( column, row )\n\t\t\t);\n\t\t},\n\t} );\n}\n\nfunction GridVisualizerDropZone( {\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect,\n} ) {\n\treturn (\n\t\t<div\n\t\t\tclassName=\"block-editor-grid-visualizer__drop-zone\"\n\t\t\tref={ useGridVisualizerDropZone(\n\t\t\t\tcolumn,\n\t\t\t\trow,\n\t\t\t\tgridClientId,\n\t\t\t\tgridInfo,\n\t\t\t\tsetHighlightedRect\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nfunction GridVisualizerAppender( {\n\tcolumn,\n\trow,\n\tgridClientId,\n\tgridInfo,\n\tsetHighlightedRect,\n} ) {\n\tconst {\n\t\tupdateBlockAttributes,\n\t\tmoveBlocksToPosition,\n\t\t__unstableMarkNextChangeAsNotPersistent,\n\t} = useDispatch( blockEditorStore );\n\n\tconst getNumberOfBlocksBeforeCell = useGetNumberOfBlocksBeforeCell(\n\t\tgridClientId,\n\t\tgridInfo.numColumns\n\t);\n\n\treturn (\n\t\t<ButtonBlockAppender\n\t\t\trootClientId={ gridClientId }\n\t\t\tclassName=\"block-editor-grid-visualizer__appender\"\n\t\t\tref={ useGridVisualizerDropZone(\n\t\t\t\tcolumn,\n\t\t\t\trow,\n\t\t\t\tgridClientId,\n\t\t\t\tgridInfo,\n\t\t\t\tsetHighlightedRect\n\t\t\t) }\n\t\t\tstyle={ {\n\t\t\t\tcolor: gridInfo.currentColor,\n\t\t\t} }\n\t\t\tonSelect={ ( block ) => {\n\t\t\t\tif ( ! block ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tupdateBlockAttributes( block.clientId, {\n\t\t\t\t\tstyle: {\n\t\t\t\t\t\tlayout: {\n\t\t\t\t\t\t\tcolumnStart: column,\n\t\t\t\t\t\t\trowStart: row,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\t\tmoveBlocksToPosition(\n\t\t\t\t\t[ block.clientId ],\n\t\t\t\t\tgridClientId,\n\t\t\t\t\tgridClientId,\n\t\t\t\t\tgetNumberOfBlocksBeforeCell( column, row )\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nfunction useDropZoneWithValidation( {\n\tvalidateDrag,\n\tonDragEnter,\n\tonDragLeave,\n\tonDrop,\n} ) {\n\tconst { getDraggedBlockClientIds } = useSelect( blockEditorStore );\n\treturn useDropZone( {\n\t\tonDragEnter() {\n\t\t\tconst [ srcClientId ] = getDraggedBlockClientIds();\n\t\t\tif ( srcClientId && validateDrag( srcClientId ) ) {\n\t\t\t\tonDragEnter( srcClientId );\n\t\t\t}\n\t\t},\n\t\tonDragLeave() {\n\t\t\tonDragLeave();\n\t\t},\n\t\tonDrop() {\n\t\t\tconst [ srcClientId ] = getDraggedBlockClientIds();\n\t\t\tif ( srcClientId && validateDrag( srcClientId ) ) {\n\t\t\t\tonDrop( srcClientId );\n\t\t\t}\n\t\t},\n\t} );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -133,10 +133,12 @@ export function getGridInfo(gridElement) {
133
133
  gridTemplateColumns,
134
134
  gridTemplateRows,
135
135
  gap: getComputedCSS(gridElement, 'gap'),
136
- paddingTop: `calc(${paddingTop} + ${borderTopWidth})`,
137
- paddingRight: `calc(${paddingRight} + ${borderRightWidth})`,
138
- paddingBottom: `calc(${paddingBottom} + ${borderBottomWidth})`,
139
- paddingLeft: `calc(${paddingLeft} + ${borderLeftWidth})`
136
+ inset: `
137
+ calc(${paddingTop} + ${borderTopWidth})
138
+ calc(${paddingRight} + ${borderRightWidth})
139
+ calc(${paddingBottom} + ${borderBottomWidth})
140
+ calc(${paddingLeft} + ${borderLeftWidth})
141
+ `
140
142
  }
141
143
  };
142
144
  }
@@ -1 +1 @@
1
- {"version":3,"names":["range","start","length","Array","from","_","i","GridRect","constructor","columnStart","rowStart","columnEnd","rowEnd","columnSpan","rowSpan","undefined","contains","column","row","containsRect","rect","intersectsRect","getComputedCSS","element","property","ownerDocument","defaultView","getComputedStyle","getPropertyValue","getGridTracks","template","gap","tracks","size","split","previousTrack","end","parseFloat","push","getClosestTrack","position","edge","reduce","closest","track","index","Math","abs","getGridRect","gridElement","columnGap","rowGap","gridColumnTracks","gridRowTracks","left","top","right","bottom","getGridItemRect","gridItemElement","parentElement","window","DOMRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getGridInfo","gridTemplateColumns","gridTemplateRows","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","numColumns","numRows","numItems","currentColor","style"],"sources":["@wordpress/block-editor/src/components/grid/utils.js"],"sourcesContent":["export function range( start, length ) {\n\treturn Array.from( { length }, ( _, i ) => start + i );\n}\n\nexport class GridRect {\n\tconstructor( {\n\t\tcolumnStart,\n\t\trowStart,\n\t\tcolumnEnd,\n\t\trowEnd,\n\t\tcolumnSpan,\n\t\trowSpan,\n\t} = {} ) {\n\t\tthis.columnStart = columnStart ?? 1;\n\t\tthis.rowStart = rowStart ?? 1;\n\t\tif ( columnSpan !== undefined ) {\n\t\t\tthis.columnEnd = this.columnStart + columnSpan - 1;\n\t\t} else {\n\t\t\tthis.columnEnd = columnEnd ?? this.columnStart;\n\t\t}\n\t\tif ( rowSpan !== undefined ) {\n\t\t\tthis.rowEnd = this.rowStart + rowSpan - 1;\n\t\t} else {\n\t\t\tthis.rowEnd = rowEnd ?? this.rowStart;\n\t\t}\n\t}\n\n\tget columnSpan() {\n\t\treturn this.columnEnd - this.columnStart + 1;\n\t}\n\n\tget rowSpan() {\n\t\treturn this.rowEnd - this.rowStart + 1;\n\t}\n\n\tcontains( column, row ) {\n\t\treturn (\n\t\t\tcolumn >= this.columnStart &&\n\t\t\tcolumn <= this.columnEnd &&\n\t\t\trow >= this.rowStart &&\n\t\t\trow <= this.rowEnd\n\t\t);\n\t}\n\n\tcontainsRect( rect ) {\n\t\treturn (\n\t\t\tthis.contains( rect.columnStart, rect.rowStart ) &&\n\t\t\tthis.contains( rect.columnEnd, rect.rowEnd )\n\t\t);\n\t}\n\n\tintersectsRect( rect ) {\n\t\treturn (\n\t\t\tthis.columnStart <= rect.columnEnd &&\n\t\t\tthis.columnEnd >= rect.columnStart &&\n\t\t\tthis.rowStart <= rect.rowEnd &&\n\t\t\tthis.rowEnd >= rect.rowStart\n\t\t);\n\t}\n}\n\nexport function getComputedCSS( element, property ) {\n\treturn element.ownerDocument.defaultView\n\t\t.getComputedStyle( element )\n\t\t.getPropertyValue( property );\n}\n\n/**\n * Given a grid-template-columns or grid-template-rows CSS property value, gets the start and end\n * position in pixels of each grid track.\n *\n * https://css-tricks.com/snippets/css/complete-guide-grid/#aa-grid-track\n *\n * @param {string} template The grid-template-columns or grid-template-rows CSS property value.\n * Only supports fixed sizes in pixels.\n * @param {number} gap The gap between grid tracks in pixels.\n *\n * @return {Array<{start: number, end: number}>} An array of objects with the start and end\n * position in pixels of each grid track.\n */\nexport function getGridTracks( template, gap ) {\n\tconst tracks = [];\n\tfor ( const size of template.split( ' ' ) ) {\n\t\tconst previousTrack = tracks[ tracks.length - 1 ];\n\t\tconst start = previousTrack ? previousTrack.end + gap : 0;\n\t\tconst end = start + parseFloat( size );\n\t\ttracks.push( { start, end } );\n\t}\n\treturn tracks;\n}\n\n/**\n * Given an array of grid tracks and a position in pixels, gets the index of the closest track to\n * that position.\n *\n * https://css-tricks.com/snippets/css/complete-guide-grid/#aa-grid-track\n *\n * @param {Array<{start: number, end: number}>} tracks An array of objects with the start and end\n * position in pixels of each grid track.\n * @param {number} position The position in pixels.\n * @param {string} edge The edge of the track to compare the\n * position to. Either 'start' or 'end'.\n *\n * @return {number} The index of the closest track to the position. 0-based, unlike CSS grid which\n * is 1-based.\n */\nexport function getClosestTrack( tracks, position, edge = 'start' ) {\n\treturn tracks.reduce(\n\t\t( closest, track, index ) =>\n\t\t\tMath.abs( track[ edge ] - position ) <\n\t\t\tMath.abs( tracks[ closest ][ edge ] - position )\n\t\t\t\t? index\n\t\t\t\t: closest,\n\t\t0\n\t);\n}\n\nexport function getGridRect( gridElement, rect ) {\n\tconst columnGap = parseFloat( getComputedCSS( gridElement, 'column-gap' ) );\n\tconst rowGap = parseFloat( getComputedCSS( gridElement, 'row-gap' ) );\n\tconst gridColumnTracks = getGridTracks(\n\t\tgetComputedCSS( gridElement, 'grid-template-columns' ),\n\t\tcolumnGap\n\t);\n\tconst gridRowTracks = getGridTracks(\n\t\tgetComputedCSS( gridElement, 'grid-template-rows' ),\n\t\trowGap\n\t);\n\tconst columnStart = getClosestTrack( gridColumnTracks, rect.left ) + 1;\n\tconst rowStart = getClosestTrack( gridRowTracks, rect.top ) + 1;\n\tconst columnEnd =\n\t\tgetClosestTrack( gridColumnTracks, rect.right, 'end' ) + 1;\n\tconst rowEnd = getClosestTrack( gridRowTracks, rect.bottom, 'end' ) + 1;\n\treturn new GridRect( {\n\t\tcolumnStart,\n\t\tcolumnEnd,\n\t\trowStart,\n\t\trowEnd,\n\t} );\n}\n\nexport function getGridItemRect( gridItemElement ) {\n\treturn getGridRect(\n\t\tgridItemElement.parentElement,\n\t\tnew window.DOMRect(\n\t\t\tgridItemElement.offsetLeft,\n\t\t\tgridItemElement.offsetTop,\n\t\t\tgridItemElement.offsetWidth,\n\t\t\tgridItemElement.offsetHeight\n\t\t)\n\t);\n}\n\nexport function getGridInfo( gridElement ) {\n\tconst gridTemplateColumns = getComputedCSS(\n\t\tgridElement,\n\t\t'grid-template-columns'\n\t);\n\tconst gridTemplateRows = getComputedCSS(\n\t\tgridElement,\n\t\t'grid-template-rows'\n\t);\n\tconst borderTopWidth = getComputedCSS( gridElement, 'border-top-width' );\n\tconst borderRightWidth = getComputedCSS(\n\t\tgridElement,\n\t\t'border-right-width'\n\t);\n\tconst borderBottomWidth = getComputedCSS(\n\t\tgridElement,\n\t\t'border-bottom-width'\n\t);\n\tconst borderLeftWidth = getComputedCSS( gridElement, 'border-left-width' );\n\tconst paddingTop = getComputedCSS( gridElement, 'padding-top' );\n\tconst paddingRight = getComputedCSS( gridElement, 'padding-right' );\n\tconst paddingBottom = getComputedCSS( gridElement, 'padding-bottom' );\n\tconst paddingLeft = getComputedCSS( gridElement, 'padding-left' );\n\n\tconst numColumns = gridTemplateColumns.split( ' ' ).length;\n\tconst numRows = gridTemplateRows.split( ' ' ).length;\n\tconst numItems = numColumns * numRows;\n\treturn {\n\t\tnumColumns,\n\t\tnumRows,\n\t\tnumItems,\n\t\tcurrentColor: getComputedCSS( gridElement, 'color' ),\n\t\tstyle: {\n\t\t\tgridTemplateColumns,\n\t\t\tgridTemplateRows,\n\t\t\tgap: getComputedCSS( gridElement, 'gap' ),\n\t\t\tpaddingTop: `calc(${ paddingTop } + ${ borderTopWidth })`,\n\t\t\tpaddingRight: `calc(${ paddingRight } + ${ borderRightWidth })`,\n\t\t\tpaddingBottom: `calc(${ paddingBottom } + ${ borderBottomWidth })`,\n\t\t\tpaddingLeft: `calc(${ paddingLeft } + ${ borderLeftWidth })`,\n\t\t},\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["range","start","length","Array","from","_","i","GridRect","constructor","columnStart","rowStart","columnEnd","rowEnd","columnSpan","rowSpan","undefined","contains","column","row","containsRect","rect","intersectsRect","getComputedCSS","element","property","ownerDocument","defaultView","getComputedStyle","getPropertyValue","getGridTracks","template","gap","tracks","size","split","previousTrack","end","parseFloat","push","getClosestTrack","position","edge","reduce","closest","track","index","Math","abs","getGridRect","gridElement","columnGap","rowGap","gridColumnTracks","gridRowTracks","left","top","right","bottom","getGridItemRect","gridItemElement","parentElement","window","DOMRect","offsetLeft","offsetTop","offsetWidth","offsetHeight","getGridInfo","gridTemplateColumns","gridTemplateRows","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","paddingTop","paddingRight","paddingBottom","paddingLeft","numColumns","numRows","numItems","currentColor","style","inset"],"sources":["@wordpress/block-editor/src/components/grid/utils.js"],"sourcesContent":["export function range( start, length ) {\n\treturn Array.from( { length }, ( _, i ) => start + i );\n}\n\nexport class GridRect {\n\tconstructor( {\n\t\tcolumnStart,\n\t\trowStart,\n\t\tcolumnEnd,\n\t\trowEnd,\n\t\tcolumnSpan,\n\t\trowSpan,\n\t} = {} ) {\n\t\tthis.columnStart = columnStart ?? 1;\n\t\tthis.rowStart = rowStart ?? 1;\n\t\tif ( columnSpan !== undefined ) {\n\t\t\tthis.columnEnd = this.columnStart + columnSpan - 1;\n\t\t} else {\n\t\t\tthis.columnEnd = columnEnd ?? this.columnStart;\n\t\t}\n\t\tif ( rowSpan !== undefined ) {\n\t\t\tthis.rowEnd = this.rowStart + rowSpan - 1;\n\t\t} else {\n\t\t\tthis.rowEnd = rowEnd ?? this.rowStart;\n\t\t}\n\t}\n\n\tget columnSpan() {\n\t\treturn this.columnEnd - this.columnStart + 1;\n\t}\n\n\tget rowSpan() {\n\t\treturn this.rowEnd - this.rowStart + 1;\n\t}\n\n\tcontains( column, row ) {\n\t\treturn (\n\t\t\tcolumn >= this.columnStart &&\n\t\t\tcolumn <= this.columnEnd &&\n\t\t\trow >= this.rowStart &&\n\t\t\trow <= this.rowEnd\n\t\t);\n\t}\n\n\tcontainsRect( rect ) {\n\t\treturn (\n\t\t\tthis.contains( rect.columnStart, rect.rowStart ) &&\n\t\t\tthis.contains( rect.columnEnd, rect.rowEnd )\n\t\t);\n\t}\n\n\tintersectsRect( rect ) {\n\t\treturn (\n\t\t\tthis.columnStart <= rect.columnEnd &&\n\t\t\tthis.columnEnd >= rect.columnStart &&\n\t\t\tthis.rowStart <= rect.rowEnd &&\n\t\t\tthis.rowEnd >= rect.rowStart\n\t\t);\n\t}\n}\n\nexport function getComputedCSS( element, property ) {\n\treturn element.ownerDocument.defaultView\n\t\t.getComputedStyle( element )\n\t\t.getPropertyValue( property );\n}\n\n/**\n * Given a grid-template-columns or grid-template-rows CSS property value, gets the start and end\n * position in pixels of each grid track.\n *\n * https://css-tricks.com/snippets/css/complete-guide-grid/#aa-grid-track\n *\n * @param {string} template The grid-template-columns or grid-template-rows CSS property value.\n * Only supports fixed sizes in pixels.\n * @param {number} gap The gap between grid tracks in pixels.\n *\n * @return {Array<{start: number, end: number}>} An array of objects with the start and end\n * position in pixels of each grid track.\n */\nexport function getGridTracks( template, gap ) {\n\tconst tracks = [];\n\tfor ( const size of template.split( ' ' ) ) {\n\t\tconst previousTrack = tracks[ tracks.length - 1 ];\n\t\tconst start = previousTrack ? previousTrack.end + gap : 0;\n\t\tconst end = start + parseFloat( size );\n\t\ttracks.push( { start, end } );\n\t}\n\treturn tracks;\n}\n\n/**\n * Given an array of grid tracks and a position in pixels, gets the index of the closest track to\n * that position.\n *\n * https://css-tricks.com/snippets/css/complete-guide-grid/#aa-grid-track\n *\n * @param {Array<{start: number, end: number}>} tracks An array of objects with the start and end\n * position in pixels of each grid track.\n * @param {number} position The position in pixels.\n * @param {string} edge The edge of the track to compare the\n * position to. Either 'start' or 'end'.\n *\n * @return {number} The index of the closest track to the position. 0-based, unlike CSS grid which\n * is 1-based.\n */\nexport function getClosestTrack( tracks, position, edge = 'start' ) {\n\treturn tracks.reduce(\n\t\t( closest, track, index ) =>\n\t\t\tMath.abs( track[ edge ] - position ) <\n\t\t\tMath.abs( tracks[ closest ][ edge ] - position )\n\t\t\t\t? index\n\t\t\t\t: closest,\n\t\t0\n\t);\n}\n\nexport function getGridRect( gridElement, rect ) {\n\tconst columnGap = parseFloat( getComputedCSS( gridElement, 'column-gap' ) );\n\tconst rowGap = parseFloat( getComputedCSS( gridElement, 'row-gap' ) );\n\tconst gridColumnTracks = getGridTracks(\n\t\tgetComputedCSS( gridElement, 'grid-template-columns' ),\n\t\tcolumnGap\n\t);\n\tconst gridRowTracks = getGridTracks(\n\t\tgetComputedCSS( gridElement, 'grid-template-rows' ),\n\t\trowGap\n\t);\n\tconst columnStart = getClosestTrack( gridColumnTracks, rect.left ) + 1;\n\tconst rowStart = getClosestTrack( gridRowTracks, rect.top ) + 1;\n\tconst columnEnd =\n\t\tgetClosestTrack( gridColumnTracks, rect.right, 'end' ) + 1;\n\tconst rowEnd = getClosestTrack( gridRowTracks, rect.bottom, 'end' ) + 1;\n\treturn new GridRect( {\n\t\tcolumnStart,\n\t\tcolumnEnd,\n\t\trowStart,\n\t\trowEnd,\n\t} );\n}\n\nexport function getGridItemRect( gridItemElement ) {\n\treturn getGridRect(\n\t\tgridItemElement.parentElement,\n\t\tnew window.DOMRect(\n\t\t\tgridItemElement.offsetLeft,\n\t\t\tgridItemElement.offsetTop,\n\t\t\tgridItemElement.offsetWidth,\n\t\t\tgridItemElement.offsetHeight\n\t\t)\n\t);\n}\n\nexport function getGridInfo( gridElement ) {\n\tconst gridTemplateColumns = getComputedCSS(\n\t\tgridElement,\n\t\t'grid-template-columns'\n\t);\n\tconst gridTemplateRows = getComputedCSS(\n\t\tgridElement,\n\t\t'grid-template-rows'\n\t);\n\tconst borderTopWidth = getComputedCSS( gridElement, 'border-top-width' );\n\tconst borderRightWidth = getComputedCSS(\n\t\tgridElement,\n\t\t'border-right-width'\n\t);\n\tconst borderBottomWidth = getComputedCSS(\n\t\tgridElement,\n\t\t'border-bottom-width'\n\t);\n\tconst borderLeftWidth = getComputedCSS( gridElement, 'border-left-width' );\n\tconst paddingTop = getComputedCSS( gridElement, 'padding-top' );\n\tconst paddingRight = getComputedCSS( gridElement, 'padding-right' );\n\tconst paddingBottom = getComputedCSS( gridElement, 'padding-bottom' );\n\tconst paddingLeft = getComputedCSS( gridElement, 'padding-left' );\n\n\tconst numColumns = gridTemplateColumns.split( ' ' ).length;\n\tconst numRows = gridTemplateRows.split( ' ' ).length;\n\tconst numItems = numColumns * numRows;\n\treturn {\n\t\tnumColumns,\n\t\tnumRows,\n\t\tnumItems,\n\t\tcurrentColor: getComputedCSS( gridElement, 'color' ),\n\t\tstyle: {\n\t\t\tgridTemplateColumns,\n\t\t\tgridTemplateRows,\n\t\t\tgap: getComputedCSS( gridElement, 'gap' ),\n\t\t\tinset: `\n\t\t\t\tcalc(${ paddingTop } + ${ borderTopWidth })\n\t\t\t\tcalc(${ paddingRight } + ${ borderRightWidth })\n\t\t\t\tcalc(${ paddingBottom } + ${ borderBottomWidth })\n\t\t\t\tcalc(${ paddingLeft } + ${ borderLeftWidth })\n\t\t\t`,\n\t\t},\n\t};\n}\n"],"mappings":"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","ignoreList":[]}
@@ -44,8 +44,19 @@ function InserterMenu({
44
44
  __experimentalInitialTab,
45
45
  __experimentalInitialCategory
46
46
  }, ref) {
47
- const isZoomOutMode = useSelect(select => unlock(select(blockEditorStore)).isZoomOut(), []);
48
- const hasSectionRootClientId = useSelect(select => !!unlock(select(blockEditorStore)).getSectionRootClientId(), []);
47
+ const {
48
+ isZoomOutMode,
49
+ hasSectionRootClientId
50
+ } = useSelect(select => {
51
+ const {
52
+ isZoomOut,
53
+ getSectionRootClientId
54
+ } = unlock(select(blockEditorStore));
55
+ return {
56
+ isZoomOutMode: isZoomOut(),
57
+ hasSectionRootClientId: !!getSectionRootClientId()
58
+ };
59
+ }, []);
49
60
  const [filterValue, setFilterValue, delayedFilterValue] = useDebouncedInput(__experimentalFilterValue);
50
61
  const [hoveredItem, setHoveredItem] = useState(null);
51
62
  const [selectedPatternCategory, setSelectedPatternCategory] = useState(__experimentalInitialCategory);
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","forwardRef","useState","useCallback","useMemo","useRef","useLayoutEffect","VisuallyHidden","SearchControl","Popover","__","useDebouncedInput","useViewportMatch","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTab","PatternCategoryPreviews","MediaTab","MediaCategoryPanel","InserterSearchResults","useInsertionPoint","store","blockEditorStore","TabbedSidebar","useZoomOut","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","NOOP","InserterMenu","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","onPatternCategorySelection","onClose","__experimentalInitialTab","__experimentalInitialCategory","ref","isZoomOutMode","select","isZoomOut","hasSectionRootClientId","getSectionRootClientId","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","patternFilter","setPatternFilter","selectedMediaCategory","setSelectedMediaCategory","isLargeViewport","getInitialTab","selectedTab","setSelectedTab","shouldUseZoomOut","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","blockTypesTabRef","onInsert","blocks","meta","shouldForceFocusBlock","_rootClientId","window","requestAnimationFrame","current","contains","ownerDocument","activeElement","querySelector","focus","onInsertPattern","patternName","args","onHover","item","onClickPatternCategory","patternCategory","filter","showPatternPanel","showMediaPanel","inserterSearch","children","__nextHasNoMarginBottom","className","onChange","value","label","placeholder","showBlockDirectory","prioritizePatterns","blocksTab","as","patternsTab","onSelectCategory","selectedCategory","category","showTitlesAsTooltip","mediaTab","handleSetSelectedTab","tabsRef","closeButtonLabel","tabs","name","title","panel","placement","offset","focusOnMount","animate","PrivateInserterMenu","PublicInserterMenu","props"],"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseRef,\n\tuseLayoutEffect,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl, Popover } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDebouncedInput, useViewportMatch } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Tips from './tips';\nimport InserterPreviewPanel from './preview-panel';\nimport BlockTypesTab from './block-types-tab';\nimport BlockPatternsTab from './block-patterns-tab';\nimport { PatternCategoryPreviews } from './block-patterns-tab/pattern-category-previews';\nimport { MediaTab, MediaCategoryPanel } from './media-tab';\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport { store as blockEditorStore } from '../../store';\nimport TabbedSidebar from '../tabbed-sidebar';\nimport { useZoomOut } from '../../hooks/use-zoom-out';\nimport { unlock } from '../../lock-unlock';\n\nconst NOOP = () => {};\nfunction InserterMenu(\n\t{\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\t__experimentalInsertionIndex,\n\t\tonSelect,\n\t\tshowInserterHelpPanel,\n\t\tshowMostUsedBlocks,\n\t\t__experimentalFilterValue = '',\n\t\tshouldFocusBlock = true,\n\t\tonPatternCategorySelection,\n\t\tonClose,\n\t\t__experimentalInitialTab,\n\t\t__experimentalInitialCategory,\n\t},\n\tref\n) {\n\tconst isZoomOutMode = useSelect(\n\t\t( select ) => unlock( select( blockEditorStore ) ).isZoomOut(),\n\t\t[]\n\t);\n\tconst hasSectionRootClientId = useSelect(\n\t\t( select ) =>\n\t\t\t!! unlock( select( blockEditorStore ) ).getSectionRootClientId(),\n\t\t[]\n\t);\n\tconst [ filterValue, setFilterValue, delayedFilterValue ] =\n\t\tuseDebouncedInput( __experimentalFilterValue );\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] = useState(\n\t\t__experimentalInitialCategory\n\t);\n\tconst [ patternFilter, setPatternFilter ] = useState( 'all' );\n\tconst [ selectedMediaCategory, setSelectedMediaCategory ] =\n\t\tuseState( null );\n\tconst isLargeViewport = useViewportMatch( 'large' );\n\n\tfunction getInitialTab() {\n\t\tif ( __experimentalInitialTab ) {\n\t\t\treturn __experimentalInitialTab;\n\t\t}\n\n\t\tif ( isZoomOutMode ) {\n\t\t\treturn 'patterns';\n\t\t}\n\n\t\treturn 'blocks';\n\t}\n\tconst [ selectedTab, setSelectedTab ] = useState( getInitialTab() );\n\n\tconst shouldUseZoomOut =\n\t\thasSectionRootClientId &&\n\t\t( selectedTab === 'patterns' || selectedTab === 'media' );\n\n\tuseZoomOut( shouldUseZoomOut && isLargeViewport );\n\n\tconst [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ] =\n\t\tuseInsertionPoint( {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\t\tshouldFocusBlock,\n\t\t} );\n\tconst blockTypesTabRef = useRef();\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock, _rootClientId ) => {\n\t\t\tonInsertBlocks(\n\t\t\t\tblocks,\n\t\t\t\tmeta,\n\t\t\t\tshouldForceFocusBlock,\n\t\t\t\t_rootClientId\n\t\t\t);\n\t\t\tonSelect( blocks );\n\n\t\t\t// Check for focus loss due to filtering blocks by selected block type\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\tif (\n\t\t\t\t\t! shouldFocusBlock &&\n\t\t\t\t\t! blockTypesTabRef.current?.contains(\n\t\t\t\t\t\tref.current.ownerDocument.activeElement\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// There has been a focus loss, so focus the first button in the block types tab\n\t\t\t\t\tblockTypesTabRef.current?.querySelector( 'button' ).focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t[ onInsertBlocks, onSelect, shouldFocusBlock ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName, ...args ) => {\n\t\t\tonToggleInsertionPoint( false );\n\t\t\tonInsertBlocks( blocks, { patternName }, ...args );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onHover = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( item );\n\t\t\tsetHoveredItem( item );\n\t\t},\n\t\t[ onToggleInsertionPoint, setHoveredItem ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory, filter ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t\tsetPatternFilter( filter );\n\t\t\tonPatternCategorySelection?.();\n\t\t},\n\t\t[ setSelectedPatternCategory, onPatternCategorySelection ]\n\t);\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' &&\n\t\t! delayedFilterValue &&\n\t\t!! selectedPatternCategory;\n\n\tconst showMediaPanel = selectedTab === 'media' && !! selectedMediaCategory;\n\n\tconst inserterSearch = useMemo( () => {\n\t\tif ( selectedTab === 'media' ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tif ( hoveredItem ) {\n\t\t\t\t\t\t\tsetHoveredItem( null );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t\t{ !! delayedFilterValue && (\n\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\tfilterValue={ delayedFilterValue }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\tprioritizePatterns={ selectedTab === 'patterns' }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [\n\t\tselectedTab,\n\t\thoveredItem,\n\t\tsetHoveredItem,\n\t\tsetFilterValue,\n\t\tfilterValue,\n\t\tdelayedFilterValue,\n\t\tonSelect,\n\t\tonHover,\n\t\tshouldFocusBlock,\n\t\tclientId,\n\t\trootClientId,\n\t\t__experimentalInsertionIndex,\n\t\tisAppender,\n\t] );\n\n\tconst blocksTab = useMemo( () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div className=\"block-editor-inserter__block-list\">\n\t\t\t\t\t<BlockTypesTab\n\t\t\t\t\t\tref={ blockTypesTabRef }\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ showInserterHelpPanel && (\n\t\t\t\t\t<div className=\"block-editor-inserter__tips\">\n\t\t\t\t\t\t<VisuallyHidden as=\"h2\">\n\t\t\t\t\t\t\t{ __( 'A tip for using the block editor' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t<Tips />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsert,\n\t\tonHover,\n\t\tshowMostUsedBlocks,\n\t\tshowInserterHelpPanel,\n\t] );\n\n\tconst patternsTab = useMemo( () => {\n\t\treturn (\n\t\t\t<BlockPatternsTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\tonSelectCategory={ onClickPatternCategory }\n\t\t\t\tselectedCategory={ selectedPatternCategory }\n\t\t\t>\n\t\t\t\t{ showPatternPanel && (\n\t\t\t\t\t<PatternCategoryPreviews\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockPatternsTab>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsertPattern,\n\t\tonClickPatternCategory,\n\t\tpatternFilter,\n\t\tselectedPatternCategory,\n\t\tshowPatternPanel,\n\t] );\n\n\tconst mediaTab = useMemo( () => {\n\t\treturn (\n\t\t\t<MediaTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tselectedCategory={ selectedMediaCategory }\n\t\t\t\tonSelectCategory={ setSelectedMediaCategory }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t>\n\t\t\t\t{ showMediaPanel && (\n\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tcategory={ selectedMediaCategory }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</MediaTab>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsert,\n\t\tselectedMediaCategory,\n\t\tsetSelectedMediaCategory,\n\t\tshowMediaPanel,\n\t] );\n\n\tconst handleSetSelectedTab = ( value ) => {\n\t\t// If no longer on patterns tab remove the category setting.\n\t\tif ( value !== 'patterns' ) {\n\t\t\tsetSelectedPatternCategory( null );\n\t\t}\n\t\tsetSelectedTab( value );\n\t};\n\n\t// Focus first active tab, if any\n\tconst tabsRef = useRef();\n\tuseLayoutEffect( () => {\n\t\tif ( tabsRef.current ) {\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\ttabsRef.current\n\t\t\t\t\t.querySelector( '[role=\"tab\"][aria-selected=\"true\"]' )\n\t\t\t\t\t?.focus();\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'block-editor-inserter__menu', {\n\t\t\t\t'show-panel': showPatternPanel || showMediaPanel,\n\t\t\t\t'is-zoom-out': isZoomOutMode,\n\t\t\t} ) }\n\t\t\tref={ ref }\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__main-area\">\n\t\t\t\t<TabbedSidebar\n\t\t\t\t\tref={ tabsRef }\n\t\t\t\t\tonSelect={ handleSetSelectedTab }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\tselectedTab={ selectedTab }\n\t\t\t\t\tcloseButtonLabel={ __( 'Close Block Inserter' ) }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'blocks',\n\t\t\t\t\t\t\ttitle: __( 'Blocks' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ selectedTab === 'blocks' &&\n\t\t\t\t\t\t\t\t\t\t! delayedFilterValue &&\n\t\t\t\t\t\t\t\t\t\tblocksTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'patterns',\n\t\t\t\t\t\t\ttitle: __( 'Patterns' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ selectedTab === 'patterns' &&\n\t\t\t\t\t\t\t\t\t\t! delayedFilterValue &&\n\t\t\t\t\t\t\t\t\t\tpatternsTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'media',\n\t\t\t\t\t\t\ttitle: __( 'Media' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ mediaTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<Popover\n\t\t\t\t\tclassName=\"block-editor-inserter__preview-container__popover\"\n\t\t\t\t\tplacement=\"right-start\"\n\t\t\t\t\toffset={ 16 }\n\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\tanimate={ false }\n\t\t\t\t>\n\t\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const PrivateInserterMenu = forwardRef( InserterMenu );\n\nfunction PublicInserterMenu( props, ref ) {\n\treturn (\n\t\t<PrivateInserterMenu\n\t\t\t{ ...props }\n\t\t\tonPatternCategorySelection={ NOOP }\n\t\t\tref={ ref }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( PublicInserterMenu );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SACCC,UAAU,EACVC,QAAQ,EACRC,WAAW,EACXC,OAAO,EACPC,MAAM,EACNC,eAAe,QACT,oBAAoB;AAC3B,SAASC,cAAc,EAAEC,aAAa,EAAEC,OAAO,QAAQ,uBAAuB;AAC9E,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,iBAAiB,EAAEC,gBAAgB,QAAQ,oBAAoB;AACxE,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,oBAAoB,MAAM,iBAAiB;AAClD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,SAASC,uBAAuB,QAAQ,gDAAgD;AACxF,SAASC,QAAQ,EAAEC,kBAAkB,QAAQ,aAAa;AAC1D,OAAOC,qBAAqB,MAAM,kBAAkB;AACpD,OAAOC,iBAAiB,MAAM,6BAA6B;AAC3D,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAE3C,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AACrB,SAASC,YAAYA,CACpB;EACCC,YAAY;EACZC,QAAQ;EACRC,UAAU;EACVC,4BAA4B;EAC5BC,QAAQ;EACRC,qBAAqB;EACrBC,kBAAkB;EAClBC,yBAAyB,GAAG,EAAE;EAC9BC,gBAAgB,GAAG,IAAI;EACvBC,0BAA0B;EAC1BC,OAAO;EACPC,wBAAwB;EACxBC;AACD,CAAC,EACDC,GAAG,EACF;EACD,MAAMC,aAAa,GAAGrC,SAAS,CAC5BsC,MAAM,IAAMxB,MAAM,CAAEwB,MAAM,CAAE3B,gBAAiB,CAAE,CAAC,CAAC4B,SAAS,CAAC,CAAC,EAC9D,EACD,CAAC;EACD,MAAMC,sBAAsB,GAAGxC,SAAS,CACrCsC,MAAM,IACP,CAAC,CAAExB,MAAM,CAAEwB,MAAM,CAAE3B,gBAAiB,CAAE,CAAC,CAAC8B,sBAAsB,CAAC,CAAC,EACjE,EACD,CAAC;EACD,MAAM,CAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,CAAE,GACxD9C,iBAAiB,CAAEgC,yBAA0B,CAAC;EAC/C,MAAM,CAAEe,WAAW,EAAEC,cAAc,CAAE,GAAGzD,QAAQ,CAAE,IAAK,CAAC;EACxD,MAAM,CAAE0D,uBAAuB,EAAEC,0BAA0B,CAAE,GAAG3D,QAAQ,CACvE8C,6BACD,CAAC;EACD,MAAM,CAAEc,aAAa,EAAEC,gBAAgB,CAAE,GAAG7D,QAAQ,CAAE,KAAM,CAAC;EAC7D,MAAM,CAAE8D,qBAAqB,EAAEC,wBAAwB,CAAE,GACxD/D,QAAQ,CAAE,IAAK,CAAC;EACjB,MAAMgE,eAAe,GAAGtD,gBAAgB,CAAE,OAAQ,CAAC;EAEnD,SAASuD,aAAaA,CAAA,EAAG;IACxB,IAAKpB,wBAAwB,EAAG;MAC/B,OAAOA,wBAAwB;IAChC;IAEA,IAAKG,aAAa,EAAG;MACpB,OAAO,UAAU;IAClB;IAEA,OAAO,QAAQ;EAChB;EACA,MAAM,CAAEkB,WAAW,EAAEC,cAAc,CAAE,GAAGnE,QAAQ,CAAEiE,aAAa,CAAC,CAAE,CAAC;EAEnE,MAAMG,gBAAgB,GACrBjB,sBAAsB,KACpBe,WAAW,KAAK,UAAU,IAAIA,WAAW,KAAK,OAAO,CAAE;EAE1D1C,UAAU,CAAE4C,gBAAgB,IAAIJ,eAAgB,CAAC;EAEjD,MAAM,CAAEK,uBAAuB,EAAEC,cAAc,EAAEC,sBAAsB,CAAE,GACxEnD,iBAAiB,CAAE;IAClBc,YAAY;IACZC,QAAQ;IACRC,UAAU;IACVoC,cAAc,EAAEnC,4BAA4B;IAC5CK;EACD,CAAE,CAAC;EACJ,MAAM+B,gBAAgB,GAAGtE,MAAM,CAAC,CAAC;EAEjC,MAAMuE,QAAQ,GAAGzE,WAAW,CAC3B,CAAE0E,MAAM,EAAEC,IAAI,EAAEC,qBAAqB,EAAEC,aAAa,KAAM;IACzDR,cAAc,CACbK,MAAM,EACNC,IAAI,EACJC,qBAAqB,EACrBC,aACD,CAAC;IACDxC,QAAQ,CAAEqC,MAAO,CAAC;;IAElB;IACAI,MAAM,CAACC,qBAAqB,CAAE,MAAM;MACnC,IACC,CAAEtC,gBAAgB,IAClB,CAAE+B,gBAAgB,CAACQ,OAAO,EAAEC,QAAQ,CACnCnC,GAAG,CAACkC,OAAO,CAACE,aAAa,CAACC,aAC3B,CAAC,EACA;QACD;QACAX,gBAAgB,CAACQ,OAAO,EAAEI,aAAa,CAAE,QAAS,CAAC,CAACC,KAAK,CAAC,CAAC;MAC5D;IACD,CAAE,CAAC;EACJ,CAAC,EACD,CAAEhB,cAAc,EAAEhC,QAAQ,EAAEI,gBAAgB,CAC7C,CAAC;EAED,MAAM6C,eAAe,GAAGtF,WAAW,CAClC,CAAE0E,MAAM,EAAEa,WAAW,EAAE,GAAGC,IAAI,KAAM;IACnClB,sBAAsB,CAAE,KAAM,CAAC;IAC/BD,cAAc,CAAEK,MAAM,EAAE;MAAEa;IAAY,CAAC,EAAE,GAAGC,IAAK,CAAC;IAClDnD,QAAQ,CAAC,CAAC;EACX,CAAC,EACD,CAAEgC,cAAc,EAAEhC,QAAQ,CAC3B,CAAC;EAED,MAAMoD,OAAO,GAAGzF,WAAW,CACxB0F,IAAI,IAAM;IACXpB,sBAAsB,CAAEoB,IAAK,CAAC;IAC9BlC,cAAc,CAAEkC,IAAK,CAAC;EACvB,CAAC,EACD,CAAEpB,sBAAsB,EAAEd,cAAc,CACzC,CAAC;EAED,MAAMmC,sBAAsB,GAAG3F,WAAW,CACzC,CAAE4F,eAAe,EAAEC,MAAM,KAAM;IAC9BnC,0BAA0B,CAAEkC,eAAgB,CAAC;IAC7ChC,gBAAgB,CAAEiC,MAAO,CAAC;IAC1BnD,0BAA0B,GAAG,CAAC;EAC/B,CAAC,EACD,CAAEgB,0BAA0B,EAAEhB,0BAA0B,CACzD,CAAC;EAED,MAAMoD,gBAAgB,GACrB7B,WAAW,KAAK,UAAU,IAC1B,CAAEX,kBAAkB,IACpB,CAAC,CAAEG,uBAAuB;EAE3B,MAAMsC,cAAc,GAAG9B,WAAW,KAAK,OAAO,IAAI,CAAC,CAAEJ,qBAAqB;EAE1E,MAAMmC,cAAc,GAAG/F,OAAO,CAAE,MAAM;IACrC,IAAKgE,WAAW,KAAK,OAAO,EAAG;MAC9B,OAAO,IAAI;IACZ;IAEA,oBACCnC,KAAA,CAAAF,SAAA;MAAAqE,QAAA,gBACCvE,IAAA,CAACrB,aAAa;QACb6F,uBAAuB;QACvBC,SAAS,EAAC,+BAA+B;QACzCC,QAAQ,EAAKC,KAAK,IAAM;UACvB,IAAK9C,WAAW,EAAG;YAClBC,cAAc,CAAE,IAAK,CAAC;UACvB;UACAH,cAAc,CAAEgD,KAAM,CAAC;QACxB,CAAG;QACHA,KAAK,EAAGjD,WAAa;QACrBkD,KAAK,EAAG/F,EAAE,CAAE,QAAS,CAAG;QACxBgG,WAAW,EAAGhG,EAAE,CAAE,QAAS;MAAG,CAC9B,CAAC,EACA,CAAC,CAAE+C,kBAAkB,iBACtB5B,IAAA,CAACR,qBAAqB;QACrBkC,WAAW,EAAGE,kBAAoB;QAClCjB,QAAQ,EAAGA,QAAU;QACrBoD,OAAO,EAAGA,OAAS;QACnBxD,YAAY,EAAGA,YAAc;QAC7BC,QAAQ,EAAGA,QAAU;QACrBC,UAAU,EAAGA,UAAY;QACzBC,4BAA4B,EAC3BA,4BACA;QACDoE,kBAAkB;QAClB/D,gBAAgB,EAAGA,gBAAkB;QACrCgE,kBAAkB,EAAGxC,WAAW,KAAK;MAAY,CACjD,CACD;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFA,WAAW,EACXV,WAAW,EACXC,cAAc,EACdH,cAAc,EACdD,WAAW,EACXE,kBAAkB,EAClBjB,QAAQ,EACRoD,OAAO,EACPhD,gBAAgB,EAChBP,QAAQ,EACRD,YAAY,EACZG,4BAA4B,EAC5BD,UAAU,CACT,CAAC;EAEH,MAAMuE,SAAS,GAAGzG,OAAO,CAAE,MAAM;IAChC,oBACC6B,KAAA,CAAAF,SAAA;MAAAqE,QAAA,gBACCvE,IAAA;QAAKyE,SAAS,EAAC,mCAAmC;QAAAF,QAAA,eACjDvE,IAAA,CAACb,aAAa;UACbiC,GAAG,EAAG0B,gBAAkB;UACxBvC,YAAY,EAAGmC,uBAAyB;UACxCK,QAAQ,EAAGA,QAAU;UACrBgB,OAAO,EAAGA,OAAS;UACnBlD,kBAAkB,EAAGA;QAAoB,CACzC;MAAC,CACE,CAAC,EACJD,qBAAqB,iBACtBR,KAAA;QAAKqE,SAAS,EAAC,6BAA6B;QAAAF,QAAA,gBAC3CvE,IAAA,CAACtB,cAAc;UAACuG,EAAE,EAAC,IAAI;UAAAV,QAAA,EACpB1F,EAAE,CAAE,kCAAmC;QAAC,CAC3B,CAAC,eACjBmB,IAAA,CAACf,IAAI,IAAE,CAAC;MAAA,CACJ,CACL;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFyD,uBAAuB,EACvBK,QAAQ,EACRgB,OAAO,EACPlD,kBAAkB,EAClBD,qBAAqB,CACpB,CAAC;EAEH,MAAMsE,WAAW,GAAG3G,OAAO,CAAE,MAAM;IAClC,oBACCyB,IAAA,CAACZ,gBAAgB;MAChBmB,YAAY,EAAGmC,uBAAyB;MACxCK,QAAQ,EAAGa,eAAiB;MAC5BuB,gBAAgB,EAAGlB,sBAAwB;MAC3CmB,gBAAgB,EAAGrD,uBAAyB;MAAAwC,QAAA,EAE1CH,gBAAgB,iBACjBpE,IAAA,CAACX,uBAAuB;QACvBkB,YAAY,EAAGmC,uBAAyB;QACxCK,QAAQ,EAAGa,eAAiB;QAC5ByB,QAAQ,EAAGtD,uBAAyB;QACpCE,aAAa,EAAGA,aAAe;QAC/BqD,mBAAmB;MAAA,CACnB;IACD,CACgB,CAAC;EAErB,CAAC,EAAE,CACF5C,uBAAuB,EACvBkB,eAAe,EACfK,sBAAsB,EACtBhC,aAAa,EACbF,uBAAuB,EACvBqC,gBAAgB,CACf,CAAC;EAEH,MAAMmB,QAAQ,GAAGhH,OAAO,CAAE,MAAM;IAC/B,oBACCyB,IAAA,CAACV,QAAQ;MACRiB,YAAY,EAAGmC,uBAAyB;MACxC0C,gBAAgB,EAAGjD,qBAAuB;MAC1CgD,gBAAgB,EAAG/C,wBAA0B;MAC7CW,QAAQ,EAAGA,QAAU;MAAAwB,QAAA,EAEnBF,cAAc,iBACfrE,IAAA,CAACT,kBAAkB;QAClBgB,YAAY,EAAGmC,uBAAyB;QACxCK,QAAQ,EAAGA,QAAU;QACrBsC,QAAQ,EAAGlD;MAAuB,CAClC;IACD,CACQ,CAAC;EAEb,CAAC,EAAE,CACFO,uBAAuB,EACvBK,QAAQ,EACRZ,qBAAqB,EACrBC,wBAAwB,EACxBiC,cAAc,CACb,CAAC;EAEH,MAAMmB,oBAAoB,GAAKb,KAAK,IAAM;IACzC;IACA,IAAKA,KAAK,KAAK,UAAU,EAAG;MAC3B3C,0BAA0B,CAAE,IAAK,CAAC;IACnC;IACAQ,cAAc,CAAEmC,KAAM,CAAC;EACxB,CAAC;;EAED;EACA,MAAMc,OAAO,GAAGjH,MAAM,CAAC,CAAC;EACxBC,eAAe,CAAE,MAAM;IACtB,IAAKgH,OAAO,CAACnC,OAAO,EAAG;MACtBF,MAAM,CAACC,qBAAqB,CAAE,MAAM;QACnCoC,OAAO,CAACnC,OAAO,CACbI,aAAa,CAAE,oCAAqC,CAAC,EACpDC,KAAK,CAAC,CAAC;MACX,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,EAAG,CAAC;EAEP,oBACCvD,KAAA;IACCqE,SAAS,EAAGtG,IAAI,CAAE,6BAA6B,EAAE;MAChD,YAAY,EAAEiG,gBAAgB,IAAIC,cAAc;MAChD,aAAa,EAAEhD;IAChB,CAAE,CAAG;IACLD,GAAG,EAAGA,GAAK;IAAAmD,QAAA,gBAEXvE,IAAA;MAAKyE,SAAS,EAAC,kCAAkC;MAAAF,QAAA,eAChDvE,IAAA,CAACJ,aAAa;QACbwB,GAAG,EAAGqE,OAAS;QACf9E,QAAQ,EAAG6E,oBAAsB;QACjCvE,OAAO,EAAGA,OAAS;QACnBsB,WAAW,EAAGA,WAAa;QAC3BmD,gBAAgB,EAAG7G,EAAE,CAAE,sBAAuB,CAAG;QACjD8G,IAAI,EAAG,CACN;UACCC,IAAI,EAAE,QAAQ;UACdC,KAAK,EAAEhH,EAAE,CAAE,QAAS,CAAC;UACrBiH,KAAK,eACJ1F,KAAA,CAAAF,SAAA;YAAAqE,QAAA,GACGD,cAAc,EACd/B,WAAW,KAAK,QAAQ,IACzB,CAAEX,kBAAkB,IACpBoD,SAAS;UAAA,CACT;QAEJ,CAAC,EACD;UACCY,IAAI,EAAE,UAAU;UAChBC,KAAK,EAAEhH,EAAE,CAAE,UAAW,CAAC;UACvBiH,KAAK,eACJ1F,KAAA,CAAAF,SAAA;YAAAqE,QAAA,GACGD,cAAc,EACd/B,WAAW,KAAK,UAAU,IAC3B,CAAEX,kBAAkB,IACpBsD,WAAW;UAAA,CACX;QAEJ,CAAC,EACD;UACCU,IAAI,EAAE,OAAO;UACbC,KAAK,EAAEhH,EAAE,CAAE,OAAQ,CAAC;UACpBiH,KAAK,eACJ1F,KAAA,CAAAF,SAAA;YAAAqE,QAAA,GACGD,cAAc,EACdiB,QAAQ;UAAA,CACT;QAEJ,CAAC;MACC,CACH;IAAC,CACE,CAAC,EACJ3E,qBAAqB,IAAIiB,WAAW,iBACrC7B,IAAA,CAACpB,OAAO;MACP6F,SAAS,EAAC,mDAAmD;MAC7DsB,SAAS,EAAC,aAAa;MACvBC,MAAM,EAAG,EAAI;MACbC,YAAY,EAAG,KAAO;MACtBC,OAAO,EAAG,KAAO;MAAA3B,QAAA,eAEjBvE,IAAA,CAACd,oBAAoB;QAAC8E,IAAI,EAAGnC;MAAa,CAAE;IAAC,CACrC,CACT;EAAA,CACG,CAAC;AAER;AAEA,OAAO,MAAMsE,mBAAmB,GAAG/H,UAAU,CAAEkC,YAAa,CAAC;AAE7D,SAAS8F,kBAAkBA,CAAEC,KAAK,EAAEjF,GAAG,EAAG;EACzC,oBACCpB,IAAA,CAACmG,mBAAmB;IAAA,GACdE,KAAK;IACVrF,0BAA0B,EAAGX,IAAM;IACnCe,GAAG,EAAGA;EAAK,CACX,CAAC;AAEJ;AAEA,eAAehD,UAAU,CAAEgI,kBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["clsx","forwardRef","useState","useCallback","useMemo","useRef","useLayoutEffect","VisuallyHidden","SearchControl","Popover","__","useDebouncedInput","useViewportMatch","useSelect","Tips","InserterPreviewPanel","BlockTypesTab","BlockPatternsTab","PatternCategoryPreviews","MediaTab","MediaCategoryPanel","InserterSearchResults","useInsertionPoint","store","blockEditorStore","TabbedSidebar","useZoomOut","unlock","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","NOOP","InserterMenu","rootClientId","clientId","isAppender","__experimentalInsertionIndex","onSelect","showInserterHelpPanel","showMostUsedBlocks","__experimentalFilterValue","shouldFocusBlock","onPatternCategorySelection","onClose","__experimentalInitialTab","__experimentalInitialCategory","ref","isZoomOutMode","hasSectionRootClientId","select","isZoomOut","getSectionRootClientId","filterValue","setFilterValue","delayedFilterValue","hoveredItem","setHoveredItem","selectedPatternCategory","setSelectedPatternCategory","patternFilter","setPatternFilter","selectedMediaCategory","setSelectedMediaCategory","isLargeViewport","getInitialTab","selectedTab","setSelectedTab","shouldUseZoomOut","destinationRootClientId","onInsertBlocks","onToggleInsertionPoint","insertionIndex","blockTypesTabRef","onInsert","blocks","meta","shouldForceFocusBlock","_rootClientId","window","requestAnimationFrame","current","contains","ownerDocument","activeElement","querySelector","focus","onInsertPattern","patternName","args","onHover","item","onClickPatternCategory","patternCategory","filter","showPatternPanel","showMediaPanel","inserterSearch","children","__nextHasNoMarginBottom","className","onChange","value","label","placeholder","showBlockDirectory","prioritizePatterns","blocksTab","as","patternsTab","onSelectCategory","selectedCategory","category","showTitlesAsTooltip","mediaTab","handleSetSelectedTab","tabsRef","closeButtonLabel","tabs","name","title","panel","placement","offset","focusOnMount","animate","PrivateInserterMenu","PublicInserterMenu","props"],"sources":["@wordpress/block-editor/src/components/inserter/menu.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tforwardRef,\n\tuseState,\n\tuseCallback,\n\tuseMemo,\n\tuseRef,\n\tuseLayoutEffect,\n} from '@wordpress/element';\nimport { VisuallyHidden, SearchControl, Popover } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { useDebouncedInput, useViewportMatch } from '@wordpress/compose';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport Tips from './tips';\nimport InserterPreviewPanel from './preview-panel';\nimport BlockTypesTab from './block-types-tab';\nimport BlockPatternsTab from './block-patterns-tab';\nimport { PatternCategoryPreviews } from './block-patterns-tab/pattern-category-previews';\nimport { MediaTab, MediaCategoryPanel } from './media-tab';\nimport InserterSearchResults from './search-results';\nimport useInsertionPoint from './hooks/use-insertion-point';\nimport { store as blockEditorStore } from '../../store';\nimport TabbedSidebar from '../tabbed-sidebar';\nimport { useZoomOut } from '../../hooks/use-zoom-out';\nimport { unlock } from '../../lock-unlock';\n\nconst NOOP = () => {};\nfunction InserterMenu(\n\t{\n\t\trootClientId,\n\t\tclientId,\n\t\tisAppender,\n\t\t__experimentalInsertionIndex,\n\t\tonSelect,\n\t\tshowInserterHelpPanel,\n\t\tshowMostUsedBlocks,\n\t\t__experimentalFilterValue = '',\n\t\tshouldFocusBlock = true,\n\t\tonPatternCategorySelection,\n\t\tonClose,\n\t\t__experimentalInitialTab,\n\t\t__experimentalInitialCategory,\n\t},\n\tref\n) {\n\tconst { isZoomOutMode, hasSectionRootClientId } = useSelect( ( select ) => {\n\t\tconst { isZoomOut, getSectionRootClientId } = unlock(\n\t\t\tselect( blockEditorStore )\n\t\t);\n\n\t\treturn {\n\t\t\tisZoomOutMode: isZoomOut(),\n\t\t\thasSectionRootClientId: !! getSectionRootClientId(),\n\t\t};\n\t}, [] );\n\n\tconst [ filterValue, setFilterValue, delayedFilterValue ] =\n\t\tuseDebouncedInput( __experimentalFilterValue );\n\tconst [ hoveredItem, setHoveredItem ] = useState( null );\n\tconst [ selectedPatternCategory, setSelectedPatternCategory ] = useState(\n\t\t__experimentalInitialCategory\n\t);\n\tconst [ patternFilter, setPatternFilter ] = useState( 'all' );\n\tconst [ selectedMediaCategory, setSelectedMediaCategory ] =\n\t\tuseState( null );\n\tconst isLargeViewport = useViewportMatch( 'large' );\n\n\tfunction getInitialTab() {\n\t\tif ( __experimentalInitialTab ) {\n\t\t\treturn __experimentalInitialTab;\n\t\t}\n\n\t\tif ( isZoomOutMode ) {\n\t\t\treturn 'patterns';\n\t\t}\n\n\t\treturn 'blocks';\n\t}\n\tconst [ selectedTab, setSelectedTab ] = useState( getInitialTab() );\n\n\tconst shouldUseZoomOut =\n\t\thasSectionRootClientId &&\n\t\t( selectedTab === 'patterns' || selectedTab === 'media' );\n\n\tuseZoomOut( shouldUseZoomOut && isLargeViewport );\n\n\tconst [ destinationRootClientId, onInsertBlocks, onToggleInsertionPoint ] =\n\t\tuseInsertionPoint( {\n\t\t\trootClientId,\n\t\t\tclientId,\n\t\t\tisAppender,\n\t\t\tinsertionIndex: __experimentalInsertionIndex,\n\t\t\tshouldFocusBlock,\n\t\t} );\n\tconst blockTypesTabRef = useRef();\n\n\tconst onInsert = useCallback(\n\t\t( blocks, meta, shouldForceFocusBlock, _rootClientId ) => {\n\t\t\tonInsertBlocks(\n\t\t\t\tblocks,\n\t\t\t\tmeta,\n\t\t\t\tshouldForceFocusBlock,\n\t\t\t\t_rootClientId\n\t\t\t);\n\t\t\tonSelect( blocks );\n\n\t\t\t// Check for focus loss due to filtering blocks by selected block type\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\tif (\n\t\t\t\t\t! shouldFocusBlock &&\n\t\t\t\t\t! blockTypesTabRef.current?.contains(\n\t\t\t\t\t\tref.current.ownerDocument.activeElement\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// There has been a focus loss, so focus the first button in the block types tab\n\t\t\t\t\tblockTypesTabRef.current?.querySelector( 'button' ).focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t},\n\t\t[ onInsertBlocks, onSelect, shouldFocusBlock ]\n\t);\n\n\tconst onInsertPattern = useCallback(\n\t\t( blocks, patternName, ...args ) => {\n\t\t\tonToggleInsertionPoint( false );\n\t\t\tonInsertBlocks( blocks, { patternName }, ...args );\n\t\t\tonSelect();\n\t\t},\n\t\t[ onInsertBlocks, onSelect ]\n\t);\n\n\tconst onHover = useCallback(\n\t\t( item ) => {\n\t\t\tonToggleInsertionPoint( item );\n\t\t\tsetHoveredItem( item );\n\t\t},\n\t\t[ onToggleInsertionPoint, setHoveredItem ]\n\t);\n\n\tconst onClickPatternCategory = useCallback(\n\t\t( patternCategory, filter ) => {\n\t\t\tsetSelectedPatternCategory( patternCategory );\n\t\t\tsetPatternFilter( filter );\n\t\t\tonPatternCategorySelection?.();\n\t\t},\n\t\t[ setSelectedPatternCategory, onPatternCategorySelection ]\n\t);\n\n\tconst showPatternPanel =\n\t\tselectedTab === 'patterns' &&\n\t\t! delayedFilterValue &&\n\t\t!! selectedPatternCategory;\n\n\tconst showMediaPanel = selectedTab === 'media' && !! selectedMediaCategory;\n\n\tconst inserterSearch = useMemo( () => {\n\t\tif ( selectedTab === 'media' ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SearchControl\n\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\tclassName=\"block-editor-inserter__search\"\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tif ( hoveredItem ) {\n\t\t\t\t\t\t\tsetHoveredItem( null );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsetFilterValue( value );\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ filterValue }\n\t\t\t\t\tlabel={ __( 'Search' ) }\n\t\t\t\t\tplaceholder={ __( 'Search' ) }\n\t\t\t\t/>\n\t\t\t\t{ !! delayedFilterValue && (\n\t\t\t\t\t<InserterSearchResults\n\t\t\t\t\t\tfilterValue={ delayedFilterValue }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\t\tisAppender={ isAppender }\n\t\t\t\t\t\t__experimentalInsertionIndex={\n\t\t\t\t\t\t\t__experimentalInsertionIndex\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshowBlockDirectory\n\t\t\t\t\t\tshouldFocusBlock={ shouldFocusBlock }\n\t\t\t\t\t\tprioritizePatterns={ selectedTab === 'patterns' }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [\n\t\tselectedTab,\n\t\thoveredItem,\n\t\tsetHoveredItem,\n\t\tsetFilterValue,\n\t\tfilterValue,\n\t\tdelayedFilterValue,\n\t\tonSelect,\n\t\tonHover,\n\t\tshouldFocusBlock,\n\t\tclientId,\n\t\trootClientId,\n\t\t__experimentalInsertionIndex,\n\t\tisAppender,\n\t] );\n\n\tconst blocksTab = useMemo( () => {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<div className=\"block-editor-inserter__block-list\">\n\t\t\t\t\t<BlockTypesTab\n\t\t\t\t\t\tref={ blockTypesTabRef }\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\t\tshowMostUsedBlocks={ showMostUsedBlocks }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{ showInserterHelpPanel && (\n\t\t\t\t\t<div className=\"block-editor-inserter__tips\">\n\t\t\t\t\t\t<VisuallyHidden as=\"h2\">\n\t\t\t\t\t\t\t{ __( 'A tip for using the block editor' ) }\n\t\t\t\t\t\t</VisuallyHidden>\n\t\t\t\t\t\t<Tips />\n\t\t\t\t\t</div>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsert,\n\t\tonHover,\n\t\tshowMostUsedBlocks,\n\t\tshowInserterHelpPanel,\n\t] );\n\n\tconst patternsTab = useMemo( () => {\n\t\treturn (\n\t\t\t<BlockPatternsTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\tonSelectCategory={ onClickPatternCategory }\n\t\t\t\tselectedCategory={ selectedPatternCategory }\n\t\t\t>\n\t\t\t\t{ showPatternPanel && (\n\t\t\t\t\t<PatternCategoryPreviews\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsertPattern }\n\t\t\t\t\t\tcategory={ selectedPatternCategory }\n\t\t\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t\t\t\tshowTitlesAsTooltip\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</BlockPatternsTab>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsertPattern,\n\t\tonClickPatternCategory,\n\t\tpatternFilter,\n\t\tselectedPatternCategory,\n\t\tshowPatternPanel,\n\t] );\n\n\tconst mediaTab = useMemo( () => {\n\t\treturn (\n\t\t\t<MediaTab\n\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\tselectedCategory={ selectedMediaCategory }\n\t\t\t\tonSelectCategory={ setSelectedMediaCategory }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t>\n\t\t\t\t{ showMediaPanel && (\n\t\t\t\t\t<MediaCategoryPanel\n\t\t\t\t\t\trootClientId={ destinationRootClientId }\n\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\tcategory={ selectedMediaCategory }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</MediaTab>\n\t\t);\n\t}, [\n\t\tdestinationRootClientId,\n\t\tonInsert,\n\t\tselectedMediaCategory,\n\t\tsetSelectedMediaCategory,\n\t\tshowMediaPanel,\n\t] );\n\n\tconst handleSetSelectedTab = ( value ) => {\n\t\t// If no longer on patterns tab remove the category setting.\n\t\tif ( value !== 'patterns' ) {\n\t\t\tsetSelectedPatternCategory( null );\n\t\t}\n\t\tsetSelectedTab( value );\n\t};\n\n\t// Focus first active tab, if any\n\tconst tabsRef = useRef();\n\tuseLayoutEffect( () => {\n\t\tif ( tabsRef.current ) {\n\t\t\twindow.requestAnimationFrame( () => {\n\t\t\t\ttabsRef.current\n\t\t\t\t\t.querySelector( '[role=\"tab\"][aria-selected=\"true\"]' )\n\t\t\t\t\t?.focus();\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\treturn (\n\t\t<div\n\t\t\tclassName={ clsx( 'block-editor-inserter__menu', {\n\t\t\t\t'show-panel': showPatternPanel || showMediaPanel,\n\t\t\t\t'is-zoom-out': isZoomOutMode,\n\t\t\t} ) }\n\t\t\tref={ ref }\n\t\t>\n\t\t\t<div className=\"block-editor-inserter__main-area\">\n\t\t\t\t<TabbedSidebar\n\t\t\t\t\tref={ tabsRef }\n\t\t\t\t\tonSelect={ handleSetSelectedTab }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\tselectedTab={ selectedTab }\n\t\t\t\t\tcloseButtonLabel={ __( 'Close Block Inserter' ) }\n\t\t\t\t\ttabs={ [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'blocks',\n\t\t\t\t\t\t\ttitle: __( 'Blocks' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ selectedTab === 'blocks' &&\n\t\t\t\t\t\t\t\t\t\t! delayedFilterValue &&\n\t\t\t\t\t\t\t\t\t\tblocksTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'patterns',\n\t\t\t\t\t\t\ttitle: __( 'Patterns' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ selectedTab === 'patterns' &&\n\t\t\t\t\t\t\t\t\t\t! delayedFilterValue &&\n\t\t\t\t\t\t\t\t\t\tpatternsTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tname: 'media',\n\t\t\t\t\t\t\ttitle: __( 'Media' ),\n\t\t\t\t\t\t\tpanel: (\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t{ inserterSearch }\n\t\t\t\t\t\t\t\t\t{ mediaTab }\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t},\n\t\t\t\t\t] }\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t{ showInserterHelpPanel && hoveredItem && (\n\t\t\t\t<Popover\n\t\t\t\t\tclassName=\"block-editor-inserter__preview-container__popover\"\n\t\t\t\t\tplacement=\"right-start\"\n\t\t\t\t\toffset={ 16 }\n\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\tanimate={ false }\n\t\t\t\t>\n\t\t\t\t\t<InserterPreviewPanel item={ hoveredItem } />\n\t\t\t\t</Popover>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nexport const PrivateInserterMenu = forwardRef( InserterMenu );\n\nfunction PublicInserterMenu( props, ref ) {\n\treturn (\n\t\t<PrivateInserterMenu\n\t\t\t{ ...props }\n\t\t\tonPatternCategorySelection={ NOOP }\n\t\t\tref={ ref }\n\t\t/>\n\t);\n}\n\nexport default forwardRef( PublicInserterMenu );\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SACCC,UAAU,EACVC,QAAQ,EACRC,WAAW,EACXC,OAAO,EACPC,MAAM,EACNC,eAAe,QACT,oBAAoB;AAC3B,SAASC,cAAc,EAAEC,aAAa,EAAEC,OAAO,QAAQ,uBAAuB;AAC9E,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,iBAAiB,EAAEC,gBAAgB,QAAQ,oBAAoB;AACxE,SAASC,SAAS,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,OAAOC,IAAI,MAAM,QAAQ;AACzB,OAAOC,oBAAoB,MAAM,iBAAiB;AAClD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,SAASC,uBAAuB,QAAQ,gDAAgD;AACxF,SAASC,QAAQ,EAAEC,kBAAkB,QAAQ,aAAa;AAC1D,OAAOC,qBAAqB,MAAM,kBAAkB;AACpD,OAAOC,iBAAiB,MAAM,6BAA6B;AAC3D,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AACvD,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,MAAM,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAE3C,MAAMC,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AACrB,SAASC,YAAYA,CACpB;EACCC,YAAY;EACZC,QAAQ;EACRC,UAAU;EACVC,4BAA4B;EAC5BC,QAAQ;EACRC,qBAAqB;EACrBC,kBAAkB;EAClBC,yBAAyB,GAAG,EAAE;EAC9BC,gBAAgB,GAAG,IAAI;EACvBC,0BAA0B;EAC1BC,OAAO;EACPC,wBAAwB;EACxBC;AACD,CAAC,EACDC,GAAG,EACF;EACD,MAAM;IAAEC,aAAa;IAAEC;EAAuB,CAAC,GAAGtC,SAAS,CAAIuC,MAAM,IAAM;IAC1E,MAAM;MAAEC,SAAS;MAAEC;IAAuB,CAAC,GAAG3B,MAAM,CACnDyB,MAAM,CAAE5B,gBAAiB,CAC1B,CAAC;IAED,OAAO;MACN0B,aAAa,EAAEG,SAAS,CAAC,CAAC;MAC1BF,sBAAsB,EAAE,CAAC,CAAEG,sBAAsB,CAAC;IACnD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM,CAAEC,WAAW,EAAEC,cAAc,EAAEC,kBAAkB,CAAE,GACxD9C,iBAAiB,CAAEgC,yBAA0B,CAAC;EAC/C,MAAM,CAAEe,WAAW,EAAEC,cAAc,CAAE,GAAGzD,QAAQ,CAAE,IAAK,CAAC;EACxD,MAAM,CAAE0D,uBAAuB,EAAEC,0BAA0B,CAAE,GAAG3D,QAAQ,CACvE8C,6BACD,CAAC;EACD,MAAM,CAAEc,aAAa,EAAEC,gBAAgB,CAAE,GAAG7D,QAAQ,CAAE,KAAM,CAAC;EAC7D,MAAM,CAAE8D,qBAAqB,EAAEC,wBAAwB,CAAE,GACxD/D,QAAQ,CAAE,IAAK,CAAC;EACjB,MAAMgE,eAAe,GAAGtD,gBAAgB,CAAE,OAAQ,CAAC;EAEnD,SAASuD,aAAaA,CAAA,EAAG;IACxB,IAAKpB,wBAAwB,EAAG;MAC/B,OAAOA,wBAAwB;IAChC;IAEA,IAAKG,aAAa,EAAG;MACpB,OAAO,UAAU;IAClB;IAEA,OAAO,QAAQ;EAChB;EACA,MAAM,CAAEkB,WAAW,EAAEC,cAAc,CAAE,GAAGnE,QAAQ,CAAEiE,aAAa,CAAC,CAAE,CAAC;EAEnE,MAAMG,gBAAgB,GACrBnB,sBAAsB,KACpBiB,WAAW,KAAK,UAAU,IAAIA,WAAW,KAAK,OAAO,CAAE;EAE1D1C,UAAU,CAAE4C,gBAAgB,IAAIJ,eAAgB,CAAC;EAEjD,MAAM,CAAEK,uBAAuB,EAAEC,cAAc,EAAEC,sBAAsB,CAAE,GACxEnD,iBAAiB,CAAE;IAClBc,YAAY;IACZC,QAAQ;IACRC,UAAU;IACVoC,cAAc,EAAEnC,4BAA4B;IAC5CK;EACD,CAAE,CAAC;EACJ,MAAM+B,gBAAgB,GAAGtE,MAAM,CAAC,CAAC;EAEjC,MAAMuE,QAAQ,GAAGzE,WAAW,CAC3B,CAAE0E,MAAM,EAAEC,IAAI,EAAEC,qBAAqB,EAAEC,aAAa,KAAM;IACzDR,cAAc,CACbK,MAAM,EACNC,IAAI,EACJC,qBAAqB,EACrBC,aACD,CAAC;IACDxC,QAAQ,CAAEqC,MAAO,CAAC;;IAElB;IACAI,MAAM,CAACC,qBAAqB,CAAE,MAAM;MACnC,IACC,CAAEtC,gBAAgB,IAClB,CAAE+B,gBAAgB,CAACQ,OAAO,EAAEC,QAAQ,CACnCnC,GAAG,CAACkC,OAAO,CAACE,aAAa,CAACC,aAC3B,CAAC,EACA;QACD;QACAX,gBAAgB,CAACQ,OAAO,EAAEI,aAAa,CAAE,QAAS,CAAC,CAACC,KAAK,CAAC,CAAC;MAC5D;IACD,CAAE,CAAC;EACJ,CAAC,EACD,CAAEhB,cAAc,EAAEhC,QAAQ,EAAEI,gBAAgB,CAC7C,CAAC;EAED,MAAM6C,eAAe,GAAGtF,WAAW,CAClC,CAAE0E,MAAM,EAAEa,WAAW,EAAE,GAAGC,IAAI,KAAM;IACnClB,sBAAsB,CAAE,KAAM,CAAC;IAC/BD,cAAc,CAAEK,MAAM,EAAE;MAAEa;IAAY,CAAC,EAAE,GAAGC,IAAK,CAAC;IAClDnD,QAAQ,CAAC,CAAC;EACX,CAAC,EACD,CAAEgC,cAAc,EAAEhC,QAAQ,CAC3B,CAAC;EAED,MAAMoD,OAAO,GAAGzF,WAAW,CACxB0F,IAAI,IAAM;IACXpB,sBAAsB,CAAEoB,IAAK,CAAC;IAC9BlC,cAAc,CAAEkC,IAAK,CAAC;EACvB,CAAC,EACD,CAAEpB,sBAAsB,EAAEd,cAAc,CACzC,CAAC;EAED,MAAMmC,sBAAsB,GAAG3F,WAAW,CACzC,CAAE4F,eAAe,EAAEC,MAAM,KAAM;IAC9BnC,0BAA0B,CAAEkC,eAAgB,CAAC;IAC7ChC,gBAAgB,CAAEiC,MAAO,CAAC;IAC1BnD,0BAA0B,GAAG,CAAC;EAC/B,CAAC,EACD,CAAEgB,0BAA0B,EAAEhB,0BAA0B,CACzD,CAAC;EAED,MAAMoD,gBAAgB,GACrB7B,WAAW,KAAK,UAAU,IAC1B,CAAEX,kBAAkB,IACpB,CAAC,CAAEG,uBAAuB;EAE3B,MAAMsC,cAAc,GAAG9B,WAAW,KAAK,OAAO,IAAI,CAAC,CAAEJ,qBAAqB;EAE1E,MAAMmC,cAAc,GAAG/F,OAAO,CAAE,MAAM;IACrC,IAAKgE,WAAW,KAAK,OAAO,EAAG;MAC9B,OAAO,IAAI;IACZ;IAEA,oBACCnC,KAAA,CAAAF,SAAA;MAAAqE,QAAA,gBACCvE,IAAA,CAACrB,aAAa;QACb6F,uBAAuB;QACvBC,SAAS,EAAC,+BAA+B;QACzCC,QAAQ,EAAKC,KAAK,IAAM;UACvB,IAAK9C,WAAW,EAAG;YAClBC,cAAc,CAAE,IAAK,CAAC;UACvB;UACAH,cAAc,CAAEgD,KAAM,CAAC;QACxB,CAAG;QACHA,KAAK,EAAGjD,WAAa;QACrBkD,KAAK,EAAG/F,EAAE,CAAE,QAAS,CAAG;QACxBgG,WAAW,EAAGhG,EAAE,CAAE,QAAS;MAAG,CAC9B,CAAC,EACA,CAAC,CAAE+C,kBAAkB,iBACtB5B,IAAA,CAACR,qBAAqB;QACrBkC,WAAW,EAAGE,kBAAoB;QAClCjB,QAAQ,EAAGA,QAAU;QACrBoD,OAAO,EAAGA,OAAS;QACnBxD,YAAY,EAAGA,YAAc;QAC7BC,QAAQ,EAAGA,QAAU;QACrBC,UAAU,EAAGA,UAAY;QACzBC,4BAA4B,EAC3BA,4BACA;QACDoE,kBAAkB;QAClB/D,gBAAgB,EAAGA,gBAAkB;QACrCgE,kBAAkB,EAAGxC,WAAW,KAAK;MAAY,CACjD,CACD;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFA,WAAW,EACXV,WAAW,EACXC,cAAc,EACdH,cAAc,EACdD,WAAW,EACXE,kBAAkB,EAClBjB,QAAQ,EACRoD,OAAO,EACPhD,gBAAgB,EAChBP,QAAQ,EACRD,YAAY,EACZG,4BAA4B,EAC5BD,UAAU,CACT,CAAC;EAEH,MAAMuE,SAAS,GAAGzG,OAAO,CAAE,MAAM;IAChC,oBACC6B,KAAA,CAAAF,SAAA;MAAAqE,QAAA,gBACCvE,IAAA;QAAKyE,SAAS,EAAC,mCAAmC;QAAAF,QAAA,eACjDvE,IAAA,CAACb,aAAa;UACbiC,GAAG,EAAG0B,gBAAkB;UACxBvC,YAAY,EAAGmC,uBAAyB;UACxCK,QAAQ,EAAGA,QAAU;UACrBgB,OAAO,EAAGA,OAAS;UACnBlD,kBAAkB,EAAGA;QAAoB,CACzC;MAAC,CACE,CAAC,EACJD,qBAAqB,iBACtBR,KAAA;QAAKqE,SAAS,EAAC,6BAA6B;QAAAF,QAAA,gBAC3CvE,IAAA,CAACtB,cAAc;UAACuG,EAAE,EAAC,IAAI;UAAAV,QAAA,EACpB1F,EAAE,CAAE,kCAAmC;QAAC,CAC3B,CAAC,eACjBmB,IAAA,CAACf,IAAI,IAAE,CAAC;MAAA,CACJ,CACL;IAAA,CACA,CAAC;EAEL,CAAC,EAAE,CACFyD,uBAAuB,EACvBK,QAAQ,EACRgB,OAAO,EACPlD,kBAAkB,EAClBD,qBAAqB,CACpB,CAAC;EAEH,MAAMsE,WAAW,GAAG3G,OAAO,CAAE,MAAM;IAClC,oBACCyB,IAAA,CAACZ,gBAAgB;MAChBmB,YAAY,EAAGmC,uBAAyB;MACxCK,QAAQ,EAAGa,eAAiB;MAC5BuB,gBAAgB,EAAGlB,sBAAwB;MAC3CmB,gBAAgB,EAAGrD,uBAAyB;MAAAwC,QAAA,EAE1CH,gBAAgB,iBACjBpE,IAAA,CAACX,uBAAuB;QACvBkB,YAAY,EAAGmC,uBAAyB;QACxCK,QAAQ,EAAGa,eAAiB;QAC5ByB,QAAQ,EAAGtD,uBAAyB;QACpCE,aAAa,EAAGA,aAAe;QAC/BqD,mBAAmB;MAAA,CACnB;IACD,CACgB,CAAC;EAErB,CAAC,EAAE,CACF5C,uBAAuB,EACvBkB,eAAe,EACfK,sBAAsB,EACtBhC,aAAa,EACbF,uBAAuB,EACvBqC,gBAAgB,CACf,CAAC;EAEH,MAAMmB,QAAQ,GAAGhH,OAAO,CAAE,MAAM;IAC/B,oBACCyB,IAAA,CAACV,QAAQ;MACRiB,YAAY,EAAGmC,uBAAyB;MACxC0C,gBAAgB,EAAGjD,qBAAuB;MAC1CgD,gBAAgB,EAAG/C,wBAA0B;MAC7CW,QAAQ,EAAGA,QAAU;MAAAwB,QAAA,EAEnBF,cAAc,iBACfrE,IAAA,CAACT,kBAAkB;QAClBgB,YAAY,EAAGmC,uBAAyB;QACxCK,QAAQ,EAAGA,QAAU;QACrBsC,QAAQ,EAAGlD;MAAuB,CAClC;IACD,CACQ,CAAC;EAEb,CAAC,EAAE,CACFO,uBAAuB,EACvBK,QAAQ,EACRZ,qBAAqB,EACrBC,wBAAwB,EACxBiC,cAAc,CACb,CAAC;EAEH,MAAMmB,oBAAoB,GAAKb,KAAK,IAAM;IACzC;IACA,IAAKA,KAAK,KAAK,UAAU,EAAG;MAC3B3C,0BAA0B,CAAE,IAAK,CAAC;IACnC;IACAQ,cAAc,CAAEmC,KAAM,CAAC;EACxB,CAAC;;EAED;EACA,MAAMc,OAAO,GAAGjH,MAAM,CAAC,CAAC;EACxBC,eAAe,CAAE,MAAM;IACtB,IAAKgH,OAAO,CAACnC,OAAO,EAAG;MACtBF,MAAM,CAACC,qBAAqB,CAAE,MAAM;QACnCoC,OAAO,CAACnC,OAAO,CACbI,aAAa,CAAE,oCAAqC,CAAC,EACpDC,KAAK,CAAC,CAAC;MACX,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,EAAG,CAAC;EAEP,oBACCvD,KAAA;IACCqE,SAAS,EAAGtG,IAAI,CAAE,6BAA6B,EAAE;MAChD,YAAY,EAAEiG,gBAAgB,IAAIC,cAAc;MAChD,aAAa,EAAEhD;IAChB,CAAE,CAAG;IACLD,GAAG,EAAGA,GAAK;IAAAmD,QAAA,gBAEXvE,IAAA;MAAKyE,SAAS,EAAC,kCAAkC;MAAAF,QAAA,eAChDvE,IAAA,CAACJ,aAAa;QACbwB,GAAG,EAAGqE,OAAS;QACf9E,QAAQ,EAAG6E,oBAAsB;QACjCvE,OAAO,EAAGA,OAAS;QACnBsB,WAAW,EAAGA,WAAa;QAC3BmD,gBAAgB,EAAG7G,EAAE,CAAE,sBAAuB,CAAG;QACjD8G,IAAI,EAAG,CACN;UACCC,IAAI,EAAE,QAAQ;UACdC,KAAK,EAAEhH,EAAE,CAAE,QAAS,CAAC;UACrBiH,KAAK,eACJ1F,KAAA,CAAAF,SAAA;YAAAqE,QAAA,GACGD,cAAc,EACd/B,WAAW,KAAK,QAAQ,IACzB,CAAEX,kBAAkB,IACpBoD,SAAS;UAAA,CACT;QAEJ,CAAC,EACD;UACCY,IAAI,EAAE,UAAU;UAChBC,KAAK,EAAEhH,EAAE,CAAE,UAAW,CAAC;UACvBiH,KAAK,eACJ1F,KAAA,CAAAF,SAAA;YAAAqE,QAAA,GACGD,cAAc,EACd/B,WAAW,KAAK,UAAU,IAC3B,CAAEX,kBAAkB,IACpBsD,WAAW;UAAA,CACX;QAEJ,CAAC,EACD;UACCU,IAAI,EAAE,OAAO;UACbC,KAAK,EAAEhH,EAAE,CAAE,OAAQ,CAAC;UACpBiH,KAAK,eACJ1F,KAAA,CAAAF,SAAA;YAAAqE,QAAA,GACGD,cAAc,EACdiB,QAAQ;UAAA,CACT;QAEJ,CAAC;MACC,CACH;IAAC,CACE,CAAC,EACJ3E,qBAAqB,IAAIiB,WAAW,iBACrC7B,IAAA,CAACpB,OAAO;MACP6F,SAAS,EAAC,mDAAmD;MAC7DsB,SAAS,EAAC,aAAa;MACvBC,MAAM,EAAG,EAAI;MACbC,YAAY,EAAG,KAAO;MACtBC,OAAO,EAAG,KAAO;MAAA3B,QAAA,eAEjBvE,IAAA,CAACd,oBAAoB;QAAC8E,IAAI,EAAGnC;MAAa,CAAE;IAAC,CACrC,CACT;EAAA,CACG,CAAC;AAER;AAEA,OAAO,MAAMsE,mBAAmB,GAAG/H,UAAU,CAAEkC,YAAa,CAAC;AAE7D,SAAS8F,kBAAkBA,CAAEC,KAAK,EAAEjF,GAAG,EAAG;EACzC,oBACCpB,IAAA,CAACmG,mBAAmB;IAAA,GACdE,KAAK;IACVrF,0BAA0B,EAAGX,IAAM;IACnCe,GAAG,EAAGA;EAAK,CACX,CAAC;AAEJ;AAEA,eAAehD,UAAU,CAAEgI,kBAAmB,CAAC","ignoreList":[]}
@@ -1,10 +1,8 @@
1
- /* wp:polyfill */
2
1
  /**
3
2
  * WordPress dependencies
4
3
  */
5
- import { PanelBody, __experimentalUseSlotFills as useSlotFills } from '@wordpress/components';
6
- import { useSelect } from '@wordpress/data';
7
- import { useLayoutEffect, useState } from '@wordpress/element';
4
+ import { __experimentalUseSlotFills as useSlotFills, __experimentalToolsPanel as ToolsPanel, __experimentalToolsPanelItem as ToolsPanelItem } from '@wordpress/components';
5
+ import { useDispatch, useSelect } from '@wordpress/data';
8
6
  import { __ } from '@wordpress/i18n';
9
7
 
10
8
  /**
@@ -13,38 +11,68 @@ import { __ } from '@wordpress/i18n';
13
11
  import InspectorControlsGroups from '../inspector-controls/groups';
14
12
  import { default as InspectorControls } from '../inspector-controls';
15
13
  import { store as blockEditorStore } from '../../store';
14
+ import { useToolsPanelDropdownMenuProps } from '../global-styles/utils';
15
+ import { cleanEmptyObject } from '../../hooks/utils';
16
16
  import { jsx as _jsx } from "react/jsx-runtime";
17
17
  const PositionControlsPanel = () => {
18
- const [initialOpen, setInitialOpen] = useState();
19
-
20
- // Determine whether the panel should be expanded.
21
18
  const {
22
- multiSelectedBlocks
19
+ selectedClientIds,
20
+ selectedBlocks,
21
+ hasPositionAttribute
23
22
  } = useSelect(select => {
24
23
  const {
25
24
  getBlocksByClientId,
26
25
  getSelectedBlockClientIds
27
26
  } = select(blockEditorStore);
28
- const clientIds = getSelectedBlockClientIds();
27
+ const selectedBlockClientIds = getSelectedBlockClientIds();
28
+ const _selectedBlocks = getBlocksByClientId(selectedBlockClientIds);
29
29
  return {
30
- multiSelectedBlocks: getBlocksByClientId(clientIds)
30
+ selectedClientIds: selectedBlockClientIds,
31
+ selectedBlocks: _selectedBlocks,
32
+ hasPositionAttribute: _selectedBlocks?.some(({
33
+ attributes
34
+ }) => !!attributes?.style?.position?.type)
31
35
  };
32
36
  }, []);
33
- useLayoutEffect(() => {
34
- // If any selected block has a position set, open the panel by default.
35
- // The first block's value will still be used within the control though.
36
- if (initialOpen === undefined) {
37
- setInitialOpen(multiSelectedBlocks.some(({
38
- attributes
39
- }) => !!attributes?.style?.position?.type));
37
+ const {
38
+ updateBlockAttributes
39
+ } = useDispatch(blockEditorStore);
40
+ const dropdownMenuProps = useToolsPanelDropdownMenuProps();
41
+ function resetPosition() {
42
+ if (!selectedClientIds?.length || !selectedBlocks?.length) {
43
+ return;
40
44
  }
41
- }, [initialOpen, multiSelectedBlocks, setInitialOpen]);
42
- return /*#__PURE__*/_jsx(PanelBody, {
45
+ const attributesByClientId = Object.fromEntries(selectedBlocks?.map(({
46
+ clientId,
47
+ attributes
48
+ }) => [clientId, {
49
+ style: cleanEmptyObject({
50
+ ...attributes?.style,
51
+ position: {
52
+ ...attributes?.style?.position,
53
+ type: undefined,
54
+ top: undefined,
55
+ right: undefined,
56
+ bottom: undefined,
57
+ left: undefined
58
+ }
59
+ })
60
+ }]));
61
+ updateBlockAttributes(selectedClientIds, attributesByClientId, true);
62
+ }
63
+ return /*#__PURE__*/_jsx(ToolsPanel, {
43
64
  className: "block-editor-block-inspector__position",
44
- title: __('Position'),
45
- initialOpen: initialOpen !== null && initialOpen !== void 0 ? initialOpen : false,
46
- children: /*#__PURE__*/_jsx(InspectorControls.Slot, {
47
- group: "position"
65
+ label: __('Position'),
66
+ resetAll: resetPosition,
67
+ dropdownMenuProps: dropdownMenuProps,
68
+ children: /*#__PURE__*/_jsx(ToolsPanelItem, {
69
+ isShownByDefault: hasPositionAttribute,
70
+ label: __('Position'),
71
+ hasValue: () => hasPositionAttribute,
72
+ onDeselect: resetPosition,
73
+ children: /*#__PURE__*/_jsx(InspectorControls.Slot, {
74
+ group: "position"
75
+ })
48
76
  })
49
77
  });
50
78
  };
@@ -1 +1 @@
1
- {"version":3,"names":["PanelBody","__experimentalUseSlotFills","useSlotFills","useSelect","useLayoutEffect","useState","__","InspectorControlsGroups","default","InspectorControls","store","blockEditorStore","jsx","_jsx","PositionControlsPanel","initialOpen","setInitialOpen","multiSelectedBlocks","select","getBlocksByClientId","getSelectedBlockClientIds","clientIds","undefined","some","attributes","style","position","type","className","title","children","Slot","group","PositionControls","fills","name","hasFills","Boolean","length"],"sources":["@wordpress/block-editor/src/components/inspector-controls-tabs/position-controls-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tPanelBody,\n\t__experimentalUseSlotFills as useSlotFills,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useLayoutEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport InspectorControlsGroups from '../inspector-controls/groups';\nimport { default as InspectorControls } from '../inspector-controls';\nimport { store as blockEditorStore } from '../../store';\n\nconst PositionControlsPanel = () => {\n\tconst [ initialOpen, setInitialOpen ] = useState();\n\n\t// Determine whether the panel should be expanded.\n\tconst { multiSelectedBlocks } = useSelect( ( select ) => {\n\t\tconst { getBlocksByClientId, getSelectedBlockClientIds } =\n\t\t\tselect( blockEditorStore );\n\t\tconst clientIds = getSelectedBlockClientIds();\n\t\treturn {\n\t\t\tmultiSelectedBlocks: getBlocksByClientId( clientIds ),\n\t\t};\n\t}, [] );\n\n\tuseLayoutEffect( () => {\n\t\t// If any selected block has a position set, open the panel by default.\n\t\t// The first block's value will still be used within the control though.\n\t\tif ( initialOpen === undefined ) {\n\t\t\tsetInitialOpen(\n\t\t\t\tmultiSelectedBlocks.some(\n\t\t\t\t\t( { attributes } ) => !! attributes?.style?.position?.type\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}, [ initialOpen, multiSelectedBlocks, setInitialOpen ] );\n\n\treturn (\n\t\t<PanelBody\n\t\t\tclassName=\"block-editor-block-inspector__position\"\n\t\t\ttitle={ __( 'Position' ) }\n\t\t\tinitialOpen={ initialOpen ?? false }\n\t\t>\n\t\t\t<InspectorControls.Slot group=\"position\" />\n\t\t</PanelBody>\n\t);\n};\n\nconst PositionControls = () => {\n\tconst fills = useSlotFills( InspectorControlsGroups.position.name );\n\tconst hasFills = Boolean( fills && fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn null;\n\t}\n\n\treturn <PositionControlsPanel />;\n};\n\nexport default PositionControls;\n"],"mappings":";AAAA;AACA;AACA;AACA,SACCA,SAAS,EACTC,0BAA0B,IAAIC,YAAY,QACpC,uBAAuB;AAC9B,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,eAAe,EAAEC,QAAQ,QAAQ,oBAAoB;AAC9D,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,OAAOC,uBAAuB,MAAM,8BAA8B;AAClE,SAASC,OAAO,IAAIC,iBAAiB,QAAQ,uBAAuB;AACpE,SAASC,KAAK,IAAIC,gBAAgB,QAAQ,aAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExD,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACnC,MAAM,CAAEC,WAAW,EAAEC,cAAc,CAAE,GAAGX,QAAQ,CAAC,CAAC;;EAElD;EACA,MAAM;IAAEY;EAAoB,CAAC,GAAGd,SAAS,CAAIe,MAAM,IAAM;IACxD,MAAM;MAAEC,mBAAmB;MAAEC;IAA0B,CAAC,GACvDF,MAAM,CAAEP,gBAAiB,CAAC;IAC3B,MAAMU,SAAS,GAAGD,yBAAyB,CAAC,CAAC;IAC7C,OAAO;MACNH,mBAAmB,EAAEE,mBAAmB,CAAEE,SAAU;IACrD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEPjB,eAAe,CAAE,MAAM;IACtB;IACA;IACA,IAAKW,WAAW,KAAKO,SAAS,EAAG;MAChCN,cAAc,CACbC,mBAAmB,CAACM,IAAI,CACvB,CAAE;QAAEC;MAAW,CAAC,KAAM,CAAC,CAAEA,UAAU,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,IACvD,CACD,CAAC;IACF;EACD,CAAC,EAAE,CAAEZ,WAAW,EAAEE,mBAAmB,EAAED,cAAc,CAAG,CAAC;EAEzD,oBACCH,IAAA,CAACb,SAAS;IACT4B,SAAS,EAAC,wCAAwC;IAClDC,KAAK,EAAGvB,EAAE,CAAE,UAAW,CAAG;IAC1BS,WAAW,EAAGA,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI,KAAO;IAAAe,QAAA,eAEpCjB,IAAA,CAACJ,iBAAiB,CAACsB,IAAI;MAACC,KAAK,EAAC;IAAU,CAAE;EAAC,CACjC,CAAC;AAEd,CAAC;AAED,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAC9B,MAAMC,KAAK,GAAGhC,YAAY,CAAEK,uBAAuB,CAACmB,QAAQ,CAACS,IAAK,CAAC;EACnE,MAAMC,QAAQ,GAAGC,OAAO,CAAEH,KAAK,IAAIA,KAAK,CAACI,MAAO,CAAC;EAEjD,IAAK,CAAEF,QAAQ,EAAG;IACjB,OAAO,IAAI;EACZ;EAEA,oBAAOvB,IAAA,CAACC,qBAAqB,IAAE,CAAC;AACjC,CAAC;AAED,eAAemB,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["__experimentalUseSlotFills","useSlotFills","__experimentalToolsPanel","ToolsPanel","__experimentalToolsPanelItem","ToolsPanelItem","useDispatch","useSelect","__","InspectorControlsGroups","default","InspectorControls","store","blockEditorStore","useToolsPanelDropdownMenuProps","cleanEmptyObject","jsx","_jsx","PositionControlsPanel","selectedClientIds","selectedBlocks","hasPositionAttribute","select","getBlocksByClientId","getSelectedBlockClientIds","selectedBlockClientIds","_selectedBlocks","some","attributes","style","position","type","updateBlockAttributes","dropdownMenuProps","resetPosition","length","attributesByClientId","Object","fromEntries","map","clientId","undefined","top","right","bottom","left","className","label","resetAll","children","isShownByDefault","hasValue","onDeselect","Slot","group","PositionControls","fills","name","hasFills","Boolean"],"sources":["@wordpress/block-editor/src/components/inspector-controls-tabs/position-controls-panel.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\t__experimentalUseSlotFills as useSlotFills,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport InspectorControlsGroups from '../inspector-controls/groups';\nimport { default as InspectorControls } from '../inspector-controls';\nimport { store as blockEditorStore } from '../../store';\nimport { useToolsPanelDropdownMenuProps } from '../global-styles/utils';\nimport { cleanEmptyObject } from '../../hooks/utils';\n\nconst PositionControlsPanel = () => {\n\tconst { selectedClientIds, selectedBlocks, hasPositionAttribute } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst { getBlocksByClientId, getSelectedBlockClientIds } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst selectedBlockClientIds = getSelectedBlockClientIds();\n\t\t\tconst _selectedBlocks = getBlocksByClientId(\n\t\t\t\tselectedBlockClientIds\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tselectedClientIds: selectedBlockClientIds,\n\t\t\t\tselectedBlocks: _selectedBlocks,\n\t\t\t\thasPositionAttribute: _selectedBlocks?.some(\n\t\t\t\t\t( { attributes } ) => !! attributes?.style?.position?.type\n\t\t\t\t),\n\t\t\t};\n\t\t}, [] );\n\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\n\tfunction resetPosition() {\n\t\tif ( ! selectedClientIds?.length || ! selectedBlocks?.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst attributesByClientId = Object.fromEntries(\n\t\t\tselectedBlocks?.map( ( { clientId, attributes } ) => [\n\t\t\t\tclientId,\n\t\t\t\t{\n\t\t\t\t\tstyle: cleanEmptyObject( {\n\t\t\t\t\t\t...attributes?.style,\n\t\t\t\t\t\tposition: {\n\t\t\t\t\t\t\t...attributes?.style?.position,\n\t\t\t\t\t\t\ttype: undefined,\n\t\t\t\t\t\t\ttop: undefined,\n\t\t\t\t\t\t\tright: undefined,\n\t\t\t\t\t\t\tbottom: undefined,\n\t\t\t\t\t\t\tleft: undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t] )\n\t\t);\n\n\t\tupdateBlockAttributes( selectedClientIds, attributesByClientId, true );\n\t}\n\n\treturn (\n\t\t<ToolsPanel\n\t\t\tclassName=\"block-editor-block-inspector__position\"\n\t\t\tlabel={ __( 'Position' ) }\n\t\t\tresetAll={ resetPosition }\n\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t>\n\t\t\t<ToolsPanelItem\n\t\t\t\tisShownByDefault={ hasPositionAttribute }\n\t\t\t\tlabel={ __( 'Position' ) }\n\t\t\t\thasValue={ () => hasPositionAttribute }\n\t\t\t\tonDeselect={ resetPosition }\n\t\t\t>\n\t\t\t\t<InspectorControls.Slot group=\"position\" />\n\t\t\t</ToolsPanelItem>\n\t\t</ToolsPanel>\n\t);\n};\n\nconst PositionControls = () => {\n\tconst fills = useSlotFills( InspectorControlsGroups.position.name );\n\tconst hasFills = Boolean( fills && fills.length );\n\n\tif ( ! hasFills ) {\n\t\treturn null;\n\t}\n\n\treturn <PositionControlsPanel />;\n};\n\nexport default PositionControls;\n"],"mappings":"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","ignoreList":[]}
@@ -8,12 +8,56 @@ import { _x, sprintf } from '@wordpress/i18n';
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
+ import useSpacingSizes from './hooks/use-spacing-sizes';
11
12
  import AxialInputControls from './input-controls/axial';
12
13
  import SeparatedInputControls from './input-controls/separated';
13
14
  import SingleInputControl from './input-controls/single';
14
15
  import LinkedButton from './linked-button';
15
- import useSpacingSizes from './hooks/use-spacing-sizes';
16
16
  import { ALL_SIDES, DEFAULT_VALUES, LABELS, VIEWS, getInitialView } from './utils';
17
+
18
+ /**
19
+ * A flexible control for managing spacing values in the block editor. Supports single, axial,
20
+ * and separated input controls for different spacing configurations with automatic view selection
21
+ * based on current values and available sides.
22
+ *
23
+ * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/spacing-sizes-control/README.md
24
+ *
25
+ * @example
26
+ * ```jsx
27
+ * import { __experimentalSpacingSizesControl as SpacingSizesControl } from '@wordpress/block-editor';
28
+ * import { useState } from '@wordpress/element';
29
+ *
30
+ * function Example() {
31
+ * const [ sides, setSides ] = useState( {
32
+ * top: '0px',
33
+ * right: '0px',
34
+ * bottom: '0px',
35
+ * left: '0px',
36
+ * } );
37
+ *
38
+ * return (
39
+ * <SpacingSizesControl
40
+ * values={ sides }
41
+ * onChange={ setSides }
42
+ * label="Sides"
43
+ * />
44
+ * );
45
+ * }
46
+ * ```
47
+ *
48
+ * @param {Object} props Component props.
49
+ * @param {Object} props.inputProps Additional props for input controls.
50
+ * @param {string} props.label Label for the control.
51
+ * @param {number} props.minimumCustomValue Minimum value for custom input.
52
+ * @param {Function} props.onChange Called when spacing values change.
53
+ * @param {Function} props.onMouseOut Called when mouse leaves the control.
54
+ * @param {Function} props.onMouseOver Called when mouse enters the control.
55
+ * @param {boolean} props.showSideInLabel Show side in control label.
56
+ * @param {Array} props.sides Available sides for control.
57
+ * @param {boolean} props.useSelect Use select control for predefined values.
58
+ * @param {Object} props.values Current spacing values.
59
+ * @return {Element} Spacing sizes control component.
60
+ */
17
61
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
62
  export default function SpacingSizesControl({
19
63
  inputProps,