@elementor/editor-default-styles 4.4.0-1108 → 4.4.0-1110

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