@elementor/editor-default-styles 4.4.0-1107 → 4.4.0-1109

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.
package/dist/index.js CHANGED
@@ -609,10 +609,9 @@ var import_editor_editing_panel3 = require("@elementor/editor-editing-panel");
609
609
  var import_editor_styles_repository3 = require("@elementor/editor-styles-repository");
610
610
  var import_store12 = require("@elementor/store");
611
611
 
612
- // src/components/populate-store.tsx
612
+ // src/components/global-styles-import-listener.tsx
613
613
  var import_react3 = require("react");
614
- var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
615
- var import_store10 = require("@elementor/store");
614
+ var import_editor_canvas = require("@elementor/editor-canvas");
616
615
 
617
616
  // src/load-default-styles.ts
618
617
  var import_store8 = require("@elementor/store");
@@ -629,10 +628,27 @@ async function loadDefaultStyles() {
629
628
  }
630
629
  }
631
630
 
631
+ // src/components/global-styles-import-listener.tsx
632
+ function GlobalStylesImportListener() {
633
+ (0, import_react3.useEffect)(() => {
634
+ const handleGlobalStylesImported = () => {
635
+ void loadDefaultStyles();
636
+ };
637
+ window.addEventListener(import_editor_canvas.GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
638
+ return () => {
639
+ window.removeEventListener(import_editor_canvas.GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
640
+ };
641
+ }, []);
642
+ return null;
643
+ }
644
+
632
645
  // src/components/populate-store.tsx
646
+ var import_react4 = require("react");
647
+ var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
648
+ var import_store10 = require("@elementor/store");
633
649
  var V2_PANEL_ROUTE = "panel/v2";
634
650
  function PopulateStore() {
635
- (0, import_react3.useEffect)(() => {
651
+ (0, import_react4.useEffect)(() => {
636
652
  void loadDefaultStyles();
637
653
  (0, import_editor_v1_adapters.registerDataHook)("after", "editor/documents/attach-preview", async () => {
638
654
  if (selectIsDirty((0, import_store10.__getState)())) {
@@ -661,6 +677,10 @@ function init() {
661
677
  }
662
678
  });
663
679
  import_editor_styles_repository3.stylesRepository.register(defaultStylesStylesProvider);
680
+ (0, import_editor.injectIntoLogic)({
681
+ id: "default-styles-import-listener",
682
+ component: GlobalStylesImportListener
683
+ });
664
684
  (0, import_editor.injectIntoLogic)({
665
685
  id: "default-styles-populate-store",
666
686
  component: PopulateStore
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/default-styles-tab-embedded.tsx","../src/allowed-tags.ts","../src/default-styles-provider.ts","../src/capabilities.ts","../src/store.ts","../src/save-default-styles.ts","../src/api.ts","../src/components/tag-chip.tsx","../src/components/tag-state-menu.tsx","../src/init.ts","../src/components/populate-store.tsx","../src/load-default-styles.ts"],"sourcesContent":["export { DefaultStylesTabEmbedded } from './components/default-styles-tab-embedded';\nexport { init } from './init';\n","import * as React from 'react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n\tControlActionsProvider,\n\tControlReplacementsProvider,\n\tgetControlReplacements,\n} from '@elementor/editor-controls';\nimport {\n\tClassesPropProvider,\n\tCreatableAutocomplete,\n\tElementProvider,\n\ttype Option,\n\tSectionsList,\n\tStyleInheritanceProvider,\n\tStyleProvider,\n\tStyleSections,\n\tStyleTabSlot,\n} from '@elementor/editor-editing-panel';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { type StyleDefinitionID, type StyleDefinitionState } from '@elementor/editor-styles';\nimport { useUserStylesCapability } from '@elementor/editor-styles-repository';\nimport { SaveChangesDialog, ThemeProvider, useDialog } from '@elementor/editor-ui';\nimport { controlActionsMenu } from '@elementor/menus';\nimport { useMutation } from '@elementor/query';\nimport { getSessionStorageItem, SessionStorageProvider, setSessionStorageItem } from '@elementor/session';\nimport { __dispatch as dispatch, __useSelector as useSelector } from '@elementor/store';\nimport {\n\ttype AutocompleteChangeReason,\n\tBox,\n\tButton,\n\tErrorBoundary,\n\tFormControl,\n\tFormLabel,\n\tStack,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\ttype AllowedHtmlTag,\n\tgetAllowedDefaultStyleTags,\n\tgetDefaultActiveTag,\n\tisAllowedDefaultStyleTag,\n} from '../allowed-tags';\nimport { DEFAULT_STYLES_PROVIDER_KEY } from '../default-styles-provider';\nimport { saveDefaultStyles } from '../save-default-styles';\nimport { selectIsDirty, slice } from '../store';\nimport { TagChip } from './tag-chip';\n\nconst { useMenuItems } = controlActionsMenu;\n\nconst SHIM_ELEMENT_ID = 'default-styles-editor-shim';\nconst SHIM_CLASSES_PROP = '__default_styles_classes__';\nconst TAG_SELECTOR_ID = 'default-styles-tag-selector';\nconst LAST_ACTIVE_TAG_SESSION_PREFIX = 'default-styles';\nconst LAST_ACTIVE_TAG_SESSION_KEY = 'last-active-tag';\nconst LAST_ACTIVE_TAG_STORAGE_KEY = `${ LAST_ACTIVE_TAG_SESSION_PREFIX }/${ LAST_ACTIVE_TAG_SESSION_KEY }`;\n\nfunction readStoredActiveTag( allowedTags: AllowedHtmlTag[] ): AllowedHtmlTag {\n\tconst storedTag = getSessionStorageItem< AllowedHtmlTag >( LAST_ACTIVE_TAG_STORAGE_KEY );\n\n\tif ( storedTag && isAllowedDefaultStyleTag( storedTag, allowedTags ) ) {\n\t\treturn storedTag;\n\t}\n\n\treturn getDefaultActiveTag( allowedTags );\n}\n\nfunction toTagChip( tag: AllowedHtmlTag ): Option {\n\treturn { label: tag, value: tag, fixed: true };\n}\n\nconst shimElement: Element = {\n\tid: SHIM_ELEMENT_ID,\n\ttype: 'default-style',\n};\n\nconst shimElementType: ElementType = {\n\tkey: 'default-style',\n\tcontrols: [],\n\tpropsSchema: {},\n\ttitle: __( 'Default Style', 'elementor' ),\n};\n\nexport type DefaultStylesTabEmbeddedProps = {\n\tonRequestClose: () => void | Promise< void >;\n\tonExposeCloseAttempt?: ( attemptClose: ( () => void ) | null ) => void;\n};\n\nexport function DefaultStylesTabEmbedded( { onRequestClose, onExposeCloseAttempt }: DefaultStylesTabEmbeddedProps ) {\n\tconst allowedTags = useMemo( () => getAllowedDefaultStyleTags(), [] );\n\tconst tagOptions = useMemo< Option[] >(\n\t\t() => allowedTags.map( ( tag ) => ( { label: tag, value: tag } ) ),\n\t\t[ allowedTags ]\n\t);\n\tconst [ selectedTag, setSelectedTagState ] = useState< AllowedHtmlTag >( () => readStoredActiveTag( allowedTags ) );\n\tconst [ activeStyleState, setActiveStyleState ] = useState< StyleDefinitionState | null >( null );\n\tconst breakpoint = useActiveBreakpoint();\n\tconst menuItems = useMenuItems().default;\n\tconst controlReplacements = getControlReplacements();\n\tconst isDirty = useSelector( selectIsDirty );\n\tconst { mutateAsync: save, isPending: isSaving } = useSave();\n\tconst { open: openSaveChangesDialog, close: closeSaveChangesDialog, isOpen: isSaveChangesDialogOpen } = useDialog();\n\tconst { userCan } = useUserStylesCapability();\n\tconst canEdit = userCan( DEFAULT_STYLES_PROVIDER_KEY ).updateProps;\n\n\tconst setSelectedTag = ( tag: AllowedHtmlTag ) => {\n\t\tsetSelectedTagState( tag );\n\t\tsetSessionStorageItem( LAST_ACTIVE_TAG_STORAGE_KEY, tag );\n\t};\n\n\tconst handleClosePanel = useCallback( () => {\n\t\tif ( canEdit && isDirty ) {\n\t\t\topenSaveChangesDialog();\n\t\t\treturn;\n\t\t}\n\n\t\tvoid onRequestClose();\n\t}, [ canEdit, isDirty, onRequestClose, openSaveChangesDialog ] );\n\n\tuseEffect( () => {\n\t\tif ( ! onExposeCloseAttempt ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonExposeCloseAttempt( () => handleClosePanel() );\n\n\t\treturn () => onExposeCloseAttempt( null );\n\t}, [ onExposeCloseAttempt, handleClosePanel ] );\n\n\tusePreventUnload( canEdit && isDirty );\n\n\tconst handleTagSelect = ( _selected: Option[], reason: AutocompleteChangeReason, option: Option ) => {\n\t\tif ( reason !== 'selectOption' || ! option.value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetSelectedTag( option.value as AllowedHtmlTag );\n\t\tsetActiveStyleState( null );\n\t};\n\n\tconst resetAndClosePanel = () => {\n\t\tdispatch( slice.actions.reset() );\n\t\tcloseSaveChangesDialog();\n\t\tvoid onRequestClose();\n\t};\n\n\tconst handleSaveAndContinue = async () => {\n\t\ttry {\n\t\t\tawait save();\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tcloseSaveChangesDialog();\n\t\tvoid onRequestClose();\n\t};\n\n\treturn (\n\t\t<ErrorBoundary fallback={ null }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t<ControlReplacementsProvider replacements={ controlReplacements }>\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\tminHeight: 0,\n\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Box sx={ { flex: 1, minHeight: 0, overflow: 'auto' } }>\n\t\t\t\t\t\t\t\t<Stack sx={ { px: 2, pt: 1, gap: 1 } }>\n\t\t\t\t\t\t\t\t\t<FormControl fullWidth size=\"small\">\n\t\t\t\t\t\t\t\t\t\t<FormLabel htmlFor={ TAG_SELECTOR_ID } size=\"small\" sx={ { mb: 1 } }>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Tag', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<CreatableAutocomplete< Option >\n\t\t\t\t\t\t\t\t\t\t\tid={ TAG_SELECTOR_ID }\n\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={ __( 'Type tag name', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t\toptions={ tagOptions }\n\t\t\t\t\t\t\t\t\t\t\tselected={ [ toTagChip( selectedTag ) ] }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ handleTagSelect }\n\t\t\t\t\t\t\t\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tvalues.map( ( value, index ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TagChip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ value.value ?? value.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchipProps={ getTagProps( { index } ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveState={ activeStyleState }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectState={ setActiveStyleState }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t<ElementProvider\n\t\t\t\t\t\t\t\t\telement={ shimElement }\n\t\t\t\t\t\t\t\t\telementType={ shimElementType }\n\t\t\t\t\t\t\t\t\tsettings={ {} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ClassesPropProvider prop={ SHIM_CLASSES_PROP }>\n\t\t\t\t\t\t\t\t\t\t<StyleProvider\n\t\t\t\t\t\t\t\t\t\t\tmeta={ {\n\t\t\t\t\t\t\t\t\t\t\t\tbreakpoint,\n\t\t\t\t\t\t\t\t\t\t\t\tstate: activeStyleState,\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tid={ selectedTag as StyleDefinitionID }\n\t\t\t\t\t\t\t\t\t\t\tsetId={ () => {} }\n\t\t\t\t\t\t\t\t\t\t\tsetMetaState={ setActiveStyleState }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<SessionStorageProvider prefix={ selectedTag }>\n\t\t\t\t\t\t\t\t\t\t\t\t<StyleInheritanceProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SectionsList>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StyleSections />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StyleTabSlot />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SectionsList>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: '150px',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</StyleInheritanceProvider>\n\t\t\t\t\t\t\t\t\t\t\t</SessionStorageProvider>\n\t\t\t\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t\t\t\t</ClassesPropProvider>\n\t\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t{ canEdit ? (\n\t\t\t\t\t\t\t\t<Box sx={ { flexShrink: 0, px: 2, py: 1.5 } }>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tcolor=\"global\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => void save() }\n\t\t\t\t\t\t\t\t\t\tdisabled={ ! isDirty }\n\t\t\t\t\t\t\t\t\t\tloading={ isSaving }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Save changes', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t) : null }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t</ControlActionsProvider>\n\n\t\t\t\t{ canEdit && isSaveChangesDialogOpen && (\n\t\t\t\t\t<SaveChangesDialog>\n\t\t\t\t\t\t<SaveChangesDialog.Title onClose={ closeSaveChangesDialog }>\n\t\t\t\t\t\t\t{ __( 'You have unsaved changes', 'elementor' ) }\n\t\t\t\t\t\t</SaveChangesDialog.Title>\n\t\t\t\t\t\t<SaveChangesDialog.Content>\n\t\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t\t{ __( 'You have unsaved changes in Default Styles.', 'elementor' ) }\n\t\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t\t{ __( 'To avoid losing your updates, save your changes before leaving.', 'elementor' ) }\n\t\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t\t</SaveChangesDialog.Content>\n\t\t\t\t\t\t<SaveChangesDialog.Actions\n\t\t\t\t\t\t\tactions={ {\n\t\t\t\t\t\t\t\tdiscard: {\n\t\t\t\t\t\t\t\t\tlabel: __( 'Discard', 'elementor' ),\n\t\t\t\t\t\t\t\t\taction: resetAndClosePanel,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconfirm: {\n\t\t\t\t\t\t\t\t\tlabel: __( 'Save & Continue', 'elementor' ),\n\t\t\t\t\t\t\t\t\taction: handleSaveAndContinue,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SaveChangesDialog>\n\t\t\t\t) }\n\t\t\t</ThemeProvider>\n\t\t</ErrorBoundary>\n\t);\n}\n\nfunction useSave() {\n\treturn useMutation( {\n\t\tmutationFn: () => saveDefaultStyles(),\n\t} );\n}\n\nfunction usePreventUnload( isDirty: boolean ) {\n\tuseEffect( () => {\n\t\tconst handleBeforeUnload = ( event: BeforeUnloadEvent ) => {\n\t\t\tif ( isDirty ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener( 'beforeunload', handleBeforeUnload );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'beforeunload', handleBeforeUnload );\n\t\t};\n\t}, [ isDirty ] );\n}\n","type ExtendedWindow = Window & {\n\telementor: {\n\t\tconfig: {\n\t\t\tatomic?: {\n\t\t\t\tdefault_styles?: {\n\t\t\t\t\tallowed_tags?: string[];\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n};\n\nconst getElementorConfig = () => ( window as unknown as ExtendedWindow ).elementor?.config ?? {};\n\nexport const getAllowedDefaultStyleTags = (): string[] => {\n\tconst tags = getElementorConfig().atomic?.default_styles?.allowed_tags;\n\n\tif ( ! tags?.length ) {\n\t\treturn [];\n\t}\n\n\treturn tags;\n};\n\nexport type AllowedHtmlTag = string;\n\nexport const getDefaultActiveTag = ( tags: string[] ): AllowedHtmlTag => {\n\tif ( tags.includes( 'h1' ) ) {\n\t\treturn 'h1';\n\t}\n\n\treturn tags[ 0 ] ?? '';\n};\n\nexport const isAllowedDefaultStyleTag = ( tag: string, tags = getAllowedDefaultStyleTags() ): tag is AllowedHtmlTag =>\n\ttags.includes( tag );\n","import { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\nimport { createStylesProvider } from '@elementor/editor-styles-repository';\nimport {\n\t__dispatch as dispatch,\n\t__getState as getState,\n\t__subscribeWithSelector as subscribeWithSelector,\n} from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { getAllowedDefaultStyleTags } from './allowed-tags';\nimport { getCapabilities } from './capabilities';\nimport { selectData, slice } from './store';\n\nexport const DEFAULT_STYLES_PROVIDER_KEY = 'default-styles';\nexport const DEFAULT_STYLES_CSS_NAME_PREFIX = 'e-default-';\n\nconst resolveCssName = ( id: StyleDefinitionID ) => `${ DEFAULT_STYLES_CSS_NAME_PREFIX }${ id }`;\n\nconst placeholderDefinition = ( id: StyleDefinitionID ): StyleDefinition => ( {\n\tid,\n\tlabel: id,\n\ttype: 'class',\n\tvariants: [],\n} );\n\nconst asClassDefinition = ( style: StyleDefinition ): StyleDefinition => ( {\n\t...style,\n\ttype: 'class',\n} );\n\nexport const defaultStylesStylesProvider = createStylesProvider( {\n\tkey: DEFAULT_STYLES_PROVIDER_KEY,\n\tpriority: 15,\n\tlabels: {\n\t\tsingular: __( 'tag', 'elementor' ),\n\t\tplural: __( 'tags', 'elementor' ),\n\t},\n\tsubscribe: ( cb ) => subscribeWithStates( cb ),\n\tcapabilities: getCapabilities(),\n\tactions: {\n\t\tall: () =>\n\t\t\tgetAllowedDefaultStyleTags().map( ( tag ) => {\n\t\t\t\tconst style = selectData( getState() )[ tag ];\n\n\t\t\t\treturn style ? asClassDefinition( style ) : placeholderDefinition( tag );\n\t\t\t} ),\n\t\tget: ( id ) => {\n\t\t\tconst style = selectData( getState() )[ id ];\n\n\t\t\treturn style ? asClassDefinition( style ) : placeholderDefinition( id );\n\t\t},\n\t\tresolveCssName,\n\t\tupdate: ( payload ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.update( {\n\t\t\t\t\tstyle: payload,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tdelete: ( id ) => {\n\t\t\tdispatch( slice.actions.deleteTag( id ) );\n\t\t},\n\t\tupdateProps: ( args ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.updateProps( {\n\t\t\t\t\tid: args.id,\n\t\t\t\t\tmeta: args.meta,\n\t\t\t\t\tprops: args.props,\n\t\t\t\t\tmode: args.mode,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tupdateCustomCss: ( args ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.updateProps( {\n\t\t\t\t\tid: args.id,\n\t\t\t\t\tmeta: args.meta,\n\t\t\t\t\tcustom_css: args.custom_css,\n\t\t\t\t\tprops: {},\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t},\n} );\n\nconst subscribeWithStates = (\n\tcb: ( previous: Record< string, StyleDefinition >, current: Record< string, StyleDefinition > ) => void\n) => {\n\tlet previousState = selectData( getState() );\n\n\treturn subscribeWithSelector(\n\t\t( state ) => selectData( state ),\n\t\t( currentState ) => {\n\t\t\tcb( previousState, currentState );\n\t\t\tpreviousState = currentState;\n\t\t}\n\t);\n};\n","import { type UserCapabilities } from '@elementor/editor-styles-repository';\n\nexport const UPDATE_DEFAULT_STYLES_CAPABILITY_KEY = 'manage_options';\n\nexport const getCapabilities = (): UserCapabilities => {\n\treturn {\n\t\tupdate: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tcreate: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tdelete: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tupdateProps: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t};\n};\n","import { type Props } from '@elementor/editor-props';\nimport {\n\ttype CustomCss,\n\tgetVariantByMeta,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { type UpdateActionPayload } from '@elementor/editor-styles-repository';\nimport {\n\t__createSelector as createSelector,\n\t__createSlice as createSlice,\n\ttype PayloadAction,\n\ttype SliceState,\n} from '@elementor/store';\n\ntype DefaultStylesState = {\n\tdata: Record< StyleDefinitionID, StyleDefinition >;\n\tinitialData: Record< StyleDefinitionID, StyleDefinition >;\n\tisDirty: boolean;\n};\n\nconst initialState: DefaultStylesState = {\n\tdata: {},\n\tinitialData: {},\n\tisDirty: false,\n};\n\nexport type StateWithDefaultStyles = SliceState< typeof slice >;\n\nconst SLICE_NAME = 'defaultStyles';\n\nexport const slice = createSlice( {\n\tname: SLICE_NAME,\n\tinitialState,\n\treducers: {\n\t\tload(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload: { data },\n\t\t\t}: PayloadAction< {\n\t\t\t\tdata: Record< StyleDefinitionID, StyleDefinition >;\n\t\t\t} >\n\t\t) {\n\t\t\tconst normalizedData = Array.isArray( data ) ? {} : data;\n\n\t\t\tstate.initialData = structuredClone( normalizedData );\n\t\t\tstate.data = structuredClone( normalizedData );\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tupdate( state, { payload }: PayloadAction< { style: UpdateActionPayload } > ) {\n\t\t\tstate.data[ payload.style.id ] = {\n\t\t\t\t...state.data[ payload.style.id ],\n\t\t\t\t...payload.style,\n\t\t\t} as StyleDefinition;\n\t\t\tstate.isDirty = true;\n\t\t},\n\n\t\tupdateProps(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload,\n\t\t\t}: PayloadAction< {\n\t\t\t\tid: StyleDefinitionID;\n\t\t\t\tmeta: StyleDefinitionVariant[ 'meta' ];\n\t\t\t\tprops: Props;\n\t\t\t\tcustom_css?: CustomCss | null;\n\t\t\t\tmode?: 'merge' | 'replace';\n\t\t\t} >\n\t\t) {\n\t\t\tconst style = state.data[ payload.id ] ?? {\n\t\t\t\tid: payload.id,\n\t\t\t\tlabel: payload.id,\n\t\t\t\ttype: 'class' as const,\n\t\t\t\tvariants: [],\n\t\t\t};\n\n\t\t\tconst variant = getVariantByMeta( style, payload.meta );\n\t\t\tlet customCss = ( 'custom_css' in payload ? payload.custom_css : variant?.custom_css ) ?? null;\n\t\t\tcustomCss = customCss?.raw ? customCss : null;\n\n\t\t\tif ( variant ) {\n\t\t\t\tconst payloadProps = JSON.parse( JSON.stringify( payload.props ) ) as Props;\n\t\t\t\tconst mode = payload.mode ?? 'merge';\n\n\t\t\t\tif ( mode === 'replace' ) {\n\t\t\t\t\tvariant.props = payloadProps;\n\t\t\t\t} else {\n\t\t\t\t\tvariant.props = { ...variant.props, ...payloadProps };\n\t\t\t\t}\n\n\t\t\t\tvariant.custom_css = customCss;\n\t\t\t} else {\n\t\t\t\tstyle.variants.push( {\n\t\t\t\t\tmeta: payload.meta,\n\t\t\t\t\tprops: payload.props,\n\t\t\t\t\tcustom_css: customCss,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tstate.data[ payload.id ] = style;\n\t\t\tstate.isDirty = true;\n\t\t},\n\n\t\treset( state ) {\n\t\t\tstate.data = state.initialData;\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tcommit( state ) {\n\t\t\tstate.initialData = state.data;\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tdeleteTag( state, { payload }: PayloadAction< StyleDefinitionID > ) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\tdelete state.data[ payload ];\n\t\t\tstate.isDirty = true;\n\t\t},\n\t},\n} );\n\nexport const selectData = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.data,\n\t( data ) => data\n);\n\nexport const selectIsDirty = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.isDirty,\n\t( isDirty ) => isDirty\n);\n\nexport const selectInitialData = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.initialData,\n\t( initialData ) => initialData\n);\n\nexport const selectTagStyle = createSelector(\n\t[ selectData, ( _state: StateWithDefaultStyles, id: StyleDefinitionID ) => id ],\n\t( data, id ) => data[ id ]\n);\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\nimport { hash } from '@elementor/utils';\n\nimport { type AllowedHtmlTag } from './allowed-tags';\nimport { apiClient } from './api';\nimport { selectData, selectInitialData, selectIsDirty, slice, type StateWithDefaultStyles } from './store';\n\nfunction getChangedTags( state: StateWithDefaultStyles ): AllowedHtmlTag[] {\n\tconst current = selectData( state );\n\tconst initial = selectInitialData( state );\n\n\tconst changed: AllowedHtmlTag[] = [];\n\n\tObject.keys( current ).forEach( ( tag ) => {\n\t\tconst currentStyle = current[ tag ];\n\t\tconst initialStyle = initial[ tag ];\n\n\t\tif ( ! initialStyle || hash( currentStyle ) !== hash( initialStyle ) ) {\n\t\t\tchanged.push( tag as AllowedHtmlTag );\n\t\t}\n\t} );\n\n\tObject.keys( initial ).forEach( ( tag ) => {\n\t\tif ( ! current[ tag ] ) {\n\t\t\tchanged.push( tag as AllowedHtmlTag );\n\t\t}\n\t} );\n\n\treturn changed;\n}\n\nexport async function saveDefaultStyles() {\n\tconst state = getState() as StateWithDefaultStyles;\n\n\tif ( ! selectIsDirty( state ) ) {\n\t\treturn;\n\t}\n\n\tconst data = selectData( state );\n\tconst changedTags = getChangedTags( state );\n\n\tawait Promise.all(\n\t\tchangedTags.map( async ( tag ) => {\n\t\t\tconst style = data[ tag ];\n\n\t\t\tif ( ! style || style.variants.length === 0 ) {\n\t\t\t\tawait apiClient.delete( tag );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait apiClient.put( tag, style.variants );\n\t\t} )\n\t);\n\n\tdispatch( slice.actions.commit() );\n}\n","import { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\n\nimport { type AllowedHtmlTag } from './allowed-tags';\n\nconst RESOURCE_URL = '/default-styles';\nconst BASE_URL = 'elementor/v1';\n\nexport type DefaultStylesMap = Record< StyleDefinitionID, StyleDefinition >;\n\ntype DefaultStylesHttpResponse = HttpResponse< DefaultStylesMap >;\n\nexport const apiClient = {\n\tall: () => httpService().get< DefaultStylesHttpResponse >( `${ BASE_URL }${ RESOURCE_URL }` ),\n\n\tput: ( tag: AllowedHtmlTag, variants: StyleDefinition[ 'variants' ] ) =>\n\t\thttpService().put( `${ BASE_URL }${ RESOURCE_URL }/${ tag }`, {\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} ),\n\n\tdelete: ( tag: AllowedHtmlTag ) => httpService().delete( `${ BASE_URL }${ RESOURCE_URL }/${ tag }` ),\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport {\n\ttype AutocompleteRenderGetTagProps,\n\tbindTrigger,\n\tChip,\n\tStack,\n\ttype Theme,\n\tTypography,\n\tUnstableChipGroup,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { TagStateMenu } from './tag-state-menu';\n\nconst CHIP_SIZE = 'tiny';\n\ntype TagChipProps = {\n\tlabel: string;\n\tchipProps: ReturnType< AutocompleteRenderGetTagProps >;\n\tactiveState: StyleDefinitionState | null;\n\tonSelectState: ( state: StyleDefinitionState | null ) => void;\n};\n\nexport function TagChip( { label, chipProps, activeState, onSelectState }: TagChipProps ) {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: 'tag-state-menu',\n\t} );\n\tconst [ chipRef, setChipRef ] = useState< HTMLElement | null >( null );\n\n\tconst { onDelete: _onDelete, ...chipGroupProps } = chipProps;\n\tconst isShowingState = Boolean( activeState );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableChipGroup\n\t\t\t\tref={ setChipRef }\n\t\t\t\t{ ...chipGroupProps }\n\t\t\t\taria-label={ `Edit ${ label }` }\n\t\t\t\trole=\"group\"\n\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t'&.MuiChipGroup-root.MuiAutocomplete-tag': {\n\t\t\t\t\t\tmargin: theme.spacing( 0.125 ),\n\t\t\t\t\t},\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<Chip\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tvariant={ isShowingState ? 'standard' : 'filled' }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isShowingState ) {\n\t\t\t\t\t\t\tonSelectState( null );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tlineHeight: 1,\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t\t<Chip\n\t\t\t\t\ticon={ isShowingState ? undefined : <DotsVerticalIcon fontSize=\"tiny\" /> }\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tisShowingState ? (\n\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t<Typography variant=\"inherit\">{ activeState }</Typography>\n\t\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t) : undefined\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\taria-label={ __( 'Open tag state menu', 'elementor' ) }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\tpaddingRight: 0,\n\t\t\t\t\t\t...( ! isShowingState ? { paddingLeft: 0 } : {} ),\n\t\t\t\t\t\t'.MuiChip-label': isShowingState ? { paddingRight: 0 } : { padding: 0 },\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</UnstableChipGroup>\n\t\t\t<TagStateMenu\n\t\t\t\tpopupState={ popupState }\n\t\t\t\tanchorEl={ chipRef }\n\t\t\t\tactiveState={ activeState }\n\t\t\t\tonSelectState={ onSelectState }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { DEFAULT_PSEUDO_STATES, PseudoStateMenuItems } from '@elementor/editor-editing-panel';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { bindMenu, Menu, type PopupState } from '@elementor/ui';\n\ntype TagStateMenuProps = {\n\tpopupState: PopupState;\n\tanchorEl: HTMLElement | null;\n\tactiveState: StyleDefinitionState | null;\n\tonSelectState: ( state: StyleDefinitionState | null ) => void;\n};\n\nexport function TagStateMenu( { popupState, anchorEl, activeState, onSelectState }: TagStateMenuProps ) {\n\treturn (\n\t\t<Menu\n\t\t\tMenuListProps={ { dense: true, sx: { minWidth: '160px' } } }\n\t\t\t{ ...bindMenu( popupState ) }\n\t\t\tanchorEl={ anchorEl }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\ttransformOrigin={ { horizontal: 'left', vertical: -4 } }\n\t\t\tdisableAutoFocusItem\n\t\t>\n\t\t\t<PseudoStateMenuItems\n\t\t\t\tstates={ DEFAULT_PSEUDO_STATES }\n\t\t\t\tactiveState={ activeState }\n\t\t\t\tonSelectState={ onSelectState }\n\t\t\t\tonClose={ popupState.close }\n\t\t\t/>\n\t\t</Menu>\n\t);\n}\n","import { injectIntoLogic } from '@elementor/editor';\nimport { registerElementPanelDefaults } from '@elementor/editor-editing-panel';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { __registerSlice as registerSlice } from '@elementor/store';\n\nimport { PopulateStore } from './components/populate-store';\nimport { defaultStylesStylesProvider } from './default-styles-provider';\nimport { slice } from './store';\n\nexport function init() {\n\tregisterSlice( slice );\n\n\tregisterElementPanelDefaults( 'default-style', {\n\t\tdefaultTab: 'style',\n\t\tdefaultSectionsExpanded: {\n\t\t\tstyle: [],\n\t\t},\n\t} );\n\n\tstylesRepository.register( defaultStylesStylesProvider );\n\n\tinjectIntoLogic( {\n\t\tid: 'default-styles-populate-store',\n\t\tcomponent: PopulateStore,\n\t} );\n}\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, registerDataHook, routeCloseEvent } from '@elementor/editor-v1-adapters';\nimport { __getState as getState } from '@elementor/store';\n\nimport { loadDefaultStyles } from '../load-default-styles';\nimport { selectIsDirty } from '../store';\n\nconst V2_PANEL_ROUTE = 'panel/v2';\n\nexport function PopulateStore() {\n\tuseEffect( () => {\n\t\tvoid loadDefaultStyles();\n\n\t\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\t\tif ( selectIsDirty( getState() ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait loadDefaultStyles();\n\t\t} );\n\n\t\tconst unsubscribe = listenTo( routeCloseEvent( V2_PANEL_ROUTE ), () => {\n\t\t\tif ( selectIsDirty( getState() ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvoid loadDefaultStyles();\n\t\t} );\n\n\t\treturn unsubscribe;\n\t}, [] );\n\n\treturn null;\n}\n","import { __dispatch as dispatch } from '@elementor/store';\n\nimport { apiClient } from './api';\nimport { slice } from './store';\n\nexport async function loadDefaultStyles() {\n\ttry {\n\t\tconst response = await apiClient.all();\n\n\t\tconst items = response.data.data;\n\n\t\tdispatch(\n\t\t\tslice.actions.load( {\n\t\t\t\tdata: items,\n\t\t\t} )\n\t\t);\n\t} catch {}\n}\n"],"mappings":"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","names":["React","import_react","import_editor_editing_panel","import_editor_styles_repository","import_store","import_ui","import_i18n","import_store","createSlice","createSelector","getState","dispatch","subscribeWithSelector","import_store","getState","dispatch","React","import_ui","import_i18n","useSelector","dispatch","import_editor_editing_panel","import_editor_styles_repository","import_store","import_react","import_store","import_store","dispatch","getState","listenTo","registerSlice"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/default-styles-tab-embedded.tsx","../src/allowed-tags.ts","../src/default-styles-provider.ts","../src/capabilities.ts","../src/store.ts","../src/save-default-styles.ts","../src/api.ts","../src/components/tag-chip.tsx","../src/components/tag-state-menu.tsx","../src/init.ts","../src/components/global-styles-import-listener.tsx","../src/load-default-styles.ts","../src/components/populate-store.tsx"],"sourcesContent":["export { DefaultStylesTabEmbedded } from './components/default-styles-tab-embedded';\nexport { init } from './init';\n","import * as React from 'react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n\tControlActionsProvider,\n\tControlReplacementsProvider,\n\tgetControlReplacements,\n} from '@elementor/editor-controls';\nimport {\n\tClassesPropProvider,\n\tCreatableAutocomplete,\n\tElementProvider,\n\ttype Option,\n\tSectionsList,\n\tStyleInheritanceProvider,\n\tStyleProvider,\n\tStyleSections,\n\tStyleTabSlot,\n} from '@elementor/editor-editing-panel';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { type StyleDefinitionID, type StyleDefinitionState } from '@elementor/editor-styles';\nimport { useUserStylesCapability } from '@elementor/editor-styles-repository';\nimport { SaveChangesDialog, ThemeProvider, useDialog } from '@elementor/editor-ui';\nimport { controlActionsMenu } from '@elementor/menus';\nimport { useMutation } from '@elementor/query';\nimport { getSessionStorageItem, SessionStorageProvider, setSessionStorageItem } from '@elementor/session';\nimport { __dispatch as dispatch, __useSelector as useSelector } from '@elementor/store';\nimport {\n\ttype AutocompleteChangeReason,\n\tBox,\n\tButton,\n\tErrorBoundary,\n\tFormControl,\n\tFormLabel,\n\tStack,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\ttype AllowedHtmlTag,\n\tgetAllowedDefaultStyleTags,\n\tgetDefaultActiveTag,\n\tisAllowedDefaultStyleTag,\n} from '../allowed-tags';\nimport { DEFAULT_STYLES_PROVIDER_KEY } from '../default-styles-provider';\nimport { saveDefaultStyles } from '../save-default-styles';\nimport { selectIsDirty, slice } from '../store';\nimport { TagChip } from './tag-chip';\n\nconst { useMenuItems } = controlActionsMenu;\n\nconst SHIM_ELEMENT_ID = 'default-styles-editor-shim';\nconst SHIM_CLASSES_PROP = '__default_styles_classes__';\nconst TAG_SELECTOR_ID = 'default-styles-tag-selector';\nconst LAST_ACTIVE_TAG_SESSION_PREFIX = 'default-styles';\nconst LAST_ACTIVE_TAG_SESSION_KEY = 'last-active-tag';\nconst LAST_ACTIVE_TAG_STORAGE_KEY = `${ LAST_ACTIVE_TAG_SESSION_PREFIX }/${ LAST_ACTIVE_TAG_SESSION_KEY }`;\n\nfunction readStoredActiveTag( allowedTags: AllowedHtmlTag[] ): AllowedHtmlTag {\n\tconst storedTag = getSessionStorageItem< AllowedHtmlTag >( LAST_ACTIVE_TAG_STORAGE_KEY );\n\n\tif ( storedTag && isAllowedDefaultStyleTag( storedTag, allowedTags ) ) {\n\t\treturn storedTag;\n\t}\n\n\treturn getDefaultActiveTag( allowedTags );\n}\n\nfunction toTagChip( tag: AllowedHtmlTag ): Option {\n\treturn { label: tag, value: tag, fixed: true };\n}\n\nconst shimElement: Element = {\n\tid: SHIM_ELEMENT_ID,\n\ttype: 'default-style',\n};\n\nconst shimElementType: ElementType = {\n\tkey: 'default-style',\n\tcontrols: [],\n\tpropsSchema: {},\n\ttitle: __( 'Default Style', 'elementor' ),\n};\n\nexport type DefaultStylesTabEmbeddedProps = {\n\tonRequestClose: () => void | Promise< void >;\n\tonExposeCloseAttempt?: ( attemptClose: ( () => void ) | null ) => void;\n};\n\nexport function DefaultStylesTabEmbedded( { onRequestClose, onExposeCloseAttempt }: DefaultStylesTabEmbeddedProps ) {\n\tconst allowedTags = useMemo( () => getAllowedDefaultStyleTags(), [] );\n\tconst tagOptions = useMemo< Option[] >(\n\t\t() => allowedTags.map( ( tag ) => ( { label: tag, value: tag } ) ),\n\t\t[ allowedTags ]\n\t);\n\tconst [ selectedTag, setSelectedTagState ] = useState< AllowedHtmlTag >( () => readStoredActiveTag( allowedTags ) );\n\tconst [ activeStyleState, setActiveStyleState ] = useState< StyleDefinitionState | null >( null );\n\tconst breakpoint = useActiveBreakpoint();\n\tconst menuItems = useMenuItems().default;\n\tconst controlReplacements = getControlReplacements();\n\tconst isDirty = useSelector( selectIsDirty );\n\tconst { mutateAsync: save, isPending: isSaving } = useSave();\n\tconst { open: openSaveChangesDialog, close: closeSaveChangesDialog, isOpen: isSaveChangesDialogOpen } = useDialog();\n\tconst { userCan } = useUserStylesCapability();\n\tconst canEdit = userCan( DEFAULT_STYLES_PROVIDER_KEY ).updateProps;\n\n\tconst setSelectedTag = ( tag: AllowedHtmlTag ) => {\n\t\tsetSelectedTagState( tag );\n\t\tsetSessionStorageItem( LAST_ACTIVE_TAG_STORAGE_KEY, tag );\n\t};\n\n\tconst handleClosePanel = useCallback( () => {\n\t\tif ( canEdit && isDirty ) {\n\t\t\topenSaveChangesDialog();\n\t\t\treturn;\n\t\t}\n\n\t\tvoid onRequestClose();\n\t}, [ canEdit, isDirty, onRequestClose, openSaveChangesDialog ] );\n\n\tuseEffect( () => {\n\t\tif ( ! onExposeCloseAttempt ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonExposeCloseAttempt( () => handleClosePanel() );\n\n\t\treturn () => onExposeCloseAttempt( null );\n\t}, [ onExposeCloseAttempt, handleClosePanel ] );\n\n\tusePreventUnload( canEdit && isDirty );\n\n\tconst handleTagSelect = ( _selected: Option[], reason: AutocompleteChangeReason, option: Option ) => {\n\t\tif ( reason !== 'selectOption' || ! option.value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetSelectedTag( option.value as AllowedHtmlTag );\n\t\tsetActiveStyleState( null );\n\t};\n\n\tconst resetAndClosePanel = () => {\n\t\tdispatch( slice.actions.reset() );\n\t\tcloseSaveChangesDialog();\n\t\tvoid onRequestClose();\n\t};\n\n\tconst handleSaveAndContinue = async () => {\n\t\ttry {\n\t\t\tawait save();\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tcloseSaveChangesDialog();\n\t\tvoid onRequestClose();\n\t};\n\n\treturn (\n\t\t<ErrorBoundary fallback={ null }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t<ControlReplacementsProvider replacements={ controlReplacements }>\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\tminHeight: 0,\n\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Box sx={ { flex: 1, minHeight: 0, overflow: 'auto' } }>\n\t\t\t\t\t\t\t\t<Stack sx={ { px: 2, pt: 1, gap: 1 } }>\n\t\t\t\t\t\t\t\t\t<FormControl fullWidth size=\"small\">\n\t\t\t\t\t\t\t\t\t\t<FormLabel htmlFor={ TAG_SELECTOR_ID } size=\"small\" sx={ { mb: 1 } }>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Tag', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<CreatableAutocomplete< Option >\n\t\t\t\t\t\t\t\t\t\t\tid={ TAG_SELECTOR_ID }\n\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={ __( 'Type tag name', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t\toptions={ tagOptions }\n\t\t\t\t\t\t\t\t\t\t\tselected={ [ toTagChip( selectedTag ) ] }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ handleTagSelect }\n\t\t\t\t\t\t\t\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tvalues.map( ( value, index ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TagChip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ value.value ?? value.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchipProps={ getTagProps( { index } ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveState={ activeStyleState }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectState={ setActiveStyleState }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t<ElementProvider\n\t\t\t\t\t\t\t\t\telement={ shimElement }\n\t\t\t\t\t\t\t\t\telementType={ shimElementType }\n\t\t\t\t\t\t\t\t\tsettings={ {} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ClassesPropProvider prop={ SHIM_CLASSES_PROP }>\n\t\t\t\t\t\t\t\t\t\t<StyleProvider\n\t\t\t\t\t\t\t\t\t\t\tmeta={ {\n\t\t\t\t\t\t\t\t\t\t\t\tbreakpoint,\n\t\t\t\t\t\t\t\t\t\t\t\tstate: activeStyleState,\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tid={ selectedTag as StyleDefinitionID }\n\t\t\t\t\t\t\t\t\t\t\tsetId={ () => {} }\n\t\t\t\t\t\t\t\t\t\t\tsetMetaState={ setActiveStyleState }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<SessionStorageProvider prefix={ selectedTag }>\n\t\t\t\t\t\t\t\t\t\t\t\t<StyleInheritanceProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SectionsList>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StyleSections />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StyleTabSlot />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SectionsList>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: '150px',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</StyleInheritanceProvider>\n\t\t\t\t\t\t\t\t\t\t\t</SessionStorageProvider>\n\t\t\t\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t\t\t\t</ClassesPropProvider>\n\t\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t{ canEdit ? (\n\t\t\t\t\t\t\t\t<Box sx={ { flexShrink: 0, px: 2, py: 1.5 } }>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tcolor=\"global\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => void save() }\n\t\t\t\t\t\t\t\t\t\tdisabled={ ! isDirty }\n\t\t\t\t\t\t\t\t\t\tloading={ isSaving }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Save changes', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t) : null }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t</ControlActionsProvider>\n\n\t\t\t\t{ canEdit && isSaveChangesDialogOpen && (\n\t\t\t\t\t<SaveChangesDialog>\n\t\t\t\t\t\t<SaveChangesDialog.Title onClose={ closeSaveChangesDialog }>\n\t\t\t\t\t\t\t{ __( 'You have unsaved changes', 'elementor' ) }\n\t\t\t\t\t\t</SaveChangesDialog.Title>\n\t\t\t\t\t\t<SaveChangesDialog.Content>\n\t\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t\t{ __( 'You have unsaved changes in Default Styles.', 'elementor' ) }\n\t\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t\t{ __( 'To avoid losing your updates, save your changes before leaving.', 'elementor' ) }\n\t\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t\t</SaveChangesDialog.Content>\n\t\t\t\t\t\t<SaveChangesDialog.Actions\n\t\t\t\t\t\t\tactions={ {\n\t\t\t\t\t\t\t\tdiscard: {\n\t\t\t\t\t\t\t\t\tlabel: __( 'Discard', 'elementor' ),\n\t\t\t\t\t\t\t\t\taction: resetAndClosePanel,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconfirm: {\n\t\t\t\t\t\t\t\t\tlabel: __( 'Save & Continue', 'elementor' ),\n\t\t\t\t\t\t\t\t\taction: handleSaveAndContinue,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SaveChangesDialog>\n\t\t\t\t) }\n\t\t\t</ThemeProvider>\n\t\t</ErrorBoundary>\n\t);\n}\n\nfunction useSave() {\n\treturn useMutation( {\n\t\tmutationFn: () => saveDefaultStyles(),\n\t} );\n}\n\nfunction usePreventUnload( isDirty: boolean ) {\n\tuseEffect( () => {\n\t\tconst handleBeforeUnload = ( event: BeforeUnloadEvent ) => {\n\t\t\tif ( isDirty ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener( 'beforeunload', handleBeforeUnload );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'beforeunload', handleBeforeUnload );\n\t\t};\n\t}, [ isDirty ] );\n}\n","type ExtendedWindow = Window & {\n\telementor: {\n\t\tconfig: {\n\t\t\tatomic?: {\n\t\t\t\tdefault_styles?: {\n\t\t\t\t\tallowed_tags?: string[];\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n};\n\nconst getElementorConfig = () => ( window as unknown as ExtendedWindow ).elementor?.config ?? {};\n\nexport const getAllowedDefaultStyleTags = (): string[] => {\n\tconst tags = getElementorConfig().atomic?.default_styles?.allowed_tags;\n\n\tif ( ! tags?.length ) {\n\t\treturn [];\n\t}\n\n\treturn tags;\n};\n\nexport type AllowedHtmlTag = string;\n\nexport const getDefaultActiveTag = ( tags: string[] ): AllowedHtmlTag => {\n\tif ( tags.includes( 'h1' ) ) {\n\t\treturn 'h1';\n\t}\n\n\treturn tags[ 0 ] ?? '';\n};\n\nexport const isAllowedDefaultStyleTag = ( tag: string, tags = getAllowedDefaultStyleTags() ): tag is AllowedHtmlTag =>\n\ttags.includes( tag );\n","import { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\nimport { createStylesProvider } from '@elementor/editor-styles-repository';\nimport {\n\t__dispatch as dispatch,\n\t__getState as getState,\n\t__subscribeWithSelector as subscribeWithSelector,\n} from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { getAllowedDefaultStyleTags } from './allowed-tags';\nimport { getCapabilities } from './capabilities';\nimport { selectData, slice } from './store';\n\nexport const DEFAULT_STYLES_PROVIDER_KEY = 'default-styles';\nexport const DEFAULT_STYLES_CSS_NAME_PREFIX = 'e-default-';\n\nconst resolveCssName = ( id: StyleDefinitionID ) => `${ DEFAULT_STYLES_CSS_NAME_PREFIX }${ id }`;\n\nconst placeholderDefinition = ( id: StyleDefinitionID ): StyleDefinition => ( {\n\tid,\n\tlabel: id,\n\ttype: 'class',\n\tvariants: [],\n} );\n\nconst asClassDefinition = ( style: StyleDefinition ): StyleDefinition => ( {\n\t...style,\n\ttype: 'class',\n} );\n\nexport const defaultStylesStylesProvider = createStylesProvider( {\n\tkey: DEFAULT_STYLES_PROVIDER_KEY,\n\tpriority: 15,\n\tlabels: {\n\t\tsingular: __( 'tag', 'elementor' ),\n\t\tplural: __( 'tags', 'elementor' ),\n\t},\n\tsubscribe: ( cb ) => subscribeWithStates( cb ),\n\tcapabilities: getCapabilities(),\n\tactions: {\n\t\tall: () =>\n\t\t\tgetAllowedDefaultStyleTags().map( ( tag ) => {\n\t\t\t\tconst style = selectData( getState() )[ tag ];\n\n\t\t\t\treturn style ? asClassDefinition( style ) : placeholderDefinition( tag );\n\t\t\t} ),\n\t\tget: ( id ) => {\n\t\t\tconst style = selectData( getState() )[ id ];\n\n\t\t\treturn style ? asClassDefinition( style ) : placeholderDefinition( id );\n\t\t},\n\t\tresolveCssName,\n\t\tupdate: ( payload ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.update( {\n\t\t\t\t\tstyle: payload,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tdelete: ( id ) => {\n\t\t\tdispatch( slice.actions.deleteTag( id ) );\n\t\t},\n\t\tupdateProps: ( args ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.updateProps( {\n\t\t\t\t\tid: args.id,\n\t\t\t\t\tmeta: args.meta,\n\t\t\t\t\tprops: args.props,\n\t\t\t\t\tmode: args.mode,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tupdateCustomCss: ( args ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.updateProps( {\n\t\t\t\t\tid: args.id,\n\t\t\t\t\tmeta: args.meta,\n\t\t\t\t\tcustom_css: args.custom_css,\n\t\t\t\t\tprops: {},\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t},\n} );\n\nconst subscribeWithStates = (\n\tcb: ( previous: Record< string, StyleDefinition >, current: Record< string, StyleDefinition > ) => void\n) => {\n\tlet previousState = selectData( getState() );\n\n\treturn subscribeWithSelector(\n\t\t( state ) => selectData( state ),\n\t\t( currentState ) => {\n\t\t\tcb( previousState, currentState );\n\t\t\tpreviousState = currentState;\n\t\t}\n\t);\n};\n","import { type UserCapabilities } from '@elementor/editor-styles-repository';\n\nexport const UPDATE_DEFAULT_STYLES_CAPABILITY_KEY = 'manage_options';\n\nexport const getCapabilities = (): UserCapabilities => {\n\treturn {\n\t\tupdate: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tcreate: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tdelete: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tupdateProps: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t};\n};\n","import { type Props } from '@elementor/editor-props';\nimport {\n\ttype CustomCss,\n\tgetVariantByMeta,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { type UpdateActionPayload } from '@elementor/editor-styles-repository';\nimport {\n\t__createSelector as createSelector,\n\t__createSlice as createSlice,\n\ttype PayloadAction,\n\ttype SliceState,\n} from '@elementor/store';\n\ntype DefaultStylesState = {\n\tdata: Record< StyleDefinitionID, StyleDefinition >;\n\tinitialData: Record< StyleDefinitionID, StyleDefinition >;\n\tisDirty: boolean;\n};\n\nconst initialState: DefaultStylesState = {\n\tdata: {},\n\tinitialData: {},\n\tisDirty: false,\n};\n\nexport type StateWithDefaultStyles = SliceState< typeof slice >;\n\nconst SLICE_NAME = 'defaultStyles';\n\nexport const slice = createSlice( {\n\tname: SLICE_NAME,\n\tinitialState,\n\treducers: {\n\t\tload(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload: { data },\n\t\t\t}: PayloadAction< {\n\t\t\t\tdata: Record< StyleDefinitionID, StyleDefinition >;\n\t\t\t} >\n\t\t) {\n\t\t\tconst normalizedData = Array.isArray( data ) ? {} : data;\n\n\t\t\tstate.initialData = structuredClone( normalizedData );\n\t\t\tstate.data = structuredClone( normalizedData );\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tupdate( state, { payload }: PayloadAction< { style: UpdateActionPayload } > ) {\n\t\t\tstate.data[ payload.style.id ] = {\n\t\t\t\t...state.data[ payload.style.id ],\n\t\t\t\t...payload.style,\n\t\t\t} as StyleDefinition;\n\t\t\tstate.isDirty = true;\n\t\t},\n\n\t\tupdateProps(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload,\n\t\t\t}: PayloadAction< {\n\t\t\t\tid: StyleDefinitionID;\n\t\t\t\tmeta: StyleDefinitionVariant[ 'meta' ];\n\t\t\t\tprops: Props;\n\t\t\t\tcustom_css?: CustomCss | null;\n\t\t\t\tmode?: 'merge' | 'replace';\n\t\t\t} >\n\t\t) {\n\t\t\tconst style = state.data[ payload.id ] ?? {\n\t\t\t\tid: payload.id,\n\t\t\t\tlabel: payload.id,\n\t\t\t\ttype: 'class' as const,\n\t\t\t\tvariants: [],\n\t\t\t};\n\n\t\t\tconst variant = getVariantByMeta( style, payload.meta );\n\t\t\tlet customCss = ( 'custom_css' in payload ? payload.custom_css : variant?.custom_css ) ?? null;\n\t\t\tcustomCss = customCss?.raw ? customCss : null;\n\n\t\t\tif ( variant ) {\n\t\t\t\tconst payloadProps = JSON.parse( JSON.stringify( payload.props ) ) as Props;\n\t\t\t\tconst mode = payload.mode ?? 'merge';\n\n\t\t\t\tif ( mode === 'replace' ) {\n\t\t\t\t\tvariant.props = payloadProps;\n\t\t\t\t} else {\n\t\t\t\t\tvariant.props = { ...variant.props, ...payloadProps };\n\t\t\t\t}\n\n\t\t\t\tvariant.custom_css = customCss;\n\t\t\t} else {\n\t\t\t\tstyle.variants.push( {\n\t\t\t\t\tmeta: payload.meta,\n\t\t\t\t\tprops: payload.props,\n\t\t\t\t\tcustom_css: customCss,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tstate.data[ payload.id ] = style;\n\t\t\tstate.isDirty = true;\n\t\t},\n\n\t\treset( state ) {\n\t\t\tstate.data = state.initialData;\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tcommit( state ) {\n\t\t\tstate.initialData = state.data;\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tdeleteTag( state, { payload }: PayloadAction< StyleDefinitionID > ) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\tdelete state.data[ payload ];\n\t\t\tstate.isDirty = true;\n\t\t},\n\t},\n} );\n\nexport const selectData = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.data,\n\t( data ) => data\n);\n\nexport const selectIsDirty = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.isDirty,\n\t( isDirty ) => isDirty\n);\n\nexport const selectInitialData = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.initialData,\n\t( initialData ) => initialData\n);\n\nexport const selectTagStyle = createSelector(\n\t[ selectData, ( _state: StateWithDefaultStyles, id: StyleDefinitionID ) => id ],\n\t( data, id ) => data[ id ]\n);\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\nimport { hash } from '@elementor/utils';\n\nimport { type AllowedHtmlTag } from './allowed-tags';\nimport { apiClient } from './api';\nimport { selectData, selectInitialData, selectIsDirty, slice, type StateWithDefaultStyles } from './store';\n\nfunction getChangedTags( state: StateWithDefaultStyles ): AllowedHtmlTag[] {\n\tconst current = selectData( state );\n\tconst initial = selectInitialData( state );\n\n\tconst changed: AllowedHtmlTag[] = [];\n\n\tObject.keys( current ).forEach( ( tag ) => {\n\t\tconst currentStyle = current[ tag ];\n\t\tconst initialStyle = initial[ tag ];\n\n\t\tif ( ! initialStyle || hash( currentStyle ) !== hash( initialStyle ) ) {\n\t\t\tchanged.push( tag as AllowedHtmlTag );\n\t\t}\n\t} );\n\n\tObject.keys( initial ).forEach( ( tag ) => {\n\t\tif ( ! current[ tag ] ) {\n\t\t\tchanged.push( tag as AllowedHtmlTag );\n\t\t}\n\t} );\n\n\treturn changed;\n}\n\nexport async function saveDefaultStyles() {\n\tconst state = getState() as StateWithDefaultStyles;\n\n\tif ( ! selectIsDirty( state ) ) {\n\t\treturn;\n\t}\n\n\tconst data = selectData( state );\n\tconst changedTags = getChangedTags( state );\n\n\tawait Promise.all(\n\t\tchangedTags.map( async ( tag ) => {\n\t\t\tconst style = data[ tag ];\n\n\t\t\tif ( ! style || style.variants.length === 0 ) {\n\t\t\t\tawait apiClient.delete( tag );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait apiClient.put( tag, style.variants );\n\t\t} )\n\t);\n\n\tdispatch( slice.actions.commit() );\n}\n","import { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\n\nimport { type AllowedHtmlTag } from './allowed-tags';\n\nconst RESOURCE_URL = '/default-styles';\nconst BASE_URL = 'elementor/v1';\n\nexport type DefaultStylesMap = Record< StyleDefinitionID, StyleDefinition >;\n\ntype DefaultStylesHttpResponse = HttpResponse< DefaultStylesMap >;\n\nexport const apiClient = {\n\tall: () => httpService().get< DefaultStylesHttpResponse >( `${ BASE_URL }${ RESOURCE_URL }` ),\n\n\tput: ( tag: AllowedHtmlTag, variants: StyleDefinition[ 'variants' ] ) =>\n\t\thttpService().put( `${ BASE_URL }${ RESOURCE_URL }/${ tag }`, {\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} ),\n\n\tdelete: ( tag: AllowedHtmlTag ) => httpService().delete( `${ BASE_URL }${ RESOURCE_URL }/${ tag }` ),\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport {\n\ttype AutocompleteRenderGetTagProps,\n\tbindTrigger,\n\tChip,\n\tStack,\n\ttype Theme,\n\tTypography,\n\tUnstableChipGroup,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { TagStateMenu } from './tag-state-menu';\n\nconst CHIP_SIZE = 'tiny';\n\ntype TagChipProps = {\n\tlabel: string;\n\tchipProps: ReturnType< AutocompleteRenderGetTagProps >;\n\tactiveState: StyleDefinitionState | null;\n\tonSelectState: ( state: StyleDefinitionState | null ) => void;\n};\n\nexport function TagChip( { label, chipProps, activeState, onSelectState }: TagChipProps ) {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: 'tag-state-menu',\n\t} );\n\tconst [ chipRef, setChipRef ] = useState< HTMLElement | null >( null );\n\n\tconst { onDelete: _onDelete, ...chipGroupProps } = chipProps;\n\tconst isShowingState = Boolean( activeState );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableChipGroup\n\t\t\t\tref={ setChipRef }\n\t\t\t\t{ ...chipGroupProps }\n\t\t\t\taria-label={ `Edit ${ label }` }\n\t\t\t\trole=\"group\"\n\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t'&.MuiChipGroup-root.MuiAutocomplete-tag': {\n\t\t\t\t\t\tmargin: theme.spacing( 0.125 ),\n\t\t\t\t\t},\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<Chip\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tvariant={ isShowingState ? 'standard' : 'filled' }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isShowingState ) {\n\t\t\t\t\t\t\tonSelectState( null );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tlineHeight: 1,\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t\t<Chip\n\t\t\t\t\ticon={ isShowingState ? undefined : <DotsVerticalIcon fontSize=\"tiny\" /> }\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tisShowingState ? (\n\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t<Typography variant=\"inherit\">{ activeState }</Typography>\n\t\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t) : undefined\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\taria-label={ __( 'Open tag state menu', 'elementor' ) }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\tpaddingRight: 0,\n\t\t\t\t\t\t...( ! isShowingState ? { paddingLeft: 0 } : {} ),\n\t\t\t\t\t\t'.MuiChip-label': isShowingState ? { paddingRight: 0 } : { padding: 0 },\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</UnstableChipGroup>\n\t\t\t<TagStateMenu\n\t\t\t\tpopupState={ popupState }\n\t\t\t\tanchorEl={ chipRef }\n\t\t\t\tactiveState={ activeState }\n\t\t\t\tonSelectState={ onSelectState }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { DEFAULT_PSEUDO_STATES, PseudoStateMenuItems } from '@elementor/editor-editing-panel';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { bindMenu, Menu, type PopupState } from '@elementor/ui';\n\ntype TagStateMenuProps = {\n\tpopupState: PopupState;\n\tanchorEl: HTMLElement | null;\n\tactiveState: StyleDefinitionState | null;\n\tonSelectState: ( state: StyleDefinitionState | null ) => void;\n};\n\nexport function TagStateMenu( { popupState, anchorEl, activeState, onSelectState }: TagStateMenuProps ) {\n\treturn (\n\t\t<Menu\n\t\t\tMenuListProps={ { dense: true, sx: { minWidth: '160px' } } }\n\t\t\t{ ...bindMenu( popupState ) }\n\t\t\tanchorEl={ anchorEl }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\ttransformOrigin={ { horizontal: 'left', vertical: -4 } }\n\t\t\tdisableAutoFocusItem\n\t\t>\n\t\t\t<PseudoStateMenuItems\n\t\t\t\tstates={ DEFAULT_PSEUDO_STATES }\n\t\t\t\tactiveState={ activeState }\n\t\t\t\tonSelectState={ onSelectState }\n\t\t\t\tonClose={ popupState.close }\n\t\t\t/>\n\t\t</Menu>\n\t);\n}\n","import { injectIntoLogic } from '@elementor/editor';\nimport { registerElementPanelDefaults } from '@elementor/editor-editing-panel';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { __registerSlice as registerSlice } from '@elementor/store';\n\nimport { GlobalStylesImportListener } from './components/global-styles-import-listener';\nimport { PopulateStore } from './components/populate-store';\nimport { defaultStylesStylesProvider } from './default-styles-provider';\nimport { slice } from './store';\n\nexport function init() {\n\tregisterSlice( slice );\n\n\tregisterElementPanelDefaults( 'default-style', {\n\t\tdefaultTab: 'style',\n\t\tdefaultSectionsExpanded: {\n\t\t\tstyle: [],\n\t\t},\n\t} );\n\n\tstylesRepository.register( defaultStylesStylesProvider );\n\n\tinjectIntoLogic( {\n\t\tid: 'default-styles-import-listener',\n\t\tcomponent: GlobalStylesImportListener,\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'default-styles-populate-store',\n\t\tcomponent: PopulateStore,\n\t} );\n}\n","import { useEffect } from 'react';\nimport { GLOBAL_STYLES_IMPORTED_EVENT } from '@elementor/editor-canvas';\n\nimport { loadDefaultStyles } from '../load-default-styles';\n\nexport function GlobalStylesImportListener() {\n\tuseEffect( () => {\n\t\tconst handleGlobalStylesImported = () => {\n\t\t\tvoid loadDefaultStyles();\n\t\t};\n\n\t\twindow.addEventListener( GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported );\n\t\t};\n\t}, [] );\n\n\treturn null;\n}\n","import { __dispatch as dispatch } from '@elementor/store';\n\nimport { apiClient } from './api';\nimport { slice } from './store';\n\nexport async function loadDefaultStyles() {\n\ttry {\n\t\tconst response = await apiClient.all();\n\n\t\tconst items = response.data.data;\n\n\t\tdispatch(\n\t\t\tslice.actions.load( {\n\t\t\t\tdata: items,\n\t\t\t} )\n\t\t);\n\t} catch {}\n}\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, registerDataHook, routeCloseEvent } from '@elementor/editor-v1-adapters';\nimport { __getState as getState } from '@elementor/store';\n\nimport { loadDefaultStyles } from '../load-default-styles';\nimport { selectIsDirty } from '../store';\n\nconst V2_PANEL_ROUTE = 'panel/v2';\n\nexport function PopulateStore() {\n\tuseEffect( () => {\n\t\tvoid loadDefaultStyles();\n\n\t\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\t\tif ( selectIsDirty( getState() ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait loadDefaultStyles();\n\t\t} );\n\n\t\tconst unsubscribe = listenTo( routeCloseEvent( V2_PANEL_ROUTE ), () => {\n\t\t\tif ( selectIsDirty( getState() ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvoid loadDefaultStyles();\n\t\t} );\n\n\t\treturn unsubscribe;\n\t}, [] );\n\n\treturn null;\n}\n"],"mappings":"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","names":["React","import_react","import_editor_editing_panel","import_editor_styles_repository","import_store","import_ui","import_i18n","import_store","createSlice","createSelector","getState","dispatch","subscribeWithSelector","import_store","getState","dispatch","React","import_ui","import_i18n","useSelector","dispatch","import_editor_editing_panel","import_editor_styles_repository","import_store","import_react","import_store","dispatch","import_react","import_store","getState","listenTo","registerSlice"]}
package/dist/index.mjs CHANGED
@@ -608,10 +608,9 @@ import { registerElementPanelDefaults } from "@elementor/editor-editing-panel";
608
608
  import { stylesRepository } from "@elementor/editor-styles-repository";
609
609
  import { __registerSlice as registerSlice } from "@elementor/store";
610
610
 
611
- // src/components/populate-store.tsx
611
+ // src/components/global-styles-import-listener.tsx
612
612
  import { useEffect as useEffect2 } from "react";
613
- import { __privateListenTo as listenTo, registerDataHook, routeCloseEvent } from "@elementor/editor-v1-adapters";
614
- import { __getState as getState3 } from "@elementor/store";
613
+ import { GLOBAL_STYLES_IMPORTED_EVENT } from "@elementor/editor-canvas";
615
614
 
616
615
  // src/load-default-styles.ts
617
616
  import { __dispatch as dispatch4 } from "@elementor/store";
@@ -628,10 +627,27 @@ async function loadDefaultStyles() {
628
627
  }
629
628
  }
630
629
 
630
+ // src/components/global-styles-import-listener.tsx
631
+ function GlobalStylesImportListener() {
632
+ useEffect2(() => {
633
+ const handleGlobalStylesImported = () => {
634
+ void loadDefaultStyles();
635
+ };
636
+ window.addEventListener(GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
637
+ return () => {
638
+ window.removeEventListener(GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
639
+ };
640
+ }, []);
641
+ return null;
642
+ }
643
+
631
644
  // src/components/populate-store.tsx
645
+ import { useEffect as useEffect3 } from "react";
646
+ import { __privateListenTo as listenTo, registerDataHook, routeCloseEvent } from "@elementor/editor-v1-adapters";
647
+ import { __getState as getState3 } from "@elementor/store";
632
648
  var V2_PANEL_ROUTE = "panel/v2";
633
649
  function PopulateStore() {
634
- useEffect2(() => {
650
+ useEffect3(() => {
635
651
  void loadDefaultStyles();
636
652
  registerDataHook("after", "editor/documents/attach-preview", async () => {
637
653
  if (selectIsDirty(getState3())) {
@@ -660,6 +676,10 @@ function init() {
660
676
  }
661
677
  });
662
678
  stylesRepository.register(defaultStylesStylesProvider);
679
+ injectIntoLogic({
680
+ id: "default-styles-import-listener",
681
+ component: GlobalStylesImportListener
682
+ });
663
683
  injectIntoLogic({
664
684
  id: "default-styles-populate-store",
665
685
  component: PopulateStore
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/default-styles-tab-embedded.tsx","../src/allowed-tags.ts","../src/default-styles-provider.ts","../src/capabilities.ts","../src/store.ts","../src/save-default-styles.ts","../src/api.ts","../src/components/tag-chip.tsx","../src/components/tag-state-menu.tsx","../src/init.ts","../src/components/populate-store.tsx","../src/load-default-styles.ts"],"sourcesContent":["import * as React from 'react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n\tControlActionsProvider,\n\tControlReplacementsProvider,\n\tgetControlReplacements,\n} from '@elementor/editor-controls';\nimport {\n\tClassesPropProvider,\n\tCreatableAutocomplete,\n\tElementProvider,\n\ttype Option,\n\tSectionsList,\n\tStyleInheritanceProvider,\n\tStyleProvider,\n\tStyleSections,\n\tStyleTabSlot,\n} from '@elementor/editor-editing-panel';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { type StyleDefinitionID, type StyleDefinitionState } from '@elementor/editor-styles';\nimport { useUserStylesCapability } from '@elementor/editor-styles-repository';\nimport { SaveChangesDialog, ThemeProvider, useDialog } from '@elementor/editor-ui';\nimport { controlActionsMenu } from '@elementor/menus';\nimport { useMutation } from '@elementor/query';\nimport { getSessionStorageItem, SessionStorageProvider, setSessionStorageItem } from '@elementor/session';\nimport { __dispatch as dispatch, __useSelector as useSelector } from '@elementor/store';\nimport {\n\ttype AutocompleteChangeReason,\n\tBox,\n\tButton,\n\tErrorBoundary,\n\tFormControl,\n\tFormLabel,\n\tStack,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\ttype AllowedHtmlTag,\n\tgetAllowedDefaultStyleTags,\n\tgetDefaultActiveTag,\n\tisAllowedDefaultStyleTag,\n} from '../allowed-tags';\nimport { DEFAULT_STYLES_PROVIDER_KEY } from '../default-styles-provider';\nimport { saveDefaultStyles } from '../save-default-styles';\nimport { selectIsDirty, slice } from '../store';\nimport { TagChip } from './tag-chip';\n\nconst { useMenuItems } = controlActionsMenu;\n\nconst SHIM_ELEMENT_ID = 'default-styles-editor-shim';\nconst SHIM_CLASSES_PROP = '__default_styles_classes__';\nconst TAG_SELECTOR_ID = 'default-styles-tag-selector';\nconst LAST_ACTIVE_TAG_SESSION_PREFIX = 'default-styles';\nconst LAST_ACTIVE_TAG_SESSION_KEY = 'last-active-tag';\nconst LAST_ACTIVE_TAG_STORAGE_KEY = `${ LAST_ACTIVE_TAG_SESSION_PREFIX }/${ LAST_ACTIVE_TAG_SESSION_KEY }`;\n\nfunction readStoredActiveTag( allowedTags: AllowedHtmlTag[] ): AllowedHtmlTag {\n\tconst storedTag = getSessionStorageItem< AllowedHtmlTag >( LAST_ACTIVE_TAG_STORAGE_KEY );\n\n\tif ( storedTag && isAllowedDefaultStyleTag( storedTag, allowedTags ) ) {\n\t\treturn storedTag;\n\t}\n\n\treturn getDefaultActiveTag( allowedTags );\n}\n\nfunction toTagChip( tag: AllowedHtmlTag ): Option {\n\treturn { label: tag, value: tag, fixed: true };\n}\n\nconst shimElement: Element = {\n\tid: SHIM_ELEMENT_ID,\n\ttype: 'default-style',\n};\n\nconst shimElementType: ElementType = {\n\tkey: 'default-style',\n\tcontrols: [],\n\tpropsSchema: {},\n\ttitle: __( 'Default Style', 'elementor' ),\n};\n\nexport type DefaultStylesTabEmbeddedProps = {\n\tonRequestClose: () => void | Promise< void >;\n\tonExposeCloseAttempt?: ( attemptClose: ( () => void ) | null ) => void;\n};\n\nexport function DefaultStylesTabEmbedded( { onRequestClose, onExposeCloseAttempt }: DefaultStylesTabEmbeddedProps ) {\n\tconst allowedTags = useMemo( () => getAllowedDefaultStyleTags(), [] );\n\tconst tagOptions = useMemo< Option[] >(\n\t\t() => allowedTags.map( ( tag ) => ( { label: tag, value: tag } ) ),\n\t\t[ allowedTags ]\n\t);\n\tconst [ selectedTag, setSelectedTagState ] = useState< AllowedHtmlTag >( () => readStoredActiveTag( allowedTags ) );\n\tconst [ activeStyleState, setActiveStyleState ] = useState< StyleDefinitionState | null >( null );\n\tconst breakpoint = useActiveBreakpoint();\n\tconst menuItems = useMenuItems().default;\n\tconst controlReplacements = getControlReplacements();\n\tconst isDirty = useSelector( selectIsDirty );\n\tconst { mutateAsync: save, isPending: isSaving } = useSave();\n\tconst { open: openSaveChangesDialog, close: closeSaveChangesDialog, isOpen: isSaveChangesDialogOpen } = useDialog();\n\tconst { userCan } = useUserStylesCapability();\n\tconst canEdit = userCan( DEFAULT_STYLES_PROVIDER_KEY ).updateProps;\n\n\tconst setSelectedTag = ( tag: AllowedHtmlTag ) => {\n\t\tsetSelectedTagState( tag );\n\t\tsetSessionStorageItem( LAST_ACTIVE_TAG_STORAGE_KEY, tag );\n\t};\n\n\tconst handleClosePanel = useCallback( () => {\n\t\tif ( canEdit && isDirty ) {\n\t\t\topenSaveChangesDialog();\n\t\t\treturn;\n\t\t}\n\n\t\tvoid onRequestClose();\n\t}, [ canEdit, isDirty, onRequestClose, openSaveChangesDialog ] );\n\n\tuseEffect( () => {\n\t\tif ( ! onExposeCloseAttempt ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonExposeCloseAttempt( () => handleClosePanel() );\n\n\t\treturn () => onExposeCloseAttempt( null );\n\t}, [ onExposeCloseAttempt, handleClosePanel ] );\n\n\tusePreventUnload( canEdit && isDirty );\n\n\tconst handleTagSelect = ( _selected: Option[], reason: AutocompleteChangeReason, option: Option ) => {\n\t\tif ( reason !== 'selectOption' || ! option.value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetSelectedTag( option.value as AllowedHtmlTag );\n\t\tsetActiveStyleState( null );\n\t};\n\n\tconst resetAndClosePanel = () => {\n\t\tdispatch( slice.actions.reset() );\n\t\tcloseSaveChangesDialog();\n\t\tvoid onRequestClose();\n\t};\n\n\tconst handleSaveAndContinue = async () => {\n\t\ttry {\n\t\t\tawait save();\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tcloseSaveChangesDialog();\n\t\tvoid onRequestClose();\n\t};\n\n\treturn (\n\t\t<ErrorBoundary fallback={ null }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t<ControlReplacementsProvider replacements={ controlReplacements }>\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\tminHeight: 0,\n\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Box sx={ { flex: 1, minHeight: 0, overflow: 'auto' } }>\n\t\t\t\t\t\t\t\t<Stack sx={ { px: 2, pt: 1, gap: 1 } }>\n\t\t\t\t\t\t\t\t\t<FormControl fullWidth size=\"small\">\n\t\t\t\t\t\t\t\t\t\t<FormLabel htmlFor={ TAG_SELECTOR_ID } size=\"small\" sx={ { mb: 1 } }>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Tag', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<CreatableAutocomplete< Option >\n\t\t\t\t\t\t\t\t\t\t\tid={ TAG_SELECTOR_ID }\n\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={ __( 'Type tag name', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t\toptions={ tagOptions }\n\t\t\t\t\t\t\t\t\t\t\tselected={ [ toTagChip( selectedTag ) ] }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ handleTagSelect }\n\t\t\t\t\t\t\t\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tvalues.map( ( value, index ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TagChip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ value.value ?? value.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchipProps={ getTagProps( { index } ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveState={ activeStyleState }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectState={ setActiveStyleState }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t<ElementProvider\n\t\t\t\t\t\t\t\t\telement={ shimElement }\n\t\t\t\t\t\t\t\t\telementType={ shimElementType }\n\t\t\t\t\t\t\t\t\tsettings={ {} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ClassesPropProvider prop={ SHIM_CLASSES_PROP }>\n\t\t\t\t\t\t\t\t\t\t<StyleProvider\n\t\t\t\t\t\t\t\t\t\t\tmeta={ {\n\t\t\t\t\t\t\t\t\t\t\t\tbreakpoint,\n\t\t\t\t\t\t\t\t\t\t\t\tstate: activeStyleState,\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tid={ selectedTag as StyleDefinitionID }\n\t\t\t\t\t\t\t\t\t\t\tsetId={ () => {} }\n\t\t\t\t\t\t\t\t\t\t\tsetMetaState={ setActiveStyleState }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<SessionStorageProvider prefix={ selectedTag }>\n\t\t\t\t\t\t\t\t\t\t\t\t<StyleInheritanceProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SectionsList>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StyleSections />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StyleTabSlot />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SectionsList>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: '150px',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</StyleInheritanceProvider>\n\t\t\t\t\t\t\t\t\t\t\t</SessionStorageProvider>\n\t\t\t\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t\t\t\t</ClassesPropProvider>\n\t\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t{ canEdit ? (\n\t\t\t\t\t\t\t\t<Box sx={ { flexShrink: 0, px: 2, py: 1.5 } }>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tcolor=\"global\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => void save() }\n\t\t\t\t\t\t\t\t\t\tdisabled={ ! isDirty }\n\t\t\t\t\t\t\t\t\t\tloading={ isSaving }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Save changes', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t) : null }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t</ControlActionsProvider>\n\n\t\t\t\t{ canEdit && isSaveChangesDialogOpen && (\n\t\t\t\t\t<SaveChangesDialog>\n\t\t\t\t\t\t<SaveChangesDialog.Title onClose={ closeSaveChangesDialog }>\n\t\t\t\t\t\t\t{ __( 'You have unsaved changes', 'elementor' ) }\n\t\t\t\t\t\t</SaveChangesDialog.Title>\n\t\t\t\t\t\t<SaveChangesDialog.Content>\n\t\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t\t{ __( 'You have unsaved changes in Default Styles.', 'elementor' ) }\n\t\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t\t{ __( 'To avoid losing your updates, save your changes before leaving.', 'elementor' ) }\n\t\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t\t</SaveChangesDialog.Content>\n\t\t\t\t\t\t<SaveChangesDialog.Actions\n\t\t\t\t\t\t\tactions={ {\n\t\t\t\t\t\t\t\tdiscard: {\n\t\t\t\t\t\t\t\t\tlabel: __( 'Discard', 'elementor' ),\n\t\t\t\t\t\t\t\t\taction: resetAndClosePanel,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconfirm: {\n\t\t\t\t\t\t\t\t\tlabel: __( 'Save & Continue', 'elementor' ),\n\t\t\t\t\t\t\t\t\taction: handleSaveAndContinue,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SaveChangesDialog>\n\t\t\t\t) }\n\t\t\t</ThemeProvider>\n\t\t</ErrorBoundary>\n\t);\n}\n\nfunction useSave() {\n\treturn useMutation( {\n\t\tmutationFn: () => saveDefaultStyles(),\n\t} );\n}\n\nfunction usePreventUnload( isDirty: boolean ) {\n\tuseEffect( () => {\n\t\tconst handleBeforeUnload = ( event: BeforeUnloadEvent ) => {\n\t\t\tif ( isDirty ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener( 'beforeunload', handleBeforeUnload );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'beforeunload', handleBeforeUnload );\n\t\t};\n\t}, [ isDirty ] );\n}\n","type ExtendedWindow = Window & {\n\telementor: {\n\t\tconfig: {\n\t\t\tatomic?: {\n\t\t\t\tdefault_styles?: {\n\t\t\t\t\tallowed_tags?: string[];\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n};\n\nconst getElementorConfig = () => ( window as unknown as ExtendedWindow ).elementor?.config ?? {};\n\nexport const getAllowedDefaultStyleTags = (): string[] => {\n\tconst tags = getElementorConfig().atomic?.default_styles?.allowed_tags;\n\n\tif ( ! tags?.length ) {\n\t\treturn [];\n\t}\n\n\treturn tags;\n};\n\nexport type AllowedHtmlTag = string;\n\nexport const getDefaultActiveTag = ( tags: string[] ): AllowedHtmlTag => {\n\tif ( tags.includes( 'h1' ) ) {\n\t\treturn 'h1';\n\t}\n\n\treturn tags[ 0 ] ?? '';\n};\n\nexport const isAllowedDefaultStyleTag = ( tag: string, tags = getAllowedDefaultStyleTags() ): tag is AllowedHtmlTag =>\n\ttags.includes( tag );\n","import { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\nimport { createStylesProvider } from '@elementor/editor-styles-repository';\nimport {\n\t__dispatch as dispatch,\n\t__getState as getState,\n\t__subscribeWithSelector as subscribeWithSelector,\n} from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { getAllowedDefaultStyleTags } from './allowed-tags';\nimport { getCapabilities } from './capabilities';\nimport { selectData, slice } from './store';\n\nexport const DEFAULT_STYLES_PROVIDER_KEY = 'default-styles';\nexport const DEFAULT_STYLES_CSS_NAME_PREFIX = 'e-default-';\n\nconst resolveCssName = ( id: StyleDefinitionID ) => `${ DEFAULT_STYLES_CSS_NAME_PREFIX }${ id }`;\n\nconst placeholderDefinition = ( id: StyleDefinitionID ): StyleDefinition => ( {\n\tid,\n\tlabel: id,\n\ttype: 'class',\n\tvariants: [],\n} );\n\nconst asClassDefinition = ( style: StyleDefinition ): StyleDefinition => ( {\n\t...style,\n\ttype: 'class',\n} );\n\nexport const defaultStylesStylesProvider = createStylesProvider( {\n\tkey: DEFAULT_STYLES_PROVIDER_KEY,\n\tpriority: 15,\n\tlabels: {\n\t\tsingular: __( 'tag', 'elementor' ),\n\t\tplural: __( 'tags', 'elementor' ),\n\t},\n\tsubscribe: ( cb ) => subscribeWithStates( cb ),\n\tcapabilities: getCapabilities(),\n\tactions: {\n\t\tall: () =>\n\t\t\tgetAllowedDefaultStyleTags().map( ( tag ) => {\n\t\t\t\tconst style = selectData( getState() )[ tag ];\n\n\t\t\t\treturn style ? asClassDefinition( style ) : placeholderDefinition( tag );\n\t\t\t} ),\n\t\tget: ( id ) => {\n\t\t\tconst style = selectData( getState() )[ id ];\n\n\t\t\treturn style ? asClassDefinition( style ) : placeholderDefinition( id );\n\t\t},\n\t\tresolveCssName,\n\t\tupdate: ( payload ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.update( {\n\t\t\t\t\tstyle: payload,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tdelete: ( id ) => {\n\t\t\tdispatch( slice.actions.deleteTag( id ) );\n\t\t},\n\t\tupdateProps: ( args ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.updateProps( {\n\t\t\t\t\tid: args.id,\n\t\t\t\t\tmeta: args.meta,\n\t\t\t\t\tprops: args.props,\n\t\t\t\t\tmode: args.mode,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tupdateCustomCss: ( args ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.updateProps( {\n\t\t\t\t\tid: args.id,\n\t\t\t\t\tmeta: args.meta,\n\t\t\t\t\tcustom_css: args.custom_css,\n\t\t\t\t\tprops: {},\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t},\n} );\n\nconst subscribeWithStates = (\n\tcb: ( previous: Record< string, StyleDefinition >, current: Record< string, StyleDefinition > ) => void\n) => {\n\tlet previousState = selectData( getState() );\n\n\treturn subscribeWithSelector(\n\t\t( state ) => selectData( state ),\n\t\t( currentState ) => {\n\t\t\tcb( previousState, currentState );\n\t\t\tpreviousState = currentState;\n\t\t}\n\t);\n};\n","import { type UserCapabilities } from '@elementor/editor-styles-repository';\n\nexport const UPDATE_DEFAULT_STYLES_CAPABILITY_KEY = 'manage_options';\n\nexport const getCapabilities = (): UserCapabilities => {\n\treturn {\n\t\tupdate: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tcreate: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tdelete: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tupdateProps: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t};\n};\n","import { type Props } from '@elementor/editor-props';\nimport {\n\ttype CustomCss,\n\tgetVariantByMeta,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { type UpdateActionPayload } from '@elementor/editor-styles-repository';\nimport {\n\t__createSelector as createSelector,\n\t__createSlice as createSlice,\n\ttype PayloadAction,\n\ttype SliceState,\n} from '@elementor/store';\n\ntype DefaultStylesState = {\n\tdata: Record< StyleDefinitionID, StyleDefinition >;\n\tinitialData: Record< StyleDefinitionID, StyleDefinition >;\n\tisDirty: boolean;\n};\n\nconst initialState: DefaultStylesState = {\n\tdata: {},\n\tinitialData: {},\n\tisDirty: false,\n};\n\nexport type StateWithDefaultStyles = SliceState< typeof slice >;\n\nconst SLICE_NAME = 'defaultStyles';\n\nexport const slice = createSlice( {\n\tname: SLICE_NAME,\n\tinitialState,\n\treducers: {\n\t\tload(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload: { data },\n\t\t\t}: PayloadAction< {\n\t\t\t\tdata: Record< StyleDefinitionID, StyleDefinition >;\n\t\t\t} >\n\t\t) {\n\t\t\tconst normalizedData = Array.isArray( data ) ? {} : data;\n\n\t\t\tstate.initialData = structuredClone( normalizedData );\n\t\t\tstate.data = structuredClone( normalizedData );\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tupdate( state, { payload }: PayloadAction< { style: UpdateActionPayload } > ) {\n\t\t\tstate.data[ payload.style.id ] = {\n\t\t\t\t...state.data[ payload.style.id ],\n\t\t\t\t...payload.style,\n\t\t\t} as StyleDefinition;\n\t\t\tstate.isDirty = true;\n\t\t},\n\n\t\tupdateProps(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload,\n\t\t\t}: PayloadAction< {\n\t\t\t\tid: StyleDefinitionID;\n\t\t\t\tmeta: StyleDefinitionVariant[ 'meta' ];\n\t\t\t\tprops: Props;\n\t\t\t\tcustom_css?: CustomCss | null;\n\t\t\t\tmode?: 'merge' | 'replace';\n\t\t\t} >\n\t\t) {\n\t\t\tconst style = state.data[ payload.id ] ?? {\n\t\t\t\tid: payload.id,\n\t\t\t\tlabel: payload.id,\n\t\t\t\ttype: 'class' as const,\n\t\t\t\tvariants: [],\n\t\t\t};\n\n\t\t\tconst variant = getVariantByMeta( style, payload.meta );\n\t\t\tlet customCss = ( 'custom_css' in payload ? payload.custom_css : variant?.custom_css ) ?? null;\n\t\t\tcustomCss = customCss?.raw ? customCss : null;\n\n\t\t\tif ( variant ) {\n\t\t\t\tconst payloadProps = JSON.parse( JSON.stringify( payload.props ) ) as Props;\n\t\t\t\tconst mode = payload.mode ?? 'merge';\n\n\t\t\t\tif ( mode === 'replace' ) {\n\t\t\t\t\tvariant.props = payloadProps;\n\t\t\t\t} else {\n\t\t\t\t\tvariant.props = { ...variant.props, ...payloadProps };\n\t\t\t\t}\n\n\t\t\t\tvariant.custom_css = customCss;\n\t\t\t} else {\n\t\t\t\tstyle.variants.push( {\n\t\t\t\t\tmeta: payload.meta,\n\t\t\t\t\tprops: payload.props,\n\t\t\t\t\tcustom_css: customCss,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tstate.data[ payload.id ] = style;\n\t\t\tstate.isDirty = true;\n\t\t},\n\n\t\treset( state ) {\n\t\t\tstate.data = state.initialData;\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tcommit( state ) {\n\t\t\tstate.initialData = state.data;\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tdeleteTag( state, { payload }: PayloadAction< StyleDefinitionID > ) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\tdelete state.data[ payload ];\n\t\t\tstate.isDirty = true;\n\t\t},\n\t},\n} );\n\nexport const selectData = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.data,\n\t( data ) => data\n);\n\nexport const selectIsDirty = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.isDirty,\n\t( isDirty ) => isDirty\n);\n\nexport const selectInitialData = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.initialData,\n\t( initialData ) => initialData\n);\n\nexport const selectTagStyle = createSelector(\n\t[ selectData, ( _state: StateWithDefaultStyles, id: StyleDefinitionID ) => id ],\n\t( data, id ) => data[ id ]\n);\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\nimport { hash } from '@elementor/utils';\n\nimport { type AllowedHtmlTag } from './allowed-tags';\nimport { apiClient } from './api';\nimport { selectData, selectInitialData, selectIsDirty, slice, type StateWithDefaultStyles } from './store';\n\nfunction getChangedTags( state: StateWithDefaultStyles ): AllowedHtmlTag[] {\n\tconst current = selectData( state );\n\tconst initial = selectInitialData( state );\n\n\tconst changed: AllowedHtmlTag[] = [];\n\n\tObject.keys( current ).forEach( ( tag ) => {\n\t\tconst currentStyle = current[ tag ];\n\t\tconst initialStyle = initial[ tag ];\n\n\t\tif ( ! initialStyle || hash( currentStyle ) !== hash( initialStyle ) ) {\n\t\t\tchanged.push( tag as AllowedHtmlTag );\n\t\t}\n\t} );\n\n\tObject.keys( initial ).forEach( ( tag ) => {\n\t\tif ( ! current[ tag ] ) {\n\t\t\tchanged.push( tag as AllowedHtmlTag );\n\t\t}\n\t} );\n\n\treturn changed;\n}\n\nexport async function saveDefaultStyles() {\n\tconst state = getState() as StateWithDefaultStyles;\n\n\tif ( ! selectIsDirty( state ) ) {\n\t\treturn;\n\t}\n\n\tconst data = selectData( state );\n\tconst changedTags = getChangedTags( state );\n\n\tawait Promise.all(\n\t\tchangedTags.map( async ( tag ) => {\n\t\t\tconst style = data[ tag ];\n\n\t\t\tif ( ! style || style.variants.length === 0 ) {\n\t\t\t\tawait apiClient.delete( tag );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait apiClient.put( tag, style.variants );\n\t\t} )\n\t);\n\n\tdispatch( slice.actions.commit() );\n}\n","import { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\n\nimport { type AllowedHtmlTag } from './allowed-tags';\n\nconst RESOURCE_URL = '/default-styles';\nconst BASE_URL = 'elementor/v1';\n\nexport type DefaultStylesMap = Record< StyleDefinitionID, StyleDefinition >;\n\ntype DefaultStylesHttpResponse = HttpResponse< DefaultStylesMap >;\n\nexport const apiClient = {\n\tall: () => httpService().get< DefaultStylesHttpResponse >( `${ BASE_URL }${ RESOURCE_URL }` ),\n\n\tput: ( tag: AllowedHtmlTag, variants: StyleDefinition[ 'variants' ] ) =>\n\t\thttpService().put( `${ BASE_URL }${ RESOURCE_URL }/${ tag }`, {\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} ),\n\n\tdelete: ( tag: AllowedHtmlTag ) => httpService().delete( `${ BASE_URL }${ RESOURCE_URL }/${ tag }` ),\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport {\n\ttype AutocompleteRenderGetTagProps,\n\tbindTrigger,\n\tChip,\n\tStack,\n\ttype Theme,\n\tTypography,\n\tUnstableChipGroup,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { TagStateMenu } from './tag-state-menu';\n\nconst CHIP_SIZE = 'tiny';\n\ntype TagChipProps = {\n\tlabel: string;\n\tchipProps: ReturnType< AutocompleteRenderGetTagProps >;\n\tactiveState: StyleDefinitionState | null;\n\tonSelectState: ( state: StyleDefinitionState | null ) => void;\n};\n\nexport function TagChip( { label, chipProps, activeState, onSelectState }: TagChipProps ) {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: 'tag-state-menu',\n\t} );\n\tconst [ chipRef, setChipRef ] = useState< HTMLElement | null >( null );\n\n\tconst { onDelete: _onDelete, ...chipGroupProps } = chipProps;\n\tconst isShowingState = Boolean( activeState );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableChipGroup\n\t\t\t\tref={ setChipRef }\n\t\t\t\t{ ...chipGroupProps }\n\t\t\t\taria-label={ `Edit ${ label }` }\n\t\t\t\trole=\"group\"\n\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t'&.MuiChipGroup-root.MuiAutocomplete-tag': {\n\t\t\t\t\t\tmargin: theme.spacing( 0.125 ),\n\t\t\t\t\t},\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<Chip\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tvariant={ isShowingState ? 'standard' : 'filled' }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isShowingState ) {\n\t\t\t\t\t\t\tonSelectState( null );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tlineHeight: 1,\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t\t<Chip\n\t\t\t\t\ticon={ isShowingState ? undefined : <DotsVerticalIcon fontSize=\"tiny\" /> }\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tisShowingState ? (\n\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t<Typography variant=\"inherit\">{ activeState }</Typography>\n\t\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t) : undefined\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\taria-label={ __( 'Open tag state menu', 'elementor' ) }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\tpaddingRight: 0,\n\t\t\t\t\t\t...( ! isShowingState ? { paddingLeft: 0 } : {} ),\n\t\t\t\t\t\t'.MuiChip-label': isShowingState ? { paddingRight: 0 } : { padding: 0 },\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</UnstableChipGroup>\n\t\t\t<TagStateMenu\n\t\t\t\tpopupState={ popupState }\n\t\t\t\tanchorEl={ chipRef }\n\t\t\t\tactiveState={ activeState }\n\t\t\t\tonSelectState={ onSelectState }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { DEFAULT_PSEUDO_STATES, PseudoStateMenuItems } from '@elementor/editor-editing-panel';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { bindMenu, Menu, type PopupState } from '@elementor/ui';\n\ntype TagStateMenuProps = {\n\tpopupState: PopupState;\n\tanchorEl: HTMLElement | null;\n\tactiveState: StyleDefinitionState | null;\n\tonSelectState: ( state: StyleDefinitionState | null ) => void;\n};\n\nexport function TagStateMenu( { popupState, anchorEl, activeState, onSelectState }: TagStateMenuProps ) {\n\treturn (\n\t\t<Menu\n\t\t\tMenuListProps={ { dense: true, sx: { minWidth: '160px' } } }\n\t\t\t{ ...bindMenu( popupState ) }\n\t\t\tanchorEl={ anchorEl }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\ttransformOrigin={ { horizontal: 'left', vertical: -4 } }\n\t\t\tdisableAutoFocusItem\n\t\t>\n\t\t\t<PseudoStateMenuItems\n\t\t\t\tstates={ DEFAULT_PSEUDO_STATES }\n\t\t\t\tactiveState={ activeState }\n\t\t\t\tonSelectState={ onSelectState }\n\t\t\t\tonClose={ popupState.close }\n\t\t\t/>\n\t\t</Menu>\n\t);\n}\n","import { injectIntoLogic } from '@elementor/editor';\nimport { registerElementPanelDefaults } from '@elementor/editor-editing-panel';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { __registerSlice as registerSlice } from '@elementor/store';\n\nimport { PopulateStore } from './components/populate-store';\nimport { defaultStylesStylesProvider } from './default-styles-provider';\nimport { slice } from './store';\n\nexport function init() {\n\tregisterSlice( slice );\n\n\tregisterElementPanelDefaults( 'default-style', {\n\t\tdefaultTab: 'style',\n\t\tdefaultSectionsExpanded: {\n\t\t\tstyle: [],\n\t\t},\n\t} );\n\n\tstylesRepository.register( defaultStylesStylesProvider );\n\n\tinjectIntoLogic( {\n\t\tid: 'default-styles-populate-store',\n\t\tcomponent: PopulateStore,\n\t} );\n}\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, registerDataHook, routeCloseEvent } from '@elementor/editor-v1-adapters';\nimport { __getState as getState } from '@elementor/store';\n\nimport { loadDefaultStyles } from '../load-default-styles';\nimport { selectIsDirty } from '../store';\n\nconst V2_PANEL_ROUTE = 'panel/v2';\n\nexport function PopulateStore() {\n\tuseEffect( () => {\n\t\tvoid loadDefaultStyles();\n\n\t\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\t\tif ( selectIsDirty( getState() ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait loadDefaultStyles();\n\t\t} );\n\n\t\tconst unsubscribe = listenTo( routeCloseEvent( V2_PANEL_ROUTE ), () => {\n\t\t\tif ( selectIsDirty( getState() ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvoid loadDefaultStyles();\n\t\t} );\n\n\t\treturn unsubscribe;\n\t}, [] );\n\n\treturn null;\n}\n","import { __dispatch as dispatch } from '@elementor/store';\n\nimport { apiClient } from './api';\nimport { slice } from './store';\n\nexport async function loadDefaultStyles() {\n\ttry {\n\t\tconst response = await apiClient.all();\n\n\t\tconst items = response.data.data;\n\n\t\tdispatch(\n\t\t\tslice.actions.load( {\n\t\t\t\tdata: items,\n\t\t\t} )\n\t\t);\n\t} catch {}\n}\n"],"mappings":"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","names":["React","useState","dispatch","Stack","__","dispatch","getState","getState","dispatch","React","__","__","__","useState","dispatch","Stack","useEffect","getState","dispatch","dispatch","useEffect","getState"]}
1
+ {"version":3,"sources":["../src/components/default-styles-tab-embedded.tsx","../src/allowed-tags.ts","../src/default-styles-provider.ts","../src/capabilities.ts","../src/store.ts","../src/save-default-styles.ts","../src/api.ts","../src/components/tag-chip.tsx","../src/components/tag-state-menu.tsx","../src/init.ts","../src/components/global-styles-import-listener.tsx","../src/load-default-styles.ts","../src/components/populate-store.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n\tControlActionsProvider,\n\tControlReplacementsProvider,\n\tgetControlReplacements,\n} from '@elementor/editor-controls';\nimport {\n\tClassesPropProvider,\n\tCreatableAutocomplete,\n\tElementProvider,\n\ttype Option,\n\tSectionsList,\n\tStyleInheritanceProvider,\n\tStyleProvider,\n\tStyleSections,\n\tStyleTabSlot,\n} from '@elementor/editor-editing-panel';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { type StyleDefinitionID, type StyleDefinitionState } from '@elementor/editor-styles';\nimport { useUserStylesCapability } from '@elementor/editor-styles-repository';\nimport { SaveChangesDialog, ThemeProvider, useDialog } from '@elementor/editor-ui';\nimport { controlActionsMenu } from '@elementor/menus';\nimport { useMutation } from '@elementor/query';\nimport { getSessionStorageItem, SessionStorageProvider, setSessionStorageItem } from '@elementor/session';\nimport { __dispatch as dispatch, __useSelector as useSelector } from '@elementor/store';\nimport {\n\ttype AutocompleteChangeReason,\n\tBox,\n\tButton,\n\tErrorBoundary,\n\tFormControl,\n\tFormLabel,\n\tStack,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport {\n\ttype AllowedHtmlTag,\n\tgetAllowedDefaultStyleTags,\n\tgetDefaultActiveTag,\n\tisAllowedDefaultStyleTag,\n} from '../allowed-tags';\nimport { DEFAULT_STYLES_PROVIDER_KEY } from '../default-styles-provider';\nimport { saveDefaultStyles } from '../save-default-styles';\nimport { selectIsDirty, slice } from '../store';\nimport { TagChip } from './tag-chip';\n\nconst { useMenuItems } = controlActionsMenu;\n\nconst SHIM_ELEMENT_ID = 'default-styles-editor-shim';\nconst SHIM_CLASSES_PROP = '__default_styles_classes__';\nconst TAG_SELECTOR_ID = 'default-styles-tag-selector';\nconst LAST_ACTIVE_TAG_SESSION_PREFIX = 'default-styles';\nconst LAST_ACTIVE_TAG_SESSION_KEY = 'last-active-tag';\nconst LAST_ACTIVE_TAG_STORAGE_KEY = `${ LAST_ACTIVE_TAG_SESSION_PREFIX }/${ LAST_ACTIVE_TAG_SESSION_KEY }`;\n\nfunction readStoredActiveTag( allowedTags: AllowedHtmlTag[] ): AllowedHtmlTag {\n\tconst storedTag = getSessionStorageItem< AllowedHtmlTag >( LAST_ACTIVE_TAG_STORAGE_KEY );\n\n\tif ( storedTag && isAllowedDefaultStyleTag( storedTag, allowedTags ) ) {\n\t\treturn storedTag;\n\t}\n\n\treturn getDefaultActiveTag( allowedTags );\n}\n\nfunction toTagChip( tag: AllowedHtmlTag ): Option {\n\treturn { label: tag, value: tag, fixed: true };\n}\n\nconst shimElement: Element = {\n\tid: SHIM_ELEMENT_ID,\n\ttype: 'default-style',\n};\n\nconst shimElementType: ElementType = {\n\tkey: 'default-style',\n\tcontrols: [],\n\tpropsSchema: {},\n\ttitle: __( 'Default Style', 'elementor' ),\n};\n\nexport type DefaultStylesTabEmbeddedProps = {\n\tonRequestClose: () => void | Promise< void >;\n\tonExposeCloseAttempt?: ( attemptClose: ( () => void ) | null ) => void;\n};\n\nexport function DefaultStylesTabEmbedded( { onRequestClose, onExposeCloseAttempt }: DefaultStylesTabEmbeddedProps ) {\n\tconst allowedTags = useMemo( () => getAllowedDefaultStyleTags(), [] );\n\tconst tagOptions = useMemo< Option[] >(\n\t\t() => allowedTags.map( ( tag ) => ( { label: tag, value: tag } ) ),\n\t\t[ allowedTags ]\n\t);\n\tconst [ selectedTag, setSelectedTagState ] = useState< AllowedHtmlTag >( () => readStoredActiveTag( allowedTags ) );\n\tconst [ activeStyleState, setActiveStyleState ] = useState< StyleDefinitionState | null >( null );\n\tconst breakpoint = useActiveBreakpoint();\n\tconst menuItems = useMenuItems().default;\n\tconst controlReplacements = getControlReplacements();\n\tconst isDirty = useSelector( selectIsDirty );\n\tconst { mutateAsync: save, isPending: isSaving } = useSave();\n\tconst { open: openSaveChangesDialog, close: closeSaveChangesDialog, isOpen: isSaveChangesDialogOpen } = useDialog();\n\tconst { userCan } = useUserStylesCapability();\n\tconst canEdit = userCan( DEFAULT_STYLES_PROVIDER_KEY ).updateProps;\n\n\tconst setSelectedTag = ( tag: AllowedHtmlTag ) => {\n\t\tsetSelectedTagState( tag );\n\t\tsetSessionStorageItem( LAST_ACTIVE_TAG_STORAGE_KEY, tag );\n\t};\n\n\tconst handleClosePanel = useCallback( () => {\n\t\tif ( canEdit && isDirty ) {\n\t\t\topenSaveChangesDialog();\n\t\t\treturn;\n\t\t}\n\n\t\tvoid onRequestClose();\n\t}, [ canEdit, isDirty, onRequestClose, openSaveChangesDialog ] );\n\n\tuseEffect( () => {\n\t\tif ( ! onExposeCloseAttempt ) {\n\t\t\treturn;\n\t\t}\n\n\t\tonExposeCloseAttempt( () => handleClosePanel() );\n\n\t\treturn () => onExposeCloseAttempt( null );\n\t}, [ onExposeCloseAttempt, handleClosePanel ] );\n\n\tusePreventUnload( canEdit && isDirty );\n\n\tconst handleTagSelect = ( _selected: Option[], reason: AutocompleteChangeReason, option: Option ) => {\n\t\tif ( reason !== 'selectOption' || ! option.value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetSelectedTag( option.value as AllowedHtmlTag );\n\t\tsetActiveStyleState( null );\n\t};\n\n\tconst resetAndClosePanel = () => {\n\t\tdispatch( slice.actions.reset() );\n\t\tcloseSaveChangesDialog();\n\t\tvoid onRequestClose();\n\t};\n\n\tconst handleSaveAndContinue = async () => {\n\t\ttry {\n\t\t\tawait save();\n\t\t} catch {\n\t\t\treturn;\n\t\t}\n\n\t\tcloseSaveChangesDialog();\n\t\tvoid onRequestClose();\n\t};\n\n\treturn (\n\t\t<ErrorBoundary fallback={ null }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t<ControlReplacementsProvider replacements={ controlReplacements }>\n\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\tminHeight: 0,\n\t\t\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Box sx={ { flex: 1, minHeight: 0, overflow: 'auto' } }>\n\t\t\t\t\t\t\t\t<Stack sx={ { px: 2, pt: 1, gap: 1 } }>\n\t\t\t\t\t\t\t\t\t<FormControl fullWidth size=\"small\">\n\t\t\t\t\t\t\t\t\t\t<FormLabel htmlFor={ TAG_SELECTOR_ID } size=\"small\" sx={ { mb: 1 } }>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Tag', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t</FormLabel>\n\t\t\t\t\t\t\t\t\t\t<CreatableAutocomplete< Option >\n\t\t\t\t\t\t\t\t\t\t\tid={ TAG_SELECTOR_ID }\n\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={ __( 'Type tag name', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t\toptions={ tagOptions }\n\t\t\t\t\t\t\t\t\t\t\tselected={ [ toTagChip( selectedTag ) ] }\n\t\t\t\t\t\t\t\t\t\t\tonSelect={ handleTagSelect }\n\t\t\t\t\t\t\t\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\t\t\t\t\t\t\t\tvalues.map( ( value, index ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<TagChip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ value.value ?? value.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tchipProps={ getTagProps( { index } ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tactiveState={ activeStyleState }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectState={ setActiveStyleState }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t) )\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</FormControl>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t<ElementProvider\n\t\t\t\t\t\t\t\t\telement={ shimElement }\n\t\t\t\t\t\t\t\t\telementType={ shimElementType }\n\t\t\t\t\t\t\t\t\tsettings={ {} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ClassesPropProvider prop={ SHIM_CLASSES_PROP }>\n\t\t\t\t\t\t\t\t\t\t<StyleProvider\n\t\t\t\t\t\t\t\t\t\t\tmeta={ {\n\t\t\t\t\t\t\t\t\t\t\t\tbreakpoint,\n\t\t\t\t\t\t\t\t\t\t\t\tstate: activeStyleState,\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tid={ selectedTag as StyleDefinitionID }\n\t\t\t\t\t\t\t\t\t\t\tsetId={ () => {} }\n\t\t\t\t\t\t\t\t\t\t\tsetMetaState={ setActiveStyleState }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<SessionStorageProvider prefix={ selectedTag }>\n\t\t\t\t\t\t\t\t\t\t\t\t<StyleInheritanceProvider>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<SectionsList>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StyleSections />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<StyleTabSlot />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</SectionsList>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: '150px',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</StyleInheritanceProvider>\n\t\t\t\t\t\t\t\t\t\t\t</SessionStorageProvider>\n\t\t\t\t\t\t\t\t\t\t</StyleProvider>\n\t\t\t\t\t\t\t\t\t</ClassesPropProvider>\n\t\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t{ canEdit ? (\n\t\t\t\t\t\t\t\t<Box sx={ { flexShrink: 0, px: 2, py: 1.5 } }>\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\tcolor=\"global\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => void save() }\n\t\t\t\t\t\t\t\t\t\tdisabled={ ! isDirty }\n\t\t\t\t\t\t\t\t\t\tloading={ isSaving }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Save changes', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t) : null }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t</ControlActionsProvider>\n\n\t\t\t\t{ canEdit && isSaveChangesDialogOpen && (\n\t\t\t\t\t<SaveChangesDialog>\n\t\t\t\t\t\t<SaveChangesDialog.Title onClose={ closeSaveChangesDialog }>\n\t\t\t\t\t\t\t{ __( 'You have unsaved changes', 'elementor' ) }\n\t\t\t\t\t\t</SaveChangesDialog.Title>\n\t\t\t\t\t\t<SaveChangesDialog.Content>\n\t\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t\t{ __( 'You have unsaved changes in Default Styles.', 'elementor' ) }\n\t\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t\t{ __( 'To avoid losing your updates, save your changes before leaving.', 'elementor' ) }\n\t\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t\t</SaveChangesDialog.Content>\n\t\t\t\t\t\t<SaveChangesDialog.Actions\n\t\t\t\t\t\t\tactions={ {\n\t\t\t\t\t\t\t\tdiscard: {\n\t\t\t\t\t\t\t\t\tlabel: __( 'Discard', 'elementor' ),\n\t\t\t\t\t\t\t\t\taction: resetAndClosePanel,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconfirm: {\n\t\t\t\t\t\t\t\t\tlabel: __( 'Save & Continue', 'elementor' ),\n\t\t\t\t\t\t\t\t\taction: handleSaveAndContinue,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</SaveChangesDialog>\n\t\t\t\t) }\n\t\t\t</ThemeProvider>\n\t\t</ErrorBoundary>\n\t);\n}\n\nfunction useSave() {\n\treturn useMutation( {\n\t\tmutationFn: () => saveDefaultStyles(),\n\t} );\n}\n\nfunction usePreventUnload( isDirty: boolean ) {\n\tuseEffect( () => {\n\t\tconst handleBeforeUnload = ( event: BeforeUnloadEvent ) => {\n\t\t\tif ( isDirty ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener( 'beforeunload', handleBeforeUnload );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'beforeunload', handleBeforeUnload );\n\t\t};\n\t}, [ isDirty ] );\n}\n","type ExtendedWindow = Window & {\n\telementor: {\n\t\tconfig: {\n\t\t\tatomic?: {\n\t\t\t\tdefault_styles?: {\n\t\t\t\t\tallowed_tags?: string[];\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n};\n\nconst getElementorConfig = () => ( window as unknown as ExtendedWindow ).elementor?.config ?? {};\n\nexport const getAllowedDefaultStyleTags = (): string[] => {\n\tconst tags = getElementorConfig().atomic?.default_styles?.allowed_tags;\n\n\tif ( ! tags?.length ) {\n\t\treturn [];\n\t}\n\n\treturn tags;\n};\n\nexport type AllowedHtmlTag = string;\n\nexport const getDefaultActiveTag = ( tags: string[] ): AllowedHtmlTag => {\n\tif ( tags.includes( 'h1' ) ) {\n\t\treturn 'h1';\n\t}\n\n\treturn tags[ 0 ] ?? '';\n};\n\nexport const isAllowedDefaultStyleTag = ( tag: string, tags = getAllowedDefaultStyleTags() ): tag is AllowedHtmlTag =>\n\ttags.includes( tag );\n","import { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\nimport { createStylesProvider } from '@elementor/editor-styles-repository';\nimport {\n\t__dispatch as dispatch,\n\t__getState as getState,\n\t__subscribeWithSelector as subscribeWithSelector,\n} from '@elementor/store';\nimport { __ } from '@wordpress/i18n';\n\nimport { getAllowedDefaultStyleTags } from './allowed-tags';\nimport { getCapabilities } from './capabilities';\nimport { selectData, slice } from './store';\n\nexport const DEFAULT_STYLES_PROVIDER_KEY = 'default-styles';\nexport const DEFAULT_STYLES_CSS_NAME_PREFIX = 'e-default-';\n\nconst resolveCssName = ( id: StyleDefinitionID ) => `${ DEFAULT_STYLES_CSS_NAME_PREFIX }${ id }`;\n\nconst placeholderDefinition = ( id: StyleDefinitionID ): StyleDefinition => ( {\n\tid,\n\tlabel: id,\n\ttype: 'class',\n\tvariants: [],\n} );\n\nconst asClassDefinition = ( style: StyleDefinition ): StyleDefinition => ( {\n\t...style,\n\ttype: 'class',\n} );\n\nexport const defaultStylesStylesProvider = createStylesProvider( {\n\tkey: DEFAULT_STYLES_PROVIDER_KEY,\n\tpriority: 15,\n\tlabels: {\n\t\tsingular: __( 'tag', 'elementor' ),\n\t\tplural: __( 'tags', 'elementor' ),\n\t},\n\tsubscribe: ( cb ) => subscribeWithStates( cb ),\n\tcapabilities: getCapabilities(),\n\tactions: {\n\t\tall: () =>\n\t\t\tgetAllowedDefaultStyleTags().map( ( tag ) => {\n\t\t\t\tconst style = selectData( getState() )[ tag ];\n\n\t\t\t\treturn style ? asClassDefinition( style ) : placeholderDefinition( tag );\n\t\t\t} ),\n\t\tget: ( id ) => {\n\t\t\tconst style = selectData( getState() )[ id ];\n\n\t\t\treturn style ? asClassDefinition( style ) : placeholderDefinition( id );\n\t\t},\n\t\tresolveCssName,\n\t\tupdate: ( payload ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.update( {\n\t\t\t\t\tstyle: payload,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tdelete: ( id ) => {\n\t\t\tdispatch( slice.actions.deleteTag( id ) );\n\t\t},\n\t\tupdateProps: ( args ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.updateProps( {\n\t\t\t\t\tid: args.id,\n\t\t\t\t\tmeta: args.meta,\n\t\t\t\t\tprops: args.props,\n\t\t\t\t\tmode: args.mode,\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t\tupdateCustomCss: ( args ) => {\n\t\t\tdispatch(\n\t\t\t\tslice.actions.updateProps( {\n\t\t\t\t\tid: args.id,\n\t\t\t\t\tmeta: args.meta,\n\t\t\t\t\tcustom_css: args.custom_css,\n\t\t\t\t\tprops: {},\n\t\t\t\t} )\n\t\t\t);\n\t\t},\n\t},\n} );\n\nconst subscribeWithStates = (\n\tcb: ( previous: Record< string, StyleDefinition >, current: Record< string, StyleDefinition > ) => void\n) => {\n\tlet previousState = selectData( getState() );\n\n\treturn subscribeWithSelector(\n\t\t( state ) => selectData( state ),\n\t\t( currentState ) => {\n\t\t\tcb( previousState, currentState );\n\t\t\tpreviousState = currentState;\n\t\t}\n\t);\n};\n","import { type UserCapabilities } from '@elementor/editor-styles-repository';\n\nexport const UPDATE_DEFAULT_STYLES_CAPABILITY_KEY = 'manage_options';\n\nexport const getCapabilities = (): UserCapabilities => {\n\treturn {\n\t\tupdate: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tcreate: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tdelete: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t\tupdateProps: UPDATE_DEFAULT_STYLES_CAPABILITY_KEY,\n\t};\n};\n","import { type Props } from '@elementor/editor-props';\nimport {\n\ttype CustomCss,\n\tgetVariantByMeta,\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { type UpdateActionPayload } from '@elementor/editor-styles-repository';\nimport {\n\t__createSelector as createSelector,\n\t__createSlice as createSlice,\n\ttype PayloadAction,\n\ttype SliceState,\n} from '@elementor/store';\n\ntype DefaultStylesState = {\n\tdata: Record< StyleDefinitionID, StyleDefinition >;\n\tinitialData: Record< StyleDefinitionID, StyleDefinition >;\n\tisDirty: boolean;\n};\n\nconst initialState: DefaultStylesState = {\n\tdata: {},\n\tinitialData: {},\n\tisDirty: false,\n};\n\nexport type StateWithDefaultStyles = SliceState< typeof slice >;\n\nconst SLICE_NAME = 'defaultStyles';\n\nexport const slice = createSlice( {\n\tname: SLICE_NAME,\n\tinitialState,\n\treducers: {\n\t\tload(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload: { data },\n\t\t\t}: PayloadAction< {\n\t\t\t\tdata: Record< StyleDefinitionID, StyleDefinition >;\n\t\t\t} >\n\t\t) {\n\t\t\tconst normalizedData = Array.isArray( data ) ? {} : data;\n\n\t\t\tstate.initialData = structuredClone( normalizedData );\n\t\t\tstate.data = structuredClone( normalizedData );\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tupdate( state, { payload }: PayloadAction< { style: UpdateActionPayload } > ) {\n\t\t\tstate.data[ payload.style.id ] = {\n\t\t\t\t...state.data[ payload.style.id ],\n\t\t\t\t...payload.style,\n\t\t\t} as StyleDefinition;\n\t\t\tstate.isDirty = true;\n\t\t},\n\n\t\tupdateProps(\n\t\t\tstate,\n\t\t\t{\n\t\t\t\tpayload,\n\t\t\t}: PayloadAction< {\n\t\t\t\tid: StyleDefinitionID;\n\t\t\t\tmeta: StyleDefinitionVariant[ 'meta' ];\n\t\t\t\tprops: Props;\n\t\t\t\tcustom_css?: CustomCss | null;\n\t\t\t\tmode?: 'merge' | 'replace';\n\t\t\t} >\n\t\t) {\n\t\t\tconst style = state.data[ payload.id ] ?? {\n\t\t\t\tid: payload.id,\n\t\t\t\tlabel: payload.id,\n\t\t\t\ttype: 'class' as const,\n\t\t\t\tvariants: [],\n\t\t\t};\n\n\t\t\tconst variant = getVariantByMeta( style, payload.meta );\n\t\t\tlet customCss = ( 'custom_css' in payload ? payload.custom_css : variant?.custom_css ) ?? null;\n\t\t\tcustomCss = customCss?.raw ? customCss : null;\n\n\t\t\tif ( variant ) {\n\t\t\t\tconst payloadProps = JSON.parse( JSON.stringify( payload.props ) ) as Props;\n\t\t\t\tconst mode = payload.mode ?? 'merge';\n\n\t\t\t\tif ( mode === 'replace' ) {\n\t\t\t\t\tvariant.props = payloadProps;\n\t\t\t\t} else {\n\t\t\t\t\tvariant.props = { ...variant.props, ...payloadProps };\n\t\t\t\t}\n\n\t\t\t\tvariant.custom_css = customCss;\n\t\t\t} else {\n\t\t\t\tstyle.variants.push( {\n\t\t\t\t\tmeta: payload.meta,\n\t\t\t\t\tprops: payload.props,\n\t\t\t\t\tcustom_css: customCss,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tstate.data[ payload.id ] = style;\n\t\t\tstate.isDirty = true;\n\t\t},\n\n\t\treset( state ) {\n\t\t\tstate.data = state.initialData;\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tcommit( state ) {\n\t\t\tstate.initialData = state.data;\n\t\t\tstate.isDirty = false;\n\t\t},\n\n\t\tdeleteTag( state, { payload }: PayloadAction< StyleDefinitionID > ) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\t\tdelete state.data[ payload ];\n\t\t\tstate.isDirty = true;\n\t\t},\n\t},\n} );\n\nexport const selectData = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.data,\n\t( data ) => data\n);\n\nexport const selectIsDirty = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.isDirty,\n\t( isDirty ) => isDirty\n);\n\nexport const selectInitialData = createSelector(\n\t( state: StateWithDefaultStyles ) => state.defaultStyles.initialData,\n\t( initialData ) => initialData\n);\n\nexport const selectTagStyle = createSelector(\n\t[ selectData, ( _state: StateWithDefaultStyles, id: StyleDefinitionID ) => id ],\n\t( data, id ) => data[ id ]\n);\n","import { __dispatch as dispatch, __getState as getState } from '@elementor/store';\nimport { hash } from '@elementor/utils';\n\nimport { type AllowedHtmlTag } from './allowed-tags';\nimport { apiClient } from './api';\nimport { selectData, selectInitialData, selectIsDirty, slice, type StateWithDefaultStyles } from './store';\n\nfunction getChangedTags( state: StateWithDefaultStyles ): AllowedHtmlTag[] {\n\tconst current = selectData( state );\n\tconst initial = selectInitialData( state );\n\n\tconst changed: AllowedHtmlTag[] = [];\n\n\tObject.keys( current ).forEach( ( tag ) => {\n\t\tconst currentStyle = current[ tag ];\n\t\tconst initialStyle = initial[ tag ];\n\n\t\tif ( ! initialStyle || hash( currentStyle ) !== hash( initialStyle ) ) {\n\t\t\tchanged.push( tag as AllowedHtmlTag );\n\t\t}\n\t} );\n\n\tObject.keys( initial ).forEach( ( tag ) => {\n\t\tif ( ! current[ tag ] ) {\n\t\t\tchanged.push( tag as AllowedHtmlTag );\n\t\t}\n\t} );\n\n\treturn changed;\n}\n\nexport async function saveDefaultStyles() {\n\tconst state = getState() as StateWithDefaultStyles;\n\n\tif ( ! selectIsDirty( state ) ) {\n\t\treturn;\n\t}\n\n\tconst data = selectData( state );\n\tconst changedTags = getChangedTags( state );\n\n\tawait Promise.all(\n\t\tchangedTags.map( async ( tag ) => {\n\t\t\tconst style = data[ tag ];\n\n\t\t\tif ( ! style || style.variants.length === 0 ) {\n\t\t\t\tawait apiClient.delete( tag );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait apiClient.put( tag, style.variants );\n\t\t} )\n\t);\n\n\tdispatch( slice.actions.commit() );\n}\n","import { type StyleDefinition, type StyleDefinitionID } from '@elementor/editor-styles';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\n\nimport { type AllowedHtmlTag } from './allowed-tags';\n\nconst RESOURCE_URL = '/default-styles';\nconst BASE_URL = 'elementor/v1';\n\nexport type DefaultStylesMap = Record< StyleDefinitionID, StyleDefinition >;\n\ntype DefaultStylesHttpResponse = HttpResponse< DefaultStylesMap >;\n\nexport const apiClient = {\n\tall: () => httpService().get< DefaultStylesHttpResponse >( `${ BASE_URL }${ RESOURCE_URL }` ),\n\n\tput: ( tag: AllowedHtmlTag, variants: StyleDefinition[ 'variants' ] ) =>\n\t\thttpService().put( `${ BASE_URL }${ RESOURCE_URL }/${ tag }`, {\n\t\t\ttype: 'class',\n\t\t\tvariants,\n\t\t} ),\n\n\tdelete: ( tag: AllowedHtmlTag ) => httpService().delete( `${ BASE_URL }${ RESOURCE_URL }/${ tag }` ),\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport {\n\ttype AutocompleteRenderGetTagProps,\n\tbindTrigger,\n\tChip,\n\tStack,\n\ttype Theme,\n\tTypography,\n\tUnstableChipGroup,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { TagStateMenu } from './tag-state-menu';\n\nconst CHIP_SIZE = 'tiny';\n\ntype TagChipProps = {\n\tlabel: string;\n\tchipProps: ReturnType< AutocompleteRenderGetTagProps >;\n\tactiveState: StyleDefinitionState | null;\n\tonSelectState: ( state: StyleDefinitionState | null ) => void;\n};\n\nexport function TagChip( { label, chipProps, activeState, onSelectState }: TagChipProps ) {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: 'tag-state-menu',\n\t} );\n\tconst [ chipRef, setChipRef ] = useState< HTMLElement | null >( null );\n\n\tconst { onDelete: _onDelete, ...chipGroupProps } = chipProps;\n\tconst isShowingState = Boolean( activeState );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableChipGroup\n\t\t\t\tref={ setChipRef }\n\t\t\t\t{ ...chipGroupProps }\n\t\t\t\taria-label={ `Edit ${ label }` }\n\t\t\t\trole=\"group\"\n\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t'&.MuiChipGroup-root.MuiAutocomplete-tag': {\n\t\t\t\t\t\tmargin: theme.spacing( 0.125 ),\n\t\t\t\t\t},\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<Chip\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tvariant={ isShowingState ? 'standard' : 'filled' }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isShowingState ) {\n\t\t\t\t\t\t\tonSelectState( null );\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tlineHeight: 1,\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t\t<Chip\n\t\t\t\t\ticon={ isShowingState ? undefined : <DotsVerticalIcon fontSize=\"tiny\" /> }\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tisShowingState ? (\n\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t<Typography variant=\"inherit\">{ activeState }</Typography>\n\t\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t) : undefined\n\t\t\t\t\t}\n\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\tcolor=\"default\"\n\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\taria-label={ __( 'Open tag state menu', 'elementor' ) }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\tpaddingRight: 0,\n\t\t\t\t\t\t...( ! isShowingState ? { paddingLeft: 0 } : {} ),\n\t\t\t\t\t\t'.MuiChip-label': isShowingState ? { paddingRight: 0 } : { padding: 0 },\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t</UnstableChipGroup>\n\t\t\t<TagStateMenu\n\t\t\t\tpopupState={ popupState }\n\t\t\t\tanchorEl={ chipRef }\n\t\t\t\tactiveState={ activeState }\n\t\t\t\tonSelectState={ onSelectState }\n\t\t\t/>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { DEFAULT_PSEUDO_STATES, PseudoStateMenuItems } from '@elementor/editor-editing-panel';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { bindMenu, Menu, type PopupState } from '@elementor/ui';\n\ntype TagStateMenuProps = {\n\tpopupState: PopupState;\n\tanchorEl: HTMLElement | null;\n\tactiveState: StyleDefinitionState | null;\n\tonSelectState: ( state: StyleDefinitionState | null ) => void;\n};\n\nexport function TagStateMenu( { popupState, anchorEl, activeState, onSelectState }: TagStateMenuProps ) {\n\treturn (\n\t\t<Menu\n\t\t\tMenuListProps={ { dense: true, sx: { minWidth: '160px' } } }\n\t\t\t{ ...bindMenu( popupState ) }\n\t\t\tanchorEl={ anchorEl }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\ttransformOrigin={ { horizontal: 'left', vertical: -4 } }\n\t\t\tdisableAutoFocusItem\n\t\t>\n\t\t\t<PseudoStateMenuItems\n\t\t\t\tstates={ DEFAULT_PSEUDO_STATES }\n\t\t\t\tactiveState={ activeState }\n\t\t\t\tonSelectState={ onSelectState }\n\t\t\t\tonClose={ popupState.close }\n\t\t\t/>\n\t\t</Menu>\n\t);\n}\n","import { injectIntoLogic } from '@elementor/editor';\nimport { registerElementPanelDefaults } from '@elementor/editor-editing-panel';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { __registerSlice as registerSlice } from '@elementor/store';\n\nimport { GlobalStylesImportListener } from './components/global-styles-import-listener';\nimport { PopulateStore } from './components/populate-store';\nimport { defaultStylesStylesProvider } from './default-styles-provider';\nimport { slice } from './store';\n\nexport function init() {\n\tregisterSlice( slice );\n\n\tregisterElementPanelDefaults( 'default-style', {\n\t\tdefaultTab: 'style',\n\t\tdefaultSectionsExpanded: {\n\t\t\tstyle: [],\n\t\t},\n\t} );\n\n\tstylesRepository.register( defaultStylesStylesProvider );\n\n\tinjectIntoLogic( {\n\t\tid: 'default-styles-import-listener',\n\t\tcomponent: GlobalStylesImportListener,\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'default-styles-populate-store',\n\t\tcomponent: PopulateStore,\n\t} );\n}\n","import { useEffect } from 'react';\nimport { GLOBAL_STYLES_IMPORTED_EVENT } from '@elementor/editor-canvas';\n\nimport { loadDefaultStyles } from '../load-default-styles';\n\nexport function GlobalStylesImportListener() {\n\tuseEffect( () => {\n\t\tconst handleGlobalStylesImported = () => {\n\t\t\tvoid loadDefaultStyles();\n\t\t};\n\n\t\twindow.addEventListener( GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported );\n\t\t};\n\t}, [] );\n\n\treturn null;\n}\n","import { __dispatch as dispatch } from '@elementor/store';\n\nimport { apiClient } from './api';\nimport { slice } from './store';\n\nexport async function loadDefaultStyles() {\n\ttry {\n\t\tconst response = await apiClient.all();\n\n\t\tconst items = response.data.data;\n\n\t\tdispatch(\n\t\t\tslice.actions.load( {\n\t\t\t\tdata: items,\n\t\t\t} )\n\t\t);\n\t} catch {}\n}\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, registerDataHook, routeCloseEvent } from '@elementor/editor-v1-adapters';\nimport { __getState as getState } from '@elementor/store';\n\nimport { loadDefaultStyles } from '../load-default-styles';\nimport { selectIsDirty } from '../store';\n\nconst V2_PANEL_ROUTE = 'panel/v2';\n\nexport function PopulateStore() {\n\tuseEffect( () => {\n\t\tvoid loadDefaultStyles();\n\n\t\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\t\tif ( selectIsDirty( getState() ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait loadDefaultStyles();\n\t\t} );\n\n\t\tconst unsubscribe = listenTo( routeCloseEvent( V2_PANEL_ROUTE ), () => {\n\t\t\tif ( selectIsDirty( getState() ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvoid loadDefaultStyles();\n\t\t} );\n\n\t\treturn unsubscribe;\n\t}, [] );\n\n\treturn null;\n}\n"],"mappings":"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","names":["React","useState","dispatch","Stack","__","dispatch","getState","getState","dispatch","React","__","__","__","useState","dispatch","Stack","useEffect","dispatch","dispatch","useEffect","useEffect","getState","useEffect","getState"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elementor/editor-default-styles",
3
- "version": "4.4.0-1107",
3
+ "version": "4.4.0-1109",
4
4
  "private": false,
5
5
  "author": "Elementor Team",
6
6
  "homepage": "https://elementor.com/",
@@ -39,27 +39,28 @@
39
39
  "dev": "tsup --config=../../tsup.dev.ts"
40
40
  },
41
41
  "dependencies": {
42
- "@elementor/editor": "4.4.0-1107",
43
- "@elementor/editor-app-bar": "4.4.0-1107",
44
- "@elementor/editor-controls": "4.4.0-1107",
45
- "@elementor/editor-documents": "4.4.0-1107",
46
- "@elementor/editor-editing-panel": "4.4.0-1107",
47
- "@elementor/editor-elements": "4.4.0-1107",
48
- "@elementor/editor-panels": "4.4.0-1107",
49
- "@elementor/editor-props": "4.4.0-1107",
50
- "@elementor/editor-responsive": "4.4.0-1107",
51
- "@elementor/editor-styles": "4.4.0-1107",
52
- "@elementor/editor-styles-repository": "4.4.0-1107",
53
- "@elementor/editor-ui": "4.4.0-1107",
54
- "@elementor/editor-v1-adapters": "4.4.0-1107",
55
- "@elementor/http-client": "4.4.0-1107",
42
+ "@elementor/editor": "4.4.0-1109",
43
+ "@elementor/editor-app-bar": "4.4.0-1109",
44
+ "@elementor/editor-canvas": "4.4.0-1109",
45
+ "@elementor/editor-controls": "4.4.0-1109",
46
+ "@elementor/editor-documents": "4.4.0-1109",
47
+ "@elementor/editor-editing-panel": "4.4.0-1109",
48
+ "@elementor/editor-elements": "4.4.0-1109",
49
+ "@elementor/editor-panels": "4.4.0-1109",
50
+ "@elementor/editor-props": "4.4.0-1109",
51
+ "@elementor/editor-responsive": "4.4.0-1109",
52
+ "@elementor/editor-styles": "4.4.0-1109",
53
+ "@elementor/editor-styles-repository": "4.4.0-1109",
54
+ "@elementor/editor-ui": "4.4.0-1109",
55
+ "@elementor/editor-v1-adapters": "4.4.0-1109",
56
+ "@elementor/http-client": "4.4.0-1109",
56
57
  "@elementor/icons": "~1.75.1",
57
- "@elementor/menus": "4.4.0-1107",
58
- "@elementor/query": "4.4.0-1107",
59
- "@elementor/session": "4.4.0-1107",
60
- "@elementor/store": "4.4.0-1107",
58
+ "@elementor/menus": "4.4.0-1109",
59
+ "@elementor/query": "4.4.0-1109",
60
+ "@elementor/session": "4.4.0-1109",
61
+ "@elementor/store": "4.4.0-1109",
61
62
  "@elementor/ui": "1.37.5",
62
- "@elementor/utils": "4.4.0-1107",
63
+ "@elementor/utils": "4.4.0-1109",
63
64
  "@wordpress/i18n": "^5.13.0"
64
65
  },
65
66
  "peerDependencies": {
@@ -0,0 +1,20 @@
1
+ import { useEffect } from 'react';
2
+ import { GLOBAL_STYLES_IMPORTED_EVENT } from '@elementor/editor-canvas';
3
+
4
+ import { loadDefaultStyles } from '../load-default-styles';
5
+
6
+ export function GlobalStylesImportListener() {
7
+ useEffect( () => {
8
+ const handleGlobalStylesImported = () => {
9
+ void loadDefaultStyles();
10
+ };
11
+
12
+ window.addEventListener( GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported );
13
+
14
+ return () => {
15
+ window.removeEventListener( GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported );
16
+ };
17
+ }, [] );
18
+
19
+ return null;
20
+ }
package/src/init.ts CHANGED
@@ -3,6 +3,7 @@ import { registerElementPanelDefaults } from '@elementor/editor-editing-panel';
3
3
  import { stylesRepository } from '@elementor/editor-styles-repository';
4
4
  import { __registerSlice as registerSlice } from '@elementor/store';
5
5
 
6
+ import { GlobalStylesImportListener } from './components/global-styles-import-listener';
6
7
  import { PopulateStore } from './components/populate-store';
7
8
  import { defaultStylesStylesProvider } from './default-styles-provider';
8
9
  import { slice } from './store';
@@ -19,6 +20,11 @@ export function init() {
19
20
 
20
21
  stylesRepository.register( defaultStylesStylesProvider );
21
22
 
23
+ injectIntoLogic( {
24
+ id: 'default-styles-import-listener',
25
+ component: GlobalStylesImportListener,
26
+ } );
27
+
22
28
  injectIntoLogic( {
23
29
  id: 'default-styles-populate-store',
24
30
  component: PopulateStore,