{
  "version": 3,
  "sources": ["../src/global-styles-ui.tsx"],
  "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { Navigator, useNavigator } from '@wordpress/components';\nimport { getBlockTypes, store as blocksStore } from '@wordpress/blocks';\nimport { useSelect } from '@wordpress/data';\n// @ts-expect-error: Not typed yet.\nimport { BlockEditorProvider } from '@wordpress/block-editor';\nimport { useMemo, useEffect, Fragment } from '@wordpress/element';\nimport { usePrevious } from '@wordpress/compose';\nimport {\n\tgenerateGlobalStyles,\n\tmergeGlobalStyles,\n} from '@wordpress/global-styles-engine';\nimport type { GlobalStylesConfig } from '@wordpress/global-styles-engine';\n\n/**\n * Internal dependencies\n */\nimport { GlobalStylesProvider } from './provider';\nimport ScreenRoot from './screen-root';\nimport ScreenBlockList from './screen-block-list';\nimport ScreenBlock from './screen-block';\nimport ScreenTypography from './screen-typography';\nimport ScreenTypographyElement from './screen-typography-element';\nimport ScreenColors from './screen-colors';\nimport ScreenColorPalette from './screen-color-palette';\nimport ScreenBackground from './screen-background';\nimport { ScreenShadows, ScreenShadowsEdit } from './screen-shadows';\nimport ScreenLayout from './screen-layout';\nimport ScreenStyleVariations from './screen-style-variations';\nimport ScreenCSS from './screen-css';\nimport ScreenRevisions from './screen-revisions';\nimport FontSizes from './font-sizes/font-sizes';\nimport FontSize from './font-sizes/font-size';\ninterface BlockStylesNavigationScreensProps {\n\tparentMenu: string;\n\tblockStyles: any[];\n\tblockName: string;\n}\n\nfunction BlockStylesNavigationScreens( {\n\tparentMenu,\n\tblockStyles,\n\tblockName,\n}: BlockStylesNavigationScreensProps ) {\n\treturn (\n\t\t<>\n\t\t\t{ blockStyles.map( ( style, index ) => (\n\t\t\t\t<Navigator.Screen\n\t\t\t\t\tkey={ index }\n\t\t\t\t\tpath={ parentMenu + '/variations/' + style.name }\n\t\t\t\t>\n\t\t\t\t\t<ScreenBlock name={ blockName } variation={ style.name } />\n\t\t\t\t</Navigator.Screen>\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n\ninterface ContextScreensProps {\n\tname?: string;\n\tparentMenu?: string;\n}\n\ninterface GlobalStylesNavigationScreenProps {\n\tpath: string;\n\tchildren: React.ReactNode;\n}\n\nfunction ContextScreens( { name, parentMenu = '' }: ContextScreensProps ) {\n\tconst blockStyleVariations = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! name ) {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tconst { getBlockStyles } = select( blocksStore );\n\t\t\treturn getBlockStyles( name );\n\t\t},\n\t\t[ name ]\n\t);\n\n\tif ( ! blockStyleVariations?.length ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<BlockStylesNavigationScreens\n\t\t\tparentMenu={ parentMenu }\n\t\t\tblockStyles={ blockStyleVariations }\n\t\t\tblockName={ name || '' }\n\t\t/>\n\t);\n}\n\ninterface GlobalStylesUIProps {\n\t/** User global styles object (what gets edited) */\n\tvalue: GlobalStylesConfig;\n\t/** Base global styles object (theme default) */\n\tbaseValue: GlobalStylesConfig;\n\t/** Callback when global styles change */\n\tonChange: ( newValue: GlobalStylesConfig ) => void;\n\t/** Current navigation path (optional) */\n\tpath?: string;\n\t/** Callback when navigation path changes (optional) */\n\tonPathChange?: ( path: string ) => void;\n\t/** Whether font library is enabled (optional) */\n\tfontLibraryEnabled?: boolean;\n\t/** Server CSS styles for BlockEditorProvider (optional) */\n\tserverCSS?: { isGlobalStyles?: boolean }[];\n\t/** Server settings for BlockEditorProvider (optional) */\n\tserverSettings?: { __unstableResolvedAssets: Record< string, unknown > };\n}\n\nexport function GlobalStylesUI( {\n\tvalue,\n\tbaseValue,\n\tonChange,\n\tpath,\n\tonPathChange,\n\tfontLibraryEnabled = false,\n\tserverCSS,\n\tserverSettings,\n}: GlobalStylesUIProps ) {\n\tconst blocks = getBlockTypes();\n\n\t// Compute merged value for CSS generation\n\tconst mergedValue = useMemo( () => {\n\t\treturn mergeGlobalStyles( baseValue, value );\n\t}, [ baseValue, value ] );\n\n\tconst [ globalStylesCSS, globalSettings ] = generateGlobalStyles(\n\t\tmergedValue,\n\t\t[],\n\t\t{\n\t\t\tstyleOptions: { variationStyles: true },\n\t\t}\n\t);\n\tconst styles = useMemo(\n\t\t() => [ ...( serverCSS ?? [] ), ...( globalStylesCSS ?? [] ) ],\n\t\t[ serverCSS, globalStylesCSS ]\n\t);\n\n\tconst settings = useMemo( () => {\n\t\treturn {\n\t\t\t...serverSettings,\n\t\t\t__experimentalFeatures: globalSettings,\n\t\t\tstyles,\n\t\t};\n\t}, [ globalSettings, serverSettings, styles ] );\n\n\treturn (\n\t\t<GlobalStylesProvider\n\t\t\tvalue={ value }\n\t\t\tbaseValue={ baseValue }\n\t\t\tonChange={ onChange }\n\t\t\tfontLibraryEnabled={ fontLibraryEnabled }\n\t\t>\n\t\t\t<BlockEditorProvider settings={ settings }>\n\t\t\t\t<Navigator\n\t\t\t\t\tclassName=\"global-styles-ui-sidebar__navigator-provider\"\n\t\t\t\t\tinitialPath={ path || '/' }\n\t\t\t\t>\n\t\t\t\t\t{ ( path || onPathChange ) && (\n\t\t\t\t\t\t<PathSynchronizer\n\t\t\t\t\t\t\tpath={ path }\n\t\t\t\t\t\t\tonPathChange={ onPathChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/\">\n\t\t\t\t\t\t<ScreenRoot />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/colors\">\n\t\t\t\t\t\t<ScreenColors />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography\">\n\t\t\t\t\t\t<ScreenTypography />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/font-sizes\">\n\t\t\t\t\t\t<FontSizes />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/font-sizes/:origin/:slug\">\n\t\t\t\t\t\t<FontSize />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/layout\">\n\t\t\t\t\t\t<ScreenLayout />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/colors/palette\">\n\t\t\t\t\t\t<ScreenColorPalette />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/variations\">\n\t\t\t\t\t\t<ScreenStyleVariations />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/css\">\n\t\t\t\t\t\t<ScreenCSS />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/revisions/:revisionId?\">\n\t\t\t\t\t\t<ScreenRevisions />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/shadows\">\n\t\t\t\t\t\t<ScreenShadows />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/shadows/edit/:category/:slug\">\n\t\t\t\t\t\t<ScreenShadowsEdit />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/background\">\n\t\t\t\t\t\t<ScreenBackground />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/text\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"text\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/link\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"link\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/heading\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"heading\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/caption\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"caption\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/typography/button\">\n\t\t\t\t\t\t<ScreenTypographyElement element=\"button\" />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t<GlobalStylesNavigationScreen path=\"/blocks\">\n\t\t\t\t\t\t<ScreenBlockList />\n\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t{ blocks.map( ( block ) => (\n\t\t\t\t\t\t<Fragment key={ block.name }>\n\t\t\t\t\t\t\t<GlobalStylesNavigationScreen\n\t\t\t\t\t\t\t\tpath={\n\t\t\t\t\t\t\t\t\t'/blocks/' +\n\t\t\t\t\t\t\t\t\tencodeURIComponent( block.name )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ScreenBlock name={ block.name } />\n\t\t\t\t\t\t\t</GlobalStylesNavigationScreen>\n\t\t\t\t\t\t\t<ContextScreens\n\t\t\t\t\t\t\t\tname={ block.name }\n\t\t\t\t\t\t\t\tparentMenu={\n\t\t\t\t\t\t\t\t\t'/blocks/' +\n\t\t\t\t\t\t\t\t\tencodeURIComponent( block.name )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t) ) }\n\t\t\t\t</Navigator>\n\t\t\t</BlockEditorProvider>\n\t\t</GlobalStylesProvider>\n\t);\n}\n\nfunction GlobalStylesNavigationScreen( {\n\tpath,\n\tchildren,\n}: GlobalStylesNavigationScreenProps ) {\n\treturn (\n\t\t<Navigator.Screen\n\t\t\tclassName=\"global-styles-ui-sidebar__navigator-screen\"\n\t\t\tpath={ path }\n\t\t>\n\t\t\t{ children }\n\t\t</Navigator.Screen>\n\t);\n}\n\n/*\n * Component that handles path synchronization between external path prop and Navigator's internal path.\n */\nfunction PathSynchronizer( {\n\tpath,\n\tonPathChange,\n}: {\n\tpath?: string;\n\tonPathChange?: ( path: string ) => void;\n} ) {\n\tconst navigator = useNavigator();\n\tconst { path: childPath } = navigator.location;\n\tconst previousParentPath = usePrevious( path );\n\tconst previousChildPath = usePrevious( childPath );\n\n\tuseEffect( () => {\n\t\t// Only sync when parent and child paths are out of sync\n\t\tif ( path && path !== childPath ) {\n\t\t\t// If parent path changed, update the Navigator\n\t\t\tif ( path !== previousParentPath ) {\n\t\t\t\tnavigator.goTo( path );\n\t\t\t}\n\t\t\t// If child path changed, notify parent via onPathChange\n\t\t\telse if ( childPath !== previousChildPath && onPathChange ) {\n\t\t\t\tonPathChange( childPath ?? '/' );\n\t\t\t}\n\t\t}\n\t}, [\n\t\tonPathChange,\n\t\tpath,\n\t\tpreviousChildPath,\n\t\tpreviousParentPath,\n\t\tchildPath,\n\t\tnavigator,\n\t] );\n\n\t// This component only handles synchronization logic. It doesn't render anything.\n\t// We use it to run the effect inside the Navigator context.\n\treturn null;\n}\n"],
  "mappings": "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",
  "names": ["ScreenBlock", "blocksStore", "ScreenRoot", "ScreenColors", "ScreenTypography", "FontSizes", "FontSize", "ScreenLayout", "ScreenColorPalette", "ScreenStyleVariations", "ScreenCSS", "ScreenRevisions", "ScreenBackground", "ScreenTypographyElement", "ScreenBlockList"]
}
