@wordpress/edit-site 6.33.3-next.36001005c.0 → 6.33.3

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 (53) hide show
  1. package/build/components/dataviews-actions/index.js +8 -6
  2. package/build/components/dataviews-actions/index.js.map +2 -2
  3. package/build/components/global-styles-renderer/index.js +4 -2
  4. package/build/components/global-styles-renderer/index.js.map +3 -3
  5. package/build/components/page-templates/fields.js +19 -26
  6. package/build/components/page-templates/fields.js.map +2 -2
  7. package/build/components/page-templates/index.js +41 -31
  8. package/build/components/page-templates/index.js.map +2 -2
  9. package/build/components/revisions/index.js +2 -2
  10. package/build/components/revisions/index.js.map +2 -2
  11. package/build/components/sidebar-navigation-screen-templates-browse/content.js +6 -7
  12. package/build/components/sidebar-navigation-screen-templates-browse/content.js.map +2 -2
  13. package/build/components/style-book/index.js +8 -4
  14. package/build/components/style-book/index.js.map +2 -2
  15. package/build-module/components/dataviews-actions/index.js +8 -6
  16. package/build-module/components/dataviews-actions/index.js.map +2 -2
  17. package/build-module/components/global-styles-renderer/index.js +3 -1
  18. package/build-module/components/global-styles-renderer/index.js.map +2 -2
  19. package/build-module/components/page-templates/fields.js +19 -26
  20. package/build-module/components/page-templates/fields.js.map +2 -2
  21. package/build-module/components/page-templates/index.js +41 -31
  22. package/build-module/components/page-templates/index.js.map +2 -2
  23. package/build-module/components/revisions/index.js +1 -1
  24. package/build-module/components/revisions/index.js.map +2 -2
  25. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js +6 -7
  26. package/build-module/components/sidebar-navigation-screen-templates-browse/content.js.map +2 -2
  27. package/build-module/components/style-book/index.js +6 -2
  28. package/build-module/components/style-book/index.js.map +2 -2
  29. package/build-style/posts-rtl.css +13 -13
  30. package/build-style/posts.css +13 -13
  31. package/build-style/style-rtl.css +23 -23
  32. package/build-style/style.css +23 -23
  33. package/package.json +44 -45
  34. package/src/components/dataviews-actions/index.js +12 -10
  35. package/src/components/global-styles/font-library-modal/style.scss +3 -3
  36. package/src/components/global-styles/style.scss +1 -1
  37. package/src/components/global-styles-renderer/index.js +4 -1
  38. package/src/components/global-styles-sidebar/style.scss +2 -2
  39. package/src/components/page-templates/fields.js +23 -29
  40. package/src/components/page-templates/index.js +51 -38
  41. package/src/components/revisions/index.js +1 -1
  42. package/src/components/sidebar-navigation-screen/style.scss +1 -1
  43. package/src/components/sidebar-navigation-screen-patterns/style.scss +1 -1
  44. package/src/components/sidebar-navigation-screen-templates-browse/content.js +6 -7
  45. package/src/components/site-hub/style.scss +1 -1
  46. package/src/components/style-book/index.js +6 -3
  47. package/tsconfig.json +0 -1
  48. package/tsconfig.tsbuildinfo +1 -1
  49. package/build/hooks/use-global-styles-output.js +0 -77
  50. package/build/hooks/use-global-styles-output.js.map +0 -7
  51. package/build-module/hooks/use-global-styles-output.js +0 -52
  52. package/build-module/hooks/use-global-styles-output.js.map +0 -7
  53. package/src/hooks/use-global-styles-output.js +0 -80
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/style-book/index.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDisabled,\n\tComposite,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockList,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tuseSettings,\n\tBlockEditorProvider,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n} from '@wordpress/block-editor';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { useSelect, dispatch } from '@wordpress/data';\nimport {\n\tuseMemo,\n\tuseState,\n\tmemo,\n\tuseContext,\n\tuseRef,\n\tuseLayoutEffect,\n\tuseEffect,\n} from '@wordpress/element';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\nimport { uploadMedia } from '@wordpress/media-utils';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport EditorCanvasContainer from '../editor-canvas-container';\nimport { STYLE_BOOK_IFRAME_STYLES } from './constants';\nimport {\n\tgetExamplesByCategory,\n\tgetTopLevelStyleBookCategories,\n} from './categories';\nimport { getExamples } from './examples';\nimport { store as siteEditorStore } from '../../store';\nimport { useSection } from '../sidebar-global-styles-wrapper';\nimport { GlobalStylesRenderer } from '../global-styles-renderer';\nimport { getVariationClassName } from '../global-styles/utils';\nimport {\n\tSTYLE_BOOK_COLOR_GROUPS,\n\tSTYLE_BOOK_PREVIEW_CATEGORIES,\n} from '../style-book/constants';\nimport { useGlobalStylesOutputWithConfig } from '../../hooks/use-global-styles-output';\n\nconst { ExperimentalBlockEditorProvider, useGlobalStyle, GlobalStylesContext } =\n\tunlock( blockEditorPrivateApis );\nconst { mergeBaseAndUserConfigs } = unlock( editorPrivateApis );\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction isObjectEmpty( object ) {\n\treturn ! object || Object.keys( object ).length === 0;\n}\n\n/**\n * Scrolls to a section within an iframe.\n *\n * @param {string} anchorId The id of the element to scroll to.\n * @param {HTMLIFrameElement} iframe The target iframe.\n */\nconst scrollToSection = ( anchorId, iframe ) => {\n\tif ( ! anchorId || ! iframe || ! iframe?.contentDocument ) {\n\t\treturn;\n\t}\n\n\tconst element =\n\t\tanchorId === 'top'\n\t\t\t? iframe.contentDocument.body\n\t\t\t: iframe.contentDocument.getElementById( anchorId );\n\tif ( element ) {\n\t\telement.scrollIntoView( {\n\t\t\tbehavior: 'smooth',\n\t\t} );\n\t}\n};\n\n/**\n * Parses a Block Editor navigation path to build a style book navigation path.\n * The object can be extended to include a category, representing a style book tab/section.\n *\n * @param {string} path An internal Block Editor navigation path.\n * @return {null|{block: string}} An object containing the example to navigate to.\n */\nconst getStyleBookNavigationFromPath = ( path ) => {\n\tif ( path && typeof path === 'string' ) {\n\t\tif (\n\t\t\tpath === '/' ||\n\t\t\tpath.startsWith( '/typography' ) ||\n\t\t\tpath.startsWith( '/colors' ) ||\n\t\t\tpath.startsWith( '/blocks' )\n\t\t) {\n\t\t\treturn {\n\t\t\t\ttop: true,\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n * Retrieves colors, gradients, and duotone filters from Global Styles.\n * The inclusion of default (Core) palettes is controlled by the relevant\n * theme.json property e.g. defaultPalette, defaultGradients, defaultDuotone.\n *\n * @return {Object} Object containing properties for each type of palette.\n */\nfunction useMultiOriginPalettes() {\n\tconst { colors, gradients } = useMultipleOriginColorsAndGradients();\n\n\t// Add duotone filters to the palettes data.\n\tconst [\n\t\tshouldDisplayDefaultDuotones,\n\t\tcustomDuotones,\n\t\tthemeDuotones,\n\t\tdefaultDuotones,\n\t] = useSettings(\n\t\t'color.defaultDuotone',\n\t\t'color.duotone.custom',\n\t\t'color.duotone.theme',\n\t\t'color.duotone.default'\n\t);\n\n\tconst palettes = useMemo( () => {\n\t\tconst result = { colors, gradients, duotones: [] };\n\n\t\tif ( themeDuotones && themeDuotones.length ) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates these duotone filters come from the theme.'\n\t\t\t\t),\n\t\t\t\tslug: 'theme',\n\t\t\t\tduotones: themeDuotones,\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\tshouldDisplayDefaultDuotones &&\n\t\t\tdefaultDuotones &&\n\t\t\tdefaultDuotones.length\n\t\t) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates these duotone filters come from WordPress.'\n\t\t\t\t),\n\t\t\t\tslug: 'default',\n\t\t\t\tduotones: defaultDuotones,\n\t\t\t} );\n\t\t}\n\t\tif ( customDuotones && customDuotones.length ) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates these doutone filters are created by the user.'\n\t\t\t\t),\n\t\t\t\tslug: 'custom',\n\t\t\t\tduotones: customDuotones,\n\t\t\t} );\n\t\t}\n\n\t\treturn result;\n\t}, [\n\t\tcolors,\n\t\tgradients,\n\t\tcustomDuotones,\n\t\tthemeDuotones,\n\t\tdefaultDuotones,\n\t\tshouldDisplayDefaultDuotones,\n\t] );\n\n\treturn palettes;\n}\n\n/**\n * Get deduped examples for single page stylebook.\n * @param {Array} examples Array of examples.\n * @return {Array} Deduped examples.\n */\nexport function getExamplesForSinglePageUse( examples ) {\n\tconst examplesForSinglePageUse = [];\n\tconst overviewCategoryExamples = getExamplesByCategory(\n\t\t{ slug: 'overview' },\n\t\texamples\n\t);\n\texamplesForSinglePageUse.push( ...overviewCategoryExamples.examples );\n\tconst otherExamples = examples.filter( ( example ) => {\n\t\treturn (\n\t\t\texample.category !== 'overview' &&\n\t\t\t! overviewCategoryExamples.examples.find(\n\t\t\t\t( overviewExample ) => overviewExample.name === example.name\n\t\t\t)\n\t\t);\n\t} );\n\texamplesForSinglePageUse.push( ...otherExamples );\n\n\treturn examplesForSinglePageUse;\n}\n\n/**\n * Applies a block variation to each example by updating its attributes.\n *\n * @param {Array} examples Array of examples\n * @param {string} variation Block variation name.\n * @return {Array} Updated examples with variation applied.\n */\nfunction applyBlockVariationsToExamples( examples, variation ) {\n\tif ( ! variation ) {\n\t\treturn examples;\n\t}\n\treturn examples.map( ( example ) => {\n\t\treturn {\n\t\t\t...example,\n\t\t\tvariation,\n\t\t\tblocks: Array.isArray( example.blocks )\n\t\t\t\t? example.blocks.map( ( block ) => ( {\n\t\t\t\t\t\t...block,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t...block.attributes,\n\t\t\t\t\t\t\tstyle: undefined,\n\t\t\t\t\t\t\tclassName: getVariationClassName( variation ),\n\t\t\t\t\t\t},\n\t\t\t\t } ) )\n\t\t\t\t: {\n\t\t\t\t\t\t...example.blocks,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t...example.blocks.attributes,\n\t\t\t\t\t\t\tstyle: undefined,\n\t\t\t\t\t\t\tclassName: getVariationClassName( variation ),\n\t\t\t\t\t\t},\n\t\t\t\t },\n\t\t};\n\t} );\n}\n\nfunction StyleBook( {\n\tenableResizing = true,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tshowCloseButton = true,\n\tonClose,\n\tshowTabs = true,\n\tuserConfig = {},\n\tpath = '',\n} ) {\n\tconst [ textColor ] = useGlobalStyle( 'color.text' );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst colors = useMultiOriginPalettes();\n\tconst examples = useMemo( () => getExamples( colors ), [ colors ] );\n\tconst tabs = useMemo(\n\t\t() =>\n\t\t\tgetTopLevelStyleBookCategories().filter( ( category ) =>\n\t\t\t\texamples.some(\n\t\t\t\t\t( example ) => example.category === category.slug\n\t\t\t\t)\n\t\t\t),\n\t\t[ examples ]\n\t);\n\n\tconst examplesForSinglePageUse = getExamplesForSinglePageUse( examples );\n\n\tconst { base: baseConfig } = useContext( GlobalStylesContext );\n\tconst goTo = getStyleBookNavigationFromPath( path );\n\n\tconst mergedConfig = useMemo( () => {\n\t\tif ( ! isObjectEmpty( userConfig ) && ! isObjectEmpty( baseConfig ) ) {\n\t\t\treturn mergeBaseAndUserConfigs( baseConfig, userConfig );\n\t\t}\n\t\treturn {};\n\t}, [ baseConfig, userConfig ] );\n\n\t// Copied from packages/edit-site/src/components/revisions/index.js\n\t// could we create a shared hook?\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst [ globalStyles ] = useGlobalStylesOutputWithConfig( mergedConfig );\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...originalSettings,\n\t\t\tstyles:\n\t\t\t\t! isObjectEmpty( globalStyles ) && ! isObjectEmpty( userConfig )\n\t\t\t\t\t? globalStyles\n\t\t\t\t\t: originalSettings.styles,\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ globalStyles, originalSettings, userConfig ]\n\t);\n\n\treturn (\n\t\t<EditorCanvasContainer\n\t\t\tonClose={ onClose }\n\t\t\tenableResizing={ enableResizing }\n\t\t\tcloseButtonLabel={ showCloseButton ? __( 'Close' ) : null }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'edit-site-style-book', {\n\t\t\t\t\t'is-button': !! onClick,\n\t\t\t\t} ) }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcolor: textColor,\n\t\t\t\t\tbackground: backgroundColor,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ showTabs ? (\n\t\t\t\t\t<Tabs>\n\t\t\t\t\t\t<div className=\"edit-site-style-book__tablist-container\">\n\t\t\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\t\ttabId={ tab.slug }\n\t\t\t\t\t\t\t\t\t\tkey={ tab.slug }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\tconst categoryDefinition = tab.slug\n\t\t\t\t\t\t\t\t? getTopLevelStyleBookCategories().find(\n\t\t\t\t\t\t\t\t\t\t( _category ) =>\n\t\t\t\t\t\t\t\t\t\t\t_category.slug === tab.slug\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\tconst filteredExamples = categoryDefinition\n\t\t\t\t\t\t\t\t? getExamplesByCategory(\n\t\t\t\t\t\t\t\t\t\tcategoryDefinition,\n\t\t\t\t\t\t\t\t\t\texamples\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: { examples };\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\tkey={ tab.slug }\n\t\t\t\t\t\t\t\t\ttabId={ tab.slug }\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t\tclassName=\"edit-site-style-book__tabpanel\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\t\t\t\t\tcategory={ tab.slug }\n\t\t\t\t\t\t\t\t\t\texamples={ filteredExamples }\n\t\t\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\t\t\ttitle={ tab.title }\n\t\t\t\t\t\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t) : (\n\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\texamples={ { examples: examplesForSinglePageUse } }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorCanvasContainer>\n\t);\n}\n\n/**\n * Style Book Preview component renders the stylebook without the Editor dependency.\n *\n * @param {Object} props Component props.\n * @param {Object} props.userConfig User configuration.\n * @param {boolean} props.isStatic Whether the stylebook is static or clickable.\n * @return {Object} Style Book Preview component.\n */\nexport const StyleBookPreview = ( { userConfig = {}, isStatic = false } ) => {\n\tconst siteEditorSettings = useSelect(\n\t\t( select ) => select( siteEditorStore ).getSettings(),\n\t\t[]\n\t);\n\n\tconst canUserUploadMedia = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUser( 'create', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'attachment',\n\t\t\t} ),\n\t\t[]\n\t);\n\n\t// Update block editor settings because useMultipleOriginColorsAndGradients fetch colours from there.\n\tuseEffect( () => {\n\t\tdispatch( blockEditorStore ).updateSettings( {\n\t\t\t...siteEditorSettings,\n\t\t\tmediaUpload: canUserUploadMedia ? uploadMedia : undefined,\n\t\t} );\n\t}, [ siteEditorSettings, canUserUploadMedia ] );\n\n\tconst [ section, onChangeSection ] = useSection();\n\n\tconst isSelected = ( blockName ) => {\n\t\t// Match '/blocks/core%2Fbutton' and\n\t\t// '/blocks/core%2Fbutton/typography', but not\n\t\t// '/blocks/core%2Fbuttons'.\n\t\treturn (\n\t\t\tsection === `/blocks/${ encodeURIComponent( blockName ) }` ||\n\t\t\tsection.startsWith(\n\t\t\t\t`/blocks/${ encodeURIComponent( blockName ) }/`\n\t\t\t)\n\t\t);\n\t};\n\n\tconst onSelect = ( blockName, isBlockVariation = false ) => {\n\t\tif (\n\t\t\tSTYLE_BOOK_COLOR_GROUPS.find(\n\t\t\t\t( group ) => group.slug === blockName\n\t\t\t)\n\t\t) {\n\t\t\t// Go to color palettes Global Styles.\n\t\t\tonChangeSection( '/colors/palette' );\n\t\t\treturn;\n\t\t}\n\t\tif ( blockName === 'typography' ) {\n\t\t\t// Go to typography Global Styles.\n\t\t\tonChangeSection( '/typography' );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlockVariation ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Now go to the selected block.\n\t\tonChangeSection( `/blocks/${ encodeURIComponent( blockName ) }` );\n\t};\n\n\tconst colors = useMultiOriginPalettes();\n\tconst examples = getExamples( colors );\n\tconst examplesForSinglePageUse = getExamplesForSinglePageUse( examples );\n\n\tlet previewCategory = null;\n\tlet blockVariation = null;\n\tif ( section.includes( '/colors' ) ) {\n\t\tpreviewCategory = 'colors';\n\t} else if ( section.includes( '/typography' ) ) {\n\t\tpreviewCategory = 'text';\n\t} else if ( section.includes( '/blocks' ) ) {\n\t\tpreviewCategory = 'blocks';\n\t\tlet blockName = decodeURIComponent( section ).split( '/blocks/' )[ 1 ];\n\n\t\t// The blockName can contain variations, if so, extract the variation.\n\t\tif ( blockName?.includes( '/variations' ) ) {\n\t\t\t[ blockName, blockVariation ] = blockName.split( '/variations/' );\n\t\t}\n\n\t\tif (\n\t\t\tblockName &&\n\t\t\texamples.find( ( example ) => example.name === blockName )\n\t\t) {\n\t\t\tpreviewCategory = blockName;\n\t\t}\n\t} else if ( ! isStatic ) {\n\t\tpreviewCategory = 'overview';\n\t}\n\tconst categoryDefinition = STYLE_BOOK_PREVIEW_CATEGORIES.find(\n\t\t( category ) => category.slug === previewCategory\n\t);\n\n\tconst filteredExamples = useMemo( () => {\n\t\t// If there's no category definition there may be a single block.\n\t\tif ( ! categoryDefinition ) {\n\t\t\treturn {\n\t\t\t\texamples: [\n\t\t\t\t\texamples.find(\n\t\t\t\t\t\t( example ) => example.name === previewCategory\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\treturn getExamplesByCategory( categoryDefinition, examples );\n\t}, [ categoryDefinition, examples, previewCategory ] );\n\n\tconst displayedExamples = useMemo( () => {\n\t\t// If there's no preview category, show all examples.\n\t\tif ( ! previewCategory ) {\n\t\t\treturn { examples: examplesForSinglePageUse };\n\t\t}\n\n\t\tif ( blockVariation ) {\n\t\t\treturn {\n\t\t\t\texamples: applyBlockVariationsToExamples(\n\t\t\t\t\tfilteredExamples.examples,\n\t\t\t\t\tblockVariation\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\treturn filteredExamples;\n\t}, [\n\t\tpreviewCategory,\n\t\texamplesForSinglePageUse,\n\t\tblockVariation,\n\t\tfilteredExamples,\n\t] );\n\n\tconst { base: baseConfig } = useContext( GlobalStylesContext );\n\tconst goTo = getStyleBookNavigationFromPath( section );\n\n\tconst mergedConfig = useMemo( () => {\n\t\tif ( ! isObjectEmpty( userConfig ) && ! isObjectEmpty( baseConfig ) ) {\n\t\t\treturn mergeBaseAndUserConfigs( baseConfig, userConfig );\n\t\t}\n\t\treturn {};\n\t}, [ baseConfig, userConfig ] );\n\n\tconst [ globalStyles ] = useGlobalStylesOutputWithConfig( mergedConfig );\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...siteEditorSettings,\n\t\t\tstyles:\n\t\t\t\t! isObjectEmpty( globalStyles ) && ! isObjectEmpty( userConfig )\n\t\t\t\t\t? globalStyles\n\t\t\t\t\t: siteEditorSettings.styles,\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ globalStyles, siteEditorSettings, userConfig ]\n\t);\n\n\treturn (\n\t\t<div className=\"edit-site-style-book\">\n\t\t\t<BlockEditorProvider settings={ settings }>\n\t\t\t\t<GlobalStylesRenderer disableRootPadding />\n\t\t\t\t<StyleBookBody\n\t\t\t\t\texamples={ displayedExamples }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\tisSelected={ ! isStatic ? isSelected : null }\n\t\t\t\t\tonSelect={ ! isStatic ? onSelect : null }\n\t\t\t\t/>\n\t\t\t</BlockEditorProvider>\n\t\t</div>\n\t);\n};\n\nexport const StyleBookBody = ( {\n\texamples,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tsettings,\n\ttitle,\n\tgoTo,\n} ) => {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst [ hasIframeLoaded, setHasIframeLoaded ] = useState( false );\n\tconst iframeRef = useRef( null );\n\t// The presence of an `onClick` prop indicates that the Style Book is being used as a button.\n\t// In this case, add additional props to the iframe to make it behave like a button.\n\tconst buttonModeProps = {\n\t\trole: 'button',\n\t\tonFocus: () => setIsFocused( true ),\n\t\tonBlur: () => setIsFocused( false ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { keyCode } = event;\n\t\t\tif ( onClick && ( keyCode === ENTER || keyCode === SPACE ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\tonClick: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( onClick ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\treadonly: true,\n\t};\n\n\tconst handleLoad = () => setHasIframeLoaded( true );\n\tuseLayoutEffect( () => {\n\t\tif ( hasIframeLoaded && iframeRef?.current ) {\n\t\t\tif ( goTo?.top ) {\n\t\t\t\tscrollToSection( 'top', iframeRef?.current );\n\t\t\t}\n\t\t}\n\t}, [ iframeRef?.current, goTo, scrollToSection, hasIframeLoaded ] );\n\n\treturn (\n\t\t<Iframe\n\t\t\tonLoad={ handleLoad }\n\t\t\tref={ iframeRef }\n\t\t\tclassName={ clsx( 'edit-site-style-book__iframe', {\n\t\t\t\t'is-focused': isFocused && !! onClick,\n\t\t\t\t'is-button': !! onClick,\n\t\t\t} ) }\n\t\t\tname=\"style-book-canvas\"\n\t\t\ttabIndex={ 0 }\n\t\t\t{ ...( onClick ? buttonModeProps : {} ) }\n\t\t>\n\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t<style>\n\t\t\t\t{ STYLE_BOOK_IFRAME_STYLES }\n\t\t\t\t{ !! onClick &&\n\t\t\t\t\t'body { cursor: pointer; } body * { pointer-events: none; }' }\n\t\t\t</style>\n\t\t\t<Examples\n\t\t\t\tclassName=\"edit-site-style-book__examples\"\n\t\t\t\tfilteredExamples={ examples }\n\t\t\t\tlabel={\n\t\t\t\t\ttitle\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Category of blocks, e.g. Text.\n\t\t\t\t\t\t\t\t__( 'Examples of blocks in the %s category' ),\n\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Examples of blocks' )\n\t\t\t\t}\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tkey={ title }\n\t\t\t/>\n\t\t</Iframe>\n\t);\n};\n\nconst Examples = memo(\n\t( { className, filteredExamples, label, isSelected, onSelect } ) => {\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tclassName={ className }\n\t\t\t\taria-label={ label }\n\t\t\t\trole=\"grid\"\n\t\t\t>\n\t\t\t\t{ !! filteredExamples?.examples?.length &&\n\t\t\t\t\tfilteredExamples.examples.map( ( example ) => (\n\t\t\t\t\t\t<Example\n\t\t\t\t\t\t\tkey={ example.name }\n\t\t\t\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\t\t\t\ttitle={ example.title }\n\t\t\t\t\t\t\tcontent={ example.content }\n\t\t\t\t\t\t\tblocks={ example.blocks }\n\t\t\t\t\t\t\tisSelected={ isSelected?.( example.name ) }\n\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t!! onSelect\n\t\t\t\t\t\t\t\t\t? () =>\n\t\t\t\t\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\t\t\t\t\texample.name,\n\t\t\t\t\t\t\t\t\t\t\t\t!! example.variation\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ !! filteredExamples?.subcategories?.length &&\n\t\t\t\t\tfilteredExamples.subcategories.map( ( subcategory ) => (\n\t\t\t\t\t\t<Composite.Group\n\t\t\t\t\t\t\tclassName=\"edit-site-style-book__subcategory\"\n\t\t\t\t\t\t\tkey={ `subcategory-${ subcategory.slug }` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Composite.GroupLabel>\n\t\t\t\t\t\t\t\t<h2 className=\"edit-site-style-book__subcategory-title\">\n\t\t\t\t\t\t\t\t\t{ subcategory.title }\n\t\t\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t\t</Composite.GroupLabel>\n\t\t\t\t\t\t\t<Subcategory\n\t\t\t\t\t\t\t\texamples={ subcategory.examples }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Composite.Group>\n\t\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t);\n\t}\n);\n\nconst Subcategory = ( { examples, isSelected, onSelect } ) => {\n\treturn (\n\t\t!! examples?.length &&\n\t\texamples.map( ( example ) => (\n\t\t\t<Example\n\t\t\t\tkey={ example.name }\n\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\ttitle={ example.title }\n\t\t\t\tcontent={ example.content }\n\t\t\t\tblocks={ example.blocks }\n\t\t\t\tisSelected={ isSelected?.( example.name ) }\n\t\t\t\tonClick={ !! onSelect ? () => onSelect( example.name ) : null }\n\t\t\t/>\n\t\t) )\n\t);\n};\n\nconst disabledExamples = [ 'example-duotones' ];\n\nconst Example = ( { id, title, blocks, isSelected, onClick, content } ) => {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...originalSettings,\n\t\t\tfocusMode: false, // Disable \"Spotlight mode\".\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ originalSettings ]\n\t);\n\n\t// Cache the list of blocks to avoid additional processing when the component is re-rendered.\n\tconst renderedBlocks = useMemo(\n\t\t() => ( Array.isArray( blocks ) ? blocks : [ blocks ] ),\n\t\t[ blocks ]\n\t);\n\n\tconst disabledProps =\n\t\tdisabledExamples.includes( id ) || ! onClick\n\t\t\t? {\n\t\t\t\t\tdisabled: true,\n\t\t\t\t\taccessibleWhenDisabled: !! onClick,\n\t\t\t }\n\t\t\t: {};\n\n\treturn (\n\t\t<div role=\"row\">\n\t\t\t<div role=\"gridcell\">\n\t\t\t\t<Composite.Item\n\t\t\t\t\tclassName={ clsx( 'edit-site-style-book__example', {\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t\t'is-disabled-example': !! disabledProps?.disabled,\n\t\t\t\t\t} ) }\n\t\t\t\t\tid={ id }\n\t\t\t\t\taria-label={\n\t\t\t\t\t\t!! onClick\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t// translators: %s: Title of a block, e.g. Heading.\n\t\t\t\t\t\t\t\t\t__( 'Open %s styles in Styles panel' ),\n\t\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\trender={ <div /> }\n\t\t\t\t\trole={ !! onClick ? 'button' : null }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t{ ...disabledProps }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"edit-site-style-book__example-title\">\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</span>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"edit-site-style-book__example-preview\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<Disabled className=\"edit-site-style-book__example-preview__content\">\n\t\t\t\t\t\t\t{ content ? (\n\t\t\t\t\t\t\t\tcontent\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ExperimentalBlockEditorProvider\n\t\t\t\t\t\t\t\t\tvalue={ renderedBlocks }\n\t\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<EditorStyles />\n\t\t\t\t\t\t\t\t\t<BlockList renderAppender={ false } />\n\t\t\t\t\t\t\t\t</ExperimentalBlockEditorProvider>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Disabled>\n\t\t\t\t\t</div>\n\t\t\t\t</Composite.Item>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default StyleBook;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoUK;AAjUL,kBAAiB;AAKjB,wBAIO;AACP,kBAAgC;AAChC,0BASO;AACP,oBAAiD;AACjD,kBAAoC;AACpC,qBAQO;AACP,sBAA6B;AAC7B,yBAA4B;AAC5B,uBAAmC;AAKnC,yBAAuB;AACvB,qCAAkC;AAClC,uBAAyC;AACzC,wBAGO;AACP,sBAA4B;AAC5B,mBAAyC;AACzC,2CAA2B;AAC3B,oCAAqC;AACrC,mBAAsC;AACtC,IAAAA,oBAGO;AACP,sCAAgD;AAEhD,MAAM,EAAE,iCAAiC,gBAAgB,oBAAoB,QAC5E,2BAAQ,oBAAAC,WAAuB;AAChC,MAAM,EAAE,wBAAwB,QAAI,2BAAQ,cAAAC,WAAkB;AAE9D,MAAM,EAAE,KAAK,QAAI,2BAAQ,kBAAAC,WAAsB;AAE/C,SAAS,cAAe,QAAS;AAChC,SAAO,CAAE,UAAU,OAAO,KAAM,MAAO,EAAE,WAAW;AACrD;AAQA,MAAM,kBAAkB,CAAE,UAAU,WAAY;AAC/C,MAAK,CAAE,YAAY,CAAE,UAAU,CAAE,QAAQ,iBAAkB;AAC1D;AAAA,EACD;AAEA,QAAM,UACL,aAAa,QACV,OAAO,gBAAgB,OACvB,OAAO,gBAAgB,eAAgB,QAAS;AACpD,MAAK,SAAU;AACd,YAAQ,eAAgB;AAAA,MACvB,UAAU;AAAA,IACX,CAAE;AAAA,EACH;AACD;AASA,MAAM,iCAAiC,CAAE,SAAU;AAClD,MAAK,QAAQ,OAAO,SAAS,UAAW;AACvC,QACC,SAAS,OACT,KAAK,WAAY,aAAc,KAC/B,KAAK,WAAY,SAAU,KAC3B,KAAK,WAAY,SAAU,GAC1B;AACD,aAAO;AAAA,QACN,KAAK;AAAA,MACN;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AASA,SAAS,yBAAyB;AACjC,QAAM,EAAE,QAAQ,UAAU,QAAI,oBAAAC,mDAAoC;AAGlE,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,QAAI;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,QAAM,eAAW,wBAAS,MAAM;AAC/B,UAAM,SAAS,EAAE,QAAQ,WAAW,UAAU,CAAC,EAAE;AAEjD,QAAK,iBAAiB,cAAc,QAAS;AAC5C,aAAO,SAAS,KAAM;AAAA,QACrB,UAAM;AAAA,UACL;AAAA,UACA;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QACN,UAAU;AAAA,MACX,CAAE;AAAA,IACH;AAEA,QACC,gCACA,mBACA,gBAAgB,QACf;AACD,aAAO,SAAS,KAAM;AAAA,QACrB,UAAM;AAAA,UACL;AAAA,UACA;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QACN,UAAU;AAAA,MACX,CAAE;AAAA,IACH;AACA,QAAK,kBAAkB,eAAe,QAAS;AAC9C,aAAO,SAAS,KAAM;AAAA,QACrB,UAAM;AAAA,UACL;AAAA,UACA;AAAA,QACD;AAAA,QACA,MAAM;AAAA,QACN,UAAU;AAAA,MACX,CAAE;AAAA,IACH;AAEA,WAAO;AAAA,EACR,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,SAAO;AACR;AAOO,SAAS,4BAA6B,UAAW;AACvD,QAAM,2BAA2B,CAAC;AAClC,QAAM,+BAA2B;AAAA,IAChC,EAAE,MAAM,WAAW;AAAA,IACnB;AAAA,EACD;AACA,2BAAyB,KAAM,GAAG,yBAAyB,QAAS;AACpE,QAAM,gBAAgB,SAAS,OAAQ,CAAE,YAAa;AACrD,WACC,QAAQ,aAAa,cACrB,CAAE,yBAAyB,SAAS;AAAA,MACnC,CAAE,oBAAqB,gBAAgB,SAAS,QAAQ;AAAA,IACzD;AAAA,EAEF,CAAE;AACF,2BAAyB,KAAM,GAAG,aAAc;AAEhD,SAAO;AACR;AASA,SAAS,+BAAgC,UAAU,WAAY;AAC9D,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AACA,SAAO,SAAS,IAAK,CAAE,YAAa;AACnC,WAAO;AAAA,MACN,GAAG;AAAA,MACH;AAAA,MACA,QAAQ,MAAM,QAAS,QAAQ,MAAO,IACnC,QAAQ,OAAO,IAAK,CAAE,WAAa;AAAA,QACnC,GAAG;AAAA,QACH,YAAY;AAAA,UACX,GAAG,MAAM;AAAA,UACT,OAAO;AAAA,UACP,eAAW,oCAAuB,SAAU;AAAA,QAC7C;AAAA,MACA,EAAI,IACJ;AAAA,QACA,GAAG,QAAQ;AAAA,QACX,YAAY;AAAA,UACX,GAAG,QAAQ,OAAO;AAAA,UAClB,OAAO;AAAA,UACP,eAAW,oCAAuB,SAAU;AAAA,QAC7C;AAAA,MACA;AAAA,IACJ;AAAA,EACD,CAAE;AACH;AAEA,SAAS,UAAW;AAAA,EACnB,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB;AAAA,EACA,WAAW;AAAA,EACX,aAAa,CAAC;AAAA,EACd,OAAO;AACR,GAAI;AACH,QAAM,CAAE,SAAU,IAAI,eAAgB,YAAa;AACnD,QAAM,CAAE,eAAgB,IAAI,eAAgB,kBAAmB;AAC/D,QAAM,SAAS,uBAAuB;AACtC,QAAM,eAAW,wBAAS,UAAM,6BAAa,MAAO,GAAG,CAAE,MAAO,CAAE;AAClE,QAAM,WAAO;AAAA,IACZ,UACC,kDAA+B,EAAE;AAAA,MAAQ,CAAE,aAC1C,SAAS;AAAA,QACR,CAAE,YAAa,QAAQ,aAAa,SAAS;AAAA,MAC9C;AAAA,IACD;AAAA,IACD,CAAE,QAAS;AAAA,EACZ;AAEA,QAAM,2BAA2B,4BAA6B,QAAS;AAEvE,QAAM,EAAE,MAAM,WAAW,QAAI,2BAAY,mBAAoB;AAC7D,QAAM,OAAO,+BAAgC,IAAK;AAElD,QAAM,mBAAe,wBAAS,MAAM;AACnC,QAAK,CAAE,cAAe,UAAW,KAAK,CAAE,cAAe,UAAW,GAAI;AACrE,aAAO,wBAAyB,YAAY,UAAW;AAAA,IACxD;AACA,WAAO,CAAC;AAAA,EACT,GAAG,CAAE,YAAY,UAAW,CAAE;AAI9B,QAAM,uBAAmB;AAAA,IACxB,CAAE,WAAY,OAAQ,oBAAAC,KAAiB,EAAE,YAAY;AAAA,IACrD,CAAC;AAAA,EACF;AACA,QAAM,CAAE,YAAa,QAAI,iEAAiC,YAAa;AAEvE,QAAM,eAAW;AAAA,IAChB,OAAQ;AAAA,MACP,GAAG;AAAA,MACH,QACC,CAAE,cAAe,YAAa,KAAK,CAAE,cAAe,UAAW,IAC5D,eACA,iBAAiB;AAAA,MACrB,eAAe;AAAA,IAChB;AAAA,IACA,CAAE,cAAc,kBAAkB,UAAW;AAAA,EAC9C;AAEA,SACC;AAAA,IAAC,+BAAAC;AAAA,IAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,kBAAmB,sBAAkB,gBAAI,OAAQ,IAAI;AAAA,MAErD;AAAA,QAAC;AAAA;AAAA,UACA,eAAY,YAAAC,SAAM,wBAAwB;AAAA,YACzC,aAAa,CAAC,CAAE;AAAA,UACjB,CAAE;AAAA,UACF,OAAQ;AAAA,YACP,OAAO;AAAA,YACP,YAAY;AAAA,UACb;AAAA,UAEE,qBACD,6CAAC,QACA;AAAA,wDAAC,SAAI,WAAU,2CACd,sDAAC,KAAK,SAAL,EACE,eAAK,IAAK,CAAE,QACb;AAAA,cAAC,KAAK;AAAA,cAAL;AAAA,gBACA,OAAQ,IAAI;AAAA,gBAGV,cAAI;AAAA;AAAA,cAFA,IAAI;AAAA,YAGX,CACC,GACH,GACD;AAAA,YACE,KAAK,IAAK,CAAE,QAAS;AACtB,oBAAM,qBAAqB,IAAI,WAC5B,kDAA+B,EAAE;AAAA,gBACjC,CAAE,cACD,UAAU,SAAS,IAAI;AAAA,cACxB,IACA;AACH,oBAAM,mBAAmB,yBACtB;AAAA,gBACA;AAAA,gBACA;AAAA,cACA,IACA,EAAE,SAAS;AACd,qBACC;AAAA,gBAAC,KAAK;AAAA,gBAAL;AAAA,kBAEA,OAAQ,IAAI;AAAA,kBACZ,WAAY;AAAA,kBACZ,WAAU;AAAA,kBAEV;AAAA,oBAAC;AAAA;AAAA,sBACA,UAAW,IAAI;AAAA,sBACf,UAAW;AAAA,sBACX;AAAA,sBACA;AAAA,sBACA;AAAA,sBACA,OAAQ,IAAI;AAAA,sBACZ;AAAA;AAAA,kBACD;AAAA;AAAA,gBAbM,IAAI;AAAA,cAcX;AAAA,YAEF,CAAE;AAAA,aACH,IAEA;AAAA,YAAC;AAAA;AAAA,cACA,UAAW,EAAE,UAAU,yBAAyB;AAAA,cAChD;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA;AAAA,UACD;AAAA;AAAA,MAEF;AAAA;AAAA,EACD;AAEF;AAUO,MAAM,mBAAmB,CAAE,EAAE,aAAa,CAAC,GAAG,WAAW,MAAM,MAAO;AAC5E,QAAM,yBAAqB;AAAA,IAC1B,CAAE,WAAY,OAAQ,aAAAC,KAAgB,EAAE,YAAY;AAAA,IACpD,CAAC;AAAA,EACF;AAEA,QAAM,yBAAqB;AAAA,IAC1B,CAAE,WACD,OAAQ,iBAAAC,KAAU,EAAE,QAAS,UAAU;AAAA,MACtC,MAAM;AAAA,MACN,MAAM;AAAA,IACP,CAAE;AAAA,IACH,CAAC;AAAA,EACF;AAGA,gCAAW,MAAM;AAChB,8BAAU,oBAAAJ,KAAiB,EAAE,eAAgB;AAAA,MAC5C,GAAG;AAAA,MACH,aAAa,qBAAqB,iCAAc;AAAA,IACjD,CAAE;AAAA,EACH,GAAG,CAAE,oBAAoB,kBAAmB,CAAE;AAE9C,QAAM,CAAE,SAAS,eAAgB,QAAI,iDAAW;AAEhD,QAAM,aAAa,CAAE,cAAe;AAInC,WACC,YAAY,WAAY,mBAAoB,SAAU,CAAE,MACxD,QAAQ;AAAA,MACP,WAAY,mBAAoB,SAAU,CAAE;AAAA,IAC7C;AAAA,EAEF;AAEA,QAAM,WAAW,CAAE,WAAW,mBAAmB,UAAW;AAC3D,QACC,0CAAwB;AAAA,MACvB,CAAE,UAAW,MAAM,SAAS;AAAA,IAC7B,GACC;AAED,sBAAiB,iBAAkB;AACnC;AAAA,IACD;AACA,QAAK,cAAc,cAAe;AAEjC,sBAAiB,aAAc;AAC/B;AAAA,IACD;AAEA,QAAK,kBAAmB;AACvB;AAAA,IACD;AAGA,oBAAiB,WAAY,mBAAoB,SAAU,CAAE,EAAG;AAAA,EACjE;AAEA,QAAM,SAAS,uBAAuB;AACtC,QAAM,eAAW,6BAAa,MAAO;AACrC,QAAM,2BAA2B,4BAA6B,QAAS;AAEvE,MAAI,kBAAkB;AACtB,MAAI,iBAAiB;AACrB,MAAK,QAAQ,SAAU,SAAU,GAAI;AACpC,sBAAkB;AAAA,EACnB,WAAY,QAAQ,SAAU,aAAc,GAAI;AAC/C,sBAAkB;AAAA,EACnB,WAAY,QAAQ,SAAU,SAAU,GAAI;AAC3C,sBAAkB;AAClB,QAAI,YAAY,mBAAoB,OAAQ,EAAE,MAAO,UAAW,EAAG,CAAE;AAGrE,QAAK,WAAW,SAAU,aAAc,GAAI;AAC3C,OAAE,WAAW,cAAe,IAAI,UAAU,MAAO,cAAe;AAAA,IACjE;AAEA,QACC,aACA,SAAS,KAAM,CAAE,YAAa,QAAQ,SAAS,SAAU,GACxD;AACD,wBAAkB;AAAA,IACnB;AAAA,EACD,WAAY,CAAE,UAAW;AACxB,sBAAkB;AAAA,EACnB;AACA,QAAM,qBAAqB,gDAA8B;AAAA,IACxD,CAAE,aAAc,SAAS,SAAS;AAAA,EACnC;AAEA,QAAM,uBAAmB,wBAAS,MAAM;AAEvC,QAAK,CAAE,oBAAqB;AAC3B,aAAO;AAAA,QACN,UAAU;AAAA,UACT,SAAS;AAAA,YACR,CAAE,YAAa,QAAQ,SAAS;AAAA,UACjC;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,eAAO,yCAAuB,oBAAoB,QAAS;AAAA,EAC5D,GAAG,CAAE,oBAAoB,UAAU,eAAgB,CAAE;AAErD,QAAM,wBAAoB,wBAAS,MAAM;AAExC,QAAK,CAAE,iBAAkB;AACxB,aAAO,EAAE,UAAU,yBAAyB;AAAA,IAC7C;AAEA,QAAK,gBAAiB;AACrB,aAAO;AAAA,QACN,UAAU;AAAA,UACT,iBAAiB;AAAA,UACjB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,WAAO;AAAA,EACR,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,QAAM,EAAE,MAAM,WAAW,QAAI,2BAAY,mBAAoB;AAC7D,QAAM,OAAO,+BAAgC,OAAQ;AAErD,QAAM,mBAAe,wBAAS,MAAM;AACnC,QAAK,CAAE,cAAe,UAAW,KAAK,CAAE,cAAe,UAAW,GAAI;AACrE,aAAO,wBAAyB,YAAY,UAAW;AAAA,IACxD;AACA,WAAO,CAAC;AAAA,EACT,GAAG,CAAE,YAAY,UAAW,CAAE;AAE9B,QAAM,CAAE,YAAa,QAAI,iEAAiC,YAAa;AAEvE,QAAM,eAAW;AAAA,IAChB,OAAQ;AAAA,MACP,GAAG;AAAA,MACH,QACC,CAAE,cAAe,YAAa,KAAK,CAAE,cAAe,UAAW,IAC5D,eACA,mBAAmB;AAAA,MACvB,eAAe;AAAA,IAChB;AAAA,IACA,CAAE,cAAc,oBAAoB,UAAW;AAAA,EAChD;AAEA,SACC,4CAAC,SAAI,WAAU,wBACd,uDAAC,2CAAoB,UACpB;AAAA,gDAAC,sDAAqB,oBAAkB,MAAC;AAAA,IACzC;AAAA,MAAC;AAAA;AAAA,QACA,UAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA,YAAa,CAAE,WAAW,aAAa;AAAA,QACvC,UAAW,CAAE,WAAW,WAAW;AAAA;AAAA,IACpC;AAAA,KACD,GACD;AAEF;AAEO,MAAM,gBAAgB,CAAE;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAO;AACN,QAAM,CAAE,WAAW,YAAa,QAAI,yBAAU,KAAM;AACpD,QAAM,CAAE,iBAAiB,kBAAmB,QAAI,yBAAU,KAAM;AAChE,QAAM,gBAAY,uBAAQ,IAAK;AAG/B,QAAM,kBAAkB;AAAA,IACvB,MAAM;AAAA,IACN,SAAS,MAAM,aAAc,IAAK;AAAA,IAClC,QAAQ,MAAM,aAAc,KAAM;AAAA,IAClC,WAAW,CAAE,UAAW;AACvB,UAAK,MAAM,kBAAmB;AAC7B;AAAA,MACD;AACA,YAAM,EAAE,QAAQ,IAAI;AACpB,UAAK,YAAa,YAAY,yBAAS,YAAY,wBAAU;AAC5D,cAAM,eAAe;AACrB,gBAAS,KAAM;AAAA,MAChB;AAAA,IACD;AAAA,IACA,SAAS,CAAE,UAAW;AACrB,UAAK,MAAM,kBAAmB;AAC7B;AAAA,MACD;AACA,UAAK,SAAU;AACd,cAAM,eAAe;AACrB,gBAAS,KAAM;AAAA,MAChB;AAAA,IACD;AAAA,IACA,UAAU;AAAA,EACX;AAEA,QAAM,aAAa,MAAM,mBAAoB,IAAK;AAClD,sCAAiB,MAAM;AACtB,QAAK,mBAAmB,WAAW,SAAU;AAC5C,UAAK,MAAM,KAAM;AAChB,wBAAiB,OAAO,WAAW,OAAQ;AAAA,MAC5C;AAAA,IACD;AAAA,EACD,GAAG,CAAE,WAAW,SAAS,MAAM,iBAAiB,eAAgB,CAAE;AAElE,SACC;AAAA,IAAC,oBAAAK;AAAA,IAAA;AAAA,MACA,QAAS;AAAA,MACT,KAAM;AAAA,MACN,eAAY,YAAAH,SAAM,gCAAgC;AAAA,QACjD,cAAc,aAAa,CAAC,CAAE;AAAA,QAC9B,aAAa,CAAC,CAAE;AAAA,MACjB,CAAE;AAAA,MACF,MAAK;AAAA,MACL,UAAW;AAAA,MACT,GAAK,UAAU,kBAAkB,CAAC;AAAA,MAEpC;AAAA,oDAAC,oBAAAI,wBAAA,EAAa,QAAS,SAAS,QAAS;AAAA,QACzC,6CAAC,WACE;AAAA;AAAA,UACA,CAAC,CAAE,WACJ;AAAA,WACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,kBAAmB;AAAA,YACnB,OACC,YACG;AAAA;AAAA,kBAEA,gBAAI,uCAAwC;AAAA,cAC5C;AAAA,YACA,QACA,gBAAI,oBAAqB;AAAA,YAE7B;AAAA,YACA;AAAA;AAAA,UACM;AAAA,QACP;AAAA;AAAA;AAAA,EACD;AAEF;AAEA,MAAM,eAAW;AAAA,EAChB,CAAE,EAAE,WAAW,kBAAkB,OAAO,YAAY,SAAS,MAAO;AACnE,WACC;AAAA,MAAC;AAAA;AAAA,QACA,aAAY;AAAA,QACZ;AAAA,QACA,cAAa;AAAA,QACb,MAAK;AAAA,QAEH;AAAA,WAAC,CAAE,kBAAkB,UAAU,UAChC,iBAAiB,SAAS,IAAK,CAAE,YAChC;AAAA,YAAC;AAAA;AAAA,cAEA,IAAK,WAAY,QAAQ,IAAK;AAAA,cAC9B,OAAQ,QAAQ;AAAA,cAChB,SAAU,QAAQ;AAAA,cAClB,QAAS,QAAQ;AAAA,cACjB,YAAa,aAAc,QAAQ,IAAK;AAAA,cACxC,SACC,CAAC,CAAE,WACA,MACA;AAAA,gBACC,QAAQ;AAAA,gBACR,CAAC,CAAE,QAAQ;AAAA,cACZ,IACA;AAAA;AAAA,YAbE,QAAQ;AAAA,UAef,CACC;AAAA,UACD,CAAC,CAAE,kBAAkB,eAAe,UACrC,iBAAiB,cAAc,IAAK,CAAE,gBACrC;AAAA,YAAC,4BAAU;AAAA,YAAV;AAAA,cACA,WAAU;AAAA,cAGV;AAAA,4DAAC,4BAAU,YAAV,EACA,sDAAC,QAAG,WAAU,2CACX,sBAAY,OACf,GACD;AAAA,gBACA;AAAA,kBAAC;AAAA;AAAA,oBACA,UAAW,YAAY;AAAA,oBACvB;AAAA,oBACA;AAAA;AAAA,gBACD;AAAA;AAAA;AAAA,YAXM,eAAgB,YAAY,IAAK;AAAA,UAYxC,CACC;AAAA;AAAA;AAAA,IACJ;AAAA,EAEF;AACD;AAEA,MAAM,cAAc,CAAE,EAAE,UAAU,YAAY,SAAS,MAAO;AAC7D,SACC,CAAC,CAAE,UAAU,UACb,SAAS,IAAK,CAAE,YACf;AAAA,IAAC;AAAA;AAAA,MAEA,IAAK,WAAY,QAAQ,IAAK;AAAA,MAC9B,OAAQ,QAAQ;AAAA,MAChB,SAAU,QAAQ;AAAA,MAClB,QAAS,QAAQ;AAAA,MACjB,YAAa,aAAc,QAAQ,IAAK;AAAA,MACxC,SAAU,CAAC,CAAE,WAAW,MAAM,SAAU,QAAQ,IAAK,IAAI;AAAA;AAAA,IANnD,QAAQ;AAAA,EAOf,CACC;AAEJ;AAEA,MAAM,mBAAmB,CAAE,kBAAmB;AAE9C,MAAM,UAAU,CAAE,EAAE,IAAI,OAAO,QAAQ,YAAY,SAAS,QAAQ,MAAO;AAC1E,QAAM,uBAAmB;AAAA,IACxB,CAAE,WAAY,OAAQ,oBAAAN,KAAiB,EAAE,YAAY;AAAA,IACrD,CAAC;AAAA,EACF;AACA,QAAM,eAAW;AAAA,IAChB,OAAQ;AAAA,MACP,GAAG;AAAA,MACH,WAAW;AAAA;AAAA,MACX,eAAe;AAAA,IAChB;AAAA,IACA,CAAE,gBAAiB;AAAA,EACpB;AAGA,QAAM,qBAAiB;AAAA,IACtB,MAAQ,MAAM,QAAS,MAAO,IAAI,SAAS,CAAE,MAAO;AAAA,IACpD,CAAE,MAAO;AAAA,EACV;AAEA,QAAM,gBACL,iBAAiB,SAAU,EAAG,KAAK,CAAE,UAClC;AAAA,IACA,UAAU;AAAA,IACV,wBAAwB,CAAC,CAAE;AAAA,EAC3B,IACA,CAAC;AAEL,SACC,4CAAC,SAAI,MAAK,OACT,sDAAC,SAAI,MAAK,YACT;AAAA,IAAC,4BAAU;AAAA,IAAV;AAAA,MACA,eAAY,YAAAE,SAAM,iCAAiC;AAAA,QAClD,eAAe;AAAA,QACf,uBAAuB,CAAC,CAAE,eAAe;AAAA,MAC1C,CAAE;AAAA,MACF;AAAA,MACA,cACC,CAAC,CAAE,cACA;AAAA;AAAA,YAEA,gBAAI,gCAAiC;AAAA,QACrC;AAAA,MACA,IACA;AAAA,MAEJ,QAAS,4CAAC,SAAI;AAAA,MACd,MAAO,CAAC,CAAE,UAAU,WAAW;AAAA,MAC/B;AAAA,MACE,GAAG;AAAA,MAEL;AAAA,oDAAC,UAAK,WAAU,uCACb,iBACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,eAAW;AAAA,YAEX,sDAAC,8BAAS,WAAU,kDACjB,oBACD,UAEA;AAAA,cAAC;AAAA;AAAA,gBACA,OAAQ;AAAA,gBACR;AAAA,gBAEA;AAAA,8DAAC,oBAAAI,wBAAA,EAAa;AAAA,kBACd,4CAAC,iCAAU,gBAAiB,OAAQ;AAAA;AAAA;AAAA,YACrC,GAEF;AAAA;AAAA,QACD;AAAA;AAAA;AAAA,EACD,GACD,GACD;AAEF;AAEA,IAAO,qBAAQ;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tDisabled,\n\tComposite,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x, sprintf } from '@wordpress/i18n';\nimport {\n\tBlockList,\n\tprivateApis as blockEditorPrivateApis,\n\tstore as blockEditorStore,\n\tuseSettings,\n\tBlockEditorProvider,\n\t__unstableEditorStyles as EditorStyles,\n\t__unstableIframe as Iframe,\n\t__experimentalUseMultipleOriginColorsAndGradients as useMultipleOriginColorsAndGradients,\n} from '@wordpress/block-editor';\nimport { privateApis as editorPrivateApis } from '@wordpress/editor';\nimport { useSelect, dispatch } from '@wordpress/data';\nimport {\n\tuseMemo,\n\tuseState,\n\tmemo,\n\tuseContext,\n\tuseRef,\n\tuseLayoutEffect,\n\tuseEffect,\n} from '@wordpress/element';\nimport { ENTER, SPACE } from '@wordpress/keycodes';\nimport { uploadMedia } from '@wordpress/media-utils';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport EditorCanvasContainer from '../editor-canvas-container';\nimport { STYLE_BOOK_IFRAME_STYLES } from './constants';\nimport {\n\tgetExamplesByCategory,\n\tgetTopLevelStyleBookCategories,\n} from './categories';\nimport { getExamples } from './examples';\nimport { store as siteEditorStore } from '../../store';\nimport { useSection } from '../sidebar-global-styles-wrapper';\nimport { GlobalStylesRenderer } from '../global-styles-renderer';\nimport { getVariationClassName } from '../global-styles/utils';\nimport {\n\tSTYLE_BOOK_COLOR_GROUPS,\n\tSTYLE_BOOK_PREVIEW_CATEGORIES,\n} from '../style-book/constants';\n\nconst {\n\tExperimentalBlockEditorProvider,\n\tuseGlobalStyle,\n\tGlobalStylesContext,\n\tuseGlobalStylesOutputWithConfig,\n} = unlock( blockEditorPrivateApis );\nconst { mergeBaseAndUserConfigs } = unlock( editorPrivateApis );\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nfunction isObjectEmpty( object ) {\n\treturn ! object || Object.keys( object ).length === 0;\n}\n\n/**\n * Scrolls to a section within an iframe.\n *\n * @param {string} anchorId The id of the element to scroll to.\n * @param {HTMLIFrameElement} iframe The target iframe.\n */\nconst scrollToSection = ( anchorId, iframe ) => {\n\tif ( ! anchorId || ! iframe || ! iframe?.contentDocument ) {\n\t\treturn;\n\t}\n\n\tconst element =\n\t\tanchorId === 'top'\n\t\t\t? iframe.contentDocument.body\n\t\t\t: iframe.contentDocument.getElementById( anchorId );\n\tif ( element ) {\n\t\telement.scrollIntoView( {\n\t\t\tbehavior: 'smooth',\n\t\t} );\n\t}\n};\n\n/**\n * Parses a Block Editor navigation path to build a style book navigation path.\n * The object can be extended to include a category, representing a style book tab/section.\n *\n * @param {string} path An internal Block Editor navigation path.\n * @return {null|{block: string}} An object containing the example to navigate to.\n */\nconst getStyleBookNavigationFromPath = ( path ) => {\n\tif ( path && typeof path === 'string' ) {\n\t\tif (\n\t\t\tpath === '/' ||\n\t\t\tpath.startsWith( '/typography' ) ||\n\t\t\tpath.startsWith( '/colors' ) ||\n\t\t\tpath.startsWith( '/blocks' )\n\t\t) {\n\t\t\treturn {\n\t\t\t\ttop: true,\n\t\t\t};\n\t\t}\n\t}\n\treturn null;\n};\n\n/**\n * Retrieves colors, gradients, and duotone filters from Global Styles.\n * The inclusion of default (Core) palettes is controlled by the relevant\n * theme.json property e.g. defaultPalette, defaultGradients, defaultDuotone.\n *\n * @return {Object} Object containing properties for each type of palette.\n */\nfunction useMultiOriginPalettes() {\n\tconst { colors, gradients } = useMultipleOriginColorsAndGradients();\n\n\t// Add duotone filters to the palettes data.\n\tconst [\n\t\tshouldDisplayDefaultDuotones,\n\t\tcustomDuotones,\n\t\tthemeDuotones,\n\t\tdefaultDuotones,\n\t] = useSettings(\n\t\t'color.defaultDuotone',\n\t\t'color.duotone.custom',\n\t\t'color.duotone.theme',\n\t\t'color.duotone.default'\n\t);\n\n\tconst palettes = useMemo( () => {\n\t\tconst result = { colors, gradients, duotones: [] };\n\n\t\tif ( themeDuotones && themeDuotones.length ) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Theme',\n\t\t\t\t\t'Indicates these duotone filters come from the theme.'\n\t\t\t\t),\n\t\t\t\tslug: 'theme',\n\t\t\t\tduotones: themeDuotones,\n\t\t\t} );\n\t\t}\n\n\t\tif (\n\t\t\tshouldDisplayDefaultDuotones &&\n\t\t\tdefaultDuotones &&\n\t\t\tdefaultDuotones.length\n\t\t) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Default',\n\t\t\t\t\t'Indicates these duotone filters come from WordPress.'\n\t\t\t\t),\n\t\t\t\tslug: 'default',\n\t\t\t\tduotones: defaultDuotones,\n\t\t\t} );\n\t\t}\n\t\tif ( customDuotones && customDuotones.length ) {\n\t\t\tresult.duotones.push( {\n\t\t\t\tname: _x(\n\t\t\t\t\t'Custom',\n\t\t\t\t\t'Indicates these doutone filters are created by the user.'\n\t\t\t\t),\n\t\t\t\tslug: 'custom',\n\t\t\t\tduotones: customDuotones,\n\t\t\t} );\n\t\t}\n\n\t\treturn result;\n\t}, [\n\t\tcolors,\n\t\tgradients,\n\t\tcustomDuotones,\n\t\tthemeDuotones,\n\t\tdefaultDuotones,\n\t\tshouldDisplayDefaultDuotones,\n\t] );\n\n\treturn palettes;\n}\n\n/**\n * Get deduped examples for single page stylebook.\n * @param {Array} examples Array of examples.\n * @return {Array} Deduped examples.\n */\nexport function getExamplesForSinglePageUse( examples ) {\n\tconst examplesForSinglePageUse = [];\n\tconst overviewCategoryExamples = getExamplesByCategory(\n\t\t{ slug: 'overview' },\n\t\texamples\n\t);\n\texamplesForSinglePageUse.push( ...overviewCategoryExamples.examples );\n\tconst otherExamples = examples.filter( ( example ) => {\n\t\treturn (\n\t\t\texample.category !== 'overview' &&\n\t\t\t! overviewCategoryExamples.examples.find(\n\t\t\t\t( overviewExample ) => overviewExample.name === example.name\n\t\t\t)\n\t\t);\n\t} );\n\texamplesForSinglePageUse.push( ...otherExamples );\n\n\treturn examplesForSinglePageUse;\n}\n\n/**\n * Applies a block variation to each example by updating its attributes.\n *\n * @param {Array} examples Array of examples\n * @param {string} variation Block variation name.\n * @return {Array} Updated examples with variation applied.\n */\nfunction applyBlockVariationsToExamples( examples, variation ) {\n\tif ( ! variation ) {\n\t\treturn examples;\n\t}\n\treturn examples.map( ( example ) => {\n\t\treturn {\n\t\t\t...example,\n\t\t\tvariation,\n\t\t\tblocks: Array.isArray( example.blocks )\n\t\t\t\t? example.blocks.map( ( block ) => ( {\n\t\t\t\t\t\t...block,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t...block.attributes,\n\t\t\t\t\t\t\tstyle: undefined,\n\t\t\t\t\t\t\tclassName: getVariationClassName( variation ),\n\t\t\t\t\t\t},\n\t\t\t\t } ) )\n\t\t\t\t: {\n\t\t\t\t\t\t...example.blocks,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t...example.blocks.attributes,\n\t\t\t\t\t\t\tstyle: undefined,\n\t\t\t\t\t\t\tclassName: getVariationClassName( variation ),\n\t\t\t\t\t\t},\n\t\t\t\t },\n\t\t};\n\t} );\n}\n\nfunction StyleBook( {\n\tenableResizing = true,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tshowCloseButton = true,\n\tonClose,\n\tshowTabs = true,\n\tuserConfig = {},\n\tpath = '',\n} ) {\n\tconst [ textColor ] = useGlobalStyle( 'color.text' );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst colors = useMultiOriginPalettes();\n\tconst examples = useMemo( () => getExamples( colors ), [ colors ] );\n\tconst tabs = useMemo(\n\t\t() =>\n\t\t\tgetTopLevelStyleBookCategories().filter( ( category ) =>\n\t\t\t\texamples.some(\n\t\t\t\t\t( example ) => example.category === category.slug\n\t\t\t\t)\n\t\t\t),\n\t\t[ examples ]\n\t);\n\n\tconst examplesForSinglePageUse = getExamplesForSinglePageUse( examples );\n\n\tconst { base: baseConfig } = useContext( GlobalStylesContext );\n\tconst goTo = getStyleBookNavigationFromPath( path );\n\n\tconst mergedConfig = useMemo( () => {\n\t\tif ( ! isObjectEmpty( userConfig ) && ! isObjectEmpty( baseConfig ) ) {\n\t\t\treturn mergeBaseAndUserConfigs( baseConfig, userConfig );\n\t\t}\n\t\treturn {};\n\t}, [ baseConfig, userConfig ] );\n\n\t// Copied from packages/edit-site/src/components/revisions/index.js\n\t// could we create a shared hook?\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst [ globalStyles ] = useGlobalStylesOutputWithConfig( mergedConfig );\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...originalSettings,\n\t\t\tstyles:\n\t\t\t\t! isObjectEmpty( globalStyles ) && ! isObjectEmpty( userConfig )\n\t\t\t\t\t? globalStyles\n\t\t\t\t\t: originalSettings.styles,\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ globalStyles, originalSettings, userConfig ]\n\t);\n\n\treturn (\n\t\t<EditorCanvasContainer\n\t\t\tonClose={ onClose }\n\t\t\tenableResizing={ enableResizing }\n\t\t\tcloseButtonLabel={ showCloseButton ? __( 'Close' ) : null }\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName={ clsx( 'edit-site-style-book', {\n\t\t\t\t\t'is-button': !! onClick,\n\t\t\t\t} ) }\n\t\t\t\tstyle={ {\n\t\t\t\t\tcolor: textColor,\n\t\t\t\t\tbackground: backgroundColor,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ showTabs ? (\n\t\t\t\t\t<Tabs>\n\t\t\t\t\t\t<div className=\"edit-site-style-book__tablist-container\">\n\t\t\t\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t\t\t\t{ tabs.map( ( tab ) => (\n\t\t\t\t\t\t\t\t\t<Tabs.Tab\n\t\t\t\t\t\t\t\t\t\ttabId={ tab.slug }\n\t\t\t\t\t\t\t\t\t\tkey={ tab.slug }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Tabs.TabList>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{ tabs.map( ( tab ) => {\n\t\t\t\t\t\t\tconst categoryDefinition = tab.slug\n\t\t\t\t\t\t\t\t? getTopLevelStyleBookCategories().find(\n\t\t\t\t\t\t\t\t\t\t( _category ) =>\n\t\t\t\t\t\t\t\t\t\t\t_category.slug === tab.slug\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\tconst filteredExamples = categoryDefinition\n\t\t\t\t\t\t\t\t? getExamplesByCategory(\n\t\t\t\t\t\t\t\t\t\tcategoryDefinition,\n\t\t\t\t\t\t\t\t\t\texamples\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: { examples };\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\t\t\t\tkey={ tab.slug }\n\t\t\t\t\t\t\t\t\ttabId={ tab.slug }\n\t\t\t\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\t\t\t\tclassName=\"edit-site-style-book__tabpanel\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\t\t\t\t\tcategory={ tab.slug }\n\t\t\t\t\t\t\t\t\t\texamples={ filteredExamples }\n\t\t\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\t\t\ttitle={ tab.title }\n\t\t\t\t\t\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t) : (\n\t\t\t\t\t<StyleBookBody\n\t\t\t\t\t\texamples={ { examples: examplesForSinglePageUse } }\n\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorCanvasContainer>\n\t);\n}\n\n/**\n * Style Book Preview component renders the stylebook without the Editor dependency.\n *\n * @param {Object} props Component props.\n * @param {Object} props.userConfig User configuration.\n * @param {boolean} props.isStatic Whether the stylebook is static or clickable.\n * @return {Object} Style Book Preview component.\n */\nexport const StyleBookPreview = ( { userConfig = {}, isStatic = false } ) => {\n\tconst siteEditorSettings = useSelect(\n\t\t( select ) => select( siteEditorStore ).getSettings(),\n\t\t[]\n\t);\n\n\tconst canUserUploadMedia = useSelect(\n\t\t( select ) =>\n\t\t\tselect( coreStore ).canUser( 'create', {\n\t\t\t\tkind: 'postType',\n\t\t\t\tname: 'attachment',\n\t\t\t} ),\n\t\t[]\n\t);\n\n\t// Update block editor settings because useMultipleOriginColorsAndGradients fetch colours from there.\n\tuseEffect( () => {\n\t\tdispatch( blockEditorStore ).updateSettings( {\n\t\t\t...siteEditorSettings,\n\t\t\tmediaUpload: canUserUploadMedia ? uploadMedia : undefined,\n\t\t} );\n\t}, [ siteEditorSettings, canUserUploadMedia ] );\n\n\tconst [ section, onChangeSection ] = useSection();\n\n\tconst isSelected = ( blockName ) => {\n\t\t// Match '/blocks/core%2Fbutton' and\n\t\t// '/blocks/core%2Fbutton/typography', but not\n\t\t// '/blocks/core%2Fbuttons'.\n\t\treturn (\n\t\t\tsection === `/blocks/${ encodeURIComponent( blockName ) }` ||\n\t\t\tsection.startsWith(\n\t\t\t\t`/blocks/${ encodeURIComponent( blockName ) }/`\n\t\t\t)\n\t\t);\n\t};\n\n\tconst onSelect = ( blockName, isBlockVariation = false ) => {\n\t\tif (\n\t\t\tSTYLE_BOOK_COLOR_GROUPS.find(\n\t\t\t\t( group ) => group.slug === blockName\n\t\t\t)\n\t\t) {\n\t\t\t// Go to color palettes Global Styles.\n\t\t\tonChangeSection( '/colors/palette' );\n\t\t\treturn;\n\t\t}\n\t\tif ( blockName === 'typography' ) {\n\t\t\t// Go to typography Global Styles.\n\t\t\tonChangeSection( '/typography' );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlockVariation ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Now go to the selected block.\n\t\tonChangeSection( `/blocks/${ encodeURIComponent( blockName ) }` );\n\t};\n\n\tconst colors = useMultiOriginPalettes();\n\tconst examples = getExamples( colors );\n\tconst examplesForSinglePageUse = getExamplesForSinglePageUse( examples );\n\n\tlet previewCategory = null;\n\tlet blockVariation = null;\n\tif ( section.includes( '/colors' ) ) {\n\t\tpreviewCategory = 'colors';\n\t} else if ( section.includes( '/typography' ) ) {\n\t\tpreviewCategory = 'text';\n\t} else if ( section.includes( '/blocks' ) ) {\n\t\tpreviewCategory = 'blocks';\n\t\tlet blockName = decodeURIComponent( section ).split( '/blocks/' )[ 1 ];\n\n\t\t// The blockName can contain variations, if so, extract the variation.\n\t\tif ( blockName?.includes( '/variations' ) ) {\n\t\t\t[ blockName, blockVariation ] = blockName.split( '/variations/' );\n\t\t}\n\n\t\tif (\n\t\t\tblockName &&\n\t\t\texamples.find( ( example ) => example.name === blockName )\n\t\t) {\n\t\t\tpreviewCategory = blockName;\n\t\t}\n\t} else if ( ! isStatic ) {\n\t\tpreviewCategory = 'overview';\n\t}\n\tconst categoryDefinition = STYLE_BOOK_PREVIEW_CATEGORIES.find(\n\t\t( category ) => category.slug === previewCategory\n\t);\n\n\tconst filteredExamples = useMemo( () => {\n\t\t// If there's no category definition there may be a single block.\n\t\tif ( ! categoryDefinition ) {\n\t\t\treturn {\n\t\t\t\texamples: [\n\t\t\t\t\texamples.find(\n\t\t\t\t\t\t( example ) => example.name === previewCategory\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t};\n\t\t}\n\n\t\treturn getExamplesByCategory( categoryDefinition, examples );\n\t}, [ categoryDefinition, examples, previewCategory ] );\n\n\tconst displayedExamples = useMemo( () => {\n\t\t// If there's no preview category, show all examples.\n\t\tif ( ! previewCategory ) {\n\t\t\treturn { examples: examplesForSinglePageUse };\n\t\t}\n\n\t\tif ( blockVariation ) {\n\t\t\treturn {\n\t\t\t\texamples: applyBlockVariationsToExamples(\n\t\t\t\t\tfilteredExamples.examples,\n\t\t\t\t\tblockVariation\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\treturn filteredExamples;\n\t}, [\n\t\tpreviewCategory,\n\t\texamplesForSinglePageUse,\n\t\tblockVariation,\n\t\tfilteredExamples,\n\t] );\n\n\tconst { base: baseConfig } = useContext( GlobalStylesContext );\n\tconst goTo = getStyleBookNavigationFromPath( section );\n\n\tconst mergedConfig = useMemo( () => {\n\t\tif ( ! isObjectEmpty( userConfig ) && ! isObjectEmpty( baseConfig ) ) {\n\t\t\treturn mergeBaseAndUserConfigs( baseConfig, userConfig );\n\t\t}\n\t\treturn {};\n\t}, [ baseConfig, userConfig ] );\n\n\tconst [ globalStyles ] = useGlobalStylesOutputWithConfig( mergedConfig );\n\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...siteEditorSettings,\n\t\t\tstyles:\n\t\t\t\t! isObjectEmpty( globalStyles ) && ! isObjectEmpty( userConfig )\n\t\t\t\t\t? globalStyles\n\t\t\t\t\t: siteEditorSettings.styles,\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ globalStyles, siteEditorSettings, userConfig ]\n\t);\n\n\treturn (\n\t\t<div className=\"edit-site-style-book\">\n\t\t\t<BlockEditorProvider settings={ settings }>\n\t\t\t\t<GlobalStylesRenderer disableRootPadding />\n\t\t\t\t<StyleBookBody\n\t\t\t\t\texamples={ displayedExamples }\n\t\t\t\t\tsettings={ settings }\n\t\t\t\t\tgoTo={ goTo }\n\t\t\t\t\tisSelected={ ! isStatic ? isSelected : null }\n\t\t\t\t\tonSelect={ ! isStatic ? onSelect : null }\n\t\t\t\t/>\n\t\t\t</BlockEditorProvider>\n\t\t</div>\n\t);\n};\n\nexport const StyleBookBody = ( {\n\texamples,\n\tisSelected,\n\tonClick,\n\tonSelect,\n\tsettings,\n\ttitle,\n\tgoTo,\n} ) => {\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\tconst [ hasIframeLoaded, setHasIframeLoaded ] = useState( false );\n\tconst iframeRef = useRef( null );\n\t// The presence of an `onClick` prop indicates that the Style Book is being used as a button.\n\t// In this case, add additional props to the iframe to make it behave like a button.\n\tconst buttonModeProps = {\n\t\trole: 'button',\n\t\tonFocus: () => setIsFocused( true ),\n\t\tonBlur: () => setIsFocused( false ),\n\t\tonKeyDown: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { keyCode } = event;\n\t\t\tif ( onClick && ( keyCode === ENTER || keyCode === SPACE ) ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\tonClick: ( event ) => {\n\t\t\tif ( event.defaultPrevented ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( onClick ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tonClick( event );\n\t\t\t}\n\t\t},\n\t\treadonly: true,\n\t};\n\n\tconst handleLoad = () => setHasIframeLoaded( true );\n\tuseLayoutEffect( () => {\n\t\tif ( hasIframeLoaded && iframeRef?.current ) {\n\t\t\tif ( goTo?.top ) {\n\t\t\t\tscrollToSection( 'top', iframeRef?.current );\n\t\t\t}\n\t\t}\n\t}, [ iframeRef?.current, goTo, scrollToSection, hasIframeLoaded ] );\n\n\treturn (\n\t\t<Iframe\n\t\t\tonLoad={ handleLoad }\n\t\t\tref={ iframeRef }\n\t\t\tclassName={ clsx( 'edit-site-style-book__iframe', {\n\t\t\t\t'is-focused': isFocused && !! onClick,\n\t\t\t\t'is-button': !! onClick,\n\t\t\t} ) }\n\t\t\tname=\"style-book-canvas\"\n\t\t\ttabIndex={ 0 }\n\t\t\t{ ...( onClick ? buttonModeProps : {} ) }\n\t\t>\n\t\t\t<EditorStyles styles={ settings.styles } />\n\t\t\t<style>\n\t\t\t\t{ STYLE_BOOK_IFRAME_STYLES }\n\t\t\t\t{ !! onClick &&\n\t\t\t\t\t'body { cursor: pointer; } body * { pointer-events: none; }' }\n\t\t\t</style>\n\t\t\t<Examples\n\t\t\t\tclassName=\"edit-site-style-book__examples\"\n\t\t\t\tfilteredExamples={ examples }\n\t\t\t\tlabel={\n\t\t\t\t\ttitle\n\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t// translators: %s: Category of blocks, e.g. Text.\n\t\t\t\t\t\t\t\t__( 'Examples of blocks in the %s category' ),\n\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Examples of blocks' )\n\t\t\t\t}\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tkey={ title }\n\t\t\t/>\n\t\t</Iframe>\n\t);\n};\n\nconst Examples = memo(\n\t( { className, filteredExamples, label, isSelected, onSelect } ) => {\n\t\treturn (\n\t\t\t<Composite\n\t\t\t\torientation=\"vertical\"\n\t\t\t\tclassName={ className }\n\t\t\t\taria-label={ label }\n\t\t\t\trole=\"grid\"\n\t\t\t>\n\t\t\t\t{ !! filteredExamples?.examples?.length &&\n\t\t\t\t\tfilteredExamples.examples.map( ( example ) => (\n\t\t\t\t\t\t<Example\n\t\t\t\t\t\t\tkey={ example.name }\n\t\t\t\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\t\t\t\ttitle={ example.title }\n\t\t\t\t\t\t\tcontent={ example.content }\n\t\t\t\t\t\t\tblocks={ example.blocks }\n\t\t\t\t\t\t\tisSelected={ isSelected?.( example.name ) }\n\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t!! onSelect\n\t\t\t\t\t\t\t\t\t? () =>\n\t\t\t\t\t\t\t\t\t\t\tonSelect(\n\t\t\t\t\t\t\t\t\t\t\t\texample.name,\n\t\t\t\t\t\t\t\t\t\t\t\t!! example.variation\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t{ !! filteredExamples?.subcategories?.length &&\n\t\t\t\t\tfilteredExamples.subcategories.map( ( subcategory ) => (\n\t\t\t\t\t\t<Composite.Group\n\t\t\t\t\t\t\tclassName=\"edit-site-style-book__subcategory\"\n\t\t\t\t\t\t\tkey={ `subcategory-${ subcategory.slug }` }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Composite.GroupLabel>\n\t\t\t\t\t\t\t\t<h2 className=\"edit-site-style-book__subcategory-title\">\n\t\t\t\t\t\t\t\t\t{ subcategory.title }\n\t\t\t\t\t\t\t\t</h2>\n\t\t\t\t\t\t\t</Composite.GroupLabel>\n\t\t\t\t\t\t\t<Subcategory\n\t\t\t\t\t\t\t\texamples={ subcategory.examples }\n\t\t\t\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\t\t\t\tonSelect={ onSelect }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Composite.Group>\n\t\t\t\t\t) ) }\n\t\t\t</Composite>\n\t\t);\n\t}\n);\n\nconst Subcategory = ( { examples, isSelected, onSelect } ) => {\n\treturn (\n\t\t!! examples?.length &&\n\t\texamples.map( ( example ) => (\n\t\t\t<Example\n\t\t\t\tkey={ example.name }\n\t\t\t\tid={ `example-${ example.name }` }\n\t\t\t\ttitle={ example.title }\n\t\t\t\tcontent={ example.content }\n\t\t\t\tblocks={ example.blocks }\n\t\t\t\tisSelected={ isSelected?.( example.name ) }\n\t\t\t\tonClick={ !! onSelect ? () => onSelect( example.name ) : null }\n\t\t\t/>\n\t\t) )\n\t);\n};\n\nconst disabledExamples = [ 'example-duotones' ];\n\nconst Example = ( { id, title, blocks, isSelected, onClick, content } ) => {\n\tconst originalSettings = useSelect(\n\t\t( select ) => select( blockEditorStore ).getSettings(),\n\t\t[]\n\t);\n\tconst settings = useMemo(\n\t\t() => ( {\n\t\t\t...originalSettings,\n\t\t\tfocusMode: false, // Disable \"Spotlight mode\".\n\t\t\tisPreviewMode: true,\n\t\t} ),\n\t\t[ originalSettings ]\n\t);\n\n\t// Cache the list of blocks to avoid additional processing when the component is re-rendered.\n\tconst renderedBlocks = useMemo(\n\t\t() => ( Array.isArray( blocks ) ? blocks : [ blocks ] ),\n\t\t[ blocks ]\n\t);\n\n\tconst disabledProps =\n\t\tdisabledExamples.includes( id ) || ! onClick\n\t\t\t? {\n\t\t\t\t\tdisabled: true,\n\t\t\t\t\taccessibleWhenDisabled: !! onClick,\n\t\t\t }\n\t\t\t: {};\n\n\treturn (\n\t\t<div role=\"row\">\n\t\t\t<div role=\"gridcell\">\n\t\t\t\t<Composite.Item\n\t\t\t\t\tclassName={ clsx( 'edit-site-style-book__example', {\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t\t'is-disabled-example': !! disabledProps?.disabled,\n\t\t\t\t\t} ) }\n\t\t\t\t\tid={ id }\n\t\t\t\t\taria-label={\n\t\t\t\t\t\t!! onClick\n\t\t\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t\t\t// translators: %s: Title of a block, e.g. Heading.\n\t\t\t\t\t\t\t\t\t__( 'Open %s styles in Styles panel' ),\n\t\t\t\t\t\t\t\t\ttitle\n\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\trender={ <div /> }\n\t\t\t\t\trole={ !! onClick ? 'button' : null }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t{ ...disabledProps }\n\t\t\t\t>\n\t\t\t\t\t<span className=\"edit-site-style-book__example-title\">\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</span>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"edit-site-style-book__example-preview\"\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t>\n\t\t\t\t\t\t<Disabled className=\"edit-site-style-book__example-preview__content\">\n\t\t\t\t\t\t\t{ content ? (\n\t\t\t\t\t\t\t\tcontent\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ExperimentalBlockEditorProvider\n\t\t\t\t\t\t\t\t\tvalue={ renderedBlocks }\n\t\t\t\t\t\t\t\t\tsettings={ settings }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<EditorStyles />\n\t\t\t\t\t\t\t\t\t<BlockList renderAppender={ false } />\n\t\t\t\t\t\t\t\t</ExperimentalBlockEditorProvider>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Disabled>\n\t\t\t\t\t</div>\n\t\t\t\t</Composite.Item>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default StyleBook;\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_constants", "blockEditorPrivateApis", "editorPrivateApis", "componentsPrivateApis", "useMultipleOriginColorsAndGradients", "blockEditorStore", "EditorCanvasContainer", "clsx", "siteEditorStore", "coreStore", "Iframe", "EditorStyles"]
7
7
  }
@@ -22,7 +22,13 @@ const useSetActiveTemplateAction = () => {
22
22
  isPrimary: true,
23
23
  icon: pencil,
24
24
  isEligible(item) {
25
- return !item._isCustom && !(item.slug === "index" && item.source === "theme") && item.theme === activeTheme.stylesheet;
25
+ if (item.theme !== activeTheme.stylesheet) {
26
+ return false;
27
+ }
28
+ if (typeof item.id !== "number") {
29
+ return item._isActive === false;
30
+ }
31
+ return true;
26
32
  },
27
33
  async callback(items) {
28
34
  const deactivate = items.some((item) => item._isActive);
@@ -31,11 +37,7 @@ const useSetActiveTemplateAction = () => {
31
37
  };
32
38
  for (const item of items) {
33
39
  if (deactivate) {
34
- if (item.source === "theme") {
35
- activeTemplates[item.slug] = false;
36
- } else {
37
- delete activeTemplates[item.slug];
38
- }
40
+ delete activeTemplates[item.slug];
39
41
  } else {
40
42
  activeTemplates[item.slug] = item.id;
41
43
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/dataviews-actions/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { pencil } from '@wordpress/icons';\nimport { useMemo } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_TYPES } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport const useSetActiveTemplateAction = () => {\n\tconst activeTheme = useSelect( ( select ) =>\n\t\tselect( coreStore ).getCurrentTheme()\n\t);\n\tconst { getEntityRecord } = useSelect( coreStore );\n\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\tuseDispatch( coreStore );\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'set-active-template',\n\t\t\tlabel( items ) {\n\t\t\t\treturn items.some( ( item ) => item._isActive )\n\t\t\t\t\t? __( 'Deactivate' )\n\t\t\t\t\t: __( 'Activate' );\n\t\t\t},\n\t\t\tisPrimary: true,\n\t\t\ticon: pencil,\n\t\t\tisEligible( item ) {\n\t\t\t\treturn (\n\t\t\t\t\t! item._isCustom &&\n\t\t\t\t\t! ( item.slug === 'index' && item.source === 'theme' ) &&\n\t\t\t\t\titem.theme === activeTheme.stylesheet\n\t\t\t\t);\n\t\t\t},\n\t\t\tasync callback( items ) {\n\t\t\t\tconst deactivate = items.some( ( item ) => item._isActive );\n\t\t\t\t// current active templates\n\t\t\t\tconst activeTemplates = {\n\t\t\t\t\t...( ( await getEntityRecord( 'root', 'site' )\n\t\t\t\t\t\t.active_templates ) ?? {} ),\n\t\t\t\t};\n\t\t\t\tfor ( const item of items ) {\n\t\t\t\t\tif ( deactivate ) {\n\t\t\t\t\t\tif ( item.source === 'theme' ) {\n\t\t\t\t\t\t\tactiveTemplates[ item.slug ] = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdelete activeTemplates[ item.slug ];\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveTemplates[ item.slug ] = item.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait editEntityRecord( 'root', 'site', undefined, {\n\t\t\t\t\tactive_templates: activeTemplates,\n\t\t\t\t} );\n\t\t\t\tawait saveEditedEntityRecord( 'root', 'site' );\n\t\t\t},\n\t\t} ),\n\t\t[\n\t\t\teditEntityRecord,\n\t\t\tsaveEditedEntityRecord,\n\t\t\tgetEntityRecord,\n\t\t\tactiveTheme,\n\t\t]\n\t);\n};\n\nexport const useEditPostAction = () => {\n\tconst history = useHistory();\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'edit-post',\n\t\t\tlabel: __( 'Edit' ),\n\t\t\tisPrimary: true,\n\t\t\ticon: pencil,\n\t\t\tisEligible( post ) {\n\t\t\t\tif ( post.status === 'trash' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// It's eligible for all post types except theme patterns.\n\t\t\t\treturn post.type !== PATTERN_TYPES.theme;\n\t\t\t},\n\t\t\tcallback( items ) {\n\t\t\t\tconst post = items[ 0 ];\n\t\t\t\thistory.navigate( `/${ post.type }/${ post.id }?canvas=edit` );\n\t\t\t},\n\t\t} ),\n\t\t[ history ]\n\t);\n};\n"],
5
- "mappings": "AAGA,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,eAAe,yBAAyB;AACjD,SAAS,aAAa,iBAAiB;AACvC,SAAS,SAAS,iBAAiB;AAKnC,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AAEvB,MAAM,EAAE,WAAW,IAAI,OAAQ,iBAAkB;AAE1C,MAAM,6BAA6B,MAAM;AAC/C,QAAM,cAAc;AAAA,IAAW,CAAE,WAChC,OAAQ,SAAU,EAAE,gBAAgB;AAAA,EACrC;AACA,QAAM,EAAE,gBAAgB,IAAI,UAAW,SAAU;AACjD,QAAM,EAAE,kBAAkB,uBAAuB,IAChD,YAAa,SAAU;AACxB,SAAO;AAAA,IACN,OAAQ;AAAA,MACP,IAAI;AAAA,MACJ,MAAO,OAAQ;AACd,eAAO,MAAM,KAAM,CAAE,SAAU,KAAK,SAAU,IAC3C,GAAI,YAAa,IACjB,GAAI,UAAW;AAAA,MACnB;AAAA,MACA,WAAW;AAAA,MACX,MAAM;AAAA,MACN,WAAY,MAAO;AAClB,eACC,CAAE,KAAK,aACP,EAAI,KAAK,SAAS,WAAW,KAAK,WAAW,YAC7C,KAAK,UAAU,YAAY;AAAA,MAE7B;AAAA,MACA,MAAM,SAAU,OAAQ;AACvB,cAAM,aAAa,MAAM,KAAM,CAAE,SAAU,KAAK,SAAU;AAE1D,cAAM,kBAAkB;AAAA,UACvB,GAAO,MAAM,gBAAiB,QAAQ,MAAO,EAC3C,oBAAsB,CAAC;AAAA,QAC1B;AACA,mBAAY,QAAQ,OAAQ;AAC3B,cAAK,YAAa;AACjB,gBAAK,KAAK,WAAW,SAAU;AAC9B,8BAAiB,KAAK,IAAK,IAAI;AAAA,YAChC,OAAO;AACN,qBAAO,gBAAiB,KAAK,IAAK;AAAA,YACnC;AAAA,UACD,OAAO;AACN,4BAAiB,KAAK,IAAK,IAAI,KAAK;AAAA,UACrC;AAAA,QACD;AACA,cAAM,iBAAkB,QAAQ,QAAQ,QAAW;AAAA,UAClD,kBAAkB;AAAA,QACnB,CAAE;AACF,cAAM,uBAAwB,QAAQ,MAAO;AAAA,MAC9C;AAAA,IACD;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;AAEO,MAAM,oBAAoB,MAAM;AACtC,QAAM,UAAU,WAAW;AAC3B,SAAO;AAAA,IACN,OAAQ;AAAA,MACP,IAAI;AAAA,MACJ,OAAO,GAAI,MAAO;AAAA,MAClB,WAAW;AAAA,MACX,MAAM;AAAA,MACN,WAAY,MAAO;AAClB,YAAK,KAAK,WAAW,SAAU;AAC9B,iBAAO;AAAA,QACR;AAEA,eAAO,KAAK,SAAS,cAAc;AAAA,MACpC;AAAA,MACA,SAAU,OAAQ;AACjB,cAAM,OAAO,MAAO,CAAE;AACtB,gBAAQ,SAAU,IAAK,KAAK,IAAK,IAAK,KAAK,EAAG,cAAe;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAE,OAAQ;AAAA,EACX;AACD;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { pencil } from '@wordpress/icons';\nimport { useMemo } from '@wordpress/element';\nimport { privateApis as routerPrivateApis } from '@wordpress/router';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { PATTERN_TYPES } from '../../utils/constants';\nimport { unlock } from '../../lock-unlock';\n\nconst { useHistory } = unlock( routerPrivateApis );\n\nexport const useSetActiveTemplateAction = () => {\n\tconst activeTheme = useSelect( ( select ) =>\n\t\tselect( coreStore ).getCurrentTheme()\n\t);\n\tconst { getEntityRecord } = useSelect( coreStore );\n\tconst { editEntityRecord, saveEditedEntityRecord } =\n\t\tuseDispatch( coreStore );\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'set-active-template',\n\t\t\tlabel( items ) {\n\t\t\t\treturn items.some( ( item ) => item._isActive )\n\t\t\t\t\t? __( 'Deactivate' )\n\t\t\t\t\t: __( 'Activate' );\n\t\t\t},\n\t\t\tisPrimary: true,\n\t\t\ticon: pencil,\n\t\t\tisEligible( item ) {\n\t\t\t\tif ( item.theme !== activeTheme.stylesheet ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// If it's not a created template but a registered template,\n\t\t\t\t// only allow activating (so when it's inactive).\n\t\t\t\tif ( typeof item.id !== 'number' ) {\n\t\t\t\t\treturn item._isActive === false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tasync callback( items ) {\n\t\t\t\tconst deactivate = items.some( ( item ) => item._isActive );\n\t\t\t\t// current active templates\n\t\t\t\tconst activeTemplates = {\n\t\t\t\t\t...( ( await getEntityRecord( 'root', 'site' )\n\t\t\t\t\t\t.active_templates ) ?? {} ),\n\t\t\t\t};\n\t\t\t\tfor ( const item of items ) {\n\t\t\t\t\tif ( deactivate ) {\n\t\t\t\t\t\tdelete activeTemplates[ item.slug ];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tactiveTemplates[ item.slug ] = item.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait editEntityRecord( 'root', 'site', undefined, {\n\t\t\t\t\tactive_templates: activeTemplates,\n\t\t\t\t} );\n\t\t\t\tawait saveEditedEntityRecord( 'root', 'site' );\n\t\t\t},\n\t\t} ),\n\t\t[\n\t\t\teditEntityRecord,\n\t\t\tsaveEditedEntityRecord,\n\t\t\tgetEntityRecord,\n\t\t\tactiveTheme,\n\t\t]\n\t);\n};\n\nexport const useEditPostAction = () => {\n\tconst history = useHistory();\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tid: 'edit-post',\n\t\t\tlabel: __( 'Edit' ),\n\t\t\tisPrimary: true,\n\t\t\ticon: pencil,\n\t\t\tisEligible( post ) {\n\t\t\t\tif ( post.status === 'trash' ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// It's eligible for all post types except theme patterns.\n\t\t\t\treturn post.type !== PATTERN_TYPES.theme;\n\t\t\t},\n\t\t\tcallback( items ) {\n\t\t\t\tconst post = items[ 0 ];\n\t\t\t\thistory.navigate( `/${ post.type }/${ post.id }?canvas=edit` );\n\t\t\t},\n\t\t} ),\n\t\t[ history ]\n\t);\n};\n"],
5
+ "mappings": "AAGA,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB,SAAS,eAAe;AACxB,SAAS,eAAe,yBAAyB;AACjD,SAAS,aAAa,iBAAiB;AACvC,SAAS,SAAS,iBAAiB;AAKnC,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AAEvB,MAAM,EAAE,WAAW,IAAI,OAAQ,iBAAkB;AAE1C,MAAM,6BAA6B,MAAM;AAC/C,QAAM,cAAc;AAAA,IAAW,CAAE,WAChC,OAAQ,SAAU,EAAE,gBAAgB;AAAA,EACrC;AACA,QAAM,EAAE,gBAAgB,IAAI,UAAW,SAAU;AACjD,QAAM,EAAE,kBAAkB,uBAAuB,IAChD,YAAa,SAAU;AACxB,SAAO;AAAA,IACN,OAAQ;AAAA,MACP,IAAI;AAAA,MACJ,MAAO,OAAQ;AACd,eAAO,MAAM,KAAM,CAAE,SAAU,KAAK,SAAU,IAC3C,GAAI,YAAa,IACjB,GAAI,UAAW;AAAA,MACnB;AAAA,MACA,WAAW;AAAA,MACX,MAAM;AAAA,MACN,WAAY,MAAO;AAClB,YAAK,KAAK,UAAU,YAAY,YAAa;AAC5C,iBAAO;AAAA,QACR;AAIA,YAAK,OAAO,KAAK,OAAO,UAAW;AAClC,iBAAO,KAAK,cAAc;AAAA,QAC3B;AAEA,eAAO;AAAA,MACR;AAAA,MACA,MAAM,SAAU,OAAQ;AACvB,cAAM,aAAa,MAAM,KAAM,CAAE,SAAU,KAAK,SAAU;AAE1D,cAAM,kBAAkB;AAAA,UACvB,GAAO,MAAM,gBAAiB,QAAQ,MAAO,EAC3C,oBAAsB,CAAC;AAAA,QAC1B;AACA,mBAAY,QAAQ,OAAQ;AAC3B,cAAK,YAAa;AACjB,mBAAO,gBAAiB,KAAK,IAAK;AAAA,UACnC,OAAO;AACN,4BAAiB,KAAK,IAAK,IAAI,KAAK;AAAA,UACrC;AAAA,QACD;AACA,cAAM,iBAAkB,QAAQ,QAAQ,QAAW;AAAA,UAClD,kBAAkB;AAAA,QACnB,CAAE;AACF,cAAM,uBAAwB,QAAQ,MAAO;AAAA,MAC9C;AAAA,IACD;AAAA,IACA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EACD;AACD;AAEO,MAAM,oBAAoB,MAAM;AACtC,QAAM,UAAU,WAAW;AAC3B,SAAO;AAAA,IACN,OAAQ;AAAA,MACP,IAAI;AAAA,MACJ,OAAO,GAAI,MAAO;AAAA,MAClB,WAAW;AAAA,MACX,MAAM;AAAA,MACN,WAAY,MAAO;AAClB,YAAK,KAAK,WAAW,SAAU;AAC9B,iBAAO;AAAA,QACR;AAEA,eAAO,KAAK,SAAS,cAAc;AAAA,MACpC;AAAA,MACA,SAAU,OAAQ;AACjB,cAAM,OAAO,MAAO,CAAE;AACtB,gBAAQ,SAAU,IAAK,KAAK,IAAK,IAAK,KAAK,EAAG,cAAe;AAAA,MAC9D;AAAA,IACD;AAAA,IACA,CAAE,OAAQ;AAAA,EACX;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,9 @@
1
1
  import { useEffect } from "@wordpress/element";
2
2
  import { useSelect, useDispatch } from "@wordpress/data";
3
+ import { privateApis as blockEditorPrivateApis } from "@wordpress/block-editor";
3
4
  import { store as editSiteStore } from "../../store";
4
- import { useGlobalStylesOutput } from "../../hooks/use-global-styles-output";
5
+ import { unlock } from "../../lock-unlock";
6
+ const { useGlobalStylesOutput } = unlock(blockEditorPrivateApis);
5
7
  function useGlobalStylesRenderer(disableRootPadding) {
6
8
  const [styles, settings] = useGlobalStylesOutput(disableRootPadding);
7
9
  const { getSettings } = useSelect(editSiteStore);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/global-styles-renderer/index.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { useGlobalStylesOutput } from '../../hooks/use-global-styles-output';\n\nfunction useGlobalStylesRenderer( disableRootPadding ) {\n\tconst [ styles, settings ] = useGlobalStylesOutput( disableRootPadding );\n\tconst { getSettings } = useSelect( editSiteStore );\n\tconst { updateSettings } = useDispatch( editSiteStore );\n\n\tuseEffect( () => {\n\t\tif ( ! styles || ! settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentStoreSettings = getSettings();\n\t\tconst nonGlobalStyles = Object.values(\n\t\t\tcurrentStoreSettings.styles ?? []\n\t\t).filter( ( style ) => ! style.isGlobalStyles );\n\t\tupdateSettings( {\n\t\t\t...currentStoreSettings,\n\t\t\tstyles: [ ...nonGlobalStyles, ...styles ],\n\t\t\t__experimentalFeatures: settings,\n\t\t} );\n\t}, [ styles, settings, updateSettings, getSettings ] );\n}\n\nexport function GlobalStylesRenderer( { disableRootPadding } ) {\n\tuseGlobalStylesRenderer( disableRootPadding );\n\n\treturn null;\n}\n"],
5
- "mappings": "AAGA,SAAS,iBAAiB;AAC1B,SAAS,WAAW,mBAAmB;AAKvC,SAAS,SAAS,qBAAqB;AACvC,SAAS,6BAA6B;AAEtC,SAAS,wBAAyB,oBAAqB;AACtD,QAAM,CAAE,QAAQ,QAAS,IAAI,sBAAuB,kBAAmB;AACvE,QAAM,EAAE,YAAY,IAAI,UAAW,aAAc;AACjD,QAAM,EAAE,eAAe,IAAI,YAAa,aAAc;AAEtD,YAAW,MAAM;AAChB,QAAK,CAAE,UAAU,CAAE,UAAW;AAC7B;AAAA,IACD;AAEA,UAAM,uBAAuB,YAAY;AACzC,UAAM,kBAAkB,OAAO;AAAA,MAC9B,qBAAqB,UAAU,CAAC;AAAA,IACjC,EAAE,OAAQ,CAAE,UAAW,CAAE,MAAM,cAAe;AAC9C,mBAAgB;AAAA,MACf,GAAG;AAAA,MACH,QAAQ,CAAE,GAAG,iBAAiB,GAAG,MAAO;AAAA,MACxC,wBAAwB;AAAA,IACzB,CAAE;AAAA,EACH,GAAG,CAAE,QAAQ,UAAU,gBAAgB,WAAY,CAAE;AACtD;AAEO,SAAS,qBAAsB,EAAE,mBAAmB,GAAI;AAC9D,0BAAyB,kBAAmB;AAE5C,SAAO;AACR;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useEffect } from '@wordpress/element';\nimport { useSelect, useDispatch } from '@wordpress/data';\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { store as editSiteStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nconst { useGlobalStylesOutput } = unlock( blockEditorPrivateApis );\n\nfunction useGlobalStylesRenderer( disableRootPadding ) {\n\tconst [ styles, settings ] = useGlobalStylesOutput( disableRootPadding );\n\tconst { getSettings } = useSelect( editSiteStore );\n\tconst { updateSettings } = useDispatch( editSiteStore );\n\n\tuseEffect( () => {\n\t\tif ( ! styles || ! settings ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentStoreSettings = getSettings();\n\t\tconst nonGlobalStyles = Object.values(\n\t\t\tcurrentStoreSettings.styles ?? []\n\t\t).filter( ( style ) => ! style.isGlobalStyles );\n\t\tupdateSettings( {\n\t\t\t...currentStoreSettings,\n\t\t\tstyles: [ ...nonGlobalStyles, ...styles ],\n\t\t\t__experimentalFeatures: settings,\n\t\t} );\n\t}, [ styles, settings, updateSettings, getSettings ] );\n}\n\nexport function GlobalStylesRenderer( { disableRootPadding } ) {\n\tuseGlobalStylesRenderer( disableRootPadding );\n\n\treturn null;\n}\n"],
5
+ "mappings": "AAGA,SAAS,iBAAiB;AAC1B,SAAS,WAAW,mBAAmB;AACvC,SAAS,eAAe,8BAA8B;AAKtD,SAAS,SAAS,qBAAqB;AACvC,SAAS,cAAc;AAEvB,MAAM,EAAE,sBAAsB,IAAI,OAAQ,sBAAuB;AAEjE,SAAS,wBAAyB,oBAAqB;AACtD,QAAM,CAAE,QAAQ,QAAS,IAAI,sBAAuB,kBAAmB;AACvE,QAAM,EAAE,YAAY,IAAI,UAAW,aAAc;AACjD,QAAM,EAAE,eAAe,IAAI,YAAa,aAAc;AAEtD,YAAW,MAAM;AAChB,QAAK,CAAE,UAAU,CAAE,UAAW;AAC7B;AAAA,IACD;AAEA,UAAM,uBAAuB,YAAY;AACzC,UAAM,kBAAkB,OAAO;AAAA,MAC9B,qBAAqB,UAAU,CAAC;AAAA,IACjC,EAAE,OAAQ,CAAE,UAAW,CAAE,MAAM,cAAe;AAC9C,mBAAgB;AAAA,MACf,GAAG;AAAA,MACH,QAAQ,CAAE,GAAG,iBAAiB,GAAG,MAAO;AAAA,MACxC,wBAAwB;AAAA,IACzB,CAAE;AAAA,EACH,GAAG,CAAE,QAAQ,UAAU,gBAAgB,WAAY,CAAE;AACtD;AAEO,SAAS,qBAAsB,EAAE,mBAAmB,GAAI;AAC9D,0BAAyB,kBAAmB;AAE5C,SAAO;AACR;",
6
6
  "names": []
7
7
  }
@@ -29,9 +29,8 @@ const { useEntityRecordsWithPermissions } = unlock(corePrivateApis);
29
29
  function useAllDefaultTemplateTypes() {
30
30
  const defaultTemplateTypes = useDefaultTemplateTypes();
31
31
  const { records: staticRecords } = useEntityRecordsWithPermissions(
32
- "postType",
33
- "wp_registered_template",
34
- { per_page: -1 }
32
+ "root",
33
+ "registeredTemplate"
35
34
  );
36
35
  return [
37
36
  ...defaultTemplateTypes,
@@ -115,39 +114,33 @@ const authorField = {
115
114
  const activeField = {
116
115
  label: __("Status"),
117
116
  id: "active",
117
+ type: "boolean",
118
118
  getValue: ({ item }) => item._isActive,
119
119
  render: function Render({ item }) {
120
- if (item._isCustom) {
121
- return /* @__PURE__ */ jsx(
122
- Badge,
123
- {
124
- intent: "info",
125
- title: __(
126
- "Custom templates cannot be active nor inactive."
127
- ),
128
- children: __("N/A")
129
- }
130
- );
131
- }
120
+ const activeLabel = item._isCustom ? __("Active when used") : __("Active");
121
+ const activeIntent = item._isCustom ? "info" : "success";
132
122
  const isActive = item._isActive;
133
- return /* @__PURE__ */ jsx(Badge, { intent: isActive ? "success" : "default", children: isActive ? __("Active") : __("Inactive") });
123
+ return /* @__PURE__ */ jsx(Badge, { intent: isActive ? activeIntent : "default", children: isActive ? activeLabel : __("Inactive") });
134
124
  }
135
125
  };
136
126
  const useThemeField = () => {
137
127
  const activeTheme = useSelect(
138
128
  (select) => select(coreStore).getCurrentTheme()
139
129
  );
140
- return {
141
- label: __("Compatible Theme"),
142
- id: "theme",
143
- getValue: ({ item }) => item.theme,
144
- render: function Render3({ item }) {
145
- if (item.theme === activeTheme.stylesheet) {
146
- return /* @__PURE__ */ jsx(Badge, { intent: "success", children: item.theme });
130
+ return useMemo(
131
+ () => ({
132
+ label: __("Compatible Theme"),
133
+ id: "theme",
134
+ getValue: ({ item }) => item.theme,
135
+ render: function Render3({ item }) {
136
+ if (item.theme === activeTheme.stylesheet) {
137
+ return /* @__PURE__ */ jsx(Badge, { intent: "success", children: item.theme });
138
+ }
139
+ return /* @__PURE__ */ jsx(Badge, { intent: "error", children: item.theme });
147
140
  }
148
- return /* @__PURE__ */ jsx(Badge, { intent: "error", children: item.theme });
149
- }
150
- };
141
+ }),
142
+ [activeTheme]
143
+ );
151
144
  };
152
145
  const slugField = {
153
146
  label: __("Template Type"),
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/page-templates/fields.js"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState, useMemo } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { EditorProvider } from '@wordpress/editor';\nimport {\n\tprivateApis as corePrivateApis,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useAddedBy } from './hooks';\nimport { useDefaultTemplateTypes } from '../add-new-template/utils';\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\n\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\nconst { Badge } = unlock( componentsPrivateApis );\nconst { useEntityRecordsWithPermissions } = unlock( corePrivateApis );\n\nfunction useAllDefaultTemplateTypes() {\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst { records: staticRecords } = useEntityRecordsWithPermissions(\n\t\t'postType',\n\t\t'wp_registered_template',\n\t\t{ per_page: -1 }\n\t);\n\treturn [\n\t\t...defaultTemplateTypes,\n\t\t...staticRecords\n\t\t\t?.filter( ( record ) => ! record.is_custom )\n\t\t\t.map( ( record ) => {\n\t\t\t\treturn {\n\t\t\t\t\tslug: record.slug,\n\t\t\t\t\ttitle: record.title.rendered,\n\t\t\t\t\tdescription: record.description,\n\t\t\t\t};\n\t\t\t} ),\n\t];\n}\n\nfunction PreviewField( { item } ) {\n\tconst settings = usePatternSettings();\n\tconst [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<EditorProvider post={ item } settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName=\"page-templates-preview-field\"\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t{ isEmpty && __( 'Empty template' ) }\n\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t<BlockPreview.Async>\n\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t</BlockPreview.Async>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorProvider>\n\t);\n}\n\nexport const previewField = {\n\tlabel: __( 'Preview' ),\n\tid: 'preview',\n\trender: PreviewField,\n\tenableSorting: false,\n};\n\nexport const descriptionField = {\n\tlabel: __( 'Description' ),\n\tid: 'description',\n\trender: function RenderDescription( { item } ) {\n\t\tconst defaultTemplateTypes = useAllDefaultTemplateTypes();\n\t\tconst defaultTemplateType = defaultTemplateTypes.find(\n\t\t\t( type ) => type.slug === item.slug\n\t\t);\n\t\treturn item.description\n\t\t\t? decodeEntities( item.description )\n\t\t\t: defaultTemplateType?.description;\n\t},\n\tenableSorting: false,\n\tenableGlobalSearch: true,\n};\n\nfunction AuthorField( { item } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nexport const authorField = {\n\tlabel: __( 'Author' ),\n\tid: 'author',\n\tgetValue: ( { item } ) => item.author_text ?? item.author,\n\trender: AuthorField,\n};\n\nexport const activeField = {\n\tlabel: __( 'Status' ),\n\tid: 'active',\n\tgetValue: ( { item } ) => item._isActive,\n\trender: function Render( { item } ) {\n\t\tif ( item._isCustom ) {\n\t\t\treturn (\n\t\t\t\t<Badge\n\t\t\t\t\tintent=\"info\"\n\t\t\t\t\ttitle={ __(\n\t\t\t\t\t\t'Custom templates cannot be active nor inactive.'\n\t\t\t\t\t) }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'N/A' ) }\n\t\t\t\t</Badge>\n\t\t\t);\n\t\t}\n\n\t\tconst isActive = item._isActive;\n\t\treturn (\n\t\t\t<Badge intent={ isActive ? 'success' : 'default' }>\n\t\t\t\t{ isActive ? __( 'Active' ) : __( 'Inactive' ) }\n\t\t\t</Badge>\n\t\t);\n\t},\n};\n\nexport const useThemeField = () => {\n\tconst activeTheme = useSelect( ( select ) =>\n\t\tselect( coreStore ).getCurrentTheme()\n\t);\n\treturn {\n\t\tlabel: __( 'Compatible Theme' ),\n\t\tid: 'theme',\n\t\tgetValue: ( { item } ) => item.theme,\n\t\trender: function Render( { item } ) {\n\t\t\tif ( item.theme === activeTheme.stylesheet ) {\n\t\t\t\treturn <Badge intent=\"success\">{ item.theme }</Badge>;\n\t\t\t}\n\t\t\treturn <Badge intent=\"error\">{ item.theme }</Badge>;\n\t\t},\n\t};\n};\n\nexport const slugField = {\n\tlabel: __( 'Template Type' ),\n\tid: 'slug',\n\tgetValue: ( { item } ) => item.slug,\n\trender: function Render( { item } ) {\n\t\tconst defaultTemplateTypes = useAllDefaultTemplateTypes();\n\t\tconst defaultTemplateType = defaultTemplateTypes.find(\n\t\t\t( type ) => type.slug === item.slug\n\t\t);\n\t\treturn defaultTemplateType?.title || _x( 'Custom', 'template type' );\n\t},\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tIcon,\n\t__experimentalHStack as HStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __, _x } from '@wordpress/i18n';\nimport { useState, useMemo } from '@wordpress/element';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { parse } from '@wordpress/blocks';\nimport {\n\tBlockPreview,\n\tprivateApis as blockEditorPrivateApis,\n} from '@wordpress/block-editor';\nimport { EditorProvider } from '@wordpress/editor';\nimport {\n\tprivateApis as corePrivateApis,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { useAddedBy } from './hooks';\nimport { useDefaultTemplateTypes } from '../add-new-template/utils';\nimport usePatternSettings from '../page-patterns/use-pattern-settings';\nimport { unlock } from '../../lock-unlock';\n\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\nconst { Badge } = unlock( componentsPrivateApis );\nconst { useEntityRecordsWithPermissions } = unlock( corePrivateApis );\n\nfunction useAllDefaultTemplateTypes() {\n\tconst defaultTemplateTypes = useDefaultTemplateTypes();\n\tconst { records: staticRecords } = useEntityRecordsWithPermissions(\n\t\t'root',\n\t\t'registeredTemplate'\n\t);\n\treturn [\n\t\t...defaultTemplateTypes,\n\t\t...staticRecords\n\t\t\t?.filter( ( record ) => ! record.is_custom )\n\t\t\t.map( ( record ) => {\n\t\t\t\treturn {\n\t\t\t\t\tslug: record.slug,\n\t\t\t\t\ttitle: record.title.rendered,\n\t\t\t\t\tdescription: record.description,\n\t\t\t\t};\n\t\t\t} ),\n\t];\n}\n\nfunction PreviewField( { item } ) {\n\tconst settings = usePatternSettings();\n\tconst [ backgroundColor = 'white' ] = useGlobalStyle( 'color.background' );\n\tconst blocks = useMemo( () => {\n\t\treturn parse( item.content.raw );\n\t}, [ item.content.raw ] );\n\n\tconst isEmpty = ! blocks?.length;\n\t// Wrap everything in a block editor provider to ensure 'styles' that are needed\n\t// for the previews are synced between the site editor store and the block editor store.\n\t// Additionally we need to have the `__experimentalBlockPatterns` setting in order to\n\t// render patterns inside the previews.\n\t// TODO: Same approach is used in the patterns list and it becomes obvious that some of\n\t// the block editor settings are needed in context where we don't have the block editor.\n\t// Explore how we can solve this in a better way.\n\treturn (\n\t\t<EditorProvider post={ item } settings={ settings }>\n\t\t\t<div\n\t\t\t\tclassName=\"page-templates-preview-field\"\n\t\t\t\tstyle={ { backgroundColor } }\n\t\t\t>\n\t\t\t\t{ isEmpty && __( 'Empty template' ) }\n\t\t\t\t{ ! isEmpty && (\n\t\t\t\t\t<BlockPreview.Async>\n\t\t\t\t\t\t<BlockPreview blocks={ blocks } />\n\t\t\t\t\t</BlockPreview.Async>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t</EditorProvider>\n\t);\n}\n\nexport const previewField = {\n\tlabel: __( 'Preview' ),\n\tid: 'preview',\n\trender: PreviewField,\n\tenableSorting: false,\n};\n\nexport const descriptionField = {\n\tlabel: __( 'Description' ),\n\tid: 'description',\n\trender: function RenderDescription( { item } ) {\n\t\tconst defaultTemplateTypes = useAllDefaultTemplateTypes();\n\t\tconst defaultTemplateType = defaultTemplateTypes.find(\n\t\t\t( type ) => type.slug === item.slug\n\t\t);\n\t\treturn item.description\n\t\t\t? decodeEntities( item.description )\n\t\t\t: defaultTemplateType?.description;\n\t},\n\tenableSorting: false,\n\tenableGlobalSearch: true,\n};\n\nfunction AuthorField( { item } ) {\n\tconst [ isImageLoaded, setIsImageLoaded ] = useState( false );\n\tconst { text, icon, imageUrl } = useAddedBy( item.type, item.id );\n\n\treturn (\n\t\t<HStack alignment=\"left\" spacing={ 0 }>\n\t\t\t{ imageUrl && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={ clsx( 'page-templates-author-field__avatar', {\n\t\t\t\t\t\t'is-loaded': isImageLoaded,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t<img\n\t\t\t\t\t\tonLoad={ () => setIsImageLoaded( true ) }\n\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\tsrc={ imageUrl }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t{ ! imageUrl && (\n\t\t\t\t<div className=\"page-templates-author-field__icon\">\n\t\t\t\t\t<Icon icon={ icon } />\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<span className=\"page-templates-author-field__name\">{ text }</span>\n\t\t</HStack>\n\t);\n}\n\nexport const authorField = {\n\tlabel: __( 'Author' ),\n\tid: 'author',\n\tgetValue: ( { item } ) => item.author_text ?? item.author,\n\trender: AuthorField,\n};\n\nexport const activeField = {\n\tlabel: __( 'Status' ),\n\tid: 'active',\n\ttype: 'boolean',\n\tgetValue: ( { item } ) => item._isActive,\n\trender: function Render( { item } ) {\n\t\tconst activeLabel = item._isCustom\n\t\t\t? __( 'Active when used' )\n\t\t\t: __( 'Active' );\n\t\tconst activeIntent = item._isCustom ? 'info' : 'success';\n\t\tconst isActive = item._isActive;\n\t\treturn (\n\t\t\t<Badge intent={ isActive ? activeIntent : 'default' }>\n\t\t\t\t{ isActive ? activeLabel : __( 'Inactive' ) }\n\t\t\t</Badge>\n\t\t);\n\t},\n};\n\nexport const useThemeField = () => {\n\tconst activeTheme = useSelect( ( select ) =>\n\t\tselect( coreStore ).getCurrentTheme()\n\t);\n\treturn useMemo(\n\t\t() => ( {\n\t\t\tlabel: __( 'Compatible Theme' ),\n\t\t\tid: 'theme',\n\t\t\tgetValue: ( { item } ) => item.theme,\n\t\t\trender: function Render( { item } ) {\n\t\t\t\tif ( item.theme === activeTheme.stylesheet ) {\n\t\t\t\t\treturn <Badge intent=\"success\">{ item.theme }</Badge>;\n\t\t\t\t}\n\t\t\t\treturn <Badge intent=\"error\">{ item.theme }</Badge>;\n\t\t\t},\n\t\t} ),\n\t\t[ activeTheme ]\n\t);\n};\n\nexport const slugField = {\n\tlabel: __( 'Template Type' ),\n\tid: 'slug',\n\tgetValue: ( { item } ) => item.slug,\n\trender: function Render( { item } ) {\n\t\tconst defaultTemplateTypes = useAllDefaultTemplateTypes();\n\t\tconst defaultTemplateType = defaultTemplateTypes.find(\n\t\t\t( type ) => type.slug === item.slug\n\t\t);\n\t\treturn defaultTemplateType?.title || _x( 'Custom', 'template type' );\n\t},\n};\n"],
5
+ "mappings": "AA6EG,SAOG,KAPH;AA1EH,OAAO,UAAU;AAKjB;AAAA,EACC;AAAA,EACA,wBAAwB;AAAA,EACxB,eAAe;AAAA,OACT;AACP,SAAS,IAAI,UAAU;AACvB,SAAS,UAAU,eAAe;AAClC,SAAS,sBAAsB;AAC/B,SAAS,aAAa;AACtB;AAAA,EACC;AAAA,EACA,eAAe;AAAA,OACT;AACP,SAAS,sBAAsB;AAC/B;AAAA,EACC,eAAe;AAAA,EACf,SAAS;AAAA,OACH;AACP,SAAS,iBAAiB;AAK1B,SAAS,kBAAkB;AAC3B,SAAS,+BAA+B;AACxC,OAAO,wBAAwB;AAC/B,SAAS,cAAc;AAEvB,MAAM,EAAE,eAAe,IAAI,OAAQ,sBAAuB;AAC1D,MAAM,EAAE,MAAM,IAAI,OAAQ,qBAAsB;AAChD,MAAM,EAAE,gCAAgC,IAAI,OAAQ,eAAgB;AAEpE,SAAS,6BAA6B;AACrC,QAAM,uBAAuB,wBAAwB;AACrD,QAAM,EAAE,SAAS,cAAc,IAAI;AAAA,IAClC;AAAA,IACA;AAAA,EACD;AACA,SAAO;AAAA,IACN,GAAG;AAAA,IACH,GAAG,eACA,OAAQ,CAAE,WAAY,CAAE,OAAO,SAAU,EAC1C,IAAK,CAAE,WAAY;AACnB,aAAO;AAAA,QACN,MAAM,OAAO;AAAA,QACb,OAAO,OAAO,MAAM;AAAA,QACpB,aAAa,OAAO;AAAA,MACrB;AAAA,IACD,CAAE;AAAA,EACJ;AACD;AAEA,SAAS,aAAc,EAAE,KAAK,GAAI;AACjC,QAAM,WAAW,mBAAmB;AACpC,QAAM,CAAE,kBAAkB,OAAQ,IAAI,eAAgB,kBAAmB;AACzE,QAAM,SAAS,QAAS,MAAM;AAC7B,WAAO,MAAO,KAAK,QAAQ,GAAI;AAAA,EAChC,GAAG,CAAE,KAAK,QAAQ,GAAI,CAAE;AAExB,QAAM,UAAU,CAAE,QAAQ;AAQ1B,SACC,oBAAC,kBAAe,MAAO,MAAO,UAC7B;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,OAAQ,EAAE,gBAAgB;AAAA,MAExB;AAAA,mBAAW,GAAI,gBAAiB;AAAA,QAChC,CAAE,WACH,oBAAC,aAAa,OAAb,EACA,8BAAC,gBAAa,QAAkB,GACjC;AAAA;AAAA;AAAA,EAEF,GACD;AAEF;AAEO,MAAM,eAAe;AAAA,EAC3B,OAAO,GAAI,SAAU;AAAA,EACrB,IAAI;AAAA,EACJ,QAAQ;AAAA,EACR,eAAe;AAChB;AAEO,MAAM,mBAAmB;AAAA,EAC/B,OAAO,GAAI,aAAc;AAAA,EACzB,IAAI;AAAA,EACJ,QAAQ,SAAS,kBAAmB,EAAE,KAAK,GAAI;AAC9C,UAAM,uBAAuB,2BAA2B;AACxD,UAAM,sBAAsB,qBAAqB;AAAA,MAChD,CAAE,SAAU,KAAK,SAAS,KAAK;AAAA,IAChC;AACA,WAAO,KAAK,cACT,eAAgB,KAAK,WAAY,IACjC,qBAAqB;AAAA,EACzB;AAAA,EACA,eAAe;AAAA,EACf,oBAAoB;AACrB;AAEA,SAAS,YAAa,EAAE,KAAK,GAAI;AAChC,QAAM,CAAE,eAAe,gBAAiB,IAAI,SAAU,KAAM;AAC5D,QAAM,EAAE,MAAM,MAAM,SAAS,IAAI,WAAY,KAAK,MAAM,KAAK,EAAG;AAEhE,SACC,qBAAC,UAAO,WAAU,QAAO,SAAU,GAChC;AAAA,gBACD;AAAA,MAAC;AAAA;AAAA,QACA,WAAY,KAAM,uCAAuC;AAAA,UACxD,aAAa;AAAA,QACd,CAAE;AAAA,QAEF;AAAA,UAAC;AAAA;AAAA,YACA,QAAS,MAAM,iBAAkB,IAAK;AAAA,YACtC,KAAI;AAAA,YACJ,KAAM;AAAA;AAAA,QACP;AAAA;AAAA,IACD;AAAA,IAEC,CAAE,YACH,oBAAC,SAAI,WAAU,qCACd,8BAAC,QAAK,MAAc,GACrB;AAAA,IAED,oBAAC,UAAK,WAAU,qCAAsC,gBAAM;AAAA,KAC7D;AAEF;AAEO,MAAM,cAAc;AAAA,EAC1B,OAAO,GAAI,QAAS;AAAA,EACpB,IAAI;AAAA,EACJ,UAAU,CAAE,EAAE,KAAK,MAAO,KAAK,eAAe,KAAK;AAAA,EACnD,QAAQ;AACT;AAEO,MAAM,cAAc;AAAA,EAC1B,OAAO,GAAI,QAAS;AAAA,EACpB,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,UAAU,CAAE,EAAE,KAAK,MAAO,KAAK;AAAA,EAC/B,QAAQ,SAAS,OAAQ,EAAE,KAAK,GAAI;AACnC,UAAM,cAAc,KAAK,YACtB,GAAI,kBAAmB,IACvB,GAAI,QAAS;AAChB,UAAM,eAAe,KAAK,YAAY,SAAS;AAC/C,UAAM,WAAW,KAAK;AACtB,WACC,oBAAC,SAAM,QAAS,WAAW,eAAe,WACvC,qBAAW,cAAc,GAAI,UAAW,GAC3C;AAAA,EAEF;AACD;AAEO,MAAM,gBAAgB,MAAM;AAClC,QAAM,cAAc;AAAA,IAAW,CAAE,WAChC,OAAQ,SAAU,EAAE,gBAAgB;AAAA,EACrC;AACA,SAAO;AAAA,IACN,OAAQ;AAAA,MACP,OAAO,GAAI,kBAAmB;AAAA,MAC9B,IAAI;AAAA,MACJ,UAAU,CAAE,EAAE,KAAK,MAAO,KAAK;AAAA,MAC/B,QAAQ,SAASA,QAAQ,EAAE,KAAK,GAAI;AACnC,YAAK,KAAK,UAAU,YAAY,YAAa;AAC5C,iBAAO,oBAAC,SAAM,QAAO,WAAY,eAAK,OAAO;AAAA,QAC9C;AACA,eAAO,oBAAC,SAAM,QAAO,SAAU,eAAK,OAAO;AAAA,MAC5C;AAAA,IACD;AAAA,IACA,CAAE,WAAY;AAAA,EACf;AACD;AAEO,MAAM,YAAY;AAAA,EACxB,OAAO,GAAI,eAAgB;AAAA,EAC3B,IAAI;AAAA,EACJ,UAAU,CAAE,EAAE,KAAK,MAAO,KAAK;AAAA,EAC/B,QAAQ,SAASA,QAAQ,EAAE,KAAK,GAAI;AACnC,UAAM,uBAAuB,2BAA2B;AACxD,UAAM,sBAAsB,qBAAqB;AAAA,MAChD,CAAE,SAAU,KAAK,SAAS,KAAK;AAAA,IAChC;AACA,WAAO,qBAAqB,SAAS,GAAI,UAAU,eAAgB;AAAA,EACpE;AACD;",
6
6
  "names": ["Render"]
7
7
  }
@@ -74,65 +74,75 @@ function PageTemplates() {
74
74
  per_page: -1,
75
75
  combinedTemplates: false
76
76
  });
77
- const { records: staticRecords, isResolving: isLoadingStaticData } = useEntityRecordsWithPermissions("postType", "wp_registered_template", {
77
+ const { records: staticRecords, isResolving: isLoadingStaticData } = useEntityRecordsWithPermissions("root", "registeredTemplate", {
78
+ // This should not be needed, the endpoint returns all registered
79
+ // templates, but it's not possible right now to turn off pagination
80
+ // for entity configs.
78
81
  per_page: -1
79
82
  });
80
83
  const activeTemplates = useMemo(() => {
81
- const _active = [...staticRecords].filter(
82
- (record) => !record.is_custom
83
- );
84
+ const _active = [...staticRecords];
84
85
  if (activeTemplatesOption) {
85
86
  for (const activeSlug in activeTemplatesOption) {
86
87
  const activeId = activeTemplatesOption[activeSlug];
87
- if (activeId === false) {
88
+ const template = userRecords.find(
89
+ (userRecord) => userRecord.id === activeId && userRecord.theme === activeTheme.stylesheet
90
+ );
91
+ if (template) {
88
92
  const index = _active.findIndex(
89
- (template) => template.slug === activeSlug
93
+ ({ slug }) => slug === template.slug
90
94
  );
91
95
  if (index !== -1) {
92
- _active.splice(index, 1);
93
- }
94
- } else {
95
- const template = userRecords.find(
96
- (userRecord) => userRecord.id === activeId && userRecord.theme === activeTheme.stylesheet
97
- );
98
- if (template) {
99
- const index = _active.findIndex(
100
- ({ slug }) => slug === template.slug
101
- );
102
- if (index !== -1) {
103
- _active[index] = template;
104
- } else {
105
- _active.push(template);
106
- }
96
+ _active[index] = template;
97
+ } else {
98
+ _active.push(template);
107
99
  }
108
100
  }
109
101
  }
110
102
  }
111
103
  return _active;
112
104
  }, [userRecords, staticRecords, activeTemplatesOption, activeTheme]);
113
- let _records;
114
105
  let isLoadingData;
115
106
  if (activeView === "active") {
116
- _records = activeTemplates;
117
107
  isLoadingData = isLoadingUserRecords || isLoadingStaticData;
118
108
  } else if (activeView === "user") {
119
- _records = userRecords;
120
109
  isLoadingData = isLoadingUserRecords;
121
110
  } else {
122
- _records = staticRecords;
123
111
  isLoadingData = isLoadingStaticData;
124
112
  }
125
113
  const records = useMemo(() => {
114
+ function isCustom(record) {
115
+ return record.is_custom ?? // For user templates it's custom if the is_wp_suggestion meta
116
+ // field is not set and the slug is not found in the default
117
+ // template types.
118
+ (!record.meta?.is_wp_suggestion && !defaultTemplateTypes.some(
119
+ (type) => type.slug === record.slug
120
+ ));
121
+ }
122
+ let _records;
123
+ if (activeView === "active") {
124
+ _records = activeTemplates.filter(
125
+ (record) => !isCustom(record)
126
+ );
127
+ } else if (activeView === "user") {
128
+ _records = userRecords;
129
+ } else {
130
+ _records = staticRecords;
131
+ }
126
132
  return _records.map((record) => ({
127
133
  ...record,
128
- _isActive: activeTemplates.find(
134
+ _isActive: activeTemplates.some(
129
135
  (template) => template.id === record.id
130
136
  ),
131
- _isCustom: record.is_custom || !record.meta?.is_wp_suggestion && !defaultTemplateTypes.find(
132
- (type) => type.slug === record.slug
133
- )
137
+ _isCustom: isCustom(record)
134
138
  }));
135
- }, [_records, activeTemplates, defaultTemplateTypes]);
139
+ }, [
140
+ activeTemplates,
141
+ defaultTemplateTypes,
142
+ userRecords,
143
+ staticRecords,
144
+ activeView
145
+ ]);
136
146
  const users = useSelect(
137
147
  (select) => {
138
148
  const { getUser } = select(coreStore);
@@ -281,7 +291,7 @@ function PageTemplates() {
281
291
  onChangeSelection,
282
292
  isItemClickable: () => true,
283
293
  onClickItem: (item) => {
284
- if (item.type === "wp_registered_template") {
294
+ if (typeof item.id === "string") {
285
295
  setSelectedRegisteredTemplate(item);
286
296
  } else {
287
297
  history.navigate(