@wordpress/block-editor 12.10.2 → 12.10.4

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 (103) hide show
  1. package/build/components/block-styles/index.js +1 -2
  2. package/build/components/block-styles/index.js.map +1 -1
  3. package/build/components/global-styles/hooks.js +1 -1
  4. package/build/components/global-styles/hooks.js.map +1 -1
  5. package/build/components/global-styles/use-global-styles-output.js +17 -5
  6. package/build/components/global-styles/use-global-styles-output.js.map +1 -1
  7. package/build/components/global-styles/utils.js +22 -0
  8. package/build/components/global-styles/utils.js.map +1 -1
  9. package/build/components/iframe/index.js +9 -1
  10. package/build/components/iframe/index.js.map +1 -1
  11. package/build/components/inserter/block-patterns-filter.js +11 -10
  12. package/build/components/inserter/block-patterns-filter.js.map +1 -1
  13. package/build/components/inserter/block-patterns-tab.js +1 -1
  14. package/build/components/inserter/block-patterns-tab.js.map +1 -1
  15. package/build/components/inserter/media-tab/hooks.js +4 -33
  16. package/build/components/inserter/media-tab/hooks.js.map +1 -1
  17. package/build/components/link-control/search-item.js +36 -1
  18. package/build/components/link-control/search-item.js.map +1 -1
  19. package/build/components/list-view/block.js +1 -32
  20. package/build/components/list-view/block.js.map +1 -1
  21. package/build/components/list-view/branch.js +8 -1
  22. package/build/components/list-view/branch.js.map +1 -1
  23. package/build/components/list-view/index.js +8 -3
  24. package/build/components/list-view/index.js.map +1 -1
  25. package/build/components/list-view/utils.js +35 -0
  26. package/build/components/list-view/utils.js.map +1 -1
  27. package/build/components/tool-selector/index.js +2 -1
  28. package/build/components/tool-selector/index.js.map +1 -1
  29. package/build/hooks/block-rename-ui.js +5 -2
  30. package/build/hooks/block-rename-ui.js.map +1 -1
  31. package/build/store/actions.js +8 -12
  32. package/build/store/actions.js.map +1 -1
  33. package/build/store/private-selectors.js +55 -1
  34. package/build/store/private-selectors.js.map +1 -1
  35. package/build/store/reducer.js +19 -1
  36. package/build/store/reducer.js.map +1 -1
  37. package/build/utils/transform-styles/transforms/wrap.js +5 -0
  38. package/build/utils/transform-styles/transforms/wrap.js.map +1 -1
  39. package/build-module/components/block-styles/index.js +1 -2
  40. package/build-module/components/block-styles/index.js.map +1 -1
  41. package/build-module/components/global-styles/hooks.js +1 -1
  42. package/build-module/components/global-styles/hooks.js.map +1 -1
  43. package/build-module/components/global-styles/use-global-styles-output.js +17 -6
  44. package/build-module/components/global-styles/use-global-styles-output.js.map +1 -1
  45. package/build-module/components/global-styles/utils.js +21 -0
  46. package/build-module/components/global-styles/utils.js.map +1 -1
  47. package/build-module/components/iframe/index.js +9 -1
  48. package/build-module/components/iframe/index.js.map +1 -1
  49. package/build-module/components/inserter/block-patterns-filter.js +13 -12
  50. package/build-module/components/inserter/block-patterns-filter.js.map +1 -1
  51. package/build-module/components/inserter/block-patterns-tab.js +1 -1
  52. package/build-module/components/inserter/block-patterns-tab.js.map +1 -1
  53. package/build-module/components/inserter/media-tab/hooks.js +5 -34
  54. package/build-module/components/inserter/media-tab/hooks.js.map +1 -1
  55. package/build-module/components/link-control/search-item.js +37 -2
  56. package/build-module/components/link-control/search-item.js.map +1 -1
  57. package/build-module/components/list-view/block.js +3 -34
  58. package/build-module/components/list-view/block.js.map +1 -1
  59. package/build-module/components/list-view/branch.js +8 -1
  60. package/build-module/components/list-view/branch.js.map +1 -1
  61. package/build-module/components/list-view/index.js +8 -3
  62. package/build-module/components/list-view/index.js.map +1 -1
  63. package/build-module/components/list-view/utils.js +34 -0
  64. package/build-module/components/list-view/utils.js.map +1 -1
  65. package/build-module/components/tool-selector/index.js +2 -1
  66. package/build-module/components/tool-selector/index.js.map +1 -1
  67. package/build-module/hooks/block-rename-ui.js +5 -2
  68. package/build-module/hooks/block-rename-ui.js.map +1 -1
  69. package/build-module/store/actions.js +8 -12
  70. package/build-module/store/actions.js.map +1 -1
  71. package/build-module/store/private-selectors.js +52 -0
  72. package/build-module/store/private-selectors.js.map +1 -1
  73. package/build-module/store/reducer.js +18 -1
  74. package/build-module/store/reducer.js.map +1 -1
  75. package/build-module/utils/transform-styles/transforms/wrap.js +5 -0
  76. package/build-module/utils/transform-styles/transforms/wrap.js.map +1 -1
  77. package/build-style/style-rtl.css +1 -1
  78. package/build-style/style.css +1 -1
  79. package/package.json +32 -32
  80. package/src/components/block-styles/index.js +1 -4
  81. package/src/components/global-styles/hooks.js +1 -1
  82. package/src/components/global-styles/test/use-global-styles-output.js +39 -0
  83. package/src/components/global-styles/use-global-styles-output.js +26 -6
  84. package/src/components/global-styles/utils.js +21 -0
  85. package/src/components/iframe/index.js +8 -1
  86. package/src/components/inserter/block-patterns-filter.js +22 -10
  87. package/src/components/inserter/block-patterns-tab.js +0 -3
  88. package/src/components/inserter/media-tab/hooks.js +10 -44
  89. package/src/components/inserter/style.scss +1 -1
  90. package/src/components/link-control/search-item.js +55 -2
  91. package/src/components/list-view/block.js +3 -43
  92. package/src/components/list-view/branch.js +11 -1
  93. package/src/components/list-view/index.js +8 -4
  94. package/src/components/list-view/utils.js +37 -0
  95. package/src/components/tool-selector/index.js +1 -1
  96. package/src/hooks/block-rename-ui.js +14 -10
  97. package/src/store/actions.js +7 -11
  98. package/src/store/private-selectors.js +72 -0
  99. package/src/store/reducer.js +17 -0
  100. package/src/store/test/actions.js +10 -16
  101. package/src/utils/transform-styles/transforms/test/__snapshots__/wrap.js.snap +13 -6
  102. package/src/utils/transform-styles/transforms/test/wrap.js +9 -0
  103. package/src/utils/transform-styles/transforms/wrap.js +5 -0
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_i18n","_compose","_components","_data","_blockSelectionClearer","_writingFlow","_useCompatibilityStyles","_store","bubbleEvent","event","Constructor","frame","init","key","ownerDocument","defaultView","MouseEvent","rect","getBoundingClientRect","clientX","left","clientY","top","newEvent","type","defaultPrevented","preventDefault","cancelled","dispatchEvent","useBubbleEvents","iframeDocument","useRefEffect","body","frameElement","eventTypes","handlers","name","prototype","Object","getPrototypeOf","constructorName","constructor","window","addEventListener","removeEventListener","Iframe","contentRef","children","tabIndex","scale","frameSize","expand","readonly","forwardedRef","ref","props","resolvedAssets","isPreviewMode","useSelect","select","settings","blockEditorStore","getSettings","__unstableResolvedAssets","__unstableIsPreviewMode","styles","scripts","setIframeDocument","useState","bodyClasses","setBodyClasses","compatStyles","useCompatibilityStyles","clearerRef","useBlockSelectionClearer","before","writingFlowRef","after","useWritingFlow","contentResizeListener","height","contentHeight","useResizeObserver","setRef","node","_load","contentDocument","iFrameDocument","preventFileDropDefault","onLoad","documentElement","Array","from","classList","filter","startsWith","dir","compatStyle","getElementById","id","head","appendChild","cloneNode","console","warn","disabledRef","useDisabled","isDisabled","bodyRef","useMergeRefs","html","src","cleanup","useMemo","_src","URL","createObjectURL","Blob","revokeObjectURL","useEffect","marginFromScaling","createElement","Fragment","style","border","marginTop","marginBottom","transform","transition","title","__","onKeyDown","currentTarget","target","stopPropagation","KeyboardEvent","createPortal","className","classnames","__experimentalStyleProvider","document","IframeIfReady","isInitialised","__internalIsInitialized","_default","forwardRef","exports","default"],"sources":["@wordpress/block-editor/src/components/iframe/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tcreatePortal,\n\tforwardRef,\n\tuseMemo,\n\tuseEffect,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseResizeObserver,\n\tuseMergeRefs,\n\tuseRefEffect,\n\tuseDisabled,\n} from '@wordpress/compose';\nimport { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useWritingFlow } from '../writing-flow';\nimport { useCompatibilityStyles } from './use-compatibility-styles';\nimport { store as blockEditorStore } from '../../store';\n\nfunction bubbleEvent( event, Constructor, frame ) {\n\tconst init = {};\n\n\tfor ( const key in event ) {\n\t\tinit[ key ] = event[ key ];\n\t}\n\n\tif ( event instanceof frame.ownerDocument.defaultView.MouseEvent ) {\n\t\tconst rect = frame.getBoundingClientRect();\n\t\tinit.clientX += rect.left;\n\t\tinit.clientY += rect.top;\n\t}\n\n\tconst newEvent = new Constructor( event.type, init );\n\tif ( init.defaultPrevented ) {\n\t\tnewEvent.preventDefault();\n\t}\n\tconst cancelled = ! frame.dispatchEvent( newEvent );\n\n\tif ( cancelled ) {\n\t\tevent.preventDefault();\n\t}\n}\n\n/**\n * Bubbles some event types (keydown, keypress, and dragover) to parent document\n * document to ensure that the keyboard shortcuts and drag and drop work.\n *\n * Ideally, we should remove event bubbling in the future. Keyboard shortcuts\n * should be context dependent, e.g. actions on blocks like Cmd+A should not\n * work globally outside the block editor.\n *\n * @param {Document} iframeDocument Document to attach listeners to.\n */\nfunction useBubbleEvents( iframeDocument ) {\n\treturn useRefEffect( ( body ) => {\n\t\tconst { defaultView } = iframeDocument;\n\t\tif ( ! defaultView ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { frameElement } = defaultView;\n\t\tconst eventTypes = [ 'dragover', 'mousemove' ];\n\t\tconst handlers = {};\n\t\tfor ( const name of eventTypes ) {\n\t\t\thandlers[ name ] = ( event ) => {\n\t\t\t\tconst prototype = Object.getPrototypeOf( event );\n\t\t\t\tconst constructorName = prototype.constructor.name;\n\t\t\t\tconst Constructor = window[ constructorName ];\n\t\t\t\tbubbleEvent( event, Constructor, frameElement );\n\t\t\t};\n\t\t\tbody.addEventListener( name, handlers[ name ] );\n\t\t}\n\n\t\treturn () => {\n\t\t\tfor ( const name of eventTypes ) {\n\t\t\t\tbody.removeEventListener( name, handlers[ name ] );\n\t\t\t}\n\t\t};\n\t} );\n}\n\nfunction Iframe( {\n\tcontentRef,\n\tchildren,\n\ttabIndex = 0,\n\tscale = 1,\n\tframeSize = 0,\n\texpand = false,\n\treadonly,\n\tforwardedRef: ref,\n\t...props\n} ) {\n\tconst { resolvedAssets, isPreviewMode } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tresolvedAssets: settings.__unstableResolvedAssets,\n\t\t\tisPreviewMode: settings.__unstableIsPreviewMode,\n\t\t};\n\t}, [] );\n\tconst { styles = '', scripts = '' } = resolvedAssets;\n\tconst [ iframeDocument, setIframeDocument ] = useState();\n\tconst [ bodyClasses, setBodyClasses ] = useState( [] );\n\tconst compatStyles = useCompatibilityStyles();\n\tconst clearerRef = useBlockSelectionClearer();\n\tconst [ before, writingFlowRef, after ] = useWritingFlow();\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst setRef = useRefEffect( ( node ) => {\n\t\tnode._load = () => {\n\t\t\tsetIframeDocument( node.contentDocument );\n\t\t};\n\t\tlet iFrameDocument;\n\t\t// Prevent the default browser action for files dropped outside of dropzones.\n\t\tfunction preventFileDropDefault( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tfunction onLoad() {\n\t\t\tconst { contentDocument, ownerDocument } = node;\n\t\t\tconst { documentElement } = contentDocument;\n\t\t\tiFrameDocument = contentDocument;\n\n\t\t\tclearerRef( documentElement );\n\n\t\t\t// Ideally ALL classes that are added through get_body_class should\n\t\t\t// be added in the editor too, which we'll somehow have to get from\n\t\t\t// the server in the future (which will run the PHP filters).\n\t\t\tsetBodyClasses(\n\t\t\t\tArray.from( ownerDocument.body.classList ).filter(\n\t\t\t\t\t( name ) =>\n\t\t\t\t\t\tname.startsWith( 'admin-color-' ) ||\n\t\t\t\t\t\tname.startsWith( 'post-type-' ) ||\n\t\t\t\t\t\tname === 'wp-embed-responsive'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcontentDocument.dir = ownerDocument.dir;\n\n\t\t\tfor ( const compatStyle of compatStyles ) {\n\t\t\t\tif ( contentDocument.getElementById( compatStyle.id ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcontentDocument.head.appendChild(\n\t\t\t\t\tcompatStyle.cloneNode( true )\n\t\t\t\t);\n\n\t\t\t\tif ( ! isPreviewMode ) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${ compatStyle.id } was added to the iframe incorrectly. Please use block.json or enqueue_block_assets to add styles to the iframe.`,\n\t\t\t\t\t\tcompatStyle\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'load', onLoad );\n\n\t\treturn () => {\n\t\t\tdelete node._load;\n\t\t\tnode.removeEventListener( 'load', onLoad );\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t};\n\t}, [] );\n\n\tconst disabledRef = useDisabled( { isDisabled: ! readonly } );\n\tconst bodyRef = useMergeRefs( [\n\t\tuseBubbleEvents( iframeDocument ),\n\t\tcontentRef,\n\t\tclearerRef,\n\t\twritingFlowRef,\n\t\tdisabledRef,\n\t] );\n\n\t// Correct doctype is required to enable rendering in standards\n\t// mode. Also preload the styles to avoid a flash of unstyled\n\t// content.\n\tconst html = `<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<script>window.frameElement._load()</script>\n\t\t<style>html{height:auto!important;min-height:100%;}body{margin:0}</style>\n\t\t${ styles }\n\t\t${ scripts }\n\t</head>\n\t<body>\n\t\t<script>document.currentScript.parentElement.remove()</script>\n\t</body>\n</html>`;\n\n\tconst [ src, cleanup ] = useMemo( () => {\n\t\tconst _src = URL.createObjectURL(\n\t\t\tnew window.Blob( [ html ], { type: 'text/html' } )\n\t\t);\n\t\treturn [ _src, () => URL.revokeObjectURL( _src ) ];\n\t}, [ html ] );\n\n\tuseEffect( () => cleanup, [ cleanup ] );\n\n\t// We need to counter the margin created by scaling the iframe. If the scale\n\t// is e.g. 0.45, then the top + bottom margin is 0.55 (1 - scale). Just the\n\t// top or bottom margin is 0.55 / 2 ((1 - scale) / 2).\n\tconst marginFromScaling = ( contentHeight * ( 1 - scale ) ) / 2;\n\n\treturn (\n\t\t<>\n\t\t\t{ tabIndex >= 0 && before }\n\t\t\t{ /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */ }\n\t\t\t<iframe\n\t\t\t\t{ ...props }\n\t\t\t\tstyle={ {\n\t\t\t\t\tborder: 0,\n\t\t\t\t\t...props.style,\n\t\t\t\t\theight: expand ? contentHeight : props.style?.height,\n\t\t\t\t\tmarginTop:\n\t\t\t\t\t\tscale !== 1\n\t\t\t\t\t\t\t? -marginFromScaling + frameSize\n\t\t\t\t\t\t\t: props.style?.marginTop,\n\t\t\t\t\tmarginBottom:\n\t\t\t\t\t\tscale !== 1\n\t\t\t\t\t\t\t? -marginFromScaling + frameSize\n\t\t\t\t\t\t\t: props.style?.marginBottom,\n\t\t\t\t\ttransform:\n\t\t\t\t\t\tscale !== 1\n\t\t\t\t\t\t\t? `scale( ${ scale } )`\n\t\t\t\t\t\t\t: props.style?.transform,\n\t\t\t\t\ttransition: 'all .3s',\n\t\t\t\t} }\n\t\t\t\tref={ useMergeRefs( [ ref, setRef ] ) }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t// Correct doctype is required to enable rendering in standards\n\t\t\t\t// mode. Also preload the styles to avoid a flash of unstyled\n\t\t\t\t// content.\n\t\t\t\tsrc={ src }\n\t\t\t\ttitle={ __( 'Editor canvas' ) }\n\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t// If the event originates from inside the iframe, it means\n\t\t\t\t\t// it bubbled through the portal, but only with React\n\t\t\t\t\t// events. We need to to bubble native events as well,\n\t\t\t\t\t// though by doing so we also trigger another React event,\n\t\t\t\t\t// so we need to stop the propagation of this event to avoid\n\t\t\t\t\t// duplication.\n\t\t\t\t\tif (\n\t\t\t\t\t\tevent.currentTarget.ownerDocument !==\n\t\t\t\t\t\tevent.target.ownerDocument\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tbubbleEvent(\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\twindow.KeyboardEvent,\n\t\t\t\t\t\t\tevent.currentTarget\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ iframeDocument &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t// We want to prevent React events from bubbling throught the iframe\n\t\t\t\t\t\t// we bubble these manually.\n\t\t\t\t\t\t/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t\t\t<body\n\t\t\t\t\t\t\tref={ bodyRef }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-iframe__body',\n\t\t\t\t\t\t\t\t'editor-styles-wrapper',\n\t\t\t\t\t\t\t\t...bodyClasses\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t\t\t<StyleProvider document={ iframeDocument }>\n\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t</body>,\n\t\t\t\t\t\tiframeDocument.documentElement\n\t\t\t\t\t) }\n\t\t\t</iframe>\n\t\t\t{ tabIndex >= 0 && after }\n\t\t</>\n\t);\n}\n\nfunction IframeIfReady( props, ref ) {\n\tconst isInitialised = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__internalIsInitialized,\n\t\t[]\n\t);\n\n\t// We shouldn't render the iframe until the editor settings are initialised.\n\t// The initial settings are needed to get the styles for the srcDoc, which\n\t// cannot be changed after the iframe is mounted. srcDoc is used to to set\n\t// the initial iframe HTML, which is required to avoid a flash of unstyled\n\t// content.\n\tif ( ! isInitialised ) {\n\t\treturn null;\n\t}\n\n\treturn <Iframe { ...props } forwardedRef={ ref } />;\n}\n\nexport default forwardRef( IframeIfReady );\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_i18n","_compose","_components","_data","_blockSelectionClearer","_writingFlow","_useCompatibilityStyles","_store","bubbleEvent","event","Constructor","frame","init","key","contentDocument","defaultView","MouseEvent","rect","getBoundingClientRect","clientX","left","clientY","top","newEvent","type","defaultPrevented","preventDefault","cancelled","dispatchEvent","useBubbleEvents","iframeDocument","useRefEffect","body","frameElement","eventTypes","handlers","name","prototype","Object","getPrototypeOf","constructorName","constructor","window","addEventListener","removeEventListener","Iframe","contentRef","children","tabIndex","scale","frameSize","expand","readonly","forwardedRef","ref","props","resolvedAssets","isPreviewMode","useSelect","select","settings","blockEditorStore","getSettings","__unstableResolvedAssets","__unstableIsPreviewMode","styles","scripts","setIframeDocument","useState","bodyClasses","setBodyClasses","compatStyles","useCompatibilityStyles","clearerRef","useBlockSelectionClearer","before","writingFlowRef","after","useWritingFlow","contentResizeListener","height","contentHeight","useResizeObserver","setRef","node","_load","iFrameDocument","preventFileDropDefault","onLoad","ownerDocument","documentElement","Array","from","classList","filter","startsWith","dir","compatStyle","getElementById","id","head","appendChild","cloneNode","console","warn","disabledRef","useDisabled","isDisabled","bodyRef","useMergeRefs","html","src","cleanup","useMemo","_src","URL","createObjectURL","Blob","revokeObjectURL","useEffect","marginFromScaling","createElement","Fragment","style","border","marginTop","marginBottom","transform","transition","title","__","onKeyDown","currentTarget","target","stopPropagation","KeyboardEvent","createPortal","className","classnames","__experimentalStyleProvider","document","IframeIfReady","isInitialised","__internalIsInitialized","_default","forwardRef","exports","default"],"sources":["@wordpress/block-editor/src/components/iframe/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tuseState,\n\tcreatePortal,\n\tforwardRef,\n\tuseMemo,\n\tuseEffect,\n} from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tuseResizeObserver,\n\tuseMergeRefs,\n\tuseRefEffect,\n\tuseDisabled,\n} from '@wordpress/compose';\nimport { __experimentalStyleProvider as StyleProvider } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useBlockSelectionClearer } from '../block-selection-clearer';\nimport { useWritingFlow } from '../writing-flow';\nimport { useCompatibilityStyles } from './use-compatibility-styles';\nimport { store as blockEditorStore } from '../../store';\n\nfunction bubbleEvent( event, Constructor, frame ) {\n\tconst init = {};\n\n\tfor ( const key in event ) {\n\t\tinit[ key ] = event[ key ];\n\t}\n\n\t// Check if the event is a MouseEvent generated within the iframe.\n\t// If so, adjust the coordinates to be relative to the position of\n\t// the iframe. This ensures that components such as Draggable\n\t// receive coordinates relative to the window, instead of relative\n\t// to the iframe. Without this, the Draggable event handler would\n\t// result in components \"jumping\" position as soon as the user\n\t// drags over the iframe.\n\tif ( event instanceof frame.contentDocument.defaultView.MouseEvent ) {\n\t\tconst rect = frame.getBoundingClientRect();\n\t\tinit.clientX += rect.left;\n\t\tinit.clientY += rect.top;\n\t}\n\n\tconst newEvent = new Constructor( event.type, init );\n\tif ( init.defaultPrevented ) {\n\t\tnewEvent.preventDefault();\n\t}\n\tconst cancelled = ! frame.dispatchEvent( newEvent );\n\n\tif ( cancelled ) {\n\t\tevent.preventDefault();\n\t}\n}\n\n/**\n * Bubbles some event types (keydown, keypress, and dragover) to parent document\n * document to ensure that the keyboard shortcuts and drag and drop work.\n *\n * Ideally, we should remove event bubbling in the future. Keyboard shortcuts\n * should be context dependent, e.g. actions on blocks like Cmd+A should not\n * work globally outside the block editor.\n *\n * @param {Document} iframeDocument Document to attach listeners to.\n */\nfunction useBubbleEvents( iframeDocument ) {\n\treturn useRefEffect( ( body ) => {\n\t\tconst { defaultView } = iframeDocument;\n\t\tif ( ! defaultView ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { frameElement } = defaultView;\n\t\tconst eventTypes = [ 'dragover', 'mousemove' ];\n\t\tconst handlers = {};\n\t\tfor ( const name of eventTypes ) {\n\t\t\thandlers[ name ] = ( event ) => {\n\t\t\t\tconst prototype = Object.getPrototypeOf( event );\n\t\t\t\tconst constructorName = prototype.constructor.name;\n\t\t\t\tconst Constructor = window[ constructorName ];\n\t\t\t\tbubbleEvent( event, Constructor, frameElement );\n\t\t\t};\n\t\t\tbody.addEventListener( name, handlers[ name ] );\n\t\t}\n\n\t\treturn () => {\n\t\t\tfor ( const name of eventTypes ) {\n\t\t\t\tbody.removeEventListener( name, handlers[ name ] );\n\t\t\t}\n\t\t};\n\t} );\n}\n\nfunction Iframe( {\n\tcontentRef,\n\tchildren,\n\ttabIndex = 0,\n\tscale = 1,\n\tframeSize = 0,\n\texpand = false,\n\treadonly,\n\tforwardedRef: ref,\n\t...props\n} ) {\n\tconst { resolvedAssets, isPreviewMode } = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tresolvedAssets: settings.__unstableResolvedAssets,\n\t\t\tisPreviewMode: settings.__unstableIsPreviewMode,\n\t\t};\n\t}, [] );\n\tconst { styles = '', scripts = '' } = resolvedAssets;\n\tconst [ iframeDocument, setIframeDocument ] = useState();\n\tconst [ bodyClasses, setBodyClasses ] = useState( [] );\n\tconst compatStyles = useCompatibilityStyles();\n\tconst clearerRef = useBlockSelectionClearer();\n\tconst [ before, writingFlowRef, after ] = useWritingFlow();\n\tconst [ contentResizeListener, { height: contentHeight } ] =\n\t\tuseResizeObserver();\n\tconst setRef = useRefEffect( ( node ) => {\n\t\tnode._load = () => {\n\t\t\tsetIframeDocument( node.contentDocument );\n\t\t};\n\t\tlet iFrameDocument;\n\t\t// Prevent the default browser action for files dropped outside of dropzones.\n\t\tfunction preventFileDropDefault( event ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t\tfunction onLoad() {\n\t\t\tconst { contentDocument, ownerDocument } = node;\n\t\t\tconst { documentElement } = contentDocument;\n\t\t\tiFrameDocument = contentDocument;\n\n\t\t\tclearerRef( documentElement );\n\n\t\t\t// Ideally ALL classes that are added through get_body_class should\n\t\t\t// be added in the editor too, which we'll somehow have to get from\n\t\t\t// the server in the future (which will run the PHP filters).\n\t\t\tsetBodyClasses(\n\t\t\t\tArray.from( ownerDocument.body.classList ).filter(\n\t\t\t\t\t( name ) =>\n\t\t\t\t\t\tname.startsWith( 'admin-color-' ) ||\n\t\t\t\t\t\tname.startsWith( 'post-type-' ) ||\n\t\t\t\t\t\tname === 'wp-embed-responsive'\n\t\t\t\t)\n\t\t\t);\n\n\t\t\tcontentDocument.dir = ownerDocument.dir;\n\n\t\t\tfor ( const compatStyle of compatStyles ) {\n\t\t\t\tif ( contentDocument.getElementById( compatStyle.id ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcontentDocument.head.appendChild(\n\t\t\t\t\tcompatStyle.cloneNode( true )\n\t\t\t\t);\n\n\t\t\t\tif ( ! isPreviewMode ) {\n\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${ compatStyle.id } was added to the iframe incorrectly. Please use block.json or enqueue_block_assets to add styles to the iframe.`,\n\t\t\t\t\t\tcompatStyle\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t\tiFrameDocument.addEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault,\n\t\t\t\tfalse\n\t\t\t);\n\t\t}\n\n\t\tnode.addEventListener( 'load', onLoad );\n\n\t\treturn () => {\n\t\t\tdelete node._load;\n\t\t\tnode.removeEventListener( 'load', onLoad );\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'dragover',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t\tiFrameDocument?.removeEventListener(\n\t\t\t\t'drop',\n\t\t\t\tpreventFileDropDefault\n\t\t\t);\n\t\t};\n\t}, [] );\n\n\tconst disabledRef = useDisabled( { isDisabled: ! readonly } );\n\tconst bodyRef = useMergeRefs( [\n\t\tuseBubbleEvents( iframeDocument ),\n\t\tcontentRef,\n\t\tclearerRef,\n\t\twritingFlowRef,\n\t\tdisabledRef,\n\t] );\n\n\t// Correct doctype is required to enable rendering in standards\n\t// mode. Also preload the styles to avoid a flash of unstyled\n\t// content.\n\tconst html = `<!doctype html>\n<html>\n\t<head>\n\t\t<meta charset=\"utf-8\">\n\t\t<script>window.frameElement._load()</script>\n\t\t<style>html{height:auto!important;min-height:100%;}body{margin:0}</style>\n\t\t${ styles }\n\t\t${ scripts }\n\t</head>\n\t<body>\n\t\t<script>document.currentScript.parentElement.remove()</script>\n\t</body>\n</html>`;\n\n\tconst [ src, cleanup ] = useMemo( () => {\n\t\tconst _src = URL.createObjectURL(\n\t\t\tnew window.Blob( [ html ], { type: 'text/html' } )\n\t\t);\n\t\treturn [ _src, () => URL.revokeObjectURL( _src ) ];\n\t}, [ html ] );\n\n\tuseEffect( () => cleanup, [ cleanup ] );\n\n\t// We need to counter the margin created by scaling the iframe. If the scale\n\t// is e.g. 0.45, then the top + bottom margin is 0.55 (1 - scale). Just the\n\t// top or bottom margin is 0.55 / 2 ((1 - scale) / 2).\n\tconst marginFromScaling = ( contentHeight * ( 1 - scale ) ) / 2;\n\n\treturn (\n\t\t<>\n\t\t\t{ tabIndex >= 0 && before }\n\t\t\t{ /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */ }\n\t\t\t<iframe\n\t\t\t\t{ ...props }\n\t\t\t\tstyle={ {\n\t\t\t\t\tborder: 0,\n\t\t\t\t\t...props.style,\n\t\t\t\t\theight: expand ? contentHeight : props.style?.height,\n\t\t\t\t\tmarginTop:\n\t\t\t\t\t\tscale !== 1\n\t\t\t\t\t\t\t? -marginFromScaling + frameSize\n\t\t\t\t\t\t\t: props.style?.marginTop,\n\t\t\t\t\tmarginBottom:\n\t\t\t\t\t\tscale !== 1\n\t\t\t\t\t\t\t? -marginFromScaling + frameSize\n\t\t\t\t\t\t\t: props.style?.marginBottom,\n\t\t\t\t\ttransform:\n\t\t\t\t\t\tscale !== 1\n\t\t\t\t\t\t\t? `scale( ${ scale } )`\n\t\t\t\t\t\t\t: props.style?.transform,\n\t\t\t\t\ttransition: 'all .3s',\n\t\t\t\t} }\n\t\t\t\tref={ useMergeRefs( [ ref, setRef ] ) }\n\t\t\t\ttabIndex={ tabIndex }\n\t\t\t\t// Correct doctype is required to enable rendering in standards\n\t\t\t\t// mode. Also preload the styles to avoid a flash of unstyled\n\t\t\t\t// content.\n\t\t\t\tsrc={ src }\n\t\t\t\ttitle={ __( 'Editor canvas' ) }\n\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t// If the event originates from inside the iframe, it means\n\t\t\t\t\t// it bubbled through the portal, but only with React\n\t\t\t\t\t// events. We need to to bubble native events as well,\n\t\t\t\t\t// though by doing so we also trigger another React event,\n\t\t\t\t\t// so we need to stop the propagation of this event to avoid\n\t\t\t\t\t// duplication.\n\t\t\t\t\tif (\n\t\t\t\t\t\tevent.currentTarget.ownerDocument !==\n\t\t\t\t\t\tevent.target.ownerDocument\n\t\t\t\t\t) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tbubbleEvent(\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\twindow.KeyboardEvent,\n\t\t\t\t\t\t\tevent.currentTarget\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ iframeDocument &&\n\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t// We want to prevent React events from bubbling throught the iframe\n\t\t\t\t\t\t// we bubble these manually.\n\t\t\t\t\t\t/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t\t\t\t<body\n\t\t\t\t\t\t\tref={ bodyRef }\n\t\t\t\t\t\t\tclassName={ classnames(\n\t\t\t\t\t\t\t\t'block-editor-iframe__body',\n\t\t\t\t\t\t\t\t'editor-styles-wrapper',\n\t\t\t\t\t\t\t\t...bodyClasses\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ contentResizeListener }\n\t\t\t\t\t\t\t<StyleProvider document={ iframeDocument }>\n\t\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t</body>,\n\t\t\t\t\t\tiframeDocument.documentElement\n\t\t\t\t\t) }\n\t\t\t</iframe>\n\t\t\t{ tabIndex >= 0 && after }\n\t\t</>\n\t);\n}\n\nfunction IframeIfReady( props, ref ) {\n\tconst isInitialised = useSelect(\n\t\t( select ) =>\n\t\t\tselect( blockEditorStore ).getSettings().__internalIsInitialized,\n\t\t[]\n\t);\n\n\t// We shouldn't render the iframe until the editor settings are initialised.\n\t// The initial settings are needed to get the styles for the srcDoc, which\n\t// cannot be changed after the iframe is mounted. srcDoc is used to to set\n\t// the initial iframe HTML, which is required to avoid a flash of unstyled\n\t// content.\n\tif ( ! isInitialised ) {\n\t\treturn null;\n\t}\n\n\treturn <Iframe { ...props } forwardedRef={ ref } />;\n}\n\nexport default forwardRef( IframeIfReady );\n"],"mappings":"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"}
@@ -64,12 +64,10 @@ function BlockPatternsSyncFilter({
64
64
  }, {
65
65
  value: SYNC_TYPES.full,
66
66
  label: (0, _i18n.__)('Synced'),
67
- info: (0, _i18n.__)('Updated everywhere'),
68
67
  disabled: shouldDisableSyncFilter
69
68
  }, {
70
69
  value: SYNC_TYPES.unsynced,
71
- label: (0, _i18n.__)('Standard'),
72
- info: (0, _i18n.__)('Edit freely'),
70
+ label: (0, _i18n.__)('Not synced'),
73
71
  disabled: shouldDisableSyncFilter
74
72
  }], [shouldDisableSyncFilter]);
75
73
  const patternSourceMenuOptions = (0, _element.useMemo)(() => [{
@@ -78,18 +76,15 @@ function BlockPatternsSyncFilter({
78
76
  disabled: shouldDisableNonUserSources
79
77
  }, {
80
78
  value: PATTERN_TYPES.directory,
81
- label: (0, _i18n.__)('Directory'),
82
- info: (0, _i18n.__)('Pattern directory & core'),
79
+ label: (0, _i18n.__)('Pattern Directory'),
83
80
  disabled: shouldDisableNonUserSources
84
81
  }, {
85
82
  value: PATTERN_TYPES.theme,
86
- label: (0, _i18n.__)('Theme'),
87
- info: (0, _i18n.__)('Bundled with the theme'),
83
+ label: (0, _i18n.__)('Theme & Plugins'),
88
84
  disabled: shouldDisableNonUserSources
89
85
  }, {
90
86
  value: PATTERN_TYPES.user,
91
- label: (0, _i18n.__)('User'),
92
- info: (0, _i18n.__)('Custom created')
87
+ label: (0, _i18n.__)('User')
93
88
  }], [shouldDisableNonUserSources]);
94
89
  function handleSetSourceFilterChange(newSourceFilter) {
95
90
  setPatternSourceFilter(newSourceFilter);
@@ -115,7 +110,7 @@ function BlockPatternsSyncFilter({
115
110
  }))
116
111
  })
117
112
  }, () => (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_components.MenuGroup, {
118
- label: (0, _i18n.__)('Author')
113
+ label: (0, _i18n.__)('Source')
119
114
  }, (0, _element.createElement)(_components.MenuItemsChoice, {
120
115
  choices: patternSourceMenuOptions,
121
116
  onSelect: value => {
@@ -132,6 +127,12 @@ function BlockPatternsSyncFilter({
132
127
  scrollContainerRef.current?.scrollTo(0, 0);
133
128
  },
134
129
  value: patternSyncFilter
130
+ })), (0, _element.createElement)("div", {
131
+ className: "block-editor-tool-selector__help"
132
+ }, (0, _element.createInterpolateElement)((0, _i18n.__)('Patterns are available from the <Link>WordPress.org Pattern Directory</Link>, bundled in the active theme, or created by users on this site. Only patterns created on this site can be synced.'), {
133
+ Link: (0, _element.createElement)(_components.ExternalLink, {
134
+ href: (0, _i18n.__)('https://wordpress.org/patterns/')
135
+ })
135
136
  })))));
