@wordpress/block-editor 15.3.1-next.6870dfe5b.0 → 15.3.1-next.6f42e1382.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 (62) hide show
  1. package/build/autocompleters/block.js +2 -4
  2. package/build/autocompleters/block.js.map +1 -1
  3. package/build/components/block-list/index.js +3 -1
  4. package/build/components/block-list/index.js.map +1 -1
  5. package/build/components/block-switcher/index.js +10 -5
  6. package/build/components/block-switcher/index.js.map +1 -1
  7. package/build/components/block-toolbar/index.js +5 -2
  8. package/build/components/block-toolbar/index.js.map +1 -1
  9. package/build/components/block-tools/insertion-point.js +10 -0
  10. package/build/components/block-tools/insertion-point.js.map +1 -1
  11. package/build/components/block-variation-transforms/index.js +9 -5
  12. package/build/components/block-variation-transforms/index.js.map +1 -1
  13. package/build/components/link-control/search-item.js +30 -12
  14. package/build/components/link-control/search-item.js.map +1 -1
  15. package/build/store/private-selectors.js +7 -20
  16. package/build/store/private-selectors.js.map +1 -1
  17. package/build/store/reducer.js +60 -0
  18. package/build/store/reducer.js.map +1 -1
  19. package/build/store/selectors.js +16 -30
  20. package/build/store/selectors.js.map +1 -1
  21. package/build/store/utils.js +18 -0
  22. package/build/store/utils.js.map +1 -1
  23. package/build-module/autocompleters/block.js +3 -5
  24. package/build-module/autocompleters/block.js.map +1 -1
  25. package/build-module/components/block-list/index.js +3 -1
  26. package/build-module/components/block-list/index.js.map +1 -1
  27. package/build-module/components/block-switcher/index.js +10 -5
  28. package/build-module/components/block-switcher/index.js.map +1 -1
  29. package/build-module/components/block-toolbar/index.js +5 -2
  30. package/build-module/components/block-toolbar/index.js.map +1 -1
  31. package/build-module/components/block-tools/insertion-point.js +11 -1
  32. package/build-module/components/block-tools/insertion-point.js.map +1 -1
  33. package/build-module/components/block-variation-transforms/index.js +9 -5
  34. package/build-module/components/block-variation-transforms/index.js.map +1 -1
  35. package/build-module/components/link-control/search-item.js +30 -12
  36. package/build-module/components/link-control/search-item.js.map +1 -1
  37. package/build-module/store/private-selectors.js +7 -20
  38. package/build-module/store/private-selectors.js.map +1 -1
  39. package/build-module/store/reducer.js +60 -0
  40. package/build-module/store/reducer.js.map +1 -1
  41. package/build-module/store/selectors.js +16 -30
  42. package/build-module/store/selectors.js.map +1 -1
  43. package/build-module/store/utils.js +17 -0
  44. package/build-module/store/utils.js.map +1 -1
  45. package/build-style/style-rtl.css +0 -1
  46. package/build-style/style.css +0 -1
  47. package/package.json +34 -34
  48. package/src/autocompleters/block.js +6 -11
  49. package/src/components/block-list/index.js +7 -1
  50. package/src/components/block-switcher/index.js +8 -1
  51. package/src/components/block-toolbar/index.js +11 -5
  52. package/src/components/block-tools/insertion-point.js +19 -1
  53. package/src/components/block-variation-transforms/index.js +38 -27
  54. package/src/components/link-control/search-item.js +31 -12
  55. package/src/components/link-control/style.scss +0 -1
  56. package/src/components/link-control/test/index.js +14 -2
  57. package/src/store/private-selectors.js +10 -23
  58. package/src/store/reducer.js +105 -0
  59. package/src/store/selectors.js +38 -59
  60. package/src/store/test/reducer.js +107 -0
  61. package/src/store/test/selectors.js +65 -192
  62. package/src/store/utils.js +21 -0
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useSelect","useDispatch","useRef","createContext","useContext","__unstableMotion","motion","useReducedMotion","Inserter","store","blockEditorStore","BlockPopoverInbetween","BlockDropZonePopover","unlock","jsx","_jsx","jsxs","_jsxs","InsertionPointOpenRef","displayName","InbetweenInsertionPointPopover","__unstablePopoverSlot","__unstableContentRef","operation","nearestSide","selectBlock","hideInsertionPoint","openRef","ref","orientation","previousClientId","nextClientId","rootClientId","isInserterShown","isDistractionFree","isZoomOutMode","select","getBlockOrder","getBlockListSettings","getBlockInsertionPoint","isBlockBeingDragged","getPreviousBlockClientId","getNextBlockClientId","getSettings","isZoomOut","insertionPoint","order","length","_previousClientId","index","_nextClientId","settings","__unstableWithInserter","getBlockEditingMode","disableMotion","onClick","event","target","current","maybeHideInserterPoint","onFocus","lineVariants","start","opacity","scale","rest","transition","delay","type","hover","inserterVariants","orientationClassname","className","children","div","layout","initial","animate","whileHover","whileTap","exit","tabIndex","onHoverEnd","variants","position","clientId","__experimentalIsQuick","onToggle","isOpen","onSelectOrClose","InsertionPoint","props","isVisible","isBlockListEmpty","isBlockInsertionPointVisible","getBlockCount","blockInsertionPoint"],"sources":["@wordpress/block-editor/src/components/block-tools/insertion-point.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useRef, createContext, useContext } from '@wordpress/element';\nimport { __unstableMotion as motion } from '@wordpress/components';\nimport { useReducedMotion } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Inserter from '../inserter';\nimport { store as blockEditorStore } from '../../store';\nimport BlockPopoverInbetween from '../block-popover/inbetween';\nimport BlockDropZonePopover from '../block-popover/drop-zone';\nimport { unlock } from '../../lock-unlock';\n\nexport const InsertionPointOpenRef = createContext();\nInsertionPointOpenRef.displayName = 'InsertionPointOpenRefContext';\n\nfunction InbetweenInsertionPointPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\toperation = 'insert',\n\tnearestSide = 'right',\n} ) {\n\tconst { selectBlock, hideInsertionPoint } = useDispatch( blockEditorStore );\n\tconst openRef = useContext( InsertionPointOpenRef );\n\tconst ref = useRef();\n\tconst {\n\t\torientation,\n\t\tpreviousClientId,\n\t\tnextClientId,\n\t\trootClientId,\n\t\tisInserterShown,\n\t\tisDistractionFree,\n\t\tisZoomOutMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockListSettings,\n\t\t\tgetBlockInsertionPoint,\n\t\t\tisBlockBeingDragged,\n\t\t\tgetPreviousBlockClientId,\n\t\t\tgetNextBlockClientId,\n\t\t\tgetSettings,\n\t\t\tisZoomOut,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\n\t\tif ( ! order.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet _previousClientId = order[ insertionPoint.index - 1 ];\n\t\tlet _nextClientId = order[ insertionPoint.index ];\n\n\t\twhile ( isBlockBeingDragged( _previousClientId ) ) {\n\t\t\t_previousClientId = getPreviousBlockClientId( _previousClientId );\n\t\t}\n\n\t\twhile ( isBlockBeingDragged( _nextClientId ) ) {\n\t\t\t_nextClientId = getNextBlockClientId( _nextClientId );\n\t\t}\n\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tpreviousClientId: _previousClientId,\n\t\t\tnextClientId: _nextClientId,\n\t\t\torientation:\n\t\t\t\tgetBlockListSettings( insertionPoint.rootClientId )\n\t\t\t\t\t?.orientation || 'vertical',\n\t\t\trootClientId: insertionPoint.rootClientId,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\tisInserterShown: insertionPoint?.__unstableWithInserter,\n\t\t\tisZoomOutMode: isZoomOut(),\n\t\t};\n\t}, [] );\n\tconst { getBlockEditingMode } = useSelect( blockEditorStore );\n\n\tconst disableMotion = useReducedMotion();\n\n\tfunction onClick( event ) {\n\t\tif (\n\t\t\tevent.target === ref.current &&\n\t\t\tnextClientId &&\n\t\t\tgetBlockEditingMode( nextClientId ) !== 'disabled'\n\t\t) {\n\t\t\tselectBlock( nextClientId, -1 );\n\t\t}\n\t}\n\n\tfunction maybeHideInserterPoint( event ) {\n\t\t// Only hide the inserter if it's triggered on the wrapper,\n\t\t// and the inserter is not open.\n\t\tif ( event.target === ref.current && ! openRef.current ) {\n\t\t\thideInsertionPoint();\n\t\t}\n\t}\n\n\tfunction onFocus( event ) {\n\t\t// Only handle click on the wrapper specifically, and not an event\n\t\t// bubbled from the inserter itself.\n\t\tif ( event.target !== ref.current ) {\n\t\t\topenRef.current = true;\n\t\t}\n\t}\n\n\tconst lineVariants = {\n\t\t// Initial position starts from the center and invisible.\n\t\tstart: {\n\t\t\topacity: 0,\n\t\t\tscale: 0,\n\t\t},\n\t\t// The line expands to fill the container. If the inserter is visible it\n\t\t// is delayed so it appears orchestrated.\n\t\trest: {\n\t\t\topacity: 1,\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: isInserterShown ? 0.5 : 0, type: 'tween' },\n\t\t},\n\t\thover: {\n\t\t\topacity: 1,\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: 0.5, type: 'tween' },\n\t\t},\n\t};\n\n\tconst inserterVariants = {\n\t\tstart: {\n\t\t\tscale: disableMotion ? 1 : 0,\n\t\t},\n\t\trest: {\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: 0.4, type: 'tween' },\n\t\t},\n\t};\n\n\tif ( isDistractionFree ) {\n\t\treturn null;\n\t}\n\n\t// Zoom out mode should only show the insertion point for the insert operation.\n\t// Other operations such as \"group\" are when the editor tries to create a row\n\t// block by grouping the block being dragged with the block it's being dropped\n\t// onto.\n\tif ( isZoomOutMode && operation !== 'insert' ) {\n\t\treturn null;\n\t}\n\n\tconst orientationClassname =\n\t\torientation === 'horizontal' || operation === 'group'\n\t\t\t? 'is-horizontal'\n\t\t\t: 'is-vertical';\n\n\tconst className = clsx(\n\t\t'block-editor-block-list__insertion-point',\n\t\torientationClassname\n\t);\n\n\treturn (\n\t\t<BlockPopoverInbetween\n\t\t\tpreviousClientId={ previousClientId }\n\t\t\tnextClientId={ nextClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t\toperation={ operation }\n\t\t\tnearestSide={ nearestSide }\n\t\t>\n\t\t\t<motion.div\n\t\t\t\tlayout={ ! disableMotion }\n\t\t\t\tinitial={ disableMotion ? 'rest' : 'start' }\n\t\t\t\tanimate=\"rest\"\n\t\t\t\twhileHover=\"hover\"\n\t\t\t\twhileTap=\"pressed\"\n\t\t\t\texit=\"start\"\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tclassName={ clsx( className, {\n\t\t\t\t\t'is-with-inserter': isInserterShown,\n\t\t\t\t} ) }\n\t\t\t\tonHoverEnd={ maybeHideInserterPoint }\n\t\t\t>\n\t\t\t\t<motion.div\n\t\t\t\t\tvariants={ lineVariants }\n\t\t\t\t\tclassName=\"block-editor-block-list__insertion-point-indicator\"\n\t\t\t\t\tdata-testid=\"block-list-insertion-point-indicator\"\n\t\t\t\t/>\n\t\t\t\t{ isInserterShown && (\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tvariants={ inserterVariants }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-block-list__insertion-point-inserter'\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Inserter\n\t\t\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\t\t\tclientId={ nextClientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t\t\tonToggle={ ( isOpen ) => {\n\t\t\t\t\t\t\t\topenRef.current = isOpen;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonSelectOrClose={ () => {\n\t\t\t\t\t\t\t\topenRef.current = false;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</motion.div>\n\t\t\t\t) }\n\t\t\t</motion.div>\n\t\t</BlockPopoverInbetween>\n\t);\n}\n\nexport default function InsertionPoint( props ) {\n\tconst { insertionPoint, isVisible, isBlockListEmpty } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockCount,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockInsertionPoint = getBlockInsertionPoint();\n\t\t\treturn {\n\t\t\t\tinsertionPoint: blockInsertionPoint,\n\t\t\t\tisVisible: isBlockInsertionPointVisible(),\n\t\t\t\tisBlockListEmpty:\n\t\t\t\t\tgetBlockCount( blockInsertionPoint?.rootClientId ) === 0,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif (\n\t\t! isVisible ||\n\t\t// Don't render the insertion point if the block list is empty.\n\t\t// The insertion point will be represented by the appender instead.\n\t\tisBlockListEmpty\n\t) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Render a popover that overlays the block when the desired operation is to replace it.\n\t * Otherwise, render a popover in between blocks for the indication of inserting between them.\n\t */\n\treturn insertionPoint.operation === 'replace' ? (\n\t\t<BlockDropZonePopover\n\t\t\t// Force remount to trigger the animation.\n\t\t\tkey={ `${ insertionPoint.rootClientId }-${ insertionPoint.index }` }\n\t\t\t{ ...props }\n\t\t/>\n\t) : (\n\t\t<InbetweenInsertionPointPopover\n\t\t\toperation={ insertionPoint.operation }\n\t\t\tnearestSide={ insertionPoint.nearestSide }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useSelect","useDispatch","useRef","createContext","useContext","useCallback","__unstableMotion","motion","useReducedMotion","Inserter","store","blockEditorStore","BlockPopoverInbetween","BlockDropZonePopover","unlock","jsx","_jsx","jsxs","_jsxs","InsertionPointOpenRef","displayName","InbetweenInsertionPointPopover","__unstablePopoverSlot","__unstableContentRef","operation","nearestSide","selectBlock","hideInsertionPoint","openRef","ref","orientation","previousClientId","nextClientId","rootClientId","isInserterShown","isDistractionFree","isZoomOutMode","select","getBlockOrder","getBlockListSettings","getBlockInsertionPoint","isBlockBeingDragged","getPreviousBlockClientId","getNextBlockClientId","getSettings","isZoomOut","insertionPoint","order","length","_previousClientId","index","_nextClientId","settings","__unstableWithInserter","getBlockEditingMode","disableMotion","onClick","event","target","current","maybeHideInserterPoint","onFocus","maybeResetOpenRef","node","lineVariants","start","opacity","scale","rest","transition","delay","type","hover","inserterVariants","orientationClassname","className","children","div","layout","initial","animate","whileHover","whileTap","exit","tabIndex","onHoverEnd","variants","position","clientId","__experimentalIsQuick","onToggle","isOpen","onSelectOrClose","InsertionPoint","props","isVisible","isBlockListEmpty","isBlockInsertionPointVisible","getBlockCount","blockInsertionPoint"],"sources":["@wordpress/block-editor/src/components/block-tools/insertion-point.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport {\n\tuseRef,\n\tcreateContext,\n\tuseContext,\n\tuseCallback,\n} from '@wordpress/element';\nimport { __unstableMotion as motion } from '@wordpress/components';\nimport { useReducedMotion } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Inserter from '../inserter';\nimport { store as blockEditorStore } from '../../store';\nimport BlockPopoverInbetween from '../block-popover/inbetween';\nimport BlockDropZonePopover from '../block-popover/drop-zone';\nimport { unlock } from '../../lock-unlock';\n\nexport const InsertionPointOpenRef = createContext();\nInsertionPointOpenRef.displayName = 'InsertionPointOpenRefContext';\n\nfunction InbetweenInsertionPointPopover( {\n\t__unstablePopoverSlot,\n\t__unstableContentRef,\n\toperation = 'insert',\n\tnearestSide = 'right',\n} ) {\n\tconst { selectBlock, hideInsertionPoint } = useDispatch( blockEditorStore );\n\tconst openRef = useContext( InsertionPointOpenRef );\n\tconst ref = useRef();\n\tconst {\n\t\torientation,\n\t\tpreviousClientId,\n\t\tnextClientId,\n\t\trootClientId,\n\t\tisInserterShown,\n\t\tisDistractionFree,\n\t\tisZoomOutMode,\n\t} = useSelect( ( select ) => {\n\t\tconst {\n\t\t\tgetBlockOrder,\n\t\t\tgetBlockListSettings,\n\t\t\tgetBlockInsertionPoint,\n\t\t\tisBlockBeingDragged,\n\t\t\tgetPreviousBlockClientId,\n\t\t\tgetNextBlockClientId,\n\t\t\tgetSettings,\n\t\t\tisZoomOut,\n\t\t} = unlock( select( blockEditorStore ) );\n\t\tconst insertionPoint = getBlockInsertionPoint();\n\t\tconst order = getBlockOrder( insertionPoint.rootClientId );\n\n\t\tif ( ! order.length ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tlet _previousClientId = order[ insertionPoint.index - 1 ];\n\t\tlet _nextClientId = order[ insertionPoint.index ];\n\n\t\twhile ( isBlockBeingDragged( _previousClientId ) ) {\n\t\t\t_previousClientId = getPreviousBlockClientId( _previousClientId );\n\t\t}\n\n\t\twhile ( isBlockBeingDragged( _nextClientId ) ) {\n\t\t\t_nextClientId = getNextBlockClientId( _nextClientId );\n\t\t}\n\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tpreviousClientId: _previousClientId,\n\t\t\tnextClientId: _nextClientId,\n\t\t\torientation:\n\t\t\t\tgetBlockListSettings( insertionPoint.rootClientId )\n\t\t\t\t\t?.orientation || 'vertical',\n\t\t\trootClientId: insertionPoint.rootClientId,\n\t\t\tisDistractionFree: settings.isDistractionFree,\n\t\t\tisInserterShown: insertionPoint?.__unstableWithInserter,\n\t\t\tisZoomOutMode: isZoomOut(),\n\t\t};\n\t}, [] );\n\tconst { getBlockEditingMode } = useSelect( blockEditorStore );\n\n\tconst disableMotion = useReducedMotion();\n\n\tfunction onClick( event ) {\n\t\tif (\n\t\t\tevent.target === ref.current &&\n\t\t\tnextClientId &&\n\t\t\tgetBlockEditingMode( nextClientId ) !== 'disabled'\n\t\t) {\n\t\t\tselectBlock( nextClientId, -1 );\n\t\t}\n\t}\n\n\tfunction maybeHideInserterPoint( event ) {\n\t\t// Only hide the inserter if it's triggered on the wrapper,\n\t\t// and the inserter is not open.\n\t\tif ( event.target === ref.current && ! openRef.current ) {\n\t\t\thideInsertionPoint();\n\t\t}\n\t}\n\n\tfunction onFocus( event ) {\n\t\t// Only handle click on the wrapper specifically, and not an event\n\t\t// bubbled from the inserter itself.\n\t\tif ( event.target !== ref.current ) {\n\t\t\topenRef.current = true;\n\t\t}\n\t}\n\n\t// Reset the insertion point reference when the Inserter unmounts,\n\t// avoids stale references when `onSelectOrClose` is not called.\n\t// See: https://github.com/WordPress/gutenberg/issues/65598#issuecomment-3249229264.\n\tconst maybeResetOpenRef = useCallback(\n\t\t( node ) => {\n\t\t\tif ( ! node && openRef.current ) {\n\t\t\t\topenRef.current = false;\n\t\t\t}\n\t\t},\n\t\t[ openRef ]\n\t);\n\n\tconst lineVariants = {\n\t\t// Initial position starts from the center and invisible.\n\t\tstart: {\n\t\t\topacity: 0,\n\t\t\tscale: 0,\n\t\t},\n\t\t// The line expands to fill the container. If the inserter is visible it\n\t\t// is delayed so it appears orchestrated.\n\t\trest: {\n\t\t\topacity: 1,\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: isInserterShown ? 0.5 : 0, type: 'tween' },\n\t\t},\n\t\thover: {\n\t\t\topacity: 1,\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: 0.5, type: 'tween' },\n\t\t},\n\t};\n\n\tconst inserterVariants = {\n\t\tstart: {\n\t\t\tscale: disableMotion ? 1 : 0,\n\t\t},\n\t\trest: {\n\t\t\tscale: 1,\n\t\t\ttransition: { delay: 0.4, type: 'tween' },\n\t\t},\n\t};\n\n\tif ( isDistractionFree ) {\n\t\treturn null;\n\t}\n\n\t// Zoom out mode should only show the insertion point for the insert operation.\n\t// Other operations such as \"group\" are when the editor tries to create a row\n\t// block by grouping the block being dragged with the block it's being dropped\n\t// onto.\n\tif ( isZoomOutMode && operation !== 'insert' ) {\n\t\treturn null;\n\t}\n\n\tconst orientationClassname =\n\t\torientation === 'horizontal' || operation === 'group'\n\t\t\t? 'is-horizontal'\n\t\t\t: 'is-vertical';\n\n\tconst className = clsx(\n\t\t'block-editor-block-list__insertion-point',\n\t\torientationClassname\n\t);\n\n\treturn (\n\t\t<BlockPopoverInbetween\n\t\t\tpreviousClientId={ previousClientId }\n\t\t\tnextClientId={ nextClientId }\n\t\t\t__unstablePopoverSlot={ __unstablePopoverSlot }\n\t\t\t__unstableContentRef={ __unstableContentRef }\n\t\t\toperation={ operation }\n\t\t\tnearestSide={ nearestSide }\n\t\t>\n\t\t\t<motion.div\n\t\t\t\tlayout={ ! disableMotion }\n\t\t\t\tinitial={ disableMotion ? 'rest' : 'start' }\n\t\t\t\tanimate=\"rest\"\n\t\t\t\twhileHover=\"hover\"\n\t\t\t\twhileTap=\"pressed\"\n\t\t\t\texit=\"start\"\n\t\t\t\tref={ ref }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tonFocus={ onFocus }\n\t\t\t\tclassName={ clsx( className, {\n\t\t\t\t\t'is-with-inserter': isInserterShown,\n\t\t\t\t} ) }\n\t\t\t\tonHoverEnd={ maybeHideInserterPoint }\n\t\t\t>\n\t\t\t\t<motion.div\n\t\t\t\t\tvariants={ lineVariants }\n\t\t\t\t\tclassName=\"block-editor-block-list__insertion-point-indicator\"\n\t\t\t\t\tdata-testid=\"block-list-insertion-point-indicator\"\n\t\t\t\t/>\n\t\t\t\t{ isInserterShown && (\n\t\t\t\t\t<motion.div\n\t\t\t\t\t\tvariants={ inserterVariants }\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\t'block-editor-block-list__insertion-point-inserter'\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Inserter\n\t\t\t\t\t\t\tref={ maybeResetOpenRef }\n\t\t\t\t\t\t\tposition=\"bottom center\"\n\t\t\t\t\t\t\tclientId={ nextClientId }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\t__experimentalIsQuick\n\t\t\t\t\t\t\tonToggle={ ( isOpen ) => {\n\t\t\t\t\t\t\t\topenRef.current = isOpen;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonSelectOrClose={ () => {\n\t\t\t\t\t\t\t\topenRef.current = false;\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</motion.div>\n\t\t\t\t) }\n\t\t\t</motion.div>\n\t\t</BlockPopoverInbetween>\n\t);\n}\n\nexport default function InsertionPoint( props ) {\n\tconst { insertionPoint, isVisible, isBlockListEmpty } = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetBlockInsertionPoint,\n\t\t\t\tisBlockInsertionPointVisible,\n\t\t\t\tgetBlockCount,\n\t\t\t} = select( blockEditorStore );\n\t\t\tconst blockInsertionPoint = getBlockInsertionPoint();\n\t\t\treturn {\n\t\t\t\tinsertionPoint: blockInsertionPoint,\n\t\t\t\tisVisible: isBlockInsertionPointVisible(),\n\t\t\t\tisBlockListEmpty:\n\t\t\t\t\tgetBlockCount( blockInsertionPoint?.rootClientId ) === 0,\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tif (\n\t\t! isVisible ||\n\t\t// Don't render the insertion point if the block list is empty.\n\t\t// The insertion point will be represented by the appender instead.\n\t\tisBlockListEmpty\n\t) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * Render a popover that overlays the block when the desired operation is to replace it.\n\t * Otherwise, render a popover in between blocks for the indication of inserting between them.\n\t */\n\treturn insertionPoint.operation === 'replace' ? (\n\t\t<BlockDropZonePopover\n\t\t\t// Force remount to trigger the animation.\n\t\t\tkey={ `${ insertionPoint.rootClientId }-${ insertionPoint.index }` }\n\t\t\t{ ...props }\n\t\t/>\n\t) : (\n\t\t<InbetweenInsertionPointPopover\n\t\t\toperation={ insertionPoint.operation }\n\t\t\tnearestSide={ insertionPoint.nearestSide }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -114,7 +114,8 @@ function __experimentalBlockVariationTransforms({
114
114
  const {
115
115
  activeBlockVariation,
116
116
  variations,
117
- isContentOnly
117
+ isContentOnly,
118
+ isSection
118
119
  } = useSelect(select => {
119
120
  const {
120
121
  getActiveBlockVariation,
@@ -123,8 +124,9 @@ function __experimentalBlockVariationTransforms({
123
124
  const {
124
125
  getBlockName,
125
126
  getBlockAttributes,
126
- getBlockEditingMode
127
- } = select(blockEditorStore);
127
+ getBlockEditingMode,
128
+ isSectionBlock
129
+ } = unlock(select(blockEditorStore));
128
130
  const name = blockClientId && getBlockName(blockClientId);
129
131
  const {
130
132
  hasContentRoleAttribute
@@ -133,7 +135,8 @@ function __experimentalBlockVariationTransforms({
133
135
  return {
134
136
  activeBlockVariation: getActiveBlockVariation(name, getBlockAttributes(blockClientId)),
135
137
  variations: name && getBlockVariations(name, 'transform'),
136
- isContentOnly: getBlockEditingMode(blockClientId) === 'contentOnly' && !isContentBlock
138
+ isContentOnly: getBlockEditingMode(blockClientId) === 'contentOnly' && !isContentBlock,
139
+ isSection: isSectionBlock(blockClientId)
137
140
  };
138
141
  }, [blockClientId]);
139
142
  const selectedValue = activeBlockVariation?.name;
@@ -158,7 +161,8 @@ function __experimentalBlockVariationTransforms({
158
161
  }) => name === variationName).attributes
159
162
  });
160
163
  };
161
- if (!variations?.length || isContentOnly) {
164
+ const hideVariationsForSections = window?.__experimentalContentOnlyPatternInsertion && isSection;
165
+ if (!variations?.length || isContentOnly || hideVariationsForSections) {
162
166
  return null;
163
167
  }
164
168
  const baseClass = 'block-editor-block-variation-transforms';
@@ -1 +1 @@
1
- {"version":3,"names":["store","blocksStore","__","sprintf","Button","DropdownMenu","MenuGroup","MenuItemsChoice","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOptionIcon","ToggleGroupControlOptionIcon","VisuallyHidden","useSelect","useDispatch","useMemo","chevronDown","BlockIcon","blockEditorStore","unlock","jsx","_jsx","jsxs","_jsxs","VariationsButtons","className","onSelectVariation","selectedValue","variations","children","as","map","variation","__next40pxDefaultSize","size","icon","showColors","isPressed","name","label","title","onClick","showTooltip","VariationsDropdown","selectOptions","description","value","info","text","popoverProps","position","toggleProps","iconPosition","choices","onSelect","VariationsToggleGroupControl","hideLabelFromVision","onChange","__nextHasNoMarginBottom","__experimentalBlockVariationTransforms","blockClientId","updateBlockAttributes","activeBlockVariation","isContentOnly","select","getActiveBlockVariation","getBlockVariations","getBlockName","getBlockAttributes","getBlockEditingMode","hasContentRoleAttribute","isContentBlock","hasUniqueIcons","variationIcons","Set","forEach","add","src","length","variationName","find","attributes","baseClass","showButtons","ButtonComponent","Component"],"sources":["@wordpress/block-editor/src/components/block-variation-transforms/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction VariationsButtons( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<fieldset className={ className }>\n\t\t\t<VisuallyHidden as=\"legend\">\n\t\t\t\t{ __( 'Transform to variation' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\ticon={ <BlockIcon icon={ variation.icon } showColors /> }\n\t\t\t\t\tisPressed={ selectedValue === variation.name }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t )\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ () => onSelectVariation( variation.name ) }\n\t\t\t\t\taria-label={ variation.title }\n\t\t\t\t\tshowTooltip\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</fieldset>\n\t);\n}\n\nfunction VariationsDropdown( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\tconst selectOptions = variations.map(\n\t\t( { name, title, description } ) => ( {\n\t\t\tvalue: name,\n\t\t\tlabel: title,\n\t\t\tinfo: description,\n\t\t} )\n\t);\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ className }\n\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\ttext={ __( 'Transform to variation' ) }\n\t\t\tpopoverProps={ {\n\t\t\t\tposition: 'bottom center',\n\t\t\t\tclassName: `${ className }__popover`,\n\t\t\t} }\n\t\t\ticon={ chevronDown }\n\t\t\ttoggleProps={ { iconPosition: 'right' } }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\tchoices={ selectOptions }\n\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t/>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction VariationsToggleGroupControl( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\t\tvalue={ selectedValue }\n\t\t\t\thideLabelFromVision\n\t\t\t\tonChange={ onSelectVariation }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t>\n\t\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon icon={ variation.icon } showColors />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ variation.name }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\t\tvariation.title\n\t\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</ToggleGroupControl>\n\t\t</div>\n\t);\n}\n\nfunction __experimentalBlockVariationTransforms( { blockClientId } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { activeBlockVariation, variations, isContentOnly } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\tselect( blocksStore );\n\n\t\t\tconst { getBlockName, getBlockAttributes, getBlockEditingMode } =\n\t\t\t\tselect( blockEditorStore );\n\n\t\t\tconst name = blockClientId && getBlockName( blockClientId );\n\n\t\t\tconst { hasContentRoleAttribute } = unlock( select( blocksStore ) );\n\t\t\tconst isContentBlock = hasContentRoleAttribute( name );\n\n\t\t\treturn {\n\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\tname,\n\t\t\t\t\tgetBlockAttributes( blockClientId )\n\t\t\t\t),\n\t\t\t\tvariations: name && getBlockVariations( name, 'transform' ),\n\t\t\t\tisContentOnly:\n\t\t\t\t\tgetBlockEditingMode( blockClientId ) === 'contentOnly' &&\n\t\t\t\t\t! isContentBlock,\n\t\t\t};\n\t\t},\n\t\t[ blockClientId ]\n\t);\n\n\tconst selectedValue = activeBlockVariation?.name;\n\n\t// Check if each variation has a unique icon.\n\tconst hasUniqueIcons = useMemo( () => {\n\t\tconst variationIcons = new Set();\n\t\tif ( ! variations ) {\n\t\t\treturn false;\n\t\t}\n\t\tvariations.forEach( ( variation ) => {\n\t\t\tif ( variation.icon ) {\n\t\t\t\tvariationIcons.add( variation.icon?.src || variation.icon );\n\t\t\t}\n\t\t} );\n\t\treturn variationIcons.size === variations.length;\n\t}, [ variations ] );\n\n\tconst onSelectVariation = ( variationName ) => {\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\t...variations.find( ( { name } ) => name === variationName )\n\t\t\t\t.attributes,\n\t\t} );\n\t};\n\n\tif ( ! variations?.length || isContentOnly ) {\n\t\treturn null;\n\t}\n\n\tconst baseClass = 'block-editor-block-variation-transforms';\n\n\t// Show buttons if there are more than 5 variations because the ToggleGroupControl does not wrap\n\tconst showButtons = variations.length > 5;\n\n\tconst ButtonComponent = showButtons\n\t\t? VariationsButtons\n\t\t: VariationsToggleGroupControl;\n\n\tconst Component = hasUniqueIcons ? ButtonComponent : VariationsDropdown;\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={ baseClass }\n\t\t\tonSelectVariation={ onSelectVariation }\n\t\t\tselectedValue={ selectedValue }\n\t\t\tvariations={ variations }\n\t\t/>\n\t);\n}\n\nexport default __experimentalBlockVariationTransforms;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["store","blocksStore","__","sprintf","Button","DropdownMenu","MenuGroup","MenuItemsChoice","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOptionIcon","ToggleGroupControlOptionIcon","VisuallyHidden","useSelect","useDispatch","useMemo","chevronDown","BlockIcon","blockEditorStore","unlock","jsx","_jsx","jsxs","_jsxs","VariationsButtons","className","onSelectVariation","selectedValue","variations","children","as","map","variation","__next40pxDefaultSize","size","icon","showColors","isPressed","name","label","title","onClick","showTooltip","VariationsDropdown","selectOptions","description","value","info","text","popoverProps","position","toggleProps","iconPosition","choices","onSelect","VariationsToggleGroupControl","hideLabelFromVision","onChange","__nextHasNoMarginBottom","__experimentalBlockVariationTransforms","blockClientId","updateBlockAttributes","activeBlockVariation","isContentOnly","isSection","select","getActiveBlockVariation","getBlockVariations","getBlockName","getBlockAttributes","getBlockEditingMode","isSectionBlock","hasContentRoleAttribute","isContentBlock","hasUniqueIcons","variationIcons","Set","forEach","add","src","length","variationName","find","attributes","hideVariationsForSections","window","__experimentalContentOnlyPatternInsertion","baseClass","showButtons","ButtonComponent","Component"],"sources":["@wordpress/block-editor/src/components/block-variation-transforms/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { __, sprintf } from '@wordpress/i18n';\nimport {\n\tButton,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\t__experimentalToggleGroupControl as ToggleGroupControl,\n\t__experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon,\n\tVisuallyHidden,\n} from '@wordpress/components';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { useMemo } from '@wordpress/element';\nimport { chevronDown } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport BlockIcon from '../block-icon';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nfunction VariationsButtons( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<fieldset className={ className }>\n\t\t\t<VisuallyHidden as=\"legend\">\n\t\t\t\t{ __( 'Transform to variation' ) }\n\t\t\t</VisuallyHidden>\n\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t<Button\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\ticon={ <BlockIcon icon={ variation.icon } showColors /> }\n\t\t\t\t\tisPressed={ selectedValue === variation.name }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\tvariation.title\n\t\t\t\t\t\t\t )\n\t\t\t\t\t}\n\t\t\t\t\tonClick={ () => onSelectVariation( variation.name ) }\n\t\t\t\t\taria-label={ variation.title }\n\t\t\t\t\tshowTooltip\n\t\t\t\t/>\n\t\t\t) ) }\n\t\t</fieldset>\n\t);\n}\n\nfunction VariationsDropdown( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\tconst selectOptions = variations.map(\n\t\t( { name, title, description } ) => ( {\n\t\t\tvalue: name,\n\t\t\tlabel: title,\n\t\t\tinfo: description,\n\t\t} )\n\t);\n\n\treturn (\n\t\t<DropdownMenu\n\t\t\tclassName={ className }\n\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\ttext={ __( 'Transform to variation' ) }\n\t\t\tpopoverProps={ {\n\t\t\t\tposition: 'bottom center',\n\t\t\t\tclassName: `${ className }__popover`,\n\t\t\t} }\n\t\t\ticon={ chevronDown }\n\t\t\ttoggleProps={ { iconPosition: 'right' } }\n\t\t>\n\t\t\t{ () => (\n\t\t\t\t<MenuGroup>\n\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\tchoices={ selectOptions }\n\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\tonSelect={ onSelectVariation }\n\t\t\t\t\t/>\n\t\t\t\t</MenuGroup>\n\t\t\t) }\n\t\t</DropdownMenu>\n\t);\n}\n\nfunction VariationsToggleGroupControl( {\n\tclassName,\n\tonSelectVariation,\n\tselectedValue,\n\tvariations,\n} ) {\n\treturn (\n\t\t<div className={ className }>\n\t\t\t<ToggleGroupControl\n\t\t\t\tlabel={ __( 'Transform to variation' ) }\n\t\t\t\tvalue={ selectedValue }\n\t\t\t\thideLabelFromVision\n\t\t\t\tonChange={ onSelectVariation }\n\t\t\t\t__next40pxDefaultSize\n\t\t\t\t__nextHasNoMarginBottom\n\t\t\t>\n\t\t\t\t{ variations.map( ( variation ) => (\n\t\t\t\t\t<ToggleGroupControlOptionIcon\n\t\t\t\t\t\tkey={ variation.name }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<BlockIcon icon={ variation.icon } showColors />\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue={ variation.name }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tselectedValue === variation.name\n\t\t\t\t\t\t\t\t? variation.title\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: %s: Block or block variation name. */\n\t\t\t\t\t\t\t\t\t\t__( 'Transform to %s' ),\n\t\t\t\t\t\t\t\t\t\tvariation.title\n\t\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</ToggleGroupControl>\n\t\t</div>\n\t);\n}\n\nfunction __experimentalBlockVariationTransforms( { blockClientId } ) {\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { activeBlockVariation, variations, isContentOnly, isSection } =\n\t\tuseSelect(\n\t\t\t( select ) => {\n\t\t\t\tconst { getActiveBlockVariation, getBlockVariations } =\n\t\t\t\t\tselect( blocksStore );\n\n\t\t\t\tconst {\n\t\t\t\t\tgetBlockName,\n\t\t\t\t\tgetBlockAttributes,\n\t\t\t\t\tgetBlockEditingMode,\n\t\t\t\t\tisSectionBlock,\n\t\t\t\t} = unlock( select( blockEditorStore ) );\n\n\t\t\t\tconst name = blockClientId && getBlockName( blockClientId );\n\n\t\t\t\tconst { hasContentRoleAttribute } = unlock(\n\t\t\t\t\tselect( blocksStore )\n\t\t\t\t);\n\t\t\t\tconst isContentBlock = hasContentRoleAttribute( name );\n\n\t\t\t\treturn {\n\t\t\t\t\tactiveBlockVariation: getActiveBlockVariation(\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tgetBlockAttributes( blockClientId )\n\t\t\t\t\t),\n\t\t\t\t\tvariations: name && getBlockVariations( name, 'transform' ),\n\t\t\t\t\tisContentOnly:\n\t\t\t\t\t\tgetBlockEditingMode( blockClientId ) ===\n\t\t\t\t\t\t\t'contentOnly' && ! isContentBlock,\n\t\t\t\t\tisSection: isSectionBlock( blockClientId ),\n\t\t\t\t};\n\t\t\t},\n\t\t\t[ blockClientId ]\n\t\t);\n\n\tconst selectedValue = activeBlockVariation?.name;\n\n\t// Check if each variation has a unique icon.\n\tconst hasUniqueIcons = useMemo( () => {\n\t\tconst variationIcons = new Set();\n\t\tif ( ! variations ) {\n\t\t\treturn false;\n\t\t}\n\t\tvariations.forEach( ( variation ) => {\n\t\t\tif ( variation.icon ) {\n\t\t\t\tvariationIcons.add( variation.icon?.src || variation.icon );\n\t\t\t}\n\t\t} );\n\t\treturn variationIcons.size === variations.length;\n\t}, [ variations ] );\n\n\tconst onSelectVariation = ( variationName ) => {\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\t...variations.find( ( { name } ) => name === variationName )\n\t\t\t\t.attributes,\n\t\t} );\n\t};\n\n\tconst hideVariationsForSections =\n\t\twindow?.__experimentalContentOnlyPatternInsertion && isSection;\n\n\tif ( ! variations?.length || isContentOnly || hideVariationsForSections ) {\n\t\treturn null;\n\t}\n\n\tconst baseClass = 'block-editor-block-variation-transforms';\n\n\t// Show buttons if there are more than 5 variations because the ToggleGroupControl does not wrap\n\tconst showButtons = variations.length > 5;\n\n\tconst ButtonComponent = showButtons\n\t\t? VariationsButtons\n\t\t: VariationsToggleGroupControl;\n\n\tconst Component = hasUniqueIcons ? ButtonComponent : VariationsDropdown;\n\n\treturn (\n\t\t<Component\n\t\t\tclassName={ baseClass }\n\t\t\tonSelectVariation={ onSelectVariation }\n\t\t\tselectedValue={ selectedValue }\n\t\t\tvariations={ variations }\n\t\t/>\n\t);\n}\n\nexport default __experimentalBlockVariationTransforms;\n"],"mappings":"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","ignoreList":[]}
@@ -9,12 +9,27 @@ import { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';
9
9
  import { pipe } from '@wordpress/compose';
10
10
  import deprecated from '@wordpress/deprecated';
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
12
- const ICONS_MAP = {
13
- post: postList,
14
- page,
15
- post_tag: tag,
16
- category,
17
- attachment: file
12
+ const TYPES = {
13
+ post: {
14
+ icon: postList,
15
+ label: __('Post')
16
+ },
17
+ page: {
18
+ icon: page,
19
+ label: __('Page')
20
+ },
21
+ post_tag: {
22
+ icon: tag,
23
+ label: __('Tag')
24
+ },
25
+ category: {
26
+ icon: category,
27
+ label: __('Category')
28
+ },
29
+ attachment: {
30
+ icon: file,
31
+ label: __('Attachment')
32
+ }
18
33
  };
19
34
  function SearchItemIcon({
20
35
  isURL,
@@ -23,8 +38,8 @@ function SearchItemIcon({
23
38
  let icon = null;
24
39
  if (isURL) {
25
40
  icon = globe;
26
- } else if (suggestion.type in ICONS_MAP) {
27
- icon = ICONS_MAP[suggestion.type];
41
+ } else if (suggestion.type in TYPES) {
42
+ icon = TYPES[suggestion.type].icon;
28
43
  if (suggestion.type === 'page') {
29
44
  if (suggestion.isFrontPage) {
30
45
  icon = home;
@@ -112,14 +127,17 @@ export const LinkControlSearchItem = ({
112
127
  };
113
128
  function getVisualTypeName(suggestion) {
114
129
  if (suggestion.isFrontPage) {
115
- return 'front page';
130
+ return __('Front page');
116
131
  }
117
132
  if (suggestion.isBlogHome) {
118
- return 'blog home';
133
+ return __('Blog home');
119
134
  }
120
135
 
121
- // Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.
122
- return suggestion.type === 'post_tag' ? 'tag' : suggestion.type;
136
+ // Provide translated labels for built-in post types. Ideally, the API would return the localised CPT or taxonomy label.
137
+ if (suggestion.type in TYPES) {
138
+ return TYPES[suggestion.type].label;
139
+ }
140
+ return suggestion.type;
123
141
  }
124
142
  export default LinkControlSearchItem;
125
143
  export const __experimentalLinkControlSearchItem = props => {
@@ -1 +1 @@
1
- {"version":3,"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","home","verse","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","getPath","pipe","deprecated","jsx","_jsx","ICONS_MAP","post","post_tag","attachment","SearchItemIcon","isURL","suggestion","icon","type","isFrontPage","isBlogHome","className","addLeadingSlash","url","trimmedURL","trim","length","replace","removeTrailingSlash","partialRight","fn","partialArgs","args","defaultTo","d","v","undefined","getURLForDisplay","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","iconPosition","shortcut","getVisualTypeName","children","text","title","highlight","__experimentalLinkControlSearchItem","props","since"],"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n\thome,\n\tverse,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\nimport deprecated from '@wordpress/deprecated';\n\nconst ICONS_MAP = {\n\tpost: postList,\n\tpage,\n\tpost_tag: tag,\n\tcategory,\n\tattachment: file,\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in ICONS_MAP ) {\n\t\ticon = ICONS_MAP[ suggestion.type ];\n\t\tif ( suggestion.type === 'page' ) {\n\t\t\tif ( suggestion.isFrontPage ) {\n\t\t\t\ticon = home;\n\t\t\t}\n\t\t\tif ( suggestion.isBlogHome ) {\n\t\t\t\ticon = verse;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Adds a leading slash to a url if it doesn't already have one.\n * @param {string} url the url to add a leading slash to.\n * @return {string} the url with a leading slash.\n */\nfunction addLeadingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /\\/$/, '' );\n}\n\nconst partialRight =\n\t( fn, ...partialArgs ) =>\n\t( ...args ) =>\n\t\tfn( ...args, ...partialArgs );\n\nconst defaultTo = ( d ) => ( v ) => {\n\treturn v === null || v === undefined || v !== v ? d : v;\n};\n\n/**\n * Prepares a URL for display in the UI.\n * - decodes the URL.\n * - filters it (removes protocol, www, etc.).\n * - truncates it if necessary.\n * - adds a leading slash.\n * @param {string} url the url.\n * @return {string} the processed url to display.\n */\nfunction getURLForDisplay( url ) {\n\tif ( ! url ) {\n\t\treturn url;\n\t}\n\n\treturn pipe(\n\t\tsafeDecodeURI,\n\t\tgetPath,\n\t\tdefaultTo( '' ),\n\t\tpartialRight( filterURLForDisplay, 24 ),\n\t\tremoveTrailingSlash,\n\t\taddLeadingSlash\n\t)( url );\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: getURLForDisplay( suggestion.url );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn 'front page';\n\t}\n\n\tif ( suggestion.isBlogHome ) {\n\t\treturn 'blog home';\n\t}\n\n\t// Rename 'post_tag' to 'tag'. Ideally, the API would return the localised CPT or taxonomy label.\n\treturn suggestion.type === 'post_tag' ? 'tag' : suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n\nexport const __experimentalLinkControlSearchItem = ( props ) => {\n\tdeprecated( 'wp.blockEditor.__experimentalLinkControlSearchItem', {\n\t\tsince: '6.8',\n\t} );\n\n\treturn <LinkControlSearchItem { ...props } />;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__","MenuItem","TextHighlight","Icon","globe","page","tag","postList","category","file","home","verse","__unstableStripHTML","stripHTML","safeDecodeURI","filterURLForDisplay","getPath","pipe","deprecated","jsx","_jsx","TYPES","post","icon","label","post_tag","attachment","SearchItemIcon","isURL","suggestion","type","isFrontPage","isBlogHome","className","addLeadingSlash","url","trimmedURL","trim","length","replace","removeTrailingSlash","partialRight","fn","partialArgs","args","defaultTo","d","v","undefined","getURLForDisplay","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","iconPosition","shortcut","getVisualTypeName","children","text","title","highlight","__experimentalLinkControlSearchItem","props","since"],"sources":["@wordpress/block-editor/src/components/link-control/search-item.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n\thome,\n\tverse,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\nimport deprecated from '@wordpress/deprecated';\n\nconst TYPES = {\n\tpost: {\n\t\ticon: postList,\n\t\tlabel: __( 'Post' ),\n\t},\n\tpage: {\n\t\ticon: page,\n\t\tlabel: __( 'Page' ),\n\t},\n\tpost_tag: {\n\t\ticon: tag,\n\t\tlabel: __( 'Tag' ),\n\t},\n\tcategory: {\n\t\ticon: category,\n\t\tlabel: __( 'Category' ),\n\t},\n\tattachment: {\n\t\ticon: file,\n\t\tlabel: __( 'Attachment' ),\n\t},\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in TYPES ) {\n\t\ticon = TYPES[ suggestion.type ].icon;\n\t\tif ( suggestion.type === 'page' ) {\n\t\t\tif ( suggestion.isFrontPage ) {\n\t\t\t\ticon = home;\n\t\t\t}\n\t\t\tif ( suggestion.isBlogHome ) {\n\t\t\t\ticon = verse;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Adds a leading slash to a url if it doesn't already have one.\n * @param {string} url the url to add a leading slash to.\n * @return {string} the url with a leading slash.\n */\nfunction addLeadingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /\\/$/, '' );\n}\n\nconst partialRight =\n\t( fn, ...partialArgs ) =>\n\t( ...args ) =>\n\t\tfn( ...args, ...partialArgs );\n\nconst defaultTo = ( d ) => ( v ) => {\n\treturn v === null || v === undefined || v !== v ? d : v;\n};\n\n/**\n * Prepares a URL for display in the UI.\n * - decodes the URL.\n * - filters it (removes protocol, www, etc.).\n * - truncates it if necessary.\n * - adds a leading slash.\n * @param {string} url the url.\n * @return {string} the processed url to display.\n */\nfunction getURLForDisplay( url ) {\n\tif ( ! url ) {\n\t\treturn url;\n\t}\n\n\treturn pipe(\n\t\tsafeDecodeURI,\n\t\tgetPath,\n\t\tdefaultTo( '' ),\n\t\tpartialRight( filterURLForDisplay, 24 ),\n\t\tremoveTrailingSlash,\n\t\taddLeadingSlash\n\t)( url );\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: getURLForDisplay( suggestion.url );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn __( 'Front page' );\n\t}\n\n\tif ( suggestion.isBlogHome ) {\n\t\treturn __( 'Blog home' );\n\t}\n\n\t// Provide translated labels for built-in post types. Ideally, the API would return the localised CPT or taxonomy label.\n\tif ( suggestion.type in TYPES ) {\n\t\treturn TYPES[ suggestion.type ].label;\n\t}\n\n\treturn suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n\nexport const __experimentalLinkControlSearchItem = ( props ) => {\n\tdeprecated( 'wp.blockEditor.__experimentalLinkControlSearchItem', {\n\t\tsince: '6.8',\n\t} );\n\n\treturn <LinkControlSearchItem { ...props } />;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -7,9 +7,8 @@ import { privateApis as blocksPrivateApis } from '@wordpress/blocks';
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import { getBlockOrder, getBlockParents, getBlockEditingMode, getSettings, canInsertBlockType, getBlockName, getTemplateLock, getClientIdsWithDescendants, isNavigationMode, getBlockRootClientId } from './selectors';
11
- import { checkAllowListRecursive, getAllPatternsDependants, getInsertBlockTypeDependants, getGrammar } from './utils';
12
- import { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';
10
+ import { getBlockOrder, getBlockParents, getBlockEditingMode, getSettings, canInsertBlockType, getBlockName, getTemplateLock, getClientIdsWithDescendants, isNavigationMode, getBlockRootClientId, getBlockAttributes } from './selectors';
11
+ import { checkAllowListRecursive, getAllPatternsDependants, getInsertBlockTypeDependants, getGrammar, mapUserPattern } from './utils';
13
12
  import { STORE_NAME } from './constants';
14
13
  import { unlock } from '../lock-unlock';
15
14
  import { selectBlockPatternsKey, reusableBlocksSelectKey, sectionRootClientIdKey } from './private-keys';
@@ -103,7 +102,7 @@ function getEnabledClientIdsTreeUnmemoized(state, rootClientId) {
103
102
  *
104
103
  * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.
105
104
  */
106
- export const getEnabledClientIdsTree = createRegistrySelector(select => createSelector(getEnabledClientIdsTreeUnmemoized, state => [state.blocks.order, state.derivedBlockEditingModes, state.derivedNavModeBlockEditingModes, state.blockEditingModes, state.settings.templateLock, state.blockListSettings, select(STORE_NAME).__unstableGetEditorMode(state)]));
105
+ export const getEnabledClientIdsTree = createRegistrySelector(select => createSelector(getEnabledClientIdsTreeUnmemoized, state => [state.blocks.order, state.derivedBlockEditingModes, state.derivedNavModeBlockEditingModes, state.blockEditingModes, select(STORE_NAME).__unstableGetEditorMode(state)]));
107
106
 
108
107
  /**
109
108
  * Returns a list of a given block's ancestors, from top to bottom. Blocks with
@@ -268,22 +267,6 @@ export const hasAllowedPatterns = createRegistrySelector(select => createSelecto
268
267
  }) => canInsertBlockType(state, blockName, rootClientId));
269
268
  });
270
269
  }, (state, rootClientId) => [...getAllPatternsDependants(select)(state), ...getInsertBlockTypeDependants(select)(state, rootClientId)]));
271
- function mapUserPattern(userPattern, __experimentalUserPatternCategories = []) {
272
- return {
273
- name: `core/block/${userPattern.id}`,
274
- id: userPattern.id,
275
- type: INSERTER_PATTERN_TYPES.user,
276
- title: userPattern.title.raw,
277
- categories: userPattern.wp_pattern_category?.map(catId => {
278
- const category = __experimentalUserPatternCategories.find(({
279
- id
280
- }) => id === catId);
281
- return category ? category.slug : catId;
282
- }),
283
- content: userPattern.content.raw,
284
- syncStatus: userPattern.wp_pattern_sync_status
285
- };
286
- }
287
270
  export const getPatternBySlug = createRegistrySelector(select => createSelector((state, patternName) => {
288
271
  var _state$settings$__exp, _state$settings$selec;
289
272
  // Only fetch reusable blocks if we know we need them. To do: maybe
@@ -404,6 +387,10 @@ export function isSectionBlock(state, clientId) {
404
387
  if (blockName === 'core/block' || getTemplateLock(state, clientId) === 'contentOnly') {
405
388
  return true;
406
389
  }
390
+ const attributes = getBlockAttributes(state, clientId);
391
+ if (attributes?.metadata?.patternName && !!window?.__experimentalContentOnlyPatternInsertion) {
392
+ return true;
393
+ }
407
394
 
408
395
  // Template parts become sections in navigation mode.
409
396
  const _isNavigationMode = isNavigationMode(state);
@@ -1 +1 @@
1
- {"version":3,"names":["createSelector","createRegistrySelector","privateApis","blocksPrivateApis","getBlockOrder","getBlockParents","getBlockEditingMode","getSettings","canInsertBlockType","getBlockName","getTemplateLock","getClientIdsWithDescendants","isNavigationMode","getBlockRootClientId","checkAllowListRecursive","getAllPatternsDependants","getInsertBlockTypeDependants","getGrammar","INSERTER_PATTERN_TYPES","STORE_NAME","unlock","selectBlockPatternsKey","reusableBlocksSelectKey","sectionRootClientIdKey","isContentBlock","getBlockSettings","isBlockInterfaceHidden","state","getLastInsertedBlocksClientIds","lastBlockInserted","clientIds","getBlockWithoutAttributes","clientId","blocks","byClientId","get","isBlockSubtreeDisabled","isChildSubtreeDisabled","childClientId","every","isContainerInsertableToInWriteMode","blockName","rootClientId","isBlockContentBlock","rootBlockName","isContainerContentBlock","isRootBlockMain","getSectionRootClientId","getEnabledClientIdsTreeUnmemoized","blockOrder","result","innerBlocks","push","getEnabledClientIdsTree","select","order","derivedBlockEditingModes","derivedNavModeBlockEditingModes","blockEditingModes","settings","templateLock","blockListSettings","__unstableGetEditorMode","getEnabledBlockParents","ascending","filter","parent","parents","getRemovalPromptData","removalPromptData","getBlockRemovalRules","blockRemovalRules","getOpenedBlockSettingsMenu","openedBlockSettingsMenu","getStyleOverrides","clientIdMap","reduce","acc","index","styleOverrides","sort","overrideA","overrideB","_clientIdMap$clientId","_clientIdMap$clientId2","clientIdA","clientIdB","aIndex","bIndex","getRegisteredInserterMediaCategories","registeredInserterMediaCategories","getInserterMediaCategories","inserterMediaCategories","allowedMimeTypes","enableOpenverseMediaCategory","length","coreInserterMediaCategoriesNames","map","name","mergedCategories","includes","category","Object","values","some","mimeType","startsWith","mediaType","hasAllowedPatterns","getAllPatterns","patterns","allowedBlockTypes","pattern","inserter","grammar","mapUserPattern","userPattern","__experimentalUserPatternCategories","id","type","user","title","raw","categories","wp_pattern_category","catId","find","slug","content","syncStatus","wp_pattern_sync_status","getPatternBySlug","patternName","_state$settings$__exp","_state$settings$selec","_id","parseInt","slice","block","getReusableBlocks","__experimentalBlockPatterns","__experimentalReusableBlocks","_state$settings$__exp2","_state$settings$selec2","x","arr","findIndex","y","EMPTY_ARRAY","_ref","reusableBlocksSelect","getLastFocus","lastFocus","isDragging","getExpandedBlock","expandedBlock","getContentLockingParent","current","getParentSectionBlock","isSectionBlock","_isNavigationMode","sectionRootClientId","sectionClientIds","getTemporarilyEditingAsBlocks","temporarilyEditingAsBlocks","getTemporarilyEditingFocusModeToRevert","temporarilyEditingFocusModeRevert","getBlockStyles","styles","attributes","style","isZoomOut","zoomLevel","getZoomLevel","getClosestAllowedInsertionPoint","blockNames","Array","isArray","areBlockNamesAllowedInClientId","currentName","parentClientId","getClosestAllowedInsertionPointForPattern","isAllowed","names","getInsertionPoint","insertionPoint"],"sources":["@wordpress/block-editor/src/store/private-selectors.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\nimport { privateApis as blocksPrivateApis } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetBlockOrder,\n\tgetBlockParents,\n\tgetBlockEditingMode,\n\tgetSettings,\n\tcanInsertBlockType,\n\tgetBlockName,\n\tgetTemplateLock,\n\tgetClientIdsWithDescendants,\n\tisNavigationMode,\n\tgetBlockRootClientId,\n} from './selectors';\nimport {\n\tcheckAllowListRecursive,\n\tgetAllPatternsDependants,\n\tgetInsertBlockTypeDependants,\n\tgetGrammar,\n} from './utils';\nimport { INSERTER_PATTERN_TYPES } from '../components/inserter/block-patterns-tab/utils';\nimport { STORE_NAME } from './constants';\nimport { unlock } from '../lock-unlock';\nimport {\n\tselectBlockPatternsKey,\n\treusableBlocksSelectKey,\n\tsectionRootClientIdKey,\n} from './private-keys';\n\nconst { isContentBlock } = unlock( blocksPrivateApis );\n\nexport { getBlockSettings } from './get-block-settings';\n\n/**\n * Returns true if the block interface is hidden, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the block toolbar is hidden.\n */\nexport function isBlockInterfaceHidden( state ) {\n\treturn state.isBlockInterfaceHidden;\n}\n\n/**\n * Gets the client ids of the last inserted blocks.\n *\n * @param {Object} state Global application state.\n * @return {Array|undefined} Client Ids of the last inserted block(s).\n */\nexport function getLastInsertedBlocksClientIds( state ) {\n\treturn state?.lastBlockInserted?.clientIds;\n}\n\nexport function getBlockWithoutAttributes( state, clientId ) {\n\treturn state.blocks.byClientId.get( clientId );\n}\n\n/**\n * Returns true if all of the descendants of a block with the given client ID\n * have an editing mode of 'disabled', or false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n *\n * @return {boolean} Whether the block descendants are disabled.\n */\nexport const isBlockSubtreeDisabled = ( state, clientId ) => {\n\tconst isChildSubtreeDisabled = ( childClientId ) => {\n\t\treturn (\n\t\t\tgetBlockEditingMode( state, childClientId ) === 'disabled' &&\n\t\t\tgetBlockOrder( state, childClientId ).every(\n\t\t\t\tisChildSubtreeDisabled\n\t\t\t)\n\t\t);\n\t};\n\treturn getBlockOrder( state, clientId ).every( isChildSubtreeDisabled );\n};\n\n/**\n * Determines if a container (clientId) allows insertion of blocks, considering contentOnly mode restrictions.\n *\n * @param {Object} state Editor state.\n * @param {string} blockName The block name to insert.\n * @param {string} rootClientId The client ID of the root container block.\n * @return {boolean} Whether the container allows insertion.\n */\nexport function isContainerInsertableToInWriteMode(\n\tstate,\n\tblockName,\n\trootClientId\n) {\n\tconst isBlockContentBlock = isContentBlock( blockName );\n\tconst rootBlockName = getBlockName( state, rootClientId );\n\tconst isContainerContentBlock = isContentBlock( rootBlockName );\n\tconst isRootBlockMain = getSectionRootClientId( state ) === rootClientId;\n\n\t// In write mode, containers shouldn't be inserted into unless:\n\t// 1. they are a section root;\n\t// 2. they are a content block and the block to be inserted is also content.\n\treturn (\n\t\tisRootBlockMain || ( isContainerContentBlock && isBlockContentBlock )\n\t);\n}\n\nfunction getEnabledClientIdsTreeUnmemoized( state, rootClientId ) {\n\tconst blockOrder = getBlockOrder( state, rootClientId );\n\tconst result = [];\n\n\tfor ( const clientId of blockOrder ) {\n\t\tconst innerBlocks = getEnabledClientIdsTreeUnmemoized(\n\t\t\tstate,\n\t\t\tclientId\n\t\t);\n\t\tif ( getBlockEditingMode( state, clientId ) !== 'disabled' ) {\n\t\t\tresult.push( { clientId, innerBlocks } );\n\t\t} else {\n\t\t\tresult.push( ...innerBlocks );\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Returns a tree of block objects with only clientID and innerBlocks set.\n * Blocks with a 'disabled' editing mode are not included.\n *\n * @param {Object} state Global application state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.\n */\nexport const getEnabledClientIdsTree = createRegistrySelector( ( select ) =>\n\tcreateSelector( getEnabledClientIdsTreeUnmemoized, ( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.derivedBlockEditingModes,\n\t\tstate.derivedNavModeBlockEditingModes,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t\tselect( STORE_NAME ).__unstableGetEditorMode( state ),\n\t] )\n);\n\n/**\n * Returns a list of a given block's ancestors, from top to bottom. Blocks with\n * a 'disabled' editing mode are excluded.\n *\n * @see getBlockParents\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n * @param {boolean} ascending Order results from bottom to top (true) or top\n * to bottom (false).\n */\nexport const getEnabledBlockParents = createSelector(\n\t( state, clientId, ascending = false ) => {\n\t\treturn getBlockParents( state, clientId, ascending ).filter(\n\t\t\t( parent ) => getBlockEditingMode( state, parent ) !== 'disabled'\n\t\t);\n\t},\n\t( state ) => [\n\t\tstate.blocks.parents,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Selector that returns the data needed to display a prompt when certain\n * blocks are removed, or `false` if no such prompt is requested.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object|false} Data for removal prompt display, if any.\n */\nexport function getRemovalPromptData( state ) {\n\treturn state.removalPromptData;\n}\n\n/**\n * Returns true if removal prompt exists, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether removal prompt exists.\n */\nexport function getBlockRemovalRules( state ) {\n\treturn state.blockRemovalRules;\n}\n\n/**\n * Returns the client ID of the block settings menu that is currently open.\n *\n * @param {Object} state Global application state.\n * @return {string|null} The client ID of the block menu that is currently open.\n */\nexport function getOpenedBlockSettingsMenu( state ) {\n\treturn state.openedBlockSettingsMenu;\n}\n\n/**\n * Returns all style overrides, intended to be merged with global editor styles.\n *\n * Overrides are sorted to match the order of the blocks they relate to. This\n * is useful to maintain correct CSS cascade order.\n *\n * @param {Object} state Global application state.\n *\n * @return {Array} An array of style ID to style override pairs.\n */\nexport const getStyleOverrides = createSelector(\n\t( state ) => {\n\t\tconst clientIds = getClientIdsWithDescendants( state );\n\t\tconst clientIdMap = clientIds.reduce( ( acc, clientId, index ) => {\n\t\t\tacc[ clientId ] = index;\n\t\t\treturn acc;\n\t\t}, {} );\n\n\t\treturn [ ...state.styleOverrides ].sort( ( overrideA, overrideB ) => {\n\t\t\t// Once the overrides Map is spread to an array, the first element\n\t\t\t// is the key, while the second is the override itself including\n\t\t\t// the clientId to sort by.\n\t\t\tconst [ , { clientId: clientIdA } ] = overrideA;\n\t\t\tconst [ , { clientId: clientIdB } ] = overrideB;\n\n\t\t\tconst aIndex = clientIdMap[ clientIdA ] ?? -1;\n\t\t\tconst bIndex = clientIdMap[ clientIdB ] ?? -1;\n\n\t\t\treturn aIndex - bIndex;\n\t\t} );\n\t},\n\t( state ) => [ state.blocks.order, state.styleOverrides ]\n);\n\n/** @typedef {import('./actions').InserterMediaCategory} InserterMediaCategory */\n/**\n * Returns the registered inserter media categories through the public API.\n *\n * @param {Object} state Editor state.\n *\n * @return {InserterMediaCategory[]} Inserter media categories.\n */\nexport function getRegisteredInserterMediaCategories( state ) {\n\treturn state.registeredInserterMediaCategories;\n}\n\n/**\n * Returns an array containing the allowed inserter media categories.\n * It merges the registered media categories from extenders with the\n * core ones. It also takes into account the allowed `mime_types`, which\n * can be altered by `upload_mimes` filter and restrict some of them.\n *\n * @param {Object} state Global application state.\n *\n * @return {InserterMediaCategory[]} Client IDs of descendants.\n */\nexport const getInserterMediaCategories = createSelector(\n\t( state ) => {\n\t\tconst {\n\t\t\tsettings: {\n\t\t\t\tinserterMediaCategories,\n\t\t\t\tallowedMimeTypes,\n\t\t\t\tenableOpenverseMediaCategory,\n\t\t\t},\n\t\t\tregisteredInserterMediaCategories,\n\t\t} = state;\n\t\t// The allowed `mime_types` can be altered by `upload_mimes` filter and restrict\n\t\t// some of them. In this case we shouldn't add the category to the available media\n\t\t// categories list in the inserter.\n\t\tif (\n\t\t\t( ! inserterMediaCategories &&\n\t\t\t\t! registeredInserterMediaCategories.length ) ||\n\t\t\t! allowedMimeTypes\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst coreInserterMediaCategoriesNames =\n\t\t\tinserterMediaCategories?.map( ( { name } ) => name ) || [];\n\t\tconst mergedCategories = [\n\t\t\t...( inserterMediaCategories || [] ),\n\t\t\t...( registeredInserterMediaCategories || [] ).filter(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\t! coreInserterMediaCategoriesNames.includes( name )\n\t\t\t),\n\t\t];\n\t\treturn mergedCategories.filter( ( category ) => {\n\t\t\t// Check if Openverse category is enabled.\n\t\t\tif (\n\t\t\t\t! enableOpenverseMediaCategory &&\n\t\t\t\tcategory.name === 'openverse'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn Object.values( allowedMimeTypes ).some( ( mimeType ) =>\n\t\t\t\tmimeType.startsWith( `${ category.mediaType }/` )\n\t\t\t);\n\t\t} );\n\t},\n\t( state ) => [\n\t\tstate.settings.inserterMediaCategories,\n\t\tstate.settings.allowedMimeTypes,\n\t\tstate.settings.enableOpenverseMediaCategory,\n\t\tstate.registeredInserterMediaCategories,\n\t]\n);\n\n/**\n * Returns whether there is at least one allowed pattern for inner blocks children.\n * This is useful for deferring the parsing of all patterns until needed.\n *\n * @param {Object} state Editor state.\n * @param {string} [rootClientId=null] Target root client ID.\n *\n * @return {boolean} If there is at least one allowed pattern.\n */\nexport const hasAllowedPatterns = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, rootClientId = null ) => {\n\t\t\tconst { getAllPatterns } = unlock( select( STORE_NAME ) );\n\t\t\tconst patterns = getAllPatterns();\n\t\t\tconst { allowedBlockTypes } = getSettings( state );\n\t\t\treturn patterns.some( ( pattern ) => {\n\t\t\t\tconst { inserter = true } = pattern;\n\t\t\t\tif ( ! inserter ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst grammar = getGrammar( pattern );\n\t\t\t\treturn (\n\t\t\t\t\tcheckAllowListRecursive( grammar, allowedBlockTypes ) &&\n\t\t\t\t\tgrammar.every( ( { name: blockName } ) =>\n\t\t\t\t\t\tcanInsertBlockType( state, blockName, rootClientId )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t( state, rootClientId ) => [\n\t\t\t...getAllPatternsDependants( select )( state ),\n\t\t\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n\t\t]\n\t)\n);\n\nfunction mapUserPattern(\n\tuserPattern,\n\t__experimentalUserPatternCategories = []\n) {\n\treturn {\n\t\tname: `core/block/${ userPattern.id }`,\n\t\tid: userPattern.id,\n\t\ttype: INSERTER_PATTERN_TYPES.user,\n\t\ttitle: userPattern.title.raw,\n\t\tcategories: userPattern.wp_pattern_category?.map( ( catId ) => {\n\t\t\tconst category = __experimentalUserPatternCategories.find(\n\t\t\t\t( { id } ) => id === catId\n\t\t\t);\n\t\t\treturn category ? category.slug : catId;\n\t\t} ),\n\t\tcontent: userPattern.content.raw,\n\t\tsyncStatus: userPattern.wp_pattern_sync_status,\n\t};\n}\n\nexport const getPatternBySlug = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, patternName ) => {\n\t\t\t// Only fetch reusable blocks if we know we need them. To do: maybe\n\t\t\t// use the entity record API to retrieve the block by slug.\n\t\t\tif ( patternName?.startsWith( 'core/block/' ) ) {\n\t\t\t\tconst _id = parseInt(\n\t\t\t\t\tpatternName.slice( 'core/block/'.length ),\n\t\t\t\t\t10\n\t\t\t\t);\n\t\t\t\tconst block = unlock( select( STORE_NAME ) )\n\t\t\t\t\t.getReusableBlocks()\n\t\t\t\t\t.find( ( { id } ) => id === _id );\n\n\t\t\t\tif ( ! block ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn mapUserPattern(\n\t\t\t\t\tblock,\n\t\t\t\t\tstate.settings.__experimentalUserPatternCategories\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t// This setting is left for back compat.\n\t\t\t\t...( state.settings.__experimentalBlockPatterns ?? [] ),\n\t\t\t\t...( state.settings[ selectBlockPatternsKey ]?.( select ) ??\n\t\t\t\t\t[] ),\n\t\t\t].find( ( { name } ) => name === patternName );\n\t\t},\n\t\t( state, patternName ) =>\n\t\t\tpatternName?.startsWith( 'core/block/' )\n\t\t\t\t? [\n\t\t\t\t\t\tunlock( select( STORE_NAME ) ).getReusableBlocks(),\n\t\t\t\t\t\tstate.settings.__experimentalReusableBlocks,\n\t\t\t\t ]\n\t\t\t\t: [\n\t\t\t\t\t\tstate.settings.__experimentalBlockPatterns,\n\t\t\t\t\t\tstate.settings[ selectBlockPatternsKey ]?.( select ),\n\t\t\t\t ]\n\t)\n);\n\nexport const getAllPatterns = createRegistrySelector( ( select ) =>\n\tcreateSelector( ( state ) => {\n\t\treturn [\n\t\t\t...unlock( select( STORE_NAME ) )\n\t\t\t\t.getReusableBlocks()\n\t\t\t\t.map( ( userPattern ) =>\n\t\t\t\t\tmapUserPattern(\n\t\t\t\t\t\tuserPattern,\n\t\t\t\t\t\tstate.settings.__experimentalUserPatternCategories\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t// This setting is left for back compat.\n\t\t\t...( state.settings.__experimentalBlockPatterns ?? [] ),\n\t\t\t...( state.settings[ selectBlockPatternsKey ]?.( select ) ?? [] ),\n\t\t].filter(\n\t\t\t( x, index, arr ) =>\n\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t);\n\t}, getAllPatternsDependants( select ) )\n);\n\nconst EMPTY_ARRAY = [];\n\nexport const getReusableBlocks = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst reusableBlocksSelect = state.settings[ reusableBlocksSelectKey ];\n\t\treturn (\n\t\t\t( reusableBlocksSelect\n\t\t\t\t? reusableBlocksSelect( select )\n\t\t\t\t: state.settings.__experimentalReusableBlocks ) ?? EMPTY_ARRAY\n\t\t);\n\t}\n);\n\n/**\n * Returns the element of the last element that had focus when focus left the editor canvas.\n *\n * @param {Object} state Block editor state.\n *\n * @return {Object} Element.\n */\nexport function getLastFocus( state ) {\n\treturn state.lastFocus;\n}\n\n/**\n * Returns true if the user is dragging anything, or false otherwise. It is possible for a\n * user to be dragging data from outside of the editor, so this selector is separate from\n * the `isDraggingBlocks` selector which only returns true if the user is dragging blocks.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether user is dragging.\n */\nexport function isDragging( state ) {\n\treturn state.isDragging;\n}\n\n/**\n * Retrieves the expanded block from the state.\n *\n * @param {Object} state Block editor state.\n *\n * @return {string|null} The client ID of the expanded block, if set.\n */\nexport function getExpandedBlock( state ) {\n\treturn state.expandedBlock;\n}\n\n/**\n * Retrieves the client ID of the ancestor block that is content locking the block\n * with the provided client ID.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client Id of the block.\n *\n * @return {?string} Client ID of the ancestor block that is content locking the block.\n */\nexport const getContentLockingParent = ( state, clientId ) => {\n\tlet current = clientId;\n\tlet result;\n\twhile ( ! result && ( current = state.blocks.parents.get( current ) ) ) {\n\t\tif ( getTemplateLock( state, current ) === 'contentOnly' ) {\n\t\t\tresult = current;\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Retrieves the client ID of the parent section block.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client Id of the block.\n *\n * @return {?string} Client ID of the ancestor block that is content locking the block.\n */\nexport const getParentSectionBlock = ( state, clientId ) => {\n\tlet current = clientId;\n\tlet result;\n\twhile ( ! result && ( current = state.blocks.parents.get( current ) ) ) {\n\t\tif ( isSectionBlock( state, current ) ) {\n\t\t\tresult = current;\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Retrieves the client ID is a content locking parent\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client Id of the block.\n *\n * @return {boolean} Whether the block is a content locking parent.\n */\nexport function isSectionBlock( state, clientId ) {\n\tconst blockName = getBlockName( state, clientId );\n\tif (\n\t\tblockName === 'core/block' ||\n\t\tgetTemplateLock( state, clientId ) === 'contentOnly'\n\t) {\n\t\treturn true;\n\t}\n\n\t// Template parts become sections in navigation mode.\n\tconst _isNavigationMode = isNavigationMode( state );\n\tif ( _isNavigationMode && blockName === 'core/template-part' ) {\n\t\treturn true;\n\t}\n\n\tconst sectionRootClientId = getSectionRootClientId( state );\n\tconst sectionClientIds = getBlockOrder( state, sectionRootClientId );\n\treturn _isNavigationMode && sectionClientIds.includes( clientId );\n}\n\n/**\n * Retrieves the client ID of the block that is content locked but is\n * currently being temporarily edited as a non-locked block.\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} The client ID of the block being temporarily edited as a non-locked block.\n */\nexport function getTemporarilyEditingAsBlocks( state ) {\n\treturn state.temporarilyEditingAsBlocks;\n}\n\n/**\n * Returns the focus mode that should be reapplied when the user stops editing\n * a content locked blocks as a block without locking.\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} The focus mode that should be re-set when temporarily editing as blocks stops.\n */\nexport function getTemporarilyEditingFocusModeToRevert( state ) {\n\treturn state.temporarilyEditingFocusModeRevert;\n}\n\n/**\n * Returns the style attributes of multiple blocks.\n *\n * @param {Object} state Global application state.\n * @param {string[]} clientIds An array of block client IDs.\n *\n * @return {Object} An object where keys are client IDs and values are the corresponding block styles or undefined.\n */\nexport const getBlockStyles = createSelector(\n\t( state, clientIds ) =>\n\t\tclientIds.reduce( ( styles, clientId ) => {\n\t\t\tstyles[ clientId ] = state.blocks.attributes.get( clientId )?.style;\n\t\t\treturn styles;\n\t\t}, {} ),\n\t( state, clientIds ) => [\n\t\t...clientIds.map(\n\t\t\t( clientId ) => state.blocks.attributes.get( clientId )?.style\n\t\t),\n\t]\n);\n\n/**\n * Retrieves the client ID of the block which contains the blocks\n * acting as \"sections\" in the editor. This is typically the \"main content\"\n * of the template/post.\n *\n * @param {Object} state Editor state.\n *\n * @return {string|undefined} The section root client ID or undefined if not set.\n */\nexport function getSectionRootClientId( state ) {\n\treturn state.settings?.[ sectionRootClientIdKey ];\n}\n\n/**\n * Returns whether the editor is considered zoomed out.\n *\n * @param {Object} state Global application state.\n * @return {boolean} Whether the editor is zoomed.\n */\nexport function isZoomOut( state ) {\n\treturn state.zoomLevel === 'auto-scaled' || state.zoomLevel < 100;\n}\n\n/**\n * Returns whether the zoom level.\n *\n * @param {Object} state Global application state.\n * @return {number|\"auto-scaled\"} Zoom level.\n */\nexport function getZoomLevel( state ) {\n\treturn state.zoomLevel;\n}\n\n/**\n * Finds the closest block where the block is allowed to be inserted.\n *\n * @param {Object} state Editor state.\n * @param {string[] | string} name Block name or names.\n * @param {string} clientId Default insertion point.\n *\n * @return {string} clientID of the closest container when the block name can be inserted.\n */\nexport function getClosestAllowedInsertionPoint( state, name, clientId = '' ) {\n\tconst blockNames = Array.isArray( name ) ? name : [ name ];\n\tconst areBlockNamesAllowedInClientId = ( id ) =>\n\t\tblockNames.every( ( currentName ) =>\n\t\t\tcanInsertBlockType( state, currentName, id )\n\t\t);\n\n\t// If we're trying to insert at the root level and it's not allowed\n\t// Try the section root instead.\n\tif ( ! clientId ) {\n\t\tif ( areBlockNamesAllowedInClientId( clientId ) ) {\n\t\t\treturn clientId;\n\t\t}\n\n\t\tconst sectionRootClientId = getSectionRootClientId( state );\n\t\tif (\n\t\t\tsectionRootClientId &&\n\t\t\tareBlockNamesAllowedInClientId( sectionRootClientId )\n\t\t) {\n\t\t\treturn sectionRootClientId;\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Traverse the block tree up until we find a place where we can insert.\n\tlet current = clientId;\n\twhile ( current !== null && ! areBlockNamesAllowedInClientId( current ) ) {\n\t\tconst parentClientId = getBlockRootClientId( state, current );\n\t\tcurrent = parentClientId;\n\t}\n\n\treturn current;\n}\n\nexport function getClosestAllowedInsertionPointForPattern(\n\tstate,\n\tpattern,\n\tclientId\n) {\n\tconst { allowedBlockTypes } = getSettings( state );\n\tconst isAllowed = checkAllowListRecursive(\n\t\tgetGrammar( pattern ),\n\t\tallowedBlockTypes\n\t);\n\tif ( ! isAllowed ) {\n\t\treturn null;\n\t}\n\tconst names = getGrammar( pattern ).map( ( { blockName: name } ) => name );\n\treturn getClosestAllowedInsertionPoint( state, names, clientId );\n}\n\n/**\n * Where the point where the next block will be inserted into.\n *\n * @param {Object} state\n * @return {Object} where the insertion point in the block editor is or null if none is set.\n */\nexport function getInsertionPoint( state ) {\n\treturn state.insertionPoint;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createSelector","createRegistrySelector","privateApis","blocksPrivateApis","getBlockOrder","getBlockParents","getBlockEditingMode","getSettings","canInsertBlockType","getBlockName","getTemplateLock","getClientIdsWithDescendants","isNavigationMode","getBlockRootClientId","getBlockAttributes","checkAllowListRecursive","getAllPatternsDependants","getInsertBlockTypeDependants","getGrammar","mapUserPattern","STORE_NAME","unlock","selectBlockPatternsKey","reusableBlocksSelectKey","sectionRootClientIdKey","isContentBlock","getBlockSettings","isBlockInterfaceHidden","state","getLastInsertedBlocksClientIds","lastBlockInserted","clientIds","getBlockWithoutAttributes","clientId","blocks","byClientId","get","isBlockSubtreeDisabled","isChildSubtreeDisabled","childClientId","every","isContainerInsertableToInWriteMode","blockName","rootClientId","isBlockContentBlock","rootBlockName","isContainerContentBlock","isRootBlockMain","getSectionRootClientId","getEnabledClientIdsTreeUnmemoized","blockOrder","result","innerBlocks","push","getEnabledClientIdsTree","select","order","derivedBlockEditingModes","derivedNavModeBlockEditingModes","blockEditingModes","__unstableGetEditorMode","getEnabledBlockParents","ascending","filter","parent","parents","settings","templateLock","blockListSettings","getRemovalPromptData","removalPromptData","getBlockRemovalRules","blockRemovalRules","getOpenedBlockSettingsMenu","openedBlockSettingsMenu","getStyleOverrides","clientIdMap","reduce","acc","index","styleOverrides","sort","overrideA","overrideB","_clientIdMap$clientId","_clientIdMap$clientId2","clientIdA","clientIdB","aIndex","bIndex","getRegisteredInserterMediaCategories","registeredInserterMediaCategories","getInserterMediaCategories","inserterMediaCategories","allowedMimeTypes","enableOpenverseMediaCategory","length","coreInserterMediaCategoriesNames","map","name","mergedCategories","includes","category","Object","values","some","mimeType","startsWith","mediaType","hasAllowedPatterns","getAllPatterns","patterns","allowedBlockTypes","pattern","inserter","grammar","getPatternBySlug","patternName","_state$settings$__exp","_state$settings$selec","_id","parseInt","slice","block","getReusableBlocks","find","id","__experimentalUserPatternCategories","__experimentalBlockPatterns","__experimentalReusableBlocks","_state$settings$__exp2","_state$settings$selec2","userPattern","x","arr","findIndex","y","EMPTY_ARRAY","_ref","reusableBlocksSelect","getLastFocus","lastFocus","isDragging","getExpandedBlock","expandedBlock","getContentLockingParent","current","getParentSectionBlock","isSectionBlock","attributes","metadata","window","__experimentalContentOnlyPatternInsertion","_isNavigationMode","sectionRootClientId","sectionClientIds","getTemporarilyEditingAsBlocks","temporarilyEditingAsBlocks","getTemporarilyEditingFocusModeToRevert","temporarilyEditingFocusModeRevert","getBlockStyles","styles","style","isZoomOut","zoomLevel","getZoomLevel","getClosestAllowedInsertionPoint","blockNames","Array","isArray","areBlockNamesAllowedInClientId","currentName","parentClientId","getClosestAllowedInsertionPointForPattern","isAllowed","names","getInsertionPoint","insertionPoint"],"sources":["@wordpress/block-editor/src/store/private-selectors.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createSelector, createRegistrySelector } from '@wordpress/data';\nimport { privateApis as blocksPrivateApis } from '@wordpress/blocks';\n\n/**\n * Internal dependencies\n */\nimport {\n\tgetBlockOrder,\n\tgetBlockParents,\n\tgetBlockEditingMode,\n\tgetSettings,\n\tcanInsertBlockType,\n\tgetBlockName,\n\tgetTemplateLock,\n\tgetClientIdsWithDescendants,\n\tisNavigationMode,\n\tgetBlockRootClientId,\n\tgetBlockAttributes,\n} from './selectors';\nimport {\n\tcheckAllowListRecursive,\n\tgetAllPatternsDependants,\n\tgetInsertBlockTypeDependants,\n\tgetGrammar,\n\tmapUserPattern,\n} from './utils';\nimport { STORE_NAME } from './constants';\nimport { unlock } from '../lock-unlock';\nimport {\n\tselectBlockPatternsKey,\n\treusableBlocksSelectKey,\n\tsectionRootClientIdKey,\n} from './private-keys';\n\nconst { isContentBlock } = unlock( blocksPrivateApis );\n\nexport { getBlockSettings } from './get-block-settings';\n\n/**\n * Returns true if the block interface is hidden, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether the block toolbar is hidden.\n */\nexport function isBlockInterfaceHidden( state ) {\n\treturn state.isBlockInterfaceHidden;\n}\n\n/**\n * Gets the client ids of the last inserted blocks.\n *\n * @param {Object} state Global application state.\n * @return {Array|undefined} Client Ids of the last inserted block(s).\n */\nexport function getLastInsertedBlocksClientIds( state ) {\n\treturn state?.lastBlockInserted?.clientIds;\n}\n\nexport function getBlockWithoutAttributes( state, clientId ) {\n\treturn state.blocks.byClientId.get( clientId );\n}\n\n/**\n * Returns true if all of the descendants of a block with the given client ID\n * have an editing mode of 'disabled', or false otherwise.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n *\n * @return {boolean} Whether the block descendants are disabled.\n */\nexport const isBlockSubtreeDisabled = ( state, clientId ) => {\n\tconst isChildSubtreeDisabled = ( childClientId ) => {\n\t\treturn (\n\t\t\tgetBlockEditingMode( state, childClientId ) === 'disabled' &&\n\t\t\tgetBlockOrder( state, childClientId ).every(\n\t\t\t\tisChildSubtreeDisabled\n\t\t\t)\n\t\t);\n\t};\n\treturn getBlockOrder( state, clientId ).every( isChildSubtreeDisabled );\n};\n\n/**\n * Determines if a container (clientId) allows insertion of blocks, considering contentOnly mode restrictions.\n *\n * @param {Object} state Editor state.\n * @param {string} blockName The block name to insert.\n * @param {string} rootClientId The client ID of the root container block.\n * @return {boolean} Whether the container allows insertion.\n */\nexport function isContainerInsertableToInWriteMode(\n\tstate,\n\tblockName,\n\trootClientId\n) {\n\tconst isBlockContentBlock = isContentBlock( blockName );\n\tconst rootBlockName = getBlockName( state, rootClientId );\n\tconst isContainerContentBlock = isContentBlock( rootBlockName );\n\tconst isRootBlockMain = getSectionRootClientId( state ) === rootClientId;\n\n\t// In write mode, containers shouldn't be inserted into unless:\n\t// 1. they are a section root;\n\t// 2. they are a content block and the block to be inserted is also content.\n\treturn (\n\t\tisRootBlockMain || ( isContainerContentBlock && isBlockContentBlock )\n\t);\n}\n\nfunction getEnabledClientIdsTreeUnmemoized( state, rootClientId ) {\n\tconst blockOrder = getBlockOrder( state, rootClientId );\n\tconst result = [];\n\n\tfor ( const clientId of blockOrder ) {\n\t\tconst innerBlocks = getEnabledClientIdsTreeUnmemoized(\n\t\t\tstate,\n\t\t\tclientId\n\t\t);\n\t\tif ( getBlockEditingMode( state, clientId ) !== 'disabled' ) {\n\t\t\tresult.push( { clientId, innerBlocks } );\n\t\t} else {\n\t\t\tresult.push( ...innerBlocks );\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Returns a tree of block objects with only clientID and innerBlocks set.\n * Blocks with a 'disabled' editing mode are not included.\n *\n * @param {Object} state Global application state.\n * @param {?string} rootClientId Optional root client ID of block list.\n *\n * @return {Object[]} Tree of block objects with only clientID and innerBlocks set.\n */\nexport const getEnabledClientIdsTree = createRegistrySelector( ( select ) =>\n\tcreateSelector( getEnabledClientIdsTreeUnmemoized, ( state ) => [\n\t\tstate.blocks.order,\n\t\tstate.derivedBlockEditingModes,\n\t\tstate.derivedNavModeBlockEditingModes,\n\t\tstate.blockEditingModes,\n\t\tselect( STORE_NAME ).__unstableGetEditorMode( state ),\n\t] )\n);\n\n/**\n * Returns a list of a given block's ancestors, from top to bottom. Blocks with\n * a 'disabled' editing mode are excluded.\n *\n * @see getBlockParents\n *\n * @param {Object} state Global application state.\n * @param {string} clientId The block client ID.\n * @param {boolean} ascending Order results from bottom to top (true) or top\n * to bottom (false).\n */\nexport const getEnabledBlockParents = createSelector(\n\t( state, clientId, ascending = false ) => {\n\t\treturn getBlockParents( state, clientId, ascending ).filter(\n\t\t\t( parent ) => getBlockEditingMode( state, parent ) !== 'disabled'\n\t\t);\n\t},\n\t( state ) => [\n\t\tstate.blocks.parents,\n\t\tstate.blockEditingModes,\n\t\tstate.settings.templateLock,\n\t\tstate.blockListSettings,\n\t]\n);\n\n/**\n * Selector that returns the data needed to display a prompt when certain\n * blocks are removed, or `false` if no such prompt is requested.\n *\n * @param {Object} state Global application state.\n *\n * @return {Object|false} Data for removal prompt display, if any.\n */\nexport function getRemovalPromptData( state ) {\n\treturn state.removalPromptData;\n}\n\n/**\n * Returns true if removal prompt exists, or false otherwise.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether removal prompt exists.\n */\nexport function getBlockRemovalRules( state ) {\n\treturn state.blockRemovalRules;\n}\n\n/**\n * Returns the client ID of the block settings menu that is currently open.\n *\n * @param {Object} state Global application state.\n * @return {string|null} The client ID of the block menu that is currently open.\n */\nexport function getOpenedBlockSettingsMenu( state ) {\n\treturn state.openedBlockSettingsMenu;\n}\n\n/**\n * Returns all style overrides, intended to be merged with global editor styles.\n *\n * Overrides are sorted to match the order of the blocks they relate to. This\n * is useful to maintain correct CSS cascade order.\n *\n * @param {Object} state Global application state.\n *\n * @return {Array} An array of style ID to style override pairs.\n */\nexport const getStyleOverrides = createSelector(\n\t( state ) => {\n\t\tconst clientIds = getClientIdsWithDescendants( state );\n\t\tconst clientIdMap = clientIds.reduce( ( acc, clientId, index ) => {\n\t\t\tacc[ clientId ] = index;\n\t\t\treturn acc;\n\t\t}, {} );\n\n\t\treturn [ ...state.styleOverrides ].sort( ( overrideA, overrideB ) => {\n\t\t\t// Once the overrides Map is spread to an array, the first element\n\t\t\t// is the key, while the second is the override itself including\n\t\t\t// the clientId to sort by.\n\t\t\tconst [ , { clientId: clientIdA } ] = overrideA;\n\t\t\tconst [ , { clientId: clientIdB } ] = overrideB;\n\n\t\t\tconst aIndex = clientIdMap[ clientIdA ] ?? -1;\n\t\t\tconst bIndex = clientIdMap[ clientIdB ] ?? -1;\n\n\t\t\treturn aIndex - bIndex;\n\t\t} );\n\t},\n\t( state ) => [ state.blocks.order, state.styleOverrides ]\n);\n\n/** @typedef {import('./actions').InserterMediaCategory} InserterMediaCategory */\n/**\n * Returns the registered inserter media categories through the public API.\n *\n * @param {Object} state Editor state.\n *\n * @return {InserterMediaCategory[]} Inserter media categories.\n */\nexport function getRegisteredInserterMediaCategories( state ) {\n\treturn state.registeredInserterMediaCategories;\n}\n\n/**\n * Returns an array containing the allowed inserter media categories.\n * It merges the registered media categories from extenders with the\n * core ones. It also takes into account the allowed `mime_types`, which\n * can be altered by `upload_mimes` filter and restrict some of them.\n *\n * @param {Object} state Global application state.\n *\n * @return {InserterMediaCategory[]} Client IDs of descendants.\n */\nexport const getInserterMediaCategories = createSelector(\n\t( state ) => {\n\t\tconst {\n\t\t\tsettings: {\n\t\t\t\tinserterMediaCategories,\n\t\t\t\tallowedMimeTypes,\n\t\t\t\tenableOpenverseMediaCategory,\n\t\t\t},\n\t\t\tregisteredInserterMediaCategories,\n\t\t} = state;\n\t\t// The allowed `mime_types` can be altered by `upload_mimes` filter and restrict\n\t\t// some of them. In this case we shouldn't add the category to the available media\n\t\t// categories list in the inserter.\n\t\tif (\n\t\t\t( ! inserterMediaCategories &&\n\t\t\t\t! registeredInserterMediaCategories.length ) ||\n\t\t\t! allowedMimeTypes\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tconst coreInserterMediaCategoriesNames =\n\t\t\tinserterMediaCategories?.map( ( { name } ) => name ) || [];\n\t\tconst mergedCategories = [\n\t\t\t...( inserterMediaCategories || [] ),\n\t\t\t...( registeredInserterMediaCategories || [] ).filter(\n\t\t\t\t( { name } ) =>\n\t\t\t\t\t! coreInserterMediaCategoriesNames.includes( name )\n\t\t\t),\n\t\t];\n\t\treturn mergedCategories.filter( ( category ) => {\n\t\t\t// Check if Openverse category is enabled.\n\t\t\tif (\n\t\t\t\t! enableOpenverseMediaCategory &&\n\t\t\t\tcategory.name === 'openverse'\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn Object.values( allowedMimeTypes ).some( ( mimeType ) =>\n\t\t\t\tmimeType.startsWith( `${ category.mediaType }/` )\n\t\t\t);\n\t\t} );\n\t},\n\t( state ) => [\n\t\tstate.settings.inserterMediaCategories,\n\t\tstate.settings.allowedMimeTypes,\n\t\tstate.settings.enableOpenverseMediaCategory,\n\t\tstate.registeredInserterMediaCategories,\n\t]\n);\n\n/**\n * Returns whether there is at least one allowed pattern for inner blocks children.\n * This is useful for deferring the parsing of all patterns until needed.\n *\n * @param {Object} state Editor state.\n * @param {string} [rootClientId=null] Target root client ID.\n *\n * @return {boolean} If there is at least one allowed pattern.\n */\nexport const hasAllowedPatterns = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, rootClientId = null ) => {\n\t\t\tconst { getAllPatterns } = unlock( select( STORE_NAME ) );\n\t\t\tconst patterns = getAllPatterns();\n\t\t\tconst { allowedBlockTypes } = getSettings( state );\n\t\t\treturn patterns.some( ( pattern ) => {\n\t\t\t\tconst { inserter = true } = pattern;\n\t\t\t\tif ( ! inserter ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst grammar = getGrammar( pattern );\n\t\t\t\treturn (\n\t\t\t\t\tcheckAllowListRecursive( grammar, allowedBlockTypes ) &&\n\t\t\t\t\tgrammar.every( ( { name: blockName } ) =>\n\t\t\t\t\t\tcanInsertBlockType( state, blockName, rootClientId )\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} );\n\t\t},\n\t\t( state, rootClientId ) => [\n\t\t\t...getAllPatternsDependants( select )( state ),\n\t\t\t...getInsertBlockTypeDependants( select )( state, rootClientId ),\n\t\t]\n\t)\n);\n\nexport const getPatternBySlug = createRegistrySelector( ( select ) =>\n\tcreateSelector(\n\t\t( state, patternName ) => {\n\t\t\t// Only fetch reusable blocks if we know we need them. To do: maybe\n\t\t\t// use the entity record API to retrieve the block by slug.\n\t\t\tif ( patternName?.startsWith( 'core/block/' ) ) {\n\t\t\t\tconst _id = parseInt(\n\t\t\t\t\tpatternName.slice( 'core/block/'.length ),\n\t\t\t\t\t10\n\t\t\t\t);\n\t\t\t\tconst block = unlock( select( STORE_NAME ) )\n\t\t\t\t\t.getReusableBlocks()\n\t\t\t\t\t.find( ( { id } ) => id === _id );\n\n\t\t\t\tif ( ! block ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\treturn mapUserPattern(\n\t\t\t\t\tblock,\n\t\t\t\t\tstate.settings.__experimentalUserPatternCategories\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t// This setting is left for back compat.\n\t\t\t\t...( state.settings.__experimentalBlockPatterns ?? [] ),\n\t\t\t\t...( state.settings[ selectBlockPatternsKey ]?.( select ) ??\n\t\t\t\t\t[] ),\n\t\t\t].find( ( { name } ) => name === patternName );\n\t\t},\n\t\t( state, patternName ) =>\n\t\t\tpatternName?.startsWith( 'core/block/' )\n\t\t\t\t? [\n\t\t\t\t\t\tunlock( select( STORE_NAME ) ).getReusableBlocks(),\n\t\t\t\t\t\tstate.settings.__experimentalReusableBlocks,\n\t\t\t\t ]\n\t\t\t\t: [\n\t\t\t\t\t\tstate.settings.__experimentalBlockPatterns,\n\t\t\t\t\t\tstate.settings[ selectBlockPatternsKey ]?.( select ),\n\t\t\t\t ]\n\t)\n);\n\nexport const getAllPatterns = createRegistrySelector( ( select ) =>\n\tcreateSelector( ( state ) => {\n\t\treturn [\n\t\t\t...unlock( select( STORE_NAME ) )\n\t\t\t\t.getReusableBlocks()\n\t\t\t\t.map( ( userPattern ) =>\n\t\t\t\t\tmapUserPattern(\n\t\t\t\t\t\tuserPattern,\n\t\t\t\t\t\tstate.settings.__experimentalUserPatternCategories\n\t\t\t\t\t)\n\t\t\t\t),\n\t\t\t// This setting is left for back compat.\n\t\t\t...( state.settings.__experimentalBlockPatterns ?? [] ),\n\t\t\t...( state.settings[ selectBlockPatternsKey ]?.( select ) ?? [] ),\n\t\t].filter(\n\t\t\t( x, index, arr ) =>\n\t\t\t\tindex === arr.findIndex( ( y ) => x.name === y.name )\n\t\t);\n\t}, getAllPatternsDependants( select ) )\n);\n\nconst EMPTY_ARRAY = [];\n\nexport const getReusableBlocks = createRegistrySelector(\n\t( select ) => ( state ) => {\n\t\tconst reusableBlocksSelect = state.settings[ reusableBlocksSelectKey ];\n\t\treturn (\n\t\t\t( reusableBlocksSelect\n\t\t\t\t? reusableBlocksSelect( select )\n\t\t\t\t: state.settings.__experimentalReusableBlocks ) ?? EMPTY_ARRAY\n\t\t);\n\t}\n);\n\n/**\n * Returns the element of the last element that had focus when focus left the editor canvas.\n *\n * @param {Object} state Block editor state.\n *\n * @return {Object} Element.\n */\nexport function getLastFocus( state ) {\n\treturn state.lastFocus;\n}\n\n/**\n * Returns true if the user is dragging anything, or false otherwise. It is possible for a\n * user to be dragging data from outside of the editor, so this selector is separate from\n * the `isDraggingBlocks` selector which only returns true if the user is dragging blocks.\n *\n * @param {Object} state Global application state.\n *\n * @return {boolean} Whether user is dragging.\n */\nexport function isDragging( state ) {\n\treturn state.isDragging;\n}\n\n/**\n * Retrieves the expanded block from the state.\n *\n * @param {Object} state Block editor state.\n *\n * @return {string|null} The client ID of the expanded block, if set.\n */\nexport function getExpandedBlock( state ) {\n\treturn state.expandedBlock;\n}\n\n/**\n * Retrieves the client ID of the ancestor block that is content locking the block\n * with the provided client ID.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client Id of the block.\n *\n * @return {?string} Client ID of the ancestor block that is content locking the block.\n */\nexport const getContentLockingParent = ( state, clientId ) => {\n\tlet current = clientId;\n\tlet result;\n\twhile ( ! result && ( current = state.blocks.parents.get( current ) ) ) {\n\t\tif ( getTemplateLock( state, current ) === 'contentOnly' ) {\n\t\t\tresult = current;\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Retrieves the client ID of the parent section block.\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client Id of the block.\n *\n * @return {?string} Client ID of the ancestor block that is content locking the block.\n */\nexport const getParentSectionBlock = ( state, clientId ) => {\n\tlet current = clientId;\n\tlet result;\n\twhile ( ! result && ( current = state.blocks.parents.get( current ) ) ) {\n\t\tif ( isSectionBlock( state, current ) ) {\n\t\t\tresult = current;\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Retrieves the client ID is a content locking parent\n *\n * @param {Object} state Global application state.\n * @param {string} clientId Client Id of the block.\n *\n * @return {boolean} Whether the block is a content locking parent.\n */\nexport function isSectionBlock( state, clientId ) {\n\tconst blockName = getBlockName( state, clientId );\n\tif (\n\t\tblockName === 'core/block' ||\n\t\tgetTemplateLock( state, clientId ) === 'contentOnly'\n\t) {\n\t\treturn true;\n\t}\n\n\tconst attributes = getBlockAttributes( state, clientId );\n\tif (\n\t\tattributes?.metadata?.patternName &&\n\t\t!! window?.__experimentalContentOnlyPatternInsertion\n\t) {\n\t\treturn true;\n\t}\n\n\t// Template parts become sections in navigation mode.\n\tconst _isNavigationMode = isNavigationMode( state );\n\tif ( _isNavigationMode && blockName === 'core/template-part' ) {\n\t\treturn true;\n\t}\n\n\tconst sectionRootClientId = getSectionRootClientId( state );\n\tconst sectionClientIds = getBlockOrder( state, sectionRootClientId );\n\treturn _isNavigationMode && sectionClientIds.includes( clientId );\n}\n\n/**\n * Retrieves the client ID of the block that is content locked but is\n * currently being temporarily edited as a non-locked block.\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} The client ID of the block being temporarily edited as a non-locked block.\n */\nexport function getTemporarilyEditingAsBlocks( state ) {\n\treturn state.temporarilyEditingAsBlocks;\n}\n\n/**\n * Returns the focus mode that should be reapplied when the user stops editing\n * a content locked blocks as a block without locking.\n *\n * @param {Object} state Global application state.\n *\n * @return {?string} The focus mode that should be re-set when temporarily editing as blocks stops.\n */\nexport function getTemporarilyEditingFocusModeToRevert( state ) {\n\treturn state.temporarilyEditingFocusModeRevert;\n}\n\n/**\n * Returns the style attributes of multiple blocks.\n *\n * @param {Object} state Global application state.\n * @param {string[]} clientIds An array of block client IDs.\n *\n * @return {Object} An object where keys are client IDs and values are the corresponding block styles or undefined.\n */\nexport const getBlockStyles = createSelector(\n\t( state, clientIds ) =>\n\t\tclientIds.reduce( ( styles, clientId ) => {\n\t\t\tstyles[ clientId ] = state.blocks.attributes.get( clientId )?.style;\n\t\t\treturn styles;\n\t\t}, {} ),\n\t( state, clientIds ) => [\n\t\t...clientIds.map(\n\t\t\t( clientId ) => state.blocks.attributes.get( clientId )?.style\n\t\t),\n\t]\n);\n\n/**\n * Retrieves the client ID of the block which contains the blocks\n * acting as \"sections\" in the editor. This is typically the \"main content\"\n * of the template/post.\n *\n * @param {Object} state Editor state.\n *\n * @return {string|undefined} The section root client ID or undefined if not set.\n */\nexport function getSectionRootClientId( state ) {\n\treturn state.settings?.[ sectionRootClientIdKey ];\n}\n\n/**\n * Returns whether the editor is considered zoomed out.\n *\n * @param {Object} state Global application state.\n * @return {boolean} Whether the editor is zoomed.\n */\nexport function isZoomOut( state ) {\n\treturn state.zoomLevel === 'auto-scaled' || state.zoomLevel < 100;\n}\n\n/**\n * Returns whether the zoom level.\n *\n * @param {Object} state Global application state.\n * @return {number|\"auto-scaled\"} Zoom level.\n */\nexport function getZoomLevel( state ) {\n\treturn state.zoomLevel;\n}\n\n/**\n * Finds the closest block where the block is allowed to be inserted.\n *\n * @param {Object} state Editor state.\n * @param {string[] | string} name Block name or names.\n * @param {string} clientId Default insertion point.\n *\n * @return {string} clientID of the closest container when the block name can be inserted.\n */\nexport function getClosestAllowedInsertionPoint( state, name, clientId = '' ) {\n\tconst blockNames = Array.isArray( name ) ? name : [ name ];\n\tconst areBlockNamesAllowedInClientId = ( id ) =>\n\t\tblockNames.every( ( currentName ) =>\n\t\t\tcanInsertBlockType( state, currentName, id )\n\t\t);\n\n\t// If we're trying to insert at the root level and it's not allowed\n\t// Try the section root instead.\n\tif ( ! clientId ) {\n\t\tif ( areBlockNamesAllowedInClientId( clientId ) ) {\n\t\t\treturn clientId;\n\t\t}\n\n\t\tconst sectionRootClientId = getSectionRootClientId( state );\n\t\tif (\n\t\t\tsectionRootClientId &&\n\t\t\tareBlockNamesAllowedInClientId( sectionRootClientId )\n\t\t) {\n\t\t\treturn sectionRootClientId;\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Traverse the block tree up until we find a place where we can insert.\n\tlet current = clientId;\n\twhile ( current !== null && ! areBlockNamesAllowedInClientId( current ) ) {\n\t\tconst parentClientId = getBlockRootClientId( state, current );\n\t\tcurrent = parentClientId;\n\t}\n\n\treturn current;\n}\n\nexport function getClosestAllowedInsertionPointForPattern(\n\tstate,\n\tpattern,\n\tclientId\n) {\n\tconst { allowedBlockTypes } = getSettings( state );\n\tconst isAllowed = checkAllowListRecursive(\n\t\tgetGrammar( pattern ),\n\t\tallowedBlockTypes\n\t);\n\tif ( ! isAllowed ) {\n\t\treturn null;\n\t}\n\tconst names = getGrammar( pattern ).map( ( { blockName: name } ) => name );\n\treturn getClosestAllowedInsertionPoint( state, names, clientId );\n}\n\n/**\n * Where the point where the next block will be inserted into.\n *\n * @param {Object} state\n * @return {Object} where the insertion point in the block editor is or null if none is set.\n */\nexport function getInsertionPoint( state ) {\n\treturn state.insertionPoint;\n}\n"],"mappings":"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","ignoreList":[]}