@elementor/editor-default-styles 4.3.3 → 4.3.5

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
@@ -84,6 +84,7 @@ var getCapabilities = () => {
84
84
  };
85
85
 
86
86
  // src/store.ts
87
+ var import_editor_props = require("@elementor/editor-props");
87
88
  var import_editor_styles = require("@elementor/editor-styles");
88
89
  var import_store = require("@elementor/store");
89
90
  var initialState = {
@@ -123,22 +124,20 @@ var slice = (0, import_store.__createSlice)({
123
124
  const variant = (0, import_editor_styles.getVariantByMeta)(style, payload.meta);
124
125
  let customCss = ("custom_css" in payload ? payload.custom_css : variant?.custom_css) ?? null;
125
126
  customCss = customCss?.raw ? customCss : null;
127
+ const payloadProps = JSON.parse(JSON.stringify(payload.props));
128
+ const mode = payload.mode ?? "merge";
126
129
  if (variant) {
127
- const payloadProps = JSON.parse(JSON.stringify(payload.props));
128
- const mode = payload.mode ?? "merge";
129
- if (mode === "replace") {
130
- variant.props = payloadProps;
131
- } else {
132
- variant.props = { ...variant.props, ...payloadProps };
133
- }
130
+ const variantProps = extractVariantProps(mode, variant);
131
+ variant.props = (0, import_editor_props.mergeProps)(variantProps, payloadProps);
134
132
  variant.custom_css = customCss;
135
133
  } else {
136
134
  style.variants.push({
137
135
  meta: payload.meta,
138
- props: payload.props,
136
+ props: (0, import_editor_props.mergeProps)({}, payloadProps),
139
137
  custom_css: customCss
140
138
  });
141
139
  }
140
+ style.variants = (0, import_editor_styles.getNonEmptyVariants)(style);
142
141
  state.data[payload.id] = style;
143
142
  state.isDirty = true;
144
143
  },
@@ -156,6 +155,12 @@ var slice = (0, import_store.__createSlice)({
156
155
  }
157
156
  }
158
157
  });
158
+ function extractVariantProps(mode, variant) {
159
+ if ("replace" === mode) {
160
+ return {};
161
+ }
162
+ return JSON.parse(JSON.stringify(variant.props));
163
+ }
159
164
  var selectData = (0, import_store.__createSelector)(
160
165
  (state) => state.defaultStyles.data,
161
166
  (data) => data
@@ -609,10 +614,9 @@ var import_editor_editing_panel3 = require("@elementor/editor-editing-panel");
609
614
  var import_editor_styles_repository3 = require("@elementor/editor-styles-repository");
610
615
  var import_store12 = require("@elementor/store");
611
616
 
612
- // src/components/populate-store.tsx
617
+ // src/components/global-styles-import-listener.tsx
613
618
  var import_react3 = require("react");
614
- var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
615
- var import_store10 = require("@elementor/store");
619
+ var import_editor_canvas = require("@elementor/editor-canvas");
616
620
 
617
621
  // src/load-default-styles.ts
618
622
  var import_store8 = require("@elementor/store");
@@ -629,10 +633,27 @@ async function loadDefaultStyles() {
629
633
  }
630
634
  }
631
635
 