136
137
  }
137
138
  //# sourceMappingURL=block-patterns-filter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_components","_i18n","_icons","_blockPatternsTab","PATTERN_TYPES","all","synced","unsynced","user","theme","directory","exports","SYNC_TYPES","full","getShouldDisableSyncFilter","sourceFilter","getShouldDisableNonUserSources","category","name","myPatternsCategory","BlockPatternsSyncFilter","setPatternSyncFilter","setPatternSourceFilter","patternSyncFilter","patternSourceFilter","scrollContainerRef","currentPatternSourceFilter","shouldDisableSyncFilter","shouldDisableNonUserSources","patternSyncMenuOptions","useMemo","value","label","__","info","disabled","patternSourceMenuOptions","handleSetSourceFilterChange","newSourceFilter","createElement","Fragment","DropdownMenu","popoverProps","placement","icon","Icon","SVG","width","height","viewBox","fill","xmlns","Path","d","MenuGroup","MenuItemsChoice","choices","onSelect","current","scrollTo"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tSVG,\n\tPath,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { Icon } from '@wordpress/icons';\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { myPatternsCategory } from './block-patterns-tab';\n\nexport const PATTERN_TYPES = {\n\tall: 'all',\n\tsynced: 'synced',\n\tunsynced: 'unsynced',\n\tuser: 'user',\n\ttheme: 'theme',\n\tdirectory: 'directory',\n};\n\nexport const SYNC_TYPES = {\n\tall: 'all',\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nconst getShouldDisableSyncFilter = ( sourceFilter ) =>\n\tsourceFilter !== PATTERN_TYPES.all && sourceFilter !== PATTERN_TYPES.user;\n\nconst getShouldDisableNonUserSources = ( category ) => {\n\treturn category.name === myPatternsCategory.name;\n};\n\nexport function BlockPatternsSyncFilter( {\n\tsetPatternSyncFilter,\n\tsetPatternSourceFilter,\n\tpatternSyncFilter,\n\tpatternSourceFilter,\n\tscrollContainerRef,\n\tcategory,\n} ) {\n\t// If the category is `myPatterns` then we need to set the source filter to `user`, but\n\t// we do this by deriving from props rather than calling setPatternSourceFilter otherwise\n\t// the user may be confused when switching to another category if the haven't explicity set\n\t// this filter themselves.\n\tconst currentPatternSourceFilter =\n\t\tcategory.name === myPatternsCategory.name\n\t\t\t? PATTERN_TYPES.user\n\t\t\t: patternSourceFilter;\n\n\t// We need to disable the sync filter option if the source filter is not 'all' or 'user'\n\t// otherwise applying them will just result in no patterns being shown.\n\tconst shouldDisableSyncFilter = getShouldDisableSyncFilter(\n\t\tcurrentPatternSourceFilter\n\t);\n\n\t// We also need to disable the directory and theme source filter options if the category\n\t// is `myPatterns` otherwise applying them will also just result in no patterns being shown.\n\tconst shouldDisableNonUserSources =\n\t\tgetShouldDisableNonUserSources( category );\n\n\tconst patternSyncMenuOptions = useMemo(\n\t\t() => [\n\t\t\t{ value: SYNC_TYPES.all, label: __( 'All' ) },\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.full,\n\t\t\t\tlabel: __( 'Synced' ),\n\t\t\t\tinfo: __( 'Updated everywhere' ),\n\t\t\t\tdisabled: shouldDisableSyncFilter,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.unsynced,\n\t\t\t\tlabel: __( 'Standard' ),\n\t\t\t\tinfo: __( 'Edit freely' ),\n\t\t\t\tdisabled: shouldDisableSyncFilter,\n\t\t\t},\n\t\t],\n\t\t[ shouldDisableSyncFilter ]\n\t);\n\n\tconst patternSourceMenuOptions = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.all,\n\t\t\t\tlabel: __( 'All' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.directory,\n\t\t\t\tlabel: __( 'Directory' ),\n\t\t\t\tinfo: __( 'Pattern directory & core' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.theme,\n\t\t\t\tlabel: __( 'Theme' ),\n\t\t\t\tinfo: __( 'Bundled with the theme' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.user,\n\t\t\t\tlabel: __( 'User' ),\n\t\t\t\tinfo: __( 'Custom created' ),\n\t\t\t},\n\t\t],\n\t\t[ shouldDisableNonUserSources ]\n\t);\n\n\tfunction handleSetSourceFilterChange( newSourceFilter ) {\n\t\tsetPatternSourceFilter( newSourceFilter );\n\t\tif ( getShouldDisableSyncFilter( newSourceFilter ) ) {\n\t\t\tsetPatternSyncFilter( SYNC_TYPES.all );\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tplacement: 'right-end',\n\t\t\t\t} }\n\t\t\t\tlabel=\"Filter patterns\"\n\t\t\t\ticon={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<SVG\n\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Path\n\t\t\t\t\t\t\t\t\td=\"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#1E1E1E\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</SVG>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ () => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<MenuGroup label={ __( 'Author' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tchoices={ patternSourceMenuOptions }\n\t\t\t\t\t\t\t\tonSelect={ ( value ) => {\n\t\t\t\t\t\t\t\t\thandleSetSourceFilterChange( value );\n\t\t\t\t\t\t\t\t\tscrollContainerRef.current?.scrollTo(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tvalue={ currentPatternSourceFilter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<MenuGroup label={ __( 'Type' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tchoices={ patternSyncMenuOptions }\n\t\t\t\t\t\t\t\tonSelect={ ( value ) => {\n\t\t\t\t\t\t\t\t\tsetPatternSyncFilter( value );\n\t\t\t\t\t\t\t\t\tscrollContainerRef.current?.scrollTo(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tvalue={ patternSyncFilter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</DropdownMenu>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_components","_i18n","_icons","_blockPatternsTab","PATTERN_TYPES","all","synced","unsynced","user","theme","directory","exports","SYNC_TYPES","full","getShouldDisableSyncFilter","sourceFilter","getShouldDisableNonUserSources","category","name","myPatternsCategory","BlockPatternsSyncFilter","setPatternSyncFilter","setPatternSourceFilter","patternSyncFilter","patternSourceFilter","scrollContainerRef","currentPatternSourceFilter","shouldDisableSyncFilter","shouldDisableNonUserSources","patternSyncMenuOptions","useMemo","value","label","__","disabled","patternSourceMenuOptions","handleSetSourceFilterChange","newSourceFilter","createElement","Fragment","DropdownMenu","popoverProps","placement","icon","Icon","SVG","width","height","viewBox","fill","xmlns","Path","d","MenuGroup","MenuItemsChoice","choices","onSelect","current","scrollTo","className","createInterpolateElement","Link","ExternalLink","href"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-filter.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tSVG,\n\tPath,\n\tDropdownMenu,\n\tMenuGroup,\n\tMenuItemsChoice,\n\tExternalLink,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { Icon } from '@wordpress/icons';\nimport { useMemo, createInterpolateElement } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { myPatternsCategory } from './block-patterns-tab';\n\nexport const PATTERN_TYPES = {\n\tall: 'all',\n\tsynced: 'synced',\n\tunsynced: 'unsynced',\n\tuser: 'user',\n\ttheme: 'theme',\n\tdirectory: 'directory',\n};\n\nexport const SYNC_TYPES = {\n\tall: 'all',\n\tfull: 'fully',\n\tunsynced: 'unsynced',\n};\n\nconst getShouldDisableSyncFilter = ( sourceFilter ) =>\n\tsourceFilter !== PATTERN_TYPES.all && sourceFilter !== PATTERN_TYPES.user;\n\nconst getShouldDisableNonUserSources = ( category ) => {\n\treturn category.name === myPatternsCategory.name;\n};\n\nexport function BlockPatternsSyncFilter( {\n\tsetPatternSyncFilter,\n\tsetPatternSourceFilter,\n\tpatternSyncFilter,\n\tpatternSourceFilter,\n\tscrollContainerRef,\n\tcategory,\n} ) {\n\t// If the category is `myPatterns` then we need to set the source filter to `user`, but\n\t// we do this by deriving from props rather than calling setPatternSourceFilter otherwise\n\t// the user may be confused when switching to another category if the haven't explicity set\n\t// this filter themselves.\n\tconst currentPatternSourceFilter =\n\t\tcategory.name === myPatternsCategory.name\n\t\t\t? PATTERN_TYPES.user\n\t\t\t: patternSourceFilter;\n\n\t// We need to disable the sync filter option if the source filter is not 'all' or 'user'\n\t// otherwise applying them will just result in no patterns being shown.\n\tconst shouldDisableSyncFilter = getShouldDisableSyncFilter(\n\t\tcurrentPatternSourceFilter\n\t);\n\n\t// We also need to disable the directory and theme source filter options if the category\n\t// is `myPatterns` otherwise applying them will also just result in no patterns being shown.\n\tconst shouldDisableNonUserSources =\n\t\tgetShouldDisableNonUserSources( category );\n\n\tconst patternSyncMenuOptions = useMemo(\n\t\t() => [\n\t\t\t{ value: SYNC_TYPES.all, label: __( 'All' ) },\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.full,\n\t\t\t\tlabel: __( 'Synced' ),\n\t\t\t\tdisabled: shouldDisableSyncFilter,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: SYNC_TYPES.unsynced,\n\t\t\t\tlabel: __( 'Not synced' ),\n\t\t\t\tdisabled: shouldDisableSyncFilter,\n\t\t\t},\n\t\t],\n\t\t[ shouldDisableSyncFilter ]\n\t);\n\n\tconst patternSourceMenuOptions = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.all,\n\t\t\t\tlabel: __( 'All' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.directory,\n\t\t\t\tlabel: __( 'Pattern Directory' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.theme,\n\t\t\t\tlabel: __( 'Theme & Plugins' ),\n\t\t\t\tdisabled: shouldDisableNonUserSources,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: PATTERN_TYPES.user,\n\t\t\t\tlabel: __( 'User' ),\n\t\t\t},\n\t\t],\n\t\t[ shouldDisableNonUserSources ]\n\t);\n\n\tfunction handleSetSourceFilterChange( newSourceFilter ) {\n\t\tsetPatternSourceFilter( newSourceFilter );\n\t\tif ( getShouldDisableSyncFilter( newSourceFilter ) ) {\n\t\t\tsetPatternSyncFilter( SYNC_TYPES.all );\n\t\t}\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu\n\t\t\t\tpopoverProps={ {\n\t\t\t\t\tplacement: 'right-end',\n\t\t\t\t} }\n\t\t\t\tlabel=\"Filter patterns\"\n\t\t\t\ticon={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<SVG\n\t\t\t\t\t\t\t\twidth=\"24\"\n\t\t\t\t\t\t\t\theight=\"24\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Path\n\t\t\t\t\t\t\t\t\td=\"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z\"\n\t\t\t\t\t\t\t\t\tfill=\"#1E1E1E\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</SVG>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{ () => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<MenuGroup label={ __( 'Source' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tchoices={ patternSourceMenuOptions }\n\t\t\t\t\t\t\t\tonSelect={ ( value ) => {\n\t\t\t\t\t\t\t\t\thandleSetSourceFilterChange( value );\n\t\t\t\t\t\t\t\t\tscrollContainerRef.current?.scrollTo(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tvalue={ currentPatternSourceFilter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<MenuGroup label={ __( 'Type' ) }>\n\t\t\t\t\t\t\t<MenuItemsChoice\n\t\t\t\t\t\t\t\tchoices={ patternSyncMenuOptions }\n\t\t\t\t\t\t\t\tonSelect={ ( value ) => {\n\t\t\t\t\t\t\t\t\tsetPatternSyncFilter( value );\n\t\t\t\t\t\t\t\t\tscrollContainerRef.current?.scrollTo(\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tvalue={ patternSyncFilter }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</MenuGroup>\n\t\t\t\t\t\t<div className=\"block-editor-tool-selector__help\">\n\t\t\t\t\t\t\t{ createInterpolateElement(\n\t\t\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t\t\t'Patterns are available from the <Link>WordPress.org Pattern Directory</Link>, bundled in the active theme, or created by users on this site. Only patterns created on this site can be synced.'\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tLink: (\n\t\t\t\t\t\t\t\t\t\t<ExternalLink\n\t\t\t\t\t\t\t\t\t\t\thref={ __(\n\t\t\t\t\t\t\t\t\t\t\t\t'https://wordpress.org/patterns/'\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</DropdownMenu>\n\t\t</>\n\t);\n}\n"],"mappings":"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"}
