@elementor/editor-editing-panel 1.30.0 → 1.31.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.
@@ -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/components/style-indicator.tsx","../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/create-snapshots-manager.ts","../src/styles-inheritance/utils.ts","../src/styles-inheritance/create-styles-inheritance.ts","../src/hooks/use-active-style-def-id.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/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/utils/rotated-icon.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/init.ts","../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/dynamic-transformer.ts","../src/dynamics/errors.ts","../src/dynamics/hooks/use-prop-dynamic-action.tsx"],"sourcesContent":["export { useBoundProp } from '@elementor/editor-controls';\nexport type { PopoverActionProps } from './popover-action';\nexport { registerControlReplacement } from './control-replacement';\nexport { injectIntoClassSelectorActions } from './components/css-classes/css-class-selector';\nexport { usePanelActions, usePanelStatus } from './panel';\nexport { controlActionsMenu } from './controls-actions';\n\nexport { init } from './init';\n","import { createControlReplacementsRegistry } from '@elementor/editor-controls';\n\nexport const { registerControlReplacement, getControlReplacements } = createControlReplacementsRegistry();\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\tisElementsStylesProvider,\n\ttype StylesProvider,\n\tstylesRepository,\n\ttype UpdateActionPayload,\n\tuseCreateActionsByProvider,\n\tuseProviders,\n\tvalidateStyleLabel,\n} from '@elementor/editor-styles-repository';\nimport { MapPinIcon } from '@elementor/icons';\nimport { createLocation } from '@elementor/locations';\nimport { Chip, FormLabel, Stack } 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 | null;\n};\n\nconst EMPTY_OPTION = {\n\tlabel: __( 'local', 'elementor' ),\n\tvalue: null,\n\tfixed: true,\n\tcolor: 'accent',\n\ticon: <MapPinIcon />,\n\tprovider: null,\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\tconst showPlaceholder = applied.every( ( { fixed } ) => fixed );\n\n\treturn (\n\t\t<Stack p={ 2 }>\n\t\t\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\" justifyContent=\"space-between\">\n\t\t\t\t<FormLabel htmlFor={ ID } size=\"small\">\n\t\t\t\t\t{ __( 'Classes', 'elementor' ) }\n\t\t\t\t</FormLabel>\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\tplaceholder={ showPlaceholder ? __( 'Type class name', 'elementor' ) : undefined }\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 | null, data: UpdateActionPayload ) => {\n\tif ( ! provider ) {\n\t\treturn;\n\t}\n\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 = isElementsStylesProvider( provider.getKey() );\n\t\t\tconst styleDefs = provider.actions.all( { 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.getKey(),\n\t\t\t\t\t// translators: %s is the plural label of the provider (e.g \"Existing classes\").\n\t\t\t\t\tgroup: __( 'Existing %s', 'elementor' ).replace( '%s', 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 \"%s\"', 'elementor' ).replace( '%s', value ),\n\t\t\t// translators: %s is the singular label of css class provider (e.g \"CSS Class\").\n\t\t\tgroup: __( 'Create a new %s', 'elementor' ).replace( '%s', provider.labels?.singular ?? '' ),\n\t\t\tcondition: ( _, inputValue ) => validateStyleLabel( inputValue ).isValid && ! 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\treturn provider.actions.all().length >= provider.limit;\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 && isElementsStylesProvider( option.provider )\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\nexport function getProviderByStyleId( styleId: StyleDefinitionID ) {\n\tconst styleProvider = stylesRepository.getProviders().find( ( provider ) => {\n\t\treturn provider.actions.all().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 { useState } from 'react';\nimport { Autocomplete, type AutocompleteProps, createFilterOptions, TextField, type Theme } 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\tplaceholder?: string;\n};\n\nexport function MultiCombobox< TOption extends Option >( {\n\tactions = [],\n\tselected,\n\toptions,\n\tonSelect,\n\tplaceholder,\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\trenderInput={ ( params ) => (\n\t\t\t\t<TextField\n\t\t\t\t\t{ ...params }\n\t\t\t\t\tplaceholder={ placeholder }\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, group } ) => (\n\t\t\t\t<li { ...optionProps } style={ { display: 'block', textOverflow: 'ellipsis' } } data-group={ group }>\n\t\t\t\t\t{ label }\n\t\t\t\t</li>\n\t\t\t) }\n\t\t/>\n\t);\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, validateStyleLabel } 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\tprovider: string | null;\n\tlabel: 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\tprovider,\n\tlabel,\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 = provider ? stylesRepository.getProviderByKey( provider )?.actions : null;\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\tlineHeight: 1,\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\tconst result = validateStyleLabel( newLabel );\n\n\tif ( result.isValid ) {\n\t\treturn null;\n\t}\n\n\treturn result.error;\n};\n","import * as React from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { isElementsStylesProvider, stylesRepository } from '@elementor/editor-styles-repository';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { bindMenu, Divider, Menu, MenuSubheader, type PopupState, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../contexts/style-context';\nimport { useUnapplyClass } from '../../hooks/use-unapply-class';\nimport { type StyleDefinitionStateWithNormal } from '../../styles-inheritance/types';\nimport { StyleIndicator, type StyleIndicatorVariant } from '../style-indicator';\n\nconst STATES: NonNullable< StyleDefinitionState >[] = [ 'hover', 'focus', 'active' ];\n\ntype CssClassMenuProps = {\n\tstyleId: string | null;\n\tprovider: string | null;\n\tpopupState: PopupState;\n\thandleRename: () => void;\n\tanchorEl: HTMLElement | null;\n};\n\nexport function CssClassMenu( { styleId, provider, popupState, handleRename, anchorEl }: CssClassMenuProps ) {\n\tconst styledStates = useStyledStates( styleId );\n\n\tconst indicatorVariant = ! provider || isElementsStylesProvider( provider ) ? 'local' : 'global';\n\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, sx: { minWidth: '160px' } } }\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\t// Workaround for focus-visible issue.\n\t\t\tdisableAutoFocusItem\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{ __( 'States', 'elementor' ) }\n\t\t\t</MenuSubheader>\n\t\t\t<StateMenuItem\n\t\t\t\tkey=\"normal\"\n\t\t\t\tstate={ null }\n\t\t\t\tstyleId={ styleId }\n\t\t\t\tcloseMenu={ popupState.close }\n\t\t\t\tisStyled={ styledStates.normal }\n\t\t\t\tindicatorVariant={ indicatorVariant }\n\t\t\t/>\n\t\t\t{ STATES.map( ( state ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StateMenuItem\n\t\t\t\t\t\tkey={ state }\n\t\t\t\t\t\tstate={ state }\n\t\t\t\t\t\tstyleId={ styleId }\n\t\t\t\t\t\tcloseMenu={ popupState.close }\n\t\t\t\t\t\tisStyled={ styledStates[ state ] }\n\t\t\t\t\t\tindicatorVariant={ indicatorVariant }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Menu>\n\t);\n}\n\nfunction useStyledStates( styleId: string | null ): Partial< Record< StyleDefinitionStateWithNormal, true > > {\n\tconst { meta } = useStyle();\n\n\tconst styleDef = stylesRepository.all().find( ( style ) => style.id === styleId );\n\n\treturn Object.fromEntries(\n\t\tstyleDef?.variants\n\t\t\t.filter( ( variant ) => meta.breakpoint === variant.meta.breakpoint )\n\t\t\t.map( ( variant ) => [ variant.meta.state ?? 'normal', true ] ) ?? []\n\t);\n}\n\nfunction getMenuItemsByProvider( {\n\tprovider,\n\tstyleId,\n\thandleRename,\n\tcloseMenu,\n}: {\n\tprovider: string | null;\n\tstyleId: string | null;\n\thandleRename: () => void;\n\tcloseMenu: () => void;\n} ) {\n\tif ( ! styleId || ! provider ) {\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, textTransform: 'capitalize' } }\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\tisStyled?: boolean;\n\tindicatorVariant: StyleIndicatorVariant;\n};\n\nfunction StateMenuItem( {\n\tstate,\n\tstyleId,\n\tcloseMenu,\n\tisStyled = false,\n\tindicatorVariant,\n\t...props\n}: 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<Stack gap={ 0.75 } direction=\"row\" alignItems=\"center\">\n\t\t\t\t{ isStyled && (\n\t\t\t\t\t<StyleIndicator aria-label={ __( 'Has style', 'elementor' ) } variant={ indicatorVariant } />\n\t\t\t\t) }\n\t\t\t\t{ state ?? 'normal' }\n\t\t\t</Stack>\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 { styled } from '@elementor/ui';\n\nexport type StyleIndicatorVariant = 'overridden' | 'local' | 'global';\n\nexport const StyleIndicator = styled( 'div', {\n\tshouldForwardProp: ( prop ) => prop !== 'variant',\n} )< { variant?: StyleIndicatorVariant } >`\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':\n\t\t\t\treturn theme.palette.global.dark;\n\t\t\tcase 'local':\n\t\t\t\treturn theme.palette.accent.main;\n\t\t\tdefault:\n\t\t\t\treturn theme.palette.text.disabled;\n\t\t}\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, ControlReplacementsProvider } 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 { getControlReplacements } 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 controlReplacements = getControlReplacements();\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<ControlReplacementsProvider replacements={ controlReplacements }>\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</ControlReplacementsProvider>\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 variant=\"fullWidth\" size=\"small\" sx={ { mt: 0.5 } } { ...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 { 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: 'minmax(0, 1fr)',\n\t\t'two-columns': 'repeat(2, minmax(0, 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 { CLASSES_PROP_KEY } 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 { useActiveStyleDefId } from '../hooks/use-active-style-def-id';\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 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 { filterEmptyValues } from '@elementor/editor-props';\nimport { 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 StyleVariantDetails,\n} from './types';\nimport { DEFAULT_STATE, getBreakpointKey, getStateKey } from './utils';\n\nexport function createSnapshotsManager(\n\tgetStylesByMeta: ( meta: StyleInheritanceMetaProps ) => StyleVariantDetails[],\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: StyleVariantDetails[],\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: StyleVariantDetails[] ): StylesInheritanceSnapshotsSlot {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tstyles.forEach( ( styleData ) => {\n\t\tconst {\n\t\t\tvariant: { props },\n\t\t} = styleData;\n\n\t\tObject.entries( props ).forEach( ( [ key, value ] ) => {\n\t\t\tconst filteredValue = filterEmptyValues( value );\n\n\t\t\tif ( filteredValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\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...styleData,\n\t\t\t\tvalue: filteredValue,\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 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 BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { getProviderByStyleId } from '../contexts/style-context';\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\tconst provider = getProviderByStyleId( styleDef.id )?.getKey() ?? null;\n\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( ( variant ) => {\n\t\t\tconst { meta } = variant;\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\tstyle: styleDef,\n\t\t\t\tvariant,\n\t\t\t\tprovider,\n\t\t\t} );\n\t\t} );\n\t} );\n\n\treturn breakpointStateSlots;\n}\n","import { useState } from 'react';\nimport { getElementStyles, useElementSetting } from '@elementor/editor-elements';\nimport { type ClassesPropValue, type PropKey } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { useElement } from '../contexts/element-context';\n\nexport function useActiveStyleDefId( classProp: PropKey ) {\n\tconst [ activeStyledDefId, setActiveStyledDefId ] = useState< StyleDefinitionID | null >( null );\n\n\tconst appliedClassesIds = useAppliedClassesIds( classProp )?.value || [];\n\n\tconst fallback = useFirstAppliedClass( appliedClassesIds );\n\n\tconst activeAndAppliedClassId = useActiveAndAppliedClassId( activeStyledDefId, appliedClassesIds );\n\treturn [ activeAndAppliedClassId || fallback?.id || null, setActiveStyledDefId ] as const;\n}\n\nfunction useFirstAppliedClass( appliedClassesIds: string[] ) {\n\tconst { element } = useElement();\n\tconst stylesDefs = getElementStyles( element.id ) ?? {};\n\n\treturn Object.values( stylesDefs ).find( ( styleDef ) => appliedClassesIds.includes( styleDef.id ) );\n}\n\nfunction useAppliedClassesIds( classProp: PropKey ) {\n\tconst { element } = useElement();\n\n\treturn useElementSetting< ClassesPropValue >( element.id, classProp );\n}\n\nfunction useActiveAndAppliedClassId( id: StyleDefinitionID | null, appliedClassesIds: string[] ) {\n\tconst isClassApplied = !! id && appliedClassesIds.includes( id );\n\n\treturn isClassApplied ? id : null;\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\tplaceholder?: PropValue;\n\tchildren: React.ReactNode;\n};\n\nexport const StylesField = ( { bind, placeholder, 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\tconst placeholderValues = { [ bind ]: placeholder };\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\n\t\t\t\tpropType={ propType }\n\t\t\t\tvalue={ values }\n\t\t\t\tsetValue={ setValues }\n\t\t\t\tplaceholder={ placeholderValues }\n\t\t\t>\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 { ELEMENTS_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.get( styleId, { elementId } );\n\n\tif ( ! style ) {\n\t\tthrow new StyleNotFoundUnderProviderError( { context: { styleId, providerKey: provider.getKey() } } );\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: ELEMENTS_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: ELEMENTS_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.getKey() },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst style = provider.actions.get( 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_BASE_STYLES_PROVIDER_KEY, isElementsStylesProvider } from '@elementor/editor-styles-repository';\nimport { __ } from '@wordpress/i18n';\n\nimport { StyleIndicator } from '../components/style-indicator';\nimport { useStyle } from '../contexts/style-context';\nimport { useStylesInheritanceField } from '../contexts/styles-inheritance-context';\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 [ { style, variant, provider } ] = inheritanceChain;\n\n\tif ( provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {\n\t\treturn null;\n\t}\n\n\tconst { breakpoint, state } = variant.meta;\n\n\tif (\n\t\tstyle.id === currentStyleId &&\n\t\tbreakpoint === currentStyleMeta.breakpoint &&\n\t\tstate === currentStyleMeta.state\n\t) {\n\t\treturn (\n\t\t\t<StyleIndicator\n\t\t\t\taria-label={ __( 'This is the final value', 'elementor' ) }\n\t\t\t\tvariant={ isElementsStylesProvider( currentStyleProvider?.getKey() ) ? 'local' : 'global' }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( value !== null && value !== undefined ) {\n\t\treturn (\n\t\t\t<StyleIndicator\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 <StyleIndicator 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\tmarginInlineEnd: -0.75,\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';\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: <InlineStartIcon fontSize={ '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: <InlineEndIcon fontSize={ '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 { 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';\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: <StartStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'start-start',\n\t},\n\t{\n\t\tlabel: getStartEndLabel( isSiteRtl ),\n\t\ticon: <StartEndIcon fontSize={ 'tiny' } />,\n\t\tbind: 'start-end',\n\t},\n\t{\n\t\tlabel: getEndStartLabel( isSiteRtl ),\n\t\ticon: <EndStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'end-start',\n\t},\n\t{\n\t\tlabel: getEndEndLabel( isSiteRtl ),\n\t\ticon: <EndEndIcon fontSize={ '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, useDisplayPlaceholderValue } from './display-field';\nimport { type FlexDirection, 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 displayPlaceholder = useDisplayPlaceholderValue();\n\tconst isDisplayFlex = shouldDisplayFlexFields( display, displayPlaceholder as StringPropValue );\n\tconst { element } = useElement();\n\tconst parent = useParentElement( element.id );\n\tconst parentStyle = useComputedStyle( parent?.id || null );\n\tconst parentStyleDirection = parentStyle?.flexDirection ?? 'row';\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<DisplayField />\n\t\t\t{ isDisplayFlex && <FlexFields /> }\n\t\t\t{ 'flex' === parentStyle?.display && <FlexChildFields parentStyleDirection={ parentStyleDirection } /> }\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 = ( { parentStyleDirection }: { parentStyleDirection: string } ) => (\n\t<>\n\t\t<PanelDivider />\n\t\t<ControlFormLabel>{ __( 'Flex child', 'elementor' ) }</ControlFormLabel>\n\t\t<AlignSelfChild parentStyleDirection={ parentStyleDirection as FlexDirection } />\n\t\t<FlexOrderField />\n\t\t<FlexSizeField />\n\t</>\n);\n\nconst shouldDisplayFlexFields = ( display: StringPropValue | null, local: StringPropValue ) => {\n\tconst value = display?.value ?? local?.value;\n\n\tif ( ! value ) {\n\t\treturn false;\n\t}\n\n\treturn 'flex' === value || 'inline-flex' === value;\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 { 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\n\trotate.current = useGetTargetAngle( isClockwise, offset, disableRotationForReversed, rotate );\n\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 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 { 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, type ToggleButtonProps, 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 { type FlexDirection } from './flex-direction-field';\nimport { RotatedIcon } from './utils/rotated-icon';\n\nconst ALIGN_SELF_CHILD_OFFSET_MAP: Record< FlexDirection, number > = {\n\trow: 90,\n\t'row-reverse': 90,\n\tcolumn: 0,\n\t'column-reverse': 0,\n};\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n};\n\nconst getOptions = ( parentStyleDirection: FlexDirection ) => [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ StartIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ CenterIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ EndIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ JustifyIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignSelfChild = ( { parentStyleDirection }: { parentStyleDirection: FlexDirection } ) => {\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={ getOptions( parentStyleDirection as FlexDirection ) } />\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 { useStylesInheritanceField } from '../../../contexts/styles-inheritance-context';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\ntype Displays = 'block' | 'flex' | 'inline-block' | 'inline-flex';\n\nconst displayFieldOptions: ToggleButtonGroupItem< Displays >[] = [\n\t{\n\t\tvalue: 'block',\n\t\trenderContent: () => __( 'Block', 'elementor' ),\n\t\tlabel: __( 'Block', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex',\n\t\trenderContent: () => __( 'Flex', 'elementor' ),\n\t\tlabel: __( 'Flex', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'inline-block',\n\t\trenderContent: () => __( 'In-blk', 'elementor' ),\n\t\tlabel: __( 'Inline-block', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'inline-flex',\n\t\trenderContent: () => __( 'In-flx', 'elementor' ),\n\t\tlabel: __( 'Inline-flex', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const DisplayField = () => {\n\tconst placeholder = useDisplayPlaceholderValue();\n\n\treturn (\n\t\t<StylesField bind=\"display\" placeholder={ placeholder }>\n\t\t\t<Stack gap={ 0.75 }>\n\t\t\t\t<ControlLabel>{ __( 'Display', 'elementor' ) }</ControlLabel>\n\t\t\t\t<ToggleControl options={ displayFieldOptions } fullWidth={ true } />\n\t\t\t</Stack>\n\t\t</StylesField>\n\t);\n};\n\n// TODO - placing this logic deliberately here, and will be removed once applied automatically to all style fields as part of ED-18491\nexport const useDisplayPlaceholderValue = () => useStylesInheritanceField( 'display' )[ 0 ]?.value ?? undefined;\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 { numberPropTypeUtil, type NumberPropValue, type 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 { useStylesFields } from '../../../hooks/use-styles-fields';\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\n\tconst [ fields, setFields ] = useStylesFields< {\n\t\t'flex-grow': NumberPropValue | null;\n\t\t'flex-shrink': NumberPropValue | null;\n\t\t'flex-basis': SizePropValue | null;\n\t} >( [ 'flex-grow', 'flex-shrink', 'flex-basis' ] );\n\n\tconst grow = fields?.[ 'flex-grow' ]?.value || null;\n\tconst shrink = fields?.[ 'flex-shrink' ]?.value || null;\n\tconst basis = fields?.[ 'flex-basis' ]?.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\n\t\tif ( ! group || group === 'custom' ) {\n\t\t\tsetFields( {\n\t\t\t\t'flex-basis': null,\n\t\t\t\t'flex-grow': null,\n\t\t\t\t'flex-shrink': null,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( group === 'flex-grow' ) {\n\t\t\tsetFields( {\n\t\t\t\t'flex-basis': null,\n\t\t\t\t'flex-grow': numberPropTypeUtil.create( DEFAULT ),\n\t\t\t\t'flex-shrink': null,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetFields( {\n\t\t\t'flex-basis': null,\n\t\t\t'flex-grow': null,\n\t\t\t'flex-shrink': numberPropTypeUtil.create( DEFAULT ),\n\t\t} );\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<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';\n\ntype Alignments = 'start' | 'center' | 'end' | 'justify';\n\nconst AlignStartIcon = withDirection( AlignLeftIcon );\nconst AlignEndIcon = withDirection( AlignRightIcon );\n\nconst options: ToggleButtonGroupItem< Alignments >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignStartIcon fontSize={ size } />,\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: ( { size } ) => <AlignEndIcon fontSize={ size } />,\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>{ __( 'Text align', '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 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 { settingsTransformersRegistry, styleTransformersRegistry } from '@elementor/editor-canvas';\n\nimport { registerControlReplacement } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { dynamicTransformer } from './dynamic-transformer';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { isDynamicPropValue } from './utils';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport const init = () => {\n\tregisterControlReplacement( {\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\tstyleTransformersRegistry.register( 'dynamic', dynamicTransformer );\n\tsettingsTransformersRegistry.register( 'dynamic', dynamicTransformer );\n};\n","import * as React 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\n\tconst [ propValueFromHistory ] = usePersistDynamicValue( bind );\n\tconst selectionPopoverState = usePopupState( { variant: 'popover' } );\n\n\tconst { name: tagName = '' } = value;\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 popupState = usePopupState( { variant: 'popover' } );\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 size={ SIZE } { ...bindTrigger( popupState ) } aria-label={ __( 'Settings', 'elementor' ) }>\n\t\t\t\t<SettingsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t{ ...bindPopover( popupState ) }\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={ popupState.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&ldquo;{ searchValue }&rdquo;.\n\t\t</Typography>\n\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t&nbsp;\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 { createTransformer } from '@elementor/editor-canvas';\nimport { isTransformable, type Props } from '@elementor/editor-props';\n\nimport { DynamicTagsManagerNotFoundError } from './errors';\nimport { type ExtendedWindow } from './types';\n\ntype Dynamic = {\n\tname?: string;\n\tsettings?: Props;\n};\n\nexport const dynamicTransformer = createTransformer( ( value: Dynamic ) => {\n\tif ( ! value.name ) {\n\t\treturn null;\n\t}\n\n\treturn getDynamicValue( value.name, simpleTransform( value.settings ?? {} ) );\n} );\n\n// Temporary naive transformation until we'll have a `backendTransformer` that\n// will replace the `dynamicTransformer` client implementation.\nfunction simpleTransform( props: Props ) {\n\tconst transformed = Object.entries( props ).map( ( [ settingKey, settingValue ] ) => {\n\t\tconst value = isTransformable( settingValue ) ? settingValue.value : settingValue;\n\n\t\treturn [ settingKey, value ] as const;\n\t} );\n\n\treturn Object.fromEntries( transformed );\n}\n\nfunction getDynamicValue( name: string, settings: Record< string, unknown > ) {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst { dynamicTags } = extendedWindow.elementor ?? {};\n\n\tif ( ! dynamicTags ) {\n\t\tthrow new DynamicTagsManagerNotFoundError();\n\t}\n\n\tconst getTagValue = () => {\n\t\tconst tag = dynamicTags.createTag( 'v4-dynamic-tag', name, settings );\n\n\t\tif ( ! tag ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn dynamicTags.loadTagDataFromCache( tag ) ?? null;\n\t};\n\n\tconst tagValue = getTagValue();\n\n\tif ( tagValue !== null ) {\n\t\treturn tagValue;\n\t}\n\n\treturn new Promise( ( resolve ) => {\n\t\tdynamicTags.refreshCacheFromServer( () => {\n\t\t\tresolve( getTagValue() );\n\t\t} );\n\t} );\n}\n","import { createError } from '@elementor/utils';\n\nexport const DynamicTagsManagerNotFoundError = createError( {\n\tcode: 'dynamic_tags_manager_not_found',\n\tmessage: 'Dynamic tags manager not found',\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"],"mappings":"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","names":["useBoundProp","React","updateElementSettings","useElementSetting","isElementsStylesProvider","stylesRepository","validateStyleLabel","Chip","Stack","__","React","createContext","useContext","Context","React","createContext","useContext","Context","createContext","useContext","React","options","React","useState","stylesRepository","Stack","__","React","stylesRepository","stylesRepository","useState","stylesRepository","Stack","__","__","options","Stack","Chip","stylesRepository","isElementsStylesProvider","validateStyleLabel","useElementSetting","updateElementSettings","React","ThemeProvider","SessionStorageProvider","__","React","Stack","Typography","usePopupState","PopoverContent","React","React","Fragment","Divider","Stack","__","React","React","React","Box","styled","styled","Box","React","updateElementSettings","useElementSetting","useElementSetting","updateElementSettings","React","useId","useState","Divider","Stack","styled","useState","useId","Stack","Divider","React","Control","React","useState","SessionStorageProvider","Divider","__","React","createContext","useContext","useElementSetting","classesPropTypeUtil","stylesRepository","Context","createContext","useContext","useElementSetting","classesPropTypeUtil","stylesRepository","useState","useElementSetting","useState","useAppliedClassesIds","useElementSetting","React","React","PropKeyProvider","PropProvider","__","__","React","isElementsStylesProvider","__","__","isElementsStylesProvider","PropProvider","PropKeyProvider","React","React","Divider","React","Stack","React","__","React","Collapse","IconButton","Stack","React","ControlFormLabel","Stack","SIZE","Stack","IconButton","Collapse","React","__","__","React","SelectControl","Grid","__","__","Grid","SelectControl","React","__","__","__","React","EqualUnequalSizesControl","withDirection","__","withDirection","__","EqualUnequalSizesControl","React","React","ControlFormLabel","__","React","Stack","withDirection","__","React","useTheme","useTheme","withDirection","__","Stack","React","ToggleControl","CenterIcon","DirectionProvider","Grid","ThemeProvider","withDirection","__","StartIcon","withDirection","EndIcon","iconProps","options","__","CenterIcon","DirectionProvider","ThemeProvider","Grid","ToggleControl","React","ToggleControl","CenterIcon","LayoutAlignLeftIcon","LayoutAlignRightIcon","JustifyIcon","DirectionProvider","Grid","ThemeProvider","withDirection","__","StartIcon","withDirection","LayoutAlignLeftIcon","EndIcon","LayoutAlignRightIcon","iconProps","__","CenterIcon","JustifyIcon","DirectionProvider","ThemeProvider","Grid","ToggleControl","React","ToggleControl","Stack","__","__","Stack","ToggleControl","React","ToggleControl","DirectionProvider","Grid","ThemeProvider","withDirection","__","options","__","StartIcon","withDirection","EndIcon","DirectionProvider","ThemeProvider","Grid","ToggleControl","React","useState","ArrowDownSmallIcon","ArrowUpSmallIcon","DirectionProvider","Grid","ThemeProvider","__","__","ArrowUpSmallIcon","ArrowDownSmallIcon","useState","DirectionProvider","ThemeProvider","Grid","React","useMemo","useState","ControlToggleButtonGroup","NumberControl","SizeControl","PencilIcon","DirectionProvider","Grid","ThemeProvider","__","items","__","PencilIcon","useMemo","useState","DirectionProvider","ThemeProvider","Grid","ControlToggleButtonGroup","NumberControl","SizeControl","React","Stack","__","Stack","__","React","ToggleControl","JustifyBottomIcon","CenterIcon","EvenlyIcon","AroundIcon","BetweenIcon","JustifyTopIcon","DirectionProvider","Stack","ThemeProvider","withDirection","__","StartIcon","withDirection","JustifyTopIcon","EndIcon","JustifyBottomIcon","iconProps","options","__","CenterIcon","BetweenIcon","AroundIcon","EvenlyIcon","DirectionProvider","ThemeProvider","Stack","ToggleControl","React","ToggleControl","ArrowRightIcon","DirectionProvider","Grid","ThemeProvider","__","options","__","ArrowRightIcon","DirectionProvider","ThemeProvider","Grid","ToggleControl","ControlFormLabel","__","React","React","SizeControl","SideBottomIcon","SideLeftIcon","SideRightIcon","SideTopIcon","Grid","Stack","withDirection","__","InlineStartIcon","withDirection","SideLeftIcon","InlineEndIcon","SideRightIcon","SideTopIcon","SideBottomIcon","__","Stack","Grid","SizeControl","React","SelectControl","Grid","__","__","Grid","SelectControl","React","NumberControl","Grid","__","Grid","__","NumberControl","React","SizeControl","Grid","Stack","__","React","ToggleControl","Grid","__","options","__","Grid","ToggleControl","Grid","__","Stack","SizeControl","React","__","__","React","React","useState","Collapse","Stack","__","useState","Stack","__","Collapse","React","Grid","__","useMemo","__","__","options","useMemo","Grid","__","React","SizeControl","Grid","__","Grid","__","SizeControl","React","ControlFormLabel","ToggleControl","MinusIcon","Grid","__","options","__","MinusIcon","Grid","ControlFormLabel","ToggleControl","React","SelectControl","Grid","__","__","Grid","SelectControl","React","SizeControl","Grid","__","Grid","__","SizeControl","React","SizeControl","Grid","__","Grid","__","SizeControl","React","ToggleControl","Grid","withDirection","__","withDirection","options","__","Grid","ToggleControl","React","ColorControl","Grid","__","Grid","__","ColorControl","React","ToggleControl","MinusIcon","Grid","__","options","__","MinusIcon","Grid","ToggleControl","React","ToggleControl","Grid","__","options","__","Grid","ToggleControl","React","__","__","React","ToggleControl","MinusIcon","Grid","__","options","__","MinusIcon","Grid","ToggleControl","React","SizeControl","Grid","__","Grid","__","SizeControl","useState","SessionStorageProvider","Divider","__","Fragment","Stack","__","Divider","__","SessionStorageProvider","ThemeProvider","useEffect","getWidgetsCache","useEffect","React","ControlFormLabel","useBoundProp","DatabaseIcon","XIcon","bindPopover","bindTrigger","Box","Divider","Grid","IconButton","Popover","Stack","Tab","TabPanel","Tabs","Typography","usePopupState","useTabs","__","React","Stack","useSessionStorage","useSessionStorage","React","PropKeyProvider","PropProvider","useBoundProp","useMemo","useMemo","useBoundProp","getElementorConfig","getElementorConfig","useBoundProp","useMemo","useMemo","useBoundProp","PropProvider","PropKeyProvider","React","Fragment","useState","useBoundProp","Box","Divider","MenuSubheader","Stack","TextField","Typography","__","SIZE","useState","useBoundProp","options","Stack","Fragment","Box","TextField","__","Divider","items","MenuSubheader","Typography","SIZE","useBoundProp","usePopupState","Box","DatabaseIcon","bindTrigger","IconButton","__","XIcon","Popover","bindPopover","Stack","Typography","useTabs","Tabs","Tab","Divider","TabPanel","Control","Grid","ControlFormLabel","isTransformable","createError","isTransformable","React","useBoundProp","DatabaseIcon","__","useBoundProp","DatabaseIcon","__","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/creatable-autocomplete/creatable-autocomplete.tsx","../src/components/creatable-autocomplete/autocomplete-option-internal-properties.ts","../src/components/creatable-autocomplete/use-autocomplete-change.ts","../src/components/creatable-autocomplete/use-autocomplete-states.ts","../src/components/creatable-autocomplete/use-create-option.ts","../src/components/creatable-autocomplete/use-filter-options.ts","../src/components/css-classes/css-class-item.tsx","../src/components/css-classes/css-class-menu.tsx","../src/hooks/use-unapply-class.ts","../src/components/style-indicator.tsx","../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/contexts/scroll-context.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/create-snapshots-manager.ts","../src/styles-inheritance/utils.ts","../src/styles-inheritance/create-styles-inheritance.ts","../src/hooks/use-active-style-def-id.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/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/utils/rotated-icon.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/offset-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/init.ts","../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/dynamic-transformer.ts","../src/dynamics/errors.ts","../src/dynamics/hooks/use-prop-dynamic-action.tsx"],"sourcesContent":["export { useBoundProp } from '@elementor/editor-controls';\nexport type { PopoverActionProps } from './popover-action';\nexport { registerControlReplacement } from './control-replacement';\nexport { injectIntoClassSelectorActions } from './components/css-classes/css-class-selector';\nexport { usePanelActions, usePanelStatus } from './panel';\nexport { type ValidationResult, type ValidationEvent } from './components/creatable-autocomplete';\nexport { controlActionsMenu } from './controls-actions';\n\nexport { init } from './init';\n","import { createControlReplacementsRegistry } from '@elementor/editor-controls';\n\nexport const { registerControlReplacement, getControlReplacements } = createControlReplacementsRegistry();\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\tisElementsStylesProvider,\n\ttype StylesProvider,\n\tstylesRepository,\n\ttype UpdateActionPayload,\n\tuseGetStylesRepositoryCreateAction,\n\tuseProviders,\n\tvalidateStyleLabel,\n} from '@elementor/editor-styles-repository';\nimport { MapPinIcon } from '@elementor/icons';\nimport { createLocation } from '@elementor/locations';\nimport { Chip, FormLabel, Stack } 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 {\n\tCreatableAutocomplete,\n\ttype CreatableAutocompleteProps,\n\ttype Option,\n\ttype ValidationEvent,\n\ttype ValidationResult,\n} from '../creatable-autocomplete';\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 | null;\n};\n\nconst EMPTY_OPTION = {\n\tlabel: __( 'local', 'elementor' ),\n\tvalue: null,\n\tfixed: true,\n\tcolor: 'accent',\n\ticon: <MapPinIcon />,\n\tprovider: null,\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 handleApply = useHandleApply( appliedIds, setAppliedIds );\n\tconst { create, validate, entityName } = useCreateAction( { pushAppliedId, setActiveId } );\n\n\tconst applied = useAppliedOptions( options, appliedIds );\n\tconst active = applied.find( ( option ) => option.value === activeId ) ?? EMPTY_OPTION;\n\n\tconst showPlaceholder = applied.every( ( { fixed } ) => fixed );\n\n\treturn (\n\t\t<Stack p={ 2 }>\n\t\t\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\" justifyContent=\"space-between\">\n\t\t\t\t<FormLabel htmlFor={ ID } size=\"small\">\n\t\t\t\t\t{ __( 'Classes', 'elementor' ) }\n\t\t\t\t</FormLabel>\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<CreatableAutocomplete\n\t\t\t\tid={ ID }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tplaceholder={ showPlaceholder ? __( 'Type class name', 'elementor' ) : undefined }\n\t\t\t\toptions={ options }\n\t\t\t\tselected={ applied }\n\t\t\t\tentityName={ entityName }\n\t\t\t\tonSelect={ handleApply }\n\t\t\t\tonCreate={ create ?? undefined }\n\t\t\t\tvalidate={ validate ?? undefined }\n\t\t\t\tlimitTags={ TAGS_LIMIT }\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 | null, data: UpdateActionPayload ) => {\n\tif ( ! provider ) {\n\t\treturn;\n\t}\n\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 = isElementsStylesProvider( provider.getKey() );\n\t\t\tconst styleDefs = provider.actions.all( { 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.getKey(),\n\t\t\t\t};\n\t\t\t} );\n\t\t} );\n}\n\nfunction useCreateAction( {\n\tpushAppliedId,\n\tsetActiveId,\n}: {\n\tpushAppliedId: ( id: StyleDefinitionID ) => void;\n\tsetActiveId: ( id: StyleDefinitionID ) => void;\n} ) {\n\tconst [ provider, createAction ] = useGetStylesRepositoryCreateAction() ?? [ null, null ];\n\tif ( ! provider || ! createAction ) {\n\t\treturn {};\n\t}\n\n\tconst create = ( newClassLabel: string ) => {\n\t\tconst createdId = createAction( newClassLabel );\n\n\t\tpushAppliedId( createdId );\n\t\tsetActiveId( createdId );\n\t};\n\n\tconst validate = ( newClassLabel: string, event: ValidationEvent ): ValidationResult => {\n\t\tif ( hasReachedLimit( provider ) ) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terrorMessage: __(\n\t\t\t\t\t'You’ve reached the limit of 50 classes. Please remove an existing one to create a new class.',\n\t\t\t\t\t'elementor'\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t\treturn validateStyleLabel( newClassLabel, event );\n\t};\n\n\tconst entityName =\n\t\tprovider.labels.singular && provider.labels.plural\n\t\t\t? ( provider.labels as CreatableAutocompleteProps< StyleDefOption >[ 'entityName' ] )\n\t\t\t: undefined;\n\n\treturn { create, validate, entityName };\n}\n\nfunction hasReachedLimit( provider: StylesProvider ) {\n\treturn provider.actions.all().length >= provider.limit;\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 && isElementsStylesProvider( option.provider )\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\nexport function getProviderByStyleId( styleId: StyleDefinitionID ) {\n\tconst styleProvider = stylesRepository.getProviders().find( ( provider ) => {\n\t\treturn provider.actions.all().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 { type HTMLAttributes, useId, useMemo } from 'react';\nimport {\n\tAutocomplete,\n\ttype AutocompleteProps,\n\ttype AutocompleteRenderGroupParams,\n\tBox,\n\tChip,\n\tstyled,\n\tTextField,\n\ttype Theme,\n\tTypography,\n} from '@elementor/ui';\n\nimport { addGroupToOptions } from './autocomplete-option-internal-properties';\nimport { type CreatableAutocompleteProps, type InternalOption, type SafeOptionConstraint } from './types';\nimport { useAutocompleteChange } from './use-autocomplete-change';\nimport { useInputState, useOpenState } from './use-autocomplete-states';\nimport { useCreateOption } from './use-create-option';\nimport { useFilterOptions } from './use-filter-options';\n\nexport function CreatableAutocomplete< TOption extends SafeOptionConstraint >( {\n\tselected,\n\toptions,\n\tentityName,\n\tonSelect,\n\tplaceholder,\n\tonCreate,\n\tvalidate,\n\t...props\n}: CreatableAutocompleteProps< TOption > ) {\n\tconst { inputValue, setInputValue, error, setError, handleInputChange } = useInputState( validate );\n\tconst { open, openDropdown, closeDropdown } = useOpenState( props.open );\n\tconst { createOption, loading } = useCreateOption( { onCreate, validate, setInputValue, setError, closeDropdown } );\n\n\tconst [ internalOptions, internalSelected ] = useMemo(\n\t\t() => [ options, selected ].map( ( optionsArr ) => addGroupToOptions( optionsArr, entityName?.plural ) ),\n\t\t[ options, selected, entityName?.plural ]\n\t);\n\n\tconst handleChange = useAutocompleteChange( {\n\t\toptions: internalOptions,\n\t\tonSelect,\n\t\tcreateOption,\n\t\tsetInputValue,\n\t\tcloseDropdown,\n\t} );\n\tconst filterOptions = useFilterOptions( { options, selected, onCreate, entityName } );\n\n\treturn (\n\t\t<Autocomplete< InternalOption< TOption >, true, true, true >\n\t\t\trenderTags={ ( tagValue, getTagProps ) => {\n\t\t\t\treturn tagValue.map( ( option, index ) => (\n\t\t\t\t\t<Chip\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t{ ...getTagProps( { index } ) }\n\t\t\t\t\t\tkey={ option.key ?? option.value ?? option.label }\n\t\t\t\t\t\tlabel={ option.label }\n\t\t\t\t\t/>\n\t\t\t\t) );\n\t\t\t} }\n\t\t\t{ ...( props as AutocompleteProps< InternalOption< TOption >, true, true, true > ) }\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\topen={ open }\n\t\t\tonOpen={ openDropdown }\n\t\t\tonClose={ closeDropdown }\n\t\t\tdisableCloseOnSelect\n\t\t\tvalue={ internalSelected }\n\t\t\toptions={ internalOptions }\n\t\t\tListboxComponent={\n\t\t\t\terror\n\t\t\t\t\t? React.forwardRef< HTMLElement, ErrorTextProps >( ( _, ref ) => (\n\t\t\t\t\t\t\t<ErrorText ref={ ref } error={ error } />\n\t\t\t\t\t ) )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\trenderGroup={ ( params ) => <Group { ...params } /> }\n\t\t\tinputValue={ inputValue }\n\t\t\trenderInput={ ( params ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TextField\n\t\t\t\t\t\t{ ...params }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\terror={ Boolean( error ) }\n\t\t\t\t\t\tonChange={ handleInputChange }\n\t\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\t\t'.MuiAutocomplete-inputRoot.MuiInputBase-adornedStart': {\n\t\t\t\t\t\t\t\tpaddingLeft: theme.spacing( 0.25 ),\n\t\t\t\t\t\t\t\tpaddingRight: theme.spacing( 0.25 ),\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\tonChange={ handleChange }\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={ filterOptions }\n\t\t\tgroupBy={ ( option ) => option._group ?? '' }\n\t\t\trenderOption={ ( optionProps, option ) => {\n\t\t\t\tconst { _group, label } = option;\n\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\t{ ...optionProps }\n\t\t\t\t\t\tstyle={ { display: 'block', textOverflow: 'ellipsis' } }\n\t\t\t\t\t\tdata-group={ _group }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</li>\n\t\t\t\t);\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\ntype ErrorTextProps = {\n\terror?: string;\n} & HTMLAttributes< HTMLElement >;\n\nconst ErrorText = React.forwardRef< HTMLElement, ErrorTextProps >( ( { error = 'error' }, ref ) => {\n\treturn (\n\t\t<Box\n\t\t\tref={ ref }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\tpadding: theme.spacing( 2 ),\n\t\t\t} ) }\n\t\t>\n\t\t\t<Typography variant=\"caption\" sx={ { color: 'error.main' } }>\n\t\t\t\t{ error }\n\t\t\t</Typography>\n\t\t</Box>\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\tbackgroundColor: theme.palette.primary.contrastText,\n} ) );\n\nconst StyledGroupItems = styled( 'ul' )`\n\tpadding: 0;\n`;\n","import { type InternalOption, type Option } from './types';\n\nexport function addGroupToOptions< TOption extends Option >(\n\toptions: TOption[],\n\tpluralEntityName?: string\n): InternalOption< TOption >[] {\n\treturn options.map( ( option ) => {\n\t\treturn {\n\t\t\t...option,\n\t\t\t_group: `Existing ${ pluralEntityName ?? 'options' }`,\n\t\t};\n\t} );\n}\n\nexport function removeOptionsInternalKeys< TOption extends Option >( options: InternalOption< TOption >[] ): TOption[] {\n\treturn options.map( ( option ) => {\n\t\tconst { _group, _action, ...rest } = option;\n\n\t\treturn rest as unknown as TOption;\n\t} );\n}\n","import { removeOptionsInternalKeys } from './autocomplete-option-internal-properties';\nimport { type InternalOption, type Option } from './types';\n\nexport function useAutocompleteChange< TOption extends Option >( params: {\n\toptions: InternalOption< TOption >[];\n\tonSelect?: ( value: TOption[] ) => void;\n\tcreateOption: ( value: string ) => Promise< unknown >;\n\tsetInputValue: ( value: string ) => void;\n\tcloseDropdown: () => void;\n} ) {\n\tconst { options, onSelect, createOption, setInputValue, closeDropdown } = params;\n\n\tconst handleChange = async (\n\t\t_: React.SyntheticEvent,\n\t\tselectedOrInputValue: Array< InternalOption< TOption > | string >,\n\t\treason: string\n\t) => {\n\t\t// Separate options and new input value\n\t\tconst selectedOptions = selectedOrInputValue.filter( ( option ) => typeof option !== 'string' );\n\n\t\tconst newInputValue = selectedOrInputValue.reduce( ( acc: string | null, option ): string | null => {\n\t\t\tif ( typeof option === 'string' ) {\n\t\t\t\treturn option;\n\t\t\t} else if ( option._action === 'create' ) {\n\t\t\t\treturn option.value;\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, null );\n\n\t\tconst inputValueMatchesExistingOption =\n\t\t\tnewInputValue && options.find( ( option ) => option.label === newInputValue );\n\n\t\t// Handle creation of new option\n\t\tif (\n\t\t\tnewInputValue &&\n\t\t\tshouldCreateNewOption( reason, selectedOptions, newInputValue, Boolean( inputValueMatchesExistingOption ) )\n\t\t) {\n\t\t\treturn createOption( newInputValue );\n\t\t}\n\n\t\t// Handle selection of existing option\n\t\tif ( reason === 'createOption' && inputValueMatchesExistingOption ) {\n\t\t\tselectedOptions.push( inputValueMatchesExistingOption );\n\t\t}\n\n\t\tupdateSelectedOptions( selectedOptions );\n\t\tsetInputValue( '' );\n\t\tcloseDropdown();\n\t};\n\n\treturn handleChange;\n\n\tfunction shouldCreateNewOption(\n\t\treason: string,\n\t\tselectedOptions: InternalOption< TOption >[],\n\t\tnewInputValue: string | undefined,\n\t\tinputValueMatchesExistingOption: boolean\n\t) {\n\t\tconst createOptionWasClicked =\n\t\t\treason === 'selectOption' && selectedOptions.some( ( option ) => option._action === 'create' );\n\n\t\tconst enterWasPressed =\n\t\t\treason === 'createOption' && ! options.some( ( option ) => option.label === newInputValue );\n\t\tconst createOptionWasDisplayed = ! inputValueMatchesExistingOption;\n\n\t\treturn createOptionWasClicked || ( enterWasPressed && createOptionWasDisplayed );\n\t}\n\n\tfunction updateSelectedOptions( selectedOptions: InternalOption< TOption >[] ) {\n\t\tconst fixedOptions = options.filter( ( option ) => !! option.fixed );\n\t\tconst updatedOptions = [ ...fixedOptions, ...selectedOptions.filter( ( option ) => ! option.fixed ) ];\n\n\t\tonSelect?.( removeOptionsInternalKeys( updatedOptions ) );\n\t}\n}\n","import { useState } from 'react';\n\nimport { type ValidationEvent, type ValidationResult } from './types';\n\nexport function useInputState( validate?: ( value: string, event: ValidationEvent ) => ValidationResult ) {\n\tconst [ inputValue, setInputValue ] = useState( '' );\n\tconst [ error, setError ] = useState< string | null >( null );\n\n\tconst handleInputChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value } = event.target;\n\n\t\tsetInputValue( value );\n\n\t\tif ( ! validate ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! value ) {\n\t\t\tsetError( null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst { isValid, errorMessage } = validate( value, 'inputChange' );\n\n\t\tif ( isValid ) {\n\t\t\tsetError( null );\n\t\t} else {\n\t\t\tsetError( errorMessage );\n\t\t}\n\t};\n\n\treturn { inputValue, setInputValue, error, setError, handleInputChange };\n}\n\nexport function useOpenState( initialOpen: boolean = false ) {\n\tconst [ open, setOpen ] = useState( initialOpen );\n\n\tconst openDropdown = () => setOpen( true );\n\tconst closeDropdown = () => setOpen( false );\n\n\treturn { open, openDropdown, closeDropdown };\n}\n","import { useState } from 'react';\n\nimport { type ValidationEvent, type ValidationResult } from './types';\n\nexport function useCreateOption( params: {\n\tonCreate?: ( value: string ) => Promise< unknown > | unknown;\n\tvalidate?: ( value: string, event: ValidationEvent ) => ValidationResult;\n\tsetInputValue: ( value: string ) => void;\n\tsetError: ( error: string | null ) => void;\n\tcloseDropdown: () => void;\n} ) {\n\tconst { onCreate, validate, setInputValue, setError, closeDropdown } = params;\n\n\tconst [ loading, setLoading ] = useState( false );\n\n\tconst createOption = async ( value: string ) => {\n\t\tif ( ! onCreate ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetLoading( true );\n\n\t\tif ( validate ) {\n\t\t\tconst { isValid, errorMessage } = validate( value, 'create' );\n\n\t\t\tif ( ! isValid ) {\n\t\t\t\tsetError( errorMessage );\n\t\t\t\tsetLoading( false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tsetInputValue( '' );\n\t\t\tcloseDropdown();\n\t\t\tawait onCreate( value );\n\t\t} catch {\n\t\t\t// TODO: Do something with the error.\n\t\t} finally {\n\t\t\tsetLoading( false );\n\t\t}\n\t};\n\n\treturn { createOption, loading };\n}\n","import { createFilterOptions } from '@elementor/ui';\n\nimport { type InternalOption, type Option } from './types';\n\nexport function useFilterOptions< TOption extends Option >( parameters: {\n\toptions: TOption[];\n\tselected: TOption[];\n\tonCreate?: ( value: string ) => Promise< unknown > | unknown;\n\tentityName?: { singular: string; plural: string };\n} ) {\n\tconst { options, selected, onCreate, entityName } = parameters;\n\n\tconst filter = createFilterOptions< InternalOption< TOption > >();\n\n\tconst filterOptions = (\n\t\toptionList: InternalOption< TOption >[],\n\t\tparams: {\n\t\t\tinputValue: string;\n\t\t\tgetOptionLabel: ( option: InternalOption< TOption > ) => string;\n\t\t}\n\t) => {\n\t\tconst selectedValues = selected.map( ( option ) => option.value );\n\n\t\tconst filteredOptions = filter(\n\t\t\toptionList.filter( ( option ) => ! selectedValues.includes( option.value ) ),\n\t\t\tparams\n\t\t);\n\n\t\tconst isExisting = options.some( ( option ) => params.inputValue === option.label );\n\t\tconst allowCreate =\n\t\t\tBoolean( onCreate ) &&\n\t\t\tparams.inputValue !== '' &&\n\t\t\t! selectedValues.includes( params.inputValue ) &&\n\t\t\t! isExisting;\n\n\t\tif ( allowCreate ) {\n\t\t\tfilteredOptions.unshift( {\n\t\t\t\tlabel: `Create \"${ params.inputValue }\"`,\n\t\t\t\tvalue: params.inputValue,\n\t\t\t\t_group: `Create a new ${ entityName?.singular ?? 'option' }`,\n\t\t\t\tkey: `create-${ params.inputValue }`,\n\t\t\t\t_action: 'create',\n\t\t\t} as InternalOption< TOption > );\n\t\t}\n\n\t\treturn filteredOptions;\n\t};\n\n\treturn filterOptions;\n}\n","import * as React from 'react';\nimport { type ReactElement, useState } from 'react';\nimport { stylesRepository, validateStyleLabel } 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\tprovider: string | null;\n\tlabel: 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\tprovider,\n\tlabel,\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 = provider ? stylesRepository.getProviderByKey( provider )?.actions : null;\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\tlineHeight: 1,\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\tconst result = validateStyleLabel( newLabel, 'rename' );\n\n\tif ( result.isValid ) {\n\t\treturn null;\n\t}\n\n\treturn result.errorMessage;\n};\n","import * as React from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { isElementsStylesProvider, stylesRepository } from '@elementor/editor-styles-repository';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { bindMenu, Divider, Menu, MenuSubheader, type PopupState, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../contexts/style-context';\nimport { useUnapplyClass } from '../../hooks/use-unapply-class';\nimport { type StyleDefinitionStateWithNormal } from '../../styles-inheritance/types';\nimport { StyleIndicator, type StyleIndicatorVariant } from '../style-indicator';\n\nconst STATES: NonNullable< StyleDefinitionState >[] = [ 'hover', 'focus', 'active' ];\n\ntype CssClassMenuProps = {\n\tstyleId: string | null;\n\tprovider: string | null;\n\tpopupState: PopupState;\n\thandleRename: () => void;\n\tanchorEl: HTMLElement | null;\n};\n\nexport function CssClassMenu( { styleId, provider, popupState, handleRename, anchorEl }: CssClassMenuProps ) {\n\tconst styledStates = useStyledStates( styleId );\n\n\tconst indicatorVariant = ! provider || isElementsStylesProvider( provider ) ? 'local' : 'global';\n\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, sx: { minWidth: '160px' } } }\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\t// Workaround for focus-visible issue.\n\t\t\tdisableAutoFocusItem\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{ __( 'States', 'elementor' ) }\n\t\t\t</MenuSubheader>\n\t\t\t<StateMenuItem\n\t\t\t\tkey=\"normal\"\n\t\t\t\tstate={ null }\n\t\t\t\tstyleId={ styleId }\n\t\t\t\tcloseMenu={ popupState.close }\n\t\t\t\tisStyled={ styledStates.normal }\n\t\t\t\tindicatorVariant={ indicatorVariant }\n\t\t\t/>\n\t\t\t{ STATES.map( ( state ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StateMenuItem\n\t\t\t\t\t\tkey={ state }\n\t\t\t\t\t\tstate={ state }\n\t\t\t\t\t\tstyleId={ styleId }\n\t\t\t\t\t\tcloseMenu={ popupState.close }\n\t\t\t\t\t\tisStyled={ styledStates[ state ] }\n\t\t\t\t\t\tindicatorVariant={ indicatorVariant }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</Menu>\n\t);\n}\n\nfunction useStyledStates( styleId: string | null ): Partial< Record< StyleDefinitionStateWithNormal, true > > {\n\tconst { meta } = useStyle();\n\n\tconst styleDef = stylesRepository.all().find( ( style ) => style.id === styleId );\n\n\treturn Object.fromEntries(\n\t\tstyleDef?.variants\n\t\t\t.filter( ( variant ) => meta.breakpoint === variant.meta.breakpoint )\n\t\t\t.map( ( variant ) => [ variant.meta.state ?? 'normal', true ] ) ?? []\n\t);\n}\n\nfunction getMenuItemsByProvider( {\n\tprovider,\n\tstyleId,\n\thandleRename,\n\tcloseMenu,\n}: {\n\tprovider: string | null;\n\tstyleId: string | null;\n\thandleRename: () => void;\n\tcloseMenu: () => void;\n} ) {\n\tif ( ! styleId || ! provider ) {\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, textTransform: 'capitalize' } }\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\tisStyled?: boolean;\n\tindicatorVariant: StyleIndicatorVariant;\n};\n\nfunction StateMenuItem( {\n\tstate,\n\tstyleId,\n\tcloseMenu,\n\tisStyled = false,\n\tindicatorVariant,\n\t...props\n}: 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<Stack gap={ 0.75 } direction=\"row\" alignItems=\"center\">\n\t\t\t\t{ isStyled && (\n\t\t\t\t\t<StyleIndicator aria-label={ __( 'Has style', 'elementor' ) } variant={ indicatorVariant } />\n\t\t\t\t) }\n\t\t\t\t{ state ?? 'normal' }\n\t\t\t</Stack>\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 { styled } from '@elementor/ui';\n\nexport type StyleIndicatorVariant = 'overridden' | 'local' | 'global';\n\nexport const StyleIndicator = styled( 'div', {\n\tshouldForwardProp: ( prop ) => prop !== 'variant',\n} )< { variant?: StyleIndicatorVariant } >`\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':\n\t\t\t\treturn theme.palette.global.dark;\n\t\t\tcase 'local':\n\t\t\t\treturn theme.palette.accent.main;\n\t\t\tdefault:\n\t\t\t\treturn theme.palette.text.disabled;\n\t\t}\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, ControlReplacementsProvider } 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 { getControlReplacements } 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 controlReplacements = getControlReplacements();\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<ControlReplacementsProvider replacements={ controlReplacements }>\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</ControlReplacementsProvider>\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 { ScrollProvider } from '../contexts/scroll-context';\nimport { SettingsTab } from './settings-tab';\nimport { stickyHeaderStyles, 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<ScrollProvider>\n\t\t\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t\t\t<Stack sx={ { ...stickyHeaderStyles, top: 0 } }>\n\t\t\t\t\t\t<Tabs variant=\"fullWidth\" size=\"small\" sx={ { mt: 0.5 } } { ...getTabsProps() }>\n\t\t\t\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t\t<Divider />\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t\t\t<SettingsTab />\n\t\t\t\t\t</TabPanel>\n\t\t\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t\t\t<StyleTab />\n\t\t\t\t\t</TabPanel>\n\t\t\t\t</Stack>\n\t\t\t</ScrollProvider>\n\t\t</Fragment>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, type ReactNode, useContext, useEffect, useRef, useState } from 'react';\nimport { styled } from '@elementor/ui';\n\ntype ScrollDirection = 'up' | 'down';\n\ntype ScrollContextValue = {\n\tdirection: ScrollDirection;\n};\n\nconst ScrollContext = createContext< ScrollContextValue | undefined >( undefined );\n\nconst ScrollPanel = styled( 'div' )`\n\theight: 100%;\n\toverflow-y: auto;\n`;\n\nconst DEFAULT_SCROLL_DIRECTION: ScrollDirection = 'up';\n\nexport function ScrollProvider( { children }: { children: ReactNode } ) {\n\tconst [ direction, setDirection ] = useState< ScrollDirection >( DEFAULT_SCROLL_DIRECTION );\n\tconst ref = useRef< HTMLDivElement >( null );\n\tconst scrollPos = useRef< number >( 0 );\n\n\tuseEffect( () => {\n\t\tconst scrollElement = ref.current;\n\n\t\tif ( ! scrollElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleScroll = () => {\n\t\t\tconst { scrollTop } = scrollElement;\n\n\t\t\tif ( scrollTop > scrollPos.current ) {\n\t\t\t\tsetDirection( 'down' );\n\t\t\t} else if ( scrollTop < scrollPos.current ) {\n\t\t\t\tsetDirection( 'up' );\n\t\t\t}\n\n\t\t\tscrollPos.current = scrollTop;\n\t\t};\n\n\t\tscrollElement.addEventListener( 'scroll', handleScroll );\n\n\t\treturn () => {\n\t\t\tscrollElement.removeEventListener( 'scroll', handleScroll );\n\t\t};\n\t} );\n\n\treturn (\n\t\t<ScrollContext.Provider value={ { direction } }>\n\t\t\t<ScrollPanel ref={ ref }>{ children }</ScrollPanel>\n\t\t</ScrollContext.Provider>\n\t);\n}\n\nexport function useScrollDirection() {\n\treturn useContext( ScrollContext )?.direction ?? DEFAULT_SCROLL_DIRECTION;\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: 'minmax(0, 1fr)',\n\t\t'two-columns': 'repeat(2, minmax(0, 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 { CLASSES_PROP_KEY } 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, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ClassesPropProvider } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useScrollDirection } from '../contexts/scroll-context';\nimport { StyleProvider } from '../contexts/style-context';\nimport { StyleInheritanceProvider } from '../contexts/styles-inheritance-context';\nimport { useActiveStyleDefId } from '../hooks/use-active-style-def-id';\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\nconst TABS_HEADER_HEIGHT = '37px';\n\nexport const stickyHeaderStyles = {\n\tposition: 'sticky',\n\tzIndex: 1,\n\topacity: 1,\n\tbackgroundColor: 'background.default',\n\ttransition: 'top 300ms ease',\n};\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<ClassesHeader>\n\t\t\t\t\t\t\t<CssClassSelector />\n\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t</ClassesHeader>\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 ClassesHeader( { children }: { children: React.ReactNode } ) {\n\tconst scrollDirection = useScrollDirection();\n\n\treturn (\n\t\t<Stack sx={ { ...stickyHeaderStyles, top: scrollDirection === 'up' ? TABS_HEADER_HEIGHT : 0 } }>\n\t\t\t{ children }\n\t\t</Stack>\n\t);\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 { filterEmptyValues } from '@elementor/editor-props';\nimport { 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 StyleVariantDetails,\n} from './types';\nimport { DEFAULT_STATE, getBreakpointKey, getStateKey } from './utils';\n\nexport function createSnapshotsManager(\n\tgetStylesByMeta: ( meta: StyleInheritanceMetaProps ) => StyleVariantDetails[],\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: StyleVariantDetails[],\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: StyleVariantDetails[] ): StylesInheritanceSnapshotsSlot {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tstyles.forEach( ( styleData ) => {\n\t\tconst {\n\t\t\tvariant: { props },\n\t\t} = styleData;\n\n\t\tObject.entries( props ).forEach( ( [ key, value ] ) => {\n\t\t\tconst filteredValue = filterEmptyValues( value );\n\n\t\t\tif ( filteredValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\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...styleData,\n\t\t\t\tvalue: filteredValue,\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 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 BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { getProviderByStyleId } from '../contexts/style-context';\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\tconst provider = getProviderByStyleId( styleDef.id )?.getKey() ?? null;\n\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( ( variant ) => {\n\t\t\tconst { meta } = variant;\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\tstyle: styleDef,\n\t\t\t\tvariant,\n\t\t\t\tprovider,\n\t\t\t} );\n\t\t} );\n\t} );\n\n\treturn breakpointStateSlots;\n}\n","import { useState } from 'react';\nimport { getElementStyles, useElementSetting } from '@elementor/editor-elements';\nimport { type ClassesPropValue, type PropKey } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { useElement } from '../contexts/element-context';\n\nexport function useActiveStyleDefId( classProp: PropKey ) {\n\tconst [ activeStyledDefId, setActiveStyledDefId ] = useState< StyleDefinitionID | null >( null );\n\n\tconst appliedClassesIds = useAppliedClassesIds( classProp )?.value || [];\n\n\tconst fallback = useFirstAppliedClass( appliedClassesIds );\n\n\tconst activeAndAppliedClassId = useActiveAndAppliedClassId( activeStyledDefId, appliedClassesIds );\n\treturn [ activeAndAppliedClassId || fallback?.id || null, setActiveStyledDefId ] as const;\n}\n\nfunction useFirstAppliedClass( appliedClassesIds: string[] ) {\n\tconst { element } = useElement();\n\tconst stylesDefs = getElementStyles( element.id ) ?? {};\n\n\treturn Object.values( stylesDefs ).find( ( styleDef ) => appliedClassesIds.includes( styleDef.id ) );\n}\n\nfunction useAppliedClassesIds( classProp: PropKey ) {\n\tconst { element } = useElement();\n\n\treturn useElementSetting< ClassesPropValue >( element.id, classProp );\n}\n\nfunction useActiveAndAppliedClassId( id: StyleDefinitionID | null, appliedClassesIds: string[] ) {\n\tconst isClassApplied = !! id && appliedClassesIds.includes( id );\n\n\treturn isClassApplied ? id : null;\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\tplaceholder?: PropValue;\n\tchildren: React.ReactNode;\n};\n\nexport const StylesField = ( { bind, placeholder, 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\tconst placeholderValues = { [ bind ]: placeholder };\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\n\t\t\t\tpropType={ propType }\n\t\t\t\tvalue={ values }\n\t\t\t\tsetValue={ setValues }\n\t\t\t\tplaceholder={ placeholderValues }\n\t\t\t>\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 { ELEMENTS_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.get( styleId, { elementId } );\n\n\tif ( ! style ) {\n\t\tthrow new StyleNotFoundUnderProviderError( { context: { styleId, providerKey: provider.getKey() } } );\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: ELEMENTS_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: ELEMENTS_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.getKey() },\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\tconst style = provider.actions.get( 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_BASE_STYLES_PROVIDER_KEY, isElementsStylesProvider } from '@elementor/editor-styles-repository';\nimport { __ } from '@wordpress/i18n';\n\nimport { StyleIndicator } from '../components/style-indicator';\nimport { useStyle } from '../contexts/style-context';\nimport { useStylesInheritanceField } from '../contexts/styles-inheritance-context';\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 [ { style, variant, provider } ] = inheritanceChain;\n\n\tif ( provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {\n\t\treturn null;\n\t}\n\n\tconst { breakpoint, state } = variant.meta;\n\n\tif (\n\t\tstyle.id === currentStyleId &&\n\t\tbreakpoint === currentStyleMeta.breakpoint &&\n\t\tstate === currentStyleMeta.state\n\t) {\n\t\treturn (\n\t\t\t<StyleIndicator\n\t\t\t\taria-label={ __( 'This is the final value', 'elementor' ) }\n\t\t\t\tvariant={ isElementsStylesProvider( currentStyleProvider?.getKey() ) ? 'local' : 'global' }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( value !== null && value !== undefined ) {\n\t\treturn (\n\t\t\t<StyleIndicator\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 <StyleIndicator 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\tmarginInlineEnd: -0.75,\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';\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: <InlineStartIcon fontSize={ '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: <InlineEndIcon fontSize={ '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 { 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';\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: <StartStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'start-start',\n\t},\n\t{\n\t\tlabel: getStartEndLabel( isSiteRtl ),\n\t\ticon: <StartEndIcon fontSize={ 'tiny' } />,\n\t\tbind: 'start-end',\n\t},\n\t{\n\t\tlabel: getEndStartLabel( isSiteRtl ),\n\t\ticon: <EndStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'end-start',\n\t},\n\t{\n\t\tlabel: getEndEndLabel( isSiteRtl ),\n\t\ticon: <EndEndIcon fontSize={ '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, useDisplayPlaceholderValue } from './display-field';\nimport { type FlexDirection, 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 displayPlaceholder = useDisplayPlaceholderValue();\n\tconst isDisplayFlex = shouldDisplayFlexFields( display, displayPlaceholder as StringPropValue );\n\tconst { element } = useElement();\n\tconst parent = useParentElement( element.id );\n\tconst parentStyle = useComputedStyle( parent?.id || null );\n\tconst parentStyleDirection = parentStyle?.flexDirection ?? 'row';\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<DisplayField />\n\t\t\t{ isDisplayFlex && <FlexFields /> }\n\t\t\t{ 'flex' === parentStyle?.display && <FlexChildFields parentStyleDirection={ parentStyleDirection } /> }\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 = ( { parentStyleDirection }: { parentStyleDirection: string } ) => (\n\t<>\n\t\t<PanelDivider />\n\t\t<ControlFormLabel>{ __( 'Flex child', 'elementor' ) }</ControlFormLabel>\n\t\t<AlignSelfChild parentStyleDirection={ parentStyleDirection as FlexDirection } />\n\t\t<FlexOrderField />\n\t\t<FlexSizeField />\n\t</>\n);\n\nconst shouldDisplayFlexFields = ( display: StringPropValue | null, local: StringPropValue ) => {\n\tconst value = display?.value ?? local?.value;\n\n\tif ( ! value ) {\n\t\treturn false;\n\t}\n\n\treturn 'flex' === value || 'inline-flex' === value;\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 { 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\n\trotate.current = useGetTargetAngle( isClockwise, offset, disableRotationForReversed, rotate );\n\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 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 { 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, type ToggleButtonProps, 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 { type FlexDirection } from './flex-direction-field';\nimport { RotatedIcon } from './utils/rotated-icon';\n\nconst ALIGN_SELF_CHILD_OFFSET_MAP: Record< FlexDirection, number > = {\n\trow: 90,\n\t'row-reverse': 90,\n\tcolumn: 0,\n\t'column-reverse': 0,\n};\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n};\n\nconst getOptions = ( parentStyleDirection: FlexDirection ) => [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ StartIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ CenterIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ EndIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ JustifyIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignSelfChild = ( { parentStyleDirection }: { parentStyleDirection: FlexDirection } ) => {\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={ getOptions( parentStyleDirection as FlexDirection ) } />\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 { useStylesInheritanceField } from '../../../contexts/styles-inheritance-context';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\ntype Displays = 'block' | 'flex' | 'inline-block' | 'inline-flex';\n\nconst displayFieldOptions: ToggleButtonGroupItem< Displays >[] = [\n\t{\n\t\tvalue: 'block',\n\t\trenderContent: () => __( 'Block', 'elementor' ),\n\t\tlabel: __( 'Block', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex',\n\t\trenderContent: () => __( 'Flex', 'elementor' ),\n\t\tlabel: __( 'Flex', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'inline-block',\n\t\trenderContent: () => __( 'In-blk', 'elementor' ),\n\t\tlabel: __( 'Inline-block', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'inline-flex',\n\t\trenderContent: () => __( 'In-flx', 'elementor' ),\n\t\tlabel: __( 'Inline-flex', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const DisplayField = () => {\n\tconst placeholder = useDisplayPlaceholderValue();\n\n\treturn (\n\t\t<StylesField bind=\"display\" placeholder={ placeholder }>\n\t\t\t<Stack gap={ 0.75 }>\n\t\t\t\t<ControlLabel>{ __( 'Display', 'elementor' ) }</ControlLabel>\n\t\t\t\t<ToggleControl options={ displayFieldOptions } fullWidth={ true } />\n\t\t\t</Stack>\n\t\t</StylesField>\n\t);\n};\n\n// TODO - placing this logic deliberately here, and will be removed once applied automatically to all style fields as part of ED-18491\nexport const useDisplayPlaceholderValue = () => useStylesInheritanceField( 'display' )[ 0 ]?.value ?? undefined;\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 { numberPropTypeUtil, type NumberPropValue, type 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 { useStylesFields } from '../../../hooks/use-styles-fields';\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\n\tconst [ fields, setFields ] = useStylesFields< {\n\t\t'flex-grow': NumberPropValue | null;\n\t\t'flex-shrink': NumberPropValue | null;\n\t\t'flex-basis': SizePropValue | null;\n\t} >( [ 'flex-grow', 'flex-shrink', 'flex-basis' ] );\n\n\tconst grow = fields?.[ 'flex-grow' ]?.value || null;\n\tconst shrink = fields?.[ 'flex-shrink' ]?.value || null;\n\tconst basis = fields?.[ 'flex-basis' ]?.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\n\t\tif ( ! group || group === 'custom' ) {\n\t\t\tsetFields( {\n\t\t\t\t'flex-basis': null,\n\t\t\t\t'flex-grow': null,\n\t\t\t\t'flex-shrink': null,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( group === 'flex-grow' ) {\n\t\t\tsetFields( {\n\t\t\t\t'flex-basis': null,\n\t\t\t\t'flex-grow': numberPropTypeUtil.create( DEFAULT ),\n\t\t\t\t'flex-shrink': null,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetFields( {\n\t\t\t'flex-basis': null,\n\t\t\t'flex-grow': null,\n\t\t\t'flex-shrink': numberPropTypeUtil.create( DEFAULT ),\n\t\t} );\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<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 { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { DimensionsField } from './dimensions-field';\nimport { OffsetField } from './offset-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\t<PanelDivider />\n\t\t\t<OffsetField />\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 { 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 OffsetField = () => {\n\treturn (\n\t\t<StylesField bind=\"scroll-margin-top\">\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>{ __( 'Anchor offset', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl units={ [ 'px', 'em', 'rem', 'vw', 'vh' ] } />\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 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';\n\ntype Alignments = 'start' | 'center' | 'end' | 'justify';\n\nconst AlignStartIcon = withDirection( AlignLeftIcon );\nconst AlignEndIcon = withDirection( AlignRightIcon );\n\nconst options: ToggleButtonGroupItem< Alignments >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignStartIcon fontSize={ size } />,\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: ( { size } ) => <AlignEndIcon fontSize={ size } />,\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>{ __( 'Text align', '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 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 { settingsTransformersRegistry, styleTransformersRegistry } from '@elementor/editor-canvas';\n\nimport { registerControlReplacement } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { dynamicTransformer } from './dynamic-transformer';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { isDynamicPropValue } from './utils';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport const init = () => {\n\tregisterControlReplacement( {\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\tstyleTransformersRegistry.register( 'dynamic', dynamicTransformer );\n\tsettingsTransformersRegistry.register( 'dynamic', dynamicTransformer );\n};\n","import * as React 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\n\tconst [ propValueFromHistory ] = usePersistDynamicValue( bind );\n\tconst selectionPopoverState = usePopupState( { variant: 'popover' } );\n\n\tconst { name: tagName = '' } = value;\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 popupState = usePopupState( { variant: 'popover' } );\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 size={ SIZE } { ...bindTrigger( popupState ) } aria-label={ __( 'Settings', 'elementor' ) }>\n\t\t\t\t<SettingsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t{ ...bindPopover( popupState ) }\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={ popupState.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&ldquo;{ searchValue }&rdquo;.\n\t\t</Typography>\n\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t&nbsp;\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 { createTransformer } from '@elementor/editor-canvas';\nimport { isTransformable, type Props } from '@elementor/editor-props';\n\nimport { DynamicTagsManagerNotFoundError } from './errors';\nimport { type ExtendedWindow } from './types';\n\ntype Dynamic = {\n\tname?: string;\n\tsettings?: Props;\n};\n\nexport const dynamicTransformer = createTransformer( ( value: Dynamic ) => {\n\tif ( ! value.name ) {\n\t\treturn null;\n\t}\n\n\treturn getDynamicValue( value.name, simpleTransform( value.settings ?? {} ) );\n} );\n\n// Temporary naive transformation until we'll have a `backendTransformer` that\n// will replace the `dynamicTransformer` client implementation.\nfunction simpleTransform( props: Props ) {\n\tconst transformed = Object.entries( props ).map( ( [ settingKey, settingValue ] ) => {\n\t\tconst value = isTransformable( settingValue ) ? settingValue.value : settingValue;\n\n\t\treturn [ settingKey, value ] as const;\n\t} );\n\n\treturn Object.fromEntries( transformed );\n}\n\nfunction getDynamicValue( name: string, settings: Record< string, unknown > ) {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst { dynamicTags } = extendedWindow.elementor ?? {};\n\n\tif ( ! dynamicTags ) {\n\t\tthrow new DynamicTagsManagerNotFoundError();\n\t}\n\n\tconst getTagValue = () => {\n\t\tconst tag = dynamicTags.createTag( 'v4-dynamic-tag', name, settings );\n\n\t\tif ( ! tag ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn dynamicTags.loadTagDataFromCache( tag ) ?? null;\n\t};\n\n\tconst tagValue = getTagValue();\n\n\tif ( tagValue !== null ) {\n\t\treturn tagValue;\n\t}\n\n\treturn new Promise( ( resolve ) => {\n\t\tdynamicTags.refreshCacheFromServer( () => {\n\t\t\tresolve( getTagValue() );\n\t\t} );\n\t} );\n}\n","import { createError } from '@elementor/utils';\n\nexport const DynamicTagsManagerNotFoundError = createError( {\n\tcode: 'dynamic_tags_manager_not_found',\n\tmessage: 'Dynamic tags manager not found',\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"],"mappings":"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","names":["useBoundProp","React","updateElementSettings","useElementSetting","isElementsStylesProvider","stylesRepository","validateStyleLabel","Chip","Stack","__","React","createContext","useContext","Context","React","createContext","useContext","Context","createContext","useContext","React","options","options","useState","options","options","React","useState","stylesRepository","Chip","Stack","Typography","__","React","stylesRepository","styled","stylesRepository","useState","stylesRepository","Chip","Stack","Typography","__","__","options","Stack","Chip","stylesRepository","isElementsStylesProvider","validateStyleLabel","useElementSetting","updateElementSettings","React","ThemeProvider","SessionStorageProvider","__","React","useId","Stack","Typography","usePopupState","PopoverContent","React","Box","React","Fragment","Divider","Stack","__","React","createContext","useContext","useState","styled","React","React","React","Box","styled","styled","Box","React","updateElementSettings","useElementSetting","useElementSetting","updateElementSettings","React","useId","useState","Divider","Stack","styled","useState","useId","Stack","Divider","React","Control","React","useState","SessionStorageProvider","Divider","Stack","__","React","createContext","useContext","useElementSetting","classesPropTypeUtil","stylesRepository","useEffect","useEffect","Context","createContext","useContext","useElementSetting","classesPropTypeUtil","stylesRepository","useState","useElementSetting","useState","useAppliedClassesIds","useElementSetting","React","React","PropKeyProvider","PropProvider","useMemo","__","useMemo","__","React","isElementsStylesProvider","__","__","isElementsStylesProvider","PropProvider","PropKeyProvider","React","React","Divider","React","Stack","React","__","React","Collapse","IconButton","Stack","React","ControlFormLabel","Stack","SIZE","Stack","IconButton","Collapse","React","__","__","React","SelectControl","Grid","__","__","Grid","SelectControl","React","__","__","__","React","EqualUnequalSizesControl","withDirection","__","withDirection","__","EqualUnequalSizesControl","React","React","ControlFormLabel","__","React","Stack","withDirection","__","React","useRef","useTheme","useRef","useTheme","withDirection","__","Stack","React","ToggleControl","CenterIcon","DirectionProvider","Grid","ThemeProvider","withDirection","__","StartIcon","withDirection","EndIcon","iconProps","options","__","CenterIcon","DirectionProvider","ThemeProvider","Grid","ToggleControl","React","ToggleControl","CenterIcon","LayoutAlignLeftIcon","LayoutAlignRightIcon","JustifyIcon","DirectionProvider","Grid","ThemeProvider","withDirection","__","StartIcon","withDirection","LayoutAlignLeftIcon","EndIcon","LayoutAlignRightIcon","iconProps","__","CenterIcon","JustifyIcon","DirectionProvider","ThemeProvider","Grid","ToggleControl","React","ToggleControl","Stack","__","__","Stack","ToggleControl","React","ToggleControl","DirectionProvider","Grid","ThemeProvider","withDirection","__","options","__","StartIcon","withDirection","EndIcon","DirectionProvider","ThemeProvider","Grid","ToggleControl","React","useState","ArrowDownSmallIcon","ArrowUpSmallIcon","DirectionProvider","Grid","ThemeProvider","__","__","ArrowUpSmallIcon","ArrowDownSmallIcon","useState","DirectionProvider","ThemeProvider","Grid","React","useMemo","useState","ControlToggleButtonGroup","NumberControl","SizeControl","PencilIcon","DirectionProvider","Grid","ThemeProvider","__","items","__","PencilIcon","useMemo","useState","DirectionProvider","ThemeProvider","Grid","ControlToggleButtonGroup","NumberControl","SizeControl","React","Stack","__","Stack","__","React","ToggleControl","JustifyBottomIcon","CenterIcon","EvenlyIcon","AroundIcon","BetweenIcon","JustifyTopIcon","DirectionProvider","Stack","ThemeProvider","withDirection","__","StartIcon","withDirection","JustifyTopIcon","EndIcon","JustifyBottomIcon","iconProps","options","__","CenterIcon","BetweenIcon","AroundIcon","EvenlyIcon","DirectionProvider","ThemeProvider","Stack","ToggleControl","React","ToggleControl","ArrowRightIcon","DirectionProvider","Grid","ThemeProvider","__","options","__","ArrowRightIcon","DirectionProvider","ThemeProvider","Grid","ToggleControl","ControlFormLabel","__","React","React","SizeControl","SideBottomIcon","SideLeftIcon","SideRightIcon","SideTopIcon","Grid","Stack","withDirection","__","InlineStartIcon","withDirection","SideLeftIcon","InlineEndIcon","SideRightIcon","SideTopIcon","SideBottomIcon","__","Stack","Grid","SizeControl","React","SizeControl","Grid","__","Grid","__","SizeControl","React","SelectControl","Grid","__","__","Grid","SelectControl","React","NumberControl","Grid","__","Grid","__","NumberControl","React","SizeControl","Grid","Stack","__","React","ToggleControl","Grid","__","options","__","Grid","ToggleControl","Grid","__","Stack","SizeControl","React","__","__","React","React","useState","Collapse","Stack","__","useState","Stack","__","Collapse","React","Grid","__","useMemo","__","__","options","useMemo","Grid","__","React","SizeControl","Grid","__","Grid","__","SizeControl","React","ControlFormLabel","ToggleControl","MinusIcon","Grid","__","options","__","MinusIcon","Grid","ControlFormLabel","ToggleControl","React","SelectControl","Grid","__","__","Grid","SelectControl","React","SizeControl","Grid","__","Grid","__","SizeControl","React","SizeControl","Grid","__","Grid","__","SizeControl","React","ToggleControl","Grid","withDirection","__","withDirection","options","__","Grid","ToggleControl","React","ColorControl","Grid","__","Grid","__","ColorControl","React","ToggleControl","MinusIcon","Grid","__","options","__","MinusIcon","Grid","ToggleControl","React","ToggleControl","Grid","__","options","__","Grid","ToggleControl","React","__","__","React","ToggleControl","MinusIcon","Grid","__","options","__","MinusIcon","Grid","ToggleControl","React","SizeControl","Grid","__","Grid","__","SizeControl","useState","SessionStorageProvider","Divider","__","Stack","Fragment","Stack","__","Divider","__","SessionStorageProvider","ThemeProvider","useEffect","getWidgetsCache","useEffect","React","ControlFormLabel","useBoundProp","DatabaseIcon","XIcon","bindPopover","bindTrigger","Box","Divider","Grid","IconButton","Popover","Stack","Tab","TabPanel","Tabs","Typography","usePopupState","useTabs","__","React","Stack","useSessionStorage","useSessionStorage","React","PropKeyProvider","PropProvider","useBoundProp","useMemo","useMemo","useBoundProp","getElementorConfig","getElementorConfig","useBoundProp","useMemo","useMemo","useBoundProp","PropProvider","PropKeyProvider","React","Fragment","useState","useBoundProp","Box","Divider","MenuSubheader","Stack","TextField","Typography","__","SIZE","useState","useBoundProp","options","Stack","Fragment","Box","TextField","__","Divider","items","MenuSubheader","Typography","SIZE","useBoundProp","usePopupState","Box","DatabaseIcon","bindTrigger","IconButton","__","XIcon","Popover","bindPopover","Stack","Typography","useTabs","Tabs","Tab","Divider","TabPanel","Control","Grid","ControlFormLabel","isTransformable","createError","isTransformable","React","useBoundProp","DatabaseIcon","__","useBoundProp","DatabaseIcon","__","init"]}