@elementor/editor-editing-panel 1.23.0 → 1.24.0
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/CHANGELOG.md +20 -0
- package/dist/index.js +400 -352
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +367 -324
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -5
- package/src/components/add-or-remove-content.tsx +1 -1
- package/src/components/{control-label-with-adornments.tsx → control-label.tsx} +3 -3
- package/src/components/css-classes/css-class-item.tsx +16 -5
- package/src/components/css-classes/css-class-selector.tsx +3 -3
- package/src/components/editing-panel-tabs.tsx +8 -1
- package/src/components/editing-panel.tsx +18 -15
- package/src/components/multi-combobox.tsx +12 -1
- package/src/components/settings-tab.tsx +2 -2
- package/src/components/style-sections/border-section/border-color-field.tsx +2 -1
- package/src/components/style-sections/border-section/border-style-field.tsx +2 -1
- package/src/components/style-sections/layout-section/align-content-field.tsx +2 -1
- package/src/components/style-sections/layout-section/align-items-field.tsx +2 -1
- package/src/components/style-sections/layout-section/align-self-child-field.tsx +2 -1
- package/src/components/style-sections/layout-section/display-field.tsx +2 -1
- package/src/components/style-sections/layout-section/flex-direction-field.tsx +2 -1
- package/src/components/style-sections/layout-section/flex-order-field.tsx +20 -24
- package/src/components/style-sections/layout-section/flex-size-field.tsx +6 -4
- package/src/components/style-sections/layout-section/justify-content-field.tsx +5 -4
- package/src/components/style-sections/layout-section/layout-section.tsx +2 -2
- package/src/components/style-sections/layout-section/wrap-field.tsx +2 -1
- package/src/components/style-sections/position-section/dimensions-field.tsx +2 -1
- package/src/components/style-sections/position-section/position-field.tsx +2 -1
- package/src/components/style-sections/position-section/z-index-field.tsx +2 -1
- package/src/components/style-sections/size-section/overflow-field.tsx +2 -1
- package/src/components/style-sections/size-section/size-section.tsx +2 -1
- package/src/components/style-sections/typography-section/font-family-field.tsx +2 -1
- package/src/components/style-sections/typography-section/font-size-field.tsx +2 -1
- package/src/components/style-sections/typography-section/font-style-field.tsx +2 -2
- package/src/components/style-sections/typography-section/font-weight-field.tsx +2 -1
- package/src/components/style-sections/typography-section/letter-spacing-field.tsx +2 -1
- package/src/components/style-sections/typography-section/line-height-field.tsx +2 -1
- package/src/components/style-sections/typography-section/text-alignment-field.tsx +2 -1
- package/src/components/style-sections/typography-section/text-color-field.tsx +2 -1
- package/src/components/style-sections/typography-section/text-decoration-field.tsx +2 -1
- package/src/components/style-sections/typography-section/text-direction-field.tsx +2 -1
- package/src/components/style-sections/typography-section/text-stroke-field.tsx +9 -9
- package/src/components/style-sections/typography-section/transform-field.tsx +2 -1
- package/src/components/style-sections/typography-section/word-spacing-field.tsx +2 -1
- package/src/dynamics/components/dynamic-selection-control.tsx +2 -2
- package/src/dynamics/components/dynamic-selection.tsx +4 -4
- package/src/styles-inheritance/styles-inheritance-indicator.tsx +7 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/control-replacement.tsx","../src/components/css-classes/css-class-selector.tsx","../src/contexts/classes-prop-context.tsx","../src/contexts/element-context.tsx","../src/contexts/style-context.tsx","../src/errors.ts","../src/components/multi-combobox.tsx","../src/components/css-classes/css-class-item.tsx","../src/components/css-classes/css-class-menu.tsx","../src/hooks/use-unapply-class.ts","../src/panel.ts","../src/components/editing-panel.tsx","../src/controls-actions.ts","../src/popover-action.tsx","../src/components/editing-panel-error-fallback.tsx","../src/components/editing-panel-tabs.tsx","../src/components/settings-tab.tsx","../src/controls-registry/control.tsx","../src/controls-registry/controls-registry.tsx","../src/controls-registry/control-type-container.tsx","../src/controls-registry/settings-field.tsx","../src/controls-registry/create-top-level-object-type.ts","../src/components/section.tsx","../src/components/collapse-icon.tsx","../src/components/sections-list.tsx","../src/components/style-tab.tsx","../src/contexts/styles-inheritance-context.tsx","../src/hooks/use-styles-rerender.ts","../src/styles-inheritance/utils.ts","../src/styles-inheritance/create-snapshots-manager.ts","../src/styles-inheritance/create-styles-inheritance.ts","../src/components/style-sections/background-section/background-section.tsx","../src/controls-registry/styles-field.tsx","../src/hooks/use-styles-fields.ts","../src/hooks/use-styles-field.ts","../src/styles-inheritance/styles-inheritance-indicator.tsx","../src/components/style-sections/border-section/border-section.tsx","../src/components/panel-divider.tsx","../src/components/section-content.tsx","../src/components/style-sections/border-section/border-field.tsx","../src/components/add-or-remove-content.tsx","../src/components/style-sections/border-section/border-color-field.tsx","../src/components/style-sections/border-section/border-style-field.tsx","../src/components/style-sections/border-section/border-width-field.tsx","../src/hooks/use-direction.ts","../src/components/style-sections/layout-section/utils/rotated-icon.tsx","../src/components/style-sections/border-section/border-radius-field.tsx","../src/components/style-sections/effects-section/effects-section.tsx","../src/components/style-sections/layout-section/layout-section.tsx","../src/hooks/use-computed-style.ts","../src/components/style-sections/layout-section/align-content-field.tsx","../src/components/style-sections/layout-section/align-items-field.tsx","../src/components/style-sections/layout-section/align-self-child-field.tsx","../src/components/style-sections/layout-section/display-field.tsx","../src/components/style-sections/layout-section/flex-direction-field.tsx","../src/components/style-sections/layout-section/flex-order-field.tsx","../src/components/style-sections/layout-section/flex-size-field.tsx","../src/components/style-sections/layout-section/gap-control-field.tsx","../src/components/style-sections/layout-section/justify-content-field.tsx","../src/components/style-sections/layout-section/wrap-field.tsx","../src/components/style-sections/position-section/position-section.tsx","../src/components/style-sections/position-section/dimensions-field.tsx","../src/components/style-sections/position-section/position-field.tsx","../src/components/style-sections/position-section/z-index-field.tsx","../src/components/style-sections/size-section/size-section.tsx","../src/components/style-sections/size-section/overflow-field.tsx","../src/components/style-sections/spacing-section/spacing-section.tsx","../src/components/style-sections/typography-section/typography-section.tsx","../src/components/collapsible-content.tsx","../src/components/style-sections/typography-section/font-family-field.tsx","../src/components/style-sections/typography-section/hooks/use-font-families.ts","../src/sync/get-elementor-config.ts","../src/components/style-sections/typography-section/font-size-field.tsx","../src/components/style-sections/typography-section/font-style-field.tsx","../src/components/style-sections/typography-section/font-weight-field.tsx","../src/components/style-sections/typography-section/letter-spacing-field.tsx","../src/components/style-sections/typography-section/line-height-field.tsx","../src/components/style-sections/typography-section/text-alignment-field.tsx","../src/components/style-sections/typography-section/text-color-field.tsx","../src/components/style-sections/typography-section/text-decoration-field.tsx","../src/components/style-sections/typography-section/text-direction-field.tsx","../src/components/style-sections/typography-section/text-stroke-field.tsx","../src/components/style-sections/typography-section/transform-field.tsx","../src/components/style-sections/typography-section/word-spacing-field.tsx","../src/init.ts","../src/hooks/use-open-editor-panel.ts","../src/sync/is-atomic-widget-selected.ts","../src/components/editing-panel-hooks.tsx","../src/dynamics/components/dynamic-selection-control.tsx","../src/components/popover-content.tsx","../src/hooks/use-persist-dynamic-value.ts","../src/dynamics/dynamic-control.tsx","../src/dynamics/hooks/use-dynamic-tag.ts","../src/dynamics/hooks/use-prop-dynamic-tags.ts","../src/dynamics/sync/get-elementor-config.ts","../src/dynamics/sync/get-atomic-dynamic-tags.ts","../src/dynamics/utils.ts","../src/dynamics/components/dynamic-selection.tsx","../src/dynamics/hooks/use-prop-dynamic-action.tsx","../src/dynamics/init.ts"],"sourcesContent":["export { useBoundProp } from '@elementor/editor-controls';\nexport type { PopoverActionProps } from './popover-action';\nexport { replaceControl } from './control-replacement';\nexport { injectIntoClassSelectorActions } from './components/css-classes/css-class-selector';\nexport { usePanelActions, usePanelStatus } from './panel';\n\nimport init from './init';\n\ninit();\n","import { createControlReplacement } from '@elementor/editor-controls';\n\nexport const { replaceControl, getControlReplacement } = createControlReplacement();\n","import * as React from 'react';\nimport { type ReactElement } from 'react';\nimport { getElementSetting, updateElementSettings, useElementSetting } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\nimport {\n\tELEMENTS_STYLES_PROVIDER_KEY,\n\ttype StylesProvider,\n\tstylesRepository,\n\ttype UpdateActionPayload,\n\tuseCreateActionsByProvider,\n\tuseProviders,\n} from '@elementor/editor-styles-repository';\nimport { MapPinIcon } from '@elementor/icons';\nimport { createLocation } from '@elementor/locations';\nimport { Chip, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../../contexts/classes-prop-context';\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\nimport { type Action, MultiCombobox, type Option } from '../multi-combobox';\nimport { CssClassItem } from './css-class-item';\n\nconst ID = 'elementor-css-class-selector';\nconst TAGS_LIMIT = 50;\n\ntype StyleDefOption = Option & {\n\tcolor: 'primary' | 'global';\n\ticon: ReactElement | null;\n\tprovider: string;\n};\n\nconst EMPTY_OPTION = {\n\tlabel: __( 'local', 'elementor' ),\n\tvalue: null,\n\tfixed: true,\n\tcolor: 'primary',\n\ticon: <MapPinIcon />,\n\tprovider: ELEMENTS_STYLES_PROVIDER_KEY,\n} satisfies StyleDefOption;\n\nexport const { Slot: ClassSelectorActionsSlot, inject: injectIntoClassSelectorActions } = createLocation();\n\n/**\n * Applied - Classes applied to an element.\n * Active - Class that is currently on edit mode.\n */\n\nexport function CssClassSelector() {\n\tconst options = useOptions();\n\n\tconst { value: appliedIds, setValue: setAppliedIds, pushValue: pushAppliedId } = useAppliedClassesIds();\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\n\tconst actions = useCreateActions( { pushAppliedId, setActiveId } );\n\n\tconst handleApply = useHandleApply( appliedIds, setAppliedIds );\n\n\tconst applied = useAppliedOptions( options, appliedIds );\n\tconst active = applied.find( ( option ) => option.value === activeId ) ?? EMPTY_OPTION;\n\n\treturn (\n\t\t<Stack gap={ 1 } p={ 2 }>\n\t\t\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\" justifyContent=\"space-between\">\n\t\t\t\t<Typography component=\"label\" variant=\"caption\" htmlFor={ ID }>\n\t\t\t\t\t{ __( 'CSS classes', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t\t<Stack direction=\"row\" gap={ 1 }>\n\t\t\t\t\t<ClassSelectorActionsSlot />\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<MultiCombobox\n\t\t\t\tid={ ID }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\toptions={ options }\n\t\t\t\tselected={ applied }\n\t\t\t\tonSelect={ handleApply }\n\t\t\t\tlimitTags={ TAGS_LIMIT }\n\t\t\t\tactions={ actions }\n\t\t\t\tgetLimitTagsText={ ( more ) => (\n\t\t\t\t\t<Chip size=\"tiny\" variant=\"standard\" label={ `+${ more }` } clickable />\n\t\t\t\t) }\n\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\tvalues.map( ( value, index ) => {\n\t\t\t\t\t\tconst chipProps = getTagProps( { index } );\n\t\t\t\t\t\tconst isActive = value.value === active?.value;\n\n\t\t\t\t\t\tconst renameLabel = ( newLabel: string ) => {\n\t\t\t\t\t\t\tif ( ! value.value ) {\n\t\t\t\t\t\t\t\tthrow new Error( `Cannot rename a class without style id` );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn updateClassByProvider( value.provider, { label: newLabel, id: value.value } );\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<CssClassItem\n\t\t\t\t\t\t\t\tkey={ chipProps.key }\n\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\tprovider={ value.provider }\n\t\t\t\t\t\t\t\tid={ value.value }\n\t\t\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\t\t\tcolor={ isActive && value.color ? value.color : 'default' }\n\t\t\t\t\t\t\t\ticon={ value.icon }\n\t\t\t\t\t\t\t\tchipProps={ chipProps }\n\t\t\t\t\t\t\t\tonClickActive={ () => setActiveId( value.value ) }\n\t\t\t\t\t\t\t\trenameLabel={ renameLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t/>\n\t\t</Stack>\n\t);\n}\n\nconst updateClassByProvider = ( provider: string, data: UpdateActionPayload ) => {\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\n\tif ( ! providerInstance ) {\n\t\treturn;\n\t}\n\n\treturn providerInstance.actions.update?.( data );\n};\n\nfunction useOptions() {\n\tconst { element } = useElement();\n\n\tconst isProviderEditable = ( provider: StylesProvider ) => !! provider.actions.updateProps;\n\n\treturn useProviders()\n\t\t.filter( isProviderEditable )\n\t\t.flatMap< StyleDefOption >( ( provider ) => {\n\t\t\tconst isElements = provider.key === ELEMENTS_STYLES_PROVIDER_KEY;\n\t\t\tconst styleDefs = provider.actions.get( { elementId: element.id } );\n\n\t\t\t// Add empty local option for elements, as fallback.\n\t\t\tif ( isElements && styleDefs.length === 0 ) {\n\t\t\t\treturn [ EMPTY_OPTION ];\n\t\t\t}\n\n\t\t\treturn styleDefs.map( ( styleDef ) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: styleDef.label,\n\t\t\t\t\tvalue: styleDef.id,\n\t\t\t\t\tfixed: isElements,\n\t\t\t\t\tcolor: isElements ? 'primary' : 'global',\n\t\t\t\t\ticon: isElements ? <MapPinIcon /> : null,\n\t\t\t\t\tprovider: provider.key,\n\t\t\t\t\tgroup: provider.labels?.plural,\n\t\t\t\t};\n\t\t\t} );\n\t\t} );\n}\n\nfunction useCreateActions( {\n\tpushAppliedId,\n\tsetActiveId,\n}: {\n\tpushAppliedId: ( id: StyleDefinitionID ) => void;\n\tsetActiveId: ( id: StyleDefinitionID ) => void;\n} ) {\n\treturn useCreateActionsByProvider().map( ( [ provider, create ] ): Action< StyleDefOption > => {\n\t\treturn {\n\t\t\t// translators: %s is the label of the new class.\n\t\t\tlabel: ( value ) => __( 'Create new \"%s\"', 'elementor' ).replace( '%s', value ),\n\t\t\t// translators: %s is the singular label of css class provider (e.g \"Global CSS Class\").\n\t\t\tgroup: __( 'Create New %s', 'elementor' ).replace( '%s', provider.labels?.singular ?? '' ),\n\t\t\tcondition: ( _, inputValue ) => isLabelValid( inputValue ) && ! hasReachedLimit( provider ),\n\t\t\tapply: ( label ) => {\n\t\t\t\tconst createdId = create( label );\n\n\t\t\t\tif ( ! createdId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tpushAppliedId( createdId );\n\t\t\t\tsetActiveId( createdId );\n\t\t\t},\n\t\t};\n\t} );\n}\n\nfunction hasReachedLimit( provider: StylesProvider ) {\n\tif ( provider.limit === undefined ) {\n\t\treturn false;\n\t}\n\n\treturn provider.actions.get().length >= provider.limit;\n}\n\nfunction isLabelValid( newLabel: string ) {\n\treturn stylesRepository.isLabelValid( newLabel ) && ! stylesRepository.isLabelExist( newLabel );\n}\n\nfunction useAppliedOptions( options: StyleDefOption[], appliedIds: StyleDefinitionID[] ) {\n\tconst applied = options.filter( ( option ) => option.value && appliedIds.includes( option.value ) );\n\n\tconst hasElementsProviderStyleApplied = applied.some(\n\t\t( option ) => option.provider === ELEMENTS_STYLES_PROVIDER_KEY\n\t);\n\n\tif ( ! hasElementsProviderStyleApplied ) {\n\t\tapplied.unshift( EMPTY_OPTION );\n\t}\n\n\treturn applied;\n}\n\nfunction useAppliedClassesIds() {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\n\tconst value = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\n\tconst setValue = ( ids: StyleDefinitionID[] ) => {\n\t\tupdateElementSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: {\n\t\t\t\t[ currentClassesProp ]: classesPropTypeUtil.create( ids ),\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst pushValue = ( id: StyleDefinitionID ) => {\n\t\tconst ids = getElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\n\t\tsetValue( [ ...ids, id ] );\n\t};\n\n\treturn {\n\t\tvalue,\n\t\tsetValue,\n\t\tpushValue,\n\t};\n}\n\nfunction useHandleApply( appliedIds: StyleDefinitionID[], setAppliedIds: ( ids: StyleDefinitionID[] ) => void ) {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\n\treturn ( selectedOptions: StyleDefOption[] ) => {\n\t\tconst selectedValues = selectedOptions\n\t\t\t.map( ( { value } ) => value )\n\t\t\t.filter( ( value ) => value !== EMPTY_OPTION.value );\n\n\t\tconst isSameClassesAlreadyApplied =\n\t\t\tselectedValues.length === appliedIds.length &&\n\t\t\tselectedValues.every( ( value ) => appliedIds.includes( value ) );\n\n\t\t// Should not trigger to avoid register an undo step.\n\t\tif ( isSameClassesAlreadyApplied ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAppliedIds( selectedValues );\n\n\t\tconst addedValue = selectedValues.find( ( id ) => ! appliedIds.includes( id ) );\n\n\t\tif ( addedValue ) {\n\t\t\tsetActiveId( addedValue );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst removedValue = appliedIds.find( ( id ) => ! selectedValues.includes( id ) );\n\n\t\tif ( removedValue && removedValue === activeId ) {\n\t\t\tsetActiveId( selectedValues[ 0 ] ?? null );\n\t\t}\n\t};\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\ntype ContextValue = {\n\tprop: string;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ClassesPropProvider( { children, prop }: Props ) {\n\treturn <Context.Provider value={ { prop } }>{ children }</Context.Provider>;\n}\n\nexport function useClassesProp() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useClassesProp must be used within a ClassesPropProvider' );\n\t}\n\n\treturn context.prop;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\n\ntype ContextValue = {\n\telement: Element;\n\telementType: ElementType;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ElementProvider( { children, element, elementType }: Props ) {\n\treturn <Context.Provider value={ { element, elementType } }>{ children }</Context.Provider>;\n}\n\nexport function useElement() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useElement must be used within a ElementProvider' );\n\t}\n\n\treturn context;\n}\n","import * as React from 'react';\nimport { createContext, type Dispatch, type PropsWithChildren, useContext } from 'react';\nimport {\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { type StylesProvider, stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { StylesProviderNotFoundError } from '../errors';\n\ntype ContextValue = {\n\tsetId: Dispatch< StyleDefinition[ 'id' ] | null >;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tsetMetaState: Dispatch< StyleDefinitionState >;\n} & ( ContextValueWithProvider | ContextValueWithoutProvider );\n\ntype ContextValueWithProvider = {\n\tid: StyleDefinitionID;\n\tprovider: StylesProvider;\n};\n\ntype ContextValueWithoutProvider = {\n\tid: null;\n\tprovider: null;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< Omit< ContextValue, 'provider' > >;\n\nexport function StyleProvider( { children, ...props }: Props ) {\n\tconst provider = props.id === null ? null : getProviderByStyleId( props.id );\n\n\tif ( props.id && ! provider ) {\n\t\tthrow new StylesProviderNotFoundError( { context: { styleId: props.id } } );\n\t}\n\n\treturn <Context.Provider value={ { ...props, provider } as ContextValue }>{ children }</Context.Provider>;\n}\n\nexport function useStyle() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStyle must be used within a StyleProvider' );\n\t}\n\n\treturn context;\n}\n\nfunction getProviderByStyleId( styleId: StyleDefinitionID ) {\n\tconst styleProvider = stylesRepository.getProviders().find( ( provider ) => {\n\t\treturn provider.actions.get().find( ( style ) => style.id === styleId );\n\t} );\n\n\treturn styleProvider ?? null;\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\nimport { createError } from '@elementor/utils';\n\nexport const ControlTypeNotFoundError = createError< { controlType: string } >( {\n\tcode: 'control_type_not_found',\n\tmessage: 'Control type not found.',\n} );\n\nexport const StylesProviderNotFoundError = createError< { styleId: StyleDefinitionID } >( {\n\tcode: 'provider_not_found',\n\tmessage: 'Styles provider not found.',\n} );\n\nexport const StylesProviderCannotUpdatePropsError = createError< { providerKey: string } >( {\n\tcode: 'provider_cannot_update_props',\n\tmessage: \"Styles provider doesn't support updating props.\",\n} );\n\nexport const StyleNotFoundUnderProviderError = createError< { styleId: StyleDefinitionID; providerKey: string } >( {\n\tcode: 'style_not_found_under_provider',\n\tmessage: 'Style not found under the provider.',\n} );\n","import * as React from 'react';\nimport { useId, useState } from 'react';\nimport {\n\tAutocomplete,\n\ttype AutocompleteProps,\n\ttype AutocompleteRenderGroupParams,\n\tBox,\n\tcreateFilterOptions,\n\tstyled,\n\tTextField,\n} from '@elementor/ui';\n\nexport type Option = {\n\tlabel: string;\n\tvalue: string | null;\n\tfixed?: boolean;\n\tgroup?: string;\n\tkey?: string;\n};\n\nexport type Action< TOption extends Option > = {\n\tlabel: ( value: string ) => string;\n\tapply: ( value: string ) => void | Promise< void >;\n\tcondition: ( options: TOption[], value: string ) => boolean;\n\tgroup?: string;\n};\n\ntype ActionAsOption< TOption extends Option > = TOption & {\n\tapply: Action< TOption >[ 'apply' ];\n\tcondition: Action< TOption >[ 'condition' ];\n};\n\ntype Props< TOption extends Option > = Omit<\n\tAutocompleteProps< TOption, true, true, true >,\n\t'renderInput' | 'onSelect'\n> & {\n\tactions?: Action< TOption >[];\n\tselected: TOption[];\n\toptions: TOption[];\n\tonSelect?: ( value: TOption[] ) => void;\n};\n\nexport function MultiCombobox< TOption extends Option >( {\n\tactions = [],\n\tselected,\n\toptions,\n\tonSelect,\n\t...props\n}: Props< TOption > ) {\n\tconst filter = useFilterOptions< TOption >();\n\tconst { run, loading } = useActionRunner< TOption >();\n\n\treturn (\n\t\t<Autocomplete\n\t\t\t{ ...props }\n\t\t\tfreeSolo\n\t\t\tmultiple\n\t\t\tclearOnBlur\n\t\t\tselectOnFocus\n\t\t\tdisableClearable\n\t\t\thandleHomeEndKeys\n\t\t\tdisabled={ loading }\n\t\t\tvalue={ selected }\n\t\t\toptions={ options }\n\t\t\trenderGroup={ ( params ) => <Group { ...params } /> }\n\t\t\trenderInput={ ( params ) => <TextField { ...params } /> }\n\t\t\tonChange={ ( _, selectedOrInputValue, reason ) => {\n\t\t\t\tconst inputValue = selectedOrInputValue.find( ( option ) => typeof option === 'string' );\n\t\t\t\tconst optionsAndActions = selectedOrInputValue.filter( ( option ) => typeof option !== 'string' );\n\n\t\t\t\t// Handles user input when Enter is pressed\n\t\t\t\tif ( reason === 'createOption' ) {\n\t\t\t\t\tconst [ firstAction ] = filterActions( actions, { options, inputValue: inputValue ?? '' } );\n\n\t\t\t\t\tif ( firstAction?.value ) {\n\t\t\t\t\t\treturn run( firstAction.apply, firstAction.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handles the user's action selection when triggered.\n\t\t\t\tconst action = optionsAndActions.find( ( value ) => isAction( value ) );\n\n\t\t\t\tif ( reason === 'selectOption' && action?.value ) {\n\t\t\t\t\treturn run( action.apply, action.value );\n\t\t\t\t}\n\n\t\t\t\t// Every other case, we update the selected values.\n\t\t\t\tconst fixedValues = options.filter( ( option ) => !! option.fixed );\n\n\t\t\t\tonSelect?.( [ ...new Set( [ ...optionsAndActions, ...fixedValues ] ) ] );\n\t\t\t} }\n\t\t\tgetOptionLabel={ ( option ) => ( typeof option === 'string' ? option : option.label ) }\n\t\t\tgetOptionKey={ ( option ) => {\n\t\t\t\tif ( typeof option === 'string' ) {\n\t\t\t\t\treturn option;\n\t\t\t\t}\n\n\t\t\t\treturn option.key ?? option.value ?? option.label;\n\t\t\t} }\n\t\t\tfilterOptions={ ( optionList, params ) => {\n\t\t\t\tconst selectedValues = selected.map( ( option ) => option.value );\n\n\t\t\t\treturn [\n\t\t\t\t\t...filterActions( actions, { options: optionList, inputValue: params.inputValue } ),\n\t\t\t\t\t...filter(\n\t\t\t\t\t\toptionList.filter( ( option ) => ! selectedValues.includes( option.value ) ),\n\t\t\t\t\t\tparams\n\t\t\t\t\t),\n\t\t\t\t];\n\t\t\t} }\n\t\t\tgroupBy={ ( option ) => option.group ?? '' }\n\t\t\trenderOption={ ( optionProps, { label } ) => (\n\t\t\t\t<li { ...optionProps } style={ { display: 'block', textOverflow: 'ellipsis' } }>\n\t\t\t\t\t{ label }\n\t\t\t\t</li>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nconst Group = ( params: Omit< AutocompleteRenderGroupParams, 'key' > ) => {\n\tconst id = `combobox-group-${ useId().replace( /:/g, '_' ) }`;\n\n\treturn (\n\t\t<StyledGroup role=\"group\" aria-labelledby={ id }>\n\t\t\t<StyledGroupHeader id={ id }> { params.group }</StyledGroupHeader>\n\t\t\t<StyledGroupItems role=\"listbox\">{ params.children }</StyledGroupItems>\n\t\t</StyledGroup>\n\t);\n};\n\nconst StyledGroup = styled( 'li' )`\n\t&:not( :last-of-type ) {\n\t\tborder-bottom: 1px solid ${ ( { theme } ) => theme.palette.divider };\n\t}\n`;\n\nconst StyledGroupHeader = styled( Box )( ( { theme } ) => ( {\n\tposition: 'sticky',\n\ttop: '-8px',\n\tpadding: theme.spacing( 1, 2 ),\n\tcolor: theme.palette.text.tertiary,\n} ) );\n\nconst StyledGroupItems = styled( 'ul' )`\n\tpadding: 0;\n`;\n\nfunction useFilterOptions< TOption extends Option >() {\n\treturn useState( () => createFilterOptions< TOption >() )[ 0 ];\n}\n\nfunction useActionRunner< TOption extends Option >() {\n\tconst [ loading, setLoading ] = useState( false );\n\n\tconst run = async ( apply: Action< TOption >[ 'apply' ], value: string ) => {\n\t\tsetLoading( true );\n\n\t\ttry {\n\t\t\tawait apply( value );\n\t\t} catch {\n\t\t\t// TODO: Do something with the error.\n\t\t}\n\n\t\tsetLoading( false );\n\t};\n\n\treturn { run, loading };\n}\n\nfunction filterActions< TOption extends Option >(\n\tactions: Action< TOption >[],\n\t{ options, inputValue }: { options: TOption[]; inputValue: string }\n) {\n\treturn actions\n\t\t.filter( ( action ) => action.condition( options, inputValue ) )\n\t\t.map( ( action, index ) => ( {\n\t\t\tlabel: action.label( inputValue ),\n\t\t\tvalue: inputValue,\n\t\t\tgroup: action.group,\n\t\t\tapply: action.apply,\n\t\t\tcondition: action.condition,\n\t\t\tkey: index.toString(),\n\t\t} ) ) as ActionAsOption< TOption >[];\n}\n\nfunction isAction< TOption extends Option >( option: TOption ): option is ActionAsOption< TOption > {\n\treturn 'apply' in option && 'condition' in option;\n}\n","import * as React from 'react';\nimport { type ReactElement, useState } from 'react';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { EditableField, EllipsisWithTooltip, useEditable } from '@elementor/editor-ui';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport {\n\ttype AutocompleteRenderGetTagProps,\n\tbindTrigger,\n\tChip,\n\ttype ChipOwnProps,\n\tStack,\n\tTypography,\n\tUnstableChipGroup,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../contexts/style-context';\nimport { CssClassMenu } from './css-class-menu';\n\ntype CssClassItemProps = {\n\tid: string | null;\n\tlabel: string;\n\tprovider: string;\n\tisActive: boolean;\n\tcolor: ChipOwnProps[ 'color' ];\n\ticon: ReactElement | null;\n\tchipProps: ReturnType< AutocompleteRenderGetTagProps >;\n\tonClickActive: ( id: string | null ) => void;\n\trenameLabel: ( newLabel: string ) => void;\n\tvalidateLabel?: ( newLabel: string ) => string | undefined | null;\n};\n\nconst CHIP_SIZE = 'tiny';\n\nexport function CssClassItem( {\n\tid,\n\tlabel,\n\tprovider,\n\tisActive,\n\tcolor: colorProp,\n\ticon,\n\tchipProps,\n\tonClickActive,\n\trenameLabel,\n}: CssClassItemProps ) {\n\tconst { meta, setMetaState } = useStyle();\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\tconst [ chipRef, setChipRef ] = useState< HTMLElement | null >( null );\n\tconst { onDelete, ...chipGroupProps } = chipProps;\n\n\tconst {\n\t\tref,\n\t\tisEditing,\n\t\topenEditMode,\n\t\terror,\n\t\tgetProps: getEditableProps,\n\t} = useEditable( {\n\t\tvalue: label,\n\t\tonSubmit: renameLabel,\n\t\tvalidation: validateLabel,\n\t} );\n\n\tconst color = error ? 'error' : colorProp;\n\n\tconst providerActions = stylesRepository.getProviderByKey( provider )?.actions;\n\tconst allowRename = Boolean( providerActions?.update );\n\n\tconst isShowingState = isActive && meta.state;\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableChipGroup ref={ setChipRef } { ...chipGroupProps } aria-label={ `Edit ${ label }` } role=\"group\">\n\t\t\t\t<Chip\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tisEditing ? (\n\t\t\t\t\t\t\t<EditableField ref={ ref } error={ error } { ...getEditableProps() } />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<EllipsisWithTooltip maxWidth=\"10ch\" title={ label } as=\"div\" />\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tvariant={ isActive && ! meta.state && ! isEditing ? 'filled' : 'standard' }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tcolor={ color }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isShowingState ) {\n\t\t\t\t\t\t\tsetMetaState( null );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( allowRename && isActive ) {\n\t\t\t\t\t\t\topenEditMode();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonClickActive( id );\n\t\t\t\t\t} }\n\t\t\t\t\taria-pressed={ isActive }\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tcursor: isActive && allowRename && ! isShowingState ? 'text' : 'pointer',\n\t\t\t\t\t\t'&.Mui-focusVisible': {\n\t\t\t\t\t\t\tboxShadow: 'none !important',\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ ! isEditing && (\n\t\t\t\t\t<Chip\n\t\t\t\t\t\ticon={ isShowingState ? undefined : <DotsVerticalIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tisShowingState ? (\n\t\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t\t<Typography variant=\"inherit\">{ meta.state }</Typography>\n\t\t\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\t\tcolor={ color }\n\t\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\t\taria-label={ __( 'Open CSS Class Menu', 'elementor' ) }\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\tpaddingRight: 0,\n\t\t\t\t\t\t\t...( ! isShowingState ? { paddingLeft: 0 } : {} ),\n\t\t\t\t\t\t\t'.MuiChip-label': isShowingState ? { paddingRight: 0 } : { padding: 0 },\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</UnstableChipGroup>\n\t\t\t<CssClassMenu\n\t\t\t\tstyleId={ id }\n\t\t\t\tpopupState={ popupState }\n\t\t\t\tprovider={ provider }\n\t\t\t\thandleRename={ openEditMode }\n\t\t\t\tanchorEl={ chipRef }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst validateLabel = ( newLabel: string ) => {\n\tif ( ! stylesRepository.isLabelValid( newLabel ) ) {\n\t\treturn __( 'Format is not valid', 'elementor' );\n\t}\n\n\tif ( stylesRepository.isLabelExist( newLabel ) ) {\n\t\treturn __( 'Existing name', 'elementor' );\n\t}\n\n\treturn null;\n};\n","import * as React from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { bindMenu, Divider, Menu, MenuSubheader, type PopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../contexts/style-context';\nimport { useUnapplyClass } from '../../hooks/use-unapply-class';\n\nconst STATES: NonNullable< StyleDefinitionState >[] = [ 'hover', 'focus', 'active' ];\n\ntype CssClassMenuProps = {\n\tstyleId: string | null;\n\tprovider: string;\n\tpopupState: PopupState;\n\thandleRename: () => void;\n\tanchorEl: HTMLElement | null;\n};\n\nexport function CssClassMenu( { styleId, provider, popupState, handleRename, anchorEl }: CssClassMenuProps ) {\n\tconst handleKeyDown = ( e: React.KeyboardEvent< HTMLElement > ) => {\n\t\te.stopPropagation();\n\t};\n\n\treturn (\n\t\t<Menu\n\t\t\tMenuListProps={ { dense: true } }\n\t\t\t{ ...bindMenu( popupState ) }\n\t\t\tanchorEl={ anchorEl }\n\t\t\tanchorOrigin={ {\n\t\t\t\tvertical: 'bottom',\n\t\t\t\thorizontal: 'left',\n\t\t\t} }\n\t\t\ttransformOrigin={ {\n\t\t\t\thorizontal: 'left',\n\t\t\t\tvertical: -4,\n\t\t\t} }\n\t\t\tonKeyDown={ handleKeyDown }\n\t\t>\n\t\t\t{ /* It has to be an array since MUI menu doesn't accept a Fragment as a child, and wrapping the items with an HTML element disrupts keyboard navigation */ }\n\t\t\t{ getMenuItemsByProvider( { provider, styleId, handleRename, closeMenu: popupState.close } ) }\n\t\t\t<MenuSubheader sx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }>\n\t\t\t\t{ __( 'Pseudo classes', 'elementor' ) }\n\t\t\t</MenuSubheader>\n\t\t\t<StateMenuItem key=\"normal\" state={ null } styleId={ styleId } closeMenu={ popupState.close } />\n\t\t\t{ STATES.map( ( state ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StateMenuItem key={ state } state={ state } styleId={ styleId } closeMenu={ popupState.close } />\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Menu>\n\t);\n}\n\nfunction getMenuItemsByProvider( {\n\tprovider,\n\tstyleId,\n\thandleRename,\n\tcloseMenu,\n}: {\n\tprovider: string;\n\tstyleId: string | null;\n\thandleRename: () => void;\n\tcloseMenu: () => void;\n} ) {\n\tif ( ! styleId ) {\n\t\treturn [];\n\t}\n\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\tconst providerActions = providerInstance?.actions;\n\n\tconst [ canUpdate, canDelete ] = [ providerActions?.update, providerActions?.delete ];\n\n\tconst actions = [\n\t\tcanUpdate && <RenameClassMenuItem key=\"rename-class\" handleRename={ handleRename } closeMenu={ closeMenu } />,\n\t\tcanDelete && <UnapplyClassMenuItem key=\"unapply-class\" styleId={ styleId } closeMenu={ closeMenu } />,\n\t].filter( Boolean );\n\n\tif ( actions.length ) {\n\t\tactions.unshift(\n\t\t\t<MenuSubheader\n\t\t\t\tkey=\"provider-label\"\n\t\t\t\tsx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }\n\t\t\t>\n\t\t\t\t{ providerInstance?.labels?.singular }\n\t\t\t</MenuSubheader>\n\t\t);\n\t\tactions.push( <Divider key=\"provider-actions-divider\" /> );\n\t}\n\n\treturn actions;\n}\n\ntype StateMenuItemProps = {\n\tstate: StyleDefinitionState;\n\tstyleId: string | null;\n\tcloseMenu: () => void;\n};\n\nfunction StateMenuItem( { state, styleId, closeMenu, ...props }: StateMenuItemProps ) {\n\tconst { id: activeId, setId: setActiveId, setMetaState: setActiveMetaState, meta } = useStyle();\n\tconst { state: activeState } = meta;\n\n\tconst isActive = styleId === activeId;\n\tconst isSelected = state === activeState && isActive;\n\n\treturn (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tselected={ isSelected }\n\t\t\tsx={ { textTransform: 'capitalize' } }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! isActive ) {\n\t\t\t\t\tsetActiveId( styleId );\n\t\t\t\t}\n\n\t\t\t\tsetActiveMetaState( state );\n\n\t\t\t\tcloseMenu();\n\t\t\t} }\n\t\t>\n\t\t\t{ state ? state : 'Normal' }\n\t\t</MenuListItem>\n\t);\n}\n\nfunction UnapplyClassMenuItem( { styleId, closeMenu, ...props }: { styleId: string; closeMenu: () => void } ) {\n\tconst unapplyClass = useUnapplyClass( styleId );\n\n\treturn (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tonClick={ () => {\n\t\t\t\tunapplyClass();\n\t\t\t\tcloseMenu();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Remove', 'elementor' ) }\n\t\t</MenuListItem>\n\t);\n}\n\nfunction RenameClassMenuItem( {\n\thandleRename,\n\tcloseMenu,\n\t...props\n}: {\n\thandleRename: () => void;\n\tcloseMenu: () => void;\n} ) {\n\treturn (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tonClick={ () => {\n\t\t\t\tcloseMenu();\n\t\t\t\thandleRename();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Rename', 'elementor' ) }\n\t\t</MenuListItem>\n\t);\n}\n","import { updateElementSettings, useElementSetting } from '@elementor/editor-elements';\nimport { type ClassesPropValue } from '@elementor/editor-props';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\n\nexport const useUnapplyClass = ( classId: string ) => {\n\tconst { element } = useElement();\n\tconst { setId: setStyleId } = useStyle();\n\tconst classesProp = useClassesProp();\n\n\tconst classes = useElementSetting< ClassesPropValue >( element.id, classesProp );\n\tconst filteredClasses = classes?.value.filter( ( className ) => className !== classId ) ?? [];\n\n\treturn () => {\n\t\tupdateElementSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: {\n\t\t\t\t[ classesProp ]: {\n\t\t\t\t\t$$type: 'classes',\n\t\t\t\t\tvalue: filteredClasses,\n\t\t\t\t},\n\t\t\t},\n\t\t} );\n\n\t\tsetStyleId( null );\n\t};\n};\n","import { __createPanel as createPanel } from '@elementor/editor-panels';\n\nimport { EditingPanel } from './components/editing-panel';\n\nexport const { panel, usePanelActions, usePanelStatus } = createPanel( {\n\tid: 'editing-panel',\n\tcomponent: EditingPanel,\n} );\n","import * as React from 'react';\nimport { ControlActionsProvider, ControlReplacementProvider } from '@elementor/editor-controls';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { AtomIcon } from '@elementor/icons';\nimport { SessionStorageProvider } from '@elementor/session';\nimport { ErrorBoundary } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ElementProvider } from '../contexts/element-context';\nimport { getControlReplacement } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { EditorPanelErrorFallback } from './editing-panel-error-fallback';\nimport { EditingPanelTabs } from './editing-panel-tabs';\n\nconst { useMenuItems } = controlActionsMenu;\n\nexport const EditingPanel = () => {\n\tconst { element, elementType } = useSelectedElement();\n\tconst controlReplacement = getControlReplacement();\n\tconst menuItems = useMenuItems().default;\n\n\tif ( ! element || ! elementType ) {\n\t\treturn null;\n\t}\n\n\t/* translators: %s: Element type title. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', elementType.title );\n\n\treturn (\n\t\t<ErrorBoundary fallback={ <EditorPanelErrorFallback /> }>\n\t\t\t<SessionStorageProvider prefix={ 'elementor' }>\n\t\t\t\t<Panel>\n\t\t\t\t\t<PanelHeader>\n\t\t\t\t\t\t<PanelHeaderTitle>{ panelTitle }</PanelHeaderTitle>\n\t\t\t\t\t\t<AtomIcon fontSize=\"small\" sx={ { color: 'text.tertiary' } } />\n\t\t\t\t\t</PanelHeader>\n\t\t\t\t\t<PanelBody>\n\t\t\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t\t\t<ControlReplacementProvider { ...controlReplacement }>\n\t\t\t\t\t\t\t\t<ElementProvider element={ element } elementType={ elementType }>\n\t\t\t\t\t\t\t\t\t<EditingPanelTabs />\n\t\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t\t</ControlReplacementProvider>\n\t\t\t\t\t\t</ControlActionsProvider>\n\t\t\t\t\t</PanelBody>\n\t\t\t\t</Panel>\n\t\t\t</SessionStorageProvider>\n\t\t</ErrorBoundary>\n\t);\n};\n","import { createMenu } from '@elementor/menus';\n\nimport PopoverAction from './popover-action';\n\nexport const controlActionsMenu = createMenu( {\n\tcomponents: {\n\t\tPopoverAction,\n\t},\n} );\n","import * as React from 'react';\nimport { type ComponentType, type ElementType as ReactElementType, useId } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport { bindPopover, bindToggle, IconButton, Popover, Stack, Tooltip, Typography, usePopupState } from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\nexport type PopoverActionProps = {\n\ttitle: string;\n\tvisible?: boolean;\n\ticon: ReactElementType;\n\tpopoverContent: ComponentType< { closePopover: () => void } >;\n};\n\nexport default function PopoverAction( {\n\ttitle,\n\tvisible = true,\n\ticon: Icon,\n\tpopoverContent: PopoverContent,\n}: PopoverActionProps ) {\n\tconst id = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-popover-action-${ id }`,\n\t} );\n\n\tif ( ! visible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Tooltip placement=\"top\" title={ title }>\n\t\t\t\t<IconButton aria-label={ title } key={ id } size={ SIZE } { ...bindToggle( popupState ) }>\n\t\t\t\t\t<Icon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'center',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t<Icon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t<Typography variant=\"subtitle2\">{ title }</Typography>\n\t\t\t\t\t<IconButton sx={ { ml: 'auto' } } size={ SIZE } onClick={ popupState.close }>\n\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Stack>\n\t\t\t\t<PopoverContent closePopover={ popupState.close } />\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { Alert, Box } from '@elementor/ui';\n\nexport function EditorPanelErrorFallback() {\n\treturn (\n\t\t<Box role=\"alert\" sx={ { minHeight: '100%', p: 2 } }>\n\t\t\t<Alert severity=\"error\" sx={ { mb: 2, maxWidth: 400, textAlign: 'center' } }>\n\t\t\t\t<strong>Something went wrong</strong>\n\t\t\t</Alert>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { Fragment } from 'react';\nimport { Divider, Stack, Tab, TabPanel, Tabs, useTabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../contexts/element-context';\nimport { SettingsTab } from './settings-tab';\nimport { StyleTab } from './style-tab';\n\ntype TabValue = 'settings' | 'style';\n\nexport const EditingPanelTabs = () => {\n\tconst { element } = useElement();\n\n\tconst { getTabProps, getTabPanelProps, getTabsProps } = useTabs< TabValue >( 'settings' );\n\n\treturn (\n\t\t// When switching between elements, the local states should be reset. We are using key to rerender the tabs.\n\t\t// Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key\n\t\t<Fragment key={ element.id }>\n\t\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t\t<Tabs variant=\"fullWidth\" indicatorColor=\"secondary\" textColor=\"inherit\" { ...getTabsProps() }>\n\t\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t\t</Tabs>\n\t\t\t\t<Divider />\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t\t<SettingsTab />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t\t<StyleTab />\n\t\t\t\t</TabPanel>\n\t\t\t</Stack>\n\t\t</Fragment>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { type Control } from '@elementor/editor-elements';\nimport { SessionStorageProvider } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\nimport { Control as BaseControl } from '../controls-registry/control';\nimport { ControlTypeContainer } from '../controls-registry/control-type-container';\nimport { type ControlType, getControlByType } from '../controls-registry/controls-registry';\nimport { SettingsField } from '../controls-registry/settings-field';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\n\nexport const SettingsTab = () => {\n\tconst { elementType, element } = useElement();\n\n\treturn (\n\t\t<SessionStorageProvider prefix={ element.id }>\n\t\t\t<SectionsList>\n\t\t\t\t{ elementType.controls.map( ( { type, value }, index ) => {\n\t\t\t\t\tif ( type === 'control' ) {\n\t\t\t\t\t\treturn <Control key={ value.bind } control={ value } />;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === 'section' ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Section title={ value.label } key={ type + '.' + index } defaultExpanded={ true }>\n\t\t\t\t\t\t\t\t{ value.items?.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tif ( item.type === 'control' ) {\n\t\t\t\t\t\t\t\t\t\treturn <Control key={ item.value.bind } control={ item.value } />;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// TODO: Handle 2nd level sections\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t} ) }\n\t\t\t</SectionsList>\n\t\t</SessionStorageProvider>\n\t);\n};\n\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! getControlByType( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SettingsField bind={ control.bind }>\n\t\t\t<ControlTypeContainer controlType={ control.type as ControlType }>\n\t\t\t\t{ control.label ? <ControlLabel>{ control.label }</ControlLabel> : null }\n\t\t\t\t<BaseControl type={ control.type as ControlType } props={ control.props } />\n\t\t\t</ControlTypeContainer>\n\t\t</SettingsField>\n\t);\n};\n","import * as React from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useElement } from '../contexts/element-context';\nimport { ControlTypeNotFoundError } from '../errors';\nimport { type ControlType, type ControlTypes, getControlByType } from './controls-registry';\n\ntype IsRequired< T, K extends keyof T > = object extends Pick< T, K > ? false : true;\n\ntype AnyPropertyRequired< T > = {\n\t[ K in keyof T ]: IsRequired< T, K >;\n}[ keyof T ] extends true\n\t? true\n\t: false;\n\ntype ControlProps< T extends ControlType > = AnyPropertyRequired< ComponentProps< ControlTypes[ T ] > > extends true\n\t? {\n\t\t\tprops: ComponentProps< ControlTypes[ T ] >;\n\t\t\ttype: T;\n\t }\n\t: {\n\t\t\tprops?: ComponentProps< ControlTypes[ T ] >;\n\t\t\ttype: T;\n\t };\n\nexport const Control = < T extends ControlType >( { props, type }: ControlProps< T > ) => {\n\tconst ControlByType = getControlByType( type );\n\tconst { element } = useElement();\n\n\tif ( ! ControlByType ) {\n\t\tthrow new ControlTypeNotFoundError( {\n\t\t\tcontext: { controlType: type },\n\t\t} );\n\t}\n\n\t// @ts-expect-error ControlComponent props are inferred from the type (T).\n\treturn <ControlByType { ...props } context={ { elementId: element.id } } />;\n};\n","import {\n\ttype ControlComponent,\n\tImageControl,\n\tLinkControl,\n\tSelectControl,\n\tSizeControl,\n\tSvgMediaControl,\n\tTextAreaControl,\n\tTextControl,\n\tUrlControl,\n} from '@elementor/editor-controls';\n\nexport type ControlLayout = 'full' | 'two-columns';\n\ntype ControlRegistry = Record< string, { component: ControlComponent; layout: ControlLayout } >;\n\nconst controlTypes = {\n\timage: { component: ImageControl, layout: 'full' },\n\t'svg-media': { component: SvgMediaControl, layout: 'full' },\n\ttext: { component: TextControl, layout: 'full' },\n\ttextarea: { component: TextAreaControl, layout: 'full' },\n\tsize: { component: SizeControl, layout: 'two-columns' },\n\tselect: { component: SelectControl, layout: 'two-columns' },\n\tlink: { component: LinkControl, layout: 'full' },\n\turl: { component: UrlControl, layout: 'full' },\n} as const satisfies ControlRegistry;\n\nexport type ControlType = keyof typeof controlTypes;\n\nexport type ControlTypes = {\n\t[ key in ControlType ]: ( typeof controlTypes )[ key ][ 'component' ];\n};\n\nexport const getControlByType = ( type: ControlType ) => controlTypes[ type ]?.component;\n\nexport const getLayoutByType = ( type: ControlType ) => controlTypes[ type ].layout;\n","import * as React from 'react';\nimport { Box, type BoxProps, styled } from '@elementor/ui';\n\nimport { type ControlLayout, type ControlType, getLayoutByType } from './controls-registry';\n\nexport const ControlTypeContainer = ( {\n\tcontrolType,\n\tchildren,\n}: React.PropsWithChildren< { controlType: ControlType } > ) => {\n\tconst layout = getLayoutByType( controlType );\n\n\treturn <StyledContainer layout={ layout }>{ children }</StyledContainer>;\n};\n\nconst StyledContainer = styled( Box, {\n\tshouldForwardProp: ( prop: string ) => ! [ 'layout' ].includes( prop ),\n} )< BoxProps & { layout: ControlLayout } >( ( { layout, theme } ) => ( {\n\tdisplay: 'grid',\n\tgridGap: theme.spacing( 1 ),\n\t...getGridLayout( layout ),\n} ) );\n\nconst getGridLayout = ( layout: ControlLayout ) => ( {\n\tjustifyContent: 'space-between',\n\tgridTemplateColumns: {\n\t\tfull: '1fr',\n\t\t'two-columns': 'repeat(2, 1fr)',\n\t}[ layout ],\n} );\n","import * as React from 'react';\nimport { PropKeyProvider, PropProvider } from '@elementor/editor-controls';\nimport { updateElementSettings, useElementSetting } from '@elementor/editor-elements';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\n\nimport { useElement } from '../contexts/element-context';\nimport { createTopLevelOjectType } from './create-top-level-object-type';\n\ntype Props = {\n\tbind: PropKey;\n\tchildren: React.ReactNode;\n};\n\nexport const SettingsField = ( { bind, children }: Props ) => {\n\tconst { element, elementType } = useElement();\n\n\tconst settingsValue = useElementSetting< PropValue >( element.id, bind );\n\n\tconst value = { [ bind ]: settingsValue };\n\n\tconst propType = createTopLevelOjectType( { schema: elementType.propsSchema } );\n\n\tconst setValue = ( newValue: Record< string, PropValue > ) => {\n\t\tupdateElementSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: { ...newValue },\n\t\t} );\n\t};\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t<PropKeyProvider bind={ bind }>{ children }</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import { type ObjectPropType, type PropsSchema } from '@elementor/editor-props';\n\nexport const createTopLevelOjectType = ( { schema }: { schema: PropsSchema } ) => {\n\tconst schemaPropType: ObjectPropType = {\n\t\tkey: '',\n\t\tkind: 'object',\n\t\tmeta: {},\n\t\tsettings: {},\n\t\tdefault: null,\n\t\tshape: schema,\n\t};\n\n\treturn schemaPropType;\n};\n","import * as React from 'react';\nimport { type PropsWithChildren, useId, useState } from 'react';\nimport { Collapse, Divider, ListItemButton, ListItemText, Stack } from '@elementor/ui';\n\nimport { CollapseIcon } from './collapse-icon';\n\ntype Props = PropsWithChildren< {\n\ttitle: string;\n\tdefaultExpanded?: boolean;\n} >;\n\nexport function Section( { title, children, defaultExpanded = false }: Props ) {\n\tconst [ isOpen, setIsOpen ] = useState( !! defaultExpanded );\n\n\tconst id = useId();\n\tconst labelId = `label-${ id }`;\n\tconst contentId = `content-${ id }`;\n\n\treturn (\n\t\t<>\n\t\t\t<ListItemButton\n\t\t\t\tid={ labelId }\n\t\t\t\taria-controls={ contentId }\n\t\t\t\tonClick={ () => setIsOpen( ( prev ) => ! prev ) }\n\t\t\t\tsx={ { '&:hover': { backgroundColor: 'transparent' } } }\n\t\t\t>\n\t\t\t\t<ListItemText\n\t\t\t\t\tsecondary={ title }\n\t\t\t\t\tsecondaryTypographyProps={ { color: 'text.primary', variant: 'caption', fontWeight: 'bold' } }\n\t\t\t\t/>\n\t\t\t\t<CollapseIcon open={ isOpen } color=\"secondary\" fontSize=\"tiny\" />\n\t\t\t</ListItemButton>\n\t\t\t<Collapse id={ contentId } aria-labelledby={ labelId } in={ isOpen } timeout=\"auto\" unmountOnExit>\n\t\t\t\t<Stack gap={ 2.5 } p={ 2 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Stack>\n\t\t\t</Collapse>\n\t\t\t<Divider />\n\t\t</>\n\t);\n}\n","import { ChevronDownIcon } from '@elementor/icons';\nimport { styled } from '@elementor/ui';\n\n// TODO: Replace this with future Rotate component that will be implemented in elementor-ui\nexport const CollapseIcon = styled( ChevronDownIcon, {\n\tshouldForwardProp: ( prop ) => prop !== 'open',\n} )< { open: boolean } >( ( { theme, open } ) => ( {\n\ttransform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n\ttransition: theme.transitions.create( 'transform', {\n\t\tduration: theme.transitions.duration.standard,\n\t} ),\n} ) );\n","import * as React from 'react';\nimport { List, type ListProps } from '@elementor/ui';\n\nexport function SectionsList( props: ListProps ) {\n\treturn <List disablePadding component=\"div\" { ...props } />;\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { getElementStyles, useElementSetting } from '@elementor/editor-elements';\nimport { CLASSES_PROP_KEY, type ClassesPropValue, type PropKey } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { type StyleDefinitionID, type StyleDefinitionState } from '@elementor/editor-styles';\nimport { SessionStorageProvider } from '@elementor/session';\nimport { Divider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ClassesPropProvider } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { StyleProvider } from '../contexts/style-context';\nimport { StyleInheritanceProvider } from '../contexts/styles-inheritance-context';\nimport { CssClassSelector } from './css-classes/css-class-selector';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\nimport { BackgroundSection } from './style-sections/background-section/background-section';\nimport { BorderSection } from './style-sections/border-section/border-section';\nimport { EffectsSection } from './style-sections/effects-section/effects-section';\nimport { LayoutSection } from './style-sections/layout-section/layout-section';\nimport { PositionSection } from './style-sections/position-section/position-section';\nimport { SizeSection } from './style-sections/size-section/size-section';\nimport { SpacingSection } from './style-sections/spacing-section/spacing-section';\nimport { TypographySection } from './style-sections/typography-section/typography-section';\n\nexport const StyleTab = () => {\n\tconst currentClassesProp = useCurrentClassesProp();\n\tconst [ activeStyleDefId, setActiveStyleDefId ] = useActiveStyleDefId( currentClassesProp );\n\tconst [ activeStyleState, setActiveStyleState ] = useState< StyleDefinitionState | null >( null );\n\tconst breakpoint = useActiveBreakpoint();\n\n\treturn (\n\t\t<ClassesPropProvider prop={ currentClassesProp }>\n\t\t\t<StyleProvider\n\t\t\t\tmeta={ { breakpoint, state: activeStyleState } }\n\t\t\t\tid={ activeStyleDefId }\n\t\t\t\tsetId={ ( id: StyleDefinitionID | null ) => {\n\t\t\t\t\tsetActiveStyleDefId( id );\n\t\t\t\t\tsetActiveStyleState( null );\n\t\t\t\t} }\n\t\t\t\tsetMetaState={ setActiveStyleState }\n\t\t\t>\n\t\t\t\t<SessionStorageProvider prefix={ activeStyleDefId ?? '' }>\n\t\t\t\t\t<StyleInheritanceProvider>\n\t\t\t\t\t\t<CssClassSelector />\n\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t<SectionsList>\n\t\t\t\t\t\t\t<Section title={ __( 'Layout', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<LayoutSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Spacing', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<SpacingSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Size', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<SizeSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Position', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<PositionSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Typography', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<TypographySection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Background', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<BackgroundSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Border', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<BorderSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Effects', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<EffectsSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t</SectionsList>\n\t\t\t\t\t</StyleInheritanceProvider>\n\t\t\t\t</SessionStorageProvider>\n\t\t\t</StyleProvider>\n\t\t</ClassesPropProvider>\n\t);\n};\n\nfunction useActiveStyleDefId( currentClassesProp: PropKey ) {\n\tconst [ activeStyledDefId, setActiveStyledDefId ] = useState< StyleDefinitionID | null >( null );\n\n\tconst fallback = useFirstElementStyleDef( currentClassesProp );\n\n\treturn [ activeStyledDefId || fallback?.id || null, setActiveStyledDefId ] as const;\n}\n\nfunction useFirstElementStyleDef( currentClassesProp: PropKey ) {\n\tconst { element } = useElement();\n\n\tconst classesIds = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\tconst stylesDefs = getElementStyles( element.id ) ?? {};\n\n\treturn Object.values( stylesDefs ).find( ( styleDef ) => classesIds.includes( styleDef.id ) );\n}\n\nfunction useCurrentClassesProp(): string {\n\tconst { elementType } = useElement();\n\n\tconst prop = Object.entries( elementType.propsSchema ).find(\n\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t);\n\n\tif ( ! prop ) {\n\t\tthrow new Error( 'Element does not have a classes prop' );\n\t}\n\n\treturn prop[ 0 ];\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { getWidgetsCache, useElementSetting } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { getBreakpointsTree } from '@elementor/editor-responsive';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { useStylesRerender } from '../hooks/use-styles-rerender';\nimport { createStylesInheritance } from '../styles-inheritance/create-styles-inheritance';\nimport { type SnapshotPropValue, type StylesInheritanceSnapshotGetter } from '../styles-inheritance/types';\nimport { useClassesProp } from './classes-prop-context';\nimport { useElement } from './element-context';\nimport { useStyle } from './style-context';\n\ntype ContextValue = {\n\tgetSnapshot: StylesInheritanceSnapshotGetter;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\nexport function StyleInheritanceProvider( { children }: PropsWithChildren ) {\n\tconst styleDefs = useAppliedStyles();\n\n\tconst breakpointsTree = getBreakpointsTree();\n\n\tconst getSnapshot = createStylesInheritance( styleDefs, breakpointsTree );\n\n\treturn <Context.Provider value={ { getSnapshot } }>{ children }</Context.Provider>;\n}\n\nexport function useStylesInheritanceFields< T extends readonly string[] >(\n\tfields: T\n): { [ K in T[ number ] ]: SnapshotPropValue[] } | null {\n\tconst context = useContext( Context );\n\tconst { meta } = useStyle();\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStylesInheritanceFields must be used within a StyleInheritanceProvider' );\n\t}\n\n\tif ( ! meta ) {\n\t\treturn null;\n\t}\n\n\tconst snapshot = context.getSnapshot( meta );\n\n\treturn fields.reduce(\n\t\t( acc, key: T[ number ] ) => ( { ...acc, [ key ]: snapshot?.[ key ] ?? [] } ),\n\t\t{} as { [ K in T[ number ] ]: SnapshotPropValue[] }\n\t);\n}\n\nexport function useStylesInheritanceField( field: string ): SnapshotPropValue[] {\n\treturn useStylesInheritanceFields( [ field ] )?.[ field ] ?? [];\n}\n\nconst useAppliedStyles = () => {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\tconst baseStyles = useBaseStyles();\n\n\tuseStylesRerender();\n\n\tconst classesProp = useElementSetting< ClassesPropValue >( element.id, currentClassesProp );\n\n\tconst appliedStyles = classesPropTypeUtil.extract( classesProp );\n\n\treturn stylesRepository\n\t\t.all()\n\t\t.filter( ( style ) => appliedStyles?.includes( style.id ) )\n\t\t.concat( baseStyles );\n};\n\nconst useBaseStyles = () => {\n\tconst { elementType } = useElement();\n\tconst widgetsCache = getWidgetsCache();\n\tconst widgetCache = widgetsCache?.[ elementType.key ];\n\n\treturn Object.values( widgetCache?.base_styles ?? {} );\n};\n","import { useEffect, useReducer } from 'react';\n\nimport { useStyle } from '../contexts/style-context';\n\nexport const useStylesRerender = () => {\n\tconst { provider } = useStyle();\n\tconst [ , reRender ] = useReducer( ( p ) => ! p, false );\n\n\tuseEffect( () => provider?.subscribe( reRender ), [ provider ] );\n};\n","import { type BreakpointId } from '@elementor/editor-responsive';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\n\nexport const DEFAULT_STATE = 'normal';\n\nconst DEFAULT_BREAKPOINT = 'desktop';\n\nexport const getStateKey = ( state: StyleDefinitionState ) => state ?? DEFAULT_STATE;\n\nexport const getBreakpointKey = ( breakpoint: BreakpointId | null ): BreakpointId => breakpoint ?? DEFAULT_BREAKPOINT;\n","import { type BreakpointId, type BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\n\nimport {\n\ttype BreakpointsInheritancePath,\n\ttype BreakpointsStatesSnapshotsMapping,\n\ttype BreakpointStatesSlotsMapping,\n\ttype SnapshotPropValue,\n\ttype StyleInheritanceMetaProps,\n\ttype StylesInheritanceSnapshot,\n\ttype StylesInheritanceSnapshotGetter,\n\ttype StylesInheritanceSnapshotsSlot,\n\ttype StyleVariantWithId,\n} from './types';\nimport { DEFAULT_STATE, getBreakpointKey, getStateKey } from './utils';\n\nexport function createSnapshotsManager(\n\tgetStylesByMeta: ( meta: StyleInheritanceMetaProps ) => StyleVariantWithId[],\n\tbreakpointsRoot: BreakpointNode\n): StylesInheritanceSnapshotGetter {\n\tconst breakpointsInheritancePaths = makeBreakpointsInheritancePaths( breakpointsRoot );\n\tconst allBreakpointStatesSnapshots: BreakpointsStatesSnapshotsMapping = {};\n\n\tconst buildMissingSnapshotsForBreakpoint = (\n\t\tcurrentBreakpointId: BreakpointId | null,\n\t\tparentBreakpoint: BreakpointStatesSlotsMapping | undefined,\n\t\tstate: StyleDefinitionState\n\t) => {\n\t\tconst currentBreakpointKey = getBreakpointKey( currentBreakpointId );\n\t\tconst stateKey = getStateKey( state );\n\n\t\tif ( ! allBreakpointStatesSnapshots[ currentBreakpointKey ] ) {\n\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ] = {\n\t\t\t\t[ DEFAULT_STATE ]: buildStateSnapshotSlot(\n\t\t\t\t\tgetStylesByMeta( { breakpoint: currentBreakpointId, state: null } ),\n\t\t\t\t\tparentBreakpoint,\n\t\t\t\t\t{},\n\t\t\t\t\tnull\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif ( state && ! allBreakpointStatesSnapshots[ currentBreakpointKey ][ stateKey ] ) {\n\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ][ stateKey ] = buildStateSnapshotSlot(\n\t\t\t\tgetStylesByMeta( { breakpoint: currentBreakpointId, state } ),\n\t\t\t\tparentBreakpoint,\n\t\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ],\n\t\t\t\tstate\n\t\t\t);\n\t\t}\n\t};\n\n\treturn ( meta: StyleInheritanceMetaProps ) => {\n\t\tconst { breakpoint, state } = meta;\n\n\t\tconst stateKey = getStateKey( state );\n\t\tconst breakpointKey = getBreakpointKey( breakpoint );\n\n\t\tif ( allBreakpointStatesSnapshots[ breakpointKey ]?.[ stateKey ] ) {\n\t\t\t// snapshot was already made for this breakpoint+state\n\t\t\treturn allBreakpointStatesSnapshots[ breakpointKey ][ stateKey ].snapshot;\n\t\t}\n\n\t\tconst breakpointsChain = [ ...breakpointsInheritancePaths[ breakpointKey ], breakpoint ];\n\n\t\tbreakpointsChain.forEach( ( breakpointId, index ) => {\n\t\t\tconst parentBreakpointId = index > 0 ? breakpointsChain[ index - 1 ] : null;\n\n\t\t\tbuildMissingSnapshotsForBreakpoint(\n\t\t\t\tbreakpointId,\n\t\t\t\tparentBreakpointId ? allBreakpointStatesSnapshots[ parentBreakpointId ] : undefined,\n\t\t\t\tstate\n\t\t\t);\n\t\t} );\n\n\t\treturn allBreakpointStatesSnapshots[ breakpointKey ]?.[ stateKey ]?.snapshot;\n\t};\n}\n\n/**\n * builds a mapping of each breakpoint to its inheritance chain, e.g. -\n * \tdesktop: [],\n * \ttablet: [ 'desktop' ],\n * \tmobile: [ 'desktop', 'tablet' ]\n * @param root\n */\nfunction makeBreakpointsInheritancePaths( root: BreakpointNode ): BreakpointsInheritancePath {\n\tconst breakpoints: Partial< BreakpointsInheritancePath > = {};\n\n\tconst traverse = ( node: BreakpointNode, parent?: BreakpointId[] ) => {\n\t\tconst { id, children } = node;\n\n\t\tbreakpoints[ id ] = parent ? [ ...parent ] : [];\n\n\t\tchildren?.forEach( ( child ) => {\n\t\t\ttraverse( child, [ ...( breakpoints[ id ] ?? [] ), id ] );\n\t\t} );\n\t};\n\n\ttraverse( root );\n\n\treturn breakpoints as BreakpointsInheritancePath;\n}\n\n// creates a snapshot slot for a specific breakpoint and state\nfunction buildStateSnapshotSlot(\n\tstyles: StyleVariantWithId[],\n\tparentBreakpoint: BreakpointStatesSlotsMapping | undefined,\n\tcurrentBreakpoint: BreakpointStatesSlotsMapping,\n\tstate: StyleDefinitionState\n): StylesInheritanceSnapshotsSlot {\n\tconst initialSlot = buildInitialSnapshotFromStyles( styles );\n\n\tif ( ! state ) {\n\t\treturn {\n\t\t\tsnapshot: mergeSnapshots( [ initialSlot.snapshot, parentBreakpoint?.[ DEFAULT_STATE ]?.snapshot ] ),\n\t\t\tstateSpecificSnapshot: undefined,\n\t\t};\n\t}\n\n\treturn {\n\t\tsnapshot: mergeSnapshots( [\n\t\t\tinitialSlot.snapshot,\n\t\t\tparentBreakpoint?.[ state ]?.stateSpecificSnapshot,\n\t\t\tcurrentBreakpoint[ DEFAULT_STATE ]?.snapshot,\n\t\t] ),\n\t\tstateSpecificSnapshot: mergeSnapshots( [\n\t\t\tinitialSlot.stateSpecificSnapshot,\n\t\t\tparentBreakpoint?.[ state ]?.stateSpecificSnapshot,\n\t\t] ),\n\t};\n}\n\n// creates an initial snapshot based on the passed style variants only\nfunction buildInitialSnapshotFromStyles( styles: StyleVariantWithId[] ): StylesInheritanceSnapshotsSlot {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tstyles.forEach( ( styleVariantWithId ) => {\n\t\tconst {\n\t\t\tstyleVariant: { props },\n\t\t} = styleVariantWithId;\n\n\t\tObject.entries( props ).forEach( ( [ key, value ] ) => {\n\t\t\tif ( ! snapshot[ key ] ) {\n\t\t\t\tsnapshot[ key ] = [];\n\t\t\t}\n\n\t\t\tconst snapshotPropValue: SnapshotPropValue = {\n\t\t\t\t...styleVariantWithId,\n\t\t\t\tvalue,\n\t\t\t};\n\n\t\t\tsnapshot[ key ].push( snapshotPropValue );\n\t\t} );\n\t} );\n\n\treturn {\n\t\tsnapshot,\n\t\tstateSpecificSnapshot: snapshot,\n\t};\n}\n\n// merge previous snapshot into the current one - first value of each prop is the strongest\nfunction mergeSnapshots( snapshots: ( StylesInheritanceSnapshot | undefined )[] ) {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tsnapshots.filter( Boolean ).forEach( ( currentSnapshot ) =>\n\t\tObject.entries( currentSnapshot as StylesInheritanceSnapshot ).forEach( ( [ key, values ] ) => {\n\t\t\tif ( ! snapshot[ key ] ) {\n\t\t\t\tsnapshot[ key ] = [];\n\t\t\t}\n\n\t\t\t// concatenate the previous snapshot's prop values to the current ones\n\t\t\tsnapshot[ key ] = snapshot[ key ].concat( values );\n\t\t} )\n\t);\n\n\treturn snapshot;\n}\n","import { type BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { createSnapshotsManager } from './create-snapshots-manager';\nimport { type BreakpointsStatesStyles, type StyleInheritanceMetaProps, type StylesInheritanceSnapshot } from './types';\nimport { getBreakpointKey, getStateKey } from './utils';\n\nexport function createStylesInheritance(\n\tstyleDefs: StyleDefinition[],\n\tbreakpointsRoot: BreakpointNode\n): ( meta: StyleInheritanceMetaProps ) => StylesInheritanceSnapshot | undefined {\n\tconst styleVariantsByMeta = buildStyleVariantsByMetaMapping( styleDefs );\n\n\tconst getStyles = ( { breakpoint, state }: StyleInheritanceMetaProps ) =>\n\t\tstyleVariantsByMeta?.[ getBreakpointKey( breakpoint ) ]?.[ getStateKey( state ) ] ?? [];\n\n\treturn createSnapshotsManager( getStyles, breakpointsRoot );\n}\n\nfunction buildStyleVariantsByMetaMapping( styleDefs: StyleDefinition[] ): BreakpointsStatesStyles {\n\tconst breakpointStateSlots: BreakpointsStatesStyles = {};\n\n\tstyleDefs.forEach( ( styleDef ) => {\n\t\t// iterate over each style definition's variants and place them in the corresponding breakpoint's base or state styles\n\t\tstyleDef.variants.forEach( ( styleVariant ) => {\n\t\t\tconst { meta } = styleVariant;\n\t\t\tconst { state, breakpoint } = meta;\n\n\t\t\tconst breakpointKey = getBreakpointKey( breakpoint );\n\t\t\tconst stateKey = getStateKey( state );\n\n\t\t\tif ( ! breakpointStateSlots[ breakpointKey ] ) {\n\t\t\t\tbreakpointStateSlots[ breakpointKey ] = {};\n\t\t\t}\n\n\t\t\tconst breakpointNode = breakpointStateSlots[ breakpointKey ];\n\n\t\t\tif ( ! breakpointNode[ stateKey ] ) {\n\t\t\t\tbreakpointNode[ stateKey ] = [];\n\t\t\t}\n\n\t\t\tbreakpointNode[ stateKey ].push( {\n\t\t\t\tstyleId: styleDef.id,\n\t\t\t\tstyleVariant,\n\t\t\t} );\n\t\t} );\n\t} );\n\n\treturn breakpointStateSlots;\n}\n","import * as React from 'react';\nimport { BackgroundControl } from '@elementor/editor-controls';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const BackgroundSection = () => {\n\treturn (\n\t\t<StylesField bind=\"background\">\n\t\t\t<BackgroundControl />\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlAdornmentsProvider, PropKeyProvider, PropProvider } from '@elementor/editor-controls';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nimport { useStylesField } from '../hooks/use-styles-field';\nimport { StylesInheritanceIndicator } from '../styles-inheritance/styles-inheritance-indicator';\nimport { createTopLevelOjectType } from './create-top-level-object-type';\n\nexport type StylesFieldProps = {\n\tbind: PropKey;\n\tchildren: React.ReactNode;\n};\n\nexport const StylesField = ( { bind, children }: StylesFieldProps ) => {\n\tconst [ value, setValue ] = useStylesField( bind );\n\n\tconst stylesSchema = getStylesSchema();\n\n\tconst propType = createTopLevelOjectType( { schema: stylesSchema } );\n\n\tconst values = { [ bind ]: value };\n\n\tconst setValues = ( newValue: Record< string, PropValue > ) => {\n\t\tsetValue( newValue[ bind ] );\n\t};\n\n\treturn (\n\t\t<ControlAdornmentsProvider\n\t\t\titems={ [\n\t\t\t\t{\n\t\t\t\t\tid: 'styles-inheritance',\n\t\t\t\t\tAdornment: StylesInheritanceIndicator,\n\t\t\t\t},\n\t\t\t] }\n\t\t>\n\t\t\t<PropProvider propType={ propType } value={ values } setValue={ setValues }>\n\t\t\t\t<PropKeyProvider bind={ bind }>{ children }</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</ControlAdornmentsProvider>\n\t);\n};\n","import { useMemo } from 'react';\nimport {\n\tcreateElementStyle,\n\ttype CreateElementStyleArgs,\n\tdeleteElementStyle,\n\ttype ElementID,\n\tgetElementLabel,\n} from '@elementor/editor-elements';\nimport type { Props } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\nimport { type StylesProvider } from '@elementor/editor-styles-repository';\nimport { LOCAL_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { StyleNotFoundUnderProviderError, StylesProviderCannotUpdatePropsError } from '../errors';\nimport { useStylesRerender } from './use-styles-rerender';\n\nexport function useStylesFields< T extends Props >( propNames: ( keyof T & string )[] ) {\n\tconst { element } = useElement();\n\tconst { id, meta, provider } = useStyle();\n\tconst classesProp = useClassesProp();\n\n\tconst undoableUpdateStyle = useUndoableUpdateStyle();\n\tconst undoableCreateElementStyle = useUndoableCreateElementStyle();\n\n\tuseStylesRerender();\n\n\tconst value = getProps< T >( {\n\t\telementId: element.id,\n\t\tstyleId: id,\n\t\tprovider,\n\t\tmeta,\n\t\tpropNames,\n\t} );\n\n\tconst setValue = ( props: T ) => {\n\t\tif ( id === null ) {\n\t\t\tundoableCreateElementStyle( {\n\t\t\t\telementId: element.id,\n\t\t\t\tclassesProp,\n\t\t\t\tmeta,\n\t\t\t\tprops,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tundoableUpdateStyle( {\n\t\t\telementId: element.id,\n\t\t\tstyleId: id,\n\t\t\tprovider,\n\t\t\tmeta,\n\t\t\tprops,\n\t\t} );\n\t};\n\n\treturn [ value, setValue ] as const;\n}\n\ntype GetPropsArgs = {\n\tprovider: StylesProvider | null;\n\tstyleId: StyleDefinition[ 'id' ] | null;\n\telementId: ElementID;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tpropNames: string[];\n};\n\ntype NullableValues< T extends Props > = {\n\t[ K in keyof T ]: T[ K ] | null;\n};\n\nfunction getProps< T extends Props >( { styleId, elementId, provider, meta, propNames }: GetPropsArgs ) {\n\tif ( ! provider || ! styleId ) {\n\t\treturn null;\n\t}\n\n\tconst style = provider.actions.getById?.( styleId, { elementId } );\n\n\tif ( ! style ) {\n\t\tthrow new StyleNotFoundUnderProviderError( { context: { styleId, providerKey: provider.key } } );\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\treturn Object.fromEntries(\n\t\tpropNames.map( ( key ) => [ key, variant?.props[ key ] ?? null ] )\n\t) as NullableValues< T >;\n}\n\ntype UndoableCreateElementStyleArgs = Omit< CreateElementStyleArgs, 'label' >;\n\nfunction useUndoableCreateElementStyle() {\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( payload: UndoableCreateElementStyleArgs ) => {\n\t\t\t\t\treturn createElementStyle( {\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t} );\n\t\t\t\t},\n\n\t\t\t\tundo: ( { elementId }, styleId ) => {\n\t\t\t\t\tdeleteElementStyle( elementId, styleId );\n\t\t\t\t},\n\n\t\t\t\tredo: ( payload, styleId ) => {\n\t\t\t\t\treturn createElementStyle( {\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: ( { elementId } ) => getElementLabel( elementId ),\n\t\t\t\tsubtitle: __( 'Style edited', 'elementor' ),\n\t\t\t}\n\t\t);\n\t}, [] );\n}\n\ntype UndoableUpdateStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: Props;\n};\n\nfunction useUndoableUpdateStyle() {\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( { elementId, styleId, provider, meta, props }: UndoableUpdateStyleArgs ) => {\n\t\t\t\t\tif ( ! provider.actions.updateProps ) {\n\t\t\t\t\t\tthrow new StylesProviderCannotUpdatePropsError( {\n\t\t\t\t\t\t\tcontext: { providerKey: provider.key },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst style = provider.actions.getById( styleId, { elementId } );\n\n\t\t\t\t\tconst prevProps = getCurrentProps( style, meta );\n\n\t\t\t\t\tprovider.actions.updateProps(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: styleId,\n\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ elementId }\n\t\t\t\t\t);\n\n\t\t\t\t\treturn prevProps;\n\t\t\t\t},\n\n\t\t\t\tundo: ( { elementId, styleId, meta, provider }, prevProps ) => {\n\t\t\t\t\tprovider.actions.updateProps?.( { id: styleId, meta, props: prevProps }, { elementId } );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: ( { elementId } ) => getElementLabel( elementId ),\n\t\t\t\tsubtitle: __( 'Style edited', 'elementor' ),\n\t\t\t}\n\t\t);\n\t}, [] );\n}\n\nfunction getCurrentProps( style: StyleDefinition | null, meta: StyleDefinitionVariant[ 'meta' ] ) {\n\tif ( ! style ) {\n\t\treturn {};\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\tconst props = variant?.props ?? {};\n\n\treturn structuredClone( props );\n}\n","import type { PropKey, PropValue } from '@elementor/editor-props';\n\nimport { useStylesFields } from './use-styles-fields';\n\nexport function useStylesField< T extends PropValue >( propName: PropKey ): [ T | null, ( newValue: T ) => void ] {\n\tconst [ values, setValues ] = useStylesFields< { [ k: typeof propName ]: T } >( [ propName ] );\n\n\tconst value = values?.[ propName ] ?? null;\n\n\tconst setValue = ( newValue: T ) => {\n\t\tsetValues( {\n\t\t\t[ propName ]: newValue,\n\t\t} );\n\t};\n\n\treturn [ value, setValue ];\n}\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { ELEMENTS_STYLES_PROVIDER_KEY } from '@elementor/editor-styles-repository';\nimport { styled } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../contexts/style-context';\nimport { useStylesInheritanceField } from '../contexts/styles-inheritance-context';\nimport { useStylesField } from '../hooks/use-styles-field';\n\nconst Circle = styled( 'div', {\n\tshouldForwardProp: ( prop ) => prop !== 'variant',\n} )< { variant?: 'overridden' | 'local-affects' | 'global-affects' } >`\n\twidth: 5px;\n\theight: 5px;\n\tborder-radius: 50%;\n\tbackground-color: ${ ( { theme, variant } ) => {\n\t\tswitch ( variant ) {\n\t\t\tcase 'overridden':\n\t\t\t\treturn theme.palette.warning.main;\n\t\t\tcase 'global-affects':\n\t\t\t\treturn theme.palette.global.main;\n\t\t\tcase 'local-affects':\n\t\t\t\treturn theme.palette.primary.main;\n\t\t\tdefault:\n\t\t\t\treturn theme.palette.text.secondary;\n\t\t}\n\t} };\n`;\n\nexport const StylesInheritanceIndicator = () => {\n\tconst { bind } = useBoundProp();\n\tconst { id: currentStyleId, provider: currentStyleProvider, meta: currentStyleMeta } = useStyle();\n\tconst [ value ] = useStylesField( bind );\n\tconst inheritanceChain = useStylesInheritanceField( bind );\n\n\tif ( ! inheritanceChain.length ) {\n\t\treturn null;\n\t}\n\n\tconst [ { styleId, styleVariant } ] = inheritanceChain;\n\n\tconst { breakpoint, state } = styleVariant.meta;\n\n\tif (\n\t\tstyleId === currentStyleId &&\n\t\tbreakpoint === currentStyleMeta.breakpoint &&\n\t\tstate === currentStyleMeta.state\n\t) {\n\t\treturn (\n\t\t\t<Circle\n\t\t\t\taria-label={ __( 'This is the final value', 'elementor' ) }\n\t\t\t\tvariant={\n\t\t\t\t\tcurrentStyleProvider?.key === ELEMENTS_STYLES_PROVIDER_KEY ? 'local-affects' : 'global-affects'\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( value !== null && value !== undefined ) {\n\t\treturn (\n\t\t\t<Circle\n\t\t\t\taria-label={ __( 'This value is overridden by another style', 'elementor' ) }\n\t\t\t\tvariant=\"overridden\"\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <Circle aria-label={ __( 'This has value from another style', 'elementor' ) } />;\n};\n","import * as React from 'react';\n\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { BorderField } from './border-field';\nimport { BorderRadiusField } from './border-radius-field';\n\nexport const BorderSection = () => (\n\t<SectionContent>\n\t\t<BorderRadiusField />\n\t\t<PanelDivider />\n\t\t<BorderField />\n\t</SectionContent>\n);\n","import * as React from 'react';\nimport { Divider } from '@elementor/ui';\n\nexport const PanelDivider = () => <Divider sx={ { my: 0.5 } } />;\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\ntype SectionContentProps = PropsWithChildren< {\n\tgap?: number;\n\tsx?: {\n\t\tpt?: number;\n\t};\n} >;\n\nexport const SectionContent: FC< SectionContentProps > = ( { gap = 2, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesFields } from '../../../hooks/use-styles-fields';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\nimport { BorderColorField } from './border-color-field';\nimport { BorderStyleField } from './border-style-field';\nimport { BorderWidthField } from './border-width-field';\n\nconst initialBorder = {\n\t'border-width': { $$type: 'size', value: { size: 1, unit: 'px' } },\n\t'border-color': { $$type: 'color', value: '#000000' },\n\t'border-style': { $$type: 'string', value: 'solid' },\n};\n\nexport const BorderField = () => {\n\tconst [ border, setBorder ] = useStylesFields( Object.keys( initialBorder ) );\n\n\tconst addBorder = () => {\n\t\tsetBorder( initialBorder );\n\t};\n\n\tconst removeBorder = () => {\n\t\tsetBorder( {\n\t\t\t'border-width': null,\n\t\t\t'border-color': null,\n\t\t\t'border-style': null,\n\t\t} );\n\t};\n\n\tconst hasBorder = Object.values( border ?? {} ).some( Boolean );\n\n\treturn (\n\t\t<AddOrRemoveContent\n\t\t\tlabel={ __( 'Border', 'elementor' ) }\n\t\t\tisAdded={ hasBorder }\n\t\t\tonAdd={ addBorder }\n\t\t\tonRemove={ removeBorder }\n\t\t>\n\t\t\t<BorderWidthField />\n\t\t\t<BorderColorField />\n\t\t\t<BorderStyleField />\n\t\t</AddOrRemoveContent>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\n\nimport { SectionContent } from './section-content';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tlabel: string;\n\tisAdded: boolean;\n\tonAdd: () => void;\n\tonRemove: () => void;\n};\n\nexport const AddOrRemoveContent = ( { isAdded, label, onAdd, onRemove, children }: PropsWithChildren< Props > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tsx={ {\n\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t{ isAdded ? (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onRemove } aria-label=\"Remove\">\n\t\t\t\t\t\t<MinusIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) : (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onAdd } aria-label=\"Add\">\n\t\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t\t<Collapse in={ isAdded } unmountOnExit>\n\t\t\t\t<SectionContent>{ children }</SectionContent>\n\t\t\t</Collapse>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { ColorControl, ControlLabel } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const BorderColorField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-color' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Border color', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst borderStyles = [\n\t{ value: 'none', label: __( 'None', 'elementor' ) },\n\t{ value: 'solid', label: __( 'Solid', 'elementor' ) },\n\t{ value: 'dashed', label: __( 'Dashed', 'elementor' ) },\n\t{ value: 'dotted', label: __( 'Dotted', 'elementor' ) },\n\t{ value: 'double', label: __( 'Double', 'elementor' ) },\n\t{ value: 'groove', label: __( 'Groove', 'elementor' ) },\n\t{ value: 'ridge', label: __( 'Ridge', 'elementor' ) },\n\t{ value: 'inset', label: __( 'Inset', 'elementor' ) },\n\t{ value: 'outset', label: __( 'Outset', 'elementor' ) },\n];\nexport const BorderStyleField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-style' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Border type', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t<SelectControl options={ borderStyles } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderWidthPropTypeUtil } from '@elementor/editor-props';\nimport { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\nconst InlineStartIcon = withDirection( SideRightIcon );\nconst InlineEndIcon = withDirection( SideLeftIcon );\n\nconst getEdges = ( isSiteRtl: boolean ): EqualUnequalItems => [\n\t{\n\t\tlabel: __( 'Top', 'elementor' ),\n\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\tbind: 'block-start',\n\t},\n\t{\n\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\ticon: <RotatedIcon icon={ InlineStartIcon } size=\"tiny\" />,\n\t\tbind: 'inline-end',\n\t},\n\t{\n\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\tbind: 'block-end',\n\t},\n\t{\n\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\ticon: <RotatedIcon icon={ InlineEndIcon } size=\"tiny\" />,\n\t\tbind: 'inline-start',\n\t},\n];\n\nexport const BorderWidthField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<StylesField bind={ 'border-width' }>\n\t\t\t<EqualUnequalSizesControl\n\t\t\t\titems={ getEdges( isSiteRtl ) }\n\t\t\t\tlabel={ __( 'Border width', 'elementor' ) }\n\t\t\t\ticon={ <SideAllIcon fontSize={ 'tiny' } /> }\n\t\t\t\ttooltipLabel={ __( 'Adjust borders', 'elementor' ) }\n\t\t\t\tmultiSizePropTypeUtil={ borderWidthPropTypeUtil }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import { useTheme } from '@elementor/ui';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useDirection() {\n\tconst theme = useTheme(),\n\t\textendedWindow: ExtendedWindow = window;\n\n\tconst isUiRtl = 'rtl' === theme.direction,\n\t\tisSiteRtl = !! extendedWindow.elementorFrontend?.config?.is_rtl;\n\n\treturn { isSiteRtl, isUiRtl };\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps, useTheme } from '@elementor/ui';\n\nimport { useStylesField } from '../../../../hooks/use-styles-field';\nimport type { FlexDirection } from '../flex-direction-field';\n\ntype Props = {\n\ticon: React.JSX.ElementType;\n\tsize: ToggleButtonProps[ 'size' ];\n\tisClockwise?: boolean;\n\toffset?: number;\n\tdisableRotationForReversed?: boolean;\n};\n\nconst CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: 90,\n\t'row-reverse': 180,\n\t'column-reverse': 270,\n};\n\nconst COUNTER_CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: -90,\n\t'row-reverse': -180,\n\t'column-reverse': -270,\n};\n\nexport const RotatedIcon = ( {\n\ticon: Icon,\n\tsize,\n\tisClockwise = true,\n\toffset = 0,\n\tdisableRotationForReversed = false,\n}: Props ) => {\n\tconst rotate = useRef( useGetTargetAngle( isClockwise, offset, disableRotationForReversed ) );\n\t// eslint-disable-next-line react-compiler/react-compiler\n\trotate.current = useGetTargetAngle( isClockwise, offset, disableRotationForReversed, rotate );\n\n\t// eslint-disable-next-line react-compiler/react-compiler\n\treturn <Icon fontSize={ size } sx={ { transition: '.3s', rotate: `${ rotate.current }deg` } } />;\n};\n\nconst useGetTargetAngle = (\n\tisClockwise: boolean,\n\toffset: number,\n\tdisableRotationForReversed: boolean,\n\texistingRef?: React.MutableRefObject< number >\n) => {\n\tconst [ direction ] = useStylesField< StringPropValue >( 'flex-direction' );\n\tconst isRtl = 'rtl' === useTheme().direction;\n\tconst rotationMultiplier = isRtl ? -1 : 1;\n\tconst angleMap = isClockwise ? CLOCKWISE_ANGLES : COUNTER_CLOCKWISE_ANGLES;\n\n\tconst currentDirection = ( direction?.value as FlexDirection ) || 'row';\n\tconst currentAngle = existingRef ? existingRef.current * rotationMultiplier : angleMap[ currentDirection ] + offset;\n\tconst targetAngle = angleMap[ currentDirection ] + offset;\n\n\tconst diffToTargetAngle = ( targetAngle - currentAngle + 360 ) % 360;\n\tconst formattedDiff = ( ( diffToTargetAngle + 180 ) % 360 ) - 180;\n\n\tif ( disableRotationForReversed && [ 'row-reverse', 'column-reverse' ].includes( currentDirection ) ) {\n\t\treturn 0;\n\t}\n\n\treturn ( currentAngle + formattedDiff ) * rotationMultiplier;\n};\n","import * as React from 'react';\nimport { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderRadiusPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tBorderCornersIcon,\n\tRadiusBottomLeftIcon,\n\tRadiusBottomRightIcon,\n\tRadiusTopLeftIcon,\n\tRadiusTopRightIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\nconst StartStartIcon = withDirection( RadiusTopLeftIcon );\nconst StartEndIcon = withDirection( RadiusTopRightIcon );\nconst EndStartIcon = withDirection( RadiusBottomLeftIcon );\nconst EndEndIcon = withDirection( RadiusBottomRightIcon );\n\nconst getStartStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Top right', 'elementor' ) : __( 'Top left', 'elementor' );\nconst getStartEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Top left', 'elementor' ) : __( 'Top right', 'elementor' );\nconst getEndStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Bottom right', 'elementor' ) : __( 'Bottom left', 'elementor' );\nconst getEndEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Bottom left', 'elementor' ) : __( 'Bottom right', 'elementor' );\n\nconst getCorners = ( isSiteRtl: boolean ): EqualUnequalItems => [\n\t{\n\t\tlabel: getStartStartLabel( isSiteRtl ),\n\t\ticon: <RotatedIcon icon={ StartStartIcon } size=\"tiny\" />,\n\t\tbind: 'start-start',\n\t},\n\t{\n\t\tlabel: getStartEndLabel( isSiteRtl ),\n\t\ticon: <RotatedIcon icon={ StartEndIcon } size=\"tiny\" />,\n\t\tbind: 'start-end',\n\t},\n\t{\n\t\tlabel: getEndStartLabel( isSiteRtl ),\n\t\ticon: <RotatedIcon icon={ EndStartIcon } size=\"tiny\" />,\n\t\tbind: 'end-start',\n\t},\n\t{\n\t\tlabel: getEndEndLabel( isSiteRtl ),\n\t\ticon: <RotatedIcon icon={ EndEndIcon } size=\"tiny\" />,\n\t\tbind: 'end-end',\n\t},\n];\n\nexport const BorderRadiusField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<StylesField bind={ 'border-radius' }>\n\t\t\t<EqualUnequalSizesControl\n\t\t\t\titems={ getCorners( isSiteRtl ) }\n\t\t\t\tlabel={ __( 'Border radius', 'elementor' ) }\n\t\t\t\ticon={ <BorderCornersIcon fontSize={ 'tiny' } /> }\n\t\t\t\ttooltipLabel={ __( 'Adjust corners', 'elementor' ) }\n\t\t\t\tmultiSizePropTypeUtil={ borderRadiusPropTypeUtil }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { BoxShadowRepeaterControl } from '@elementor/editor-controls';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SectionContent } from '../../section-content';\n\nexport const EffectsSection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<StylesField bind=\"box-shadow\">\n\t\t\t\t<BoxShadowRepeaterControl />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { useParentElement } from '@elementor/editor-elements';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../../contexts/element-context';\nimport { useComputedStyle } from '../../../hooks/use-computed-style';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { AlignContentField } from './align-content-field';\nimport { AlignItemsField } from './align-items-field';\nimport { AlignSelfChild } from './align-self-child-field';\nimport { DisplayField } from './display-field';\nimport { FlexDirectionField } from './flex-direction-field';\nimport { FlexOrderField } from './flex-order-field';\nimport { FlexSizeField } from './flex-size-field';\nimport { GapControlField } from './gap-control-field';\nimport { JustifyContentField } from './justify-content-field';\nimport { WrapField } from './wrap-field';\n\nexport const LayoutSection = () => {\n\tconst [ display ] = useStylesField< StringPropValue >( 'display' );\n\tconst { element } = useElement();\n\tconst parent = useParentElement( element.id );\n\tconst parentStyle = useComputedStyle( parent?.id || null );\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<DisplayField />\n\t\t\t{ ( 'flex' === display?.value || 'inline-flex' === display?.value ) && <FlexFields /> }\n\t\t\t{ 'flex' === parentStyle?.display && <FlexChildFields /> }\n\t\t</SectionContent>\n\t);\n};\n\nconst FlexFields = () => {\n\tconst [ flexWrap ] = useStylesField< StringPropValue >( 'flex-wrap' );\n\n\treturn (\n\t\t<>\n\t\t\t<FlexDirectionField />\n\t\t\t<JustifyContentField />\n\t\t\t<AlignItemsField />\n\t\t\t<PanelDivider />\n\t\t\t<GapControlField />\n\t\t\t<WrapField />\n\t\t\t{ [ 'wrap', 'wrap-reverse' ].includes( flexWrap?.value as string ) && <AlignContentField /> }\n\t\t</>\n\t);\n};\n\nconst FlexChildFields = () => (\n\t<>\n\t\t<PanelDivider />\n\t\t<ControlLabel>{ __( 'Flex child', 'elementor' ) }</ControlLabel>\n\t\t<AlignSelfChild />\n\t\t<FlexOrderField />\n\t\t<FlexSizeField />\n\t</>\n);\n","import { __privateUseListenTo as useListenTo, commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useComputedStyle( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[\n\t\t\twindowEvent( 'elementor/device-mode/change' ),\n\t\t\tcommandEndEvent( 'document/elements/reset-style' ),\n\t\t\tcommandEndEvent( 'document/elements/settings' ),\n\t\t\tcommandEndEvent( 'document/elements/paste-style' ),\n\t\t],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow: ExtendedWindow = window;\n\t\t\tconst element = extendedWindow.elementor?.getContainer?.( elementId );\n\n\t\t\tif ( ! element?.view?.el ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst resp = window.getComputedStyle( element.view.el );\n\t\t\treturn resp;\n\t\t}\n\t);\n}\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Stack, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 0,\n\tdisableRotationForReversed: true,\n};\n\nconst options: ToggleButtonGroupItem< AlignContent >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignContentField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"align-content\">\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Align content', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t\t\t</Stack>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignItems = 'start' | 'center' | 'end' | 'stretch';\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 90,\n};\n\nconst options: ToggleButtonGroupItem< AlignItems >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ JustifyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignItemsField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"align-items\">\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Align items', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignItems = 'start' | 'center' | 'end' | 'stretch';\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 90,\n};\n\nconst options: ToggleButtonGroupItem< AlignItems >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ JustifyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignSelfChild = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind={ 'align-self' }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Align self', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Displays = 'block' | 'flex' | 'inline-block' | 'inline-flex';\n\nexport const DisplayField = () => {\n\tconst options: ToggleButtonGroupItem< Displays >[] = [\n\t\t{\n\t\t\tvalue: 'block',\n\t\t\trenderContent: () => __( 'Block', 'elementor' ),\n\t\t\tlabel: __( 'Block', 'elementor' ),\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'flex',\n\t\t\trenderContent: () => __( 'Flex', 'elementor' ),\n\t\t\tlabel: __( 'Flex', 'elementor' ),\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'inline-block',\n\t\t\trenderContent: () => __( 'In-blk', 'elementor' ),\n\t\t\tlabel: __( 'Inline-block', 'elementor' ),\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'inline-flex',\n\t\t\trenderContent: () => __( 'In-flx', 'elementor' ),\n\t\t\tlabel: __( 'Inline-flex', 'elementor' ),\n\t\t\tshowTooltip: true,\n\t\t},\n\t];\n\n\treturn (\n\t\t<StylesField bind=\"display\">\n\t\t\t<Stack gap={ 0.75 }>\n\t\t\t\t<ControlLabel>{ __( 'Display', 'elementor' ) }</ControlLabel>\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</Stack>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\n\nexport type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\nconst options: ToggleButtonGroupItem< FlexDirection >[] = [\n\t{\n\t\tvalue: 'row',\n\t\tlabel: __( 'Row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst StartIcon = withDirection( ArrowRightIcon );\n\t\t\treturn <StartIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column',\n\t\tlabel: __( 'Column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'row-reverse',\n\t\tlabel: __( 'Reversed row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst EndIcon = withDirection( ArrowLeftIcon );\n\t\t\treturn <EndIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column-reverse',\n\t\tlabel: __( 'Reversed column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexDirectionField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"flex-direction\">\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Direction', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport {\n\tControlLabel,\n\tControlToggleButtonGroup,\n\tNumberControl,\n\ttype ToggleButtonGroupItem,\n} from '@elementor/editor-controls';\nimport { type NumberPropValue } from '@elementor/editor-props';\nimport { ArrowDownSmallIcon, ArrowUpSmallIcon, PencilIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { SectionContent } from '../../section-content';\n\ntype GroupControlItemOption = 'first' | 'last' | 'custom';\n\nexport const FIRST_DEFAULT_VALUE = -99999;\nexport const LAST_DEFAULT_VALUE = 99999;\nconst FIRST = 'first';\nconst LAST = 'last';\nconst CUSTOM = 'custom';\n\nconst orderValueMap = {\n\t[ FIRST ]: FIRST_DEFAULT_VALUE,\n\t[ LAST ]: LAST_DEFAULT_VALUE,\n};\n\nconst items: ToggleButtonGroupItem< GroupControlItemOption >[] = [\n\t{\n\t\tvalue: FIRST,\n\t\tlabel: __( 'First', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: LAST,\n\t\tlabel: __( 'Last', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: CUSTOM,\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexOrderField = () => {\n\tconst { isSiteRtl } = useDirection(),\n\t\t[ order, setOrder ] = useStylesField< NumberPropValue | null >( 'order' );\n\n\tconst [ groupControlValue, setGroupControlValue ] = useState( getGroupControlValue( order?.value || null ) );\n\n\tconst handleToggleButtonChange = ( group: GroupControlItemOption | null ) => {\n\t\tsetGroupControlValue( group );\n\n\t\tif ( ! group || group === CUSTOM ) {\n\t\t\tsetOrder( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetOrder( { $$type: 'number', value: orderValueMap[ group ] } );\n\t};\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<SectionContent>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Order', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\t\titems={ items }\n\t\t\t\t\t\t\t\tvalue={ groupControlValue }\n\t\t\t\t\t\t\t\tonChange={ handleToggleButtonChange }\n\t\t\t\t\t\t\t\texclusive={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\n\t\t\t\t\t{ CUSTOM === groupControlValue && (\n\t\t\t\t\t\t<StylesField bind={ 'order' }>\n\t\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t\t<ControlLabel>{ __( 'Custom order', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\t\t\tmin={ FIRST_DEFAULT_VALUE + 1 }\n\t\t\t\t\t\t\t\t\t\tmax={ LAST_DEFAULT_VALUE - 1 }\n\t\t\t\t\t\t\t\t\t\tshouldForceInt={ true }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</StylesField>\n\t\t\t\t\t) }\n\t\t\t\t</SectionContent>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n\nconst getGroupControlValue = ( order: number | null ): GroupControlItemOption | null => {\n\tif ( LAST_DEFAULT_VALUE === order ) {\n\t\treturn LAST;\n\t}\n\n\tif ( FIRST_DEFAULT_VALUE === order ) {\n\t\treturn FIRST;\n\t}\n\n\treturn 0 === order || order ? CUSTOM : null;\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport {\n\tControlLabel,\n\tControlToggleButtonGroup,\n\tNumberControl,\n\tSizeControl,\n\ttype ToggleButtonGroupItem,\n} from '@elementor/editor-controls';\nimport type { NumberPropValue, SizePropValue } from '@elementor/editor-props';\nimport { ExpandIcon, PencilIcon, ShrinkIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { SectionContent } from '../../section-content';\n\ntype GroupItem = 'flex-grow' | 'flex-shrink' | 'custom';\n\nconst DEFAULT = 1;\n\nconst items: ToggleButtonGroupItem< GroupItem >[] = [\n\t{\n\t\tvalue: 'flex-grow',\n\t\tlabel: __( 'Grow', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ExpandIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex-shrink',\n\t\tlabel: __( 'Shrink', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ShrinkIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'custom',\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexSizeField = () => {\n\tconst { isSiteRtl } = useDirection(),\n\t\t[ growField, setGrowField ] = useStylesField< NumberPropValue | null >( 'flex-grow' ),\n\t\t[ shrinkField, setShrinkField ] = useStylesField< NumberPropValue | null >( 'flex-shrink' ),\n\t\t[ basisField, setBasisField ] = useStylesField< SizePropValue | null >( 'flex-basis' );\n\n\tconst grow = growField?.value || null,\n\t\tshrink = shrinkField?.value || null,\n\t\tbasis = basisField?.value || null;\n\n\tconst currentGroup = useMemo( () => getActiveGroup( { grow, shrink, basis } ), [ grow, shrink, basis ] ),\n\t\t[ activeGroup, setActiveGroup ] = useState( currentGroup );\n\n\tconst onChangeGroup = ( group: GroupItem | null = null ) => {\n\t\tsetActiveGroup( group );\n\t\tsetBasisField( null );\n\n\t\tif ( ! group || group === 'custom' ) {\n\t\t\tsetGrowField( null );\n\t\t\tsetShrinkField( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( group === 'flex-grow' ) {\n\t\t\tsetGrowField( { $$type: 'number', value: DEFAULT } );\n\t\t\tsetShrinkField( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetGrowField( null );\n\t\tsetShrinkField( { $$type: 'number', value: DEFAULT } );\n\t};\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<SectionContent>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Size', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\t\tvalue={ activeGroup }\n\t\t\t\t\t\t\t\tonChange={ onChangeGroup }\n\t\t\t\t\t\t\t\titems={ items }\n\t\t\t\t\t\t\t\texclusive={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\n\t\t\t\t\t{ 'custom' === activeGroup && <FlexCustomField /> }\n\t\t\t\t</SectionContent>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n\nconst FlexCustomField = () => (\n\t<>\n\t\t<StylesField bind={ 'flex-grow' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Grow', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t\t<StylesField bind={ 'flex-shrink' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Shrink', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t\t<StylesField bind={ 'flex-basis' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Basis', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t<SizeControl extendedValues={ [ 'auto' ] } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t</>\n);\n\nconst getActiveGroup = ( {\n\tgrow,\n\tshrink,\n\tbasis,\n}: {\n\tgrow: NumberPropValue[ 'value' ] | null;\n\tshrink: NumberPropValue[ 'value' ] | null;\n\tbasis: SizePropValue[ 'value' ] | null;\n} ): GroupItem | null => {\n\tif ( null === grow && null === shrink && ! basis ) {\n\t\treturn null;\n\t}\n\n\tif ( ( shrink && grow ) || basis ) {\n\t\treturn 'custom';\n\t}\n\n\tif ( grow === DEFAULT ) {\n\t\treturn 'flex-grow';\n\t}\n\n\tif ( shrink === DEFAULT ) {\n\t\treturn 'flex-shrink';\n\t}\n\n\treturn 'custom';\n};\n","import * as React from 'react';\nimport { GapControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const GapControlField = () => {\n\treturn (\n\t\t<Stack gap={ 1 }>\n\t\t\t<StylesField bind={ 'gap' }>\n\t\t\t\t<GapControl label={ __( 'Gaps', 'elementor' ) } />\n\t\t\t</StylesField>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Stack, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype JustifyContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: true,\n\toffset: -90,\n};\n\nconst options: ToggleButtonGroupItem< JustifyContent >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const JustifyContentField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"justify-content\">\n\t\t\t\t\t<Stack gap={ 0.75 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Justify content', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t\t\t</Stack>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowBackIcon, ArrowForwardIcon, ArrowRightIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\n\ntype FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\nconst options: ToggleButtonGroupItem< FlexWrap >[] = [\n\t{\n\t\tvalue: 'nowrap',\n\t\tlabel: __( 'No wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowRightIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap',\n\t\tlabel: __( 'Wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBackIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap-reverse',\n\t\tlabel: __( 'Reversed wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowForwardIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const WrapField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind={ 'flex-wrap' }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Wrap', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { useSessionStorage } from '@elementor/session';\n\nimport { useStyle } from '../../../contexts/style-context';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { useStylesFields } from '../../../hooks/use-styles-fields';\nimport { SectionContent } from '../../section-content';\nimport { DimensionsField } from './dimensions-field';\nimport { PositionField } from './position-field';\nimport { ZIndexField } from './z-index-field';\n\ntype DimensionValue =\n\t| {\n\t\t\t$$type: 'size';\n\t\t\tvalue: number;\n\t }\n\t| undefined\n\t| null;\n\ntype DimensionsValues = {\n\t'inset-block-start': DimensionValue;\n\t'inset-block-end': DimensionValue;\n\t'inset-inline-start': DimensionValue;\n\t'inset-inline-end': DimensionValue;\n};\n\nexport const PositionSection = () => {\n\tconst [ positionValue ] = useStylesField< StringPropValue >( 'position' );\n\tconst [ dimensionsValues, setDimensionsValues ] = useStylesFields< DimensionsValues >( [\n\t\t'inset-block-start',\n\t\t'inset-block-end',\n\t\t'inset-inline-start',\n\t\t'inset-inline-end',\n\t] );\n\n\tconst [ dimensionsValuesFromHistory, updateDimensionsHistory, clearDimensionsHistory ] = usePersistDimensions();\n\n\tconst onPositionChange = ( newPosition: string | null, previousPosition: string | null | undefined ) => {\n\t\tif ( newPosition === 'static' ) {\n\t\t\tif ( dimensionsValues ) {\n\t\t\t\tupdateDimensionsHistory( dimensionsValues );\n\t\t\t\tsetDimensionsValues( {\n\t\t\t\t\t'inset-block-start': undefined,\n\t\t\t\t\t'inset-block-end': undefined,\n\t\t\t\t\t'inset-inline-start': undefined,\n\t\t\t\t\t'inset-inline-end': undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t} else if ( previousPosition === 'static' ) {\n\t\t\tif ( dimensionsValuesFromHistory ) {\n\t\t\t\tsetDimensionsValues( dimensionsValuesFromHistory );\n\t\t\t\tclearDimensionsHistory();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst isNotStatic = positionValue && positionValue?.value !== 'static';\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<PositionField onChange={ onPositionChange } />\n\t\t\t{ isNotStatic ? (\n\t\t\t\t<>\n\t\t\t\t\t<DimensionsField />\n\t\t\t\t\t<ZIndexField />\n\t\t\t\t</>\n\t\t\t) : null }\n\t\t</SectionContent>\n\t);\n};\n\nconst usePersistDimensions = () => {\n\tconst { id: styleDefID, meta } = useStyle();\n\tconst styleVariantPath = `styles/${ styleDefID }/${ meta.breakpoint || 'desktop' }/${ meta.state || 'null' }`;\n\tconst dimensionsPath = `${ styleVariantPath }/dimensions`;\n\n\treturn useSessionStorage< DimensionsValues >( dimensionsPath );\n};\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\ntype Side = 'inset-inline-start' | 'inset-inline-end' | 'inset-block-start' | 'inset-block-end';\n\nconst InlineStartIcon = withDirection( SideLeftIcon );\nconst InlineEndIcon = withDirection( SideRightIcon );\n\nconst sideIcons = {\n\t'inset-block-start': <SideTopIcon fontSize={ 'tiny' } />,\n\t'inset-block-end': <SideBottomIcon fontSize={ 'tiny' } />,\n\t'inset-inline-start': <RotatedIcon icon={ InlineStartIcon } size=\"tiny\" />,\n\t'inset-inline-end': <RotatedIcon icon={ InlineEndIcon } size=\"tiny\" />,\n};\n\nconst getInlineStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' );\n\nconst getInlineEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' );\n\nexport const DimensionsField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<DimensionField side=\"inset-block-start\" label={ __( 'Top', 'elementor' ) } />\n\t\t\t\t<DimensionField side=\"inset-inline-end\" label={ getInlineEndLabel( isSiteRtl ) } />\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<DimensionField side=\"inset-block-end\" label={ __( 'Bottom', 'elementor' ) } />\n\t\t\t\t<DimensionField side=\"inset-inline-start\" label={ getInlineStartLabel( isSiteRtl ) } />\n\t\t\t</Stack>\n\t\t</>\n\t);\n};\nconst DimensionField = ( { side, label }: { side: Side; label: string } ) => {\n\treturn (\n\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<StylesField bind={ side }>\n\t\t\t\t\t<SizeControl startIcon={ sideIcons[ side ] } extendedValues={ [ 'auto' ] } />\n\t\t\t\t</StylesField>\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst positionOptions = [\n\t{ label: __( 'Static', 'elementor' ), value: 'static' },\n\t{ label: __( 'Relative', 'elementor' ), value: 'relative' },\n\t{ label: __( 'Absolute', 'elementor' ), value: 'absolute' },\n\t{ label: __( 'Fixed', 'elementor' ), value: 'fixed' },\n\t{ label: __( 'Sticky', 'elementor' ), value: 'sticky' },\n];\n\ntype Props = {\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n};\n\nexport const PositionField = ( { onChange }: Props ) => {\n\treturn (\n\t\t<StylesField bind=\"position\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Position', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t<SelectControl options={ positionOptions } onChange={ onChange } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, NumberControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const ZIndexField = () => {\n\treturn (\n\t\t<StylesField bind=\"z-index\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Z-index', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<NumberControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ExtendedValue, SizeControl } from '@elementor/editor-controls';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField, type StylesFieldProps } from '../../../controls-registry/styles-field';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { OverflowField } from './overflow-field';\n\nexport const SizeSection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"width\" label={ __( 'Width', 'elementor' ) } extendedValues={ [ 'auto' ] } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"height\" label={ __( 'Height', 'elementor' ) } extendedValues={ [ 'auto' ] } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField\n\t\t\t\t\t\tbind=\"min-width\"\n\t\t\t\t\t\tlabel={ __( 'Min width', 'elementor' ) }\n\t\t\t\t\t\textendedValues={ [ 'auto' ] }\n\t\t\t\t\t/>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField\n\t\t\t\t\t\tbind=\"min-height\"\n\t\t\t\t\t\tlabel={ __( 'Min height', 'elementor' ) }\n\t\t\t\t\t\textendedValues={ [ 'auto' ] }\n\t\t\t\t\t/>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"max-width\" label={ __( 'Max width', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"max-height\" label={ __( 'Max height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<PanelDivider />\n\t\t\t<Stack>\n\t\t\t\t<OverflowField />\n\t\t\t</Stack>\n\t\t</SectionContent>\n\t);\n};\n\ntype ControlProps = {\n\tbind: StylesFieldProps[ 'bind' ];\n\tlabel: string;\n\textendedValues?: ExtendedValue[];\n};\n\nconst SizeField = ( { label, bind, extendedValues }: ControlProps ) => {\n\treturn (\n\t\t<StylesField bind={ bind }>\n\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<SizeControl extendedValues={ extendedValues } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { EyeIcon, EyeOffIcon, LetterAIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Overflows = 'visible' | 'hidden' | 'auto';\n\nconst options: ToggleButtonGroupItem< Overflows >[] = [\n\t{\n\t\tvalue: 'visible',\n\t\tlabel: __( 'Visible', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'hidden',\n\t\tlabel: __( 'Hidden', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterAIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const OverflowField = () => {\n\treturn (\n\t\t<StylesField bind={ 'overflow' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Overflow', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { LinkedDimensionsControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\n\nexport const SpacingSection = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<StylesField bind={ 'margin' }>\n\t\t\t\t<LinkedDimensionsControl\n\t\t\t\t\tlabel={ __( 'Margin', 'elementor' ) }\n\t\t\t\t\tisSiteRtl={ isSiteRtl }\n\t\t\t\t\textendedValues={ [ 'auto' ] }\n\t\t\t\t/>\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind={ 'padding' }>\n\t\t\t\t<LinkedDimensionsControl label={ __( 'Padding', 'elementor' ) } isSiteRtl={ isSiteRtl } />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\n\nimport { CollapsibleContent } from '../../collapsible-content';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { FontFamilyField } from './font-family-field';\nimport { FontSizeField } from './font-size-field';\nimport { FontStyleField } from './font-style-field';\nimport { FontWeightField } from './font-weight-field';\nimport { LetterSpacingField } from './letter-spacing-field';\nimport { LineHeightField } from './line-height-field';\nimport { TextAlignmentField } from './text-alignment-field';\nimport { TextColorField } from './text-color-field';\nimport { TextDecorationField } from './text-decoration-field';\nimport { TextDirectionField } from './text-direction-field';\nimport { TextStrokeField } from './text-stroke-field';\nimport { TransformField } from './transform-field';\nimport { WordSpacingField } from './word-spacing-field';\n\nexport const TypographySection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<FontFamilyField />\n\t\t\t<FontWeightField />\n\t\t\t<FontSizeField />\n\t\t\t<PanelDivider />\n\t\t\t<TextAlignmentField />\n\t\t\t<TextColorField />\n\t\t\t<CollapsibleContent>\n\t\t\t\t<SectionContent sx={ { pt: 2 } }>\n\t\t\t\t\t<LineHeightField />\n\t\t\t\t\t<LetterSpacingField />\n\t\t\t\t\t<WordSpacingField />\n\t\t\t\t\t<PanelDivider />\n\t\t\t\t\t<TextDecorationField />\n\t\t\t\t\t<TransformField />\n\t\t\t\t\t<TextDirectionField />\n\t\t\t\t\t<FontStyleField />\n\t\t\t\t\t<TextStrokeField />\n\t\t\t\t</SectionContent>\n\t\t\t</CollapsibleContent>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Button, Collapse, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CollapseIcon } from './collapse-icon';\n\ntype CollapsibleContentProps = React.PropsWithChildren< {\n\tdefaultOpen?: boolean;\n} >;\n\nexport const CollapsibleContent = ( { children, defaultOpen = false }: CollapsibleContentProps ) => {\n\tconst [ open, setOpen ] = useState( defaultOpen );\n\n\tconst handleToggle = () => {\n\t\tsetOpen( ( prevOpen ) => ! prevOpen );\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<Button\n\t\t\t\tfullWidth\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"secondary\"\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tonClick={ handleToggle }\n\t\t\t\tendIcon={ <CollapseIcon open={ open } /> }\n\t\t\t\tsx={ { my: 0.5 } }\n\t\t\t>\n\t\t\t\t{ open ? __( 'Show less', 'elementor' ) : __( 'Show more', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Collapse in={ open } timeout=\"auto\" unmountOnExit>\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, FontFamilyControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useFontFamilies } from './hooks/use-font-families';\n\nexport const FontFamilyField = () => {\n\tconst fontFamilies = useFontFamilies();\n\n\tif ( fontFamilies.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StylesField bind=\"font-family\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font family', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t<FontFamilyControl fontFamilies={ fontFamilies } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type FontCategory } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { getElementorConfig } from '../../../../sync/get-elementor-config';\n\nconst supportedCategories: Record< string, string > = {\n\tsystem: __( 'System', 'elementor' ),\n\tcustom: __( 'Custom Fonts', 'elementor' ),\n\tgooglefonts: __( 'Google Fonts', 'elementor' ),\n};\n\nconst getFontFamilies = () => {\n\tconst { controls } = getElementorConfig();\n\n\tconst options = controls?.font?.options;\n\n\tif ( ! options ) {\n\t\treturn null;\n\t}\n\n\treturn options;\n};\n\nexport const useFontFamilies = () => {\n\tconst fontFamilies = getFontFamilies();\n\n\treturn useMemo( () => {\n\t\tconst categoriesOrder = [ 'system', 'custom', 'googlefonts' ];\n\n\t\treturn Object.entries( fontFamilies || {} )\n\t\t\t.reduce< FontCategory[] >( ( acc, [ font, category ] ) => {\n\t\t\t\tif ( ! supportedCategories[ category ] ) {\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tconst categoryIndex = categoriesOrder.indexOf( category );\n\n\t\t\t\tif ( ! acc[ categoryIndex ] ) {\n\t\t\t\t\tacc[ categoryIndex ] = {\n\t\t\t\t\t\tlabel: supportedCategories[ category ],\n\t\t\t\t\t\tfonts: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tacc[ categoryIndex ].fonts.push( font );\n\n\t\t\t\treturn acc;\n\t\t\t}, [] )\n\t\t\t.filter( Boolean );\n\t}, [ fontFamilies ] );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const FontSizeField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-size\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font size', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ItalicIcon, MinusIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype FontStyle = 'normal' | 'italic';\nconst options: ToggleButtonGroupItem< FontStyle >[] = [\n\t{\n\t\tvalue: 'normal',\n\t\tlabel: __( 'Normal', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'italic',\n\t\tlabel: __( 'Italic', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ItalicIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FontStyleField = () => (\n\t<StylesField bind=\"font-style\">\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Font style', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst fontWeightOptions = [\n\t{ value: '100', label: __( '100 - Thin', 'elementor' ) },\n\t{ value: '200', label: __( '200 - Extra light', 'elementor' ) },\n\t{ value: '300', label: __( '300 - Light', 'elementor' ) },\n\t{ value: '400', label: __( '400 - Normal', 'elementor' ) },\n\t{ value: '500', label: __( '500 - Medium', 'elementor' ) },\n\t{ value: '600', label: __( '600 - Semi bold', 'elementor' ) },\n\t{ value: '700', label: __( '700 - Bold', 'elementor' ) },\n\t{ value: '800', label: __( '800 - Extra bold', 'elementor' ) },\n\t{ value: '900', label: __( '900 - Black', 'elementor' ) },\n];\n\nexport const FontWeightField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-weight\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font weight', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t<SelectControl options={ fontWeightOptions } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const LetterSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"letter-spacing\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Letter spacing', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const LineHeightField = () => {\n\treturn (\n\t\t<StylesField bind=\"line-height\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Line height', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from '@elementor/icons';\nimport { Grid, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\ntype Alignments = 'start' | 'center' | 'end' | 'justify';\n\nconst StartIcon = withDirection( AlignLeftIcon );\nconst EndIcon = withDirection( AlignRightIcon );\n\nconst options: ToggleButtonGroupItem< Alignments >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: () => <RotatedIcon icon={ StartIcon } size=\"tiny\" />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignCenterIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: () => <RotatedIcon icon={ EndIcon } size=\"tiny\" />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'justify',\n\t\tlabel: __( 'Justify', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignJustifiedIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TextAlignmentField = () => {\n\treturn (\n\t\t<StylesField bind={ 'text-align' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Alignment', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ColorControl, ControlLabel } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const TextColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"color\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Text color', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, ToggleControl, type ToggleControlProps } from '@elementor/editor-controls';\nimport { MinusIcon, OverlineIcon, StrikethroughIcon, UnderlineIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Decoration = 'none' | 'underline' | 'line-through' | 'overline';\n\nconst options: ToggleControlProps< Decoration >[ 'options' ] = [\n\t{\n\t\tvalue: 'none',\n\t\tlabel: __( 'None', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t\texclusive: true,\n\t},\n\t{\n\t\tvalue: 'underline',\n\t\tlabel: __( 'Underline', 'elementor' ),\n\t\trenderContent: ( { size } ) => <UnderlineIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'line-through',\n\t\tlabel: __( 'Line-through', 'elementor' ),\n\t\trenderContent: ( { size } ) => <StrikethroughIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'overline',\n\t\tlabel: __( 'Overline', 'elementor' ),\n\t\trenderContent: ( { size } ) => <OverlineIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\nexport const TextDecorationField = () => (\n\t<StylesField bind={ 'text-decoration' }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Line decoration', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleControl options={ options } exclusive={ false } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { TextDirectionLtrIcon, TextDirectionRtlIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst options: ToggleButtonGroupItem< Direction >[] = [\n\t{\n\t\tvalue: 'ltr',\n\t\tlabel: __( 'Left to right', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionLtrIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'rtl',\n\t\tlabel: __( 'Right to left', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionRtlIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TextDirectionField = () => {\n\treturn (\n\t\t<StylesField bind={ 'direction' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Direction', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { StrokeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\n\nconst initTextStroke = {\n\t$$type: 'stroke',\n\tvalue: {\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: '#000000',\n\t\t},\n\t\twidth: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: {\n\t\t\t\tunit: 'px',\n\t\t\t\tsize: 1,\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport const TextStrokeField = () => {\n\tconst [ textStroke, setTextStroke ] = useStylesField( 'stroke' );\n\n\tconst addTextStroke = () => {\n\t\tsetTextStroke( initTextStroke );\n\t};\n\n\tconst removeTextStroke = () => {\n\t\tsetTextStroke( null );\n\t};\n\n\tconst hasTextStroke = Boolean( textStroke );\n\n\treturn (\n\t\t<AddOrRemoveContent\n\t\t\tlabel={ __( 'Text stroke', 'elementor' ) }\n\t\t\tisAdded={ hasTextStroke }\n\t\t\tonAdd={ addTextStroke }\n\t\t\tonRemove={ removeTextStroke }\n\t\t>\n\t\t\t<StylesField bind={ 'stroke' }>\n\t\t\t\t<StrokeControl />\n\t\t\t</StylesField>\n\t\t</AddOrRemoveContent>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon, MinusIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Transforms = 'none' | 'capitalize' | 'uppercase' | 'lowercase';\n\nconst options: ToggleButtonGroupItem< Transforms >[] = [\n\t{\n\t\tvalue: 'none',\n\t\tlabel: __( 'None', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'capitalize',\n\t\tlabel: __( 'Capitalize', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'uppercase',\n\t\tlabel: __( 'Uppercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseUpperIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'lowercase',\n\t\tlabel: __( 'Lowercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseLowerIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TransformField = () => (\n\t<StylesField bind={ 'text-transform' }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Text transform', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const WordSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"word-spacing\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Word spacing', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import { injectIntoLogic } from '@elementor/editor';\nimport { PrefetchUserData } from '@elementor/editor-current-user';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\n\nimport { EditingPanelHooks } from './components/editing-panel-hooks';\nimport { init as initDynamics } from './dynamics/init';\nimport { panel } from './panel';\nimport { isAtomicWidgetSelected } from './sync/is-atomic-widget-selected';\n\nexport default function init() {\n\tregisterPanel( panel );\n\tblockV1Panel();\n\n\tinjectIntoLogic( {\n\t\tid: 'editing-panel-hooks',\n\t\tcomponent: EditingPanelHooks,\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'current-user-data',\n\t\tcomponent: PrefetchUserData,\n\t} );\n\n\t// TODO: Move it from here once we have dynamic package.\n\tinitDynamics();\n}\n\nconst blockV1Panel = () => {\n\tblockCommand( {\n\t\tcommand: 'panel/editor/open',\n\t\tcondition: isAtomicWidgetSelected,\n\t} );\n};\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, commandStartEvent } from '@elementor/editor-v1-adapters';\n\nimport { usePanelActions } from '../panel';\nimport { isAtomicWidgetSelected } from '../sync/is-atomic-widget-selected';\n\nexport const useOpenEditorPanel = () => {\n\tconst { open } = usePanelActions();\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'panel/editor/open' ), () => {\n\t\t\tif ( isAtomicWidgetSelected() ) {\n\t\t\t\topen();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import { getSelectedElements, getWidgetsCache } from '@elementor/editor-elements';\n\nexport const isAtomicWidgetSelected = () => {\n\tconst selectedElements = getSelectedElements();\n\tconst widgetCache = getWidgetsCache();\n\n\tif ( selectedElements.length !== 1 ) {\n\t\treturn false;\n\t}\n\n\t// Check if the selected element has atomic controls, meaning it's a V2 element.\n\treturn !! widgetCache?.[ selectedElements[ 0 ].type ]?.atomic_controls;\n};\n","import { useOpenEditorPanel } from '../hooks/use-open-editor-panel';\n\nexport const EditingPanelHooks = () => {\n\tuseOpenEditorPanel();\n\n\treturn null;\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { ControlLabel, useBoundProp } from '@elementor/editor-controls';\nimport type { Control, ControlsSection } from '@elementor/editor-elements';\nimport { DatabaseIcon, SettingsIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tDivider,\n\tGrid,\n\tIconButton,\n\tPaper,\n\tPopover,\n\tStack,\n\tTab,\n\tTabPanel,\n\tTabs,\n\tTypography,\n\tUnstableTag as Tag,\n\tusePopupState,\n\tuseTabs,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverContent } from '../../components/popover-content';\nimport { Control as BaseControl } from '../../controls-registry/control';\nimport { type ControlType, getControlByType } from '../../controls-registry/controls-registry';\nimport { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';\nimport { DynamicControl } from '../dynamic-control';\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\nimport { type DynamicTag } from '../types';\nimport { dynamicPropTypeUtil } from '../utils';\nimport { DynamicSelection } from './dynamic-selection';\n\nconst SIZE = 'tiny';\n\nexport const DynamicSelectionControl = () => {\n\tconst { setValue: setAnyValue } = useBoundProp();\n\tconst { bind, value } = useBoundProp( dynamicPropTypeUtil );\n\tconst [ propValueFromHistory ] = usePersistDynamicValue( bind );\n\tconst { name: tagName = '' } = value;\n\n\tconst selectionPopoverId = useId();\n\tconst selectionPopoverState = usePopupState( { variant: 'popover', popupId: selectionPopoverId } );\n\n\tconst dynamicTag = useDynamicTag( tagName );\n\n\tconst removeDynamicTag = () => {\n\t\tsetAnyValue( propValueFromHistory ?? null );\n\t};\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ tagName } not found` );\n\t}\n\n\treturn (\n\t\t<Box>\n\t\t\t<Tag\n\t\t\t\tfullWidth\n\t\t\t\tshowActionsOnHover\n\t\t\t\tlabel={ dynamicTag.label }\n\t\t\t\tstartIcon={ <DatabaseIcon fontSize={ SIZE } /> }\n\t\t\t\t{ ...bindTrigger( selectionPopoverState ) }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DynamicSettingsPopover dynamicTag={ dynamicTag } />\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ removeDynamicTag }\n\t\t\t\t\t\t\taria-label={ __( 'Remove dynamic value', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...bindPopover( selectionPopoverState ) }\n\t\t\t>\n\t\t\t\t<Stack>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t\t<DatabaseIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ __( 'Dynamic tags', 'elementor' ) }</Typography>\n\t\t\t\t\t\t<IconButton size={ SIZE } sx={ { ml: 'auto' } } onClick={ selectionPopoverState.close }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<DynamicSelection onSelect={ selectionPopoverState.close } />\n\t\t\t\t</Stack>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n\nexport const DynamicSettingsPopover = ( { dynamicTag }: { dynamicTag: DynamicTag } ) => {\n\tconst popupId = useId();\n\tconst settingsPopupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst hasDynamicSettings = !! dynamicTag.atomic_controls.length;\n\n\tif ( ! hasDynamicSettings ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\t{ ...bindTrigger( settingsPopupState ) }\n\t\t\t\taria-label={ __( 'Settings', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<SettingsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t\t<Popover\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t{ ...bindPopover( settingsPopupState ) }\n\t\t\t>\n\t\t\t\t<Paper component={ Stack } sx={ { minHeight: '300px', width: '220px' } }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" px={ 1.5 } pt={ 2 } pb={ 1 }>\n\t\t\t\t\t\t<DatabaseIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ dynamicTag.label }</Typography>\n\t\t\t\t\t\t<IconButton sx={ { ml: 'auto' } } size={ SIZE } onClick={ settingsPopupState.close }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<DynamicSettings controls={ dynamicTag.atomic_controls } />\n\t\t\t\t</Paper>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n\nconst DynamicSettings = ( { controls }: { controls: DynamicTag[ 'atomic_controls' ] } ) => {\n\tconst tabs = controls.filter( ( { type } ) => type === 'section' ) as ControlsSection[];\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< number >( 0 );\n\n\tif ( ! tabs.length ) {\n\t\t// Dynamic must have hierarchical controls.\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Tabs size=\"small\" variant=\"fullWidth\" { ...getTabsProps() }>\n\t\t\t\t{ tabs.map( ( { value }, index ) => (\n\t\t\t\t\t<Tab key={ index } label={ value.label } sx={ { px: 1, py: 0.5 } } { ...getTabProps( index ) } />\n\t\t\t\t) ) }\n\t\t\t</Tabs>\n\t\t\t<Divider />\n\n\t\t\t{ tabs.map( ( { value }, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TabPanel key={ index } sx={ { flexGrow: 1, py: 0 } } { ...getTabPanelProps( index ) }>\n\t\t\t\t\t\t<PopoverContent p={ 2 } gap={ 2 }>\n\t\t\t\t\t\t\t{ value.items.map( ( item ) => {\n\t\t\t\t\t\t\t\tif ( item.type === 'control' ) {\n\t\t\t\t\t\t\t\t\treturn <Control key={ item.value.bind } control={ item.value } />;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</PopoverContent>\n\t\t\t\t\t</TabPanel>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n};\n\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! getControlByType( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DynamicControl bind={ control.bind }>\n\t\t\t<Grid container gap={ 0.75 }>\n\t\t\t\t{ control.label ? (\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ control.label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t) : null }\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<BaseControl type={ control.type as ControlType } props={ control.props } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</DynamicControl>\n\t);\n};\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\ntype PopoverContentProps = PropsWithChildren< {\n\talignItems?: 'center';\n\tgap?: number;\n\tp?: 1.5 | 2 | 2.5;\n} >;\n\nexport const PopoverContent: FC< PopoverContentProps > = ( { alignItems, gap = 1.5, p, children } ) => (\n\t<Stack alignItems={ alignItems } gap={ gap } p={ p }>\n\t\t{ children }\n\t</Stack>\n);\n","import { type PropValue } from '@elementor/editor-props';\nimport { useSessionStorage } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\nimport { type DynamicPropValue } from '../dynamics/types';\n\nexport const usePersistDynamicValue = < T extends DynamicPropValue | PropValue >( propKey: string ) => {\n\tconst { element } = useElement();\n\tconst prefixedKey = `dynamic/non-dynamic-values-history/${ element.id }/${ propKey }`;\n\treturn useSessionStorage< T >( prefixedKey );\n};\n","import * as React from 'react';\nimport { PropKeyProvider, PropProvider, type SetValue, useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { createTopLevelOjectType } from '../controls-registry/create-top-level-object-type';\nimport { useDynamicTag } from './hooks/use-dynamic-tag';\nimport { dynamicPropTypeUtil, type DynamicPropValue } from './utils';\n\ntype DynamicControlProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const DynamicControl = ( { bind, children }: DynamicControlProps ) => {\n\tconst { value, setValue } = useBoundProp( dynamicPropTypeUtil );\n\tconst { name = '', settings } = value ?? {};\n\n\tconst dynamicTag = useDynamicTag( name );\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ name } not found` );\n\t}\n\n\tconst dynamicPropType = dynamicTag.props_schema[ bind ];\n\n\tconst defaultValue = dynamicPropType?.default;\n\tconst dynamicValue = settings?.[ bind ] ?? defaultValue;\n\n\tconst setDynamicValue: SetValue< Record< string, DynamicPropValue > > = ( newValues ) => {\n\t\tsetValue( {\n\t\t\tname,\n\t\t\tsettings: {\n\t\t\t\t...settings,\n\t\t\t\t...newValues,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst propType = createTopLevelOjectType( { schema: dynamicTag.props_schema } );\n\n\treturn (\n\t\t<PropProvider propType={ propType } setValue={ setDynamicValue } value={ { [ bind ]: dynamicValue } }>\n\t\t\t<PropKeyProvider bind={ bind }>{ children }</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import { useMemo } from 'react';\n\nimport { type DynamicTag } from '../types';\nimport { usePropDynamicTags } from './use-prop-dynamic-tags';\n\nexport const useDynamicTag = ( tagName: string ): DynamicTag | null => {\n\tconst dynamicTags = usePropDynamicTags();\n\n\treturn useMemo( () => dynamicTags.find( ( tag ) => tag.name === tagName ) ?? null, [ dynamicTags, tagName ] );\n};\n","import { useMemo } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\n\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { getDynamicPropType } from '../utils';\n\nexport const usePropDynamicTags = () => {\n\tlet categories: string[] = [];\n\n\tconst { propType } = useBoundProp();\n\n\tif ( propType ) {\n\t\tconst propDynamicType = getDynamicPropType( propType );\n\n\t\tcategories = propDynamicType?.settings.categories || [];\n\t}\n\n\t// eslint-disable-next-line react-compiler/react-compiler\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\treturn useMemo( () => getDynamicTagsByCategories( categories ), [ categories.join() ] );\n};\n\nconst getDynamicTagsByCategories = ( categories: string[] ) => {\n\tconst dynamicTags = getAtomicDynamicTags();\n\n\tif ( ! categories.length || ! dynamicTags?.tags ) {\n\t\treturn [];\n\t}\n\n\tconst _categories = new Set( categories );\n\n\treturn Object.values( dynamicTags.tags ).filter( ( dynamicTag ) =>\n\t\tdynamicTag.categories.some( ( category ) => _categories.has( category ) )\n\t);\n};\n","import { type ExtendedWindow } from '../types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import { getElementorConfig } from './get-elementor-config';\n\nexport const getAtomicDynamicTags = () => {\n\tconst { atomicDynamicTags } = getElementorConfig();\n\n\tif ( ! atomicDynamicTags ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\ttags: atomicDynamicTags.tags,\n\t\tgroups: atomicDynamicTags.groups,\n\t};\n};\n","import {\n\tcreatePropUtils,\n\tisTransformable,\n\ttype PropType,\n\ttype PropValue,\n\ttype TransformablePropType,\n} from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { type DynamicPropType } from './types';\n\nconst DYNAMIC_PROP_TYPE_KEY = 'dynamic';\n\nconst isDynamicPropType = ( prop: TransformablePropType ): prop is DynamicPropType =>\n\tprop.key === DYNAMIC_PROP_TYPE_KEY;\n\nexport const getDynamicPropType = ( propType: PropType ): DynamicPropType | null => {\n\tconst dynamicPropType = propType.kind === 'union' && propType.prop_types[ DYNAMIC_PROP_TYPE_KEY ];\n\n\treturn dynamicPropType && isDynamicPropType( dynamicPropType ) ? dynamicPropType : null;\n};\n\nexport const isDynamicPropValue = ( prop: PropValue ): prop is DynamicPropValue => {\n\treturn isTransformable( prop ) && prop.$$type === DYNAMIC_PROP_TYPE_KEY;\n};\n\nexport const supportsDynamic = ( propType: PropType ): boolean => {\n\treturn !! getDynamicPropType( propType );\n};\n\nexport const dynamicPropTypeUtil = createPropUtils(\n\tDYNAMIC_PROP_TYPE_KEY,\n\tz.strictObject( {\n\t\tname: z.string(),\n\t\tsettings: z.any().optional(),\n\t} )\n);\n\nexport type DynamicPropValue = z.infer< typeof dynamicPropTypeUtil.schema >;\n","import * as React from 'react';\nimport { Fragment, useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { DatabaseIcon, SearchIcon } from '@elementor/icons';\nimport {\n\tBox,\n\tDivider,\n\tInputAdornment,\n\tLink,\n\tMenuItem,\n\tMenuList,\n\tMenuSubheader,\n\tStack,\n\tTextField,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';\nimport { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { dynamicPropTypeUtil } from '../utils';\n\ntype Option = {\n\tlabel: string;\n\tvalue: string;\n};\n\ntype OptionEntry = [ string, Option[] ];\n\nconst SIZE = 'tiny';\n\ntype DynamicSelectionProps = {\n\tonSelect?: () => void;\n};\n\ntype NoResultsProps = {\n\tsearchValue: string;\n\tonClear?: () => void;\n};\n\nexport const DynamicSelection = ( { onSelect }: DynamicSelectionProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { groups: dynamicGroups } = getAtomicDynamicTags() || {};\n\n\tconst { value: anyValue } = useBoundProp();\n\tconst { bind, value: dynamicValue, setValue } = useBoundProp( dynamicPropTypeUtil );\n\n\tconst [ , updatePropValueHistory ] = usePersistDynamicValue( bind );\n\n\tconst isCurrentValueDynamic = !! dynamicValue;\n\n\tconst options = useFilteredOptions( searchValue );\n\n\tconst hasNoDynamicTags = ! options.length && ! searchValue.trim();\n\n\tconst handleSearch = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetSearchValue( event.target.value );\n\t};\n\n\tconst handleSetDynamicTag = ( value: string ) => {\n\t\tif ( ! isCurrentValueDynamic ) {\n\t\t\tupdatePropValueHistory( anyValue );\n\t\t}\n\n\t\tsetValue( { name: value, settings: {} } );\n\n\t\tonSelect?.();\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t{ hasNoDynamicTags ? (\n\t\t\t\t<NoDynamicTags />\n\t\t\t) : (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<Box px={ 1.5 } pb={ 1 }>\n\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\t\tonChange={ handleSearch }\n\t\t\t\t\t\t\tplaceholder={ __( 'Search dynamic tags…', 'elementor' ) }\n\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t<InputAdornment position=\"start\">\n\t\t\t\t\t\t\t\t\t\t<SearchIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t\t</InputAdornment>\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</Box>\n\t\t\t\t\t<Divider />\n\t\t\t\t\t<Box sx={ { overflowY: 'auto', height: 260, width: 220 } }>\n\t\t\t\t\t\t{ options.length > 0 ? (\n\t\t\t\t\t\t\t<MenuList role=\"listbox\" tabIndex={ 0 }>\n\t\t\t\t\t\t\t\t{ options.map( ( [ category, items ], index ) => (\n\t\t\t\t\t\t\t\t\t<Fragment key={ index }>\n\t\t\t\t\t\t\t\t\t\t<MenuSubheader\n\t\t\t\t\t\t\t\t\t\t\tsx={ { px: 1.5, typography: 'caption', color: 'text.tertiary' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ dynamicGroups?.[ category ]?.title || category }\n\t\t\t\t\t\t\t\t\t\t</MenuSubheader>\n\t\t\t\t\t\t\t\t\t\t{ items.map( ( { value, label: tagLabel } ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst isSelected = isCurrentValueDynamic && value === dynamicValue?.name;\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselected={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\t\t\t\t\t\t\t\tautoFocus={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ { px: 1.5, typography: 'caption' } }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => handleSetDynamicTag( value ) }\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\t\t{ tagLabel }\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\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</Fragment>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<NoResults searchValue={ searchValue } onClear={ () => setSearchValue( '' ) } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Box>\n\t\t\t\t</Fragment>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n\nconst NoResults = ( { searchValue, onClear }: NoResultsProps ) => (\n\t<Stack\n\t\tgap={ 1 }\n\t\talignItems=\"center\"\n\t\tjustifyContent=\"center\"\n\t\theight=\"100%\"\n\t\tp={ 2.5 }\n\t\tcolor=\"text.secondary\"\n\t\tsx={ { pb: 3.5 } }\n\t>\n\t\t<DatabaseIcon fontSize=\"large\" />\n\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t<br />\n\t\t\t“{ searchValue }”.\n\t\t</Typography>\n\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t \n\t\t\t<Link color=\"text.secondary\" variant=\"caption\" component=\"button\" onClick={ onClear }>\n\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t</Link>\n\t\t</Typography>\n\t</Stack>\n);\n\nconst NoDynamicTags = () => (\n\t<Box sx={ { overflowY: 'hidden', height: 297, width: 220 } }>\n\t\t<Divider />\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tp={ 2.5 }\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { pb: 3.5 } }\n\t\t>\n\t\t\t<DatabaseIcon fontSize=\"large\" />\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Streamline your workflow with dynamic tags', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t\t{ __( 'You’ll need Elementor Pro to use this feature.', 'elementor' ) }\n\t\t\t</Typography>\n\t\t</Stack>\n\t</Box>\n);\n\nconst useFilteredOptions = ( searchValue: string ): OptionEntry[] => {\n\tconst dynamicTags = usePropDynamicTags();\n\n\tconst options = dynamicTags.reduce< Map< string, Option[] > >( ( categories, { name, label, group } ) => {\n\t\tconst isVisible = label.toLowerCase().includes( searchValue.trim().toLowerCase() );\n\n\t\tif ( ! isVisible ) {\n\t\t\treturn categories;\n\t\t}\n\n\t\tif ( ! categories.has( group ) ) {\n\t\t\tcategories.set( group, [] );\n\t\t}\n\n\t\tcategories.get( group )?.push( { label, value: name } );\n\n\t\treturn categories;\n\t}, new Map() );\n\n\treturn [ ...options ];\n};\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { type PopoverActionProps } from '../../popover-action';\nimport { DynamicSelection } from '../components/dynamic-selection';\nimport { supportsDynamic } from '../utils';\n\nexport const usePropDynamicAction = (): PopoverActionProps => {\n\tconst { propType } = useBoundProp();\n\n\tconst visible = !! propType && supportsDynamic( propType );\n\n\treturn {\n\t\tvisible,\n\t\ticon: DatabaseIcon,\n\t\ttitle: __( 'Dynamic tags', 'elementor' ),\n\t\tpopoverContent: ( { closePopover } ) => <DynamicSelection onSelect={ closePopover } />,\n\t};\n};\n","import { replaceControl } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { isDynamicPropValue } from './utils';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport const init = () => {\n\treplaceControl( {\n\t\tcomponent: DynamicSelectionControl,\n\t\tcondition: ( { value } ) => isDynamicPropValue( value ),\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'dynamic-tags',\n\t\tuseProps: usePropDynamicAction,\n\t} );\n};\n"],"mappings":"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","names":["import_editor_controls","React","import_editor_elements","import_editor_styles_repository","import_icons","import_ui","import_i18n","React","import_react","Context","React","import_react","Context","React","import_react","options","React","import_react","import_editor_styles_repository","import_editor_ui","import_ui","import_i18n","React","import_editor_styles_repository","import_ui","options","import_editor_panels","React","import_editor_controls","import_editor_elements","import_icons","import_session","import_ui","import_i18n","React","import_react","import_icons","import_ui","PopoverContent","React","import_ui","React","import_react","import_ui","import_i18n","React","import_editor_controls","React","import_editor_controls","React","import_ui","React","import_editor_controls","import_editor_elements","React","import_react","import_ui","import_icons","import_ui","React","import_ui","Control","React","import_react","import_editor_elements","import_editor_props","import_editor_responsive","import_session","import_ui","import_i18n","React","import_react","import_editor_elements","import_editor_props","import_editor_styles_repository","import_react","Context","React","import_editor_controls","React","import_editor_controls","import_editor_styles","import_react","import_editor_elements","import_editor_styles_repository","import_i18n","React","import_editor_controls","import_editor_styles_repository","import_ui","import_i18n","React","React","import_ui","React","import_ui","React","import_i18n","React","import_editor_controls","import_icons","import_ui","SIZE","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_editor_props","import_icons","import_ui","import_i18n","import_ui","React","import_react","import_ui","React","import_editor_controls","import_editor_props","import_icons","import_ui","import_i18n","React","import_editor_controls","React","import_editor_controls","import_editor_elements","import_i18n","import_editor_v1_adapters","useListenTo","React","import_editor_controls","import_icons","import_ui","import_i18n","CenterIcon","BetweenIcon","AroundIcon","EvenlyIcon","React","import_editor_controls","import_icons","import_ui","import_i18n","StartIcon","EndIcon","iconProps","options","CenterIcon","JustifyIcon","React","import_editor_controls","import_icons","import_ui","import_i18n","StartIcon","EndIcon","iconProps","options","CenterIcon","JustifyIcon","React","import_editor_controls","import_ui","import_i18n","options","React","import_editor_controls","import_icons","import_ui","import_i18n","options","StartIcon","EndIcon","React","import_react","import_editor_controls","import_icons","import_ui","import_i18n","React","import_react","import_editor_controls","import_icons","import_ui","import_i18n","items","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","StartIcon","EndIcon","iconProps","options","CenterIcon","BetweenIcon","AroundIcon","EvenlyIcon","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_session","React","import_editor_controls","import_icons","import_ui","import_i18n","InlineStartIcon","InlineEndIcon","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_i18n","React","React","import_react","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","import_react","import_i18n","options","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","StartIcon","EndIcon","options","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_ui","import_i18n","createPanel","import_editor_panels","import_editor_v1_adapters","import_react","import_editor_v1_adapters","import_editor_elements","listenTo","React","import_react","import_editor_controls","import_icons","import_ui","import_i18n","React","import_ui","import_session","React","import_editor_controls","import_react","import_react","import_editor_controls","getElementorConfig","getElementorConfig","import_editor_props","React","import_react","import_editor_controls","import_icons","import_ui","import_i18n","SIZE","options","items","SIZE","Tag","Control","React","import_editor_controls","import_icons","import_i18n","init","registerPanel","init"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/control-replacement.tsx","../src/components/css-classes/css-class-selector.tsx","../src/contexts/classes-prop-context.tsx","../src/contexts/element-context.tsx","../src/contexts/style-context.tsx","../src/errors.ts","../src/components/multi-combobox.tsx","../src/components/css-classes/css-class-item.tsx","../src/components/css-classes/css-class-menu.tsx","../src/hooks/use-unapply-class.ts","../src/panel.ts","../src/components/editing-panel.tsx","../src/controls-actions.ts","../src/popover-action.tsx","../src/components/editing-panel-error-fallback.tsx","../src/components/editing-panel-tabs.tsx","../src/components/settings-tab.tsx","../src/controls-registry/control.tsx","../src/controls-registry/controls-registry.tsx","../src/controls-registry/control-type-container.tsx","../src/controls-registry/settings-field.tsx","../src/controls-registry/create-top-level-object-type.ts","../src/components/section.tsx","../src/components/collapse-icon.tsx","../src/components/sections-list.tsx","../src/components/style-tab.tsx","../src/contexts/styles-inheritance-context.tsx","../src/hooks/use-styles-rerender.ts","../src/styles-inheritance/utils.ts","../src/styles-inheritance/create-snapshots-manager.ts","../src/styles-inheritance/create-styles-inheritance.ts","../src/components/style-sections/background-section/background-section.tsx","../src/controls-registry/styles-field.tsx","../src/hooks/use-styles-fields.ts","../src/hooks/use-styles-field.ts","../src/styles-inheritance/styles-inheritance-indicator.tsx","../src/components/style-sections/border-section/border-section.tsx","../src/components/panel-divider.tsx","../src/components/section-content.tsx","../src/components/style-sections/border-section/border-field.tsx","../src/components/add-or-remove-content.tsx","../src/components/control-label.tsx","../src/components/style-sections/border-section/border-color-field.tsx","../src/components/style-sections/border-section/border-style-field.tsx","../src/components/style-sections/border-section/border-width-field.tsx","../src/hooks/use-direction.ts","../src/components/style-sections/layout-section/utils/rotated-icon.tsx","../src/components/style-sections/border-section/border-radius-field.tsx","../src/components/style-sections/effects-section/effects-section.tsx","../src/components/style-sections/layout-section/layout-section.tsx","../src/hooks/use-computed-style.ts","../src/components/style-sections/layout-section/align-content-field.tsx","../src/components/style-sections/layout-section/align-items-field.tsx","../src/components/style-sections/layout-section/align-self-child-field.tsx","../src/components/style-sections/layout-section/display-field.tsx","../src/components/style-sections/layout-section/flex-direction-field.tsx","../src/components/style-sections/layout-section/flex-order-field.tsx","../src/components/style-sections/layout-section/flex-size-field.tsx","../src/components/style-sections/layout-section/gap-control-field.tsx","../src/components/style-sections/layout-section/justify-content-field.tsx","../src/components/style-sections/layout-section/wrap-field.tsx","../src/components/style-sections/position-section/position-section.tsx","../src/components/style-sections/position-section/dimensions-field.tsx","../src/components/style-sections/position-section/position-field.tsx","../src/components/style-sections/position-section/z-index-field.tsx","../src/components/style-sections/size-section/size-section.tsx","../src/components/style-sections/size-section/overflow-field.tsx","../src/components/style-sections/spacing-section/spacing-section.tsx","../src/components/style-sections/typography-section/typography-section.tsx","../src/components/collapsible-content.tsx","../src/components/style-sections/typography-section/font-family-field.tsx","../src/components/style-sections/typography-section/hooks/use-font-families.ts","../src/sync/get-elementor-config.ts","../src/components/style-sections/typography-section/font-size-field.tsx","../src/components/style-sections/typography-section/font-style-field.tsx","../src/components/style-sections/typography-section/font-weight-field.tsx","../src/components/style-sections/typography-section/letter-spacing-field.tsx","../src/components/style-sections/typography-section/line-height-field.tsx","../src/components/style-sections/typography-section/text-alignment-field.tsx","../src/components/style-sections/typography-section/text-color-field.tsx","../src/components/style-sections/typography-section/text-decoration-field.tsx","../src/components/style-sections/typography-section/text-direction-field.tsx","../src/components/style-sections/typography-section/text-stroke-field.tsx","../src/components/style-sections/typography-section/transform-field.tsx","../src/components/style-sections/typography-section/word-spacing-field.tsx","../src/init.ts","../src/hooks/use-open-editor-panel.ts","../src/sync/is-atomic-widget-selected.ts","../src/components/editing-panel-hooks.tsx","../src/dynamics/components/dynamic-selection-control.tsx","../src/components/popover-content.tsx","../src/hooks/use-persist-dynamic-value.ts","../src/dynamics/dynamic-control.tsx","../src/dynamics/hooks/use-dynamic-tag.ts","../src/dynamics/hooks/use-prop-dynamic-tags.ts","../src/dynamics/sync/get-elementor-config.ts","../src/dynamics/sync/get-atomic-dynamic-tags.ts","../src/dynamics/utils.ts","../src/dynamics/components/dynamic-selection.tsx","../src/dynamics/hooks/use-prop-dynamic-action.tsx","../src/dynamics/init.ts"],"sourcesContent":["export { useBoundProp } from '@elementor/editor-controls';\nexport type { PopoverActionProps } from './popover-action';\nexport { replaceControl } from './control-replacement';\nexport { injectIntoClassSelectorActions } from './components/css-classes/css-class-selector';\nexport { usePanelActions, usePanelStatus } from './panel';\n\nimport init from './init';\n\ninit();\n","import { createControlReplacement } from '@elementor/editor-controls';\n\nexport const { replaceControl, getControlReplacement } = createControlReplacement();\n","import * as React from 'react';\nimport { type ReactElement } from 'react';\nimport { getElementSetting, updateElementSettings, useElementSetting } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\nimport {\n\tELEMENTS_STYLES_PROVIDER_KEY,\n\ttype StylesProvider,\n\tstylesRepository,\n\ttype UpdateActionPayload,\n\tuseCreateActionsByProvider,\n\tuseProviders,\n} from '@elementor/editor-styles-repository';\nimport { MapPinIcon } from '@elementor/icons';\nimport { createLocation } from '@elementor/locations';\nimport { Chip, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../../contexts/classes-prop-context';\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\nimport { type Action, MultiCombobox, type Option } from '../multi-combobox';\nimport { CssClassItem } from './css-class-item';\n\nconst ID = 'elementor-css-class-selector';\nconst TAGS_LIMIT = 50;\n\ntype StyleDefOption = Option & {\n\tcolor: 'accent' | 'global';\n\ticon: ReactElement | null;\n\tprovider: string;\n};\n\nconst EMPTY_OPTION = {\n\tlabel: __( 'local', 'elementor' ),\n\tvalue: null,\n\tfixed: true,\n\tcolor: 'accent',\n\ticon: <MapPinIcon />,\n\tprovider: ELEMENTS_STYLES_PROVIDER_KEY,\n} satisfies StyleDefOption;\n\nexport const { Slot: ClassSelectorActionsSlot, inject: injectIntoClassSelectorActions } = createLocation();\n\n/**\n * Applied - Classes applied to an element.\n * Active - Class that is currently on edit mode.\n */\n\nexport function CssClassSelector() {\n\tconst options = useOptions();\n\n\tconst { value: appliedIds, setValue: setAppliedIds, pushValue: pushAppliedId } = useAppliedClassesIds();\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\n\tconst actions = useCreateActions( { pushAppliedId, setActiveId } );\n\n\tconst handleApply = useHandleApply( appliedIds, setAppliedIds );\n\n\tconst applied = useAppliedOptions( options, appliedIds );\n\tconst active = applied.find( ( option ) => option.value === activeId ) ?? EMPTY_OPTION;\n\n\treturn (\n\t\t<Stack gap={ 1 } p={ 2 }>\n\t\t\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\" justifyContent=\"space-between\">\n\t\t\t\t<Typography component=\"label\" variant=\"caption\" htmlFor={ ID }>\n\t\t\t\t\t{ __( 'CSS classes', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t\t<Stack direction=\"row\" gap={ 1 }>\n\t\t\t\t\t<ClassSelectorActionsSlot />\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<MultiCombobox\n\t\t\t\tid={ ID }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\toptions={ options }\n\t\t\t\tselected={ applied }\n\t\t\t\tonSelect={ handleApply }\n\t\t\t\tlimitTags={ TAGS_LIMIT }\n\t\t\t\tactions={ actions }\n\t\t\t\tgetLimitTagsText={ ( more ) => (\n\t\t\t\t\t<Chip size=\"tiny\" variant=\"standard\" label={ `+${ more }` } clickable />\n\t\t\t\t) }\n\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\tvalues.map( ( value, index ) => {\n\t\t\t\t\t\tconst chipProps = getTagProps( { index } );\n\t\t\t\t\t\tconst isActive = value.value === active?.value;\n\n\t\t\t\t\t\tconst renameLabel = ( newLabel: string ) => {\n\t\t\t\t\t\t\tif ( ! value.value ) {\n\t\t\t\t\t\t\t\tthrow new Error( `Cannot rename a class without style id` );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn updateClassByProvider( value.provider, { label: newLabel, id: value.value } );\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<CssClassItem\n\t\t\t\t\t\t\t\tkey={ chipProps.key }\n\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\tprovider={ value.provider }\n\t\t\t\t\t\t\t\tid={ value.value }\n\t\t\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\t\t\tcolor={ isActive && value.color ? value.color : 'default' }\n\t\t\t\t\t\t\t\ticon={ value.icon }\n\t\t\t\t\t\t\t\tchipProps={ chipProps }\n\t\t\t\t\t\t\t\tonClickActive={ () => setActiveId( value.value ) }\n\t\t\t\t\t\t\t\trenameLabel={ renameLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t/>\n\t\t</Stack>\n\t);\n}\n\nconst updateClassByProvider = ( provider: string, data: UpdateActionPayload ) => {\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\n\tif ( ! providerInstance ) {\n\t\treturn;\n\t}\n\n\treturn providerInstance.actions.update?.( data );\n};\n\nfunction useOptions() {\n\tconst { element } = useElement();\n\n\tconst isProviderEditable = ( provider: StylesProvider ) => !! provider.actions.updateProps;\n\n\treturn useProviders()\n\t\t.filter( isProviderEditable )\n\t\t.flatMap< StyleDefOption >( ( provider ) => {\n\t\t\tconst isElements = provider.key === ELEMENTS_STYLES_PROVIDER_KEY;\n\t\t\tconst styleDefs = provider.actions.get( { elementId: element.id } );\n\n\t\t\t// Add empty local option for elements, as fallback.\n\t\t\tif ( isElements && styleDefs.length === 0 ) {\n\t\t\t\treturn [ EMPTY_OPTION ];\n\t\t\t}\n\n\t\t\treturn styleDefs.map( ( styleDef ) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: styleDef.label,\n\t\t\t\t\tvalue: styleDef.id,\n\t\t\t\t\tfixed: isElements,\n\t\t\t\t\tcolor: isElements ? 'accent' : 'global',\n\t\t\t\t\ticon: isElements ? <MapPinIcon /> : null,\n\t\t\t\t\tprovider: provider.key,\n\t\t\t\t\tgroup: provider.labels?.plural,\n\t\t\t\t};\n\t\t\t} );\n\t\t} );\n}\n\nfunction useCreateActions( {\n\tpushAppliedId,\n\tsetActiveId,\n}: {\n\tpushAppliedId: ( id: StyleDefinitionID ) => void;\n\tsetActiveId: ( id: StyleDefinitionID ) => void;\n} ) {\n\treturn useCreateActionsByProvider().map( ( [ provider, create ] ): Action< StyleDefOption > => {\n\t\treturn {\n\t\t\t// translators: %s is the label of the new class.\n\t\t\tlabel: ( value ) => __( 'Create new \"%s\"', 'elementor' ).replace( '%s', value ),\n\t\t\t// translators: %s is the singular label of css class provider (e.g \"Global CSS Class\").\n\t\t\tgroup: __( 'Create New %s', 'elementor' ).replace( '%s', provider.labels?.singular ?? '' ),\n\t\t\tcondition: ( _, inputValue ) => isLabelValid( inputValue ) && ! hasReachedLimit( provider ),\n\t\t\tapply: ( label ) => {\n\t\t\t\tconst createdId = create( label );\n\n\t\t\t\tif ( ! createdId ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tpushAppliedId( createdId );\n\t\t\t\tsetActiveId( createdId );\n\t\t\t},\n\t\t};\n\t} );\n}\n\nfunction hasReachedLimit( provider: StylesProvider ) {\n\tif ( provider.limit === undefined ) {\n\t\treturn false;\n\t}\n\n\treturn provider.actions.get().length >= provider.limit;\n}\n\nfunction isLabelValid( newLabel: string ) {\n\treturn stylesRepository.isLabelValid( newLabel ) && ! stylesRepository.isLabelExist( newLabel );\n}\n\nfunction useAppliedOptions( options: StyleDefOption[], appliedIds: StyleDefinitionID[] ) {\n\tconst applied = options.filter( ( option ) => option.value && appliedIds.includes( option.value ) );\n\n\tconst hasElementsProviderStyleApplied = applied.some(\n\t\t( option ) => option.provider === ELEMENTS_STYLES_PROVIDER_KEY\n\t);\n\n\tif ( ! hasElementsProviderStyleApplied ) {\n\t\tapplied.unshift( EMPTY_OPTION );\n\t}\n\n\treturn applied;\n}\n\nfunction useAppliedClassesIds() {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\n\tconst value = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\n\tconst setValue = ( ids: StyleDefinitionID[] ) => {\n\t\tupdateElementSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: {\n\t\t\t\t[ currentClassesProp ]: classesPropTypeUtil.create( ids ),\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst pushValue = ( id: StyleDefinitionID ) => {\n\t\tconst ids = getElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\n\t\tsetValue( [ ...ids, id ] );\n\t};\n\n\treturn {\n\t\tvalue,\n\t\tsetValue,\n\t\tpushValue,\n\t};\n}\n\nfunction useHandleApply( appliedIds: StyleDefinitionID[], setAppliedIds: ( ids: StyleDefinitionID[] ) => void ) {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\n\treturn ( selectedOptions: StyleDefOption[] ) => {\n\t\tconst selectedValues = selectedOptions\n\t\t\t.map( ( { value } ) => value )\n\t\t\t.filter( ( value ) => value !== EMPTY_OPTION.value );\n\n\t\tconst isSameClassesAlreadyApplied =\n\t\t\tselectedValues.length === appliedIds.length &&\n\t\t\tselectedValues.every( ( value ) => appliedIds.includes( value ) );\n\n\t\t// Should not trigger to avoid register an undo step.\n\t\tif ( isSameClassesAlreadyApplied ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAppliedIds( selectedValues );\n\n\t\tconst addedValue = selectedValues.find( ( id ) => ! appliedIds.includes( id ) );\n\n\t\tif ( addedValue ) {\n\t\t\tsetActiveId( addedValue );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst removedValue = appliedIds.find( ( id ) => ! selectedValues.includes( id ) );\n\n\t\tif ( removedValue && removedValue === activeId ) {\n\t\t\tsetActiveId( selectedValues[ 0 ] ?? null );\n\t\t}\n\t};\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\ntype ContextValue = {\n\tprop: string;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ClassesPropProvider( { children, prop }: Props ) {\n\treturn <Context.Provider value={ { prop } }>{ children }</Context.Provider>;\n}\n\nexport function useClassesProp() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useClassesProp must be used within a ClassesPropProvider' );\n\t}\n\n\treturn context.prop;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\n\ntype ContextValue = {\n\telement: Element;\n\telementType: ElementType;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ElementProvider( { children, element, elementType }: Props ) {\n\treturn <Context.Provider value={ { element, elementType } }>{ children }</Context.Provider>;\n}\n\nexport function useElement() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useElement must be used within a ElementProvider' );\n\t}\n\n\treturn context;\n}\n","import * as React from 'react';\nimport { createContext, type Dispatch, type PropsWithChildren, useContext } from 'react';\nimport {\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { type StylesProvider, stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { StylesProviderNotFoundError } from '../errors';\n\ntype ContextValue = {\n\tsetId: Dispatch< StyleDefinition[ 'id' ] | null >;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tsetMetaState: Dispatch< StyleDefinitionState >;\n} & ( ContextValueWithProvider | ContextValueWithoutProvider );\n\ntype ContextValueWithProvider = {\n\tid: StyleDefinitionID;\n\tprovider: StylesProvider;\n};\n\ntype ContextValueWithoutProvider = {\n\tid: null;\n\tprovider: null;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< Omit< ContextValue, 'provider' > >;\n\nexport function StyleProvider( { children, ...props }: Props ) {\n\tconst provider = props.id === null ? null : getProviderByStyleId( props.id );\n\n\tif ( props.id && ! provider ) {\n\t\tthrow new StylesProviderNotFoundError( { context: { styleId: props.id } } );\n\t}\n\n\treturn <Context.Provider value={ { ...props, provider } as ContextValue }>{ children }</Context.Provider>;\n}\n\nexport function useStyle() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStyle must be used within a StyleProvider' );\n\t}\n\n\treturn context;\n}\n\nfunction getProviderByStyleId( styleId: StyleDefinitionID ) {\n\tconst styleProvider = stylesRepository.getProviders().find( ( provider ) => {\n\t\treturn provider.actions.get().find( ( style ) => style.id === styleId );\n\t} );\n\n\treturn styleProvider ?? null;\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\nimport { createError } from '@elementor/utils';\n\nexport const ControlTypeNotFoundError = createError< { controlType: string } >( {\n\tcode: 'control_type_not_found',\n\tmessage: 'Control type not found.',\n} );\n\nexport const StylesProviderNotFoundError = createError< { styleId: StyleDefinitionID } >( {\n\tcode: 'provider_not_found',\n\tmessage: 'Styles provider not found.',\n} );\n\nexport const StylesProviderCannotUpdatePropsError = createError< { providerKey: string } >( {\n\tcode: 'provider_cannot_update_props',\n\tmessage: \"Styles provider doesn't support updating props.\",\n} );\n\nexport const StyleNotFoundUnderProviderError = createError< { styleId: StyleDefinitionID; providerKey: string } >( {\n\tcode: 'style_not_found_under_provider',\n\tmessage: 'Style not found under the provider.',\n} );\n","import * as React from 'react';\nimport { useId, useState } from 'react';\nimport {\n\tAutocomplete,\n\ttype AutocompleteProps,\n\ttype AutocompleteRenderGroupParams,\n\tBox,\n\tcreateFilterOptions,\n\tstyled,\n\tTextField,\n\ttype Theme,\n} from '@elementor/ui';\n\nexport type Option = {\n\tlabel: string;\n\tvalue: string | null;\n\tfixed?: boolean;\n\tgroup?: string;\n\tkey?: string;\n};\n\nexport type Action< TOption extends Option > = {\n\tlabel: ( value: string ) => string;\n\tapply: ( value: string ) => void | Promise< void >;\n\tcondition: ( options: TOption[], value: string ) => boolean;\n\tgroup?: string;\n};\n\ntype ActionAsOption< TOption extends Option > = TOption & {\n\tapply: Action< TOption >[ 'apply' ];\n\tcondition: Action< TOption >[ 'condition' ];\n};\n\ntype Props< TOption extends Option > = Omit<\n\tAutocompleteProps< TOption, true, true, true >,\n\t'renderInput' | 'onSelect'\n> & {\n\tactions?: Action< TOption >[];\n\tselected: TOption[];\n\toptions: TOption[];\n\tonSelect?: ( value: TOption[] ) => void;\n};\n\nexport function MultiCombobox< TOption extends Option >( {\n\tactions = [],\n\tselected,\n\toptions,\n\tonSelect,\n\t...props\n}: Props< TOption > ) {\n\tconst filter = useFilterOptions< TOption >();\n\tconst { run, loading } = useActionRunner< TOption >();\n\n\treturn (\n\t\t<Autocomplete\n\t\t\t{ ...props }\n\t\t\tfreeSolo\n\t\t\tmultiple\n\t\t\tclearOnBlur\n\t\t\tselectOnFocus\n\t\t\tdisableClearable\n\t\t\thandleHomeEndKeys\n\t\t\tdisabled={ loading }\n\t\t\tvalue={ selected }\n\t\t\toptions={ options }\n\t\t\trenderGroup={ ( params ) => <Group { ...params } /> }\n\t\t\trenderInput={ ( params ) => (\n\t\t\t\t<TextField\n\t\t\t\t\t{ ...params }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\t'.MuiAutocomplete-inputRoot.MuiInputBase-adornedStart': {\n\t\t\t\t\t\t\tpaddingLeft: theme.spacing( 0.25 ),\n\t\t\t\t\t\t\tpaddingRight: theme.spacing( 0.25 ),\n\t\t\t\t\t\t},\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\tonChange={ ( _, selectedOrInputValue, reason ) => {\n\t\t\t\tconst inputValue = selectedOrInputValue.find( ( option ) => typeof option === 'string' );\n\t\t\t\tconst optionsAndActions = selectedOrInputValue.filter( ( option ) => typeof option !== 'string' );\n\n\t\t\t\t// Handles user input when Enter is pressed\n\t\t\t\tif ( reason === 'createOption' ) {\n\t\t\t\t\tconst [ firstAction ] = filterActions( actions, { options, inputValue: inputValue ?? '' } );\n\n\t\t\t\t\tif ( firstAction?.value ) {\n\t\t\t\t\t\treturn run( firstAction.apply, firstAction.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Handles the user's action selection when triggered.\n\t\t\t\tconst action = optionsAndActions.find( ( value ) => isAction( value ) );\n\n\t\t\t\tif ( reason === 'selectOption' && action?.value ) {\n\t\t\t\t\treturn run( action.apply, action.value );\n\t\t\t\t}\n\n\t\t\t\t// Every other case, we update the selected values.\n\t\t\t\tconst fixedValues = options.filter( ( option ) => !! option.fixed );\n\n\t\t\t\tonSelect?.( [ ...new Set( [ ...optionsAndActions, ...fixedValues ] ) ] );\n\t\t\t} }\n\t\t\tgetOptionLabel={ ( option ) => ( typeof option === 'string' ? option : option.label ) }\n\t\t\tgetOptionKey={ ( option ) => {\n\t\t\t\tif ( typeof option === 'string' ) {\n\t\t\t\t\treturn option;\n\t\t\t\t}\n\n\t\t\t\treturn option.key ?? option.value ?? option.label;\n\t\t\t} }\n\t\t\tfilterOptions={ ( optionList, params ) => {\n\t\t\t\tconst selectedValues = selected.map( ( option ) => option.value );\n\n\t\t\t\treturn [\n\t\t\t\t\t...filterActions( actions, { options: optionList, inputValue: params.inputValue } ),\n\t\t\t\t\t...filter(\n\t\t\t\t\t\toptionList.filter( ( option ) => ! selectedValues.includes( option.value ) ),\n\t\t\t\t\t\tparams\n\t\t\t\t\t),\n\t\t\t\t];\n\t\t\t} }\n\t\t\tgroupBy={ ( option ) => option.group ?? '' }\n\t\t\trenderOption={ ( optionProps, { label } ) => (\n\t\t\t\t<li { ...optionProps } style={ { display: 'block', textOverflow: 'ellipsis' } }>\n\t\t\t\t\t{ label }\n\t\t\t\t</li>\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nconst Group = ( params: Omit< AutocompleteRenderGroupParams, 'key' > ) => {\n\tconst id = `combobox-group-${ useId().replace( /:/g, '_' ) }`;\n\n\treturn (\n\t\t<StyledGroup role=\"group\" aria-labelledby={ id }>\n\t\t\t<StyledGroupHeader id={ id }> { params.group }</StyledGroupHeader>\n\t\t\t<StyledGroupItems role=\"listbox\">{ params.children }</StyledGroupItems>\n\t\t</StyledGroup>\n\t);\n};\n\nconst StyledGroup = styled( 'li' )`\n\t&:not( :last-of-type ) {\n\t\tborder-bottom: 1px solid ${ ( { theme } ) => theme.palette.divider };\n\t}\n`;\n\nconst StyledGroupHeader = styled( Box )( ( { theme } ) => ( {\n\tposition: 'sticky',\n\ttop: '-8px',\n\tpadding: theme.spacing( 1, 2 ),\n\tcolor: theme.palette.text.tertiary,\n} ) );\n\nconst StyledGroupItems = styled( 'ul' )`\n\tpadding: 0;\n`;\n\nfunction useFilterOptions< TOption extends Option >() {\n\treturn useState( () => createFilterOptions< TOption >() )[ 0 ];\n}\n\nfunction useActionRunner< TOption extends Option >() {\n\tconst [ loading, setLoading ] = useState( false );\n\n\tconst run = async ( apply: Action< TOption >[ 'apply' ], value: string ) => {\n\t\tsetLoading( true );\n\n\t\ttry {\n\t\t\tawait apply( value );\n\t\t} catch {\n\t\t\t// TODO: Do something with the error.\n\t\t}\n\n\t\tsetLoading( false );\n\t};\n\n\treturn { run, loading };\n}\n\nfunction filterActions< TOption extends Option >(\n\tactions: Action< TOption >[],\n\t{ options, inputValue }: { options: TOption[]; inputValue: string }\n) {\n\treturn actions\n\t\t.filter( ( action ) => action.condition( options, inputValue ) )\n\t\t.map( ( action, index ) => ( {\n\t\t\tlabel: action.label( inputValue ),\n\t\t\tvalue: inputValue,\n\t\t\tgroup: action.group,\n\t\t\tapply: action.apply,\n\t\t\tcondition: action.condition,\n\t\t\tkey: index.toString(),\n\t\t} ) ) as ActionAsOption< TOption >[];\n}\n\nfunction isAction< TOption extends Option >( option: TOption ): option is ActionAsOption< TOption > {\n\treturn 'apply' in option && 'condition' in option;\n}\n","import * as React from 'react';\nimport { type ReactElement, useState } from 'react';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { EditableField, EllipsisWithTooltip, useEditable } from '@elementor/editor-ui';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport {\n\ttype AutocompleteRenderGetTagProps,\n\tbindTrigger,\n\tChip,\n\ttype ChipOwnProps,\n\tStack,\n\ttype Theme,\n\tTypography,\n\tUnstableChipGroup,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../contexts/style-context';\nimport { CssClassMenu } from './css-class-menu';\n\ntype CssClassItemProps = {\n\tid: string | null;\n\tlabel: string;\n\tprovider: string;\n\tisActive: boolean;\n\tcolor: ChipOwnProps[ 'color' ];\n\ticon: ReactElement | null;\n\tchipProps: ReturnType< AutocompleteRenderGetTagProps >;\n\tonClickActive: ( id: string | null ) => void;\n\trenameLabel: ( newLabel: string ) => void;\n\tvalidateLabel?: ( newLabel: string ) => string | undefined | null;\n};\n\nconst CHIP_SIZE = 'tiny';\n\nexport function CssClassItem( {\n\tid,\n\tlabel,\n\tprovider,\n\tisActive,\n\tcolor: colorProp,\n\ticon,\n\tchipProps,\n\tonClickActive,\n\trenameLabel,\n}: CssClassItemProps ) {\n\tconst { meta, setMetaState } = useStyle();\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\tconst [ chipRef, setChipRef ] = useState< HTMLElement | null >( null );\n\tconst { onDelete, ...chipGroupProps } = chipProps;\n\n\tconst {\n\t\tref,\n\t\tisEditing,\n\t\topenEditMode,\n\t\terror,\n\t\tgetProps: getEditableProps,\n\t} = useEditable( {\n\t\tvalue: label,\n\t\tonSubmit: renameLabel,\n\t\tvalidation: validateLabel,\n\t} );\n\n\tconst color = error ? 'error' : colorProp;\n\n\tconst providerActions = stylesRepository.getProviderByKey( provider )?.actions;\n\tconst allowRename = Boolean( providerActions?.update );\n\n\tconst isShowingState = isActive && meta.state;\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': { margin: theme.spacing( 0.125 ) },\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={\n\t\t\t\t\t\tisEditing ? (\n\t\t\t\t\t\t\t<EditableField ref={ ref } error={ error } { ...getEditableProps() } />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<EllipsisWithTooltip maxWidth=\"10ch\" title={ label } as=\"div\" />\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tvariant={ isActive && ! meta.state && ! isEditing ? 'filled' : 'standard' }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tcolor={ color }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isShowingState ) {\n\t\t\t\t\t\t\tsetMetaState( null );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( allowRename && isActive ) {\n\t\t\t\t\t\t\topenEditMode();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonClickActive( id );\n\t\t\t\t\t} }\n\t\t\t\t\taria-pressed={ isActive }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tcursor: isActive && allowRename && ! isShowingState ? 'text' : 'pointer',\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\t'&.Mui-focusVisible': {\n\t\t\t\t\t\t\tboxShadow: 'none !important',\n\t\t\t\t\t\t},\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t\t{ ! isEditing && (\n\t\t\t\t\t<Chip\n\t\t\t\t\t\ticon={ isShowingState ? undefined : <DotsVerticalIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tisShowingState ? (\n\t\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t\t<Typography variant=\"inherit\">{ meta.state }</Typography>\n\t\t\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\t\tcolor={ color }\n\t\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\t\taria-label={ __( 'Open CSS Class Menu', 'elementor' ) }\n\t\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\t\tpaddingRight: 0,\n\t\t\t\t\t\t\t...( ! isShowingState ? { paddingLeft: 0 } : {} ),\n\t\t\t\t\t\t\t'.MuiChip-label': isShowingState ? { paddingRight: 0 } : { padding: 0 },\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</UnstableChipGroup>\n\t\t\t<CssClassMenu\n\t\t\t\tstyleId={ id }\n\t\t\t\tpopupState={ popupState }\n\t\t\t\tprovider={ provider }\n\t\t\t\thandleRename={ openEditMode }\n\t\t\t\tanchorEl={ chipRef }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nconst validateLabel = ( newLabel: string ) => {\n\tif ( ! stylesRepository.isLabelValid( newLabel ) ) {\n\t\treturn __( 'Format is not valid', 'elementor' );\n\t}\n\n\tif ( stylesRepository.isLabelExist( newLabel ) ) {\n\t\treturn __( 'Existing name', 'elementor' );\n\t}\n\n\treturn null;\n};\n","import * as React from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { bindMenu, Divider, Menu, MenuSubheader, type PopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../contexts/style-context';\nimport { useUnapplyClass } from '../../hooks/use-unapply-class';\n\nconst STATES: NonNullable< StyleDefinitionState >[] = [ 'hover', 'focus', 'active' ];\n\ntype CssClassMenuProps = {\n\tstyleId: string | null;\n\tprovider: string;\n\tpopupState: PopupState;\n\thandleRename: () => void;\n\tanchorEl: HTMLElement | null;\n};\n\nexport function CssClassMenu( { styleId, provider, popupState, handleRename, anchorEl }: CssClassMenuProps ) {\n\tconst handleKeyDown = ( e: React.KeyboardEvent< HTMLElement > ) => {\n\t\te.stopPropagation();\n\t};\n\n\treturn (\n\t\t<Menu\n\t\t\tMenuListProps={ { dense: true } }\n\t\t\t{ ...bindMenu( popupState ) }\n\t\t\tanchorEl={ anchorEl }\n\t\t\tanchorOrigin={ {\n\t\t\t\tvertical: 'bottom',\n\t\t\t\thorizontal: 'left',\n\t\t\t} }\n\t\t\ttransformOrigin={ {\n\t\t\t\thorizontal: 'left',\n\t\t\t\tvertical: -4,\n\t\t\t} }\n\t\t\tonKeyDown={ handleKeyDown }\n\t\t>\n\t\t\t{ /* It has to be an array since MUI menu doesn't accept a Fragment as a child, and wrapping the items with an HTML element disrupts keyboard navigation */ }\n\t\t\t{ getMenuItemsByProvider( { provider, styleId, handleRename, closeMenu: popupState.close } ) }\n\t\t\t<MenuSubheader sx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }>\n\t\t\t\t{ __( 'Pseudo classes', 'elementor' ) }\n\t\t\t</MenuSubheader>\n\t\t\t<StateMenuItem key=\"normal\" state={ null } styleId={ styleId } closeMenu={ popupState.close } />\n\t\t\t{ STATES.map( ( state ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StateMenuItem key={ state } state={ state } styleId={ styleId } closeMenu={ popupState.close } />\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Menu>\n\t);\n}\n\nfunction getMenuItemsByProvider( {\n\tprovider,\n\tstyleId,\n\thandleRename,\n\tcloseMenu,\n}: {\n\tprovider: string;\n\tstyleId: string | null;\n\thandleRename: () => void;\n\tcloseMenu: () => void;\n} ) {\n\tif ( ! styleId ) {\n\t\treturn [];\n\t}\n\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\tconst providerActions = providerInstance?.actions;\n\n\tconst [ canUpdate, canDelete ] = [ providerActions?.update, providerActions?.delete ];\n\n\tconst actions = [\n\t\tcanUpdate && <RenameClassMenuItem key=\"rename-class\" handleRename={ handleRename } closeMenu={ closeMenu } />,\n\t\tcanDelete && <UnapplyClassMenuItem key=\"unapply-class\" styleId={ styleId } closeMenu={ closeMenu } />,\n\t].filter( Boolean );\n\n\tif ( actions.length ) {\n\t\tactions.unshift(\n\t\t\t<MenuSubheader\n\t\t\t\tkey=\"provider-label\"\n\t\t\t\tsx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }\n\t\t\t>\n\t\t\t\t{ providerInstance?.labels?.singular }\n\t\t\t</MenuSubheader>\n\t\t);\n\t\tactions.push( <Divider key=\"provider-actions-divider\" /> );\n\t}\n\n\treturn actions;\n}\n\ntype StateMenuItemProps = {\n\tstate: StyleDefinitionState;\n\tstyleId: string | null;\n\tcloseMenu: () => void;\n};\n\nfunction StateMenuItem( { state, styleId, closeMenu, ...props }: StateMenuItemProps ) {\n\tconst { id: activeId, setId: setActiveId, setMetaState: setActiveMetaState, meta } = useStyle();\n\tconst { state: activeState } = meta;\n\n\tconst isActive = styleId === activeId;\n\tconst isSelected = state === activeState && isActive;\n\n\treturn (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tselected={ isSelected }\n\t\t\tsx={ { textTransform: 'capitalize' } }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! isActive ) {\n\t\t\t\t\tsetActiveId( styleId );\n\t\t\t\t}\n\n\t\t\t\tsetActiveMetaState( state );\n\n\t\t\t\tcloseMenu();\n\t\t\t} }\n\t\t>\n\t\t\t{ state ? state : 'Normal' }\n\t\t</MenuListItem>\n\t);\n}\n\nfunction UnapplyClassMenuItem( { styleId, closeMenu, ...props }: { styleId: string; closeMenu: () => void } ) {\n\tconst unapplyClass = useUnapplyClass( styleId );\n\n\treturn (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tonClick={ () => {\n\t\t\t\tunapplyClass();\n\t\t\t\tcloseMenu();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Remove', 'elementor' ) }\n\t\t</MenuListItem>\n\t);\n}\n\nfunction RenameClassMenuItem( {\n\thandleRename,\n\tcloseMenu,\n\t...props\n}: {\n\thandleRename: () => void;\n\tcloseMenu: () => void;\n} ) {\n\treturn (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tonClick={ () => {\n\t\t\t\tcloseMenu();\n\t\t\t\thandleRename();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Rename', 'elementor' ) }\n\t\t</MenuListItem>\n\t);\n}\n","import { updateElementSettings, useElementSetting } from '@elementor/editor-elements';\nimport { type ClassesPropValue } from '@elementor/editor-props';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\n\nexport const useUnapplyClass = ( classId: string ) => {\n\tconst { element } = useElement();\n\tconst { setId: setStyleId } = useStyle();\n\tconst classesProp = useClassesProp();\n\n\tconst classes = useElementSetting< ClassesPropValue >( element.id, classesProp );\n\tconst filteredClasses = classes?.value.filter( ( className ) => className !== classId ) ?? [];\n\n\treturn () => {\n\t\tupdateElementSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: {\n\t\t\t\t[ classesProp ]: {\n\t\t\t\t\t$$type: 'classes',\n\t\t\t\t\tvalue: filteredClasses,\n\t\t\t\t},\n\t\t\t},\n\t\t} );\n\n\t\tsetStyleId( null );\n\t};\n};\n","import { __createPanel as createPanel } from '@elementor/editor-panels';\n\nimport { EditingPanel } from './components/editing-panel';\n\nexport const { panel, usePanelActions, usePanelStatus } = createPanel( {\n\tid: 'editing-panel',\n\tcomponent: EditingPanel,\n} );\n","import * as React from 'react';\nimport { ControlActionsProvider, ControlReplacementProvider } from '@elementor/editor-controls';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { ThemeProvider } from '@elementor/editor-ui';\nimport { AtomIcon } from '@elementor/icons';\nimport { SessionStorageProvider } from '@elementor/session';\nimport { ErrorBoundary } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ElementProvider } from '../contexts/element-context';\nimport { getControlReplacement } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { EditorPanelErrorFallback } from './editing-panel-error-fallback';\nimport { EditingPanelTabs } from './editing-panel-tabs';\n\nconst { useMenuItems } = controlActionsMenu;\n\nexport const EditingPanel = () => {\n\tconst { element, elementType } = useSelectedElement();\n\tconst controlReplacement = getControlReplacement();\n\tconst menuItems = useMenuItems().default;\n\n\tif ( ! element || ! elementType ) {\n\t\treturn null;\n\t}\n\n\t/* translators: %s: Element type title. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', elementType.title );\n\n\treturn (\n\t\t<ErrorBoundary fallback={ <EditorPanelErrorFallback /> }>\n\t\t\t<SessionStorageProvider prefix={ 'elementor' }>\n\t\t\t\t<ThemeProvider>\n\t\t\t\t\t<Panel>\n\t\t\t\t\t\t<PanelHeader>\n\t\t\t\t\t\t\t<PanelHeaderTitle>{ panelTitle }</PanelHeaderTitle>\n\t\t\t\t\t\t\t<AtomIcon fontSize=\"small\" sx={ { color: 'text.tertiary' } } />\n\t\t\t\t\t\t</PanelHeader>\n\t\t\t\t\t\t<PanelBody>\n\t\t\t\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t\t\t\t<ControlReplacementProvider { ...controlReplacement }>\n\t\t\t\t\t\t\t\t\t<ElementProvider element={ element } elementType={ elementType }>\n\t\t\t\t\t\t\t\t\t\t<EditingPanelTabs />\n\t\t\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t\t\t</ControlReplacementProvider>\n\t\t\t\t\t\t\t</ControlActionsProvider>\n\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t</Panel>\n\t\t\t\t</ThemeProvider>\n\t\t\t</SessionStorageProvider>\n\t\t</ErrorBoundary>\n\t);\n};\n","import { createMenu } from '@elementor/menus';\n\nimport PopoverAction from './popover-action';\n\nexport const controlActionsMenu = createMenu( {\n\tcomponents: {\n\t\tPopoverAction,\n\t},\n} );\n","import * as React from 'react';\nimport { type ComponentType, type ElementType as ReactElementType, useId } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport { bindPopover, bindToggle, IconButton, Popover, Stack, Tooltip, Typography, usePopupState } from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\nexport type PopoverActionProps = {\n\ttitle: string;\n\tvisible?: boolean;\n\ticon: ReactElementType;\n\tpopoverContent: ComponentType< { closePopover: () => void } >;\n};\n\nexport default function PopoverAction( {\n\ttitle,\n\tvisible = true,\n\ticon: Icon,\n\tpopoverContent: PopoverContent,\n}: PopoverActionProps ) {\n\tconst id = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-popover-action-${ id }`,\n\t} );\n\n\tif ( ! visible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Tooltip placement=\"top\" title={ title }>\n\t\t\t\t<IconButton aria-label={ title } key={ id } size={ SIZE } { ...bindToggle( popupState ) }>\n\t\t\t\t\t<Icon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'center',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t<Icon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t<Typography variant=\"subtitle2\">{ title }</Typography>\n\t\t\t\t\t<IconButton sx={ { ml: 'auto' } } size={ SIZE } onClick={ popupState.close }>\n\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Stack>\n\t\t\t\t<PopoverContent closePopover={ popupState.close } />\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { Alert, Box } from '@elementor/ui';\n\nexport function EditorPanelErrorFallback() {\n\treturn (\n\t\t<Box role=\"alert\" sx={ { minHeight: '100%', p: 2 } }>\n\t\t\t<Alert severity=\"error\" sx={ { mb: 2, maxWidth: 400, textAlign: 'center' } }>\n\t\t\t\t<strong>Something went wrong</strong>\n\t\t\t</Alert>\n\t\t</Box>\n\t);\n}\n","import * as React from 'react';\nimport { Fragment } from 'react';\nimport { Divider, Stack, Tab, TabPanel, Tabs, useTabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../contexts/element-context';\nimport { SettingsTab } from './settings-tab';\nimport { StyleTab } from './style-tab';\n\ntype TabValue = 'settings' | 'style';\n\nexport const EditingPanelTabs = () => {\n\tconst { element } = useElement();\n\n\tconst { getTabProps, getTabPanelProps, getTabsProps } = useTabs< TabValue >( 'settings' );\n\n\treturn (\n\t\t// When switching between elements, the local states should be reset. We are using key to rerender the tabs.\n\t\t// Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key\n\t\t<Fragment key={ element.id }>\n\t\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t\t<Tabs\n\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\tindicatorColor=\"secondary\"\n\t\t\t\t\ttextColor=\"inherit\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={ { mt: 0.5 } }\n\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t>\n\t\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t\t</Tabs>\n\t\t\t\t<Divider />\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t\t<SettingsTab />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t\t<StyleTab />\n\t\t\t\t</TabPanel>\n\t\t\t</Stack>\n\t\t</Fragment>\n\t);\n};\n","import * as React from 'react';\nimport { ControlFormLabel } from '@elementor/editor-controls';\nimport { type Control } from '@elementor/editor-elements';\nimport { SessionStorageProvider } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\nimport { Control as BaseControl } from '../controls-registry/control';\nimport { ControlTypeContainer } from '../controls-registry/control-type-container';\nimport { type ControlType, getControlByType } from '../controls-registry/controls-registry';\nimport { SettingsField } from '../controls-registry/settings-field';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\n\nexport const SettingsTab = () => {\n\tconst { elementType, element } = useElement();\n\n\treturn (\n\t\t<SessionStorageProvider prefix={ element.id }>\n\t\t\t<SectionsList>\n\t\t\t\t{ elementType.controls.map( ( { type, value }, index ) => {\n\t\t\t\t\tif ( type === 'control' ) {\n\t\t\t\t\t\treturn <Control key={ value.bind } control={ value } />;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( type === 'section' ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Section title={ value.label } key={ type + '.' + index } defaultExpanded={ true }>\n\t\t\t\t\t\t\t\t{ value.items?.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tif ( item.type === 'control' ) {\n\t\t\t\t\t\t\t\t\t\treturn <Control key={ item.value.bind } control={ item.value } />;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// TODO: Handle 2nd level sections\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t} ) }\n\t\t\t</SectionsList>\n\t\t</SessionStorageProvider>\n\t);\n};\n\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! getControlByType( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SettingsField bind={ control.bind }>\n\t\t\t<ControlTypeContainer controlType={ control.type as ControlType }>\n\t\t\t\t{ control.label ? <ControlFormLabel>{ control.label }</ControlFormLabel> : null }\n\t\t\t\t<BaseControl type={ control.type as ControlType } props={ control.props } />\n\t\t\t</ControlTypeContainer>\n\t\t</SettingsField>\n\t);\n};\n","import * as React from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useElement } from '../contexts/element-context';\nimport { ControlTypeNotFoundError } from '../errors';\nimport { type ControlType, type ControlTypes, getControlByType } from './controls-registry';\n\ntype IsRequired< T, K extends keyof T > = object extends Pick< T, K > ? false : true;\n\ntype AnyPropertyRequired< T > = {\n\t[ K in keyof T ]: IsRequired< T, K >;\n}[ keyof T ] extends true\n\t? true\n\t: false;\n\ntype ControlProps< T extends ControlType > = AnyPropertyRequired< ComponentProps< ControlTypes[ T ] > > extends true\n\t? {\n\t\t\tprops: ComponentProps< ControlTypes[ T ] >;\n\t\t\ttype: T;\n\t }\n\t: {\n\t\t\tprops?: ComponentProps< ControlTypes[ T ] >;\n\t\t\ttype: T;\n\t };\n\nexport const Control = < T extends ControlType >( { props, type }: ControlProps< T > ) => {\n\tconst ControlByType = getControlByType( type );\n\tconst { element } = useElement();\n\n\tif ( ! ControlByType ) {\n\t\tthrow new ControlTypeNotFoundError( {\n\t\t\tcontext: { controlType: type },\n\t\t} );\n\t}\n\n\t// @ts-expect-error ControlComponent props are inferred from the type (T).\n\treturn <ControlByType { ...props } context={ { elementId: element.id } } />;\n};\n","import {\n\ttype ControlComponent,\n\tImageControl,\n\tLinkControl,\n\tSelectControl,\n\tSizeControl,\n\tSvgMediaControl,\n\tTextAreaControl,\n\tTextControl,\n\tUrlControl,\n} from '@elementor/editor-controls';\n\nexport type ControlLayout = 'full' | 'two-columns';\n\ntype ControlRegistry = Record< string, { component: ControlComponent; layout: ControlLayout } >;\n\nconst controlTypes = {\n\timage: { component: ImageControl, layout: 'full' },\n\t'svg-media': { component: SvgMediaControl, layout: 'full' },\n\ttext: { component: TextControl, layout: 'full' },\n\ttextarea: { component: TextAreaControl, layout: 'full' },\n\tsize: { component: SizeControl, layout: 'two-columns' },\n\tselect: { component: SelectControl, layout: 'two-columns' },\n\tlink: { component: LinkControl, layout: 'full' },\n\turl: { component: UrlControl, layout: 'full' },\n} as const satisfies ControlRegistry;\n\nexport type ControlType = keyof typeof controlTypes;\n\nexport type ControlTypes = {\n\t[ key in ControlType ]: ( typeof controlTypes )[ key ][ 'component' ];\n};\n\nexport const getControlByType = ( type: ControlType ) => controlTypes[ type ]?.component;\n\nexport const getLayoutByType = ( type: ControlType ) => controlTypes[ type ].layout;\n","import * as React from 'react';\nimport { Box, type BoxProps, styled } from '@elementor/ui';\n\nimport { type ControlLayout, type ControlType, getLayoutByType } from './controls-registry';\n\nexport const ControlTypeContainer = ( {\n\tcontrolType,\n\tchildren,\n}: React.PropsWithChildren< { controlType: ControlType } > ) => {\n\tconst layout = getLayoutByType( controlType );\n\n\treturn <StyledContainer layout={ layout }>{ children }</StyledContainer>;\n};\n\nconst StyledContainer = styled( Box, {\n\tshouldForwardProp: ( prop: string ) => ! [ 'layout' ].includes( prop ),\n} )< BoxProps & { layout: ControlLayout } >( ( { layout, theme } ) => ( {\n\tdisplay: 'grid',\n\tgridGap: theme.spacing( 1 ),\n\t...getGridLayout( layout ),\n} ) );\n\nconst getGridLayout = ( layout: ControlLayout ) => ( {\n\tjustifyContent: 'space-between',\n\tgridTemplateColumns: {\n\t\tfull: '1fr',\n\t\t'two-columns': 'repeat(2, 1fr)',\n\t}[ layout ],\n} );\n","import * as React from 'react';\nimport { PropKeyProvider, PropProvider } from '@elementor/editor-controls';\nimport { updateElementSettings, useElementSetting } from '@elementor/editor-elements';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\n\nimport { useElement } from '../contexts/element-context';\nimport { createTopLevelOjectType } from './create-top-level-object-type';\n\ntype Props = {\n\tbind: PropKey;\n\tchildren: React.ReactNode;\n};\n\nexport const SettingsField = ( { bind, children }: Props ) => {\n\tconst { element, elementType } = useElement();\n\n\tconst settingsValue = useElementSetting< PropValue >( element.id, bind );\n\n\tconst value = { [ bind ]: settingsValue };\n\n\tconst propType = createTopLevelOjectType( { schema: elementType.propsSchema } );\n\n\tconst setValue = ( newValue: Record< string, PropValue > ) => {\n\t\tupdateElementSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: { ...newValue },\n\t\t} );\n\t};\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t<PropKeyProvider bind={ bind }>{ children }</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import { type ObjectPropType, type PropsSchema } from '@elementor/editor-props';\n\nexport const createTopLevelOjectType = ( { schema }: { schema: PropsSchema } ) => {\n\tconst schemaPropType: ObjectPropType = {\n\t\tkey: '',\n\t\tkind: 'object',\n\t\tmeta: {},\n\t\tsettings: {},\n\t\tdefault: null,\n\t\tshape: schema,\n\t};\n\n\treturn schemaPropType;\n};\n","import * as React from 'react';\nimport { type PropsWithChildren, useId, useState } from 'react';\nimport { Collapse, Divider, ListItemButton, ListItemText, Stack } from '@elementor/ui';\n\nimport { CollapseIcon } from './collapse-icon';\n\ntype Props = PropsWithChildren< {\n\ttitle: string;\n\tdefaultExpanded?: boolean;\n} >;\n\nexport function Section( { title, children, defaultExpanded = false }: Props ) {\n\tconst [ isOpen, setIsOpen ] = useState( !! defaultExpanded );\n\n\tconst id = useId();\n\tconst labelId = `label-${ id }`;\n\tconst contentId = `content-${ id }`;\n\n\treturn (\n\t\t<>\n\t\t\t<ListItemButton\n\t\t\t\tid={ labelId }\n\t\t\t\taria-controls={ contentId }\n\t\t\t\tonClick={ () => setIsOpen( ( prev ) => ! prev ) }\n\t\t\t\tsx={ { '&:hover': { backgroundColor: 'transparent' } } }\n\t\t\t>\n\t\t\t\t<ListItemText\n\t\t\t\t\tsecondary={ title }\n\t\t\t\t\tsecondaryTypographyProps={ { color: 'text.primary', variant: 'caption', fontWeight: 'bold' } }\n\t\t\t\t/>\n\t\t\t\t<CollapseIcon open={ isOpen } color=\"secondary\" fontSize=\"tiny\" />\n\t\t\t</ListItemButton>\n\t\t\t<Collapse id={ contentId } aria-labelledby={ labelId } in={ isOpen } timeout=\"auto\" unmountOnExit>\n\t\t\t\t<Stack gap={ 2.5 } p={ 2 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Stack>\n\t\t\t</Collapse>\n\t\t\t<Divider />\n\t\t</>\n\t);\n}\n","import { ChevronDownIcon } from '@elementor/icons';\nimport { styled } from '@elementor/ui';\n\n// TODO: Replace this with future Rotate component that will be implemented in elementor-ui\nexport const CollapseIcon = styled( ChevronDownIcon, {\n\tshouldForwardProp: ( prop ) => prop !== 'open',\n} )< { open: boolean } >( ( { theme, open } ) => ( {\n\ttransform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n\ttransition: theme.transitions.create( 'transform', {\n\t\tduration: theme.transitions.duration.standard,\n\t} ),\n} ) );\n","import * as React from 'react';\nimport { List, type ListProps } from '@elementor/ui';\n\nexport function SectionsList( props: ListProps ) {\n\treturn <List disablePadding component=\"div\" { ...props } />;\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { getElementStyles, useElementSetting } from '@elementor/editor-elements';\nimport { CLASSES_PROP_KEY, type ClassesPropValue, type PropKey } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { type StyleDefinitionID, type StyleDefinitionState } from '@elementor/editor-styles';\nimport { SessionStorageProvider } from '@elementor/session';\nimport { Divider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ClassesPropProvider } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { StyleProvider } from '../contexts/style-context';\nimport { StyleInheritanceProvider } from '../contexts/styles-inheritance-context';\nimport { CssClassSelector } from './css-classes/css-class-selector';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\nimport { BackgroundSection } from './style-sections/background-section/background-section';\nimport { BorderSection } from './style-sections/border-section/border-section';\nimport { EffectsSection } from './style-sections/effects-section/effects-section';\nimport { LayoutSection } from './style-sections/layout-section/layout-section';\nimport { PositionSection } from './style-sections/position-section/position-section';\nimport { SizeSection } from './style-sections/size-section/size-section';\nimport { SpacingSection } from './style-sections/spacing-section/spacing-section';\nimport { TypographySection } from './style-sections/typography-section/typography-section';\n\nexport const StyleTab = () => {\n\tconst currentClassesProp = useCurrentClassesProp();\n\tconst [ activeStyleDefId, setActiveStyleDefId ] = useActiveStyleDefId( currentClassesProp );\n\tconst [ activeStyleState, setActiveStyleState ] = useState< StyleDefinitionState | null >( null );\n\tconst breakpoint = useActiveBreakpoint();\n\n\treturn (\n\t\t<ClassesPropProvider prop={ currentClassesProp }>\n\t\t\t<StyleProvider\n\t\t\t\tmeta={ { breakpoint, state: activeStyleState } }\n\t\t\t\tid={ activeStyleDefId }\n\t\t\t\tsetId={ ( id: StyleDefinitionID | null ) => {\n\t\t\t\t\tsetActiveStyleDefId( id );\n\t\t\t\t\tsetActiveStyleState( null );\n\t\t\t\t} }\n\t\t\t\tsetMetaState={ setActiveStyleState }\n\t\t\t>\n\t\t\t\t<SessionStorageProvider prefix={ activeStyleDefId ?? '' }>\n\t\t\t\t\t<StyleInheritanceProvider>\n\t\t\t\t\t\t<CssClassSelector />\n\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t<SectionsList>\n\t\t\t\t\t\t\t<Section title={ __( 'Layout', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<LayoutSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Spacing', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<SpacingSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Size', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<SizeSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Position', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<PositionSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Typography', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<TypographySection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Background', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<BackgroundSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Border', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<BorderSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t\t<Section title={ __( 'Effects', 'elementor' ) }>\n\t\t\t\t\t\t\t\t<EffectsSection />\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t</SectionsList>\n\t\t\t\t\t</StyleInheritanceProvider>\n\t\t\t\t</SessionStorageProvider>\n\t\t\t</StyleProvider>\n\t\t</ClassesPropProvider>\n\t);\n};\n\nfunction useActiveStyleDefId( currentClassesProp: PropKey ) {\n\tconst [ activeStyledDefId, setActiveStyledDefId ] = useState< StyleDefinitionID | null >( null );\n\n\tconst fallback = useFirstElementStyleDef( currentClassesProp );\n\n\treturn [ activeStyledDefId || fallback?.id || null, setActiveStyledDefId ] as const;\n}\n\nfunction useFirstElementStyleDef( currentClassesProp: PropKey ) {\n\tconst { element } = useElement();\n\n\tconst classesIds = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\tconst stylesDefs = getElementStyles( element.id ) ?? {};\n\n\treturn Object.values( stylesDefs ).find( ( styleDef ) => classesIds.includes( styleDef.id ) );\n}\n\nfunction useCurrentClassesProp(): string {\n\tconst { elementType } = useElement();\n\n\tconst prop = Object.entries( elementType.propsSchema ).find(\n\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t);\n\n\tif ( ! prop ) {\n\t\tthrow new Error( 'Element does not have a classes prop' );\n\t}\n\n\treturn prop[ 0 ];\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { getWidgetsCache, useElementSetting } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { getBreakpointsTree } from '@elementor/editor-responsive';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { useStylesRerender } from '../hooks/use-styles-rerender';\nimport { createStylesInheritance } from '../styles-inheritance/create-styles-inheritance';\nimport { type SnapshotPropValue, type StylesInheritanceSnapshotGetter } from '../styles-inheritance/types';\nimport { useClassesProp } from './classes-prop-context';\nimport { useElement } from './element-context';\nimport { useStyle } from './style-context';\n\ntype ContextValue = {\n\tgetSnapshot: StylesInheritanceSnapshotGetter;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\nexport function StyleInheritanceProvider( { children }: PropsWithChildren ) {\n\tconst styleDefs = useAppliedStyles();\n\n\tconst breakpointsTree = getBreakpointsTree();\n\n\tconst getSnapshot = createStylesInheritance( styleDefs, breakpointsTree );\n\n\treturn <Context.Provider value={ { getSnapshot } }>{ children }</Context.Provider>;\n}\n\nexport function useStylesInheritanceFields< T extends readonly string[] >(\n\tfields: T\n): { [ K in T[ number ] ]: SnapshotPropValue[] } | null {\n\tconst context = useContext( Context );\n\tconst { meta } = useStyle();\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStylesInheritanceFields must be used within a StyleInheritanceProvider' );\n\t}\n\n\tif ( ! meta ) {\n\t\treturn null;\n\t}\n\n\tconst snapshot = context.getSnapshot( meta );\n\n\treturn fields.reduce(\n\t\t( acc, key: T[ number ] ) => ( { ...acc, [ key ]: snapshot?.[ key ] ?? [] } ),\n\t\t{} as { [ K in T[ number ] ]: SnapshotPropValue[] }\n\t);\n}\n\nexport function useStylesInheritanceField( field: string ): SnapshotPropValue[] {\n\treturn useStylesInheritanceFields( [ field ] )?.[ field ] ?? [];\n}\n\nconst useAppliedStyles = () => {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\tconst baseStyles = useBaseStyles();\n\n\tuseStylesRerender();\n\n\tconst classesProp = useElementSetting< ClassesPropValue >( element.id, currentClassesProp );\n\n\tconst appliedStyles = classesPropTypeUtil.extract( classesProp );\n\n\treturn stylesRepository\n\t\t.all()\n\t\t.filter( ( style ) => appliedStyles?.includes( style.id ) )\n\t\t.concat( baseStyles );\n};\n\nconst useBaseStyles = () => {\n\tconst { elementType } = useElement();\n\tconst widgetsCache = getWidgetsCache();\n\tconst widgetCache = widgetsCache?.[ elementType.key ];\n\n\treturn Object.values( widgetCache?.base_styles ?? {} );\n};\n","import { useEffect, useReducer } from 'react';\n\nimport { useStyle } from '../contexts/style-context';\n\nexport const useStylesRerender = () => {\n\tconst { provider } = useStyle();\n\tconst [ , reRender ] = useReducer( ( p ) => ! p, false );\n\n\tuseEffect( () => provider?.subscribe( reRender ), [ provider ] );\n};\n","import { type BreakpointId } from '@elementor/editor-responsive';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\n\nexport const DEFAULT_STATE = 'normal';\n\nconst DEFAULT_BREAKPOINT = 'desktop';\n\nexport const getStateKey = ( state: StyleDefinitionState ) => state ?? DEFAULT_STATE;\n\nexport const getBreakpointKey = ( breakpoint: BreakpointId | null ): BreakpointId => breakpoint ?? DEFAULT_BREAKPOINT;\n","import { type BreakpointId, type BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\n\nimport {\n\ttype BreakpointsInheritancePath,\n\ttype BreakpointsStatesSnapshotsMapping,\n\ttype BreakpointStatesSlotsMapping,\n\ttype SnapshotPropValue,\n\ttype StyleInheritanceMetaProps,\n\ttype StylesInheritanceSnapshot,\n\ttype StylesInheritanceSnapshotGetter,\n\ttype StylesInheritanceSnapshotsSlot,\n\ttype StyleVariantWithId,\n} from './types';\nimport { DEFAULT_STATE, getBreakpointKey, getStateKey } from './utils';\n\nexport function createSnapshotsManager(\n\tgetStylesByMeta: ( meta: StyleInheritanceMetaProps ) => StyleVariantWithId[],\n\tbreakpointsRoot: BreakpointNode\n): StylesInheritanceSnapshotGetter {\n\tconst breakpointsInheritancePaths = makeBreakpointsInheritancePaths( breakpointsRoot );\n\tconst allBreakpointStatesSnapshots: BreakpointsStatesSnapshotsMapping = {};\n\n\tconst buildMissingSnapshotsForBreakpoint = (\n\t\tcurrentBreakpointId: BreakpointId | null,\n\t\tparentBreakpoint: BreakpointStatesSlotsMapping | undefined,\n\t\tstate: StyleDefinitionState\n\t) => {\n\t\tconst currentBreakpointKey = getBreakpointKey( currentBreakpointId );\n\t\tconst stateKey = getStateKey( state );\n\n\t\tif ( ! allBreakpointStatesSnapshots[ currentBreakpointKey ] ) {\n\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ] = {\n\t\t\t\t[ DEFAULT_STATE ]: buildStateSnapshotSlot(\n\t\t\t\t\tgetStylesByMeta( { breakpoint: currentBreakpointId, state: null } ),\n\t\t\t\t\tparentBreakpoint,\n\t\t\t\t\t{},\n\t\t\t\t\tnull\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif ( state && ! allBreakpointStatesSnapshots[ currentBreakpointKey ][ stateKey ] ) {\n\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ][ stateKey ] = buildStateSnapshotSlot(\n\t\t\t\tgetStylesByMeta( { breakpoint: currentBreakpointId, state } ),\n\t\t\t\tparentBreakpoint,\n\t\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ],\n\t\t\t\tstate\n\t\t\t);\n\t\t}\n\t};\n\n\treturn ( meta: StyleInheritanceMetaProps ) => {\n\t\tconst { breakpoint, state } = meta;\n\n\t\tconst stateKey = getStateKey( state );\n\t\tconst breakpointKey = getBreakpointKey( breakpoint );\n\n\t\tif ( allBreakpointStatesSnapshots[ breakpointKey ]?.[ stateKey ] ) {\n\t\t\t// snapshot was already made for this breakpoint+state\n\t\t\treturn allBreakpointStatesSnapshots[ breakpointKey ][ stateKey ].snapshot;\n\t\t}\n\n\t\tconst breakpointsChain = [ ...breakpointsInheritancePaths[ breakpointKey ], breakpoint ];\n\n\t\tbreakpointsChain.forEach( ( breakpointId, index ) => {\n\t\t\tconst parentBreakpointId = index > 0 ? breakpointsChain[ index - 1 ] : null;\n\n\t\t\tbuildMissingSnapshotsForBreakpoint(\n\t\t\t\tbreakpointId,\n\t\t\t\tparentBreakpointId ? allBreakpointStatesSnapshots[ parentBreakpointId ] : undefined,\n\t\t\t\tstate\n\t\t\t);\n\t\t} );\n\n\t\treturn allBreakpointStatesSnapshots[ breakpointKey ]?.[ stateKey ]?.snapshot;\n\t};\n}\n\n/**\n * builds a mapping of each breakpoint to its inheritance chain, e.g. -\n * \tdesktop: [],\n * \ttablet: [ 'desktop' ],\n * \tmobile: [ 'desktop', 'tablet' ]\n * @param root\n */\nfunction makeBreakpointsInheritancePaths( root: BreakpointNode ): BreakpointsInheritancePath {\n\tconst breakpoints: Partial< BreakpointsInheritancePath > = {};\n\n\tconst traverse = ( node: BreakpointNode, parent?: BreakpointId[] ) => {\n\t\tconst { id, children } = node;\n\n\t\tbreakpoints[ id ] = parent ? [ ...parent ] : [];\n\n\t\tchildren?.forEach( ( child ) => {\n\t\t\ttraverse( child, [ ...( breakpoints[ id ] ?? [] ), id ] );\n\t\t} );\n\t};\n\n\ttraverse( root );\n\n\treturn breakpoints as BreakpointsInheritancePath;\n}\n\n// creates a snapshot slot for a specific breakpoint and state\nfunction buildStateSnapshotSlot(\n\tstyles: StyleVariantWithId[],\n\tparentBreakpoint: BreakpointStatesSlotsMapping | undefined,\n\tcurrentBreakpoint: BreakpointStatesSlotsMapping,\n\tstate: StyleDefinitionState\n): StylesInheritanceSnapshotsSlot {\n\tconst initialSlot = buildInitialSnapshotFromStyles( styles );\n\n\tif ( ! state ) {\n\t\treturn {\n\t\t\tsnapshot: mergeSnapshots( [ initialSlot.snapshot, parentBreakpoint?.[ DEFAULT_STATE ]?.snapshot ] ),\n\t\t\tstateSpecificSnapshot: undefined,\n\t\t};\n\t}\n\n\treturn {\n\t\tsnapshot: mergeSnapshots( [\n\t\t\tinitialSlot.snapshot,\n\t\t\tparentBreakpoint?.[ state ]?.stateSpecificSnapshot,\n\t\t\tcurrentBreakpoint[ DEFAULT_STATE ]?.snapshot,\n\t\t] ),\n\t\tstateSpecificSnapshot: mergeSnapshots( [\n\t\t\tinitialSlot.stateSpecificSnapshot,\n\t\t\tparentBreakpoint?.[ state ]?.stateSpecificSnapshot,\n\t\t] ),\n\t};\n}\n\n// creates an initial snapshot based on the passed style variants only\nfunction buildInitialSnapshotFromStyles( styles: StyleVariantWithId[] ): StylesInheritanceSnapshotsSlot {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tstyles.forEach( ( styleVariantWithId ) => {\n\t\tconst {\n\t\t\tstyleVariant: { props },\n\t\t} = styleVariantWithId;\n\n\t\tObject.entries( props ).forEach( ( [ key, value ] ) => {\n\t\t\tif ( ! snapshot[ key ] ) {\n\t\t\t\tsnapshot[ key ] = [];\n\t\t\t}\n\n\t\t\tconst snapshotPropValue: SnapshotPropValue = {\n\t\t\t\t...styleVariantWithId,\n\t\t\t\tvalue,\n\t\t\t};\n\n\t\t\tsnapshot[ key ].push( snapshotPropValue );\n\t\t} );\n\t} );\n\n\treturn {\n\t\tsnapshot,\n\t\tstateSpecificSnapshot: snapshot,\n\t};\n}\n\n// merge previous snapshot into the current one - first value of each prop is the strongest\nfunction mergeSnapshots( snapshots: ( StylesInheritanceSnapshot | undefined )[] ) {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tsnapshots.filter( Boolean ).forEach( ( currentSnapshot ) =>\n\t\tObject.entries( currentSnapshot as StylesInheritanceSnapshot ).forEach( ( [ key, values ] ) => {\n\t\t\tif ( ! snapshot[ key ] ) {\n\t\t\t\tsnapshot[ key ] = [];\n\t\t\t}\n\n\t\t\t// concatenate the previous snapshot's prop values to the current ones\n\t\t\tsnapshot[ key ] = snapshot[ key ].concat( values );\n\t\t} )\n\t);\n\n\treturn snapshot;\n}\n","import { type BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { createSnapshotsManager } from './create-snapshots-manager';\nimport { type BreakpointsStatesStyles, type StyleInheritanceMetaProps, type StylesInheritanceSnapshot } from './types';\nimport { getBreakpointKey, getStateKey } from './utils';\n\nexport function createStylesInheritance(\n\tstyleDefs: StyleDefinition[],\n\tbreakpointsRoot: BreakpointNode\n): ( meta: StyleInheritanceMetaProps ) => StylesInheritanceSnapshot | undefined {\n\tconst styleVariantsByMeta = buildStyleVariantsByMetaMapping( styleDefs );\n\n\tconst getStyles = ( { breakpoint, state }: StyleInheritanceMetaProps ) =>\n\t\tstyleVariantsByMeta?.[ getBreakpointKey( breakpoint ) ]?.[ getStateKey( state ) ] ?? [];\n\n\treturn createSnapshotsManager( getStyles, breakpointsRoot );\n}\n\nfunction buildStyleVariantsByMetaMapping( styleDefs: StyleDefinition[] ): BreakpointsStatesStyles {\n\tconst breakpointStateSlots: BreakpointsStatesStyles = {};\n\n\tstyleDefs.forEach( ( styleDef ) => {\n\t\t// iterate over each style definition's variants and place them in the corresponding breakpoint's base or state styles\n\t\tstyleDef.variants.forEach( ( styleVariant ) => {\n\t\t\tconst { meta } = styleVariant;\n\t\t\tconst { state, breakpoint } = meta;\n\n\t\t\tconst breakpointKey = getBreakpointKey( breakpoint );\n\t\t\tconst stateKey = getStateKey( state );\n\n\t\t\tif ( ! breakpointStateSlots[ breakpointKey ] ) {\n\t\t\t\tbreakpointStateSlots[ breakpointKey ] = {};\n\t\t\t}\n\n\t\t\tconst breakpointNode = breakpointStateSlots[ breakpointKey ];\n\n\t\t\tif ( ! breakpointNode[ stateKey ] ) {\n\t\t\t\tbreakpointNode[ stateKey ] = [];\n\t\t\t}\n\n\t\t\tbreakpointNode[ stateKey ].push( {\n\t\t\t\tstyleId: styleDef.id,\n\t\t\t\tstyleVariant,\n\t\t\t} );\n\t\t} );\n\t} );\n\n\treturn breakpointStateSlots;\n}\n","import * as React from 'react';\nimport { BackgroundControl } from '@elementor/editor-controls';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const BackgroundSection = () => {\n\treturn (\n\t\t<StylesField bind=\"background\">\n\t\t\t<BackgroundControl />\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlAdornmentsProvider, PropKeyProvider, PropProvider } from '@elementor/editor-controls';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nimport { useStylesField } from '../hooks/use-styles-field';\nimport { StylesInheritanceIndicator } from '../styles-inheritance/styles-inheritance-indicator';\nimport { createTopLevelOjectType } from './create-top-level-object-type';\n\nexport type StylesFieldProps = {\n\tbind: PropKey;\n\tchildren: React.ReactNode;\n};\n\nexport const StylesField = ( { bind, children }: StylesFieldProps ) => {\n\tconst [ value, setValue ] = useStylesField( bind );\n\n\tconst stylesSchema = getStylesSchema();\n\n\tconst propType = createTopLevelOjectType( { schema: stylesSchema } );\n\n\tconst values = { [ bind ]: value };\n\n\tconst setValues = ( newValue: Record< string, PropValue > ) => {\n\t\tsetValue( newValue[ bind ] );\n\t};\n\n\treturn (\n\t\t<ControlAdornmentsProvider\n\t\t\titems={ [\n\t\t\t\t{\n\t\t\t\t\tid: 'styles-inheritance',\n\t\t\t\t\tAdornment: StylesInheritanceIndicator,\n\t\t\t\t},\n\t\t\t] }\n\t\t>\n\t\t\t<PropProvider propType={ propType } value={ values } setValue={ setValues }>\n\t\t\t\t<PropKeyProvider bind={ bind }>{ children }</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</ControlAdornmentsProvider>\n\t);\n};\n","import { useMemo } from 'react';\nimport {\n\tcreateElementStyle,\n\ttype CreateElementStyleArgs,\n\tdeleteElementStyle,\n\ttype ElementID,\n\tgetElementLabel,\n} from '@elementor/editor-elements';\nimport type { Props } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\nimport { type StylesProvider } from '@elementor/editor-styles-repository';\nimport { LOCAL_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { StyleNotFoundUnderProviderError, StylesProviderCannotUpdatePropsError } from '../errors';\nimport { useStylesRerender } from './use-styles-rerender';\n\nexport function useStylesFields< T extends Props >( propNames: ( keyof T & string )[] ) {\n\tconst { element } = useElement();\n\tconst { id, meta, provider } = useStyle();\n\tconst classesProp = useClassesProp();\n\n\tconst undoableUpdateStyle = useUndoableUpdateStyle();\n\tconst undoableCreateElementStyle = useUndoableCreateElementStyle();\n\n\tuseStylesRerender();\n\n\tconst value = getProps< T >( {\n\t\telementId: element.id,\n\t\tstyleId: id,\n\t\tprovider,\n\t\tmeta,\n\t\tpropNames,\n\t} );\n\n\tconst setValue = ( props: T ) => {\n\t\tif ( id === null ) {\n\t\t\tundoableCreateElementStyle( {\n\t\t\t\telementId: element.id,\n\t\t\t\tclassesProp,\n\t\t\t\tmeta,\n\t\t\t\tprops,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tundoableUpdateStyle( {\n\t\t\telementId: element.id,\n\t\t\tstyleId: id,\n\t\t\tprovider,\n\t\t\tmeta,\n\t\t\tprops,\n\t\t} );\n\t};\n\n\treturn [ value, setValue ] as const;\n}\n\ntype GetPropsArgs = {\n\tprovider: StylesProvider | null;\n\tstyleId: StyleDefinition[ 'id' ] | null;\n\telementId: ElementID;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tpropNames: string[];\n};\n\ntype NullableValues< T extends Props > = {\n\t[ K in keyof T ]: T[ K ] | null;\n};\n\nfunction getProps< T extends Props >( { styleId, elementId, provider, meta, propNames }: GetPropsArgs ) {\n\tif ( ! provider || ! styleId ) {\n\t\treturn null;\n\t}\n\n\tconst style = provider.actions.getById?.( styleId, { elementId } );\n\n\tif ( ! style ) {\n\t\tthrow new StyleNotFoundUnderProviderError( { context: { styleId, providerKey: provider.key } } );\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\treturn Object.fromEntries(\n\t\tpropNames.map( ( key ) => [ key, variant?.props[ key ] ?? null ] )\n\t) as NullableValues< T >;\n}\n\ntype UndoableCreateElementStyleArgs = Omit< CreateElementStyleArgs, 'label' >;\n\nfunction useUndoableCreateElementStyle() {\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( payload: UndoableCreateElementStyleArgs ) => {\n\t\t\t\t\treturn createElementStyle( {\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t} );\n\t\t\t\t},\n\n\t\t\t\tundo: ( { elementId }, styleId ) => {\n\t\t\t\t\tdeleteElementStyle( elementId, styleId );\n\t\t\t\t},\n\n\t\t\t\tredo: ( payload, styleId ) => {\n\t\t\t\t\treturn createElementStyle( {\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: ( { elementId } ) => getElementLabel( elementId ),\n\t\t\t\tsubtitle: __( 'Style edited', 'elementor' ),\n\t\t\t}\n\t\t);\n\t}, [] );\n}\n\ntype UndoableUpdateStyleArgs = {\n\telementId: ElementID;\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tprops: Props;\n};\n\nfunction useUndoableUpdateStyle() {\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( { elementId, styleId, provider, meta, props }: UndoableUpdateStyleArgs ) => {\n\t\t\t\t\tif ( ! provider.actions.updateProps ) {\n\t\t\t\t\t\tthrow new StylesProviderCannotUpdatePropsError( {\n\t\t\t\t\t\t\tcontext: { providerKey: provider.key },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst style = provider.actions.getById( styleId, { elementId } );\n\n\t\t\t\t\tconst prevProps = getCurrentProps( style, meta );\n\n\t\t\t\t\tprovider.actions.updateProps(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: styleId,\n\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ elementId }\n\t\t\t\t\t);\n\n\t\t\t\t\treturn prevProps;\n\t\t\t\t},\n\n\t\t\t\tundo: ( { elementId, styleId, meta, provider }, prevProps ) => {\n\t\t\t\t\tprovider.actions.updateProps?.( { id: styleId, meta, props: prevProps }, { elementId } );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: ( { elementId } ) => getElementLabel( elementId ),\n\t\t\t\tsubtitle: __( 'Style edited', 'elementor' ),\n\t\t\t}\n\t\t);\n\t}, [] );\n}\n\nfunction getCurrentProps( style: StyleDefinition | null, meta: StyleDefinitionVariant[ 'meta' ] ) {\n\tif ( ! style ) {\n\t\treturn {};\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\tconst props = variant?.props ?? {};\n\n\treturn structuredClone( props );\n}\n","import type { PropKey, PropValue } from '@elementor/editor-props';\n\nimport { useStylesFields } from './use-styles-fields';\n\nexport function useStylesField< T extends PropValue >( propName: PropKey ): [ T | null, ( newValue: T ) => void ] {\n\tconst [ values, setValues ] = useStylesFields< { [ k: typeof propName ]: T } >( [ propName ] );\n\n\tconst value = values?.[ propName ] ?? null;\n\n\tconst setValue = ( newValue: T ) => {\n\t\tsetValues( {\n\t\t\t[ propName ]: newValue,\n\t\t} );\n\t};\n\n\treturn [ value, setValue ];\n}\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { ELEMENTS_STYLES_PROVIDER_KEY } from '@elementor/editor-styles-repository';\nimport { styled } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../contexts/style-context';\nimport { useStylesInheritanceField } from '../contexts/styles-inheritance-context';\n\nconst Circle = styled( 'div', {\n\tshouldForwardProp: ( prop ) => prop !== 'variant',\n} )< { variant?: 'overridden' | 'local-affects' | 'global-affects' } >`\n\twidth: 5px;\n\theight: 5px;\n\tborder-radius: 50%;\n\tbackground-color: ${ ( { theme, variant } ) => {\n\t\tswitch ( variant ) {\n\t\t\tcase 'overridden':\n\t\t\t\treturn theme.palette.warning.light;\n\t\t\tcase 'global-affects':\n\t\t\t\treturn theme.palette.global.dark;\n\t\t\tcase 'local-affects':\n\t\t\t\treturn theme.palette.primary.main;\n\t\t\tdefault:\n\t\t\t\treturn theme.palette.text.disabled;\n\t\t}\n\t} };\n`;\n\nexport const StylesInheritanceIndicator = () => {\n\tconst { value, path } = useBoundProp();\n\tconst { id: currentStyleId, provider: currentStyleProvider, meta: currentStyleMeta } = useStyle();\n\n\t// in the styles inheritance snapshot the keys are only those of the top level style schema attributes\n\tconst [ bind ] = path;\n\tconst inheritanceChain = useStylesInheritanceField( bind );\n\n\tif ( ! inheritanceChain.length ) {\n\t\treturn null;\n\t}\n\n\tconst [ { styleId, styleVariant } ] = inheritanceChain;\n\n\tconst { breakpoint, state } = styleVariant.meta;\n\n\tif (\n\t\tstyleId === currentStyleId &&\n\t\tbreakpoint === currentStyleMeta.breakpoint &&\n\t\tstate === currentStyleMeta.state\n\t) {\n\t\treturn (\n\t\t\t<Circle\n\t\t\t\taria-label={ __( 'This is the final value', 'elementor' ) }\n\t\t\t\tvariant={\n\t\t\t\t\tcurrentStyleProvider?.key === ELEMENTS_STYLES_PROVIDER_KEY ? 'local-affects' : 'global-affects'\n\t\t\t\t}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( value !== null && value !== undefined ) {\n\t\treturn (\n\t\t\t<Circle\n\t\t\t\taria-label={ __( 'This value is overridden by another style', 'elementor' ) }\n\t\t\t\tvariant=\"overridden\"\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn <Circle aria-label={ __( 'This has value from another style', 'elementor' ) } />;\n};\n","import * as React from 'react';\n\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { BorderField } from './border-field';\nimport { BorderRadiusField } from './border-radius-field';\n\nexport const BorderSection = () => (\n\t<SectionContent>\n\t\t<BorderRadiusField />\n\t\t<PanelDivider />\n\t\t<BorderField />\n\t</SectionContent>\n);\n","import * as React from 'react';\nimport { Divider } from '@elementor/ui';\n\nexport const PanelDivider = () => <Divider sx={ { my: 0.5 } } />;\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\ntype SectionContentProps = PropsWithChildren< {\n\tgap?: number;\n\tsx?: {\n\t\tpt?: number;\n\t};\n} >;\n\nexport const SectionContent: FC< SectionContentProps > = ( { gap = 2, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesFields } from '../../../hooks/use-styles-fields';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\nimport { BorderColorField } from './border-color-field';\nimport { BorderStyleField } from './border-style-field';\nimport { BorderWidthField } from './border-width-field';\n\nconst initialBorder = {\n\t'border-width': { $$type: 'size', value: { size: 1, unit: 'px' } },\n\t'border-color': { $$type: 'color', value: '#000000' },\n\t'border-style': { $$type: 'string', value: 'solid' },\n};\n\nexport const BorderField = () => {\n\tconst [ border, setBorder ] = useStylesFields( Object.keys( initialBorder ) );\n\n\tconst addBorder = () => {\n\t\tsetBorder( initialBorder );\n\t};\n\n\tconst removeBorder = () => {\n\t\tsetBorder( {\n\t\t\t'border-width': null,\n\t\t\t'border-color': null,\n\t\t\t'border-style': null,\n\t\t} );\n\t};\n\n\tconst hasBorder = Object.values( border ?? {} ).some( Boolean );\n\n\treturn (\n\t\t<AddOrRemoveContent\n\t\t\tlabel={ __( 'Border', 'elementor' ) }\n\t\t\tisAdded={ hasBorder }\n\t\t\tonAdd={ addBorder }\n\t\t\tonRemove={ removeBorder }\n\t\t>\n\t\t\t<BorderWidthField />\n\t\t\t<BorderColorField />\n\t\t\t<BorderStyleField />\n\t\t</AddOrRemoveContent>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\n\nimport { ControlLabel } from './control-label';\nimport { SectionContent } from './section-content';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tlabel: string;\n\tisAdded: boolean;\n\tonAdd: () => void;\n\tonRemove: () => void;\n};\n\nexport const AddOrRemoveContent = ( { isAdded, label, onAdd, onRemove, children }: PropsWithChildren< Props > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tsx={ {\n\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t{ isAdded ? (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onRemove } aria-label=\"Remove\">\n\t\t\t\t\t\t<MinusIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) : (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onAdd } aria-label=\"Add\">\n\t\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t\t<Collapse in={ isAdded } unmountOnExit>\n\t\t\t\t<SectionContent>{ children }</SectionContent>\n\t\t\t</Collapse>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { ControlAdornments, ControlFormLabel } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\n\nexport const ControlLabel = ( { children }: PropsWithChildren< object > ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 1 }>\n\t\t\t<ControlFormLabel>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { ColorControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nexport const BorderColorField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-color' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Border color', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nconst borderStyles = [\n\t{ value: 'none', label: __( 'None', 'elementor' ) },\n\t{ value: 'solid', label: __( 'Solid', 'elementor' ) },\n\t{ value: 'dashed', label: __( 'Dashed', 'elementor' ) },\n\t{ value: 'dotted', label: __( 'Dotted', 'elementor' ) },\n\t{ value: 'double', label: __( 'Double', 'elementor' ) },\n\t{ value: 'groove', label: __( 'Groove', 'elementor' ) },\n\t{ value: 'ridge', label: __( 'Ridge', 'elementor' ) },\n\t{ value: 'inset', label: __( 'Inset', 'elementor' ) },\n\t{ value: 'outset', label: __( 'Outset', 'elementor' ) },\n];\nexport const BorderStyleField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-style' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Border type', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t<SelectControl options={ borderStyles } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderWidthPropTypeUtil } from '@elementor/editor-props';\nimport { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\nconst InlineStartIcon = withDirection( SideRightIcon );\nconst InlineEndIcon = withDirection( SideLeftIcon );\n\nconst getEdges = ( isSiteRtl: boolean ): EqualUnequalItems => [\n\t{\n\t\tlabel: __( 'Top', 'elementor' ),\n\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\tbind: 'block-start',\n\t},\n\t{\n\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\ticon: <RotatedIcon icon={ InlineStartIcon } size=\"tiny\" />,\n\t\tbind: 'inline-end',\n\t},\n\t{\n\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\tbind: 'block-end',\n\t},\n\t{\n\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\ticon: <RotatedIcon icon={ InlineEndIcon } size=\"tiny\" />,\n\t\tbind: 'inline-start',\n\t},\n];\n\nexport const BorderWidthField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<StylesField bind={ 'border-width' }>\n\t\t\t<EqualUnequalSizesControl\n\t\t\t\titems={ getEdges( isSiteRtl ) }\n\t\t\t\tlabel={ __( 'Border width', 'elementor' ) }\n\t\t\t\ticon={ <SideAllIcon fontSize={ 'tiny' } /> }\n\t\t\t\ttooltipLabel={ __( 'Adjust borders', 'elementor' ) }\n\t\t\t\tmultiSizePropTypeUtil={ borderWidthPropTypeUtil }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import { useTheme } from '@elementor/ui';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useDirection() {\n\tconst theme = useTheme(),\n\t\textendedWindow: ExtendedWindow = window;\n\n\tconst isUiRtl = 'rtl' === theme.direction,\n\t\tisSiteRtl = !! extendedWindow.elementorFrontend?.config?.is_rtl;\n\n\treturn { isSiteRtl, isUiRtl };\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps, useTheme } from '@elementor/ui';\n\nimport { useStylesField } from '../../../../hooks/use-styles-field';\nimport type { FlexDirection } from '../flex-direction-field';\n\ntype Props = {\n\ticon: React.JSX.ElementType;\n\tsize: ToggleButtonProps[ 'size' ];\n\tisClockwise?: boolean;\n\toffset?: number;\n\tdisableRotationForReversed?: boolean;\n};\n\nconst CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: 90,\n\t'row-reverse': 180,\n\t'column-reverse': 270,\n};\n\nconst COUNTER_CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: -90,\n\t'row-reverse': -180,\n\t'column-reverse': -270,\n};\n\nexport const RotatedIcon = ( {\n\ticon: Icon,\n\tsize,\n\tisClockwise = true,\n\toffset = 0,\n\tdisableRotationForReversed = false,\n}: Props ) => {\n\tconst rotate = useRef( useGetTargetAngle( isClockwise, offset, disableRotationForReversed ) );\n\t// eslint-disable-next-line react-compiler/react-compiler\n\trotate.current = useGetTargetAngle( isClockwise, offset, disableRotationForReversed, rotate );\n\n\t// eslint-disable-next-line react-compiler/react-compiler\n\treturn <Icon fontSize={ size } sx={ { transition: '.3s', rotate: `${ rotate.current }deg` } } />;\n};\n\nconst useGetTargetAngle = (\n\tisClockwise: boolean,\n\toffset: number,\n\tdisableRotationForReversed: boolean,\n\texistingRef?: React.MutableRefObject< number >\n) => {\n\tconst [ direction ] = useStylesField< StringPropValue >( 'flex-direction' );\n\tconst isRtl = 'rtl' === useTheme().direction;\n\tconst rotationMultiplier = isRtl ? -1 : 1;\n\tconst angleMap = isClockwise ? CLOCKWISE_ANGLES : COUNTER_CLOCKWISE_ANGLES;\n\n\tconst currentDirection = ( direction?.value as FlexDirection ) || 'row';\n\tconst currentAngle = existingRef ? existingRef.current * rotationMultiplier : angleMap[ currentDirection ] + offset;\n\tconst targetAngle = angleMap[ currentDirection ] + offset;\n\n\tconst diffToTargetAngle = ( targetAngle - currentAngle + 360 ) % 360;\n\tconst formattedDiff = ( ( diffToTargetAngle + 180 ) % 360 ) - 180;\n\n\tif ( disableRotationForReversed && [ 'row-reverse', 'column-reverse' ].includes( currentDirection ) ) {\n\t\treturn 0;\n\t}\n\n\treturn ( currentAngle + formattedDiff ) * rotationMultiplier;\n};\n","import * as React from 'react';\nimport { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderRadiusPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tBorderCornersIcon,\n\tRadiusBottomLeftIcon,\n\tRadiusBottomRightIcon,\n\tRadiusTopLeftIcon,\n\tRadiusTopRightIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\nconst StartStartIcon = withDirection( RadiusTopLeftIcon );\nconst StartEndIcon = withDirection( RadiusTopRightIcon );\nconst EndStartIcon = withDirection( RadiusBottomLeftIcon );\nconst EndEndIcon = withDirection( RadiusBottomRightIcon );\n\nconst getStartStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Top right', 'elementor' ) : __( 'Top left', 'elementor' );\nconst getStartEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Top left', 'elementor' ) : __( 'Top right', 'elementor' );\nconst getEndStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Bottom right', 'elementor' ) : __( 'Bottom left', 'elementor' );\nconst getEndEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Bottom left', 'elementor' ) : __( 'Bottom right', 'elementor' );\n\nconst getCorners = ( isSiteRtl: boolean ): EqualUnequalItems => [\n\t{\n\t\tlabel: getStartStartLabel( isSiteRtl ),\n\t\ticon: <RotatedIcon icon={ StartStartIcon } size=\"tiny\" />,\n\t\tbind: 'start-start',\n\t},\n\t{\n\t\tlabel: getStartEndLabel( isSiteRtl ),\n\t\ticon: <RotatedIcon icon={ StartEndIcon } size=\"tiny\" />,\n\t\tbind: 'start-end',\n\t},\n\t{\n\t\tlabel: getEndStartLabel( isSiteRtl ),\n\t\ticon: <RotatedIcon icon={ EndStartIcon } size=\"tiny\" />,\n\t\tbind: 'end-start',\n\t},\n\t{\n\t\tlabel: getEndEndLabel( isSiteRtl ),\n\t\ticon: <RotatedIcon icon={ EndEndIcon } size=\"tiny\" />,\n\t\tbind: 'end-end',\n\t},\n];\n\nexport const BorderRadiusField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<StylesField bind={ 'border-radius' }>\n\t\t\t<EqualUnequalSizesControl\n\t\t\t\titems={ getCorners( isSiteRtl ) }\n\t\t\t\tlabel={ __( 'Border radius', 'elementor' ) }\n\t\t\t\ticon={ <BorderCornersIcon fontSize={ 'tiny' } /> }\n\t\t\t\ttooltipLabel={ __( 'Adjust corners', 'elementor' ) }\n\t\t\t\tmultiSizePropTypeUtil={ borderRadiusPropTypeUtil }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { BoxShadowRepeaterControl } from '@elementor/editor-controls';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SectionContent } from '../../section-content';\n\nexport const EffectsSection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<StylesField bind=\"box-shadow\">\n\t\t\t\t<BoxShadowRepeaterControl />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { ControlFormLabel } from '@elementor/editor-controls';\nimport { useParentElement } from '@elementor/editor-elements';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../../contexts/element-context';\nimport { useComputedStyle } from '../../../hooks/use-computed-style';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { AlignContentField } from './align-content-field';\nimport { AlignItemsField } from './align-items-field';\nimport { AlignSelfChild } from './align-self-child-field';\nimport { DisplayField } from './display-field';\nimport { FlexDirectionField } from './flex-direction-field';\nimport { FlexOrderField } from './flex-order-field';\nimport { FlexSizeField } from './flex-size-field';\nimport { GapControlField } from './gap-control-field';\nimport { JustifyContentField } from './justify-content-field';\nimport { WrapField } from './wrap-field';\n\nexport const LayoutSection = () => {\n\tconst [ display ] = useStylesField< StringPropValue >( 'display' );\n\tconst { element } = useElement();\n\tconst parent = useParentElement( element.id );\n\tconst parentStyle = useComputedStyle( parent?.id || null );\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<DisplayField />\n\t\t\t{ ( 'flex' === display?.value || 'inline-flex' === display?.value ) && <FlexFields /> }\n\t\t\t{ 'flex' === parentStyle?.display && <FlexChildFields /> }\n\t\t</SectionContent>\n\t);\n};\n\nconst FlexFields = () => {\n\tconst [ flexWrap ] = useStylesField< StringPropValue >( 'flex-wrap' );\n\n\treturn (\n\t\t<>\n\t\t\t<FlexDirectionField />\n\t\t\t<JustifyContentField />\n\t\t\t<AlignItemsField />\n\t\t\t<PanelDivider />\n\t\t\t<GapControlField />\n\t\t\t<WrapField />\n\t\t\t{ [ 'wrap', 'wrap-reverse' ].includes( flexWrap?.value as string ) && <AlignContentField /> }\n\t\t</>\n\t);\n};\n\nconst FlexChildFields = () => (\n\t<>\n\t\t<PanelDivider />\n\t\t<ControlFormLabel>{ __( 'Flex child', 'elementor' ) }</ControlFormLabel>\n\t\t<AlignSelfChild />\n\t\t<FlexOrderField />\n\t\t<FlexSizeField />\n\t</>\n);\n","import { __privateUseListenTo as useListenTo, commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useComputedStyle( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[\n\t\t\twindowEvent( 'elementor/device-mode/change' ),\n\t\t\tcommandEndEvent( 'document/elements/reset-style' ),\n\t\t\tcommandEndEvent( 'document/elements/settings' ),\n\t\t\tcommandEndEvent( 'document/elements/paste-style' ),\n\t\t],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst extendedWindow: ExtendedWindow = window;\n\t\t\tconst element = extendedWindow.elementor?.getContainer?.( elementId );\n\n\t\t\tif ( ! element?.view?.el ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst resp = window.getComputedStyle( element.view.el );\n\t\t\treturn resp;\n\t\t}\n\t);\n}\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Stack, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { ControlLabel } from '../../control-label';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 0,\n\tdisableRotationForReversed: true,\n};\n\nconst options: ToggleButtonGroupItem< AlignContent >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignContentField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"align-content\">\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Align content', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t\t\t</Stack>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { ControlLabel } from '../../control-label';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignItems = 'start' | 'center' | 'end' | 'stretch';\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 90,\n};\n\nconst options: ToggleButtonGroupItem< AlignItems >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ JustifyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignItemsField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"align-items\">\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Align items', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { ControlLabel } from '../../control-label';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignItems = 'start' | 'center' | 'end' | 'stretch';\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 90,\n};\n\nconst options: ToggleButtonGroupItem< AlignItems >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ JustifyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignSelfChild = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind={ 'align-self' }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Align self', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\ntype Displays = 'block' | 'flex' | 'inline-block' | 'inline-flex';\n\nexport const DisplayField = () => {\n\tconst options: ToggleButtonGroupItem< Displays >[] = [\n\t\t{\n\t\t\tvalue: 'block',\n\t\t\trenderContent: () => __( 'Block', 'elementor' ),\n\t\t\tlabel: __( 'Block', 'elementor' ),\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'flex',\n\t\t\trenderContent: () => __( 'Flex', 'elementor' ),\n\t\t\tlabel: __( 'Flex', 'elementor' ),\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'inline-block',\n\t\t\trenderContent: () => __( 'In-blk', 'elementor' ),\n\t\t\tlabel: __( 'Inline-block', 'elementor' ),\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'inline-flex',\n\t\t\trenderContent: () => __( 'In-flx', 'elementor' ),\n\t\t\tlabel: __( 'Inline-flex', 'elementor' ),\n\t\t\tshowTooltip: true,\n\t\t},\n\t];\n\n\treturn (\n\t\t<StylesField bind=\"display\">\n\t\t\t<Stack gap={ 0.75 }>\n\t\t\t\t<ControlLabel>{ __( 'Display', 'elementor' ) }</ControlLabel>\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</Stack>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { ControlLabel } from '../../control-label';\n\nexport type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\nconst options: ToggleButtonGroupItem< FlexDirection >[] = [\n\t{\n\t\tvalue: 'row',\n\t\tlabel: __( 'Row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst StartIcon = withDirection( ArrowRightIcon );\n\t\t\treturn <StartIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column',\n\t\tlabel: __( 'Column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'row-reverse',\n\t\tlabel: __( 'Reversed row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst EndIcon = withDirection( ArrowLeftIcon );\n\t\t\treturn <EndIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column-reverse',\n\t\tlabel: __( 'Reversed column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexDirectionField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"flex-direction\">\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Direction', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { ControlToggleButtonGroup, NumberControl, type ToggleButtonGroupItem } from '@elementor/editor-controls';\nimport { type NumberPropValue } from '@elementor/editor-props';\nimport { ArrowDownSmallIcon, ArrowUpSmallIcon, PencilIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { SectionContent } from '../../section-content';\n\ntype GroupControlItemOption = 'first' | 'last' | 'custom';\n\nexport const FIRST_DEFAULT_VALUE = -99999;\nexport const LAST_DEFAULT_VALUE = 99999;\nconst FIRST = 'first';\nconst LAST = 'last';\nconst CUSTOM = 'custom';\n\nconst orderValueMap = {\n\t[ FIRST ]: FIRST_DEFAULT_VALUE,\n\t[ LAST ]: LAST_DEFAULT_VALUE,\n};\n\nconst items: ToggleButtonGroupItem< GroupControlItemOption >[] = [\n\t{\n\t\tvalue: FIRST,\n\t\tlabel: __( 'First', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: LAST,\n\t\tlabel: __( 'Last', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: CUSTOM,\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexOrderField = () => {\n\tconst { isSiteRtl } = useDirection(),\n\t\t[ order, setOrder ] = useStylesField< NumberPropValue | null >( 'order' );\n\n\tconst [ groupControlValue, setGroupControlValue ] = useState( getGroupControlValue( order?.value || null ) );\n\n\tconst handleToggleButtonChange = ( group: GroupControlItemOption | null ) => {\n\t\tsetGroupControlValue( group );\n\n\t\tif ( ! group || group === CUSTOM ) {\n\t\t\tsetOrder( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetOrder( { $$type: 'number', value: orderValueMap[ group ] } );\n\t};\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind={ 'order' }>\n\t\t\t\t\t<SectionContent>\n\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<ControlLabel>{ __( 'Order', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\t\t\titems={ items }\n\t\t\t\t\t\t\t\t\tvalue={ groupControlValue }\n\t\t\t\t\t\t\t\t\tonChange={ handleToggleButtonChange }\n\t\t\t\t\t\t\t\t\texclusive={ true }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\n\t\t\t\t\t\t{ CUSTOM === groupControlValue && (\n\t\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t\t<ControlLabel>{ __( 'Custom order', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\t\t\tmin={ FIRST_DEFAULT_VALUE + 1 }\n\t\t\t\t\t\t\t\t\t\tmax={ LAST_DEFAULT_VALUE - 1 }\n\t\t\t\t\t\t\t\t\t\tshouldForceInt={ true }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</SectionContent>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n\nconst getGroupControlValue = ( order: number | null ): GroupControlItemOption | null => {\n\tif ( LAST_DEFAULT_VALUE === order ) {\n\t\treturn LAST;\n\t}\n\n\tif ( FIRST_DEFAULT_VALUE === order ) {\n\t\treturn FIRST;\n\t}\n\n\treturn 0 === order || order ? CUSTOM : null;\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport {\n\tControlToggleButtonGroup,\n\tNumberControl,\n\tSizeControl,\n\ttype ToggleButtonGroupItem,\n} from '@elementor/editor-controls';\nimport type { NumberPropValue, SizePropValue } from '@elementor/editor-props';\nimport { ExpandIcon, PencilIcon, ShrinkIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { SectionContent } from '../../section-content';\n\ntype GroupItem = 'flex-grow' | 'flex-shrink' | 'custom';\n\nconst DEFAULT = 1;\n\nconst items: ToggleButtonGroupItem< GroupItem >[] = [\n\t{\n\t\tvalue: 'flex-grow',\n\t\tlabel: __( 'Grow', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ExpandIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex-shrink',\n\t\tlabel: __( 'Shrink', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ShrinkIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'custom',\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexSizeField = () => {\n\tconst { isSiteRtl } = useDirection(),\n\t\t[ growField, setGrowField ] = useStylesField< NumberPropValue | null >( 'flex-grow' ),\n\t\t[ shrinkField, setShrinkField ] = useStylesField< NumberPropValue | null >( 'flex-shrink' ),\n\t\t[ basisField, setBasisField ] = useStylesField< SizePropValue | null >( 'flex-basis' );\n\n\tconst grow = growField?.value || null,\n\t\tshrink = shrinkField?.value || null,\n\t\tbasis = basisField?.value || null;\n\n\tconst currentGroup = useMemo( () => getActiveGroup( { grow, shrink, basis } ), [ grow, shrink, basis ] ),\n\t\t[ activeGroup, setActiveGroup ] = useState( currentGroup );\n\n\tconst onChangeGroup = ( group: GroupItem | null = null ) => {\n\t\tsetActiveGroup( group );\n\t\tsetBasisField( null );\n\n\t\tif ( ! group || group === 'custom' ) {\n\t\t\tsetGrowField( null );\n\t\t\tsetShrinkField( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( group === 'flex-grow' ) {\n\t\t\tsetGrowField( { $$type: 'number', value: DEFAULT } );\n\t\t\tsetShrinkField( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetGrowField( null );\n\t\tsetShrinkField( { $$type: 'number', value: DEFAULT } );\n\t};\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<SectionContent>\n\t\t\t\t\t<Typography fontSize=\"large\">{ activeGroup }</Typography>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<StylesField bind={ activeGroup ?? '' }>\n\t\t\t\t\t\t\t\t<ControlLabel>{ __( 'Size', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t\t</StylesField>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\t\tvalue={ activeGroup }\n\t\t\t\t\t\t\t\tonChange={ onChangeGroup }\n\t\t\t\t\t\t\t\titems={ items }\n\t\t\t\t\t\t\t\texclusive={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t{ 'custom' === activeGroup && <FlexCustomField /> }\n\t\t\t\t</SectionContent>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n\nconst FlexCustomField = () => (\n\t<>\n\t\t<StylesField bind={ 'flex-grow' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Grow', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t\t<StylesField bind={ 'flex-shrink' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Shrink', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t\t<StylesField bind={ 'flex-basis' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Basis', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t<SizeControl extendedValues={ [ 'auto' ] } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t</>\n);\n\nconst getActiveGroup = ( {\n\tgrow,\n\tshrink,\n\tbasis,\n}: {\n\tgrow: NumberPropValue[ 'value' ] | null;\n\tshrink: NumberPropValue[ 'value' ] | null;\n\tbasis: SizePropValue[ 'value' ] | null;\n} ): GroupItem | null => {\n\tif ( null === grow && null === shrink && ! basis ) {\n\t\treturn null;\n\t}\n\n\tif ( ( shrink && grow ) || basis ) {\n\t\treturn 'custom';\n\t}\n\n\tif ( grow === DEFAULT ) {\n\t\treturn 'flex-grow';\n\t}\n\n\tif ( shrink === DEFAULT ) {\n\t\treturn 'flex-shrink';\n\t}\n\n\treturn 'custom';\n};\n","import * as React from 'react';\nimport { GapControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const GapControlField = () => {\n\treturn (\n\t\t<Stack gap={ 1 }>\n\t\t\t<StylesField bind={ 'gap' }>\n\t\t\t\t<GapControl label={ __( 'Gaps', 'elementor' ) } />\n\t\t\t</StylesField>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Stack, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { ControlLabel } from '../../control-label';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype JustifyContent = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: true,\n\toffset: -90,\n};\n\nconst options: ToggleButtonGroupItem< JustifyContent >[] = [\n\t{\n\t\tvalue: 'flex-start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex-end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const JustifyContentField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"justify-content\">\n\t\t\t\t\t<Stack gap={ 0.75 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Justify content', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t\t\t</Stack>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowBackIcon, ArrowForwardIcon, ArrowRightIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { ControlLabel } from '../../control-label';\n\ntype FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\nconst options: ToggleButtonGroupItem< FlexWrap >[] = [\n\t{\n\t\tvalue: 'nowrap',\n\t\tlabel: __( 'No wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowRightIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap',\n\t\tlabel: __( 'Wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBackIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap-reverse',\n\t\tlabel: __( 'Reversed wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowForwardIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const WrapField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind={ 'flex-wrap' }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Wrap', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { useSessionStorage } from '@elementor/session';\n\nimport { useStyle } from '../../../contexts/style-context';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { useStylesFields } from '../../../hooks/use-styles-fields';\nimport { SectionContent } from '../../section-content';\nimport { DimensionsField } from './dimensions-field';\nimport { PositionField } from './position-field';\nimport { ZIndexField } from './z-index-field';\n\ntype DimensionValue =\n\t| {\n\t\t\t$$type: 'size';\n\t\t\tvalue: number;\n\t }\n\t| undefined\n\t| null;\n\ntype DimensionsValues = {\n\t'inset-block-start': DimensionValue;\n\t'inset-block-end': DimensionValue;\n\t'inset-inline-start': DimensionValue;\n\t'inset-inline-end': DimensionValue;\n};\n\nexport const PositionSection = () => {\n\tconst [ positionValue ] = useStylesField< StringPropValue >( 'position' );\n\tconst [ dimensionsValues, setDimensionsValues ] = useStylesFields< DimensionsValues >( [\n\t\t'inset-block-start',\n\t\t'inset-block-end',\n\t\t'inset-inline-start',\n\t\t'inset-inline-end',\n\t] );\n\n\tconst [ dimensionsValuesFromHistory, updateDimensionsHistory, clearDimensionsHistory ] = usePersistDimensions();\n\n\tconst onPositionChange = ( newPosition: string | null, previousPosition: string | null | undefined ) => {\n\t\tif ( newPosition === 'static' ) {\n\t\t\tif ( dimensionsValues ) {\n\t\t\t\tupdateDimensionsHistory( dimensionsValues );\n\t\t\t\tsetDimensionsValues( {\n\t\t\t\t\t'inset-block-start': undefined,\n\t\t\t\t\t'inset-block-end': undefined,\n\t\t\t\t\t'inset-inline-start': undefined,\n\t\t\t\t\t'inset-inline-end': undefined,\n\t\t\t\t} );\n\t\t\t}\n\t\t} else if ( previousPosition === 'static' ) {\n\t\t\tif ( dimensionsValuesFromHistory ) {\n\t\t\t\tsetDimensionsValues( dimensionsValuesFromHistory );\n\t\t\t\tclearDimensionsHistory();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst isNotStatic = positionValue && positionValue?.value !== 'static';\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<PositionField onChange={ onPositionChange } />\n\t\t\t{ isNotStatic ? (\n\t\t\t\t<>\n\t\t\t\t\t<DimensionsField />\n\t\t\t\t\t<ZIndexField />\n\t\t\t\t</>\n\t\t\t) : null }\n\t\t</SectionContent>\n\t);\n};\n\nconst usePersistDimensions = () => {\n\tconst { id: styleDefID, meta } = useStyle();\n\tconst styleVariantPath = `styles/${ styleDefID }/${ meta.breakpoint || 'desktop' }/${ meta.state || 'null' }`;\n\tconst dimensionsPath = `${ styleVariantPath }/dimensions`;\n\n\treturn useSessionStorage< DimensionsValues >( dimensionsPath );\n};\n","import * as React from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { ControlLabel } from '../../control-label';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\ntype Side = 'inset-inline-start' | 'inset-inline-end' | 'inset-block-start' | 'inset-block-end';\n\nconst InlineStartIcon = withDirection( SideLeftIcon );\nconst InlineEndIcon = withDirection( SideRightIcon );\n\nconst sideIcons = {\n\t'inset-block-start': <SideTopIcon fontSize={ 'tiny' } />,\n\t'inset-block-end': <SideBottomIcon fontSize={ 'tiny' } />,\n\t'inset-inline-start': <RotatedIcon icon={ InlineStartIcon } size=\"tiny\" />,\n\t'inset-inline-end': <RotatedIcon icon={ InlineEndIcon } size=\"tiny\" />,\n};\n\nconst getInlineStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' );\n\nconst getInlineEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' );\n\nexport const DimensionsField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<DimensionField side=\"inset-block-start\" label={ __( 'Top', 'elementor' ) } />\n\t\t\t\t<DimensionField side=\"inset-inline-end\" label={ getInlineEndLabel( isSiteRtl ) } />\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<DimensionField side=\"inset-block-end\" label={ __( 'Bottom', 'elementor' ) } />\n\t\t\t\t<DimensionField side=\"inset-inline-start\" label={ getInlineStartLabel( isSiteRtl ) } />\n\t\t\t</Stack>\n\t\t</>\n\t);\n};\nconst DimensionField = ( { side, label }: { side: Side; label: string } ) => {\n\treturn (\n\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<StylesField bind={ side }>\n\t\t\t\t\t<SizeControl startIcon={ sideIcons[ side ] } extendedValues={ [ 'auto' ] } />\n\t\t\t\t</StylesField>\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nconst positionOptions = [\n\t{ label: __( 'Static', 'elementor' ), value: 'static' },\n\t{ label: __( 'Relative', 'elementor' ), value: 'relative' },\n\t{ label: __( 'Absolute', 'elementor' ), value: 'absolute' },\n\t{ label: __( 'Fixed', 'elementor' ), value: 'fixed' },\n\t{ label: __( 'Sticky', 'elementor' ), value: 'sticky' },\n];\n\ntype Props = {\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n};\n\nexport const PositionField = ( { onChange }: Props ) => {\n\treturn (\n\t\t<StylesField bind=\"position\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Position', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t<SelectControl options={ positionOptions } onChange={ onChange } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { NumberControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nexport const ZIndexField = () => {\n\treturn (\n\t\t<StylesField bind=\"z-index\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Z-index', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<NumberControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ExtendedValue, SizeControl } from '@elementor/editor-controls';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField, type StylesFieldProps } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { OverflowField } from './overflow-field';\n\nexport const SizeSection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"width\" label={ __( 'Width', 'elementor' ) } extendedValues={ [ 'auto' ] } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"height\" label={ __( 'Height', 'elementor' ) } extendedValues={ [ 'auto' ] } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField\n\t\t\t\t\t\tbind=\"min-width\"\n\t\t\t\t\t\tlabel={ __( 'Min width', 'elementor' ) }\n\t\t\t\t\t\textendedValues={ [ 'auto' ] }\n\t\t\t\t\t/>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField\n\t\t\t\t\t\tbind=\"min-height\"\n\t\t\t\t\t\tlabel={ __( 'Min height', 'elementor' ) }\n\t\t\t\t\t\textendedValues={ [ 'auto' ] }\n\t\t\t\t\t/>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"max-width\" label={ __( 'Max width', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"max-height\" label={ __( 'Max height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<PanelDivider />\n\t\t\t<Stack>\n\t\t\t\t<OverflowField />\n\t\t\t</Stack>\n\t\t</SectionContent>\n\t);\n};\n\ntype ControlProps = {\n\tbind: StylesFieldProps[ 'bind' ];\n\tlabel: string;\n\textendedValues?: ExtendedValue[];\n};\n\nconst SizeField = ( { label, bind, extendedValues }: ControlProps ) => {\n\treturn (\n\t\t<StylesField bind={ bind }>\n\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<SizeControl extendedValues={ extendedValues } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { EyeIcon, EyeOffIcon, LetterAIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\ntype Overflows = 'visible' | 'hidden' | 'auto';\n\nconst options: ToggleButtonGroupItem< Overflows >[] = [\n\t{\n\t\tvalue: 'visible',\n\t\tlabel: __( 'Visible', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'hidden',\n\t\tlabel: __( 'Hidden', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterAIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const OverflowField = () => {\n\treturn (\n\t\t<StylesField bind={ 'overflow' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Overflow', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { LinkedDimensionsControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\n\nexport const SpacingSection = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<StylesField bind={ 'margin' }>\n\t\t\t\t<LinkedDimensionsControl\n\t\t\t\t\tlabel={ __( 'Margin', 'elementor' ) }\n\t\t\t\t\tisSiteRtl={ isSiteRtl }\n\t\t\t\t\textendedValues={ [ 'auto' ] }\n\t\t\t\t/>\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind={ 'padding' }>\n\t\t\t\t<LinkedDimensionsControl label={ __( 'Padding', 'elementor' ) } isSiteRtl={ isSiteRtl } />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\n\nimport { CollapsibleContent } from '../../collapsible-content';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { FontFamilyField } from './font-family-field';\nimport { FontSizeField } from './font-size-field';\nimport { FontStyleField } from './font-style-field';\nimport { FontWeightField } from './font-weight-field';\nimport { LetterSpacingField } from './letter-spacing-field';\nimport { LineHeightField } from './line-height-field';\nimport { TextAlignmentField } from './text-alignment-field';\nimport { TextColorField } from './text-color-field';\nimport { TextDecorationField } from './text-decoration-field';\nimport { TextDirectionField } from './text-direction-field';\nimport { TextStrokeField } from './text-stroke-field';\nimport { TransformField } from './transform-field';\nimport { WordSpacingField } from './word-spacing-field';\n\nexport const TypographySection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<FontFamilyField />\n\t\t\t<FontWeightField />\n\t\t\t<FontSizeField />\n\t\t\t<PanelDivider />\n\t\t\t<TextAlignmentField />\n\t\t\t<TextColorField />\n\t\t\t<CollapsibleContent>\n\t\t\t\t<SectionContent sx={ { pt: 2 } }>\n\t\t\t\t\t<LineHeightField />\n\t\t\t\t\t<LetterSpacingField />\n\t\t\t\t\t<WordSpacingField />\n\t\t\t\t\t<PanelDivider />\n\t\t\t\t\t<TextDecorationField />\n\t\t\t\t\t<TransformField />\n\t\t\t\t\t<TextDirectionField />\n\t\t\t\t\t<FontStyleField />\n\t\t\t\t\t<TextStrokeField />\n\t\t\t\t</SectionContent>\n\t\t\t</CollapsibleContent>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Button, Collapse, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CollapseIcon } from './collapse-icon';\n\ntype CollapsibleContentProps = React.PropsWithChildren< {\n\tdefaultOpen?: boolean;\n} >;\n\nexport const CollapsibleContent = ( { children, defaultOpen = false }: CollapsibleContentProps ) => {\n\tconst [ open, setOpen ] = useState( defaultOpen );\n\n\tconst handleToggle = () => {\n\t\tsetOpen( ( prevOpen ) => ! prevOpen );\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<Button\n\t\t\t\tfullWidth\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"secondary\"\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tonClick={ handleToggle }\n\t\t\t\tendIcon={ <CollapseIcon open={ open } /> }\n\t\t\t\tsx={ { my: 0.5 } }\n\t\t\t>\n\t\t\t\t{ open ? __( 'Show less', 'elementor' ) : __( 'Show more', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Collapse in={ open } timeout=\"auto\" unmountOnExit>\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { FontFamilyControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { useFontFamilies } from './hooks/use-font-families';\n\nexport const FontFamilyField = () => {\n\tconst fontFamilies = useFontFamilies();\n\n\tif ( fontFamilies.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StylesField bind=\"font-family\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font family', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t<FontFamilyControl fontFamilies={ fontFamilies } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type FontCategory } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { getElementorConfig } from '../../../../sync/get-elementor-config';\n\nconst supportedCategories: Record< string, string > = {\n\tsystem: __( 'System', 'elementor' ),\n\tcustom: __( 'Custom Fonts', 'elementor' ),\n\tgooglefonts: __( 'Google Fonts', 'elementor' ),\n};\n\nconst getFontFamilies = () => {\n\tconst { controls } = getElementorConfig();\n\n\tconst options = controls?.font?.options;\n\n\tif ( ! options ) {\n\t\treturn null;\n\t}\n\n\treturn options;\n};\n\nexport const useFontFamilies = () => {\n\tconst fontFamilies = getFontFamilies();\n\n\treturn useMemo( () => {\n\t\tconst categoriesOrder = [ 'system', 'custom', 'googlefonts' ];\n\n\t\treturn Object.entries( fontFamilies || {} )\n\t\t\t.reduce< FontCategory[] >( ( acc, [ font, category ] ) => {\n\t\t\t\tif ( ! supportedCategories[ category ] ) {\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tconst categoryIndex = categoriesOrder.indexOf( category );\n\n\t\t\t\tif ( ! acc[ categoryIndex ] ) {\n\t\t\t\t\tacc[ categoryIndex ] = {\n\t\t\t\t\t\tlabel: supportedCategories[ category ],\n\t\t\t\t\t\tfonts: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tacc[ categoryIndex ].fonts.push( font );\n\n\t\t\t\treturn acc;\n\t\t\t}, [] )\n\t\t\t.filter( Boolean );\n\t}, [ fontFamilies ] );\n};\n","import { type ExtendedWindow } from './types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import * as React from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nexport const FontSizeField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-size\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font size', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlFormLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ItalicIcon, MinusIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype FontStyle = 'normal' | 'italic';\nconst options: ToggleButtonGroupItem< FontStyle >[] = [\n\t{\n\t\tvalue: 'normal',\n\t\tlabel: __( 'Normal', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'italic',\n\t\tlabel: __( 'Italic', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ItalicIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FontStyleField = () => (\n\t<StylesField bind=\"font-style\">\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Font style', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nconst fontWeightOptions = [\n\t{ value: '100', label: __( '100 - Thin', 'elementor' ) },\n\t{ value: '200', label: __( '200 - Extra light', 'elementor' ) },\n\t{ value: '300', label: __( '300 - Light', 'elementor' ) },\n\t{ value: '400', label: __( '400 - Normal', 'elementor' ) },\n\t{ value: '500', label: __( '500 - Medium', 'elementor' ) },\n\t{ value: '600', label: __( '600 - Semi bold', 'elementor' ) },\n\t{ value: '700', label: __( '700 - Bold', 'elementor' ) },\n\t{ value: '800', label: __( '800 - Extra bold', 'elementor' ) },\n\t{ value: '900', label: __( '900 - Black', 'elementor' ) },\n];\n\nexport const FontWeightField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-weight\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font weight', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t<SelectControl options={ fontWeightOptions } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nexport const LetterSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"letter-spacing\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Letter spacing', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nexport const LineHeightField = () => {\n\treturn (\n\t\t<StylesField bind=\"line-height\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Line height', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from '@elementor/icons';\nimport { Grid, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\ntype Alignments = 'start' | 'center' | 'end' | 'justify';\n\nconst StartIcon = withDirection( AlignLeftIcon );\nconst EndIcon = withDirection( AlignRightIcon );\n\nconst options: ToggleButtonGroupItem< Alignments >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: () => <RotatedIcon icon={ StartIcon } size=\"tiny\" />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignCenterIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: () => <RotatedIcon icon={ EndIcon } size=\"tiny\" />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'justify',\n\t\tlabel: __( 'Justify', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignJustifiedIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TextAlignmentField = () => {\n\treturn (\n\t\t<StylesField bind={ 'text-align' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Alignment', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ColorControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nexport const TextColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"color\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Text color', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ToggleControl, type ToggleControlProps } from '@elementor/editor-controls';\nimport { MinusIcon, OverlineIcon, StrikethroughIcon, UnderlineIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\ntype Decoration = 'none' | 'underline' | 'line-through' | 'overline';\n\nconst options: ToggleControlProps< Decoration >[ 'options' ] = [\n\t{\n\t\tvalue: 'none',\n\t\tlabel: __( 'None', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t\texclusive: true,\n\t},\n\t{\n\t\tvalue: 'underline',\n\t\tlabel: __( 'Underline', 'elementor' ),\n\t\trenderContent: ( { size } ) => <UnderlineIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'line-through',\n\t\tlabel: __( 'Line-through', 'elementor' ),\n\t\trenderContent: ( { size } ) => <StrikethroughIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'overline',\n\t\tlabel: __( 'Overline', 'elementor' ),\n\t\trenderContent: ( { size } ) => <OverlineIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\nexport const TextDecorationField = () => (\n\t<StylesField bind={ 'text-decoration' }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Line decoration', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleControl options={ options } exclusive={ false } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { TextDirectionLtrIcon, TextDirectionRtlIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst options: ToggleButtonGroupItem< Direction >[] = [\n\t{\n\t\tvalue: 'ltr',\n\t\tlabel: __( 'Left to right', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionLtrIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'rtl',\n\t\tlabel: __( 'Right to left', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionRtlIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TextDirectionField = () => {\n\treturn (\n\t\t<StylesField bind={ 'direction' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Direction', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { StrokeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\n\nconst initTextStroke = {\n\t$$type: 'stroke',\n\tvalue: {\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: '#000000',\n\t\t},\n\t\twidth: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: {\n\t\t\t\tunit: 'px',\n\t\t\t\tsize: 1,\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport const TextStrokeField = () => {\n\tconst [ textStroke, setTextStroke ] = useStylesField( 'stroke' );\n\n\tconst addTextStroke = () => {\n\t\tsetTextStroke( initTextStroke );\n\t};\n\n\tconst removeTextStroke = () => {\n\t\tsetTextStroke( null );\n\t};\n\n\tconst hasTextStroke = Boolean( textStroke );\n\n\treturn (\n\t\t<StylesField bind={ 'stroke' }>\n\t\t\t<AddOrRemoveContent\n\t\t\t\tlabel={ __( 'Text stroke', 'elementor' ) }\n\t\t\t\tisAdded={ hasTextStroke }\n\t\t\t\tonAdd={ addTextStroke }\n\t\t\t\tonRemove={ removeTextStroke }\n\t\t\t>\n\t\t\t\t<StrokeControl />\n\t\t\t</AddOrRemoveContent>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon, MinusIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\ntype Transforms = 'none' | 'capitalize' | 'uppercase' | 'lowercase';\n\nconst options: ToggleButtonGroupItem< Transforms >[] = [\n\t{\n\t\tvalue: 'none',\n\t\tlabel: __( 'None', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'capitalize',\n\t\tlabel: __( 'Capitalize', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'uppercase',\n\t\tlabel: __( 'Uppercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseUpperIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'lowercase',\n\t\tlabel: __( 'Lowercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseLowerIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TransformField = () => (\n\t<StylesField bind={ 'text-transform' }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Text transform', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nexport const WordSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"word-spacing\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Word spacing', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import { injectIntoLogic } from '@elementor/editor';\nimport { PrefetchUserData } from '@elementor/editor-current-user';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\n\nimport { EditingPanelHooks } from './components/editing-panel-hooks';\nimport { init as initDynamics } from './dynamics/init';\nimport { panel } from './panel';\nimport { isAtomicWidgetSelected } from './sync/is-atomic-widget-selected';\n\nexport default function init() {\n\tregisterPanel( panel );\n\tblockV1Panel();\n\n\tinjectIntoLogic( {\n\t\tid: 'editing-panel-hooks',\n\t\tcomponent: EditingPanelHooks,\n\t} );\n\n\tinjectIntoLogic( {\n\t\tid: 'current-user-data',\n\t\tcomponent: PrefetchUserData,\n\t} );\n\n\t// TODO: Move it from here once we have dynamic package.\n\tinitDynamics();\n}\n\nconst blockV1Panel = () => {\n\tblockCommand( {\n\t\tcommand: 'panel/editor/open',\n\t\tcondition: isAtomicWidgetSelected,\n\t} );\n};\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, commandStartEvent } from '@elementor/editor-v1-adapters';\n\nimport { usePanelActions } from '../panel';\nimport { isAtomicWidgetSelected } from '../sync/is-atomic-widget-selected';\n\nexport const useOpenEditorPanel = () => {\n\tconst { open } = usePanelActions();\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'panel/editor/open' ), () => {\n\t\t\tif ( isAtomicWidgetSelected() ) {\n\t\t\t\topen();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import { getSelectedElements, getWidgetsCache } from '@elementor/editor-elements';\n\nexport const isAtomicWidgetSelected = () => {\n\tconst selectedElements = getSelectedElements();\n\tconst widgetCache = getWidgetsCache();\n\n\tif ( selectedElements.length !== 1 ) {\n\t\treturn false;\n\t}\n\n\t// Check if the selected element has atomic controls, meaning it's a V2 element.\n\treturn !! widgetCache?.[ selectedElements[ 0 ].type ]?.atomic_controls;\n};\n","import { useOpenEditorPanel } from '../hooks/use-open-editor-panel';\n\nexport const EditingPanelHooks = () => {\n\tuseOpenEditorPanel();\n\n\treturn null;\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { ControlFormLabel, useBoundProp } from '@elementor/editor-controls';\nimport type { Control, ControlsSection } from '@elementor/editor-elements';\nimport { DatabaseIcon, SettingsIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tDivider,\n\tGrid,\n\tIconButton,\n\tPaper,\n\tPopover,\n\tStack,\n\tTab,\n\tTabPanel,\n\tTabs,\n\tTypography,\n\tUnstableTag as Tag,\n\tusePopupState,\n\tuseTabs,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverContent } from '../../components/popover-content';\nimport { Control as BaseControl } from '../../controls-registry/control';\nimport { type ControlType, getControlByType } from '../../controls-registry/controls-registry';\nimport { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';\nimport { DynamicControl } from '../dynamic-control';\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\nimport { type DynamicTag } from '../types';\nimport { dynamicPropTypeUtil } from '../utils';\nimport { DynamicSelection } from './dynamic-selection';\n\nconst SIZE = 'tiny';\n\nexport const DynamicSelectionControl = () => {\n\tconst { setValue: setAnyValue } = useBoundProp();\n\tconst { bind, value } = useBoundProp( dynamicPropTypeUtil );\n\tconst [ propValueFromHistory ] = usePersistDynamicValue( bind );\n\tconst { name: tagName = '' } = value;\n\n\tconst selectionPopoverId = useId();\n\tconst selectionPopoverState = usePopupState( { variant: 'popover', popupId: selectionPopoverId } );\n\n\tconst dynamicTag = useDynamicTag( tagName );\n\n\tconst removeDynamicTag = () => {\n\t\tsetAnyValue( propValueFromHistory ?? null );\n\t};\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ tagName } not found` );\n\t}\n\n\treturn (\n\t\t<Box>\n\t\t\t<Tag\n\t\t\t\tfullWidth\n\t\t\t\tshowActionsOnHover\n\t\t\t\tlabel={ dynamicTag.label }\n\t\t\t\tstartIcon={ <DatabaseIcon fontSize={ SIZE } /> }\n\t\t\t\t{ ...bindTrigger( selectionPopoverState ) }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DynamicSettingsPopover dynamicTag={ dynamicTag } />\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ removeDynamicTag }\n\t\t\t\t\t\t\taria-label={ __( 'Remove dynamic value', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...bindPopover( selectionPopoverState ) }\n\t\t\t>\n\t\t\t\t<Stack>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t\t<DatabaseIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ __( 'Dynamic tags', 'elementor' ) }</Typography>\n\t\t\t\t\t\t<IconButton size={ SIZE } sx={ { ml: 'auto' } } onClick={ selectionPopoverState.close }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<DynamicSelection onSelect={ selectionPopoverState.close } />\n\t\t\t\t</Stack>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n\nexport const DynamicSettingsPopover = ( { dynamicTag }: { dynamicTag: DynamicTag } ) => {\n\tconst popupId = useId();\n\tconst settingsPopupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst hasDynamicSettings = !! dynamicTag.atomic_controls.length;\n\n\tif ( ! hasDynamicSettings ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\t{ ...bindTrigger( settingsPopupState ) }\n\t\t\t\taria-label={ __( 'Settings', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<SettingsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t\t<Popover\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t{ ...bindPopover( settingsPopupState ) }\n\t\t\t>\n\t\t\t\t<Paper component={ Stack } sx={ { minHeight: '300px', width: '220px' } }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" px={ 1.5 } pt={ 2 } pb={ 1 }>\n\t\t\t\t\t\t<DatabaseIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ dynamicTag.label }</Typography>\n\t\t\t\t\t\t<IconButton sx={ { ml: 'auto' } } size={ SIZE } onClick={ settingsPopupState.close }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<DynamicSettings controls={ dynamicTag.atomic_controls } />\n\t\t\t\t</Paper>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n\nconst DynamicSettings = ( { controls }: { controls: DynamicTag[ 'atomic_controls' ] } ) => {\n\tconst tabs = controls.filter( ( { type } ) => type === 'section' ) as ControlsSection[];\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< number >( 0 );\n\n\tif ( ! tabs.length ) {\n\t\t// Dynamic must have hierarchical controls.\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Tabs size=\"small\" variant=\"fullWidth\" { ...getTabsProps() }>\n\t\t\t\t{ tabs.map( ( { value }, index ) => (\n\t\t\t\t\t<Tab key={ index } label={ value.label } sx={ { px: 1, py: 0.5 } } { ...getTabProps( index ) } />\n\t\t\t\t) ) }\n\t\t\t</Tabs>\n\t\t\t<Divider />\n\n\t\t\t{ tabs.map( ( { value }, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TabPanel key={ index } sx={ { flexGrow: 1, py: 0 } } { ...getTabPanelProps( index ) }>\n\t\t\t\t\t\t<PopoverContent p={ 2 } gap={ 2 }>\n\t\t\t\t\t\t\t{ value.items.map( ( item ) => {\n\t\t\t\t\t\t\t\tif ( item.type === 'control' ) {\n\t\t\t\t\t\t\t\t\treturn <Control key={ item.value.bind } control={ item.value } />;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</PopoverContent>\n\t\t\t\t\t</TabPanel>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n};\n\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! getControlByType( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DynamicControl bind={ control.bind }>\n\t\t\t<Grid container gap={ 0.75 }>\n\t\t\t\t{ control.label ? (\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t) : null }\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<BaseControl type={ control.type as ControlType } props={ control.props } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</DynamicControl>\n\t);\n};\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\ntype PopoverContentProps = PropsWithChildren< {\n\talignItems?: 'center';\n\tgap?: number;\n\tp?: 1.5 | 2 | 2.5;\n} >;\n\nexport const PopoverContent: FC< PopoverContentProps > = ( { alignItems, gap = 1.5, p, children } ) => (\n\t<Stack alignItems={ alignItems } gap={ gap } p={ p }>\n\t\t{ children }\n\t</Stack>\n);\n","import { type PropValue } from '@elementor/editor-props';\nimport { useSessionStorage } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\nimport { type DynamicPropValue } from '../dynamics/types';\n\nexport const usePersistDynamicValue = < T extends DynamicPropValue | PropValue >( propKey: string ) => {\n\tconst { element } = useElement();\n\tconst prefixedKey = `dynamic/non-dynamic-values-history/${ element.id }/${ propKey }`;\n\treturn useSessionStorage< T >( prefixedKey );\n};\n","import * as React from 'react';\nimport { PropKeyProvider, PropProvider, type SetValue, useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { createTopLevelOjectType } from '../controls-registry/create-top-level-object-type';\nimport { useDynamicTag } from './hooks/use-dynamic-tag';\nimport { dynamicPropTypeUtil, type DynamicPropValue } from './utils';\n\ntype DynamicControlProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const DynamicControl = ( { bind, children }: DynamicControlProps ) => {\n\tconst { value, setValue } = useBoundProp( dynamicPropTypeUtil );\n\tconst { name = '', settings } = value ?? {};\n\n\tconst dynamicTag = useDynamicTag( name );\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ name } not found` );\n\t}\n\n\tconst dynamicPropType = dynamicTag.props_schema[ bind ];\n\n\tconst defaultValue = dynamicPropType?.default;\n\tconst dynamicValue = settings?.[ bind ] ?? defaultValue;\n\n\tconst setDynamicValue: SetValue< Record< string, DynamicPropValue > > = ( newValues ) => {\n\t\tsetValue( {\n\t\t\tname,\n\t\t\tsettings: {\n\t\t\t\t...settings,\n\t\t\t\t...newValues,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst propType = createTopLevelOjectType( { schema: dynamicTag.props_schema } );\n\n\treturn (\n\t\t<PropProvider propType={ propType } setValue={ setDynamicValue } value={ { [ bind ]: dynamicValue } }>\n\t\t\t<PropKeyProvider bind={ bind }>{ children }</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import { useMemo } from 'react';\n\nimport { type DynamicTag } from '../types';\nimport { usePropDynamicTags } from './use-prop-dynamic-tags';\n\nexport const useDynamicTag = ( tagName: string ): DynamicTag | null => {\n\tconst dynamicTags = usePropDynamicTags();\n\n\treturn useMemo( () => dynamicTags.find( ( tag ) => tag.name === tagName ) ?? null, [ dynamicTags, tagName ] );\n};\n","import { useMemo } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\n\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { getDynamicPropType } from '../utils';\n\nexport const usePropDynamicTags = () => {\n\tlet categories: string[] = [];\n\n\tconst { propType } = useBoundProp();\n\n\tif ( propType ) {\n\t\tconst propDynamicType = getDynamicPropType( propType );\n\n\t\tcategories = propDynamicType?.settings.categories || [];\n\t}\n\n\t// eslint-disable-next-line react-compiler/react-compiler\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\treturn useMemo( () => getDynamicTagsByCategories( categories ), [ categories.join() ] );\n};\n\nconst getDynamicTagsByCategories = ( categories: string[] ) => {\n\tconst dynamicTags = getAtomicDynamicTags();\n\n\tif ( ! categories.length || ! dynamicTags?.tags ) {\n\t\treturn [];\n\t}\n\n\tconst _categories = new Set( categories );\n\n\treturn Object.values( dynamicTags.tags ).filter( ( dynamicTag ) =>\n\t\tdynamicTag.categories.some( ( category ) => _categories.has( category ) )\n\t);\n};\n","import { type ExtendedWindow } from '../types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import { getElementorConfig } from './get-elementor-config';\n\nexport const getAtomicDynamicTags = () => {\n\tconst { atomicDynamicTags } = getElementorConfig();\n\n\tif ( ! atomicDynamicTags ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\ttags: atomicDynamicTags.tags,\n\t\tgroups: atomicDynamicTags.groups,\n\t};\n};\n","import {\n\tcreatePropUtils,\n\tisTransformable,\n\ttype PropType,\n\ttype PropValue,\n\ttype TransformablePropType,\n} from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { type DynamicPropType } from './types';\n\nconst DYNAMIC_PROP_TYPE_KEY = 'dynamic';\n\nconst isDynamicPropType = ( prop: TransformablePropType ): prop is DynamicPropType =>\n\tprop.key === DYNAMIC_PROP_TYPE_KEY;\n\nexport const getDynamicPropType = ( propType: PropType ): DynamicPropType | null => {\n\tconst dynamicPropType = propType.kind === 'union' && propType.prop_types[ DYNAMIC_PROP_TYPE_KEY ];\n\n\treturn dynamicPropType && isDynamicPropType( dynamicPropType ) ? dynamicPropType : null;\n};\n\nexport const isDynamicPropValue = ( prop: PropValue ): prop is DynamicPropValue => {\n\treturn isTransformable( prop ) && prop.$$type === DYNAMIC_PROP_TYPE_KEY;\n};\n\nexport const supportsDynamic = ( propType: PropType ): boolean => {\n\treturn !! getDynamicPropType( propType );\n};\n\nexport const dynamicPropTypeUtil = createPropUtils(\n\tDYNAMIC_PROP_TYPE_KEY,\n\tz.strictObject( {\n\t\tname: z.string(),\n\t\tsettings: z.any().optional(),\n\t} )\n);\n\nexport type DynamicPropValue = z.infer< typeof dynamicPropTypeUtil.schema >;\n","import * as React from 'react';\nimport { Fragment, useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { DatabaseIcon, SearchIcon } from '@elementor/icons';\nimport {\n\tBox,\n\tDivider,\n\tInputAdornment,\n\tLink,\n\tMenuItem,\n\tMenuList,\n\tMenuSubheader,\n\tStack,\n\tTextField,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';\nimport { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { dynamicPropTypeUtil } from '../utils';\n\ntype Option = {\n\tlabel: string;\n\tvalue: string;\n};\n\ntype OptionEntry = [ string, Option[] ];\n\nconst SIZE = 'tiny';\n\ntype DynamicSelectionProps = {\n\tonSelect?: () => void;\n};\n\ntype NoResultsProps = {\n\tsearchValue: string;\n\tonClear?: () => void;\n};\n\nexport const DynamicSelection = ( { onSelect }: DynamicSelectionProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { groups: dynamicGroups } = getAtomicDynamicTags() || {};\n\n\tconst { value: anyValue } = useBoundProp();\n\tconst { bind, value: dynamicValue, setValue } = useBoundProp( dynamicPropTypeUtil );\n\n\tconst [ , updatePropValueHistory ] = usePersistDynamicValue( bind );\n\n\tconst isCurrentValueDynamic = !! dynamicValue;\n\n\tconst options = useFilteredOptions( searchValue );\n\n\tconst hasNoDynamicTags = ! options.length && ! searchValue.trim();\n\n\tconst handleSearch = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetSearchValue( event.target.value );\n\t};\n\n\tconst handleSetDynamicTag = ( value: string, label: string ) => {\n\t\tif ( ! isCurrentValueDynamic ) {\n\t\t\tupdatePropValueHistory( anyValue );\n\t\t}\n\n\t\tsetValue( { name: value, settings: { label } } );\n\n\t\tonSelect?.();\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t{ hasNoDynamicTags ? (\n\t\t\t\t<NoDynamicTags />\n\t\t\t) : (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<Box px={ 1.5 } pb={ 1 }>\n\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\t\tonChange={ handleSearch }\n\t\t\t\t\t\t\tplaceholder={ __( 'Search dynamic tags…', 'elementor' ) }\n\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t<InputAdornment position=\"start\">\n\t\t\t\t\t\t\t\t\t\t<SearchIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t\t</InputAdornment>\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</Box>\n\t\t\t\t\t<Divider />\n\t\t\t\t\t<Box sx={ { overflowY: 'auto', height: 260, width: 220 } }>\n\t\t\t\t\t\t{ options.length > 0 ? (\n\t\t\t\t\t\t\t<MenuList role=\"listbox\" tabIndex={ 0 }>\n\t\t\t\t\t\t\t\t{ options.map( ( [ category, items ], index ) => (\n\t\t\t\t\t\t\t\t\t<Fragment key={ index }>\n\t\t\t\t\t\t\t\t\t\t<MenuSubheader\n\t\t\t\t\t\t\t\t\t\t\tsx={ { px: 1.5, typography: 'caption', color: 'text.tertiary' } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ dynamicGroups?.[ category ]?.title || category }\n\t\t\t\t\t\t\t\t\t\t</MenuSubheader>\n\t\t\t\t\t\t\t\t\t\t{ items.map( ( { value, label: tagLabel } ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst isSelected = isCurrentValueDynamic && value === dynamicValue?.name;\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselected={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\t\t\t\t\t\t\t\tautoFocus={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ { px: 3.5, typography: 'caption' } }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => handleSetDynamicTag( value, tagLabel ) }\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\t\t{ tagLabel }\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\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</Fragment>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<NoResults searchValue={ searchValue } onClear={ () => setSearchValue( '' ) } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Box>\n\t\t\t\t</Fragment>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n\nconst NoResults = ( { searchValue, onClear }: NoResultsProps ) => (\n\t<Stack\n\t\tgap={ 1 }\n\t\talignItems=\"center\"\n\t\tjustifyContent=\"center\"\n\t\theight=\"100%\"\n\t\tp={ 2.5 }\n\t\tcolor=\"text.secondary\"\n\t\tsx={ { pb: 3.5 } }\n\t>\n\t\t<DatabaseIcon fontSize=\"large\" />\n\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t<br />\n\t\t\t“{ searchValue }”.\n\t\t</Typography>\n\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t \n\t\t\t<Link color=\"text.secondary\" variant=\"caption\" component=\"button\" onClick={ onClear }>\n\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t</Link>\n\t\t</Typography>\n\t</Stack>\n);\n\nconst NoDynamicTags = () => (\n\t<Box sx={ { overflowY: 'hidden', height: 297, width: 220 } }>\n\t\t<Divider />\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tp={ 2.5 }\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { pb: 3.5 } }\n\t\t>\n\t\t\t<DatabaseIcon fontSize=\"large\" />\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Streamline your workflow with dynamic tags', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t\t{ __( 'You’ll need Elementor Pro to use this feature.', 'elementor' ) }\n\t\t\t</Typography>\n\t\t</Stack>\n\t</Box>\n);\n\nconst useFilteredOptions = ( searchValue: string ): OptionEntry[] => {\n\tconst dynamicTags = usePropDynamicTags();\n\n\tconst options = dynamicTags.reduce< Map< string, Option[] > >( ( categories, { name, label, group } ) => {\n\t\tconst isVisible = label.toLowerCase().includes( searchValue.trim().toLowerCase() );\n\n\t\tif ( ! isVisible ) {\n\t\t\treturn categories;\n\t\t}\n\n\t\tif ( ! categories.has( group ) ) {\n\t\t\tcategories.set( group, [] );\n\t\t}\n\n\t\tcategories.get( group )?.push( { label, value: name } );\n\n\t\treturn categories;\n\t}, new Map() );\n\n\treturn [ ...options ];\n};\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { type PopoverActionProps } from '../../popover-action';\nimport { DynamicSelection } from '../components/dynamic-selection';\nimport { supportsDynamic } from '../utils';\n\nexport const usePropDynamicAction = (): PopoverActionProps => {\n\tconst { propType } = useBoundProp();\n\n\tconst visible = !! propType && supportsDynamic( propType );\n\n\treturn {\n\t\tvisible,\n\t\ticon: DatabaseIcon,\n\t\ttitle: __( 'Dynamic tags', 'elementor' ),\n\t\tpopoverContent: ( { closePopover } ) => <DynamicSelection onSelect={ closePopover } />,\n\t};\n};\n","import { replaceControl } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { isDynamicPropValue } from './utils';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport const init = () => {\n\treplaceControl( {\n\t\tcomponent: DynamicSelectionControl,\n\t\tcondition: ( { value } ) => isDynamicPropValue( value ),\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'dynamic-tags',\n\t\tuseProps: usePropDynamicAction,\n\t} );\n};\n"],"mappings":"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","names":["import_editor_controls","React","import_editor_elements","import_editor_styles_repository","import_icons","import_ui","import_i18n","React","import_react","Context","React","import_react","Context","React","import_react","options","React","import_react","import_editor_styles_repository","import_editor_ui","import_ui","import_i18n","React","import_editor_styles_repository","import_ui","options","import_editor_panels","React","import_editor_controls","import_editor_elements","import_editor_ui","import_icons","import_session","import_ui","import_i18n","React","import_react","import_icons","import_ui","PopoverContent","React","import_ui","React","import_react","import_ui","import_i18n","React","import_editor_controls","React","import_editor_controls","React","import_ui","React","import_editor_controls","import_editor_elements","React","import_react","import_ui","import_icons","import_ui","React","import_ui","Control","React","import_react","import_editor_elements","import_editor_props","import_editor_responsive","import_session","import_ui","import_i18n","React","import_react","import_editor_elements","import_editor_props","import_editor_styles_repository","import_react","Context","React","import_editor_controls","React","import_editor_controls","import_editor_styles","import_react","import_editor_elements","import_editor_styles_repository","import_i18n","React","import_editor_controls","import_editor_styles_repository","import_ui","import_i18n","React","React","import_ui","React","import_ui","React","import_i18n","React","import_icons","import_ui","React","import_editor_controls","import_ui","SIZE","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_editor_props","import_icons","import_ui","import_i18n","import_ui","React","import_react","import_ui","React","import_editor_controls","import_editor_props","import_icons","import_ui","import_i18n","React","import_editor_controls","React","import_editor_controls","import_editor_elements","import_i18n","import_editor_v1_adapters","useListenTo","React","import_editor_controls","import_icons","import_ui","import_i18n","CenterIcon","BetweenIcon","AroundIcon","EvenlyIcon","React","import_editor_controls","import_icons","import_ui","import_i18n","StartIcon","EndIcon","iconProps","options","CenterIcon","JustifyIcon","React","import_editor_controls","import_icons","import_ui","import_i18n","StartIcon","EndIcon","iconProps","options","CenterIcon","JustifyIcon","React","import_editor_controls","import_ui","import_i18n","options","React","import_editor_controls","import_icons","import_ui","import_i18n","options","StartIcon","EndIcon","React","import_react","import_editor_controls","import_icons","import_ui","import_i18n","React","import_react","import_editor_controls","import_icons","import_ui","import_i18n","items","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","StartIcon","EndIcon","iconProps","options","CenterIcon","BetweenIcon","AroundIcon","EvenlyIcon","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_session","React","import_editor_controls","import_icons","import_ui","import_i18n","InlineStartIcon","InlineEndIcon","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_i18n","React","React","import_react","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","import_react","import_i18n","options","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","StartIcon","EndIcon","options","React","import_editor_controls","import_ui","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_i18n","React","import_editor_controls","import_icons","import_ui","import_i18n","options","React","import_editor_controls","import_ui","import_i18n","createPanel","import_editor_panels","import_editor_v1_adapters","import_react","import_editor_v1_adapters","import_editor_elements","listenTo","React","import_react","import_editor_controls","import_icons","import_ui","import_i18n","React","import_ui","import_session","React","import_editor_controls","import_react","import_react","import_editor_controls","getElementorConfig","getElementorConfig","import_editor_props","React","import_react","import_editor_controls","import_icons","import_ui","import_i18n","SIZE","options","items","SIZE","Tag","Control","React","import_editor_controls","import_icons","import_i18n","init","registerPanel","init"]}
|