@@ -199,7 +199,7 @@ function BlockPatternsCategoryPanel({
199
199
  setPatternSourceFilter: onSetPatternSourceFilter,
200
200
  scrollContainerRef: scrollContainerRef,
201
201
  category: category
202
- })), category.description && (0, _element.createElement)(_components.__experimentalText, null, category.description), !currentCategoryPatterns.length && (0, _element.createElement)(_components.__experimentalText, {
202
+ })), !currentCategoryPatterns.length && (0, _element.createElement)(_components.__experimentalText, {
203
203
  variant: "muted",
204
204
  className: "block-editor-inserter__patterns-category-no-results"
205
205
  }, (0, _i18n.__)('No results found'))), currentCategoryPatterns.length > 0 && (0, _element.createElement)(_blockPatternsList.default, {
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_i18n","_compose","_components","_icons","_dom","_a11y","_usePatternsState","_interopRequireDefault","_blockPatternsList","_explorer","_mobileTabNavigation","_usePatternsPaging","_blockPatternsFilter","noop","allPatternsCategory","name","label","__","exports","myPatternsCategory","isPatternFiltered","pattern","sourceFilter","syncFilter","isUserPattern","startsWith","isDirectoryPattern","source","PATTERN_TYPES","theme","directory","user","id","SYNC_TYPES","full","syncStatus","unsynced","usePatternsCategories","rootClientId","patterns","allCategories","usePatternsState","undefined","filteredPatterns","useMemo","filter","hasRegisteredCategory","useCallback","categories","length","some","cat","category","populatedCategories","includes","sort","a","b","localeCompare","find","push","_x","unshift","speak","sprintf","_n","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","patternFilter","container","useRef","useEffect","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","createElement","ref","className","BlockPatternsCategoryPanel","key","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","useState","patternSourceFilter","setPatternSourceFilter","availableCategories","scrollContainerRef","currentCategoryPatterns","_pattern$categories$f","availablePatternCategories","availableCategory","pagingProps","usePatternsPaging","changePage","onSetPatternSyncFilter","value","onSetPatternSourceFilter","__experimentalVStack","spacing","__experimentalHStack","FlexBlock","__experimentalHeading","level","as","BlockPatternsSyncFilter","description","__experimentalText","variant","default","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","initialCategory","isMobile","useViewportMatch","Fragment","__experimentalItemGroup","role","map","__experimentalItem","onClick","Icon","icon","isRTL","chevronLeft","chevronRight","Button","patternCategories","onModalClose","_default"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, _n, isRTL, sprintf } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\nimport usePatternsPaging from './hooks/use-patterns-paging';\nimport {\n\tBlockPatternsSyncFilter,\n\tSYNC_TYPES,\n\tPATTERN_TYPES,\n} from './block-patterns-filter';\n\nconst noop = () => {};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All patterns' ),\n};\n\nexport const myPatternsCategory = {\n\tname: 'myPatterns',\n\tlabel: __( 'My patterns' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tconst isUserPattern = pattern.name.startsWith( 'core/block' );\n\tconst isDirectoryPattern =\n\t\tpattern.source === 'core' ||\n\t\tpattern.source?.startsWith( 'pattern-directory' );\n\n\t// If theme source selected, filter out user created patterns and those from\n\t// the core patterns directory.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\t( isUserPattern || isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If the directory source is selected, filter out user created patterns\n\t// and those bundled with the theme.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.directory &&\n\t\t( isUserPattern || ! isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If user source selected, filter out theme patterns. Any pattern without\n\t// an id wasn't created by a user.\n\tif ( sourceFilter === PATTERN_TYPES.user && ! pattern.id ) {\n\t\treturn true;\n\t}\n\n\t// Filter by sync status.\n\tif ( syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '' ) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced' &&\n\t\tisUserPattern\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nexport function usePatternsCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif ( filteredPatterns.some( ( pattern ) => pattern.id ) ) {\n\t\t\tcategories.unshift( myPatternsCategory );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\tkey={ category.name }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\tconst scrollContainerRef = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternSourceFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name === myPatternsCategory.name && pattern.id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternSourceFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tscrollContainerRef\n\t);\n\tconst { changePage } = pagingProps;\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tconst onSetPatternSyncFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSyncFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSyncFilter, changePage ]\n\t);\n\tconst onSetPatternSourceFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSourceFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSourceFilter, changePage ]\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<VStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-header\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<Heading level={ 4 } as=\"div\">\n\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t<BlockPatternsSyncFilter\n\t\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\t\t\tsetPatternSyncFilter={ onSetPatternSyncFilter }\n\t\t\t\t\t\tsetPatternSourceFilter={ onSetPatternSourceFilter }\n\t\t\t\t\t\tscrollContainerRef={ scrollContainerRef }\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ category.description && (\n\t\t\t\t\t<Text>{ category.description }</Text>\n\t\t\t\t) }\n\t\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-no-results\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'No results found' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternList\n\t\t\t\t\tref={ scrollContainerRef }\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternSourceFilter }\n\t\t\t\t\tpagingProps={ pagingProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\n\tconst categories = usePatternsCategories( rootClientId );\n\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={ __( 'Block pattern categories' ) }\n\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ItemGroup role=\"list\">\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_i18n","_compose","_components","_icons","_dom","_a11y","_usePatternsState","_interopRequireDefault","_blockPatternsList","_explorer","_mobileTabNavigation","_usePatternsPaging","_blockPatternsFilter","noop","allPatternsCategory","name","label","__","exports","myPatternsCategory","isPatternFiltered","pattern","sourceFilter","syncFilter","isUserPattern","startsWith","isDirectoryPattern","source","PATTERN_TYPES","theme","directory","user","id","SYNC_TYPES","full","syncStatus","unsynced","usePatternsCategories","rootClientId","patterns","allCategories","usePatternsState","undefined","filteredPatterns","useMemo","filter","hasRegisteredCategory","useCallback","categories","length","some","cat","category","populatedCategories","includes","sort","a","b","localeCompare","find","push","_x","unshift","speak","sprintf","_n","BlockPatternsCategoryDialog","onInsert","onHover","showTitlesAsTooltip","patternFilter","container","useRef","useEffect","timeout","setTimeout","firstTabbable","focus","tabbable","current","clearTimeout","createElement","ref","className","BlockPatternsCategoryPanel","key","allPatterns","onClickPattern","patternSyncFilter","setPatternSyncFilter","useState","patternSourceFilter","setPatternSourceFilter","availableCategories","scrollContainerRef","currentCategoryPatterns","_pattern$categories$f","availablePatternCategories","availableCategory","pagingProps","usePatternsPaging","changePage","onSetPatternSyncFilter","value","onSetPatternSourceFilter","__experimentalVStack","spacing","__experimentalHStack","FlexBlock","__experimentalHeading","level","as","BlockPatternsSyncFilter","__experimentalText","variant","default","shownPatterns","categoryPatternsAsyncList","blockPatterns","categoryPatterns","orientation","isDraggable","BlockPatternsTabs","onSelectCategory","selectedCategory","showPatternsExplorer","setShowPatternsExplorer","initialCategory","isMobile","useViewportMatch","Fragment","__experimentalItemGroup","role","map","__experimentalItem","onClick","Icon","icon","isRTL","chevronLeft","chevronRight","Button","patternCategories","onModalClose","_default"],"sources":["@wordpress/block-editor/src/components/inserter/block-patterns-tab.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport {\n\tuseMemo,\n\tuseState,\n\tuseCallback,\n\tuseRef,\n\tuseEffect,\n} from '@wordpress/element';\nimport { _x, __, _n, isRTL, sprintf } from '@wordpress/i18n';\nimport { useViewportMatch } from '@wordpress/compose';\nimport {\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalItem as Item,\n\t__experimentalHStack as HStack,\n\t__experimentalVStack as VStack,\n\t__experimentalHeading as Heading,\n\t__experimentalText as Text,\n\tFlexBlock,\n\tButton,\n} from '@wordpress/components';\nimport { Icon, chevronRight, chevronLeft } from '@wordpress/icons';\nimport { focus } from '@wordpress/dom';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport usePatternsState from './hooks/use-patterns-state';\nimport BlockPatternList from '../block-patterns-list';\nimport PatternsExplorerModal from './block-patterns-explorer/explorer';\nimport MobileTabNavigation from './mobile-tab-navigation';\nimport usePatternsPaging from './hooks/use-patterns-paging';\nimport {\n\tBlockPatternsSyncFilter,\n\tSYNC_TYPES,\n\tPATTERN_TYPES,\n} from './block-patterns-filter';\n\nconst noop = () => {};\n\nexport const allPatternsCategory = {\n\tname: 'allPatterns',\n\tlabel: __( 'All patterns' ),\n};\n\nexport const myPatternsCategory = {\n\tname: 'myPatterns',\n\tlabel: __( 'My patterns' ),\n};\n\nexport function isPatternFiltered( pattern, sourceFilter, syncFilter ) {\n\tconst isUserPattern = pattern.name.startsWith( 'core/block' );\n\tconst isDirectoryPattern =\n\t\tpattern.source === 'core' ||\n\t\tpattern.source?.startsWith( 'pattern-directory' );\n\n\t// If theme source selected, filter out user created patterns and those from\n\t// the core patterns directory.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.theme &&\n\t\t( isUserPattern || isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If the directory source is selected, filter out user created patterns\n\t// and those bundled with the theme.\n\tif (\n\t\tsourceFilter === PATTERN_TYPES.directory &&\n\t\t( isUserPattern || ! isDirectoryPattern )\n\t) {\n\t\treturn true;\n\t}\n\n\t// If user source selected, filter out theme patterns. Any pattern without\n\t// an id wasn't created by a user.\n\tif ( sourceFilter === PATTERN_TYPES.user && ! pattern.id ) {\n\t\treturn true;\n\t}\n\n\t// Filter by sync status.\n\tif ( syncFilter === SYNC_TYPES.full && pattern.syncStatus !== '' ) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tsyncFilter === SYNC_TYPES.unsynced &&\n\t\tpattern.syncStatus !== 'unsynced' &&\n\t\tisUserPattern\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nexport function usePatternsCategories( rootClientId, sourceFilter = 'all' ) {\n\tconst [ patterns, allCategories ] = usePatternsState(\n\t\tundefined,\n\t\trootClientId\n\t);\n\n\tconst filteredPatterns = useMemo(\n\t\t() =>\n\t\t\tsourceFilter === 'all'\n\t\t\t\t? patterns\n\t\t\t\t: patterns.filter(\n\t\t\t\t\t\t( pattern ) =>\n\t\t\t\t\t\t\t! isPatternFiltered( pattern, sourceFilter )\n\t\t\t\t ),\n\t\t[ sourceFilter, patterns ]\n\t);\n\n\tconst hasRegisteredCategory = useCallback(\n\t\t( pattern ) => {\n\t\t\tif ( ! pattern.categories || ! pattern.categories.length ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn pattern.categories.some( ( cat ) =>\n\t\t\t\tallCategories.some( ( category ) => category.name === cat )\n\t\t\t);\n\t\t},\n\t\t[ allCategories ]\n\t);\n\n\t// Remove any empty categories.\n\tconst populatedCategories = useMemo( () => {\n\t\tconst categories = allCategories\n\t\t\t.filter( ( category ) =>\n\t\t\t\tfilteredPatterns.some( ( pattern ) =>\n\t\t\t\t\tpattern.categories?.includes( category.name )\n\t\t\t\t)\n\t\t\t)\n\t\t\t.sort( ( a, b ) => a.label.localeCompare( b.label ) );\n\n\t\tif (\n\t\t\tfilteredPatterns.some(\n\t\t\t\t( pattern ) => ! hasRegisteredCategory( pattern )\n\t\t\t) &&\n\t\t\t! categories.find(\n\t\t\t\t( category ) => category.name === 'uncategorized'\n\t\t\t)\n\t\t) {\n\t\t\tcategories.push( {\n\t\t\t\tname: 'uncategorized',\n\t\t\t\tlabel: _x( 'Uncategorized' ),\n\t\t\t} );\n\t\t}\n\t\tif ( filteredPatterns.some( ( pattern ) => pattern.id ) ) {\n\t\t\tcategories.unshift( myPatternsCategory );\n\t\t}\n\t\tif ( filteredPatterns.length > 0 ) {\n\t\t\tcategories.unshift( {\n\t\t\t\tname: allPatternsCategory.name,\n\t\t\t\tlabel: allPatternsCategory.label,\n\t\t\t} );\n\t\t}\n\t\tspeak(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %d: number of categories . */\n\t\t\t\t_n(\n\t\t\t\t\t'%d category button displayed.',\n\t\t\t\t\t'%d category buttons displayed.',\n\t\t\t\t\tcategories.length\n\t\t\t\t),\n\t\t\t\tcategories.length\n\t\t\t)\n\t\t);\n\t\treturn categories;\n\t}, [ allCategories, filteredPatterns, hasRegisteredCategory ] );\n\n\treturn populatedCategories;\n}\n\nexport function BlockPatternsCategoryDialog( {\n\trootClientId,\n\tonInsert,\n\tonHover,\n\tcategory,\n\tshowTitlesAsTooltip,\n\tpatternFilter,\n} ) {\n\tconst container = useRef();\n\n\tuseEffect( () => {\n\t\tconst timeout = setTimeout( () => {\n\t\t\tconst [ firstTabbable ] = focus.tabbable.find( container.current );\n\t\t\tfirstTabbable?.focus();\n\t\t} );\n\t\treturn () => clearTimeout( timeout );\n\t}, [ category ] );\n\n\treturn (\n\t\t<div\n\t\t\tref={ container }\n\t\t\tclassName=\"block-editor-inserter__patterns-category-dialog\"\n\t\t>\n\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\tkey={ category.name }\n\t\t\t\trootClientId={ rootClientId }\n\t\t\t\tonInsert={ onInsert }\n\t\t\t\tonHover={ onHover }\n\t\t\t\tcategory={ category }\n\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\tpatternFilter={ patternFilter }\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport function BlockPatternsCategoryPanel( {\n\trootClientId,\n\tonInsert,\n\tonHover = noop,\n\tcategory,\n\tshowTitlesAsTooltip,\n} ) {\n\tconst [ allPatterns, , onClickPattern ] = usePatternsState(\n\t\tonInsert,\n\t\trootClientId\n\t);\n\tconst [ patternSyncFilter, setPatternSyncFilter ] = useState( 'all' );\n\tconst [ patternSourceFilter, setPatternSourceFilter ] = useState( 'all' );\n\n\tconst availableCategories = usePatternsCategories(\n\t\trootClientId,\n\t\tpatternSourceFilter\n\t);\n\tconst scrollContainerRef = useRef();\n\tconst currentCategoryPatterns = useMemo(\n\t\t() =>\n\t\t\tallPatterns.filter( ( pattern ) => {\n\t\t\t\tif (\n\t\t\t\t\tisPatternFiltered(\n\t\t\t\t\t\tpattern,\n\t\t\t\t\t\tpatternSourceFilter,\n\t\t\t\t\t\tpatternSyncFilter\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( category.name === allPatternsCategory.name ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name === myPatternsCategory.name && pattern.id ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif ( category.name !== 'uncategorized' ) {\n\t\t\t\t\treturn pattern.categories?.includes( category.name );\n\t\t\t\t}\n\n\t\t\t\t// The uncategorized category should show all the patterns without any category\n\t\t\t\t// or with no available category.\n\t\t\t\tconst availablePatternCategories =\n\t\t\t\t\tpattern.categories?.filter( ( cat ) =>\n\t\t\t\t\t\tavailableCategories.find(\n\t\t\t\t\t\t\t( availableCategory ) =>\n\t\t\t\t\t\t\t\tavailableCategory.name === cat\n\t\t\t\t\t\t)\n\t\t\t\t\t) ?? [];\n\n\t\t\t\treturn availablePatternCategories.length === 0;\n\t\t\t} ),\n\t\t[\n\t\t\tallPatterns,\n\t\t\tavailableCategories,\n\t\t\tcategory.name,\n\t\t\tpatternSourceFilter,\n\t\t\tpatternSyncFilter,\n\t\t]\n\t);\n\n\tconst pagingProps = usePatternsPaging(\n\t\tcurrentCategoryPatterns,\n\t\tcategory,\n\t\tscrollContainerRef\n\t);\n\tconst { changePage } = pagingProps;\n\n\t// Hide block pattern preview on unmount.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tuseEffect( () => () => onHover( null ), [] );\n\n\tconst onSetPatternSyncFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSyncFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSyncFilter, changePage ]\n\t);\n\tconst onSetPatternSourceFilter = useCallback(\n\t\t( value ) => {\n\t\t\tsetPatternSourceFilter( value );\n\t\t\tchangePage( 1 );\n\t\t},\n\t\t[ setPatternSourceFilter, changePage ]\n\t);\n\n\treturn (\n\t\t<div className=\"block-editor-inserter__patterns-category-panel\">\n\t\t\t<VStack\n\t\t\t\tspacing={ 2 }\n\t\t\t\tclassName=\"block-editor-inserter__patterns-category-panel-header\"\n\t\t\t>\n\t\t\t\t<HStack>\n\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t<Heading level={ 4 } as=\"div\">\n\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t</Heading>\n\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t<BlockPatternsSyncFilter\n\t\t\t\t\t\tpatternSyncFilter={ patternSyncFilter }\n\t\t\t\t\t\tpatternSourceFilter={ patternSourceFilter }\n\t\t\t\t\t\tsetPatternSyncFilter={ onSetPatternSyncFilter }\n\t\t\t\t\t\tsetPatternSourceFilter={ onSetPatternSourceFilter }\n\t\t\t\t\t\tscrollContainerRef={ scrollContainerRef }\n\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t/>\n\t\t\t\t</HStack>\n\t\t\t\t{ ! currentCategoryPatterns.length && (\n\t\t\t\t\t<Text\n\t\t\t\t\t\tvariant=\"muted\"\n\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-category-no-results\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'No results found' ) }\n\t\t\t\t\t</Text>\n\t\t\t\t) }\n\t\t\t</VStack>\n\n\t\t\t{ currentCategoryPatterns.length > 0 && (\n\t\t\t\t<BlockPatternList\n\t\t\t\t\tref={ scrollContainerRef }\n\t\t\t\t\tshownPatterns={ pagingProps.categoryPatternsAsyncList }\n\t\t\t\t\tblockPatterns={ pagingProps.categoryPatterns }\n\t\t\t\t\tonClickPattern={ onClickPattern }\n\t\t\t\t\tonHover={ onHover }\n\t\t\t\t\tlabel={ category.label }\n\t\t\t\t\torientation=\"vertical\"\n\t\t\t\t\tcategory={ category.name }\n\t\t\t\t\tisDraggable\n\t\t\t\t\tshowTitlesAsTooltip={ showTitlesAsTooltip }\n\t\t\t\t\tpatternFilter={ patternSourceFilter }\n\t\t\t\t\tpagingProps={ pagingProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</div>\n\t);\n}\n\nfunction BlockPatternsTabs( {\n\tonSelectCategory,\n\tselectedCategory,\n\tonInsert,\n\trootClientId,\n} ) {\n\tconst [ showPatternsExplorer, setShowPatternsExplorer ] = useState( false );\n\n\tconst categories = usePatternsCategories( rootClientId );\n\n\tconst initialCategory = selectedCategory || categories[ 0 ];\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\treturn (\n\t\t<>\n\t\t\t{ ! isMobile && (\n\t\t\t\t<div className=\"block-editor-inserter__block-patterns-tabs-container\">\n\t\t\t\t\t<nav\n\t\t\t\t\t\taria-label={ __( 'Block pattern categories' ) }\n\t\t\t\t\t\tclassName=\"block-editor-inserter__block-patterns-tabs\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ItemGroup role=\"list\">\n\t\t\t\t\t\t\t{ categories.map( ( category ) => (\n\t\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tonSelectCategory( category )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclassName={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'block-editor-inserter__patterns-category block-editor-inserter__patterns-selected-category'\n\t\t\t\t\t\t\t\t\t\t\t: 'block-editor-inserter__patterns-category'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\taria-label={ category.label }\n\t\t\t\t\t\t\t\t\taria-current={\n\t\t\t\t\t\t\t\t\t\tcategory === selectedCategory\n\t\t\t\t\t\t\t\t\t\t\t? 'true'\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<HStack>\n\t\t\t\t\t\t\t\t\t\t<FlexBlock>\n\t\t\t\t\t\t\t\t\t\t\t{ category.label }\n\t\t\t\t\t\t\t\t\t\t</FlexBlock>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\t\t\tisRTL()\n\t\t\t\t\t\t\t\t\t\t\t\t\t? chevronLeft\n\t\t\t\t\t\t\t\t\t\t\t\t\t: chevronRight\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</HStack>\n\t\t\t\t\t\t\t\t</Item>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t<div role=\"listitem\">\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\tclassName=\"block-editor-inserter__patterns-explore-button\"\n\t\t\t\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\t\t\t\tsetShowPatternsExplorer( true )\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ __( 'Explore all patterns' ) }\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ItemGroup>\n\t\t\t\t\t</nav>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ isMobile && (\n\t\t\t\t<MobileTabNavigation categories={ categories }>\n\t\t\t\t\t{ ( category ) => (\n\t\t\t\t\t\t<BlockPatternsCategoryPanel\n\t\t\t\t\t\t\tkey={ category.name }\n\t\t\t\t\t\t\tonInsert={ onInsert }\n\t\t\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t\t\t\tcategory={ category }\n\t\t\t\t\t\t\tshowTitlesAsTooltip={ false }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</MobileTabNavigation>\n\t\t\t) }\n\t\t\t{ showPatternsExplorer && (\n\t\t\t\t<PatternsExplorerModal\n\t\t\t\t\tinitialCategory={ initialCategory }\n\t\t\t\t\tpatternCategories={ categories }\n\t\t\t\t\tonModalClose={ () => setShowPatternsExplorer( false ) }\n\t\t\t\t\trootClientId={ rootClientId }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default BlockPatternsTabs;\n"],"mappings":";;;;;;;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAOA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAUA,IAAAI,MAAA,GAAAJ,OAAA;AACA,IAAAK,IAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AAKA,IAAAO,iBAAA,GAAAC,sBAAA,CAAAR,OAAA;AACA,IAAAS,kBAAA,GAAAD,sBAAA,CAAAR,OAAA;AACA,IAAAU,SAAA,GAAAF,sBAAA,CAAAR,OAAA;AACA,IAAAW,oBAAA,GAAAH,sBAAA,CAAAR,OAAA;AACA,IAAAY,kBAAA,GAAAJ,sBAAA,CAAAR,OAAA;AACA,IAAAa,oBAAA,GAAAb,OAAA;AAlCA;AACA;AACA;;AAwBA;AACA;AACA;;AAYA,MAAMc,IAAI,GAAGA,CAAA,KAAM,CAAC,CAAC;AAEd,MAAMC,mBAAmB,GAAG;EAClCC,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAE,IAAAC,QAAE,EAAE,cAAe;AAC3B,CAAC;AAACC,OAAA,CAAAJ,mBAAA,GAAAA,mBAAA;AAEK,MAAMK,kBAAkB,GAAG;EACjCJ,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAE,IAAAC,QAAE,EAAE,aAAc;AAC1B,CAAC;AAACC,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAEK,SAASC,iBAAiBA,CAAEC,OAAO,EAAEC,YAAY,EAAEC,UAAU,EAAG;EACtE,MAAMC,aAAa,GAAGH,OAAO,CAACN,IAAI,CAACU,UAAU,CAAE,YAAa,CAAC;EAC7D,MAAMC,kBAAkB,GACvBL,OAAO,CAACM,MAAM,KAAK,MAAM,IACzBN,OAAO,CAACM,MAAM,EAAEF,UAAU,CAAE,mBAAoB,CAAC;;EAElD;EACA;EACA,IACCH,YAAY,KAAKM,kCAAa,CAACC,KAAK,KAClCL,aAAa,IAAIE,kBAAkB,CAAE,EACtC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,IACCJ,YAAY,KAAKM,kCAAa,CAACE,SAAS,KACtCN,aAAa,IAAI,CAAEE,kBAAkB,CAAE,EACxC;IACD,OAAO,IAAI;EACZ;;EAEA;EACA;EACA,IAAKJ,YAAY,KAAKM,kCAAa,CAACG,IAAI,IAAI,CAAEV,OAAO,CAACW,EAAE,EAAG;IAC1D,OAAO,IAAI;EACZ;;EAEA;EACA,IAAKT,UAAU,KAAKU,+BAAU,CAACC,IAAI,IAAIb,OAAO,CAACc,UAAU,KAAK,EAAE,EAAG;IAClE,OAAO,IAAI;EACZ;EAEA,IACCZ,UAAU,KAAKU,+BAAU,CAACG,QAAQ,IAClCf,OAAO,CAACc,UAAU,KAAK,UAAU,IACjCX,aAAa,EACZ;IACD,OAAO,IAAI;EACZ;EAEA,OAAO,KAAK;AACb;AAEO,SAASa,qBAAqBA,CAAEC,YAAY,EAAEhB,YAAY,GAAG,KAAK,EAAG;EAC3E,MAAM,CAAEiB,QAAQ,EAAEC,aAAa,CAAE,GAAG,IAAAC,yBAAgB,EACnDC,SAAS,EACTJ,YACD,CAAC;EAED,MAAMK,gBAAgB,GAAG,IAAAC,gBAAO,EAC/B,MACCtB,YAAY,KAAK,KAAK,GACnBiB,QAAQ,GACRA,QAAQ,CAACM,MAAM,CACbxB,OAAO,IACR,CAAED,iBAAiB,CAAEC,OAAO,EAAEC,YAAa,CAC5C,CAAC,EACL,CAAEA,YAAY,EAAEiB,QAAQ,CACzB,CAAC;EAED,MAAMO,qBAAqB,GAAG,IAAAC,oBAAW,EACtC1B,OAAO,IAAM;IACd,IAAK,CAAEA,OAAO,CAAC2B,UAAU,IAAI,CAAE3B,OAAO,CAAC2B,UAAU,CAACC,MAAM,EAAG;MAC1D,OAAO,KAAK;IACb;IAEA,OAAO5B,OAAO,CAAC2B,UAAU,CAACE,IAAI,CAAIC,GAAG,IACpCX,aAAa,CAACU,IAAI,CAAIE,QAAQ,IAAMA,QAAQ,CAACrC,IAAI,KAAKoC,GAAI,CAC3D,CAAC;EACF,CAAC,EACD,CAAEX,aAAa,CAChB,CAAC;;EAED;EACA,MAAMa,mBAAmB,GAAG,IAAAT,gBAAO,EAAE,MAAM;IAC1C,MAAMI,UAAU,GAAGR,aAAa,CAC9BK,MAAM,CAAIO,QAAQ,IAClBT,gBAAgB,CAACO,IAAI,CAAI7B,OAAO,IAC/BA,OAAO,CAAC2B,UAAU,EAAEM,QAAQ,CAAEF,QAAQ,CAACrC,IAAK,CAC7C,CACD,CAAC,CACAwC,IAAI,CAAE,CAAEC,CAAC,EAAEC,CAAC,KAAMD,CAAC,CAACxC,KAAK,CAAC0C,aAAa,CAAED,CAAC,CAACzC,KAAM,CAAE,CAAC;IAEtD,IACC2B,gBAAgB,CAACO,IAAI,CAClB7B,OAAO,IAAM,CAAEyB,qBAAqB,CAAEzB,OAAQ,CACjD,CAAC,IACD,CAAE2B,UAAU,CAACW,IAAI,CACdP,QAAQ,IAAMA,QAAQ,CAACrC,IAAI,KAAK,eACnC,CAAC,EACA;MACDiC,UAAU,CAACY,IAAI,CAAE;QAChB7C,IAAI,EAAE,eAAe;QACrBC,KAAK,EAAE,IAAA6C,QAAE,EAAE,eAAgB;MAC5B,CAAE,CAAC;IACJ;IACA,IAAKlB,gBAAgB,CAACO,IAAI,CAAI7B,OAAO,IAAMA,OAAO,CAACW,EAAG,CAAC,EAAG;MACzDgB,UAAU,CAACc,OAAO,CAAE3C,kBAAmB,CAAC;IACzC;IACA,IAAKwB,gBAAgB,CAACM,MAAM,GAAG,CAAC,EAAG;MAClCD,UAAU,CAACc,OAAO,CAAE;QACnB/C,IAAI,EAAED,mBAAmB,CAACC,IAAI;QAC9BC,KAAK,EAAEF,mBAAmB,CAACE;MAC5B,CAAE,CAAC;IACJ;IACA,IAAA+C,WAAK,EACJ,IAAAC,aAAO,GACN;IACA,IAAAC,QAAE,EACD,+BAA+B,EAC/B,gCAAgC,EAChCjB,UAAU,CAACC,MACZ,CAAC,EACDD,UAAU,CAACC,MACZ,CACD,CAAC;IACD,OAAOD,UAAU;EAClB,CAAC,EAAE,CAAER,aAAa,EAAEG,gBAAgB,EAAEG,qBAAqB,CAAG,CAAC;EAE/D,OAAOO,mBAAmB;AAC3B;AAEO,SAASa,2BAA2BA,CAAE;EAC5C5B,YAAY;EACZ6B,QAAQ;EACRC,OAAO;EACPhB,QAAQ;EACRiB,mBAAmB;EACnBC;AACD,CAAC,EAAG;EACH,MAAMC,SAAS,GAAG,IAAAC,eAAM,EAAC,CAAC;EAE1B,IAAAC,kBAAS,EAAE,MAAM;IAChB,MAAMC,OAAO,GAAGC,UAAU,CAAE,MAAM;MACjC,MAAM,CAAEC,aAAa,CAAE,GAAGC,UAAK,CAACC,QAAQ,CAACnB,IAAI,CAAEY,SAAS,CAACQ,OAAQ,CAAC;MAClEH,aAAa,EAAEC,KAAK,CAAC,CAAC;IACvB,CAAE,CAAC;IACH,OAAO,MAAMG,YAAY,CAAEN,OAAQ,CAAC;EACrC,CAAC,EAAE,CAAEtB,QAAQ,CAAG,CAAC;EAEjB,OACC,IAAAtD,QAAA,CAAAmF,aAAA;IACCC,GAAG,EAAGX,SAAW;IACjBY,SAAS,EAAC;EAAiD,GAE3D,IAAArF,QAAA,CAAAmF,aAAA,EAACG,0BAA0B;IAC1BC,GAAG,EAAGjC,QAAQ,CAACrC,IAAM;IACrBuB,YAAY,EAAGA,YAAc;IAC7B6B,QAAQ,EAAGA,QAAU;IACrBC,OAAO,EAAGA,OAAS;IACnBhB,QAAQ,EAAGA,QAAU;IACrBiB,mBAAmB,EAAGA,mBAAqB;IAC3CC,aAAa,EAAGA;EAAe,CAC/B,CACG,CAAC;AAER;AAEO,SAASc,0BAA0BA,CAAE;EAC3C9C,YAAY;EACZ6B,QAAQ;EACRC,OAAO,GAAGvD,IAAI;EACduC,QAAQ;EACRiB;AACD,CAAC,EAAG;EACH,MAAM,CAAEiB,WAAW,GAAIC,cAAc,CAAE,GAAG,IAAA9C,yBAAgB,EACzD0B,QAAQ,EACR7B,YACD,CAAC;EACD,MAAM,CAAEkD,iBAAiB,EAAEC,oBAAoB,CAAE,GAAG,IAAAC,iBAAQ,EAAE,KAAM,CAAC;EACrE,MAAM,CAAEC,mBAAmB,EAAEC,sBAAsB,CAAE,GAAG,IAAAF,iBAAQ,EAAE,KAAM,CAAC;EAEzE,MAAMG,mBAAmB,GAAGxD,qBAAqB,CAChDC,YAAY,EACZqD,mBACD,CAAC;EACD,MAAMG,kBAAkB,GAAG,IAAAtB,eAAM,EAAC,CAAC;EACnC,MAAMuB,uBAAuB,GAAG,IAAAnD,gBAAO,EACtC,MACC0C,WAAW,CAACzC,MAAM,CAAIxB,OAAO,IAAM;IAAA,IAAA2E,qBAAA;IAClC,IACC5E,iBAAiB,CAChBC,OAAO,EACPsE,mBAAmB,EACnBH,iBACD,CAAC,EACA;MACD,OAAO,KAAK;IACb;IAEA,IAAKpC,QAAQ,CAACrC,IAAI,KAAKD,mBAAmB,CAACC,IAAI,EAAG;MACjD,OAAO,IAAI;IACZ;IACA,IAAKqC,QAAQ,CAACrC,IAAI,KAAKI,kBAAkB,CAACJ,IAAI,IAAIM,OAAO,CAACW,EAAE,EAAG;MAC9D,OAAO,IAAI;IACZ;IACA,IAAKoB,QAAQ,CAACrC,IAAI,KAAK,eAAe,EAAG;MACxC,OAAOM,OAAO,CAAC2B,UAAU,EAAEM,QAAQ,CAAEF,QAAQ,CAACrC,IAAK,CAAC;IACrD;;IAEA;IACA;IACA,MAAMkF,0BAA0B,IAAAD,qBAAA,GAC/B3E,OAAO,CAAC2B,UAAU,EAAEH,MAAM,CAAIM,GAAG,IAChC0C,mBAAmB,CAAClC,IAAI,CACrBuC,iBAAiB,IAClBA,iBAAiB,CAACnF,IAAI,KAAKoC,GAC7B,CACD,CAAC,cAAA6C,qBAAA,cAAAA,qBAAA,GAAI,EAAE;IAER,OAAOC,0BAA0B,CAAChD,MAAM,KAAK,CAAC;EAC/C,CAAE,CAAC,EACJ,CACCqC,WAAW,EACXO,mBAAmB,EACnBzC,QAAQ,CAACrC,IAAI,EACb4E,mBAAmB,EACnBH,iBAAiB,CAEnB,CAAC;EAED,MAAMW,WAAW,GAAG,IAAAC,0BAAiB,EACpCL,uBAAuB,EACvB3C,QAAQ,EACR0C,kBACD,CAAC;EACD,MAAM;IAAEO;EAAW,CAAC,GAAGF,WAAW;;EAElC;EACA;EACA,IAAA1B,kBAAS,EAAE,MAAM,MAAML,OAAO,CAAE,IAAK,CAAC,EAAE,EAAG,CAAC;EAE5C,MAAMkC,sBAAsB,GAAG,IAAAvD,oBAAW,EACvCwD,KAAK,IAAM;IACZd,oBAAoB,CAAEc,KAAM,CAAC;IAC7BF,UAAU,CAAE,CAAE,CAAC;EAChB,CAAC,EACD,CAAEZ,oBAAoB,EAAEY,UAAU,CACnC,CAAC;EACD,MAAMG,wBAAwB,GAAG,IAAAzD,oBAAW,EACzCwD,KAAK,IAAM;IACZX,sBAAsB,CAAEW,KAAM,CAAC;IAC/BF,UAAU,CAAE,CAAE,CAAC;EAChB,CAAC,EACD,CAAET,sBAAsB,EAAES,UAAU,CACrC,CAAC;EAED,OACC,IAAAvG,QAAA,CAAAmF,aAAA;IAAKE,SAAS,EAAC;EAAgD,GAC9D,IAAArF,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAAuG,oBAAM;IACNC,OAAO,EAAG,CAAG;IACbvB,SAAS,EAAC;EAAuD,GAEjE,IAAArF,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAAyG,oBAAM,QACN,IAAA7G,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAA0G,SAAS,QACT,IAAA9G,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAA2G,qBAAO;IAACC,KAAK,EAAG,CAAG;IAACC,EAAE,EAAC;EAAK,GAC1B3D,QAAQ,CAACpC,KACH,CACC,CAAC,EACZ,IAAAlB,QAAA,CAAAmF,aAAA,EAACrE,oBAAA,CAAAoG,uBAAuB;IACvBxB,iBAAiB,EAAGA,iBAAmB;IACvCG,mBAAmB,EAAGA,mBAAqB;IAC3CF,oBAAoB,EAAGa,sBAAwB;IAC/CV,sBAAsB,EAAGY,wBAA0B;IACnDV,kBAAkB,EAAGA,kBAAoB;IACzC1C,QAAQ,EAAGA;EAAU,CACrB,CACM,CAAC,EACP,CAAE2C,uBAAuB,CAAC9C,MAAM,IACjC,IAAAnD,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAA+G,kBAAI;IACJC,OAAO,EAAC,OAAO;IACf/B,SAAS,EAAC;EAAqD,GAE7D,IAAAlE,QAAE,EAAE,kBAAmB,CACpB,CAEA,CAAC,EAEP8E,uBAAuB,CAAC9C,MAAM,GAAG,CAAC,IACnC,IAAAnD,QAAA,CAAAmF,aAAA,EAACzE,kBAAA,CAAA2G,OAAgB;IAChBjC,GAAG,EAAGY,kBAAoB;IAC1BsB,aAAa,EAAGjB,WAAW,CAACkB,yBAA2B;IACvDC,aAAa,EAAGnB,WAAW,CAACoB,gBAAkB;IAC9ChC,cAAc,EAAGA,cAAgB;IACjCnB,OAAO,EAAGA,OAAS;IACnBpD,KAAK,EAAGoC,QAAQ,CAACpC,KAAO;IACxBwG,WAAW,EAAC,UAAU;IACtBpE,QAAQ,EAAGA,QAAQ,CAACrC,IAAM;IAC1B0G,WAAW;IACXpD,mBAAmB,EAAGA,mBAAqB;IAC3CC,aAAa,EAAGqB,mBAAqB;IACrCQ,WAAW,EAAGA;EAAa,CAC3B,CAEE,CAAC;AAER;AAEA,SAASuB,iBAAiBA,CAAE;EAC3BC,gBAAgB;EAChBC,gBAAgB;EAChBzD,QAAQ;EACR7B;AACD,CAAC,EAAG;EACH,MAAM,CAAEuF,oBAAoB,EAAEC,uBAAuB,CAAE,GAAG,IAAApC,iBAAQ,EAAE,KAAM,CAAC;EAE3E,MAAM1C,UAAU,GAAGX,qBAAqB,CAAEC,YAAa,CAAC;EAExD,MAAMyF,eAAe,GAAGH,gBAAgB,IAAI5E,UAAU,CAAE,CAAC,CAAE;EAC3D,MAAMgF,QAAQ,GAAG,IAAAC,yBAAgB,EAAE,QAAQ,EAAE,GAAI,CAAC;EAClD,OACC,IAAAnI,QAAA,CAAAmF,aAAA,EAAAnF,QAAA,CAAAoI,QAAA,QACG,CAAEF,QAAQ,IACX,IAAAlI,QAAA,CAAAmF,aAAA;IAAKE,SAAS,EAAC;EAAsD,GACpE,IAAArF,QAAA,CAAAmF,aAAA;IACC,cAAa,IAAAhE,QAAE,EAAE,0BAA2B,CAAG;IAC/CkE,SAAS,EAAC;EAA4C,GAEtD,IAAArF,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAAiI,uBAAS;IAACC,IAAI,EAAC;EAAM,GACnBpF,UAAU,CAACqF,GAAG,CAAIjF,QAAQ,IAC3B,IAAAtD,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAAoI,kBAAI;IACJF,IAAI,EAAC,UAAU;IACf/C,GAAG,EAAGjC,QAAQ,CAACrC,IAAM;IACrBwH,OAAO,EAAGA,CAAA,KACTZ,gBAAgB,CAAEvE,QAAS,CAC3B;IACD+B,SAAS,EACR/B,QAAQ,KAAKwE,gBAAgB,GAC1B,4FAA4F,GAC5F,0CACH;IACD,cAAaxE,QAAQ,CAACpC,KAAO;IAC7B,gBACCoC,QAAQ,KAAKwE,gBAAgB,GAC1B,MAAM,GACNlF;EACH,GAED,IAAA5C,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAAyG,oBAAM,QACN,IAAA7G,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAA0G,SAAS,QACPxD,QAAQ,CAACpC,KACD,CAAC,EACZ,IAAAlB,QAAA,CAAAmF,aAAA,EAAC9E,MAAA,CAAAqI,IAAI;IACJC,IAAI,EACH,IAAAC,WAAK,EAAC,CAAC,GACJC,kBAAW,GACXC;EACH,CACD,CACM,CACH,CACL,CAAC,EACH,IAAA9I,QAAA,CAAAmF,aAAA;IAAKmD,IAAI,EAAC;EAAU,GACnB,IAAAtI,QAAA,CAAAmF,aAAA,EAAC/E,WAAA,CAAA2I,MAAM;IACN1D,SAAS,EAAC,gDAAgD;IAC1DoD,OAAO,EAAGA,CAAA,KACTT,uBAAuB,CAAE,IAAK,CAC9B;IACDZ,OAAO,EAAC;EAAW,GAEjB,IAAAjG,QAAE,EAAE,sBAAuB,CACtB,CACJ,CACK,CACP,CACD,CACL,EACC+G,QAAQ,IACT,IAAAlI,QAAA,CAAAmF,aAAA,EAACvE,oBAAA,CAAAyG,OAAmB;IAACnE,UAAU,EAAGA;EAAY,GACzCI,QAAQ,IACX,IAAAtD,QAAA,CAAAmF,aAAA,EAACG,0BAA0B;IAC1BC,GAAG,EAAGjC,QAAQ,CAACrC,IAAM;IACrBoD,QAAQ,EAAGA,QAAU;IACrB7B,YAAY,EAAGA,YAAc;IAC7Bc,QAAQ,EAAGA,QAAU;IACrBiB,mBAAmB,EAAG;EAAO,CAC7B,CAEkB,CACrB,EACCwD,oBAAoB,IACrB,IAAA/H,QAAA,CAAAmF,aAAA,EAACxE,SAAA,CAAA0G,OAAqB;IACrBY,eAAe,EAAGA,eAAiB;IACnCe,iBAAiB,EAAG9F,UAAY;IAChC+F,YAAY,EAAGA,CAAA,KAAMjB,uBAAuB,CAAE,KAAM,CAAG;IACvDxF,YAAY,EAAGA;EAAc,CAC7B,CAED,CAAC;AAEL;AAAC,IAAA0G,QAAA,GAEctB,iBAAiB;AAAAxG,OAAA,CAAAiG,OAAA,GAAA6B,QAAA"}
@@ -8,6 +8,7 @@ exports.useMediaResults = useMediaResults;
8
8
  var _element = require("@wordpress/element");