636
+ // src/components/global-styles-import-listener.tsx
637
+ function GlobalStylesImportListener() {
638
+ (0, import_react3.useEffect)(() => {
639
+ const handleGlobalStylesImported = () => {
640
+ void loadDefaultStyles();
641
+ };
642
+ window.addEventListener(import_editor_canvas.GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
643
+ return () => {
644
+ window.removeEventListener(import_editor_canvas.GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
645
+ };
646
+ }, []);
647
+ return null;
648
+ }
649
+
632
650
  // src/components/populate-store.tsx
651
+ var import_react4 = require("react");
652
+ var import_editor_v1_adapters = require("@elementor/editor-v1-adapters");
653
+ var import_store10 = require("@elementor/store");
633
654
  var V2_PANEL_ROUTE = "panel/v2";
634
655
  function PopulateStore() {
635
- (0, import_react3.useEffect)(() => {
656
+ (0, import_react4.useEffect)(() => {
636
657
  void loadDefaultStyles();
637
658
  (0, import_editor_v1_adapters.registerDataHook)("after", "editor/documents/attach-preview", async () => {
638
659
  if (selectIsDirty((0, import_store10.__getState)())) {
@@ -661,6 +682,10 @@ function init() {
661
682
  }
662
683
  });
663
684
  import_editor_styles_repository3.stylesRepository.register(defaultStylesStylesProvider);
685
+ (0, import_editor.injectIntoLogic)({
686
+ id: "default-styles-import-listener",
687
+ component: GlobalStylesImportListener
688
+ });
664
689
  (0, import_editor.injectIntoLogic)({
665
690
  id: "default-styles-populate-store",
666
691
  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 { mergeProps, type Props } from '@elementor/editor-props';\nimport {\n\ttype CustomCss,\n\tgetNonEmptyVariants,\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\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\tconst payloadProps = JSON.parse( JSON.stringify( payload.props ) ) as Props;\n\t\t\tconst mode = payload.mode ?? 'merge';\n\n\t\t\tif ( variant ) {\n\t\t\t\tconst variantProps = extractVariantProps( mode, variant );\n\t\t\t\tvariant.props = mergeProps( variantProps, payloadProps );\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: mergeProps( {}, payloadProps ),\n\t\t\t\t\tcustom_css: customCss,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tstyle.variants = getNonEmptyVariants( style );\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\nfunction extractVariantProps( mode: string, variant: StyleDefinitionVariant ) {\n\tif ( 'replace' === mode ) {\n\t\treturn {};\n\t}\n\treturn JSON.parse( JSON.stringify( variant.props ) ) as Props;\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
@@ -71,7 +71,9 @@ var getCapabilities = () => {
71
71
  };
72
72
 
73
73
  // src/store.ts
74
+ import { mergeProps } from "@elementor/editor-props";
74
75
  import {
76
+ getNonEmptyVariants,
75
77
  getVariantByMeta
76
78
  } from "@elementor/editor-styles";
77
79
  import {
@@ -115,22 +117,20 @@ var slice = createSlice({
115
117
  const variant = getVariantByMeta(style, payload.meta);
116
118
  let customCss = ("custom_css" in payload ? payload.custom_css : variant?.custom_css) ?? null;
117
119
  customCss = customCss?.raw ? customCss : null;
120
+ const payloadProps = JSON.parse(JSON.stringify(payload.props));
121
+ const mode = payload.mode ?? "merge";
118
122
  if (variant) {
119
- const payloadProps = JSON.parse(JSON.stringify(payload.props));
120
- const mode = payload.mode ?? "merge";
121
- if (mode === "replace") {
122
- variant.props = payloadProps;
123
- } else {
124
- variant.props = { ...variant.props, ...payloadProps };
125
- }
123
+ const variantProps = extractVariantProps(mode, variant);
124
+ variant.props = mergeProps(variantProps, payloadProps);
126
125
  variant.custom_css = customCss;
127
126
  } else {
128
127
  style.variants.push({
129
128
  meta: payload.meta,
130
- props: payload.props,
129
+ props: mergeProps({}, payloadProps),
131
130
  custom_css: customCss
132
131
  });
133
132
  }
133
+ style.variants = getNonEmptyVariants(style);
134
134
  state.data[payload.id] = style;
135
135
  state.isDirty = true;
136
136
  },
@@ -148,6 +148,12 @@ var slice = createSlice({
148
148
  }
149
149
  }
150
150
  });
151
+ function extractVariantProps(mode, variant) {
152
+ if ("replace" === mode) {
153
+ return {};
154
+ }
155
+ return JSON.parse(JSON.stringify(variant.props));
156
+ }
151
157
  var selectData = createSelector(
152
158
  (state) => state.defaultStyles.data,
153
159
  (data) => data
@@ -608,10 +614,9 @@ import { registerElementPanelDefaults } from "@elementor/editor-editing-panel";
608
614
  import { stylesRepository } from "@elementor/editor-styles-repository";
609
615
  import { __registerSlice as registerSlice } from "@elementor/store";
610
616
 
611
- // src/components/populate-store.tsx
617
+ // src/components/global-styles-import-listener.tsx
612
618
  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";
619
+ import { GLOBAL_STYLES_IMPORTED_EVENT } from "@elementor/editor-canvas";
615
620
 
616
621
  // src/load-default-styles.ts
617
622
  import { __dispatch as dispatch4 } from "@elementor/store";
@@ -628,10 +633,27 @@ async function loadDefaultStyles() {
628
633
  }
629
634
  }
630
635
 
636
+ // src/components/global-styles-import-listener.tsx
637
+ function GlobalStylesImportListener() {
638
+ useEffect2(() => {
639
+ const handleGlobalStylesImported = () => {
640
+ void loadDefaultStyles();
641
+ };
642
+ window.addEventListener(GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
643
+ return () => {
644
+ window.removeEventListener(GLOBAL_STYLES_IMPORTED_EVENT, handleGlobalStylesImported);
645
+ };
646
+ }, []);
647
+ return null;
648
+ }
649
+
631
650
  // src/components/populate-store.tsx
651
+ import { useEffect as useEffect3 } from "react";
652
+ import { __privateListenTo as listenTo, registerDataHook, routeCloseEvent } from "@elementor/editor-v1-adapters";
653
+ import { __getState as getState3 } from "@elementor/store";
632
654
  var V2_PANEL_ROUTE = "panel/v2";
633
655
  function PopulateStore() {
634
- useEffect2(() => {
656
+ useEffect3(() => {
635
657
  void loadDefaultStyles();
636
658
  registerDataHook("after", "editor/documents/attach-preview", async () => {
637
659
  if (selectIsDirty(getState3())) {
@@ -660,6 +682,10 @@ function init() {
660
682
  }
661
683
  });
662
684
  stylesRepository.register(defaultStylesStylesProvider);
685
+ injectIntoLogic({
686
+ id: "default-styles-import-listener",
687
+ component: GlobalStylesImportListener
688
+ });
663
689
  injectIntoLogic({
664
690
  id: "default-styles-populate-store",
665
691
  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 { mergeProps, type Props } from '@elementor/editor-props';\nimport {\n\ttype CustomCss,\n\tgetNonEmptyVariants,\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\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\tconst payloadProps = JSON.parse( JSON.stringify( payload.props ) ) as Props;\n\t\t\tconst mode = payload.mode ?? 'merge';\n\n\t\t\tif ( variant ) {\n\t\t\t\tconst variantProps = extractVariantProps( mode, variant );\n\t\t\t\tvariant.props = mergeProps( variantProps, payloadProps );\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: mergeProps( {}, payloadProps ),\n\t\t\t\t\tcustom_css: customCss,\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tstyle.variants = getNonEmptyVariants( style );\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\nfunction extractVariantProps( mode: string, variant: StyleDefinitionVariant ) {\n\tif ( 'replace' === mode ) {\n\t\treturn {};\n\t}\n\treturn JSON.parse( JSON.stringify( variant.props ) ) as Props;\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.3.3",
3
+ "version": "4.3.5",
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.3.3",
43
- "@elementor/editor-app-bar": "4.3.3",
44
- "@elementor/editor-controls": "4.3.3",
45
- "@elementor/editor-documents": "4.3.3",
46
- "@elementor/editor-editing-panel": "4.3.3",
47
- "@elementor/editor-elements": "4.3.3",
48
- "@elementor/editor-panels": "4.3.3",
49
- "@elementor/editor-props": "4.3.3",
50
- "@elementor/editor-responsive": "4.3.3",
51
- "@elementor/editor-styles": "4.3.3",
52
- "@elementor/editor-styles-repository": "4.3.3",
53
- "@elementor/editor-ui": "4.3.3",
54
- "@elementor/editor-v1-adapters": "4.3.3",
55
- "@elementor/http-client": "4.3.3",
56
- "@elementor/icons": "~1.75.1",
57
- "@elementor/menus": "4.3.3",
58
- "@elementor/query": "4.3.3",
59
- "@elementor/session": "4.3.3",
60
- "@elementor/store": "4.3.3",
61
- "@elementor/ui": "1.37.5",
62
- "@elementor/utils": "4.3.3",
42
+ "@elementor/editor": "4.3.5",
43
+ "@elementor/editor-app-bar": "4.3.5",
44
+ "@elementor/editor-canvas": "4.3.5",
45
+ "@elementor/editor-controls": "4.3.5",
46
+ "@elementor/editor-documents": "4.3.5",
47
+ "@elementor/editor-editing-panel": "4.3.5",
48
+ "@elementor/editor-elements": "4.3.5",
49
+ "@elementor/editor-panels": "4.3.5",
50
+ "@elementor/editor-props": "4.3.5",
51
+ "@elementor/editor-responsive": "4.3.5",
52
+ "@elementor/editor-styles": "4.3.5",
53
+ "@elementor/editor-styles-repository": "4.3.5",
54
+ "@elementor/editor-ui": "4.3.5",
55
+ "@elementor/editor-v1-adapters": "4.3.5",
56
+ "@elementor/http-client": "4.3.5",
57
+ "@elementor/icons": "~1.78.1",
58
+ "@elementor/menus": "4.3.5",
59
+ "@elementor/query": "4.3.5",
60
+ "@elementor/session": "4.3.5",
61
+ "@elementor/store": "4.3.5",
62
+ "@elementor/ui": "1.41.1",
63
+ "@elementor/utils": "4.3.5",
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,
package/src/store.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { type Props } from '@elementor/editor-props';
1
+ import { mergeProps, type Props } from '@elementor/editor-props';
2
2
  import {
3
3
  type CustomCss,
4
+ getNonEmptyVariants,
4
5
  getVariantByMeta,
5
6
  type StyleDefinition,
6
7
  type StyleDefinitionID,
@@ -77,28 +78,27 @@ export const slice = createSlice( {
77
78
  };
78
79
 
79
80
  const variant = getVariantByMeta( style, payload.meta );
81
+
80
82
  let customCss = ( 'custom_css' in payload ? payload.custom_css : variant?.custom_css ) ?? null;
81
83
  customCss = customCss?.raw ? customCss : null;
82
84
 
83
- if ( variant ) {
84
- const payloadProps = JSON.parse( JSON.stringify( payload.props ) ) as Props;
85
- const mode = payload.mode ?? 'merge';
86
-
87
- if ( mode === 'replace' ) {
88
- variant.props = payloadProps;
89
- } else {
90
- variant.props = { ...variant.props, ...payloadProps };
91
- }
85
+ const payloadProps = JSON.parse( JSON.stringify( payload.props ) ) as Props;
86
+ const mode = payload.mode ?? 'merge';
92
87
 
88
+ if ( variant ) {
89
+ const variantProps = extractVariantProps( mode, variant );
90
+ variant.props = mergeProps( variantProps, payloadProps );
93
91
  variant.custom_css = customCss;
94
92
  } else {
95
93
  style.variants.push( {
96
94
  meta: payload.meta,
97
- props: payload.props,
95
+ props: mergeProps( {}, payloadProps ),
98
96
  custom_css: customCss,
99
97
  } );
100
98
  }
101
99
 
100
+ style.variants = getNonEmptyVariants( style );
101
+
102
102
  state.data[ payload.id ] = style;
103
103
  state.isDirty = true;
104
104
  },
@@ -121,6 +121,13 @@ export const slice = createSlice( {
121
121
  },
122
122
  } );
123
123
 
124
+ function extractVariantProps( mode: string, variant: StyleDefinitionVariant ) {
125
+ if ( 'replace' === mode ) {
126
+ return {};
127
+ }
128
+ return JSON.parse( JSON.stringify( variant.props ) ) as Props;
129
+ }
130
+
124
131
  export const selectData = createSelector(
125
132
  ( state: StateWithDefaultStyles ) => state.defaultStyles.data,
126
133
  ( data ) => data