9
9
  var _data = require("@wordpress/data");
10
10
  var _store = require("../../../store");
11
+ var _lockUnlock = require("../../../lock-unlock");
11
12
  /**
12
13
  * WordPress dependencies
13
14
  */
@@ -16,8 +17,8 @@ var _store = require("../../../store");
16
17
  * Internal dependencies
17
18
  */
18
19
 
19
- /** @typedef {import('./api').InserterMediaRequest} InserterMediaRequest */
20
- /** @typedef {import('./api').InserterMediaItem} InserterMediaItem */
20
+ /** @typedef {import('../../../store/actions').InserterMediaRequest} InserterMediaRequest */
21
+ /** @typedef {import('../../../store/actions').InserterMediaItem} InserterMediaItem */
21
22
 
22
23
  /**
23
24
  * Fetches media items based on the provided category.
@@ -59,38 +60,9 @@ function useMediaResults(category, query = {}) {
59
60
  isLoading
60
61
  };
61
62
  }
62
- function useInserterMediaCategories() {
63
- const {
64
- inserterMediaCategories,
65
- allowedMimeTypes,
66
- enableOpenverseMediaCategory
67
- } = (0, _data.useSelect)(select => {
68
- const settings = select(_store.store).getSettings();
69
- return {
70
- inserterMediaCategories: settings.inserterMediaCategories,
71
- allowedMimeTypes: settings.allowedMimeTypes,
72
- enableOpenverseMediaCategory: settings.enableOpenverseMediaCategory
73
- };
74
- }, []);
75
- // The allowed `mime_types` can be altered by `upload_mimes` filter and restrict
76
- // some of them. In this case we shouldn't add the category to the available media
77
- // categories list in the inserter.
78
- const allowedCategories = (0, _element.useMemo)(() => {
79
- if (!inserterMediaCategories || !allowedMimeTypes) {
80
- return;
81
- }
82
- return inserterMediaCategories.filter(category => {
83
- // Check if Openverse category is enabled.
84
- if (!enableOpenverseMediaCategory && category.name === 'openverse') {
85
- return false;
86
- }
87
- return Object.values(allowedMimeTypes).some(mimeType => mimeType.startsWith(`${category.mediaType}/`));
88
- });
89
- }, [inserterMediaCategories, allowedMimeTypes, enableOpenverseMediaCategory]);
90
- return allowedCategories;
91
- }
92
63
  function useMediaCategories(rootClientId) {
93
64
  const [categories, setCategories] = (0, _element.useState)([]);
65
+ const inserterMediaCategories = (0, _data.useSelect)(select => (0, _lockUnlock.unlock)(select(_store.store)).getInserterMediaCategories(), []);
94
66
  const {
95
67
  canInsertImage,
96
68
  canInsertVideo,
@@ -105,7 +77,6 @@ function useMediaCategories(rootClientId) {
105
77
  canInsertAudio: canInsertBlockType('core/audio', rootClientId)
106
78
  };
107
79
  }, [rootClientId]);
108
- const inserterMediaCategories = useInserterMediaCategories();
109
80
  (0, _element.useEffect)(() => {
110
81
  (async () => {
111
82
  const _categories = [];
@@ -1 +1 @@
1
- {"version":3,"names":["_element","require","_data","_store","useMediaResults","category","query","mediaList","setMediaList","useState","isLoading","setIsLoading","lastRequest","useRef","useEffect","key","JSON","stringify","name","current","_media","fetch","Object","values","useInserterMediaCategories","inserterMediaCategories","allowedMimeTypes","enableOpenverseMediaCategory","useSelect","select","settings","blockEditorStore","getSettings","allowedCategories","useMemo","filter","some","mimeType","startsWith","mediaType","useMediaCategories","rootClientId","categories","setCategories","canInsertImage","canInsertVideo","canInsertAudio","canInsertBlockType","_categories","categoriesHaveMedia","Map","Promise","all","map","isExternalResource","results","per_page","e","length","canInsertMediaType","image","video","audio","forEach","get","push"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useState, useRef, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\n\n/** @typedef {import('./api').InserterMediaRequest} InserterMediaRequest */\n/** @typedef {import('./api').InserterMediaItem} InserterMediaItem */\n\n/**\n * Fetches media items based on the provided category.\n * Each media category is responsible for providing a `fetch` function.\n *\n * @param {Object} category The media category to fetch results for.\n * @param {InserterMediaRequest} query The query args to use for the request.\n * @return {InserterMediaItem[]} The media results.\n */\nexport function useMediaResults( category, query = {} ) {\n\tconst [ mediaList, setMediaList ] = useState();\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\t// We need to keep track of the last request made because\n\t// multiple request can be fired without knowing the order\n\t// of resolution, and we need to ensure we are showing\n\t// the results of the last request.\n\t// In the future we could use AbortController to cancel previous\n\t// requests, but we don't for now as it involves adding support\n\t// for this to `core-data` package.\n\tconst lastRequest = useRef();\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst key = JSON.stringify( {\n\t\t\t\tcategory: category.name,\n\t\t\t\t...query,\n\t\t\t} );\n\t\t\tlastRequest.current = key;\n\t\t\tsetIsLoading( true );\n\t\t\tsetMediaList( [] ); // Empty the previous results.\n\t\t\tconst _media = await category.fetch?.( query );\n\t\t\tif ( key === lastRequest.current ) {\n\t\t\t\tsetMediaList( _media );\n\t\t\t\tsetIsLoading( false );\n\t\t\t}\n\t\t} )();\n\t}, [ category.name, ...Object.values( query ) ] );\n\treturn { mediaList, isLoading };\n}\n\nfunction useInserterMediaCategories() {\n\tconst {\n\t\tinserterMediaCategories,\n\t\tallowedMimeTypes,\n\t\tenableOpenverseMediaCategory,\n\t} = useSelect( ( select ) => {\n\t\tconst settings = select( blockEditorStore ).getSettings();\n\t\treturn {\n\t\t\tinserterMediaCategories: settings.inserterMediaCategories,\n\t\t\tallowedMimeTypes: settings.allowedMimeTypes,\n\t\t\tenableOpenverseMediaCategory: settings.enableOpenverseMediaCategory,\n\t\t};\n\t}, [] );\n\t// The allowed `mime_types` can be altered by `upload_mimes` filter and restrict\n\t// some of them. In this case we shouldn't add the category to the available media\n\t// categories list in the inserter.\n\tconst allowedCategories = useMemo( () => {\n\t\tif ( ! inserterMediaCategories || ! allowedMimeTypes ) {\n\t\t\treturn;\n\t\t}\n\t\treturn inserterMediaCategories.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\tinserterMediaCategories,\n\t\tallowedMimeTypes,\n\t\tenableOpenverseMediaCategory,\n\t] );\n\treturn allowedCategories;\n}\n\nexport function useMediaCategories( rootClientId ) {\n\tconst [ categories, setCategories ] = useState( [] );\n\tconst { canInsertImage, canInsertVideo, canInsertAudio } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canInsertBlockType } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcanInsertImage: canInsertBlockType(\n\t\t\t\t\t'core/image',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertVideo: canInsertBlockType(\n\t\t\t\t\t'core/video',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertAudio: canInsertBlockType(\n\t\t\t\t\t'core/audio',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\tconst inserterMediaCategories = useInserterMediaCategories();\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst _categories = [];\n\t\t\t// If `inserterMediaCategories` is not defined in\n\t\t\t// block editor settings, do not show any media categories.\n\t\t\tif ( ! inserterMediaCategories ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Loop through categories to check if they have at least one media item.\n\t\t\tconst categoriesHaveMedia = new Map(\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tinserterMediaCategories.map( async ( category ) => {\n\t\t\t\t\t\t// Some sources are external and we don't need to make a request.\n\t\t\t\t\t\tif ( category.isExternalResource ) {\n\t\t\t\t\t\t\treturn [ category.name, true ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet results = [];\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresults = await category.fetch( {\n\t\t\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t// If the request fails, we shallow the error and just don't show\n\t\t\t\t\t\t\t// the category, in order to not break the media tab.\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [ category.name, !! results.length ];\n\t\t\t\t\t} )\n\t\t\t\t)\n\t\t\t);\n\t\t\t// We need to filter out categories that don't have any media items or\n\t\t\t// whose corresponding block type is not allowed to be inserted, based\n\t\t\t// on the category's `mediaType`.\n\t\t\tconst canInsertMediaType = {\n\t\t\t\timage: canInsertImage,\n\t\t\t\tvideo: canInsertVideo,\n\t\t\t\taudio: canInsertAudio,\n\t\t\t};\n\t\t\tinserterMediaCategories.forEach( ( category ) => {\n\t\t\t\tif (\n\t\t\t\t\tcanInsertMediaType[ category.mediaType ] &&\n\t\t\t\t\tcategoriesHaveMedia.get( category.name )\n\t\t\t\t) {\n\t\t\t\t\t_categories.push( category );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !! _categories.length ) {\n\t\t\t\tsetCategories( _categories );\n\t\t\t}\n\t\t} )();\n\t}, [\n\t\tcanInsertImage,\n\t\tcanInsertVideo,\n\t\tcanInsertAudio,\n\t\tinserterMediaCategories,\n\t] );\n\treturn categories;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_element","require","_data","_store","_lockUnlock","useMediaResults","category","query","mediaList","setMediaList","useState","isLoading","setIsLoading","lastRequest","useRef","useEffect","key","JSON","stringify","name","current","_media","fetch","Object","values","useMediaCategories","rootClientId","categories","setCategories","inserterMediaCategories","useSelect","select","unlock","blockEditorStore","getInserterMediaCategories","canInsertImage","canInsertVideo","canInsertAudio","canInsertBlockType","_categories","categoriesHaveMedia","Map","Promise","all","map","isExternalResource","results","per_page","e","length","canInsertMediaType","image","video","audio","forEach","mediaType","get","push"],"sources":["@wordpress/block-editor/src/components/inserter/media-tab/hooks.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useEffect, useState, useRef } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../../store';\nimport { unlock } from '../../../lock-unlock';\n\n/** @typedef {import('../../../store/actions').InserterMediaRequest} InserterMediaRequest */\n/** @typedef {import('../../../store/actions').InserterMediaItem} InserterMediaItem */\n\n/**\n * Fetches media items based on the provided category.\n * Each media category is responsible for providing a `fetch` function.\n *\n * @param {Object} category The media category to fetch results for.\n * @param {InserterMediaRequest} query The query args to use for the request.\n * @return {InserterMediaItem[]} The media results.\n */\nexport function useMediaResults( category, query = {} ) {\n\tconst [ mediaList, setMediaList ] = useState();\n\tconst [ isLoading, setIsLoading ] = useState( false );\n\t// We need to keep track of the last request made because\n\t// multiple request can be fired without knowing the order\n\t// of resolution, and we need to ensure we are showing\n\t// the results of the last request.\n\t// In the future we could use AbortController to cancel previous\n\t// requests, but we don't for now as it involves adding support\n\t// for this to `core-data` package.\n\tconst lastRequest = useRef();\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst key = JSON.stringify( {\n\t\t\t\tcategory: category.name,\n\t\t\t\t...query,\n\t\t\t} );\n\t\t\tlastRequest.current = key;\n\t\t\tsetIsLoading( true );\n\t\t\tsetMediaList( [] ); // Empty the previous results.\n\t\t\tconst _media = await category.fetch?.( query );\n\t\t\tif ( key === lastRequest.current ) {\n\t\t\t\tsetMediaList( _media );\n\t\t\t\tsetIsLoading( false );\n\t\t\t}\n\t\t} )();\n\t}, [ category.name, ...Object.values( query ) ] );\n\treturn { mediaList, isLoading };\n}\n\nexport function useMediaCategories( rootClientId ) {\n\tconst [ categories, setCategories ] = useState( [] );\n\n\tconst inserterMediaCategories = useSelect(\n\t\t( select ) =>\n\t\t\tunlock( select( blockEditorStore ) ).getInserterMediaCategories(),\n\t\t[]\n\t);\n\tconst { canInsertImage, canInsertVideo, canInsertAudio } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { canInsertBlockType } = select( blockEditorStore );\n\t\t\treturn {\n\t\t\t\tcanInsertImage: canInsertBlockType(\n\t\t\t\t\t'core/image',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertVideo: canInsertBlockType(\n\t\t\t\t\t'core/video',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t\tcanInsertAudio: canInsertBlockType(\n\t\t\t\t\t'core/audio',\n\t\t\t\t\trootClientId\n\t\t\t\t),\n\t\t\t};\n\t\t},\n\t\t[ rootClientId ]\n\t);\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst _categories = [];\n\t\t\t// If `inserterMediaCategories` is not defined in\n\t\t\t// block editor settings, do not show any media categories.\n\t\t\tif ( ! inserterMediaCategories ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Loop through categories to check if they have at least one media item.\n\t\t\tconst categoriesHaveMedia = new Map(\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tinserterMediaCategories.map( async ( category ) => {\n\t\t\t\t\t\t// Some sources are external and we don't need to make a request.\n\t\t\t\t\t\tif ( category.isExternalResource ) {\n\t\t\t\t\t\t\treturn [ category.name, true ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet results = [];\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresults = await category.fetch( {\n\t\t\t\t\t\t\t\tper_page: 1,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t// If the request fails, we shallow the error and just don't show\n\t\t\t\t\t\t\t// the category, in order to not break the media tab.\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [ category.name, !! results.length ];\n\t\t\t\t\t} )\n\t\t\t\t)\n\t\t\t);\n\t\t\t// We need to filter out categories that don't have any media items or\n\t\t\t// whose corresponding block type is not allowed to be inserted, based\n\t\t\t// on the category's `mediaType`.\n\t\t\tconst canInsertMediaType = {\n\t\t\t\timage: canInsertImage,\n\t\t\t\tvideo: canInsertVideo,\n\t\t\t\taudio: canInsertAudio,\n\t\t\t};\n\t\t\tinserterMediaCategories.forEach( ( category ) => {\n\t\t\t\tif (\n\t\t\t\t\tcanInsertMediaType[ category.mediaType ] &&\n\t\t\t\t\tcategoriesHaveMedia.get( category.name )\n\t\t\t\t) {\n\t\t\t\t\t_categories.push( category );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !! _categories.length ) {\n\t\t\t\tsetCategories( _categories );\n\t\t\t}\n\t\t} )();\n\t}, [\n\t\tcanInsertImage,\n\t\tcanInsertVideo,\n\t\tcanInsertAudio,\n\t\tinserterMediaCategories,\n\t] );\n\treturn categories;\n}\n"],"mappings":"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"}
@@ -10,6 +10,7 @@ var _components = require("@wordpress/components");
10
10
  var _icons = require("@wordpress/icons");
11
11
  var _dom = require("@wordpress/dom");
12
12
  var _url = require("@wordpress/url");
13
+ var _compose = require("@wordpress/compose");
13
14
  /**
14
15
  * WordPress dependencies
15
16
  */
@@ -39,6 +40,40 @@ function SearchItemIcon({
39
40
  }
40
41
  return null;
41
42
  }
43
+
44
+ /**
45
+ * Adds a leading slash to a url if it doesn't already have one.
46
+ * @param {string} url the url to add a leading slash to.
47
+ * @return {string} the url with a leading slash.
48
+ */
49
+ function addLeadingSlash(url) {
50
+ const trimmedURL = url?.trim();
51
+ if (!trimmedURL?.length) return url;
52
+ return url?.replace(/^\/?/, '/');
53
+ }
54
+ function removeTrailingSlash(url) {
55
+ const trimmedURL = url?.trim();
56
+ if (!trimmedURL?.length) return url;
57
+ return url?.replace(/\/$/, '');
58
+ }
59
+ const partialRight = (fn, ...partialArgs) => (...args) => fn(...args, ...partialArgs);
60
+ const defaultTo = d => v => {
61
+ return v === null || v === undefined || v !== v ? d : v;
62
+ };
63
+
64
+ /**
65
+ * Prepares a URL for display in the UI.
66
+ * - decodes the URL.
67
+ * - filters it (removes protocol, www, etc.).
68
+ * - truncates it if necessary.
69
+ * - adds a leading slash.
70
+ * @param {string} url the url.
71
+ * @return {string} the processed url to display.
72
+ */
73
+ function getURLForDisplay(url) {
74
+ if (!url) return url;
75
+ return (0, _compose.pipe)(_url.safeDecodeURI, _url.getPath, defaultTo(''), partialRight(_url.filterURLForDisplay, 24), removeTrailingSlash, addLeadingSlash)(url);
76
+ }
42
77
  const LinkControlSearchItem = ({
43
78
  itemProps,
44
79
  suggestion,
@@ -47,7 +82,7 @@ const LinkControlSearchItem = ({
47
82
  isURL = false,
48
83
  shouldShowType = false
49
84
  }) => {
50
- const info = isURL ? (0, _i18n.__)('Press ENTER to add this link') : (0, _url.filterURLForDisplay)((0, _url.safeDecodeURI)(suggestion?.url), 24);
85
+ const info = isURL ? (0, _i18n.__)('Press ENTER to add this link') : getURLForDisplay(suggestion.url);
51
86
  return (0, _element.createElement)(_components.MenuItem, {
52
87
  ...itemProps,
53
88
  info: info,
@@ -1 +1 @@
1
- {"version":3,"names":["_i18n","require","_components","_icons","_dom","_url","ICONS_MAP","post","postList","page","post_tag","tag","category","attachment","file","SearchItemIcon","isURL","suggestion","icon","globe","type","_element","createElement","Icon","className","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","__","filterURLForDisplay","safeDecodeURI","url","MenuItem","iconPosition","shortcut","getVisualTypeName","TextHighlight","text","stripHTML","title","highlight","exports","isFrontPage","_default","default"],"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} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay } from '@wordpress/url';\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}\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\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: filterURLForDisplay( safeDecodeURI( suggestion?.url ), 24 );\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\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"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AASA,IAAAG,IAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAJ,OAAA;AAfA;AACA;AACA;;AAeA,MAAMK,SAAS,GAAG;EACjBC,IAAI,EAAEC,eAAQ;EACdC,IAAI,EAAJA,WAAI;EACJC,QAAQ,EAAEC,UAAG;EACbC,QAAQ,EAARA,eAAQ;EACRC,UAAU,EAAEC;AACb,CAAC;AAED,SAASC,cAAcA,CAAE;EAAEC,KAAK;EAAEC;AAAW,CAAC,EAAG;EAChD,IAAIC,IAAI,GAAG,IAAI;EAEf,IAAKF,KAAK,EAAG;IACZE,IAAI,GAAGC,YAAK;EACb,CAAC,MAAM,IAAKF,UAAU,CAACG,IAAI,IAAId,SAAS,EAAG;IAC1CY,IAAI,GAAGZ,SAAS,CAAEW,UAAU,CAACG,IAAI,CAAE;EACpC;EAEA,IAAKF,IAAI,EAAG;IACX,OACC,IAAAG,QAAA,CAAAC,aAAA,EAACnB,MAAA,CAAAoB,IAAI;MACJC,SAAS,EAAC,6CAA6C;MACvDN,IAAI,EAAGA;IAAM,CACb,CAAC;EAEJ;EAEA,OAAO,IAAI;AACZ;AAEO,MAAMO,qBAAqB,GAAGA,CAAE;EACtCC,SAAS;EACTT,UAAU;EACVU,UAAU;EACVC,OAAO;EACPZ,KAAK,GAAG,KAAK;EACba,cAAc,GAAG;AAClB,CAAC,KAAM;EACN,MAAMC,IAAI,GAAGd,KAAK,GACf,IAAAe,QAAE,EAAE,8BAA+B,CAAC,GACpC,IAAAC,wBAAmB,EAAE,IAAAC,kBAAa,EAAEhB,UAAU,EAAEiB,GAAI,CAAC,EAAE,EAAG,CAAC;EAE9D,OACC,IAAAb,QAAA,CAAAC,aAAA,EAACpB,WAAA,CAAAiC,QAAQ;IAAA,GACHT,SAAS;IACdI,IAAI,EAAGA,IAAM;IACbM,YAAY,EAAC,MAAM;IACnBlB,IAAI,EACH,IAAAG,QAAA,CAAAC,aAAA,EAACP,cAAc;MAACE,UAAU,EAAGA,UAAY;MAACD,KAAK,EAAGA;IAAO,CAAE,CAC3D;IACDY,OAAO,EAAGA,OAAS;IACnBS,QAAQ,EAAGR,cAAc,IAAIS,iBAAiB,CAAErB,UAAW,CAAG;IAC9DO,SAAS,EAAC;EAAwC,GAElD,IAAAH,QAAA,CAAAC,aAAA,EAACpB,WAAA,CAAAqC;EACA;EAAA;IACAC,IAAI,EAAG,IAAAC,wBAAS,EAAExB,UAAU,CAACyB,KAAM,CAAG;IACtCC,SAAS,EAAGhB;EAAY,CACxB,CACQ,CAAC;AAEb,CAAC;AAACiB,OAAA,CAAAnB,qBAAA,GAAAA,qBAAA;AAEF,SAASa,iBAAiBA,CAAErB,UAAU,EAAG;EACxC,IAAKA,UAAU,CAAC4B,WAAW,EAAG;IAC7B,OAAO,YAAY;EACpB;;EAEA;EACA,OAAO5B,UAAU,CAACG,IAAI,KAAK,UAAU,GAAG,KAAK,GAAGH,UAAU,CAACG,IAAI;AAChE;AAAC,IAAA0B,QAAA,GAEcrB,qBAAqB;AAAAmB,OAAA,CAAAG,OAAA,GAAAD,QAAA"}
1
+ {"version":3,"names":["_i18n","require","_components","_icons","_dom","_url","_compose","ICONS_MAP","post","postList","page","post_tag","tag","category","attachment","file","SearchItemIcon","isURL","suggestion","icon","globe","type","_element","createElement","Icon","className","addLeadingSlash","url","trimmedURL","trim","length","replace","removeTrailingSlash","partialRight","fn","partialArgs","args","defaultTo","d","v","undefined","getURLForDisplay","pipe","safeDecodeURI","getPath","filterURLForDisplay","LinkControlSearchItem","itemProps","searchTerm","onClick","shouldShowType","info","__","MenuItem","iconPosition","shortcut","getVisualTypeName","TextHighlight","text","stripHTML","title","highlight","exports","isFrontPage","_default","default"],"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} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\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}\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 ) return url;\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) return url;\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 ) return url;\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\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"],"mappings":"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"}