@elementor/editor-controls 4.0.0-509 → 4.0.0-510

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/controls/image-control.tsx","../src/bound-prop-context/prop-context.tsx","../src/bound-prop-context/errors.ts","../src/bound-prop-context/prop-key-context.tsx","../src/bound-prop-context/use-bound-prop.ts","../src/components/control-form-label.tsx","../src/components/control-label.tsx","../src/control-adornments/control-adornments.tsx","../src/control-adornments/control-adornments-context.tsx","../src/create-control.tsx","../src/control-replacements.tsx","../src/hooks/use-unfiltered-files-upload.ts","../src/api.ts","../src/controls/image-media-control.tsx","../src/control-actions/control-actions.tsx","../src/control-actions/control-actions-context.tsx","../src/controls/select-control.tsx","../src/controls/text-control.tsx","../src/controls/text-area-control.tsx","../src/controls/size-control.tsx","../src/components/size-control/size-input.tsx","../src/utils/size-control.ts","../src/components/size-control/text-field-inner-selection.tsx","../src/components/number-input.tsx","../src/components/text-field-popover.tsx","../src/hooks/use-size-extended-options.ts","../src/hooks/use-sync-external-state.tsx","../src/controls/stroke-control.tsx","../src/components/section-content.tsx","../src/controls/color-control.tsx","../src/controls/box-shadow-repeater-control.tsx","../src/components/control-repeater/actions/tooltip-add-item-action.tsx","../src/components/control-repeater/context/repeater-context.tsx","../src/services/event-bus.ts","../src/components/control-repeater/context/item-context.tsx","../src/components/control-repeater/items/items-container.tsx","../src/components/repeater/sortable.tsx","../src/components/control-repeater/items/item.tsx","../src/hooks/use-repeatable-control-context.ts","../src/components/repeater/repeater-tag.tsx","../src/components/control-repeater/locations.ts","../src/components/control-repeater/control-repeater.tsx","../src/components/control-repeater/actions/disable-item-action.tsx","../src/components/control-repeater/actions/duplicate-item-action.tsx","../src/components/control-repeater/actions/remove-item-action.tsx","../src/components/control-repeater/items/edit-item-popover.tsx","../src/components/repeater/repeater-popover.tsx","../src/components/popover-content.tsx","../src/components/popover-grid-container.tsx","../src/components/repeater/repeater-header.tsx","../src/controls/filter-control/filter-repeater-control.tsx","../src/controls/filter-control/context/filter-config-context.tsx","../src/controls/filter-control/utils.ts","../src/controls/filter-control/configs.ts","../src/controls/filter-control/filter-content.tsx","../src/controls/filter-control/drop-shadow/drop-shadow-item-content.tsx","../src/controls/filter-control/single-size/single-size-item-content.tsx","../src/controls/filter-control/filter-icon.tsx","../src/controls/filter-control/filter-label.tsx","../src/controls/filter-control/drop-shadow/drop-shadow-item-label.tsx","../src/controls/filter-control/single-size/single-size-item-label.tsx","../src/controls/select-control-wrapper.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/components/conditional-tooltip.tsx","../src/utils/convert-toggle-options-to-atomic.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/controls/linked-dimensions-control.tsx","../src/controls/font-family-control/font-family-control.tsx","../src/components/item-selector.tsx","../src/hooks/use-filtered-items-list.ts","../src/controls/font-family-control/enqueue-font.tsx","../src/controls/url-control.tsx","../src/controls/link-control.tsx","../src/components/restricted-link-infotip.tsx","../src/controls/query-control.tsx","../src/components/autocomplete.tsx","../src/controls/switch-control.tsx","../src/controls/html-tag-control.tsx","../src/components/conditional-control-infotip.tsx","../src/controls/gap-control.tsx","../src/controls/aspect-ratio-control.tsx","../src/controls/svg-media-control.tsx","../src/components/enable-unfiltered-modal.tsx","../src/controls/background-control/background-control.tsx","../src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx","../src/env.ts","../src/controls/background-control/background-gradient-color-control.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx","../src/controls/background-control/background-overlay/use-background-tabs-history.ts","../src/controls/repeatable-control.tsx","../src/controls/key-value-control.tsx","../src/utils/escape-html-attr.ts","../src/controls/position-control.tsx","../src/controls/transform-control/transform-repeater-control.tsx","../src/hooks/use-element-can-have-children.ts","../src/controls/transform-control/initial-values.ts","../src/controls/transform-control/transform-content.tsx","../src/controls/transform-control/functions/move.tsx","../src/controls/transform-control/functions/axis-row.tsx","../src/controls/transform-control/functions/rotate.tsx","../src/controls/transform-control/functions/scale.tsx","../src/controls/transform-control/functions/scale-axis-row.tsx","../src/controls/transform-control/functions/skew.tsx","../src/controls/transform-control/use-transform-tabs-history.tsx","../src/controls/transform-control/transform-icon.tsx","../src/controls/transform-control/transform-label.tsx","../src/controls/transform-control/transform-settings-control.tsx","../src/controls/transform-control/transform-base-controls/children-perspective-control.tsx","../src/controls/transform-control/transform-base-controls/transform-origin-control.tsx","../src/controls/transition-control/transition-repeater-control.tsx","../src/controls/selection-size-control.tsx","../src/controls/transition-control/data.ts","../src/controls/transition-control/trainsition-events.ts","../src/controls/transition-control/transition-selector.tsx","../src/controls/date-time-control.tsx","../src/controls/inline-editing-control.tsx","../src/components/inline-editor.tsx","../src/utils/inline-editing.ts","../src/components/inline-editor-toolbar.tsx","../src/components/url-popover.tsx","../src/components/icon-buttons/clear-icon-button.tsx","../src/components/repeater/repeater.tsx","../src/components/size/unstable-size-field.tsx","../src/hooks/use-size-value.ts","../src/components/size/unit-select.tsx","../src/components/size/unstable-size-input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { imagePropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { type MediaType } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\nimport { ImageMediaControl } from './image-media-control';\nimport { SelectControl } from './select-control';\n\ntype ImageControlProps = {\n\tsizes: { label: string; value: string }[];\n\tlabel?: string;\n};\n\nexport const ImageControl = createControl( ( { sizes, label = __( 'Image', 'elementor' ) }: ImageControlProps ) => {\n\tconst propContext = useBoundProp( imagePropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<ImageSrcControl />\n\t\t\t\t<Grid container gap={ 1.5 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Resolution', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<ImageSizeControl sizes={ sizes } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ImageSrcControl = () => {\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst mediaTypes: MediaType[] = allowSvgUpload ? [ 'image', 'svg' ] : [ 'image' ];\n\n\treturn (\n\t\t<PropKeyProvider bind={ 'src' }>\n\t\t\t<ImageMediaControl mediaTypes={ mediaTypes } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst ImageSizeControl = ( { sizes }: { sizes: ImageControlProps[ 'sizes' ] } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t<SelectControl options={ sizes } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { type CreateOptions, type PropKey, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { HookOutsideProviderError } from './errors';\n\ntype Action = {\n\ttype: string;\n\tpayload?: object;\n};\n\nexport type SetValueMeta< TAction = Action > = {\n\tbind?: PropKey;\n\tvalidation?: ( value: PropValue ) => boolean;\n\taction?: TAction;\n\twithHistory?: boolean;\n};\n\nexport type SetValue< T > = ( value: T, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\ntype PropContext< T extends PropValue, P extends PropType > = {\n\tsetValue: SetValue< T >;\n\tvalue: T | null;\n\tpropType: P;\n\tplaceholder?: T;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n};\n\nconst PropContext = createContext< PropContext< PropValue, PropType > | null >( null );\n\nexport type PropProviderProps< T extends PropValue, P extends PropType > = React.PropsWithChildren<\n\tPropContext< T, P >\n>;\n\nexport const PropProvider = < T extends PropValue, P extends PropType >( {\n\tchildren,\n\tvalue,\n\tsetValue,\n\tpropType,\n\tplaceholder,\n\tisDisabled,\n}: PropProviderProps< T, P > ) => {\n\treturn (\n\t\t<PropContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tvalue,\n\t\t\t\tpropType,\n\t\t\t\tsetValue: setValue as SetValue< PropValue >,\n\t\t\t\tplaceholder,\n\t\t\t\tisDisabled,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</PropContext.Provider>\n\t);\n};\n\nexport const usePropContext = < T extends PropValue, P extends PropType >() => {\n\tconst context = useContext( PropContext ) as PropContext< T, P > | null;\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: {\n\t\t\t\thook: 'usePropContext',\n\t\t\t\tprovider: 'PropProvider',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { createError } from '@elementor/utils';\n\nexport const MissingPropTypeError = createError( {\n\tcode: 'missing_prop_provider_prop_type',\n\tmessage: 'Prop type is missing',\n} );\n\nexport const UnsupportedParentError = createError( {\n\tcode: 'unsupported_prop_provider_prop_type',\n\tmessage: 'Parent prop type is not supported',\n} );\n\nexport const HookOutsideProviderError = createError( {\n\tcode: 'hook_outside_provider',\n\tmessage: 'Hook used outside of provider',\n} );\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport {\n\ttype ArrayPropType,\n\ttype ArrayPropValue,\n\ttype CreateOptions,\n\ttype ObjectPropType,\n\ttype ObjectPropValue,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { HookOutsideProviderError, MissingPropTypeError, UnsupportedParentError } from './errors';\nimport { type SetValue, usePropContext } from './prop-context';\n\nexport type PropKeyContextValue< T, P > = {\n\tbind: PropKey;\n\tsetValue: SetValue< T >;\n\tvalue: T;\n\tpropType: P;\n\tplaceholder?: T;\n\tpath: PropKey[];\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nconst PropKeyContext = createContext< PropKeyContextValue< PropValue, PropType > | null >( null );\n\ntype PropKeyProviderProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const PropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst { propType } = usePropContext();\n\n\tif ( ! propType ) {\n\t\tthrow new MissingPropTypeError( { context: { bind } } );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\treturn <ArrayPropKeyProvider bind={ bind }>{ children }</ArrayPropKeyProvider>;\n\t}\n\n\tif ( propType.kind === 'object' ) {\n\t\treturn <ObjectPropKeyProvider bind={ bind }>{ children }</ObjectPropKeyProvider>;\n\t}\n\n\tthrow new UnsupportedParentError( { context: { propType } } );\n};\n\nconst ObjectPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ObjectPropValue[ 'value' ], ObjectPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue: SetValue< PropValue > = ( value, options, meta ) => {\n\t\tconst newValue = {\n\t\t\t...context.value,\n\t\t\t[ bind ]: value,\n\t\t};\n\n\t\treturn context?.setValue( newValue, options, { ...meta, bind } );\n\t};\n\n\tconst value = context.value?.[ bind ];\n\tconst placeholder = context.placeholder?.[ bind ];\n\n\tconst propType = context.propType.shape[ bind ];\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, placeholder, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nconst ArrayPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ArrayPropValue[ 'value' ], ArrayPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue = ( value: PropValue, options?: CreateOptions ) => {\n\t\tconst newValue = [ ...( context.value ?? [] ) ];\n\n\t\tnewValue[ Number( bind ) ] = value;\n\n\t\treturn context?.setValue( newValue, options, { bind } );\n\t};\n\n\tconst value = context.value?.[ Number( bind ) ];\n\n\tconst propType = context.propType.item_prop_type;\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nexport const usePropKeyContext = () => {\n\tconst context = useContext( PropKeyContext );\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: { hook: 'usePropKeyContext', provider: 'PropKeyProvider' },\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { useState } from 'react';\nimport {\n\ttype CreateOptions,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropTypeUtil,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { MissingPropTypeError } from './errors';\nimport { type SetValue, type SetValueMeta } from './prop-context';\nimport { type PropKeyContextValue, usePropKeyContext } from './prop-key-context';\n\ntype UseBoundProp< TValue extends PropValue > = {\n\tbind: PropKey;\n\tsetValue: SetValue< TValue | null >;\n\tvalue: TValue;\n\tpropType: PropType;\n\tplaceholder?: TValue;\n\tpath: PropKey[];\n\trestoreValue: () => void;\n\tresetValue: () => void;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\ntype EnhancedPropKeyContextValue< T, P > = PropKeyContextValue< T, P > & {\n\tresetValue: () => void;\n};\n\nexport function useBoundProp<\n\tT extends PropValue = PropValue,\n\tP extends PropType = PropType,\n>(): EnhancedPropKeyContextValue< T, P >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil: PropTypeUtil< TKey, TValue >\n): UseBoundProp< TValue >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil?: PropTypeUtil< TKey, TValue >\n) {\n\tconst propKeyContext = usePropKeyContext();\n\n\tconst { isValid, validate, restoreValue } = useValidation( propKeyContext.propType );\n\n\tconst disabled = propKeyContext.isDisabled?.( propKeyContext.propType );\n\n\tconst resetValue = () => {\n\t\tpropKeyContext.setValue( propKeyContext.propType.initial_value ?? null );\n\t};\n\n\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn {\n\t\t\t...propKeyContext,\n\t\t\tdisabled,\n\t\t\tresetValue,\n\t\t} as EnhancedPropKeyContextValue< PropValue, PropType >;\n\t}\n\n\tfunction setValue( value: TValue | null, options: CreateOptions, meta?: SetValueMeta ) {\n\t\tif ( ! validate( value, meta?.validation ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value === null ) {\n\t\t\treturn propKeyContext?.setValue( null, options, meta );\n\t\t}\n\n\t\treturn propKeyContext?.setValue( propTypeUtil?.create( value, options ), {}, meta );\n\t}\n\n\tconst propType = resolveUnionPropType( propKeyContext.propType, propTypeUtil.key );\n\n\tconst value = propTypeUtil.extract( propKeyContext.value ?? propType.default ?? null );\n\tconst placeholder = propTypeUtil.extract( propKeyContext.placeholder ?? null );\n\n\treturn {\n\t\t...propKeyContext,\n\t\tpropType,\n\t\tsetValue,\n\t\tvalue: isValid ? value : null,\n\t\trestoreValue,\n\t\tplaceholder,\n\t\tdisabled,\n\t\tresetValue,\n\t};\n}\n\nconst useValidation = ( propType: PropType ) => {\n\tconst [ isValid, setIsValid ] = useState( true );\n\n\t// If the value does not pass the prop type validation, set the isValid state to false.\n\t// This will prevent the value from being set in the model, and its fallback will be used instead.\n\tconst validate = ( value: PropValue | null, validation?: ( value: PropValue ) => boolean ) => {\n\t\tlet valid = true;\n\n\t\tif ( propType.settings.required && value === null ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tif ( validation && ! validation( value ) ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tsetIsValid( valid );\n\n\t\treturn valid;\n\t};\n\n\tconst restoreValue = () => setIsValid( true );\n\n\treturn {\n\t\tisValid,\n\t\tsetIsValid,\n\t\tvalidate,\n\t\trestoreValue,\n\t};\n};\n\n// utils\nconst resolveUnionPropType = ( propType: PropType, key: string ): PropType => {\n\tlet resolvedPropType = propType;\n\n\tif ( propType.kind === 'union' ) {\n\t\tresolvedPropType = propType.prop_types[ key ];\n\t}\n\n\tif ( ! resolvedPropType ) {\n\t\tthrow new MissingPropTypeError( { context: { key } } );\n\t}\n\n\treturn resolvedPropType;\n};\n","import * as React from 'react';\nimport { FormLabel, type FormLabelProps } from '@elementor/ui';\n\nexport const ControlFormLabel = ( props: FormLabelProps ) => {\n\treturn <FormLabel size=\"tiny\" { ...props } />;\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { type FormLabelProps, Stack } from '@elementor/ui';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { ControlFormLabel } from './control-form-label';\n\ntype ControlLabelProps = FormLabelProps & PropsWithChildren< object >;\n\nexport const ControlLabel = ( { children, ...props }: ControlLabelProps ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel { ...props }>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type PropType } from '@elementor/editor-props';\n\nimport { useControlAdornments } from './control-adornments-context';\n\nexport function ControlAdornments( {\n\tcustomContext,\n}: {\n\tcustomContext?: {\n\t\tpath: string[];\n\t\tpropType: PropType;\n\t};\n} ) {\n\tconst items = useControlAdornments();\n\n\tif ( items?.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ items.map( ( { Adornment, id } ) => (\n\t\t\t\t<Adornment key={ id } customContext={ customContext } />\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropType } from '@elementor/editor-props';\n\nexport type AdornmentComponent = ComponentType< { customContext?: { path: string[]; propType: PropType } } >;\ntype ControlAdornmentsItem = {\n\tid: string;\n\tAdornment: AdornmentComponent;\n};\n\ntype ControlAdornmentsContext = {\n\titems?: ControlAdornmentsItem[];\n};\n\nconst Context = createContext< ControlAdornmentsContext | null >( null );\n\ntype ControlAdornmentsProviderProps = PropsWithChildren< ControlAdornmentsContext >;\n\nexport const ControlAdornmentsProvider = ( { children, items }: ControlAdornmentsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlAdornments = () => {\n\tconst context = useContext( Context );\n\n\treturn context?.items ?? [];\n};\n","import * as React from 'react';\nimport { type ComponentProps, type ComponentType } from 'react';\nimport { ErrorBoundary } from '@elementor/ui';\n\nimport { useControlReplacement } from './control-replacements';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\nconst brandSymbol = Symbol( 'control' );\n\nexport type ControlComponent< TComponent extends AnyComponentType = AnyComponentType > = TComponent & {\n\t[ brandSymbol ]: true;\n};\n\nexport function createControl< T extends AnyComponentType >( Control: T ) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst { ControlToRender, OriginalControl, isReplaced } = useControlReplacement( Control );\n\t\tconst controlProps = isReplaced ? { ...props, OriginalControl } : props;\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<ControlToRender { ...controlProps } />\n\t\t\t</ErrorBoundary>\n\t\t);\n\t} ) as ControlComponent< T >;\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from './bound-prop-context';\n\ntype ControlComponent = ComponentType< object & { OriginalControl: ComponentType } >;\nexport type ControlReplacement = {\n\tid?: string;\n\tcomponent: ControlComponent;\n\tcondition: ( { value }: ConditionArgs ) => boolean;\n};\n\ntype ConditionArgs = {\n\tvalue: PropValue;\n\tplaceholder?: PropValue;\n};\n\ntype Props = PropsWithChildren< { replacements: ControlReplacement[] } >;\n\nconst ControlReplacementContext = createContext< ControlReplacement[] >( [] );\n\nexport const ControlReplacementsProvider = ( { replacements, children }: Props ) => {\n\treturn <ControlReplacementContext.Provider value={ replacements }>{ children }</ControlReplacementContext.Provider>;\n};\n\nexport const useControlReplacement = ( OriginalComponent: ControlComponent ) => {\n\tconst { value, placeholder } = useBoundProp();\n\tconst replacements = useContext( ControlReplacementContext );\n\n\ttry {\n\t\tconst replacement = replacements.find( ( r ) => r.condition( { value, placeholder } ) );\n\n\t\treturn {\n\t\t\tControlToRender: replacement?.component ?? OriginalComponent,\n\t\t\tOriginalControl: OriginalComponent,\n\t\t\tisReplaced: !! replacement,\n\t\t};\n\t} catch {\n\t\treturn { ControlToRender: OriginalComponent, OriginalControl: OriginalComponent };\n\t}\n};\n\nexport const createControlReplacementsRegistry = () => {\n\tconst controlReplacements: ControlReplacement[] = [];\n\n\tfunction registerControlReplacement( replacement: ControlReplacement ) {\n\t\tcontrolReplacements.push( replacement );\n\t}\n\n\tfunction getControlReplacements() {\n\t\treturn controlReplacements;\n\t}\n\n\treturn { registerControlReplacement, getControlReplacements };\n};\n","import { useMutation, useQuery, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\n\nexport const UNFILTERED_FILES_UPLOAD_KEY = 'elementor_unfiltered_files_upload';\n\nconst unfilteredFilesQueryKey = {\n\tqueryKey: [ UNFILTERED_FILES_UPLOAD_KEY ],\n};\n\ntype Value = '0' | '1';\n\nexport const useUnfilteredFilesUpload = () =>\n\tuseQuery( {\n\t\t...unfilteredFilesQueryKey,\n\t\tqueryFn: (): Promise< boolean > =>\n\t\t\tapiClient.getElementorSetting< Value >( UNFILTERED_FILES_UPLOAD_KEY ).then( ( res ) => {\n\t\t\t\treturn formatResponse( res );\n\t\t\t} ),\n\t\tstaleTime: Infinity,\n\t} );\n\nexport function useUpdateUnfilteredFilesUpload() {\n\tconst queryClient = useQueryClient();\n\n\tconst mutate = useMutation( {\n\t\tmutationFn: ( { allowUnfilteredFilesUpload }: { allowUnfilteredFilesUpload: boolean } ) =>\n\t\t\tapiClient.updateElementorSetting< Value >(\n\t\t\t\tUNFILTERED_FILES_UPLOAD_KEY,\n\t\t\t\tallowUnfilteredFilesUpload ? '1' : '0'\n\t\t\t),\n\t\tonSuccess: () => queryClient.invalidateQueries( unfilteredFilesQueryKey ),\n\t} );\n\n\treturn mutate;\n}\n\nconst formatResponse = ( response: Value ): boolean => {\n\treturn Boolean( response === '1' );\n};\n","import { httpService } from '@elementor/http-client';\n\nconst ELEMENTOR_SETTING_URL = 'elementor/v1/settings';\n\ntype Response< T > = { data: { value: T }; success: boolean };\n\nexport const apiClient = {\n\tgetElementorSetting: < T >( key: string ) =>\n\t\thttpService()\n\t\t\t.get< Response< T > >( `${ ELEMENTOR_SETTING_URL }/${ key }` )\n\t\t\t.then( ( res ) => formatSettingResponse( res.data ) ),\n\tupdateElementorSetting: < T >( key: string, value: T ) =>\n\t\thttpService().put( `${ ELEMENTOR_SETTING_URL }/${ key }`, { value } ),\n};\n\nconst formatSettingResponse = < T >( response: Response< T > ) => response.data.value;\n","import * as React from 'react';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from '@elementor/ui';\nimport { type MediaType, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype ImageMediaControlProps = {\n\tmediaTypes?: MediaType[];\n};\n\nexport const ImageMediaControl = createControl( ( { mediaTypes = [ 'image' ] }: ImageMediaControlProps ) => {\n\tconst { value, setValue, propType } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes,\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Card variant=\"outlined\">\n\t\t\t\t<CardMedia image={ src } sx={ { height: propType.meta.isDynamic ? 134 : 150 } }>\n\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t<Stack justifyContent=\"center\" alignItems=\"center\" width=\"100%\" height=\"100%\">\n\t\t\t\t\t\t\t<CircularProgress />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<></>\n\t\t\t\t\t) }\n\t\t\t\t</CardMedia>\n\t\t\t\t<CardOverlay>\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'browse' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Select image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t</CardOverlay>\n\t\t\t</Card>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { FloatingActionsBar } from '@elementor/editor-ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { useControlActions } from './control-actions-context';\n\ntype ControlActionsProps = PropsWithChildren< object >;\n\nexport default function ControlActions( { children }: ControlActionsProps ) {\n\tconst { items } = useControlActions();\n\tconst { disabled } = useBoundProp();\n\n\tif ( items.length === 0 || disabled ) {\n\t\treturn children;\n\t}\n\n\tconst menuItems = items.map( ( { MenuItem, id } ) => <MenuItem key={ id } /> );\n\n\treturn <FloatingActionsBar actions={ menuItems }>{ children }</FloatingActionsBar>;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\nexport type ControlActionsItems = Array< {\n\tid: string;\n\tMenuItem: React.ComponentType;\n} >;\n\ntype ControlActionsContext = {\n\titems: ControlActionsItems;\n};\n\nconst Context = createContext< ControlActionsContext | null >( null );\n\ntype ControlActionsProviderProps = PropsWithChildren< ControlActionsContext >;\n\nexport const ControlActionsProvider = ( { children, items }: ControlActionsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlActions = () => {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useControlActions must be used within a ControlActionsProvider' );\n\t}\n\n\treturn context;\n};\n","import * as React from 'react';\nimport { stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Select, type SelectChangeEvent, type SelectProps, Typography } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype SelectControlProps = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n\tMenuProps?: SelectProps[ 'MenuProps' ];\n\tariaLabel?: string;\n};\n\nconst DEFAULT_MENU_PROPS = {\n\tMenuListProps: {\n\t\tsx: {\n\t\t\tmaxHeight: '160px',\n\t\t},\n\t},\n};\n\nexport const SelectControl = createControl(\n\t( { options, onChange, MenuProps = DEFAULT_MENU_PROPS, ariaLabel }: SelectControlProps ) => {\n\t\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\t\tconst newValue = event.target.value || null;\n\n\t\t\tonChange?.( newValue, value );\n\t\t\tsetValue( newValue );\n\t\t};\n\t\tconst isDisabled = disabled || options.length === 0;\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Select\n\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tMenuProps={ MenuProps }\n\t\t\t\t\taria-label={ ariaLabel || placeholder }\n\t\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\t\tconst findOptionByValue = ( searchValue: string | null ) =>\n\t\t\t\t\t\t\toptions.find( ( opt ) => opt.value === searchValue );\n\n\t\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\t\tif ( placeholder ) {\n\t\t\t\t\t\t\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\t\t\t\t\t\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t\t\t\t\t\t\t{ displayText }\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst option = findOptionByValue( selectedValue );\n\t\t\t\t\t\treturn option?.label || selectedValue;\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\tfullWidth\n\t\t\t\t>\n\t\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) ) }\n\t\t\t\t</Select>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { type SxProps, TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const TextControl = createControl(\n\t( {\n\t\tplaceholder,\n\t\terror,\n\t\tinputValue,\n\t\tinputDisabled,\n\t\thelperText,\n\t\tsx,\n\t\tariaLabel,\n\t}: {\n\t\tplaceholder?: string;\n\t\terror?: boolean;\n\t\tinputValue?: string;\n\t\tinputDisabled?: boolean;\n\t\thelperText?: string;\n\t\tsx?: SxProps;\n\t\tariaLabel?: string;\n\t} ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ inputDisabled ?? disabled }\n\t\t\t\t\tvalue={ inputValue ?? value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\terror={ error }\n\t\t\t\t\thelperText={ helperText }\n\t\t\t\t\tsx={ sx }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\tplaceholder?: string;\n\tariaLabel?: string;\n};\n\nexport const TextAreaControl = createControl( ( { placeholder, ariaLabel }: Props ) => {\n\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.value );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tmultiline\n\t\t\t\tfullWidth\n\t\t\t\tminRows={ 5 }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useMemo } from 'react';\nimport { type PropType, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { SizeInput } from '../components/size-control/size-input';\nimport { TextFieldPopover } from '../components/text-field-popover';\nimport { createControl } from '../create-control';\nimport { useSizeExtendedOptions } from '../hooks/use-size-extended-options';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport {\n\ttype AngleUnit,\n\tangleUnits,\n\tDEFAULT_SIZE,\n\tDEFAULT_UNIT,\n\ttype ExtendedOption,\n\tisUnitExtendedOption,\n\ttype LengthUnit,\n\tlengthUnits,\n\ttype TimeUnit,\n\ttimeUnits,\n\ttype Unit,\n} from '../utils/size-control';\n\ntype SizeValue = SizePropValue[ 'value' ];\n\ntype SizeVariant = 'length' | 'angle' | 'time';\n\ntype UnitProps< T extends readonly Unit[] > = {\n\tunits?: T;\n\tdefaultUnit?: T[ number ];\n};\n\ntype BaseSizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\textendedOptions?: ExtendedOption[];\n\tdisableCustom?: boolean;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tmin?: number;\n\tenablePropTypeUnits?: boolean;\n\tid?: string;\n\tariaLabel?: string;\n};\n\ntype LengthSizeControlProps = BaseSizeControlProps &\n\tUnitProps< LengthUnit[] > & {\n\t\tvariant: 'length';\n\t};\n\ntype AngleSizeControlProps = BaseSizeControlProps &\n\tUnitProps< AngleUnit[] > & {\n\t\tvariant: 'angle';\n\t};\n\ntype TimeSizeControlProps = BaseSizeControlProps &\n\tUnitProps< TimeUnit[] > & {\n\t\tvariant: 'time';\n\t};\n\nexport type SizeControlProps = LengthSizeControlProps | AngleSizeControlProps | TimeSizeControlProps;\n\ntype State = {\n\tnumeric: number;\n\tcustom: string;\n\tunit: Unit | ExtendedOption;\n};\n\nconst defaultSelectedUnit: Record< SizeControlProps[ 'variant' ], Unit > = {\n\tlength: 'px',\n\tangle: 'deg',\n\ttime: 'ms',\n} as const;\n\nconst defaultUnits: Record< SizeControlProps[ 'variant' ], Unit[] > = {\n\tlength: [ ...lengthUnits ] as LengthUnit[],\n\tangle: [ ...angleUnits ] as AngleUnit[],\n\ttime: [ ...timeUnits ] as TimeUnit[],\n} as const;\n\nexport const CUSTOM_SIZE_LABEL = 'fx';\n\nexport const SizeControl = createControl(\n\t( {\n\t\tvariant = 'length' as SizeControlProps[ 'variant' ],\n\t\tdefaultUnit,\n\t\tunits,\n\t\tplaceholder,\n\t\tstartIcon,\n\t\tanchorRef,\n\t\textendedOptions,\n\t\tdisableCustom,\n\t\tmin = 0,\n\t\tenablePropTypeUnits = false,\n\t\tid,\n\t\tariaLabel,\n\t}: Omit< SizeControlProps, 'variant' > & { variant?: SizeVariant } ) => {\n\t\tconst {\n\t\t\tvalue: sizeValue,\n\t\t\tsetValue: setSizeValue,\n\t\t\tdisabled,\n\t\t\trestoreValue,\n\t\t\tplaceholder: externalPlaceholder,\n\t\t\tpropType,\n\t\t} = useBoundProp( sizePropTypeUtil );\n\n\t\tconst actualDefaultUnit = defaultUnit ?? externalPlaceholder?.unit ?? defaultSelectedUnit[ variant ];\n\t\tconst activeBreakpoint = useActiveBreakpoint();\n\t\tconst actualExtendedOptions = useSizeExtendedOptions( extendedOptions || [], disableCustom ?? false );\n\t\tconst actualUnits = resolveUnits( propType, enablePropTypeUnits, variant, units, actualExtendedOptions );\n\n\t\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\t\tconst memorizedExternalState = useMemo(\n\t\t\t() => createStateFromSizeProp( sizeValue, actualDefaultUnit ),\n\t\t\t[ sizeValue, actualDefaultUnit ]\n\t\t);\n\n\t\tconst [ state, setState ] = useSyncExternalState( {\n\t\t\texternal: memorizedExternalState,\n\t\t\tsetExternal: ( newState: State | null, options, meta ) =>\n\t\t\t\tsetSizeValue( extractValueFromState( newState ), options, meta ),\n\t\t\tpersistWhen: ( newState ) => !! extractValueFromState( newState ),\n\t\t\tfallback: ( newState ) => ( {\n\t\t\t\tunit: newState?.unit ?? actualDefaultUnit,\n\t\t\t\tnumeric: newState?.numeric ?? DEFAULT_SIZE,\n\t\t\t\tcustom: newState?.custom ?? '',\n\t\t\t} ),\n\t\t} );\n\n\t\tconst { size: controlSize = DEFAULT_SIZE, unit: controlUnit = actualDefaultUnit } =\n\t\t\textractValueFromState( state, true ) || {};\n\n\t\tconst handleUnitChange = ( newUnit: Unit | ExtendedOption ) => {\n\t\t\tif ( newUnit === 'custom' ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\n\t\t\tsetState( ( prev ) => ( { ...prev, unit: newUnit } ) );\n\t\t};\n\n\t\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst size = event.target.value;\n\t\t\tconst isInputValid = event.target.validity.valid;\n\n\t\t\tif ( controlUnit === 'auto' ) {\n\t\t\t\tsetState( ( prev ) => ( { ...prev, unit: controlUnit } ) );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetState(\n\t\t\t\t( prev ) => ( {\n\t\t\t\t\t...prev,\n\t\t\t\t\t[ controlUnit === 'custom' ? 'custom' : 'numeric' ]: formatSize( size, controlUnit ),\n\t\t\t\t\tunit: controlUnit,\n\t\t\t\t} ),\n\t\t\t\tundefined,\n\t\t\t\t{ validation: () => isInputValid }\n\t\t\t);\n\t\t};\n\n\t\tconst onInputClick = ( event: React.MouseEvent ) => {\n\t\t\tif ( ( event.target as HTMLElement ).closest( 'input' ) && 'custom' === state.unit ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\t\t};\n\n\t\tconst maybeClosePopup = React.useCallback( () => {\n\t\t\tif ( popupState && popupState.isOpen ) {\n\t\t\t\tpopupState.close();\n\t\t\t}\n\t\t}, [ popupState ] );\n\n\t\tuseEffect( () => {\n\t\t\tmaybeClosePopup();\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ activeBreakpoint ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SizeInput\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tsize={ controlSize }\n\t\t\t\t\tunit={ controlUnit }\n\t\t\t\t\tunits={ [ ...actualUnits ] }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\thandleSizeChange={ handleSizeChange }\n\t\t\t\t\thandleUnitChange={ handleUnitChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tonClick={ onInputClick }\n\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\tmin={ min }\n\t\t\t\t\tid={ id }\n\t\t\t\t\tariaLabel={ ariaLabel }\n\t\t\t\t/>\n\t\t\t\t{ anchorRef?.current && popupState.isOpen && (\n\t\t\t\t\t<TextFieldPopover\n\t\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\trestoreValue={ restoreValue }\n\t\t\t\t\t\tvalue={ controlSize as string }\n\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n\nfunction resolveUnits(\n\tpropType: PropType,\n\tenablePropTypeUnits: boolean,\n\tvariant: SizeVariant,\n\texternalUnits?: Unit[],\n\tactualExtendedOptions?: ExtendedOption[]\n) {\n\tconst fallback = [ ...defaultUnits[ variant ] ];\n\n\tif ( ! enablePropTypeUnits ) {\n\t\treturn [ ...( externalUnits ?? fallback ), ...( actualExtendedOptions || [] ) ];\n\t}\n\n\treturn ( propType.settings?.available_units as Unit[] ) ?? fallback;\n}\n\nfunction formatSize< TSize extends string | number >( size: TSize, unit: Unit | ExtendedOption ): TSize {\n\tif ( isUnitExtendedOption( unit ) ) {\n\t\treturn unit === 'auto' ? ( '' as TSize ) : ( String( size ?? '' ) as TSize );\n\t}\n\n\treturn size || size === 0 ? ( Number( size ) as TSize ) : ( NaN as TSize );\n}\n\nfunction createStateFromSizeProp(\n\tsizeValue: SizeValue | null,\n\tdefaultUnit: Unit | ExtendedOption,\n\tdefaultSize: string | number = '',\n\tcustomState: string = ''\n): State {\n\tconst unit = sizeValue?.unit ?? defaultUnit;\n\tconst size = sizeValue?.size ?? defaultSize;\n\n\treturn {\n\t\tnumeric:\n\t\t\t! isUnitExtendedOption( unit ) && ! isNaN( Number( size ) ) && ( size || size === 0 )\n\t\t\t\t? Number( size )\n\t\t\t\t: DEFAULT_SIZE,\n\t\tcustom: unit === 'custom' ? String( size ) : customState,\n\t\tunit,\n\t};\n}\n\nfunction extractValueFromState( state: State | null, allowEmpty: boolean = false ): SizeValue | null {\n\tif ( ! state ) {\n\t\treturn null;\n\t}\n\n\tif ( ! state?.unit ) {\n\t\treturn { size: DEFAULT_SIZE, unit: DEFAULT_UNIT };\n\t}\n\n\tconst { unit } = state;\n\n\tif ( unit === 'auto' ) {\n\t\treturn { size: '', unit };\n\t}\n\n\tif ( unit === 'custom' ) {\n\t\treturn { size: state.custom ?? '', unit: 'custom' };\n\t}\n\n\tconst numeric = state.numeric;\n\n\tif ( ! allowEmpty && ( numeric === undefined || numeric === null || Number.isNaN( numeric ) ) ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tsize: numeric,\n\t\tunit,\n\t};\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { Box, InputAdornment, type PopupState } from '@elementor/ui';\n\nimport ControlActions from '../../control-actions/control-actions';\nimport { type ExtendedOption, isUnitExtendedOption, type Unit } from '../../utils/size-control';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../size-control/text-field-inner-selection';\n\nconst RESTRICTED_KEYBOARD_SHORTCUT_UNITS = [ 'auto' ];\n\ntype SizeInputProps = {\n\tunit: Unit | ExtendedOption;\n\tsize: number | string;\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits: ( Unit | ExtendedOption )[];\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonFocus?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonClick?: ( event: React.MouseEvent< HTMLInputElement > ) => void;\n\thandleUnitChange: ( unit: Unit | ExtendedOption ) => void;\n\thandleSizeChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tpopupState: PopupState;\n\tdisabled?: boolean;\n\tmin?: number;\n\tid?: string;\n\tariaLabel?: string;\n};\n\nexport const SizeInput = ( {\n\tunits,\n\thandleUnitChange,\n\thandleSizeChange,\n\tplaceholder,\n\tstartIcon,\n\tonBlur,\n\tonFocus,\n\tonClick,\n\tsize,\n\tunit,\n\tpopupState,\n\tdisabled,\n\tmin,\n\tid,\n\tariaLabel,\n}: SizeInputProps ) => {\n\tconst unitInputBufferRef = useRef( '' );\n\tconst inputType = isUnitExtendedOption( unit ) ? 'text' : 'number';\n\tconst inputValue = ! isUnitExtendedOption( unit ) && Number.isNaN( size ) ? '' : size ?? '';\n\n\tconst handleKeyUp = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\n\t\tif ( ! /^[a-zA-Z%]$/.test( key ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst newChar = key.toLowerCase();\n\t\tconst updatedBuffer = ( unitInputBufferRef.current + newChar ).slice( -3 );\n\t\tunitInputBufferRef.current = updatedBuffer;\n\n\t\tconst matchedUnit =\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.includes( updatedBuffer ) ) ||\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.startsWith( newChar ) ) ||\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.includes( newChar ) );\n\n\t\tif ( matchedUnit ) {\n\t\t\thandleUnitChange( matchedUnit );\n\t\t}\n\t};\n\n\tconst popupAttributes = {\n\t\t'aria-controls': popupState.isOpen ? popupState.popupId : undefined,\n\t\t'aria-haspopup': true,\n\t};\n\n\tconst menuItemsAttributes = units.includes( 'custom' )\n\t\t? {\n\t\t\t\tcustom: popupAttributes,\n\t\t }\n\t\t: undefined;\n\n\tconst alternativeOptionLabels = {\n\t\tcustom: <MathFunctionIcon fontSize=\"tiny\" />,\n\t};\n\n\tconst InputProps = {\n\t\t...popupAttributes,\n\t\treadOnly: isUnitExtendedOption( unit ),\n\t\tautoComplete: 'off',\n\t\tonClick,\n\t\tonFocus,\n\t\tstartAdornment: startIcon ? (\n\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t{ startIcon }\n\t\t\t</InputAdornment>\n\t\t) : undefined,\n\t\tendAdornment: (\n\t\t\t<SelectionEndAdornment\n\t\t\t\tdisabled={ disabled }\n\t\t\t\toptions={ units }\n\t\t\t\tonClick={ handleUnitChange }\n\t\t\t\tvalue={ unit }\n\t\t\t\talternativeOptionLabels={ alternativeOptionLabels }\n\t\t\t\tmenuItemsAttributes={ menuItemsAttributes }\n\t\t\t/>\n\t\t),\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Box>\n\t\t\t\t<TextFieldInnerSelection\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\ttype={ inputType }\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\tonKeyUp={ handleKeyUp }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tInputProps={ InputProps }\n\t\t\t\t\tinputProps={ { min, step: 'any', 'aria-label': ariaLabel } }\n\t\t\t\t\tisPopoverOpen={ popupState.isOpen }\n\t\t\t\t\tid={ id }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</ControlActions>\n\t);\n};\n","export const lengthUnits = [ 'px', '%', 'em', 'rem', 'vw', 'vh', 'ch' ] as const;\nexport const angleUnits = [ 'deg', 'rad', 'grad', 'turn' ] as const;\nexport const timeUnits = [ 's', 'ms' ] as const;\nconst defaultExtendedOptions = [ 'auto', 'custom' ] as const;\n\nexport const DEFAULT_UNIT = 'px';\nexport const DEFAULT_SIZE = NaN;\n\nexport type LengthUnit = ( typeof lengthUnits )[ number ];\nexport type AngleUnit = ( typeof angleUnits )[ number ];\nexport type TimeUnit = ( typeof timeUnits )[ number ];\nexport type ExtendedOption = ( typeof defaultExtendedOptions )[ number ];\n\nexport type Unit = LengthUnit | AngleUnit | TimeUnit;\n\nexport function isUnitExtendedOption( unit: Unit | ExtendedOption ): unit is ExtendedOption {\n\treturn defaultExtendedOptions.includes( unit as ExtendedOption );\n}\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { type PropValue, sizePropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tButton,\n\tInputAdornment,\n\tMenu,\n\tstyled,\n\ttype TextFieldProps,\n\tusePopupState,\n} from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { DEFAULT_UNIT } from '../../utils/size-control';\nimport { NumberInput } from '../number-input';\n\ntype TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tInputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n\tinputProps?: TextFieldProps[ 'inputProps' ];\n\tdisabled?: boolean;\n\tisPopoverOpen?: boolean;\n\tid?: string;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t(\n\t\t{\n\t\t\tplaceholder,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tonBlur,\n\t\t\tonKeyDown,\n\t\t\tonKeyUp,\n\t\t\tInputProps,\n\t\t\tinputProps,\n\t\t\tdisabled,\n\t\t\tisPopoverOpen,\n\t\t\tid,\n\t\t}: TextFieldInnerSelectionProps,\n\t\tref\n\t) => {\n\t\tconst { placeholder: boundPropPlaceholder } = useBoundProp( sizePropTypeUtil );\n\n\t\tconst getCursorStyle = () => ( {\n\t\t\tinput: { cursor: InputProps.readOnly ? 'default !important' : undefined },\n\t\t} );\n\n\t\treturn (\n\t\t\t<NumberInput\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ getCursorStyle() }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonInput={ onChange }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonKeyUp={ onKeyUp }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tfocused={ isPopoverOpen ? true : undefined }\n\t\t\t\tplaceholder={ placeholder ?? ( String( boundPropPlaceholder?.size ?? '' ) || undefined ) }\n\t\t\t\tInputProps={ InputProps }\n\t\t\t\tinputProps={ inputProps }\n\t\t\t\tid={ id }\n\t\t\t/>\n\t\t);\n\t}\n);\n\ntype SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n\talternativeOptionLabels?: { [ key in T ]?: React.ReactNode };\n\tmenuItemsAttributes?: { [ key in T ]?: Record< string, unknown > };\n\tdisabled?: boolean;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\talternativeOptionLabels = {} as Record< T, React.ReactNode >,\n\tonClick,\n\tvalue,\n\tmenuItemsAttributes = {},\n\tdisabled,\n}: SelectionEndAdornmentProps< T > ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\t\tpopupState.close();\n\t};\n\n\tconst { placeholder, showPrimaryColor } = useUnitPlaceholder( value );\n\tconst itemStyles = {\n\t\tdisplay: 'flex',\n\t\tflexDirection: 'column',\n\t\tjustifyContent: 'center',\n\t};\n\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<StyledButton\n\t\t\t\tisPrimaryColor={ showPrimaryColor }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ placeholder ?? alternativeOptionLabels[ value ] ?? value }\n\t\t\t</StyledButton>\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\tkey={ option }\n\t\t\t\t\t\tonClick={ () => handleMenuItemClick( index ) }\n\t\t\t\t\t\t{ ...menuItemsAttributes?.[ option ] }\n\t\t\t\t\t\tprimaryTypographyProps={ {\n\t\t\t\t\t\t\tvariant: 'caption',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t...itemStyles,\n\t\t\t\t\t\t\t\tlineHeight: '1',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuItemTextProps={ {\n\t\t\t\t\t\t\tsx: itemStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ alternativeOptionLabels[ option ] ?? option.toUpperCase() }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\n};\n\nfunction useUnitPlaceholder( value: string ) {\n\tconst { value: externalValue, placeholder } = useBoundProp( sizePropTypeUtil );\n\tconst size = externalValue?.size;\n\tconst unit = externalValue?.unit;\n\n\tconst isCustomUnitWithSize = value === 'custom' && Boolean( size );\n\tconst isAutoUnit = value === 'auto';\n\tconst showPrimaryColor = isAutoUnit || isCustomUnitWithSize || Boolean( size );\n\n\tif ( ! placeholder ) {\n\t\treturn {\n\t\t\tplaceholder: null,\n\t\t\tshowPrimaryColor,\n\t\t};\n\t}\n\n\tconst isMissingUnit = ! unit;\n\tconst showPlaceholder = isMissingUnit && value === DEFAULT_UNIT;\n\n\treturn {\n\t\tplaceholder: showPlaceholder ? placeholder.unit : undefined,\n\t\tshowPrimaryColor,\n\t};\n}\n\nconst StyledButton = styled( Button, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPrimaryColor',\n} )( ( { isPrimaryColor, theme } ) => ( {\n\tcolor: isPrimaryColor ? theme.palette.text.primary : theme.palette.text.tertiary,\n\tfont: 'inherit',\n\tminWidth: 'initial',\n\ttextTransform: 'uppercase',\n} ) );\n","import * as React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { TextField, type TextFieldProps } from '@elementor/ui';\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+' ];\n\nexport const NumberInput = forwardRef( ( props: TextFieldProps, ref ) => {\n\tconst [ key, setKey ] = useState< number >( 0 );\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tblockRestrictedKeys( event, props.inputProps?.min );\n\n\t\tprops.onKeyDown?.( event );\n\t};\n\n\tconst handleBlur = ( event: React.FocusEvent< HTMLInputElement > ) => {\n\t\tprops.onBlur?.( event );\n\n\t\tconst { valid } = event.target.validity;\n\n\t\t// HTML number input quirk: invalid input (e.g. \"-9-\") returns value=\"\" but displays \"-9-\" to user,\n\t\t// so when we revert to last valid value we must re-mount the component to actually display it.\n\t\tif ( ! valid ) {\n\t\t\tsetKey( ( prev ) => prev + 1 );\n\t\t}\n\t};\n\n\treturn <TextField { ...props } ref={ ref } key={ key } onKeyDown={ handleKeyDown } onBlur={ handleBlur } />;\n} );\n\nfunction blockRestrictedKeys( event: React.KeyboardEvent< HTMLInputElement >, min: number ) {\n\tconst restrictedInputKeys = [ ...RESTRICTED_INPUT_KEYS ];\n\n\tif ( min >= 0 ) {\n\t\trestrictedInputKeys.push( '-' );\n\t}\n\n\tif ( restrictedInputKeys.includes( event.key ) ) {\n\t\tevent.preventDefault();\n\t}\n}\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n};\n\nconst SIZE = 'tiny';\n\nexport const TextFieldPopover = ( props: Props ) => {\n\tconst { popupState, restoreValue, anchorRef, value, onChange } = props;\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => {\n\t\t\t\tif ( inputRef.current ) {\n\t\t\t\t\tinputRef.current.focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\twidth: anchorRef.current?.offsetWidth + 'px',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'CSS function', 'elementor' ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t\ticon={ <MathFunctionIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<TextField\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tfullWidth\n\t\t\t\tinputProps={ {\n\t\t\t\t\tref: inputRef,\n\t\t\t\t} }\n\t\t\t\tsx={ { pt: 0, pr: 1.5, pb: 1.5, pl: 1.5 } }\n\t\t\t/>\n\t\t</Popover>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type ExtendedOption } from '@elementor/editor-controls';\n\nexport function useSizeExtendedOptions( options: ExtendedOption[], disableCustom: boolean ) {\n\treturn useMemo( () => {\n\t\tconst extendedOptions = [ ...options ];\n\n\t\tif ( ! disableCustom && ! extendedOptions.includes( 'custom' ) ) {\n\t\t\textendedOptions.push( 'custom' );\n\t\t} else if ( options.includes( 'custom' ) ) {\n\t\t\textendedOptions.splice( extendedOptions.indexOf( 'custom' ), 1 );\n\t\t}\n\n\t\treturn extendedOptions;\n\t}, [ options, disableCustom ] );\n}\n","import { useEffect, useState } from 'react';\nimport { type CreateOptions } from '@elementor/editor-props';\n\nimport { type SetValueMeta } from '../bound-prop-context';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | null;\n\tsetExternal: ( value: TValue | null, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\tpersistWhen: ( value: TValue | null ) => boolean;\n\tfallback: ( value: TValue | null ) => TValue;\n};\n\nexport const useSyncExternalState = < TValue, >( {\n\texternal,\n\tsetExternal,\n\tpersistWhen,\n\tfallback,\n}: UseInternalStateOptions< TValue > ) => {\n\tfunction toExternal( internalValue: TValue | null ) {\n\t\tif ( persistWhen( internalValue ) ) {\n\t\t\treturn internalValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction toInternal( externalValue: TValue | null, internalValue: TValue | null ) {\n\t\tif ( ! externalValue ) {\n\t\t\treturn fallback( internalValue );\n\t\t}\n\n\t\treturn externalValue;\n\t}\n\n\tconst [ internal, setInternal ] = useState< TValue >( toInternal( external, null ) );\n\n\tuseEffect( () => {\n\t\tsetInternal( ( prevInternal ) => toInternal( external, prevInternal ) );\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ external ] );\n\n\ttype SetterFunc = ( value: TValue ) => TValue;\n\n\tconst setInternalValue = ( setter: SetterFunc | TValue, options?: CreateOptions, meta?: SetValueMeta ) => {\n\t\tconst setterFn = ( typeof setter === 'function' ? setter : () => setter ) as SetterFunc;\n\t\tconst updated = setterFn( internal );\n\n\t\tsetInternal( updated );\n\t\tsetExternal( toExternal( updated ), options, meta );\n\t};\n\n\treturn [ internal, setInternalValue ] as const;\n};\n","import * as React from 'react';\nimport { forwardRef, useRef } from 'react';\nimport { strokePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SectionContent } from '../components/section-content';\nimport { createControl } from '../create-control';\nimport { type LengthUnit } from '../utils/size-control';\nimport { ColorControl } from './color-control';\nimport { SizeControl } from './size-control';\n\ntype StrokeProps = {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n};\n\nconst units: LengthUnit[] = [ 'px', 'em', 'rem' ];\n\nexport const StrokeControl = createControl( () => {\n\tconst propContext = useBoundProp( strokePropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<SectionContent>\n\t\t\t\t<Control bind=\"width\" label={ __( 'Stroke width', 'elementor' ) } ref={ rowRef }>\n\t\t\t\t\t<SizeControl units={ units } anchorRef={ rowRef } />\n\t\t\t\t</Control>\n\t\t\t\t<Control bind=\"color\" label={ __( 'Stroke color', 'elementor' ) }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Control>\n\t\t\t</SectionContent>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = forwardRef( ( { bind, label, children }: StrokeProps, ref ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ ref }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n) );\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 = 0.5, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { colorPropTypeUtil, type PropTypeUtil } from '@elementor/editor-props';\nimport { UnstableColorField, type UnstableColorFieldProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = Partial< Omit< UnstableColorFieldProps, 'value' | 'onChange' > > & {\n\tpropTypeUtil?: PropTypeUtil< string, string >;\n\tanchorEl?: HTMLElement | null;\n\tid?: string;\n};\n\nexport const ColorControl = createControl(\n\t( { propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, id, ...props }: Props ) => {\n\t\tconst { value, setValue, placeholder: boundPropPlaceholder, disabled } = useBoundProp( propTypeUtil );\n\n\t\tconst placeholder = props.placeholder ?? boundPropPlaceholder;\n\n\t\tconst handleChange = ( selectedColor: string ) => {\n\t\t\tsetValue( selectedColor || null );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableColorField\n\t\t\t\t\tid={ id }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tplaceholder={ placeholder ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t...slotProps,\n\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\tanchorEl,\n\t\t\t\t\t\t\tanchorOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransformOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tslotProps: {\n\t\t\t\t\t\t\t\tcolorIndicator: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcolorBox: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\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} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { boxShadowPropTypeUtil, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { FormLabel, Grid, styled, type SxProps, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../components/control-repeater';\nimport { DisableItemAction } from '../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../components/control-repeater/actions/remove-item-action';\nimport { useRepeaterContext } from '../components/control-repeater/context/repeater-context';\nimport { EditItemPopover } from '../components/control-repeater/items/edit-item-popover';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { RepeaterHeader } from '../components/repeater/repeater-header';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SelectControl } from './select-control';\nimport { CUSTOM_SIZE_LABEL, SizeControl } from './size-control';\n\nexport const BoxShadowRepeaterControl = createControl( () => {\n\tconst { propType, value, setValue, disabled } = useBoundProp( boxShadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue } isDisabled={ () => disabled }>\n\t\t\t<ControlRepeater initial={ initialShadow } propTypeUtil={ boxShadowPropTypeUtil }>\n\t\t\t\t<RepeaterHeader label={ __( 'Box shadow', 'elementor' ) }>\n\t\t\t\t\t<TooltipAddItemAction newItemIndex={ 0 } disabled={ disabled } ariaLabel={ 'Box shadow' } />\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\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</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<Content />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\theight: '1rem',\n\twidth: '1rem',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color?.value } />\n);\n\nconst Content = () => {\n\tconst context = useBoundProp( shadowPropTypeUtil );\n\tconst rowRef: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\tconst { rowRef: anchorEl } = useRepeaterContext();\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Control bind=\"color\" label={ __( 'Color', 'elementor' ) }>\n\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"position\" label={ __( 'Position', 'elementor' ) } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t{ label: __( 'Inset', 'elementor' ), value: 'inset' },\n\t\t\t\t\t\t\t\t{ label: __( 'Outset', 'elementor' ), value: null },\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 0 ] }>\n\t\t\t\t\t<Control bind=\"hOffset\" label={ __( 'Horizontal', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"vOffset\" label={ __( 'Vertical', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 1 ] }>\n\t\t\t\t\t<Control bind=\"blur\" label={ __( 'Blur', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"spread\" label={ __( 'Spread', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PopoverContent>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tlabel,\n\tbind,\n\tchildren,\n\tsx,\n}: {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tsx?: SxProps< Theme >;\n} ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid item xs={ 6 } sx={ sx }>\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<FormLabel size=\"tiny\">{ label }</FormLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n);\n\nconst ItemLabel = ( { value }: { value: ShadowPropValue } ) => {\n\tconst { position, hOffset, vOffset, blur, spread } = value.value;\n\n\tconst { size: blurSize = '', unit: blurUnit = '' } = blur?.value || {};\n\tconst { size: spreadSize = '', unit: spreadUnit = '' } = spread?.value || {};\n\tconst { size: hOffsetSize = 'unset', unit: hOffsetUnit = '' } = hOffset?.value || {};\n\tconst { size: vOffsetSize = 'unset', unit: vOffsetUnit = '' } = vOffset?.value || {};\n\tconst positionLabel = position?.value || 'outset';\n\n\tconst sizes = [\n\t\t[ hOffsetSize, hOffsetUnit ],\n\t\t[ vOffsetSize, vOffsetUnit ],\n\t\t[ blurSize, blurUnit ],\n\t\t[ spreadSize, spreadUnit ],\n\t]\n\t\t.map( ( [ size, unit ] ) => {\n\t\t\tif ( unit !== 'custom' ) {\n\t\t\t\treturn size + unit;\n\t\t\t}\n\n\t\t\treturn ! size ? CUSTOM_SIZE_LABEL : size;\n\t\t} )\n\t\t.join( ' ' );\n\n\treturn (\n\t\t<span style={ { textTransform: 'capitalize' } }>\n\t\t\t{ positionLabel }: { sizes }\n\t\t</span>\n\t);\n};\n\nconst initialShadow: ShadowPropValue = {\n\t$$type: 'shadow',\n\tvalue: {\n\t\thOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tvOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tblur: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 10 },\n\t\t},\n\t\tspread: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: 'rgba(0, 0, 0, 1)',\n\t\t},\n\t\tposition: null,\n\t},\n};\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { Box, IconButton, Infotip } from '@elementor/ui';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport type TooltipAddItemActionProps = {\n\tdisabled?: boolean;\n\tenableTooltip?: boolean;\n\ttooltipContent?: React.ReactNode;\n\tnewItemIndex?: number;\n\tariaLabel?: string;\n};\n\nexport const TooltipAddItemAction = ( {\n\tdisabled = false,\n\tenableTooltip = false,\n\ttooltipContent = null,\n\tnewItemIndex,\n\tariaLabel,\n}: TooltipAddItemActionProps ) => {\n\tconst { addItem } = useRepeaterContext();\n\n\tconst onClick = ( ev: React.MouseEvent ) => addItem( ev, { index: newItemIndex } );\n\n\treturn (\n\t\t<ConditionalToolTip content={ tooltipContent } enable={ enableTooltip }>\n\t\t\t<Box component=\"span\" sx={ { cursor: disabled ? 'not-allowed' : 'pointer' } }>\n\t\t\t\t<IconButton\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t/* Translators: %s: Aria label. */\n\t\t\t\t\taria-label={ sprintf( __( 'Add %s item', 'elementor' ), ariaLabel?.toLowerCase() ) }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Box>\n\t\t</ConditionalToolTip>\n\t);\n};\n\nconst ConditionalToolTip = ( {\n\tchildren,\n\tenable,\n\tcontent,\n}: React.PropsWithChildren< {\n\tcontent?: React.ReactNode;\n\tenable: boolean;\n} > ) =>\n\tenable && content ? (\n\t\t<Infotip placement=\"right\" color=\"secondary\" content={ content }>\n\t\t\t{ children }\n\t\t</Infotip>\n\t) : (\n\t\tchildren\n\t);\n","import * as React from 'react';\nimport { createContext, useMemo, useState } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\nimport { type PopupState, usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context/use-bound-prop';\nimport { useSyncExternalState } from '../../../hooks/use-sync-external-state';\nimport { eventBus } from '../../../services/event-bus';\nimport { type Item, type RepeatablePropValue } from '../types';\nimport { ItemContext } from './item-context';\n\ntype SetterFn< T > = ( prevItems: T ) => T;\n\ntype AddItem< T > = { item?: T; index?: number };\n\ntype ItemWithKey< T > = { key: number; item: T };\n\ntype RepeaterContextType< T extends RepeatablePropValue > = {\n\tisOpen: boolean;\n\topenItemIndex: number;\n\tsetOpenItemIndex: ( key: number ) => void;\n\titems: ItemWithKey< Item< T > >[];\n\tsetItems: ( items: ItemWithKey< T >[] ) => void;\n\tpopoverState: PopupState;\n\tinitial: T;\n\taddItem: ( ev: React.MouseEvent, config?: AddItem< T > ) => void;\n\tupdateItem: ( item: T, index: number ) => void;\n\tremoveItem: ( index: number ) => void;\n\trowRef: HTMLElement | null;\n\tsetRowRef: ( ref: HTMLElement | null | SetterFn< HTMLElement | null > ) => void;\n\tisItemDisabled: ( index: number ) => boolean;\n};\n\nconst RepeaterContext = createContext< RepeaterContextType< RepeatablePropValue > | null >( null );\n\nexport const EMPTY_OPEN_ITEM = -1;\n\nexport const useRepeaterContext = () => {\n\tconst context = React.useContext( RepeaterContext );\n\tconst itemContext = React.useContext( ItemContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeaterContext must be used within a RepeaterContextProvider' );\n\t}\n\n\treturn { ...context, ...itemContext };\n};\n\nexport const RepeaterContextProvider = < T extends RepeatablePropValue = RepeatablePropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisItemDisabled = () => false,\n}: React.PropsWithChildren< {\n\tinitial: T;\n\tpropTypeUtil: PropTypeUtil< string, T[] >;\n\tisSortable?: boolean;\n\tisItemDisabled?: ( item: Item< T > ) => boolean;\n} > ) => {\n\tconst { value: repeaterValues, setValue: setRepeaterValues } = useBoundProp( propTypeUtil );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\tfallback: () => [] as T[],\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( () => {\n\t\treturn items?.map( () => generateUniqueKey() ) ?? [];\n\t} );\n\n\tReact.useEffect( () => {\n\t\tconst nextLength = items?.length ?? 0;\n\n\t\tsetUniqueKeys( ( prev ) => {\n\t\t\tconst prevLength = prev.length;\n\n\t\t\tif ( prevLength === nextLength ) {\n\t\t\t\treturn prev;\n\t\t\t}\n\n\t\t\tif ( prevLength > nextLength ) {\n\t\t\t\treturn prev.slice( 0, nextLength );\n\t\t\t}\n\n\t\t\treturn [ ...prev, ...Array.from( { length: nextLength - prevLength }, generateUniqueKey ) ];\n\t\t} );\n\t}, [ items?.length ] );\n\n\tconst itemsWithKeys = useMemo(\n\t\t() =>\n\t\t\tuniqueKeys\n\t\t\t\t.map( ( key, index ) => ( {\n\t\t\t\t\tkey,\n\t\t\t\t\titem: items[ index ],\n\t\t\t\t} ) )\n\t\t\t\t.filter( ( { item } ) => item !== undefined ),\n\t\t[ uniqueKeys, items ]\n\t);\n\n\tconst handleSetItems = ( newItemsWithKeys: ItemWithKey< T >[] ) => {\n\t\tsetItems( newItemsWithKeys.map( ( { item } ) => item ) );\n\t};\n\n\tconst [ openItemIndex, setOpenItemIndex ] = useState( EMPTY_OPEN_ITEM );\n\tconst [ rowRef, setRowRef ] = useState< HTMLElement | null >( null );\n\n\tconst isOpen = openItemIndex !== EMPTY_OPEN_ITEM;\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst addItem = ( ev: React.MouseEvent, config?: AddItem< T > ) => {\n\t\tconst item = config?.item ?? { ...initial };\n\t\tconst newIndex = config?.index ?? items.length;\n\t\tconst newKey = generateUniqueKey();\n\t\tconst newItems = [ ...items ];\n\n\t\tnewItems.splice( newIndex, 0, item );\n\t\tsetItems( newItems );\n\n\t\tsetUniqueKeys( [ ...uniqueKeys.slice( 0, newIndex ), newKey, ...uniqueKeys.slice( newIndex ) ] );\n\n\t\tsetOpenItemIndex( newIndex );\n\t\tpopoverState.open( rowRef ?? ev );\n\n\t\teventBus.emit( `${ propTypeUtil.key }-item-added`, {\n\t\t\titemValue: initial.value,\n\t\t} );\n\t};\n\n\tconst removeItem = ( index: number ) => {\n\t\tconst itemToRemove = items[ index ];\n\n\t\tsetItems( items.filter( ( _, pos ) => pos !== index ) );\n\t\tsetUniqueKeys( uniqueKeys.filter( ( _, pos ) => pos !== index ) );\n\n\t\teventBus.emit( `${ propTypeUtil.key }-item-removed`, {\n\t\t\titemValue: itemToRemove?.value,\n\t\t} );\n\t};\n\n\tconst updateItem = ( updatedItem: T, index: number ) => {\n\t\tconst newItems = [ ...items.slice( 0, index ), updatedItem, ...items.slice( index + 1 ) ];\n\t\tsetItems( newItems );\n\t};\n\n\treturn (\n\t\t<RepeaterContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tisOpen,\n\t\t\t\topenItemIndex,\n\t\t\t\tsetOpenItemIndex,\n\t\t\t\titems: ( itemsWithKeys ?? [] ) as RepeaterContextType< T >[ 'items' ],\n\t\t\t\tsetItems: handleSetItems as RepeaterContextType< RepeatablePropValue >[ 'setItems' ],\n\t\t\t\tpopoverState,\n\t\t\t\tinitial,\n\t\t\t\tupdateItem: updateItem as RepeaterContextType< RepeatablePropValue >[ 'updateItem' ],\n\t\t\t\taddItem: addItem as RepeaterContextType< RepeatablePropValue >[ 'addItem' ],\n\t\t\t\tremoveItem,\n\t\t\t\trowRef,\n\t\t\t\tsetRowRef,\n\t\t\t\tisItemDisabled: ( index: number ) => isItemDisabled( itemsWithKeys[ index ].item ),\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</RepeaterContext.Provider>\n\t);\n};\n\nconst generateUniqueKey = () => {\n\treturn Date.now() + Math.floor( Math.random() * 1000000 );\n};\n","class EventBus {\n\tprivate listeners = new Map< string, Set< ( data?: unknown ) => void > >();\n\n\tsubscribe( eventName: string, callback: ( data?: unknown ) => void ) {\n\t\tif ( ! this.listeners.has( eventName ) ) {\n\t\t\tthis.listeners.set( eventName, new Set() );\n\t\t}\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( eventListeners ) {\n\t\t\teventListeners.add( callback );\n\t\t}\n\t}\n\n\tunsubscribe( eventName: string, callback: ( data?: unknown ) => void ) {\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( ! eventListeners ) {\n\t\t\treturn;\n\t\t}\n\n\t\teventListeners.delete( callback );\n\t\tif ( eventListeners.size === 0 ) {\n\t\t\tthis.listeners.delete( eventName );\n\t\t}\n\t}\n\n\temit( eventName: string, data?: unknown ) {\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( eventListeners ) {\n\t\t\teventListeners.forEach( ( callback ) => callback( data ) );\n\t\t}\n\t}\n\n\tclearAll(): void {\n\t\tthis.listeners.clear();\n\t}\n}\n\nexport const eventBus = new EventBus();\n","import { createContext } from 'react';\n\nimport { type Item, type RepeatablePropValue } from '../types';\n\nexport const ItemContext = createContext< { index: number; value: Item< RepeatablePropValue > } >( {\n\tindex: -1,\n\tvalue: {} as Item< RepeatablePropValue >,\n} );\n","import * as React from 'react';\n\nimport { SortableItem, SortableProvider } from '../../repeater/sortable';\nimport { ItemContext } from '../context/item-context';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { type Item, type RepeatablePropValue } from '../types';\n\nexport const ItemsContainer = < T extends RepeatablePropValue >( {\n\tisSortable = true,\n\tchildren,\n}: React.PropsWithChildren< {\n\tisSortable?: boolean;\n} > ) => {\n\tconst { items, setItems } = useRepeaterContext();\n\tconst keys = items.map( ( { key } ) => key );\n\n\tif ( ! children ) {\n\t\treturn null;\n\t}\n\n\tconst onChangeOrder = ( newKeys: number[] ) => {\n\t\tsetItems(\n\t\t\tnewKeys.map( ( key ) => {\n\t\t\t\tconst index = items.findIndex( ( item ) => item.key === key );\n\n\t\t\t\treturn items[ index ];\n\t\t\t} )\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SortableProvider value={ keys } onChange={ onChangeOrder }>\n\t\t\t\t{ keys.map( ( key: number, index: number ) => {\n\t\t\t\t\tconst value = items[ index ].item as Item< T >;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t<ItemContext.Provider value={ { index, value } }>{ children }</ItemContext.Provider>\n\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</SortableProvider>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tDivider,\n\tList,\n\tListItem,\n\tstyled,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemProps,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n\ttype UnstableSortableProviderProps,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const SortableProvider = < T extends string | number >( props: UnstableSortableProviderProps< T > ) => {\n\treturn (\n\t\t<List sx={ { p: 0, my: -0.5, mx: 0 } }>\n\t\t\t<UnstableSortableProvider restrictAxis disableDragOverlay={ false } variant={ 'static' } { ...props } />\n\t\t</List>\n\t);\n};\n\ntype SortableItemProps = {\n\tid: UnstableSortableItemProps[ 'id' ];\n\tchildren: React.ReactNode;\n\tdisabled?: boolean;\n};\n\nexport const SortableItem = ( { id, children, disabled }: SortableItemProps ): React.ReactNode => {\n\treturn (\n\t\t<UnstableSortableItem\n\t\t\tid={ id }\n\t\t\tdisabled={ disabled }\n\t\t\trender={ ( {\n\t\t\t\titemProps,\n\t\t\t\ttriggerProps,\n\t\t\t\titemStyle,\n\t\t\t\ttriggerStyle,\n\t\t\t\tshowDropIndication,\n\t\t\t\tdropIndicationStyle,\n\t\t\t}: UnstableSortableItemRenderProps ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StyledListItem { ...itemProps } style={ itemStyle } tabIndex={ -1 }>\n\t\t\t\t\t\t{ ! disabled && <SortableTrigger { ...triggerProps } style={ triggerStyle } /> }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t{ showDropIndication && <StyledDivider style={ dropIndicationStyle } /> }\n\t\t\t\t\t</StyledListItem>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst StyledListItem = styled( ListItem )`\n\tposition: relative;\n\tmargin-inline: 0px;\n\tpadding-inline: 0px;\n\tpadding-block: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\n\t& .class-item-sortable-trigger {\n\t\tcolor: ${ ( { theme } ) => theme.palette.action.active };\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tvisibility: hidden;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tpadding-inline-end: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\ttransform: translate( -75%, -50% );\n\t}\n\n\t&[aria-describedby=''] > .MuiTag-root {\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.background.paper };\n\t\tbox-shadow: ${ ( { theme } ) => theme.shadows[ 3 ] };\n\t}\n\n\t&:hover,\n\t&:focus-within {\n\t\t& .class-item-sortable-trigger {\n\t\t\tvisibility: visible;\n\t\t}\n\t}\n`;\n\nconst SortableTrigger = ( props: React.HTMLAttributes< HTMLDivElement > ) => (\n\t<div\n\t\t{ ...props }\n\t\trole=\"button\"\n\t\tclassName=\"class-item-sortable-trigger\"\n\t\ttabIndex={ 0 }\n\t\taria-label={ __( 'Drag item', 'elementor' ) }\n\t>\n\t\t<GripVerticalIcon fontSize=\"tiny\" />\n\t</div>\n);\n\nconst StyledDivider = styled( Divider )`\n\theight: 0px;\n\tborder: none;\n\toverflow: visible;\n\n\t&:after {\n\t\t--height: 2px;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: var( --height );\n\t\tmargin-block: calc( -1 * var( --height ) / 2 );\n\t\tborder-radius: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.text.primary };\n\t}\n`;\n","import * as React from 'react';\nimport { bindTrigger } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { RepeatableControlContext } from '../../../hooks/use-repeatable-control-context';\nimport { RepeaterTag } from '../../repeater/repeater-tag';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { RepeaterItemActionsSlot, RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../locations';\nimport { type ItemProps, type RepeatablePropValue } from '../types';\n\nexport const Item = < T extends RepeatablePropValue >( { Label, Icon, actions }: ItemProps< T > ) => {\n\tconst {\n\t\tpopoverState,\n\t\tsetRowRef,\n\t\topenItemIndex,\n\t\tsetOpenItemIndex,\n\t\tindex = -1,\n\t\tvalue,\n\t\tisItemDisabled,\n\t} = useRepeaterContext();\n\tconst repeatableContext = React.useContext( RepeatableControlContext );\n\tconst disableOpen = !! repeatableContext?.props?.readOnly;\n\tconst triggerProps = bindTrigger( popoverState );\n\n\tconst onClick = ( ev: React.MouseEvent ) => {\n\t\tif ( disableOpen || isItemDisabled( index ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttriggerProps.onClick( ev );\n\t\tsetOpenItemIndex( index );\n\t};\n\n\tconst setRef = ( ref: HTMLDivElement | null ) => {\n\t\tif ( ! ref || openItemIndex !== index || ref === popoverState.anchorEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetRowRef( ref );\n\t\tpopoverState.setAnchorEl( ref );\n\t};\n\n\treturn (\n\t\t<RepeaterTag\n\t\t\tref={ setRef }\n\t\t\tlabel={\n\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t<Label value={ value as T } />\n\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t}\n\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t{ ...triggerProps }\n\t\t\tonClick={ onClick }\n\t\t\tstartIcon={\n\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t<Icon value={ value as T } />\n\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t}\n\t\t\tsx={ {\n\t\t\t\tminHeight: ( theme ) => theme.spacing( 3.5 ),\n\t\t\t\t...( isItemDisabled( index ) && {\n\t\t\t\t\t'[role=\"button\"]': {\n\t\t\t\t\t\tcursor: 'not-allowed',\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t} }\n\t\t\tactions={\n\t\t\t\t<>\n\t\t\t\t\t<RepeaterItemActionsSlot index={ index ?? -1 } />\n\t\t\t\t\t{ actions }\n\t\t\t\t</>\n\t\t\t}\n\t\t/>\n\t);\n};\n","import { createContext, useContext } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nimport type { Item, RepeatablePropValue } from '../components/control-repeater/types';\n\nexport type ChildControlConfig = {\n\tcomponent: React.ComponentType;\n\tprops?: Record< string, unknown >;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpropTypeUtil: PropTypeUtil< string, any >;\n\tlabel?: string;\n\tisItemDisabled?: ( item: Item< RepeatablePropValue > ) => boolean;\n};\n\ntype RepeatableControlContextType = ChildControlConfig & {\n\tplaceholder: string;\n\tpatternLabel: string;\n};\n\nconst RepeatableControlContext = createContext< RepeatableControlContextType | undefined >( undefined );\n\nconst useRepeatableControlContext = () => {\n\tconst context = useContext( RepeatableControlContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeatableControlContext must be used within RepeatableControl' );\n\t}\n\n\treturn context;\n};\n\nexport { RepeatableControlContext, useRepeatableControlContext };\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { UnstableTag, type UnstableTagProps } from '@elementor/ui';\n\nexport const RepeaterTag = forwardRef< HTMLDivElement, UnstableTagProps >( ( props, ref ) => {\n\treturn (\n\t\t<UnstableTag\n\t\t\tref={ ref }\n\t\t\tfullWidth\n\t\t\tshowActionsOnHover\n\t\t\tvariant=\"outlined\"\n\t\t\tsx={ { minHeight: ( theme ) => theme.spacing( 3.5 ) } }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n","import { type PropValue } from '@elementor/editor-props';\nimport { createLocation, createReplaceableLocation } from '@elementor/locations';\n\n// Repeaters\nexport const { Slot: RepeaterItemIconSlot, inject: injectIntoRepeaterItemIcon } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemLabelSlot, inject: injectIntoRepeaterItemLabel } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemActionsSlot, inject: injectIntoRepeaterItemActions } = createLocation< {\n\tindex: number;\n} >();\n","import * as React from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nimport { SectionContent } from '../section-content';\nimport { RepeaterContextProvider } from './context/repeater-context';\nimport { type Item, type RepeatablePropValue } from './types';\n\nexport const ControlRepeater = < T extends RepeatablePropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisItemDisabled,\n}: React.PropsWithChildren< {\n\tinitial: T;\n\tpropTypeUtil: PropTypeUtil< string, T[] >;\n\tisItemDisabled?: ( item: Item< T > ) => boolean;\n} > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<RepeaterContextProvider\n\t\t\t\tinitial={ initial }\n\t\t\t\tpropTypeUtil={ propTypeUtil }\n\t\t\t\tisItemDisabled={ isItemDisabled }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</RepeaterContextProvider>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\nconst SIZE = 'tiny';\n\nexport const DisableItemAction = () => {\n\tconst { items, updateItem, index = -1 } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst propDisabled = items[ index ].item.disabled ?? false;\n\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\n\tconst onClick = () => {\n\t\tconst self = structuredClone( items[ index ].item );\n\n\t\tself.disabled = ! self.disabled;\n\n\t\tif ( ! self.disabled ) {\n\t\t\tdelete self.disabled;\n\t\t}\n\n\t\tupdateItem( self, index );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ toggleLabel }>\n\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { CopyIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const DuplicateItemAction = () => {\n\tconst { items, addItem, index = -1, isItemDisabled } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst item = items[ index ]?.item;\n\n\tconst onClick = ( ev: React.MouseEvent ) => {\n\t\tconst newItem = structuredClone( item );\n\n\t\taddItem( ev, { item: newItem, index: index + 1 } );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\tonClick={ onClick }\n\t\t\t\taria-label={ duplicateLabel }\n\t\t\t\tdisabled={ isItemDisabled( index ) }\n\t\t\t>\n\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { XIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const RemoveItemAction = () => {\n\tconst { removeItem, index = -1 } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\tconst onClick = () => removeItem( index );\n\treturn (\n\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ removeLabel }>\n\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { bindPopover, Box } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { RepeaterPopover } from '../../repeater/repeater-popover';\nimport { EMPTY_OPEN_ITEM, useRepeaterContext } from '../context/repeater-context';\n\nexport const EditItemPopover = ( { children }: { children: React.ReactNode } ) => {\n\tconst { popoverState, openItemIndex, isOpen, rowRef, setOpenItemIndex, setRowRef } = useRepeaterContext();\n\n\tif ( ! isOpen || ! rowRef ) {\n\t\treturn null;\n\t}\n\n\tconst onClose = () => {\n\t\tsetRowRef( null );\n\t\tpopoverState.setAnchorEl( null );\n\t\tsetOpenItemIndex( EMPTY_OPEN_ITEM );\n\t};\n\n\treturn (\n\t\t<RepeaterPopover width={ rowRef.offsetWidth } { ...bindPopover( popoverState ) } onClose={ onClose }>\n\t\t\t<PropKeyProvider bind={ String( openItemIndex ) }>\n\t\t\t\t<Box>{ children }</Box>\n\t\t\t</PropKeyProvider>\n\t\t</RepeaterPopover>\n\t);\n};\n","import * as React from 'react';\nimport { Popover, type PopoverProps } from '@elementor/ui';\n\nexport const RepeaterPopover = ( { children, width, ...props }: PopoverProps & { width?: number } ) => {\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tdisableEnforceFocus\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: { marginBlockStart: 0.5, width, overflow: 'visible' },\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t</Popover>\n\t);\n};\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack, type StackProps } from '@elementor/ui';\n\nexport const PopoverContent: FC< PropsWithChildren< StackProps > > = ( { gap = 1.5, children, ...props } ) => (\n\t<Stack { ...props } gap={ gap }>\n\t\t{ children }\n\t</Stack>\n);\n","import { forwardRef, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\ntype PopoverGridContainerProps = PropsWithChildren< {\n\tgap?: number;\n\talignItems?: React.ComponentProps< typeof Grid >[ 'alignItems' ];\n\tflexWrap?: React.ComponentProps< typeof Grid >[ 'flexWrap' ];\n} >;\n\nexport const PopoverGridContainer = forwardRef(\n\t( { gap = 1.5, alignItems = 'center', flexWrap = 'nowrap', children }: PopoverGridContainerProps, ref ) => (\n\t\t<Grid container gap={ gap } alignItems={ alignItems } flexWrap={ flexWrap } ref={ ref }>\n\t\t\t{ children }\n\t\t</Grid>\n\t)\n);\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { Box, Stack, Typography } from '@elementor/ui';\n\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\n\nexport const RepeaterHeader = forwardRef(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tchildren,\n\t\t\tadornment: Adornment = ControlAdornments,\n\t\t}: React.PropsWithChildren< {\n\t\t\tlabel: string;\n\t\t\tadornment?: React.FC;\n\t\t} >,\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ 1 }\n\t\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t\t\tref={ ref }\n\t\t\t>\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap={ 1 } sx={ { flexGrow: 1 } }>\n\t\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Adornment />\n\t\t\t\t</Box>\n\t\t\t\t{ children }\n\t\t\t</Stack>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport {\n\tbackdropFilterPropTypeUtil,\n\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\ttype PropTypeUtil,\n} from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../../components/control-repeater';\nimport { DisableItemAction } from '../../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../components/control-repeater/actions/remove-item-action';\nimport { EditItemPopover } from '../../components/control-repeater/items/edit-item-popover';\nimport type { RepeatablePropValue } from '../../components/control-repeater/types';\nimport { RepeaterHeader } from '../../components/repeater/repeater-header';\nimport { createControl } from '../../create-control';\nimport { FilterConfigProvider, useFilterConfig } from './context/filter-config-context';\nimport { FilterContent } from './filter-content';\nimport { FilterIcon } from './filter-icon';\nimport { FilterLabel } from './filter-label';\n\ntype FilterPropName = {\n\tfilterPropName?: 'filter' | 'backdrop-filter';\n};\n\ntype Config = {\n\tpropTypeUtil: PropTypeUtil< string, FilterItemPropValue[] >;\n\tlabel: string;\n};\n\nconst FILTER_CONFIG: Record< string, Config > = {\n\tfilter: {\n\t\tpropTypeUtil: filterPropTypeUtil,\n\t\tlabel: __( 'Filters', 'elementor' ),\n\t},\n\t'backdrop-filter': {\n\t\tpropTypeUtil: backdropFilterPropTypeUtil,\n\t\tlabel: __( 'Backdrop filters', 'elementor' ),\n\t},\n} as const;\n\nexport const FilterRepeaterControl = createControl( ( { filterPropName = 'filter' }: FilterPropName ) => {\n\tconst { propTypeUtil, label } = ensureFilterConfig( filterPropName );\n\tconst { propType, value: filterValues, setValue } = useBoundProp( propTypeUtil );\n\n\treturn (\n\t\t<FilterConfigProvider>\n\t\t\t<PropProvider propType={ propType } value={ filterValues } setValue={ setValue }>\n\t\t\t\t<Repeater\n\t\t\t\t\tpropTypeUtil={ propTypeUtil as PropTypeUtil< string, RepeatablePropValue[] > }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tfilterPropName={ filterPropName }\n\t\t\t\t/>\n\t\t\t</PropProvider>\n\t\t</FilterConfigProvider>\n\t);\n} );\n\ntype RepeaterProps = {\n\tpropTypeUtil: PropTypeUtil< string, RepeatablePropValue[] >;\n\tlabel: string;\n\tfilterPropName: string;\n};\n\nconst Repeater = ( { propTypeUtil, label, filterPropName }: RepeaterProps ) => {\n\tconst { getInitialValue } = useFilterConfig();\n\n\treturn (\n\t\t<ControlRepeater initial={ getInitialValue() as RepeatablePropValue } propTypeUtil={ propTypeUtil }>\n\t\t\t<RepeaterHeader label={ label }>\n\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\tnewItemIndex={ 0 }\n\t\t\t\t\tariaLabel={ filterPropName === 'backdrop-filter' ? 'backdrop filter' : 'filter' }\n\t\t\t\t/>\n\t\t\t</RepeaterHeader>\n\t\t\t<ItemsContainer>\n\t\t\t\t<Item\n\t\t\t\t\tLabel={ FilterLabel }\n\t\t\t\t\tIcon={ FilterIcon }\n\t\t\t\t\tactions={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ItemsContainer>\n\t\t\t<EditItemPopover>\n\t\t\t\t<FilterContent />\n\t\t\t</EditItemPopover>\n\t\t</ControlRepeater>\n\t);\n};\n\nfunction ensureFilterConfig( name: string ): Config {\n\tif ( name && name in FILTER_CONFIG ) {\n\t\treturn FILTER_CONFIG[ name ];\n\t}\n\n\treturn FILTER_CONFIG.filter;\n}\n","import * as React from 'react';\nimport { createContext, useContext, useMemo } from 'react';\nimport { cssFilterFunctionPropUtil, type PropType } from '@elementor/editor-props';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type FilterFunction } from '../configs';\nimport { buildFilterConfig, type FilterConfigEntry } from '../utils';\n\ntype FilterConfigMap = Record< FilterFunction, FilterConfigEntry >;\n\ntype FilterConfigContextValue = {\n\tconfig: FilterConfigMap;\n\tfilterOptions: Array< { value: string; label: string } >;\n\tgetFilterFunctionConfig: ( filterFunction: FilterFunction ) => FilterConfigEntry;\n\tgetInitialValue: () => unknown;\n};\n\nconst FilterConfigContext = createContext< FilterConfigContextValue | null >( null );\n\nexport function FilterConfigProvider( { children }: React.PropsWithChildren ) {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil ) as { propType: { item_prop_type: PropType } };\n\n\tconst contextValue = useMemo( () => {\n\t\tconst config = buildFilterConfig( propContext.propType.item_prop_type );\n\t\tconst filterOptions = Object.entries( config ).map( ( [ key, conf ] ) => ( {\n\t\t\tvalue: key,\n\t\t\tlabel: conf.name,\n\t\t} ) );\n\n\t\treturn {\n\t\t\tconfig,\n\t\t\tfilterOptions,\n\t\t\tgetFilterFunctionConfig: ( filterFunction: FilterFunction ) => config[ filterFunction ],\n\t\t\tgetInitialValue: () => config.blur.defaultValue,\n\t\t};\n\t}, [ propContext.propType ] );\n\n\treturn <FilterConfigContext.Provider value={ contextValue }>{ children }</FilterConfigContext.Provider>;\n}\n\nexport function useFilterConfig(): FilterConfigContextValue {\n\tconst context = useContext( FilterConfigContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useFilterConfig must be used within FilterConfigProvider' );\n\t}\n\n\treturn context;\n}\n","import type { DropShadowFilterPropValue, PropType, SizePropValue, UnionPropType } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FilterFunction, type FilterFunctionGroup, FILTERS_BY_GROUP } from './configs';\n\nconst AMOUNT_VALUE_NAME = __( 'Amount', 'elementor' );\n\ntype SingleArgFilterFuncPropType = PropType & {\n\tshape: {\n\t\tsize?: PropType;\n\t};\n};\n\ntype DropShadowFuncPropType = PropType & {\n\tshape: {\n\t\tcolor: PropType;\n\t\txAxis: PropType;\n\t\tyAxis: PropType;\n\t\tblur: PropType;\n\t};\n};\n\ntype CssFilterFuncPropType = PropType & {\n\tshape: {\n\t\targs: {\n\t\t\tprop_types: {\n\t\t\t\t[ K in FilterFunctionGroup ]: SingleArgFilterFuncPropType | DropShadowFuncPropType;\n\t\t\t};\n\t\t};\n\t};\n};\n\nexport type DefaultValue = { size: SizePropValue } | DropShadowFilterPropValue[ 'value' ];\n\ntype CssFilterFuncValue = ReturnType< typeof createDefaultValue >;\n\nexport type FilterConfigEntry = {\n\tname: string;\n\tvalueName: string;\n\tfilterFunctionGroup: FilterFunctionGroup;\n\tdefaultValue: CssFilterFuncValue;\n};\n\ntype FilterConfigMap = Record< FilterFunction, FilterConfigEntry >;\n\nconst DEFAULT_FACTORIES: Partial< Record< FilterFunction, ( propType: PropType ) => DefaultValue > > = {\n\t'drop-shadow': ( propType: PropType ) => buildDropShadowDefault( propType as DropShadowFuncPropType ),\n};\n\nexport function buildFilterConfig( cssFilterPropType: PropType ): FilterConfigMap {\n\tfunction createEntry(\n\t\tfilterFunctionGroup: FilterFunctionGroup,\n\t\tfilterFunction: FilterFunction,\n\t\t{ name, valueName }: { name: string; valueName?: string }\n\t): [ FilterFunction, FilterConfigEntry ] {\n\t\tconst propType = extractPropType( cssFilterPropType as CssFilterFuncPropType, filterFunctionGroup );\n\n\t\tconst value =\n\t\t\tDEFAULT_FACTORIES[ filterFunction ]?.( propType ) ??\n\t\t\tbuildSizeDefault( propType as SingleArgFilterFuncPropType );\n\n\t\tconst defaultValue = createDefaultValue( {\n\t\t\tfilterFunction,\n\t\t\tfilterFunctionGroup,\n\t\t\tvalue,\n\t\t} );\n\n\t\treturn [\n\t\t\tfilterFunction,\n\t\t\t{\n\t\t\t\tname,\n\t\t\t\tvalueName: valueName ?? AMOUNT_VALUE_NAME,\n\t\t\t\tdefaultValue,\n\t\t\t\tfilterFunctionGroup,\n\t\t\t},\n\t\t];\n\t}\n\n\tconst entries = Object.entries( FILTERS_BY_GROUP ).flatMap( ( [ filterFunctionGroup, group ] ) =>\n\t\tObject.entries( group ).map( ( [ filterFunction, meta ] ) =>\n\t\t\tcreateEntry( filterFunctionGroup as FilterFunctionGroup, filterFunction as FilterFunction, meta )\n\t\t)\n\t);\n\n\treturn Object.fromEntries( entries ) as FilterConfigMap;\n}\n\ntype DefaultBuilderArgs = {\n\tfilterFunction: FilterFunction;\n\tfilterFunctionGroup: FilterFunctionGroup;\n\tvalue: DefaultValue;\n};\n\nfunction createDefaultValue( { filterFunction, filterFunctionGroup, value }: DefaultBuilderArgs ) {\n\treturn {\n\t\t$$type: 'css-filter-func',\n\t\tvalue: {\n\t\t\tfunc: { $$type: 'string', value: filterFunction },\n\t\t\targs: {\n\t\t\t\t$$type: filterFunctionGroup,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction buildSizeDefault( propType: SingleArgFilterFuncPropType ): DefaultValue {\n\tconst sizePropType = propType?.shape?.size;\n\n\treturn {\n\t\tsize: sizePropType?.default as SizePropValue,\n\t};\n}\n\nfunction buildDropShadowDefault( propType: DropShadowFuncPropType ): DefaultValue {\n\tconst dropShadowPropType = propType.shape;\n\n\treturn {\n\t\tblur: dropShadowPropType?.blur?.default,\n\t\txAxis: dropShadowPropType?.xAxis?.default,\n\t\tyAxis: dropShadowPropType?.yAxis?.default,\n\t\tcolor:\n\t\t\tdropShadowPropType?.color?.default ??\n\t\t\t( dropShadowPropType?.color as UnionPropType ).prop_types.color.default,\n\t};\n}\n\nfunction extractPropType( propType: CssFilterFuncPropType, filterFunctionGroup: FilterFunctionGroup ) {\n\treturn propType.shape?.args?.prop_types[ filterFunctionGroup ];\n}\n","import { __ } from '@wordpress/i18n';\n\nexport type FilterFunction =\n\t| 'blur'\n\t| 'brightness'\n\t| 'contrast'\n\t| 'hue-rotate'\n\t| 'saturate'\n\t| 'grayscale'\n\t| 'invert'\n\t| 'sepia'\n\t| 'drop-shadow';\n\nexport type FilterFunctionGroup = 'blur' | 'color-tone' | 'hue-rotate' | 'intensity' | 'drop-shadow';\n\nexport type FilterGroup = {\n\t[ filter in FilterFunction ]?: {\n\t\tname: string;\n\t\tvalueName?: string;\n\t};\n};\n\nexport const FILTERS_BY_GROUP: Record< FilterFunctionGroup, FilterGroup > = {\n\tblur: {\n\t\tblur: {\n\t\t\tname: __( 'Blur', 'elementor' ),\n\t\t\tvalueName: __( 'Radius', 'elementor' ),\n\t\t},\n\t},\n\tintensity: {\n\t\tbrightness: { name: __( 'Brightness', 'elementor' ) },\n\t\tcontrast: { name: __( 'Contrast', 'elementor' ) },\n\t\tsaturate: { name: __( 'Saturate', 'elementor' ) },\n\t},\n\t'hue-rotate': {\n\t\t'hue-rotate': {\n\t\t\tname: __( 'Hue Rotate', 'elementor' ),\n\t\t\tvalueName: __( 'Angle', 'elementor' ),\n\t\t},\n\t},\n\t'color-tone': {\n\t\tgrayscale: { name: __( 'Grayscale', 'elementor' ) },\n\t\tinvert: { name: __( 'Invert', 'elementor' ) },\n\t\tsepia: { name: __( 'Sepia', 'elementor' ) },\n\t},\n\t'drop-shadow': {\n\t\t'drop-shadow': { name: __( 'Drop shadow', 'elementor' ), valueName: __( 'Drop-shadow', 'elementor' ) },\n\t},\n};\n","import * as React from 'react';\nimport {\n\ttype CreateOptions,\n\tcssFilterFunctionPropUtil,\n\ttype FilterItemPropValue,\n\ttype PropKey,\n} from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlFormLabel } from '../../components/control-form-label';\nimport { useRepeaterContext } from '../../components/control-repeater/context/repeater-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { PopoverGridContainer } from '../../components/popover-grid-container';\nimport { SelectControl } from '../select-control';\nimport { type FilterFunction } from './configs';\nimport { useFilterConfig } from './context/filter-config-context';\nimport { DropShadowItemContent } from './drop-shadow/drop-shadow-item-content';\nimport { SingleSizeItemContent } from './single-size/single-size-item-content';\n\ntype Value = FilterItemPropValue[ 'value' ];\n\nexport const FilterContent = () => {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil );\n\tconst { filterOptions, getFilterFunctionConfig } = useFilterConfig();\n\n\tconst handleValueChange = ( value: Value, _?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tlet newValue = structuredClone( value );\n\t\tconst funcConfig = getFilterFunctionConfig( newValue?.func.value as FilterFunction );\n\n\t\tif ( meta?.bind === 'func' ) {\n\t\t\tnewValue = funcConfig.defaultValue.value as FilterItemPropValue[ 'value' ];\n\t\t}\n\n\t\tif ( ! newValue.args ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpropContext.setValue( newValue );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } setValue={ handleValueChange }>\n\t\t\t<PropKeyProvider bind=\"css-filter-func\">\n\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Filter', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<PropKeyProvider bind=\"func\">\n\t\t\t\t\t\t\t\t<SelectControl options={ filterOptions } />\n\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t<PropKeyProvider bind=\"args\">\n\t\t\t\t\t\t<FilterValueContent />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverContent>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst FilterValueContent = () => {\n\tconst { openItemIndex, items } = useRepeaterContext();\n\tconst currentItem = items[ openItemIndex ];\n\n\tconst filterFunc = ( currentItem.item.value as FilterItemPropValue[ 'value' ] ).func.value;\n\tconst isDropShadow = filterFunc === 'drop-shadow';\n\n\tif ( isDropShadow ) {\n\t\treturn <DropShadowItemContent />;\n\t}\n\n\treturn <SingleSizeItemContent filterFunc={ filterFunc as FilterFunction } />;\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { dropShadowFilterPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { ColorControl } from '../../color-control';\nimport { SizeControl } from '../../size-control';\n\nconst items = [\n\t{\n\t\tbind: 'xAxis',\n\t\tlabel: __( 'X-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'yAxis',\n\t\tlabel: __( 'Y-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'blur',\n\t\tlabel: __( 'Blur', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n\t{\n\t\tbind: 'color',\n\t\tlabel: __( 'Color', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n];\n\nexport const DropShadowItemContent = ( { anchorEl }: { anchorEl?: HTMLElement | null } ) => {\n\tconst context = useBoundProp( dropShadowFilterPropTypeUtil );\n\tconst rowRefs = [ useRef< HTMLDivElement >( null ), useRef< HTMLDivElement >( null ) ];\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ items.map( ( item ) => (\n\t\t\t\t<PopoverGridContainer key={ item.bind } ref={ rowRefs[ item.rowIndex ] ?? null }>\n\t\t\t\t\t<PropKeyProvider bind={ item.bind }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ item.label }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t{ item.bind === 'color' ? (\n\t\t\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\tanchorRef={ rowRefs[ item.rowIndex ] }\n\t\t\t\t\t\t\t\t\tenablePropTypeUnits\n\t\t\t\t\t\t\t\t\tdefaultUnit=\"px\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n","import { useRef } from 'react';\nimport * as React from 'react';\nimport {\n\tblurFilterPropTypeUtil,\n\tcolorToneFilterPropTypeUtil,\n\ttype createPropUtils,\n\thueRotateFilterPropTypeUtil,\n\tintensityFilterPropTypeUtil,\n} from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { SizeControl } from '../../size-control';\nimport { type FilterFunction } from '../configs';\nimport { useFilterConfig } from '../context/filter-config-context';\n\nexport const propTypeMap: Record< string, ReturnType< typeof createPropUtils > > = {\n\tblur: blurFilterPropTypeUtil,\n\tintensity: intensityFilterPropTypeUtil,\n\t'hue-rotate': hueRotateFilterPropTypeUtil,\n\t'color-tone': colorToneFilterPropTypeUtil,\n};\n\nexport const SingleSizeItemContent = ( { filterFunc }: { filterFunc: FilterFunction } ) => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst { getFilterFunctionConfig } = useFilterConfig();\n\tconst { valueName, filterFunctionGroup } = getFilterFunctionConfig( filterFunc );\n\tconst context = useBoundProp( propTypeMap[ filterFunctionGroup as string ] );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ filterFunctionGroup }>\n\t\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ valueName }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<SizeControl anchorRef={ rowRef } enablePropTypeUnits />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { styled, UnstableColorIndicator } from '@elementor/ui';\n\nexport const FilterIcon = ( { value }: { value: FilterItemPropValue } ) => {\n\tif ( value.value.func.value !== 'drop-shadow' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StyledUnstableColorIndicator\n\t\t\tsize=\"inherit\"\n\t\t\tcomponent=\"span\"\n\t\t\tvalue={ ( value.value.args as DropShadowFilterPropValue ).value?.color.value }\n\t\t/>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n","import * as React from 'react';\nimport type { FilterItemPropValue } from '@elementor/editor-props';\n\nimport { DropShadowItemLabel } from './drop-shadow/drop-shadow-item-label';\nimport { SingleSizeItemLabel } from './single-size/single-size-item-label';\n\nexport const FilterLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tif ( value.value.func.value === 'drop-shadow' ) {\n\t\treturn <DropShadowItemLabel value={ value } />;\n\t}\n\n\treturn <SingleSizeItemLabel value={ value } />;\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { CUSTOM_SIZE_LABEL } from '../../size-control';\n\nexport const DropShadowItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst values = value.value.args.value as DropShadowFilterPropValue[ 'value' ];\n\tconst keys = [ 'xAxis', 'yAxis', 'blur' ] as Array< keyof typeof values >;\n\tconst labels: string[] = keys.map( ( key ) =>\n\t\tvalues[ key ]?.value?.unit !== 'custom'\n\t\t\t? `${ values[ key ]?.value?.size ?? 0 }${ values[ key ]?.value?.unit ?? 'px' }`\n\t\t\t: values[ key ]?.value?.size || CUSTOM_SIZE_LABEL\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t\tDrop shadow:\n\t\t\t</Box>\n\t\t\t{ ` ${ labels.join( ' ' ) }` }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport type { FilterItemPropValue, SizePropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { lengthUnits } from '../../../utils/size-control';\nimport { CUSTOM_SIZE_LABEL } from '../../size-control';\nimport { type FilterFunction } from '../configs';\nimport { useFilterConfig } from '../context/filter-config-context';\n\nexport const SingleSizeItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { func, args } = value.value;\n\tconst { getFilterFunctionConfig } = useFilterConfig();\n\tconst { defaultValue } = getFilterFunctionConfig( ( func.value ?? '' ) as FilterFunction );\n\tconst defaultUnit =\n\t\t( defaultValue.value.args.value as { size: SizePropValue } )?.size?.value?.unit ?? lengthUnits[ 0 ];\n\n\tconst { unit, size } = ( args.value as { size: SizePropValue } ).size?.value ?? { unit: defaultUnit, size: 0 };\n\n\tconst label = (\n\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t{ func.value ?? '' }:\n\t\t</Box>\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }\n\t\t\t{ ' ' + ( unit !== 'custom' ? `${ size ?? 0 }${ unit ?? defaultUnit }` : size || CUSTOM_SIZE_LABEL ) }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { createControl } from '../create-control';\nimport { SelectControl, type SelectOption } from './select-control';\n\ntype ExtendedWindow = Window & {\n\telementor: { $previewContents: [ HTMLIFrameElement ]; config: { document: { id: string } } };\n};\n\nconst getOffCanvasElements = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst documentId = extendedWindow.elementor.config.document.id;\n\tconst offCanvasElements = extendedWindow.elementor.$previewContents[ 0 ].querySelectorAll(\n\t\t`[data-elementor-id=\"${ documentId }\"] .elementor-widget-off-canvas.elementor-element-edit-mode`\n\t);\n\n\treturn Array.from( offCanvasElements as unknown as HTMLElement[] ).map( ( offCanvasElement ) => {\n\t\treturn {\n\t\t\tlabel: offCanvasElement.querySelector( '.e-off-canvas' )?.getAttribute( 'aria-label' ) ?? '',\n\t\t\tvalue: offCanvasElement.dataset.id,\n\t\t} as SelectOption;\n\t} );\n};\n\nconst collectionMethods = {\n\t'off-canvas': getOffCanvasElements,\n} as const;\n\ntype SelectControlWrapperProps = Parameters< typeof SelectControl >[ 0 ] & {\n\tcollectionId?: keyof typeof collectionMethods;\n};\n\nconst useDynamicOptions = (\n\tcollectionId?: keyof typeof collectionMethods,\n\tinitialOptions?: SelectControlWrapperProps[ 'options' ]\n) => {\n\tconst [ options, setOptions ] = useState< SelectControlWrapperProps[ 'options' ] >( initialOptions ?? [] );\n\n\tuseEffect( () => {\n\t\tif ( ! collectionId || ! collectionMethods[ collectionId ] ) {\n\t\t\tsetOptions( initialOptions ?? [] );\n\t\t\treturn;\n\t\t}\n\t\tsetOptions( collectionMethods[ collectionId ]() );\n\t}, [ collectionId, initialOptions ] );\n\n\treturn options;\n};\n\nexport const SelectControlWrapper = createControl(\n\t( { collectionId, options, ...props }: SelectControlWrapperProps ) => {\n\t\tconst actualOptions = useDynamicOptions( collectionId, options );\n\n\t\treturn <SelectControl options={ actualOptions } { ...props } />;\n\t}\n);\n","import * as React from 'react';\nimport { type PropValue, stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlToggleButtonGroup, type ToggleButtonGroupItem } from '../components/control-toggle-button-group';\nimport { createControl } from '../create-control';\nimport { convertToggleOptionsToAtomic, type DynamicToggleOption } from '../utils/convert-toggle-options-to-atomic';\n\nexport type ToggleControlProps< T extends PropValue > = {\n\toptions: Array< ToggleButtonGroupItem< T > & { exclusive?: boolean } >;\n\tfullWidth?: boolean;\n\tsize?: ToggleButtonProps[ 'size' ];\n\texclusive?: boolean;\n\tmaxItems?: number;\n\tconvertOptions?: boolean;\n};\n\nexport const ToggleControl = createControl(\n\t( {\n\t\toptions,\n\t\tfullWidth = false,\n\t\tsize = 'tiny',\n\t\texclusive = true,\n\t\tmaxItems,\n\t\tconvertOptions = false,\n\t}: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst processedOptions = convertOptions\n\t\t\t? convertToggleOptionsToAtomic( options as DynamicToggleOption[] )\n\t\t\t: ( options as Array< ToggleButtonGroupItem< StringPropValue[ 'value' ] > & { exclusive?: boolean } > );\n\n\t\tconst exclusiveValues = processedOptions\n\t\t\t.filter( ( option ) => option.exclusive )\n\t\t\t.map( ( option ) => option.value );\n\n\t\tconst handleNonExclusiveToggle = ( selectedValues: StringPropValue[ 'value' ][] ) => {\n\t\t\tconst newSelectedValue = selectedValues[ selectedValues.length - 1 ];\n\t\t\tconst isNewSelectedValueExclusive = exclusiveValues.includes( newSelectedValue );\n\n\t\t\tconst updatedValues = isNewSelectedValueExclusive\n\t\t\t\t? [ newSelectedValue ]\n\t\t\t\t: selectedValues?.filter( ( val ) => ! exclusiveValues.includes( val ) );\n\n\t\t\tsetValue( updatedValues?.join( ' ' ) || null );\n\t\t};\n\n\t\tconst toggleButtonGroupProps = {\n\t\t\titems: processedOptions,\n\t\t\tmaxItems,\n\t\t\tfullWidth,\n\t\t\tsize,\n\t\t\tplaceholder,\n\t\t};\n\n\t\treturn exclusive ? (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value ?? null }\n\t\t\t\tonChange={ setValue }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ true }\n\t\t\t/>\n\t\t) : (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value?.split( ' ' ) ?? [] }\n\t\t\t\tonChange={ handleNonExclusiveToggle }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ false }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport {\n\tListItemText,\n\tMenu,\n\tMenuItem,\n\ttype StackProps,\n\tstyled,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttype ToggleButtonProps,\n\tTypography,\n\tuseTheme,\n} from '@elementor/ui';\n\nimport ControlActions from '../control-actions/control-actions';\nimport { ConditionalTooltip } from './conditional-tooltip';\n\ntype RenderContentProps = { size: ToggleButtonProps[ 'size' ] };\n\nexport type ToggleButtonGroupItem< TValue > = {\n\tvalue: TValue;\n\tlabel: string;\n\trenderContent: ( { size }: RenderContentProps ) => React.ReactNode;\n\tshowTooltip?: boolean;\n};\n\nconst StyledToggleButtonGroup = styled( ToggleButtonGroup )`\n\t${ ( { justify } ) => `justify-content: ${ justify };` }\n\tbutton:not( :last-of-type ) {\n\t\tborder-start-end-radius: 0;\n\t\tborder-end-end-radius: 0;\n\t}\n\tbutton:not( :first-of-type ) {\n\t\tborder-start-start-radius: 0;\n\t\tborder-end-start-radius: 0;\n\t}\n\tbutton:last-of-type {\n\t\tborder-start-end-radius: 8px;\n\t\tborder-end-end-radius: 8px;\n\t}\n`;\n\nexport const StyledToggleButton = styled( ToggleButton, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPlaceholder',\n} )< { isPlaceholder: boolean } >`\n\t${ ( { theme, isPlaceholder } ) =>\n\t\tisPlaceholder &&\n\t\t`\n\t\tcolor: ${ theme.palette.text.tertiary };\n\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.04)' : 'rgba(0,0,0,0.02)' };\n\n\t\t&:hover {\n\t\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.04)' };\n\t\t}\n\t` }\n`;\n\ntype ExclusiveValue< TValue > = TValue;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tdisabled?: boolean;\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tmaxItems?: number;\n\tfullWidth?: boolean;\n\tplaceholder?: TValue | TValue[];\n} & (\n\t| {\n\t\t\texclusive?: false;\n\t\t\tvalue: NonExclusiveValue< TValue >;\n\t\t\tonChange: ( value: NonExclusiveValue< TValue > ) => void;\n\t }\n\t| {\n\t\t\texclusive: true;\n\t\t\tvalue: ExclusiveValue< TValue >;\n\t\t\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n\t }\n);\nexport const ToggleButtonGroupUi = React.forwardRef(\n\t< TValue, >(\n\t\t{\n\t\t\tjustify = 'end',\n\t\t\tsize = 'tiny',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\titems,\n\t\t\tmaxItems,\n\t\t\texclusive = false,\n\t\t\tfullWidth = false,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t}: Props< TValue >,\n\t\tref: React.Ref< HTMLDivElement >\n\t) => {\n\t\tconst shouldSliceItems = exclusive && maxItems !== undefined && items.length > maxItems;\n\t\tconst menuItems = shouldSliceItems ? items.slice( maxItems - 1 ) : [];\n\t\tconst fixedItems = shouldSliceItems ? items.slice( 0, maxItems - 1 ) : items;\n\n\t\tconst theme = useTheme();\n\t\tconst isRtl = 'rtl' === theme.direction;\n\n\t\tconst handleChange = (\n\t\t\t_: React.MouseEvent< HTMLElement >,\n\t\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t\t) => {\n\t\t\tonChange( newValue as never );\n\t\t};\n\n\t\tconst getGridTemplateColumns = useMemo( () => {\n\t\t\tconst isOffLimits = menuItems?.length;\n\t\t\tconst itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;\n\t\t\tconst templateColumnsSuffix = isOffLimits ? 'auto' : '';\n\t\t\treturn `repeat(${ itemsCount }, minmax(0, 25%)) ${ templateColumnsSuffix }`;\n\t\t}, [ menuItems?.length, fixedItems.length ] );\n\n\t\tconst shouldShowExclusivePlaceholder = exclusive && ( value === null || value === undefined || value === '' );\n\n\t\tconst nonExclusiveSelectedValues =\n\t\t\t! exclusive && Array.isArray( value )\n\t\t\t\t? value\n\t\t\t\t\t\t.map( ( v ) => ( typeof v === 'string' ? v : '' ) )\n\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.split( /\\s+/ )\n\t\t\t\t\t\t.filter( Boolean )\n\t\t\t\t: [];\n\n\t\tconst shouldShowNonExclusivePlaceholder = ! exclusive && nonExclusiveSelectedValues.length === 0;\n\n\t\tconst getPlaceholderArray = ( placeholderValue: TValue | TValue[] | undefined ): string[] => {\n\t\t\tif ( Array.isArray( placeholderValue ) ) {\n\t\t\t\treturn placeholderValue.flatMap( ( p ) => {\n\t\t\t\t\tif ( typeof p === 'string' ) {\n\t\t\t\t\t\treturn p.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t\t\t}\n\t\t\t\t\treturn [];\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( typeof placeholderValue === 'string' ) {\n\t\t\t\treturn placeholderValue.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t}\n\n\t\t\treturn [];\n\t\t};\n\n\t\tconst placeholderArray = getPlaceholderArray( placeholder );\n\n\t\treturn (\n\t\t\t<StyledToggleButtonGroup\n\t\t\t\tref={ ref }\n\t\t\t\tjustify={ justify }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\texclusive={ exclusive }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsx={ {\n\t\t\t\t\tdirection: isRtl ? 'rtl /* @noflip */' : 'ltr /* @noflip */',\n\t\t\t\t\tdisplay: 'grid',\n\t\t\t\t\tgridTemplateColumns: getGridTemplateColumns,\n\t\t\t\t\twidth: `100%`,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ fixedItems.map( ( { label, value: buttonValue, renderContent: Content, showTooltip } ) => {\n\t\t\t\t\tconst isPlaceholder =\n\t\t\t\t\t\tplaceholderArray.length > 0 &&\n\t\t\t\t\t\tplaceholderArray.includes( buttonValue as string ) &&\n\t\t\t\t\t\t( shouldShowExclusivePlaceholder || shouldShowNonExclusivePlaceholder );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ConditionalTooltip\n\t\t\t\t\t\t\tkey={ buttonValue as string }\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip={ showTooltip || false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\t\t\tvalue={ buttonValue }\n\t\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t\t\t\tisPlaceholder={ isPlaceholder }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t\t\t</ConditionalTooltip>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\n\t\t\t\t{ menuItems.length && exclusive && (\n\t\t\t\t\t<SplitButtonGroup\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\tvalue={ ( value as ExclusiveValue< TValue > ) || null }\n\t\t\t\t\t\tonChange={ onChange as ( v: ExclusiveValue< TValue > ) => void }\n\t\t\t\t\t\titems={ menuItems }\n\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</StyledToggleButtonGroup>\n\t\t);\n\t}\n) as < TValue >( props: Props< TValue > & { ref?: React.Ref< HTMLDivElement > } ) => React.ReactElement;\n\nexport const ControlToggleButtonGroup = < TValue, >( props: Props< TValue > ) => {\n\treturn (\n\t\t<ControlActions>\n\t\t\t<ToggleButtonGroupUi { ...props } />\n\t\t</ControlActions>\n\t);\n};\n\ntype SplitButtonGroup< TValue > = {\n\tsize: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tfullWidth: boolean;\n\tvalue: ExclusiveValue< TValue > | null;\n\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n};\n\nconst SplitButtonGroup = < TValue, >( {\n\tsize = 'tiny',\n\tonChange,\n\titems,\n\tfullWidth,\n\tvalue,\n}: SplitButtonGroup< TValue > ) => {\n\tconst previewButton = usePreviewButton( items, value );\n\tconst [ isMenuOpen, setIsMenuOpen ] = useState( false );\n\tconst menuButtonRef = useRef( null );\n\n\tconst onMenuToggle = ( ev: React.MouseEvent ) => {\n\t\tsetIsMenuOpen( ( prev ) => ! prev );\n\t\tev.preventDefault();\n\t};\n\n\tconst onMenuItemClick = ( newValue: TValue | null ) => {\n\t\tsetIsMenuOpen( false );\n\t\tonToggleItem( newValue );\n\t};\n\n\tconst onToggleItem = ( newValue: TValue | null ) => {\n\t\tconst shouldRemove = newValue === value;\n\n\t\tonChange( ( shouldRemove ? null : newValue ) as never );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleButton\n\t\t\t\tvalue={ previewButton.value }\n\t\t\t\taria-label={ previewButton.label }\n\t\t\t\tsize={ size }\n\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\tonClick={ ( ev: React.MouseEvent ) => {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\tonMenuItemClick( previewButton.value );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ previewButton.renderContent( { size } ) }\n\t\t\t</ToggleButton>\n\t\t\t<ToggleButton\n\t\t\t\tsize={ size }\n\t\t\t\taria-expanded={ isMenuOpen ? 'true' : undefined }\n\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\taria-pressed={ undefined }\n\t\t\t\tonClick={ onMenuToggle }\n\t\t\t\tref={ menuButtonRef }\n\t\t\t\tvalue=\"__chevron-icon-button__\"\n\t\t\t>\n\t\t\t\t<ChevronDownIcon fontSize={ size } />\n\t\t\t</ToggleButton>\n\t\t\t<Menu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonClose={ () => setIsMenuOpen( false ) }\n\t\t\t\tanchorEl={ menuButtonRef.current }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tsx={ {\n\t\t\t\t\tmt: 0.5,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ items.map( ( { label, value: buttonValue } ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ buttonValue }\n\t\t\t\t\t\tselected={ buttonValue === value }\n\t\t\t\t\t\tonClick={ () => onMenuItemClick( buttonValue ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItemText>\n\t\t\t\t\t\t\t<Typography sx={ { fontSize: '14px' } }>{ label }</Typography>\n\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst usePreviewButton = < TValue, >( items: ToggleButtonGroupItem< TValue >[], value: TValue ) => {\n\tconst [ previewButton, setPreviewButton ] = useState(\n\t\titems.find( ( item ) => item.value === value ) ?? items[ 0 ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst selectedButton = items.find( ( item ) => item.value === value );\n\n\t\tif ( selectedButton ) {\n\t\t\tsetPreviewButton( selectedButton );\n\t\t}\n\t}, [ items, value ] );\n\n\treturn previewButton;\n};\n","import * as React from 'react';\nimport { Tooltip } from '@elementor/ui';\n\nexport const ConditionalTooltip = ( {\n\tshowTooltip,\n\tchildren,\n\tlabel,\n}: React.PropsWithChildren< { showTooltip: boolean; label: string } > ) => {\n\treturn showTooltip && label ? (\n\t\t<Tooltip title={ label } disableFocusListener={ true } placement=\"top\">\n\t\t\t{ children }\n\t\t</Tooltip>\n\t) : (\n\t\tchildren\n\t);\n};\n","import * as React from 'react';\nimport type { ToggleButtonGroupItem } from '@elementor/editor-controls';\nimport * as Icons from '@elementor/icons';\n\nexport type DynamicToggleOption = {\n\tvalue: string;\n\tlabel: string;\n\ticon?: string;\n\tshowTooltip?: boolean;\n\texclusive?: boolean;\n};\n\nexport const convertToggleOptionsToAtomic = (\n\toptions: DynamicToggleOption[]\n): Array< ToggleButtonGroupItem< string > & { exclusive?: boolean } > => {\n\treturn options.map( ( option ) => {\n\t\tconst iconName = option.icon;\n\t\tconst IconComponent = Icons[ iconName as keyof typeof Icons ];\n\n\t\treturn {\n\t\t\tvalue: option.value,\n\t\t\tlabel: option.label,\n\t\t\trenderContent: ( { size } ) => {\n\t\t\t\tif ( IconComponent ) {\n\t\t\t\t\treturn <IconComponent fontSize={ size } />;\n\t\t\t\t}\n\t\t\t\treturn option.label;\n\t\t\t},\n\t\t\tshowTooltip: option.showTooltip,\n\t\t\texclusive: option.exclusive,\n\t\t};\n\t} );\n};\n","import * as React from 'react';\nimport { numberPropTypeUtil } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { NumberInput } from '../components/number-input';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst isEmptyOrNaN = ( value?: string | number | null ) =>\n\tvalue === null || value === undefined || value === '' || Number.isNaN( Number( value ) );\n\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder: labelPlaceholder,\n\t\tmax = Number.MAX_SAFE_INTEGER,\n\t\tmin = -Number.MAX_SAFE_INTEGER,\n\t\tstep = 1,\n\t\tshouldForceInt = false,\n\t\tstartIcon,\n\t}: {\n\t\tplaceholder?: string;\n\t\tmax?: number;\n\t\tmin?: number;\n\t\tstep?: number;\n\t\tshouldForceInt?: boolean;\n\t\tstartIcon?: React.ReactNode;\n\t} ) => {\n\t\tconst { value, setValue, placeholder, disabled, restoreValue } = useBoundProp( numberPropTypeUtil );\n\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst {\n\t\t\t\tvalue: eventValue,\n\t\t\t\tvalidity: { valid: isInputValid },\n\t\t\t} = event.target;\n\n\t\t\tlet updatedValue;\n\n\t\t\tif ( isEmptyOrNaN( eventValue ) ) {\n\t\t\t\tupdatedValue = null;\n\t\t\t} else {\n\t\t\t\tconst formattedValue = shouldForceInt ? +parseInt( eventValue ) : Number( eventValue );\n\n\t\t\t\tupdatedValue = Math.min(\n\t\t\t\t\tMath.max( formattedValue, min ?? Number.MIN_SAFE_INTEGER ),\n\t\t\t\t\tmax ?? Number.MAX_SAFE_INTEGER\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetValue( updatedValue, undefined, { validation: () => isInputValid } );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<NumberInput\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\t\tonInput={ handleChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tplaceholder={ labelPlaceholder ?? ( isEmptyOrNaN( placeholder ) ? '' : String( placeholder ) ) }\n\t\t\t\t\tinputProps={ { step, min } }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: startIcon ? (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t\t\t\t\t{ startIcon }\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t) : undefined,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type ReactNode, type RefObject, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, type PropValue } from '@elementor/editor-props';\nimport { bindPopover, bindToggle, Box, Grid, Popover, Stack, Tooltip, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { SizeControl } from './size-control';\n\ntype MultiSizePropValue = Record< PropKey, PropValue >;\n\ntype Item = {\n\ticon: ReactNode;\n\tlabel: string;\n\tariaLabel?: string;\n\tbind: PropKey;\n};\n\nexport type EqualUnequalItems = [ Item, Item, Item, Item ];\n\ntype Props< TMultiPropType extends string, TPropValue extends MultiSizePropValue > = {\n\tlabel: string;\n\ticon: ReactNode;\n\ttooltipLabel: string;\n\titems: EqualUnequalItems;\n\tmultiSizePropTypeUtil: PropTypeUtil< TMultiPropType, TPropValue >;\n};\n\nexport function EqualUnequalSizesControl< TMultiPropType extends string, TPropValue extends MultiSizePropValue >( {\n\tlabel,\n\ticon,\n\ttooltipLabel,\n\titems,\n\tmultiSizePropTypeUtil,\n}: Props< TMultiPropType, TPropValue > ) {\n\tconst popupId = useId();\n\tconst popupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst { propType: multiSizePropType, disabled: multiSizeDisabled } = useBoundProp( multiSizePropTypeUtil );\n\tconst { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();\n\n\tconst getMultiSizeValues = ( sourceValue: PropValue ) => {\n\t\tif ( multiSizePropTypeUtil.isValid( sourceValue ) ) {\n\t\t\treturn sourceValue.value;\n\t\t}\n\n\t\tconst propValue: MultiSizePropValue = {};\n\n\t\titems.forEach( ( item ) => {\n\t\t\tpropValue[ item.bind ] = sourceValue;\n\t\t} );\n\n\t\tconst derived = multiSizePropTypeUtil.create( propValue as unknown as TPropValue );\n\t\treturn derived?.value;\n\t};\n\n\tconst isShowingGeneralIndicator = ! popupState.isOpen;\n\n\tconst derivedValue = getMultiSizeValues( masterValue ) as unknown as TPropValue;\n\tconst derivedPlaceholder = getMultiSizeValues( masterPlaceholder ) as unknown as TPropValue;\n\n\tconst isEqualValues = ( values: TPropValue | null ) => {\n\t\tif ( ! values ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst multiSizeValue = multiSizePropTypeUtil.create( values );\n\n\t\tconst propValue: MultiSizePropValue = {};\n\n\t\titems.forEach( ( item ) => {\n\t\t\tpropValue[ item.bind ] = multiSizeValue?.value?.[ item.bind ] ?? null;\n\t\t} );\n\n\t\tconst allValues = Object.values( propValue ).map( ( value ) => JSON.stringify( value ) );\n\t\treturn allValues.every( ( value ) => value === allValues[ 0 ] );\n\t};\n\n\tconst isMixedPlaceholder = ! masterValue && ! isEqualValues( derivedPlaceholder );\n\tconst isMixed = isMixedPlaceholder || ! isEqualValues( derivedValue );\n\n\tconst applyMultiSizeValue = ( newValue: TPropValue ) => {\n\t\tif ( ! isEqualValues( newValue ) ) {\n\t\t\tsetMasterValue( multiSizePropTypeUtil.create( newValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tsetMasterValue( Object.values( newValue )?.pop() ?? null );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ rowRefs[ 0 ] }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t{ ! isShowingGeneralIndicator ? (\n\t\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t\t<Box flexGrow={ 1 }>\n\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\tplaceholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined }\n\t\t\t\t\t\t\t\tenablePropTypeUnits={ ! isMixed || ! isMixedPlaceholder }\n\t\t\t\t\t\t\t\tanchorRef={ rowRefs[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<Tooltip title={ tooltipLabel } placement=\"top\">\n\t\t\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t\t{ ...bindToggle( popupState ) }\n\t\t\t\t\t\t\t\tselected={ popupState.isOpen }\n\t\t\t\t\t\t\t\tisPlaceholder={ isMixedPlaceholder }\n\t\t\t\t\t\t\t\taria-label={ tooltipLabel }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\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: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: { sx: { mt: 0.5, width: rowRefs[ 0 ].current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<PropProvider\n\t\t\t\t\tpropType={ multiSizePropType }\n\t\t\t\t\tvalue={ derivedValue }\n\t\t\t\t\tplaceholder={ derivedPlaceholder }\n\t\t\t\t\tsetValue={ applyMultiSizeValue }\n\t\t\t\t\tisDisabled={ () => multiSizeDisabled }\n\t\t\t\t>\n\t\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 1 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 0 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 1 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 2 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 2 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 3 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t</PropProvider>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nconst MultiSizeValueControl = ( { item, rowRef }: { item: Item; rowRef: RefObject< HTMLDivElement > } ) => {\n\tconst { bind, label, icon, ariaLabel } = item;\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<SizeControl startIcon={ icon } ariaLabel={ ariaLabel } anchorRef={ rowRef } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, Tooltip } from '@elementor/ui';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { type ExtendedOption } from '../utils/size-control';\nimport { SizeControl } from './size-control';\n\ntype Props = {\n\tlabel: string;\n\tisSiteRtl?: boolean;\n\textendedOptions?: ExtendedOption[];\n\tmin?: number;\n};\n\nexport const LinkedDimensionsControl = ( { label, isSiteRtl = false, extendedOptions, min }: Props ) => {\n\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst { disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst {\n\t\tvalue: dimensionsValue,\n\t\tsetValue: setDimensionsValue,\n\t\tpropType,\n\t\tplaceholder: dimensionsPlaceholder,\n\t\tdisabled: dimensionsDisabled,\n\t} = useBoundProp( dimensionsPropTypeUtil );\n\n\tconst { value: masterValue, placeholder: masterPlaceholder, setValue: setMasterValue } = useBoundProp();\n\n\tconst inferIsLinked = () => {\n\t\tif ( dimensionsPropTypeUtil.isValid( masterValue ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! masterValue && dimensionsPropTypeUtil.isValid( masterPlaceholder ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst [ isLinked, setIsLinked ] = useState( () => inferIsLinked() );\n\n\tconst activeBreakpoint = useActiveBreakpoint();\n\n\tuseLayoutEffect( () => {\n\t\tsetIsLinked( inferIsLinked );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\tconst onLinkToggle = () => {\n\t\tsetIsLinked( ( prev ) => ! prev );\n\n\t\tif ( ! dimensionsPropTypeUtil.isValid( masterValue ) ) {\n\t\t\tconst value = masterValue ? masterValue : null;\n\n\t\t\tif ( ! value ) {\n\t\t\t\tsetMasterValue( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetMasterValue(\n\t\t\t\tdimensionsPropTypeUtil.create( {\n\t\t\t\t\t'block-start': value,\n\t\t\t\t\t'block-end': value,\n\t\t\t\t\t'inline-start': value,\n\t\t\t\t\t'inline-end': value,\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tdimensionsValue?.[ 'block-start' ] ??\n\t\t\tdimensionsValue?.[ 'inline-end' ] ??\n\t\t\tdimensionsValue?.[ 'block-end' ] ??\n\t\t\tdimensionsValue?.[ 'inline-start' ] ??\n\t\t\tnull;\n\n\t\tif ( ! sizeValue ) {\n\t\t\tsetMasterValue( null );\n\t\t\treturn;\n\t\t}\n\n\t\tsetMasterValue( sizeValue );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || dimensionsDisabled;\n\n\tconst propProviderProps = {\n\t\tpropType,\n\t\tvalue: dimensionsValue,\n\t\tplaceholder: dimensionsPlaceholder,\n\t\tsetValue: setDimensionsValue,\n\t\tisDisabled: () => dimensionsDisabled,\n\t};\n\n\tconst hasPlaceholders = ! masterValue && ( dimensionsPlaceholder || masterPlaceholder );\n\n\treturn (\n\t\t<PropProvider { ...propProviderProps }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tisPlaceholder={ hasPlaceholders }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\n\t\t\t{ getCssDimensionProps( label, isSiteRtl ).map( ( row, index ) => (\n\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" key={ index } ref={ gridRowRefs[ index ] }>\n\t\t\t\t\t{ row.map( ( { icon, ...props } ) => (\n\t\t\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\" key={ props.bind }>\n\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t<Label { ...props } />\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\t\t\tbind={ props.bind }\n\t\t\t\t\t\t\t\t\tariaLabel={ props.ariaLabel }\n\t\t\t\t\t\t\t\t\tstartIcon={ icon }\n\t\t\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\t\t\t\t\t\tanchorRef={ gridRowRefs[ index ] }\n\t\t\t\t\t\t\t\t\tmin={ min }\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\t\t\t\t\t) ) }\n\t\t\t\t</Stack>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tbind,\n\tariaLabel,\n\tstartIcon,\n\tisLinked,\n\textendedOptions,\n\tanchorRef,\n\tmin,\n}: {\n\tbind: PropKey;\n\tariaLabel: string;\n\tstartIcon: React.ReactNode;\n\tisLinked: boolean;\n\textendedOptions?: ExtendedOption[];\n\tanchorRef: RefObject< HTMLDivElement >;\n\tmin?: number;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn (\n\t\t\t<SizeControl\n\t\t\t\tariaLabel={ ariaLabel }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tmin={ min }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl\n\t\t\t\tariaLabel={ ariaLabel }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tmin={ min }\n\t\t\t/>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Label = ( { label, bind }: { label: string; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t</PropKeyProvider>\n\t);\n};\n\nfunction getCssDimensionProps( label: string, isSiteRtl: boolean ) {\n\treturn [\n\t\t[\n\t\t\t{\n\t\t\t\tbind: 'block-start',\n\t\t\t\tlabel: __( 'Top', 'elementor' ),\n\t\t\t\t/* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\tariaLabel: sprintf( __( '%s top', 'elementor' ), label ),\n\t\t\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbind: 'inline-end',\n\t\t\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\t\t\tariaLabel: isSiteRtl\n\t\t\t\t\t? /* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\t\t sprintf( __( '%s left', 'elementor' ), label )\n\t\t\t\t\t: /* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\t\t sprintf( __( '%s right', 'elementor' ), label ),\n\t\t\t\ticon: isSiteRtl ? <SideLeftIcon fontSize={ 'tiny' } /> : <SideRightIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t],\n\t\t[\n\t\t\t{\n\t\t\t\tbind: 'block-end',\n\t\t\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\t\t\t/* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\tariaLabel: sprintf( __( '%s bottom', 'elementor' ), label ),\n\t\t\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbind: 'inline-start',\n\t\t\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\t\t\tariaLabel: isSiteRtl\n\t\t\t\t\t? /* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\t\t sprintf( __( '%s right', 'elementor' ), label )\n\t\t\t\t\t: /* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\t\t sprintf( __( '%s left', 'elementor' ), label ),\n\t\t\t\ticon: isSiteRtl ? <SideRightIcon fontSize={ 'tiny' } /> : <SideLeftIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t],\n\t];\n}\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { ChevronDownIcon, TextIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Popover, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { ItemSelector } from '../../components/item-selector';\nimport { type Category } from '../../components/item-selector';\nimport ControlActions from '../../control-actions/control-actions';\nimport { createControl } from '../../create-control';\nimport { enqueueFont } from './enqueue-font';\n\nexport type FontCategory = {\n\tlabel: string;\n\tfonts: string[];\n};\n\ntype FontFamilyControlProps = {\n\tfontFamilies: FontCategory[];\n\tsectionWidth: number;\n\tariaLabel?: string;\n};\n\nexport const FontFamilyControl = createControl(\n\t( { fontFamilies, sectionWidth, ariaLabel }: FontFamilyControlProps ) => {\n\t\tconst {\n\t\t\tvalue: fontFamily,\n\t\t\tsetValue: setFontFamily,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t} = useBoundProp( stringPropTypeUtil );\n\n\t\tconst popoverState = usePopupState( { variant: 'popover' } );\n\t\tconst isShowingPlaceholder = ! fontFamily && placeholder;\n\n\t\tconst mapFontSubs = React.useMemo< Category[] >( () => {\n\t\t\treturn fontFamilies.map( ( { label, fonts } ) => ( {\n\t\t\t\tlabel,\n\t\t\t\titems: fonts,\n\t\t\t} ) );\n\t\t}, [ fontFamilies ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<ControlActions>\n\t\t\t\t\t<UnstableTag\n\t\t\t\t\t\tid=\"font-family-control\"\n\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\tlabel={ fontFamily || placeholder }\n\t\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\t\tsx={\n\t\t\t\t\t\t\tisShowingPlaceholder\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t'& .MuiTag-label': {\n\t\t\t\t\t\t\t\t\t\t\tcolor: ( theme ) => theme.palette.text.tertiary,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttextTransform: 'capitalize',\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ControlActions>\n\n\t\t\t\t<Popover\n\t\t\t\t\tdisablePortal\n\t\t\t\t\tdisableScrollLock\n\t\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\t\tsx={ { my: 1.5 } }\n\t\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\t>\n\t\t\t\t\t<ItemSelector\n\t\t\t\t\t\tid=\"font-family-selector\"\n\t\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\t\tonItemChange={ setFontFamily }\n\t\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\t\ttitle={ __( 'Font family', 'elementor' ) }\n\t\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\t/>\n\t\t\t\t</Popover>\n\t\t\t</>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type ReactNode, useCallback, useEffect, useState } from 'react';\nimport { PopoverBody, PopoverHeader, PopoverMenuList, SearchField } from '@elementor/editor-ui';\nimport { Box, Divider, Link, Stack, Typography } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SelectableItem, useFilteredItemsList } from '../hooks/use-filtered-items-list';\n\nexport type Category = {\n\tlabel: string;\n\titems: string[];\n};\n\ntype ItemSelectorProps = {\n\titemsList: Category[];\n\tselectedItem: string | null;\n\tonItemChange: ( item: string ) => void;\n\tonClose: () => void;\n\tsectionWidth: number;\n\ttitle: string;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\ticon: React.ElementType< { fontSize: string } >;\n\tdisabledItems?: string[];\n\tid?: string;\n\tfooter?: ReactNode;\n\tcategoryItemContentTemplate?: ( item: SelectableItem ) => ReactNode;\n};\n\nexport const ItemSelector = ( {\n\titemsList,\n\tselectedItem,\n\tonItemChange,\n\tonClose,\n\tsectionWidth,\n\ttitle,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n\ticon,\n\tdisabledItems,\n\tid = 'item-selector',\n\tfooter,\n\tcategoryItemContentTemplate,\n}: ItemSelectorProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst filteredItemsList = useFilteredItemsList( itemsList, searchValue, disabledItems );\n\n\tconst IconComponent = icon;\n\n\tconst handleSearch = ( value: string ) => {\n\t\tsetSearchValue( value );\n\t};\n\n\tconst handleClose = () => {\n\t\tsetSearchValue( '' );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<PopoverBody width={ sectionWidth } id={ id }>\n\t\t\t<PopoverHeader title={ title } onClose={ handleClose } icon={ <IconComponent fontSize=\"tiny\" /> } />\n\t\t\t<SearchField\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tonSearch={ handleSearch }\n\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\tid={ id + '-search' }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t<Box sx={ { flex: 1, overflow: 'auto', minHeight: 0 } }>\n\t\t\t\t{ filteredItemsList.length > 0 ? (\n\t\t\t\t\t<ItemList\n\t\t\t\t\t\titemListItems={ filteredItemsList }\n\t\t\t\t\t\tsetSelectedItem={ onItemChange }\n\t\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\t\tselectedItem={ selectedItem }\n\t\t\t\t\t\titemStyle={ itemStyle }\n\t\t\t\t\t\tonDebounce={ onDebounce }\n\t\t\t\t\t\tcategoryItemContentTemplate={ categoryItemContentTemplate }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\theight=\"100%\"\n\t\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\t\toverflow=\"hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<IconComponent fontSize=\"large\" />\n\t\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\t\tsx={ { display: 'flex', width: '100%', justifyContent: 'center' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span>&ldquo;</span>\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\t\t\t\tsx={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t<span>&rdquo;.</span>\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t\t{ footer }\n\t\t</PopoverBody>\n\t);\n};\n\ntype ItemListProps = {\n\titemListItems: SelectableItem[];\n\tsetSelectedItem: ( item: string ) => void;\n\thandleClose: () => void;\n\tselectedItem: string | null;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\tdisabledItems?: string[];\n\tcategoryItemContentTemplate?: ( item: SelectableItem ) => ReactNode;\n};\n\nconst ItemList = ( {\n\titemListItems,\n\tsetSelectedItem,\n\thandleClose,\n\tselectedItem,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n\tcategoryItemContentTemplate,\n}: ItemListProps ) => {\n\tconst selectedItemFound = itemListItems.find( ( item ) => item.value === selectedItem );\n\n\tconst debouncedVirtualizeChange = useDebounce( ( visibleItems: SelectableItem[] ) => {\n\t\tvisibleItems.forEach( ( item ) => {\n\t\t\tif ( item && item.type === 'item' ) {\n\t\t\t\tonDebounce( item.value );\n\t\t\t}\n\t\t} );\n\t}, 100 );\n\n\tconst memoizedItemStyle = useCallback( ( item: SelectableItem ) => itemStyle( item ), [ itemStyle ] );\n\n\treturn (\n\t\t<PopoverMenuList\n\t\t\titems={ itemListItems }\n\t\t\tselectedValue={ selectedItemFound?.value }\n\t\t\tonChange={ debouncedVirtualizeChange }\n\t\t\tonSelect={ setSelectedItem }\n\t\t\tonClose={ handleClose }\n\t\t\titemStyle={ memoizedItemStyle }\n\t\t\tdata-testid=\"item-list\"\n\t\t\tcategoryItemContentTemplate={ categoryItemContentTemplate }\n\t\t/>\n\t);\n};\n\nconst useDebounce = < TArgs extends unknown[] >( fn: ( ...args: TArgs ) => void, delay: number ) => {\n\tconst [ debouncedFn ] = useState( () => debounce( fn, delay ) );\n\tuseEffect( () => () => debouncedFn.cancel(), [ debouncedFn ] );\n\treturn debouncedFn;\n};\n","import { type Category } from '../components/item-selector';\n\nexport type SelectableItem = {\n\ttype: 'item' | 'category';\n\tvalue: string;\n\tdisabled?: boolean;\n};\n\nexport const useFilteredItemsList = ( itemsList: Category[], searchValue: string, disabledItems?: string[] ) => {\n\treturn itemsList.reduce< SelectableItem[] >( ( acc, category ) => {\n\t\tconst filteredItems = category.items.filter( ( item ) =>\n\t\t\titem.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t);\n\n\t\tif ( filteredItems.length ) {\n\t\t\tacc.push( { type: 'category', value: category.label } );\n\n\t\t\tfilteredItems.forEach( ( item ) => {\n\t\t\t\tacc.push( { type: 'item', value: item, disabled: disabledItems?.includes( item ) ?? false } );\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n};\n","type EnqueueFont = ( fontFamily: string, context?: 'preview' | 'editor' ) => void;\n\ntype ExtendedWindow = Window & {\n\telementor?: {\n\t\thelpers?: {\n\t\t\tenqueueFont?: EnqueueFont;\n\t\t};\n\t};\n};\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'editor' ) => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import * as React from 'react';\nimport { urlPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const UrlControl = createControl(\n\t( { placeholder, ariaLabel }: { placeholder?: string; ariaLabel?: string } ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( urlPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { getLinkInLinkRestriction } from '@elementor/editor-elements';\nimport { linkPropTypeUtil, type LinkPropValue } from '@elementor/editor-props';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Collapse, Grid, IconButton, Stack } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { RestrictedLinkInfotip } from '../components/restricted-link-infotip';\nimport { createControl } from '../create-control';\nimport { type ControlProps } from '../utils/types';\nimport { QueryControl } from './query-control';\nimport { SwitchControl } from './switch-control';\n\ntype Props = ControlProps< {\n\tqueryOptions: {\n\t\tparams: Record< string, unknown >;\n\t\turl: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tlabel?: string;\n\tariaLabel?: string;\n} >;\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ] | null;\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\nexport type DestinationProp = LinkPropValue[ 'value' ][ 'destination' ];\n\nconst SIZE = 'tiny';\n\nexport const LinkControl = createControl( ( props: Props ) => {\n\tconst { value, path, setValue, ...propContext } = useBoundProp( linkPropTypeUtil );\n\tconst [ linkSessionValue, setLinkSessionValue ] = useSessionStorage< LinkSessionValue >( path.join( '/' ) );\n\tconst [ isActive, setIsActive ] = useState( !! value );\n\n\tconst {\n\t\tallowCustomValues = true,\n\t\tqueryOptions,\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tcontext: { elementId },\n\t\tlabel = __( 'Link', 'elementor' ),\n\t\tariaLabel,\n\t} = props || {};\n\n\tconst [ linkInLinkRestriction, setLinkInLinkRestriction ] = useState(\n\t\tgetLinkInLinkRestriction( elementId, value )\n\t);\n\tconst shouldDisableAddingLink = ! isActive && linkInLinkRestriction.shouldRestrict;\n\n\tconst debouncedCheckRestriction = useMemo(\n\t\t() =>\n\t\t\tdebounce( () => {\n\t\t\t\tconst newRestriction = getLinkInLinkRestriction( elementId, value );\n\n\t\t\t\tif ( newRestriction.shouldRestrict && isActive ) {\n\t\t\t\t\tsetIsActive( false );\n\t\t\t\t}\n\n\t\t\t\tsetLinkInLinkRestriction( newRestriction );\n\t\t\t}, 300 ),\n\t\t[ elementId, isActive, value ]\n\t);\n\n\tuseEffect( () => {\n\t\tdebouncedCheckRestriction();\n\n\t\tconst handleInlineLinkChanged = ( event: Event ) => {\n\t\t\tconst customEvent = event as CustomEvent< { elementId: string } >;\n\n\t\t\tif ( customEvent.detail.elementId === elementId ) {\n\t\t\t\tdebouncedCheckRestriction();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener( 'elementor:inline-link-changed', handleInlineLinkChanged );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'elementor:inline-link-changed', handleInlineLinkChanged );\n\t\t\tdebouncedCheckRestriction.cancel();\n\t\t};\n\t}, [ elementId, debouncedCheckRestriction ] );\n\n\tconst onEnabledChange = () => {\n\t\tsetLinkInLinkRestriction( getLinkInLinkRestriction( elementId, value ) );\n\n\t\tif ( linkInLinkRestriction.shouldRestrict && ! isActive ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newState = ! isActive;\n\t\tsetIsActive( newState );\n\n\t\tif ( ! newState && value !== null ) {\n\t\t\tsetValue( null );\n\t\t}\n\n\t\tif ( newState && linkSessionValue?.value ) {\n\t\t\tsetValue( linkSessionValue.value );\n\t\t}\n\n\t\tsetLinkSessionValue( {\n\t\t\tvalue: linkSessionValue?.value,\n\t\t\tmeta: { isEnabled: newState },\n\t\t} );\n\t};\n\n\tconst onSaveValueToSession = ( newValue: DestinationProp[ 'value' ] | null ) => {\n\t\tconst valueToSave: LinkPropValue[ 'value' ] | null = newValue\n\t\t\t? {\n\t\t\t\t\t...value,\n\t\t\t\t\tdestination: newValue,\n\t\t\t }\n\t\t\t: null;\n\n\t\tsetLinkSessionValue( { ...linkSessionValue, value: valueToSave } );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tmarginInlineEnd: -0.75,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t<RestrictedLinkInfotip isVisible={ ! isActive } linkInLinkRestriction={ linkInLinkRestriction }>\n\t\t\t\t\t\t<ToggleIconControl\n\t\t\t\t\t\t\tdisabled={ shouldDisableAddingLink }\n\t\t\t\t\t\t\tactive={ isActive }\n\t\t\t\t\t\t\tonIconClick={ onEnabledChange }\n\t\t\t\t\t\t\tlabel={ __( 'Toggle link', 'elementor' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</RestrictedLinkInfotip>\n\t\t\t\t</Stack>\n\t\t\t\t<Collapse in={ isActive } timeout=\"auto\" unmountOnExit>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'destination' }>\n\t\t\t\t\t\t\t<QueryControl\n\t\t\t\t\t\t\t\tqueryOptions={ queryOptions }\n\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\tonSetValue={ onSaveValueToSession }\n\t\t\t\t\t\t\t\tariaLabel={ ariaLabel || label }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'isTargetBlank' }>\n\t\t\t\t\t\t\t<Grid container alignItems=\"center\" flexWrap=\"nowrap\" justifyContent=\"space-between\">\n\t\t\t\t\t\t\t\t<Grid item>\n\t\t\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Open in a new tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item sx={ { marginInlineEnd: -1 } }>\n\t\t\t\t\t\t\t\t\t<SwitchControl />\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</PropKeyProvider>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Collapse>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\ntype ToggleIconControlProps = {\n\tdisabled: boolean;\n\tactive: boolean;\n\tonIconClick: () => void;\n\tlabel?: string;\n};\n\nconst ToggleIconControl = ( { disabled, active, onIconClick, label }: ToggleIconControlProps ) => {\n\treturn (\n\t\t<IconButton size={ SIZE } onClick={ onIconClick } aria-label={ label } disabled={ disabled }>\n\t\t\t{ active ? <MinusIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconButton>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { type LinkInLinkRestriction, selectElement } from '@elementor/editor-elements';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertAction, AlertTitle, Box, Infotip, Link } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst learnMoreButton = {\n\tlabel: __( 'Learn More', 'elementor' ),\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n};\n\nconst INFOTIP_CONTENT = {\n\tdescendant: __(\n\t\t'To add a link or action to this element, first remove the link or action from the elements inside of it.',\n\t\t'elementor'\n\t),\n\tancestor: __(\n\t\t'To add a link or action to this container, first remove the link or action from its parent container.',\n\t\t'elementor'\n\t),\n};\n\ntype RestrictedLinkInfotipProps = PropsWithChildren< {\n\tlinkInLinkRestriction: LinkInLinkRestriction;\n\tisVisible: boolean;\n} >;\n\nexport const RestrictedLinkInfotip: React.FC< RestrictedLinkInfotipProps > = ( {\n\tlinkInLinkRestriction,\n\tisVisible,\n\tchildren,\n} ) => {\n\tconst { shouldRestrict, reason, elementId } = linkInLinkRestriction;\n\n\tconst handleTakeMeClick = () => {\n\t\tif ( elementId ) {\n\t\t\tselectElement( elementId );\n\t\t}\n\t};\n\n\tconst content = (\n\t\t<Alert\n\t\t\tcolor=\"secondary\"\n\t\t\ticon={ <InfoCircleFilledIcon /> }\n\t\t\taction={\n\t\t\t\t<AlertAction\n\t\t\t\t\tsx={ { width: 'fit-content' } }\n\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tonClick={ handleTakeMeClick }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Take me there', 'elementor' ) }\n\t\t\t\t</AlertAction>\n\t\t\t}\n\t\t>\n\t\t\t<AlertTitle>{ __( 'Nested links', 'elementor' ) }</AlertTitle>\n\t\t\t<Box component=\"span\">\n\t\t\t\t{ INFOTIP_CONTENT[ reason ?? 'descendant' ] }{ ' ' }\n\t\t\t\t<Link href={ learnMoreButton.href } target=\"_blank\" color=\"info.main\">\n\t\t\t\t\t{ learnMoreButton.label }\n\t\t\t\t</Link>\n\t\t\t</Box>\n\t\t</Alert>\n\t);\n\n\treturn shouldRestrict && isVisible ? (\n\t\t<Infotip\n\t\t\tplacement=\"right\"\n\t\t\tcontent={ content }\n\t\t\tcolor=\"secondary\"\n\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Infotip>\n\t) : (\n\t\t<>{ children }</>\n\t);\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { numberPropTypeUtil, stringPropTypeUtil, urlPropTypeUtil } from '@elementor/editor-props';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\nimport { SearchIcon } from '@elementor/icons';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport {\n\tAutocomplete,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from '../components/autocomplete';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { type DestinationProp } from './link-control';\n\ntype Props = {\n\tqueryOptions: {\n\t\tparams: Record< string, unknown >;\n\t\turl: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tonSetValue?: ( value: DestinationProp | null ) => void;\n\tariaLabel?: string;\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\n\ntype FetchOptionsParams = Record< string, unknown > & { term: string };\n\nexport const QueryControl = createControl( ( props: Props ) => {\n\tconst { value, setValue } = useBoundProp< DestinationProp >();\n\n\tconst {\n\t\tallowCustomValues = true,\n\t\tqueryOptions: { url, params = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tonSetValue,\n\t\tariaLabel,\n\t} = props || {};\n\n\tconst normalizedPlaceholder = placeholder || __( 'Search', 'elementor' );\n\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value?.value )\n\t);\n\n\tconst onOptionChange = ( newValue: number | null ) => {\n\t\tif ( newValue === null ) {\n\t\t\tsetValue( null );\n\t\t\tonSetValue?.( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst valueToSave = {\n\t\t\t$$type: 'query',\n\t\t\tvalue: {\n\t\t\t\tid: numberPropTypeUtil.create( newValue ),\n\t\t\t\tlabel: stringPropTypeUtil.create( findMatchingOption( options, newValue )?.label || null ),\n\t\t\t},\n\t\t};\n\n\t\tsetValue( valueToSave );\n\t\tonSetValue?.( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tif ( ! newValue ) {\n\t\t\tsetValue( null );\n\t\t\tonSetValue?.( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst newLinkValue = newValue?.trim() || '';\n\t\tconst valueToSave = newLinkValue ? urlPropTypeUtil.create( newLinkValue ) : null;\n\n\t\tsetValue( valueToSave );\n\t\tonSetValue?.( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst updateOptions = ( newValue: string | null ) => {\n\t\tsetOptions( [] );\n\n\t\tif ( ! newValue || ! url || newValue.length < minInputLength ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounceFetch( { ...params, term: newValue } );\n\t};\n\n\tconst debounceFetch = useMemo(\n\t\t() =>\n\t\t\tdebounce(\n\t\t\t\t( queryParams: FetchOptionsParams ) =>\n\t\t\t\t\tfetchOptions( url, queryParams ).then( ( newOptions ) => {\n\t\t\t\t\t\tsetOptions( formatOptions( newOptions ) );\n\t\t\t\t\t} ),\n\t\t\t\t400\n\t\t\t),\n\t\t[ url ]\n\t);\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Autocomplete\n\t\t\t\toptions={ options }\n\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\tplaceholder={ normalizedPlaceholder }\n\t\t\t\tstartAdornment={ <SearchIcon fontSize=\"tiny\" /> }\n\t\t\t\tvalue={ value?.value?.id?.value || value?.value }\n\t\t\t\tonOptionChange={ onOptionChange }\n\t\t\t\tonTextChange={ onTextChange }\n\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\tdisablePortal={ false }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n\nasync function fetchOptions( ajaxUrl: string, params: FetchOptionsParams ) {\n\tif ( ! params || ! ajaxUrl ) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst { data: response } = await httpService().get< Response >( ajaxUrl, { params } );\n\n\t\treturn response.data.value;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction formatOptions( options: FlatOption[] | CategorizedOption[] ): FlatOption[] | CategorizedOption[] {\n\tconst compareKey = isCategorizedOptionPool( options ) ? 'groupLabel' : 'label';\n\n\treturn options.sort( ( a, b ) =>\n\t\ta[ compareKey ] && b[ compareKey ] ? a[ compareKey ].localeCompare( b[ compareKey ] ) : 0\n\t);\n}\n\nfunction generateFirstLoadedOption( unionValue: DestinationProp | null ): FlatOption[] {\n\tconst value = unionValue?.id?.value;\n\tconst label = unionValue?.label?.value;\n\tconst type = unionValue?.id?.$$type || 'url';\n\n\treturn value && label && type === 'number'\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tid: value.toString(),\n\t\t\t\t\tlabel,\n\t\t\t\t},\n\t\t ]\n\t\t: [];\n}\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport {\n\tAutocomplete as AutocompleteBase,\n\ttype AutocompleteRenderInputParams,\n\tBox,\n\tIconButton,\n\tInputAdornment,\n\tTextField,\n} from '@elementor/ui';\n\nexport type FlatOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel?: never;\n};\n\nexport type CategorizedOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel: string;\n};\n\nexport type Props = {\n\toptions: FlatOption[] | CategorizedOption[];\n\tvalue?: number | string | null;\n\tonOptionChange: ( newValue: number | null ) => void;\n\tonTextChange?: ( newValue: string | null ) => void;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n\tminInputLength?: number;\n\tstartAdornment?: React.ReactNode;\n\tinputProps?: Record< string, unknown >;\n\tdisablePortal?: boolean;\n};\n\nexport const Autocomplete = forwardRef( ( props: Props, ref ) => {\n\tconst {\n\t\toptions,\n\t\tonOptionChange,\n\t\tonTextChange,\n\t\tallowCustomValues = false,\n\t\tplaceholder = '',\n\t\tminInputLength = 2,\n\t\tvalue = '',\n\t\tstartAdornment,\n\t\tdisablePortal = true,\n\t\tinputProps,\n\t\t...restProps\n\t} = props;\n\n\tconst optionKeys = factoryFilter( value, options, minInputLength ).map( ( { id } ) => id );\n\tconst allowClear = !! value;\n\n\t// Prevents MUI warning when freeSolo/allowCustomValues is false\n\tconst muiWarningPreventer = allowCustomValues || !! value?.toString()?.length;\n\n\tconst isOptionEqualToValue = muiWarningPreventer ? undefined : () => true;\n\n\tconst isValueFromOptions = typeof value === 'number' && !! findMatchingOption( options, value );\n\n\tconst valueLength = value?.toString()?.length ?? 0;\n\tconst meetsMinLength = valueLength >= minInputLength;\n\tconst shouldOpen = meetsMinLength && ( allowCustomValues ? optionKeys.length > 0 : true );\n\n\treturn (\n\t\t<AutocompleteBase\n\t\t\t{ ...restProps }\n\t\t\tref={ ref }\n\t\t\tforcePopupIcon={ false }\n\t\t\tdisablePortal={ disablePortal }\n\t\t\tdisableClearable={ true } // Disabled component's auto clear icon to use our custom one instead\n\t\t\tfreeSolo={ allowCustomValues }\n\t\t\topenOnFocus={ false }\n\t\t\topen={ shouldOpen }\n\t\t\tvalue={ value?.toString() || '' }\n\t\t\tsize={ 'tiny' }\n\t\t\tonChange={ ( _, newValue ) => onOptionChange( Number( newValue ) ) }\n\t\t\treadOnly={ isValueFromOptions }\n\t\t\toptions={ optionKeys }\n\t\t\tgetOptionKey={ ( optionId ) => findMatchingOption( options, optionId )?.id || optionId }\n\t\t\tgetOptionLabel={ ( optionId ) => findMatchingOption( options, optionId )?.label || optionId.toString() }\n\t\t\tgroupBy={\n\t\t\t\tisCategorizedOptionPool( options )\n\t\t\t\t\t? ( optionId: string ) => findMatchingOption( options, optionId )?.groupLabel || optionId\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tisOptionEqualToValue={ isOptionEqualToValue }\n\t\t\tfilterOptions={ () => optionKeys }\n\t\t\trenderOption={ ( optionProps, optionId ) => (\n\t\t\t\t<Box component=\"li\" { ...optionProps } key={ optionProps.id }>\n\t\t\t\t\t{ findMatchingOption( options, optionId )?.label ?? optionId }\n\t\t\t\t</Box>\n\t\t\t) }\n\t\t\trenderInput={ ( params ) => (\n\t\t\t\t<TextInput\n\t\t\t\t\tparams={ params }\n\t\t\t\t\thandleChange={ ( newValue ) => onTextChange?.( newValue ) }\n\t\t\t\t\tallowClear={ allowClear }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\thasSelectedValue={ isValueFromOptions }\n\t\t\t\t\tstartAdornment={ startAdornment }\n\t\t\t\t\textraInputProps={ inputProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n} );\n\nconst TextInput = ( {\n\tparams,\n\tallowClear,\n\tplaceholder,\n\thandleChange,\n\thasSelectedValue,\n\tstartAdornment,\n\textraInputProps,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n\tplaceholder: string;\n\thasSelectedValue: boolean;\n\tstartAdornment?: React.ReactNode;\n\textraInputProps?: Record< string, unknown >;\n} ) => {\n\tconst onChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\thandleChange( event.target.value );\n\t};\n\n\treturn (\n\t\t<TextField\n\t\t\t{ ...params }\n\t\t\tplaceholder={ placeholder }\n\t\t\tonChange={ onChange }\n\t\t\tinputProps={ { ...( params.inputProps ?? {} ), ...( extraInputProps ?? {} ) } }\n\t\t\tsx={ {\n\t\t\t\t'& .MuiInputBase-input': {\n\t\t\t\t\tcursor: hasSelectedValue ? 'default' : undefined,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tInputProps={ {\n\t\t\t\t...params.InputProps,\n\t\t\t\tstartAdornment: startAdornment || params.InputProps.startAdornment,\n\t\t\t\tendAdornment: <ClearButton params={ params } allowClear={ allowClear } handleChange={ handleChange } />,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ClearButton = ( {\n\tallowClear,\n\thandleChange,\n\tparams,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n} ) => (\n\t<InputAdornment position=\"end\">\n\t\t{ allowClear && (\n\t\t\t<IconButton size={ params.size } onClick={ () => handleChange( null ) } sx={ { cursor: 'pointer' } }>\n\t\t\t\t<XIcon fontSize={ params.size } />\n\t\t\t</IconButton>\n\t\t) }\n\t</InputAdornment>\n);\n\nexport function findMatchingOption(\n\toptions: FlatOption[] | CategorizedOption[],\n\toptionId: string | number | null = null\n) {\n\tconst formattedOption = ( optionId || '' ).toString();\n\n\treturn options.find( ( { id } ) => formattedOption === id.toString() );\n}\n\nexport function isCategorizedOptionPool( options: FlatOption[] | CategorizedOption[] ): options is CategorizedOption[] {\n\tif ( options.length <= 1 ) {\n\t\treturn false;\n\t}\n\n\tconst uniqueGroupLabels = new Set( options.map( ( option ) => option.groupLabel ) );\n\n\treturn uniqueGroupLabels.size > 1; // should not categorize options if there is only one group\n}\n\nfunction factoryFilter< T extends FlatOption[] | CategorizedOption[] >(\n\tnewValue: string | number | null,\n\toptions: T,\n\tminInputLength: number\n): T {\n\tif ( null === newValue ) {\n\t\treturn options;\n\t}\n\n\tconst formattedValue = String( newValue || '' )?.toLowerCase();\n\n\tif ( formattedValue.length < minInputLength ) {\n\t\treturn new Array( 0 ) as T;\n\t}\n\n\treturn options.filter(\n\t\t( option ) =>\n\t\t\tString( option.id ).toLowerCase().includes( formattedValue ) ||\n\t\t\toption.label.toLowerCase().includes( formattedValue )\n\t) as T;\n}\n","import * as React from 'react';\nimport { booleanPropTypeUtil } from '@elementor/editor-props';\nimport { Box, Switch } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context/use-bound-prop';\nimport { createControl } from '../create-control';\n\nexport const SwitchControl = createControl( () => {\n\tconst { value, setValue, disabled } = useBoundProp( booleanPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.checked );\n\t};\n\n\treturn (\n\t\t<Box sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t<Switch\n\t\t\t\tchecked={ !! value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( disabled ? { style: { opacity: 0 } } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Box>\n\t);\n} );\n","import * as React from 'react';\nimport { getElementLabel } from '@elementor/editor-elements';\nimport { stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Select, type SelectChangeEvent, styled, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ConditionalControlInfotip } from '../components/conditional-control-infotip';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype Props = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n\tfallbackLabels?: Record< string, string >;\n};\n\nconst StyledSelect = styled( Select )( () => ( { '.MuiSelect-select.Mui-disabled': { cursor: 'not-allowed' } } ) );\n\nexport const HtmlTagControl = createControl( ( { options, onChange, fallbackLabels = {} }: Props ) => {\n\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\tconst newValue = event.target.value || null;\n\n\t\tonChange?.( newValue, value );\n\t\tsetValue( newValue );\n\t};\n\n\tconst elementLabel = getElementLabel() ?? 'element';\n\tconst infoTipProps = {\n\t\ttitle: __( 'HTML Tag', 'elementor' ),\n\t\t/* translators: %s is the element name. */\n\t\tdescription: __(\n\t\t\t`The tag is locked to 'a' tag because this %s has a link. To pick a different tag, remove the link first.`,\n\t\t\t'elementor'\n\t\t).replace( '%s', elementLabel ),\n\t\tisEnabled: !! disabled,\n\t};\n\n\tconst renderValue = ( selectedValue: string | null ) => {\n\t\tif ( selectedValue ) {\n\t\t\treturn findOptionByValue( selectedValue )?.label || fallbackLabels[ selectedValue ] || selectedValue;\n\t\t}\n\n\t\tif ( ! placeholder ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\treturn (\n\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t{ displayText }\n\t\t\t</Typography>\n\t\t);\n\t};\n\n\tconst findOptionByValue = ( searchValue: string | null ) => options.find( ( opt ) => opt.value === searchValue );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<ConditionalControlInfotip { ...infoTipProps }>\n\t\t\t\t<StyledSelect\n\t\t\t\t\tsx={ { overflow: 'hidden', cursor: disabled ? 'not-allowed' : undefined } }\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\trenderValue={ renderValue }\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tfullWidth\n\t\t\t\t>\n\t\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) ) }\n\t\t\t\t</StyledSelect>\n\t\t\t</ConditionalControlInfotip>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { InfoAlert } from '@elementor/editor-ui';\nimport { type AlertProps, AlertTitle, Box, Infotip, type InfotipProps, useTheme } from '@elementor/ui';\nimport { DirectionProvider } from '@elementor/ui';\n\ntype Props = {\n\tinfotipProps?: Partial< InfotipProps >;\n\talertProps?: Partial< AlertProps >;\n\ttitle?: string;\n\tdescription?: React.ReactNode | string;\n\tisEnabled?: boolean;\n};\n\nconst DEFAULT_COLOR = 'secondary';\n\nexport const ConditionalControlInfotip = React.forwardRef(\n\t( { children, title, description, alertProps, infotipProps, ...props }: React.PropsWithChildren< Props >, ref ) => {\n\t\tconst theme = useTheme();\n\t\tconst isUiRtl = 'rtl' === theme.direction;\n\t\tconst isEnabled = props.isEnabled && ( title || description );\n\n\t\treturn (\n\t\t\t<Box ref={ ref }>\n\t\t\t\t{ isEnabled ? (\n\t\t\t\t\t<DirectionProvider rtl={ isUiRtl }>\n\t\t\t\t\t\t<Infotip\n\t\t\t\t\t\t\tplacement={ 'right' }\n\t\t\t\t\t\t\tcolor={ DEFAULT_COLOR }\n\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\t\t\toffset: [ 0, 10 ],\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],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t{ ...infotipProps }\n\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t<InfoAlert\n\t\t\t\t\t\t\t\t\tcolor={ DEFAULT_COLOR }\n\t\t\t\t\t\t\t\t\tsx={ { width: 300, px: 1.5, py: 2 } }\n\t\t\t\t\t\t\t\t\t{ ...alertProps }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Box sx={ { flexDirection: 'column', display: 'flex', gap: 0.5 } }>\n\t\t\t\t\t\t\t\t\t\t<AlertTitle>{ title }</AlertTitle>\n\t\t\t\t\t\t\t\t\t\t<Box>{ description }</Box>\n\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t</InfoAlert>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</Infotip>\n\t\t\t\t\t</DirectionProvider>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { SizeControl } from './size-control';\n\nexport const GapControl = ( { label }: { label: string } ) => {\n\tconst stackRef = useRef< HTMLDivElement >( null );\n\n\tconst { disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst {\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tpropType,\n\t\tplaceholder: directionPlaceholder,\n\t\tdisabled: directionDisabled,\n\t} = useBoundProp( layoutDirectionPropTypeUtil );\n\n\tconst { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();\n\n\tconst inferIsLinked = () => {\n\t\tif ( layoutDirectionPropTypeUtil.isValid( masterValue ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! masterValue && layoutDirectionPropTypeUtil.isValid( masterPlaceholder ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst [ isLinked, setIsLinked ] = useState( () => inferIsLinked() );\n\n\tconst activeBreakpoint = useActiveBreakpoint();\n\tuseLayoutEffect( () => {\n\t\tsetIsLinked( inferIsLinked() );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\tconst onLinkToggle = () => {\n\t\tsetIsLinked( ( prev ) => ! prev );\n\n\t\tif ( ! layoutDirectionPropTypeUtil.isValid( masterValue ) ) {\n\t\t\tconst currentValue = masterValue ? masterValue : null;\n\n\t\t\tif ( ! currentValue ) {\n\t\t\t\tsetMasterValue( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetMasterValue(\n\t\t\t\tlayoutDirectionPropTypeUtil.create( {\n\t\t\t\t\trow: currentValue,\n\t\t\t\t\tcolumn: currentValue,\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentValue = directionValue?.column ?? directionValue?.row ?? null;\n\n\t\tsetMasterValue( currentValue );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || directionDisabled;\n\n\tconst propProviderProps = {\n\t\tpropType,\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tplaceholder: directionPlaceholder,\n\t};\n\n\tconst hasPlaceholders = ! masterValue && ( directionPlaceholder || masterPlaceholder );\n\n\treturn (\n\t\t<PropProvider { ...propProviderProps }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tisPlaceholder={ hasPlaceholders }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ stackRef }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Column', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'column' }\n\t\t\t\t\t\t\tariaLabel={ __( 'Column gap', 'elementor' ) }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\tanchorRef={ stackRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Row', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'row' }\n\t\t\t\t\t\t\tariaLabel={ __( 'Row gap', 'elementor' ) }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\tanchorRef={ stackRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tbind,\n\tariaLabel,\n\tisLinked,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tariaLabel?: string;\n\tisLinked: boolean;\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl anchorRef={ anchorRef } ariaLabel={ ariaLabel } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl anchorRef={ anchorRef } ariaLabel={ ariaLabel } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { ArrowsMoveHorizontalIcon, ArrowsMoveVerticalIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent, Stack, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst RATIO_OPTIONS = [\n\t{ label: __( 'Auto', 'elementor' ), value: 'auto' },\n\t{ label: '1/1', value: '1/1' },\n\t{ label: '4/3', value: '4/3' },\n\t{ label: '3/4', value: '3/4' },\n\t{ label: '16/9', value: '16/9' },\n\t{ label: '9/16', value: '9/16' },\n\t{ label: '3/2', value: '3/2' },\n\t{ label: '2/3', value: '2/3' },\n];\n\nconst CUSTOM_RATIO = 'custom';\n\nexport const AspectRatioControl = createControl( ( { label }: { label: string } ) => {\n\tconst { value: aspectRatioValue, setValue: setAspectRatioValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustomSelected =\n\t\taspectRatioValue && ! RATIO_OPTIONS.some( ( option ) => option.value === aspectRatioValue );\n\tconst [ initialWidth, initialHeight ] = isCustomSelected ? aspectRatioValue.split( '/' ) : [ '', '' ];\n\n\tconst [ isCustom, setIsCustom ] = useState( isCustomSelected );\n\tconst [ customWidth, setCustomWidth ] = useState< string >( initialWidth );\n\tconst [ customHeight, setCustomHeight ] = useState< string >( initialHeight );\n\tconst [ selectedValue, setSelectedValue ] = useState< string >(\n\t\tisCustomSelected ? CUSTOM_RATIO : aspectRatioValue || ''\n\t);\n\n\tuseEffect( () => {\n\t\tconst isCustomValue =\n\t\t\taspectRatioValue && ! RATIO_OPTIONS.some( ( option ) => option.value === aspectRatioValue );\n\n\t\tif ( isCustomValue ) {\n\t\t\tconst [ width, height ] = aspectRatioValue.split( '/' );\n\t\t\tsetCustomWidth( width || '' );\n\t\t\tsetCustomHeight( height || '' );\n\t\t\tsetSelectedValue( CUSTOM_RATIO );\n\t\t\tsetIsCustom( true );\n\t\t} else {\n\t\t\tsetSelectedValue( aspectRatioValue || '' );\n\t\t\tsetIsCustom( false );\n\t\t\tsetCustomWidth( '' );\n\t\t\tsetCustomHeight( '' );\n\t\t}\n\t}, [ aspectRatioValue ] );\n\n\tconst handleSelectChange = ( event: SelectChangeEvent< string > ) => {\n\t\tconst newValue = event.target.value;\n\t\tconst isCustomRatio = newValue === CUSTOM_RATIO;\n\n\t\tsetIsCustom( isCustomRatio );\n\t\tsetSelectedValue( newValue );\n\n\t\tif ( isCustomRatio ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAspectRatioValue( newValue );\n\t};\n\tconst handleCustomWidthChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst newWidth = event.target.value;\n\t\tsetCustomWidth( newWidth );\n\n\t\tif ( newWidth && customHeight ) {\n\t\t\tsetAspectRatioValue( `${ newWidth }/${ customHeight }` );\n\t\t}\n\t};\n\n\tconst handleCustomHeightChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst newHeight = event.target.value;\n\t\tsetCustomHeight( newHeight );\n\n\t\tif ( customWidth && newHeight ) {\n\t\t\tsetAspectRatioValue( `${ customWidth }/${ newHeight }` );\n\t\t}\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Stack direction=\"column\" gap={ 2 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisplayEmpty\n\t\t\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\t\tonChange={ handleSelectChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ [ ...RATIO_OPTIONS, { label: __( 'Custom', 'elementor' ), value: CUSTOM_RATIO } ].map(\n\t\t\t\t\t\t\t\t( { label: optionLabel, ...props } ) => (\n\t\t\t\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t\t\t\t{ optionLabel }\n\t\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t{ isCustom && (\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<TextField\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\tvalue={ customWidth }\n\t\t\t\t\t\t\t\tonChange={ handleCustomWidthChange }\n\t\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\t\tstartAdornment: <ArrowsMoveHorizontalIcon fontSize=\"tiny\" />,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\tvalue={ customHeight }\n\t\t\t\t\t\t\t\tonChange={ handleCustomHeightChange }\n\t\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\t\tstartAdornment: <ArrowsMoveVerticalIcon fontSize=\"tiny\" />,\n\t\t\t\t\t\t\t\t} }\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) }\n\t\t\t</Stack>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useCurrentUserCapabilities } from '@elementor/editor-current-user';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack, styled, ThemeProvider } from '@elementor/ui';\nimport { type OpenOptions, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ConditionalControlInfotip } from '../components/conditional-control-infotip';\nimport { EnableUnfilteredModal } from '../components/enable-unfiltered-modal';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\nconst TILE_SIZE = 8;\nconst TILE_WHITE = 'transparent';\nconst TILE_BLACK = '#c1c1c1';\nconst TILES_GRADIENT_FORMULA = `linear-gradient(45deg, ${ TILE_BLACK } 25%, ${ TILE_WHITE } 0, ${ TILE_WHITE } 75%, ${ TILE_BLACK } 0, ${ TILE_BLACK })`;\n\nconst StyledCard = styled( Card )`\n\tbackground-color: white;\n\tbackground-image: ${ TILES_GRADIENT_FORMULA }, ${ TILES_GRADIENT_FORMULA };\n\tbackground-size: ${ TILE_SIZE }px ${ TILE_SIZE }px;\n\tbackground-position:\n\t\t0 0,\n\t\t${ TILE_SIZE / 2 }px ${ TILE_SIZE / 2 }px;\n\tborder: none;\n`;\n\nconst StyledCardMediaContainer = styled( Stack )`\n\tposition: relative;\n\theight: 140px;\n\tobject-fit: contain;\n\tpadding: 5px;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground-color: rgba( 255, 255, 255, 0.37 );\n`;\n\nconst MODE_BROWSE: OpenOptions = { mode: 'browse' };\nconst MODE_UPLOAD: OpenOptions = { mode: 'upload' };\n\nexport const SvgMediaControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst [ unfilteredModalOpenState, setUnfilteredModalOpenState ] = useState( false );\n\tconst { isAdmin } = useCurrentUserCapabilities();\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes: [ 'svg' ],\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\tconst onCloseUnfilteredModal = ( enabled: boolean ) => {\n\t\tsetUnfilteredModalOpenState( false );\n\n\t\tif ( enabled ) {\n\t\t\topen( MODE_UPLOAD );\n\t\t}\n\t};\n\n\tconst handleClick = ( openOptions?: OpenOptions ) => {\n\t\tif ( ! allowSvgUpload && openOptions === MODE_UPLOAD ) {\n\t\t\tsetUnfilteredModalOpenState( true );\n\t\t} else {\n\t\t\topen( openOptions );\n\t\t}\n\t};\n\n\tconst infotipProps = {\n\t\ttitle: __( \"Sorry, you can't upload that file yet.\", 'elementor' ),\n\t\tdescription: (\n\t\t\t<>\n\t\t\t\t{ __( 'To upload them anyway, ask the site administrator to enable unfiltered', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t{ __( 'file uploads.', 'elementor' ) }\n\t\t\t</>\n\t\t),\n\t\tisEnabled: ! isAdmin,\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1 } aria-label=\"SVG Control\">\n\t\t\t<EnableUnfilteredModal open={ unfilteredModalOpenState } onClose={ onCloseUnfilteredModal } />\n\t\t\t<ControlActions>\n\t\t\t\t<StyledCard variant=\"outlined\">\n\t\t\t\t\t<StyledCardMediaContainer>\n\t\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t\t<CircularProgress role=\"progressbar\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<CardMedia\n\t\t\t\t\t\t\t\tcomponent=\"img\"\n\t\t\t\t\t\t\t\timage={ src }\n\t\t\t\t\t\t\t\talt={ __( 'Preview SVG', 'elementor' ) }\n\t\t\t\t\t\t\t\tsx={ { maxHeight: '140px', width: '50px' } }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</StyledCardMediaContainer>\n\t\t\t\t\t<CardOverlay\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba( 0, 0, 0, 0.75 )',\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\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_BROWSE ) }\n\t\t\t\t\t\t\t\taria-label=\"Select SVG\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Select SVG', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<ConditionalControlInfotip { ...infotipProps }>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ThemeProvider colorScheme={ isAdmin ? 'light' : 'dark' }>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! isAdmin }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => isAdmin && handleClick( MODE_UPLOAD ) }\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Upload SVG\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</ThemeProvider>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</ConditionalControlInfotip>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</CardOverlay>\n\t\t\t\t</StyledCard>\n\t\t\t</ControlActions>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport {\n\tButton,\n\tCircularProgress,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogHeader,\n\tDialogTitle,\n\tDivider,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useUpdateUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\ntype EnableUnfilteredModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n};\n\ntype LocalModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n\tisPending?: boolean;\n\tisError?: boolean;\n\thandleEnable: () => void;\n};\n\nconst ADMIN_TITLE_TEXT = __( 'Enable Unfiltered Uploads', 'elementor' );\nconst ADMIN_CONTENT_TEXT = __(\n\t'Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.',\n\t'elementor'\n);\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT1 = __( 'Failed to enable unfiltered files upload.', 'elementor' );\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT2 = __(\n\t'You can try again, if the problem persists, please contact support.',\n\t'elementor'\n);\n\nconst WAIT_FOR_CLOSE_TIMEOUT_MS = 300;\n\nexport const EnableUnfilteredModal = ( props: EnableUnfilteredModalProps ) => {\n\tconst { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();\n\tconst [ isError, setIsError ] = useState( false );\n\n\tconst onClose = ( enabled: boolean ) => {\n\t\tprops.onClose( enabled );\n\t\tsetTimeout( () => setIsError( false ), WAIT_FOR_CLOSE_TIMEOUT_MS );\n\t};\n\n\tconst handleEnable = async () => {\n\t\ttry {\n\t\t\tconst response = await mutateAsync( { allowUnfilteredFilesUpload: true } );\n\t\t\tif ( response?.data?.success === false ) {\n\t\t\t\tsetIsError( true );\n\t\t\t} else {\n\t\t\t\tprops.onClose( true );\n\t\t\t}\n\t\t} catch {\n\t\t\tsetIsError( true );\n\t\t}\n\t};\n\n\tconst dialogProps = { ...props, isPending, handleEnable, isError, onClose };\n\n\treturn <AdminDialog { ...dialogProps } />;\n};\n\nconst AdminDialog = ( { open, onClose, handleEnable, isPending, isError }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>\n\t\t\t\t{ isError ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ADMIN_FAILED_CONTENT_TEXT_PT1 } <br /> { ADMIN_FAILED_CONTENT_TEXT_PT2 }\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tADMIN_CONTENT_TEXT\n\t\t\t\t) }\n\t\t\t</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } color=\"secondary\" onClick={ () => onClose( false ) }>\n\t\t\t\t{ __( 'Cancel', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tsize={ 'medium' }\n\t\t\t\tonClick={ () => handleEnable() }\n\t\t\t\tvariant=\"contained\"\n\t\t\t\tcolor=\"primary\"\n\t\t\t\tdisabled={ isPending }\n\t\t\t>\n\t\t\t\t{ isPending ? <CircularProgress size={ 24 } /> : __( 'Enable', 'elementor' ) }\n\t\t\t</Button>\n\t\t</DialogActions>\n\t</Dialog>\n);\n","import * as React from 'react';\nimport { backgroundPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { SelectControl } from '../select-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nconst clipOptions = [\n\t{ label: __( 'Full element', 'elementor' ), value: 'border-box' },\n\t{ label: __( 'Padding edges', 'elementor' ), value: 'padding-box' },\n\t{ label: __( 'Content edges', 'elementor' ), value: 'content-box' },\n\t{ label: __( 'Text', 'elementor' ), value: 'text' },\n];\n\nconst colorLabel = __( 'Color', 'elementor' );\nconst clipLabel = __( 'Clipping', 'elementor' );\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind=\"background-overlay\">\n\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t</PropKeyProvider>\n\t\t\t<BackgroundColorField />\n\t\t\t<BackgroundClipField />\n\t\t</PropProvider>\n\t);\n} );\n\nconst BackgroundColorField = () => {\n\treturn (\n\t\t<PropKeyProvider 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>{ colorLabel }</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</PropKeyProvider>\n\t);\n};\n\nconst BackgroundClipField = () => {\n\treturn (\n\t\t<PropKeyProvider bind=\"clip\">\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>{ clipLabel }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SelectControl options={ clipOptions } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\tcolorPropTypeUtil,\n} from '@elementor/editor-props';\nimport { Box, CardMedia, styled, Tab, TabPanel, Tabs, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlRepeater, ItemsContainer, TooltipAddItemAction } from '../../../components/control-repeater';\nimport { DisableItemAction } from '../../../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../../components/control-repeater/actions/remove-item-action';\nimport { useRepeaterContext } from '../../../components/control-repeater/context/repeater-context';\nimport { EditItemPopover } from '../../../components/control-repeater/items/edit-item-popover';\nimport { Item } from '../../../components/control-repeater/items/item';\nimport { type CollectionPropUtil, type RepeatablePropValue } from '../../../components/control-repeater/types';\nimport { PopoverContent } from '../../../components/popover-content';\nimport { RepeaterHeader } from '../../../components/repeater/repeater-header';\nimport { createControl } from '../../../create-control';\nimport { env } from '../../../env';\nimport { ColorControl } from '../../color-control';\nimport { ImageControl } from '../../image-control';\nimport {\n\tBackgroundGradientColorControl,\n\ttype ColorStop,\n\tinitialBackgroundGradientOverlay,\n} from '../background-gradient-color-control';\nimport { BackgroundImageOverlayAttachment } from './background-image-overlay/background-image-overlay-attachment';\nimport { BackgroundImageOverlayPosition } from './background-image-overlay/background-image-overlay-position';\nimport { BackgroundImageOverlayRepeat } from './background-image-overlay/background-image-overlay-repeat';\nimport { BackgroundImageOverlaySize } from './background-image-overlay/background-image-overlay-size';\nimport { type BackgroundImageOverlay } from './types';\nimport { useBackgroundTabsHistory } from './use-background-tabs-history';\n\nconst DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR = '#00000033';\n\nexport const initialBackgroundColorOverlay: BackgroundOverlayItemPropValue = backgroundColorOverlayPropTypeUtil.create(\n\t{\n\t\tcolor: colorPropTypeUtil.create( DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR ),\n\t}\n);\n\nexport const getInitialBackgroundOverlay = (): BackgroundOverlayItemPropValue => ( {\n\t$$type: 'background-image-overlay',\n\tvalue: {\n\t\timage: {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: {\n\t\t\t\t\t$$type: 'image-src',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\turl: {\n\t\t\t\t\t\t\t$$type: 'url',\n\t\t\t\t\t\t\tvalue: env.background_placeholder_image,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t\tvalue: 'large',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst backgroundResolutionOptions = [\n\t{ label: __( 'Thumbnail - 150 x 150', 'elementor' ), value: 'thumbnail' },\n\t{ label: __( 'Medium - 300 x 300', 'elementor' ), value: 'medium' },\n\t{ label: __( 'Large 1024 x 1024', 'elementor' ), value: 'large' },\n\t{ label: __( 'Full', 'elementor' ), value: 'full' },\n];\n\nexport const BackgroundOverlayRepeaterControl = createControl( () => {\n\tconst { propType, value: overlayValues, setValue } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ overlayValues } setValue={ setValue }>\n\t\t\t<ControlRepeater\n\t\t\t\tinitial={ getInitialBackgroundOverlay() as RepeatablePropValue }\n\t\t\t\tpropTypeUtil={ backgroundOverlayPropTypeUtil as CollectionPropUtil< RepeatablePropValue > }\n\t\t\t>\n\t\t\t\t<RepeaterHeader label={ __( 'Overlay', 'elementor' ) }>\n\t\t\t\t\t<TooltipAddItemAction newItemIndex={ 0 } />\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\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</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<ItemContent />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nexport const ItemContent = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory( {\n\t\timage: getInitialBackgroundOverlay().value,\n\t\tcolor: initialBackgroundColorOverlay.value,\n\t\tgradient: initialBackgroundGradientOverlay.value,\n\t} );\n\n\tconst { rowRef } = useRepeaterContext();\n\n\treturn (\n\t\t<Box sx={ { width: '100%' } }>\n\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t<Tabs\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\taria-label={ __( 'Background Overlay', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<Tab label={ __( 'Image', 'elementor' ) } { ...getTabProps( 'image' ) } />\n\t\t\t\t\t<Tab label={ __( 'Gradient', 'elementor' ) } { ...getTabProps( 'gradient' ) } />\n\t\t\t\t\t<Tab label={ __( 'Color', 'elementor' ) } { ...getTabProps( 'color' ) } />\n\t\t\t\t</Tabs>\n\t\t\t</Box>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'image' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ImageOverlayContent />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'gradient' ) }>\n\t\t\t\t<BackgroundGradientColorControl />\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'color' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ColorOverlayContent anchorEl={ rowRef } />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: RepeatablePropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemIconImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemIconColor value={ value as BackgroundOverlayItemPropValue } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemIconGradient value={ value as BackgroundOverlayItemPropValue } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst extractColorFrom = ( prop: BackgroundOverlayItemPropValue ) => {\n\tif ( prop?.value?.color?.value ) {\n\t\treturn prop.value.color.value;\n\t}\n\n\treturn '';\n};\n\nconst ItemIconColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ color } />;\n};\n\nconst ItemIconImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn (\n\t\t<CardMedia\n\t\t\timage={ imageUrl }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\theight: '1rem',\n\t\t\t\twidth: '1rem',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\t\t\t\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nconst ItemIconGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst gradient = getGradientValue( value );\n\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ gradient } />;\n};\n\nexport const ItemLabel = ( { value }: { value: RepeatablePropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemLabelImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemLabelColor value={ value as BackgroundOverlayItemPropValue } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemLabelGradient value={ value as BackgroundOverlayItemPropValue } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst ItemLabelColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <span>{ color }</span>;\n};\n\nconst ItemLabelImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn <span>{ imageTitle }</span>;\n};\n\nconst ItemLabelGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tif ( value.value.type.value === 'linear' ) {\n\t\treturn <span>{ __( 'Linear Gradient', 'elementor' ) }</span>;\n\t}\n\n\treturn <span>{ __( 'Radial Gradient', 'elementor' ) }</span>;\n};\n\nconst ColorOverlayContent = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst propContext = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'color' }>\n\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst ImageOverlayContent = () => {\n\tconst propContext = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'image' }>\n\t\t\t\t<ImageControl sizes={ backgroundResolutionOptions } />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'position' }>\n\t\t\t\t<BackgroundImageOverlayPosition />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'repeat' }>\n\t\t\t\t<BackgroundImageOverlayRepeat />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t<BackgroundImageOverlaySize />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'attachment' }>\n\t\t\t\t<BackgroundImageOverlayAttachment />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\theight: '1rem',\n\twidth: '1rem',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst useImage = ( image: BackgroundImageOverlay ) => {\n\tlet imageTitle,\n\t\timageUrl: string | null = null;\n\n\tconst imageSrc = image?.value.image.value?.src.value;\n\tconst { data: attachment } = useWpMediaAttachment( imageSrc.id?.value || null );\n\n\tif ( imageSrc.id ) {\n\t\tconst imageFileTypeExtension = getFileExtensionFromFilename( attachment?.filename );\n\t\timageTitle = `${ attachment?.title }${ imageFileTypeExtension }` || null;\n\t\timageUrl = attachment?.url || null;\n\t} else if ( imageSrc.url ) {\n\t\timageUrl = imageSrc.url.value;\n\t\timageTitle = imageUrl?.substring( imageUrl.lastIndexOf( '/' ) + 1 ) || null;\n\t}\n\n\treturn { imageTitle, imageUrl };\n};\n\nconst getFileExtensionFromFilename = ( filename?: string ) => {\n\tif ( ! filename ) {\n\t\treturn '';\n\t}\n\n\t// get the substring after the last . in the filename\n\tconst extension = filename.substring( filename.lastIndexOf( '.' ) + 1 );\n\n\treturn `.${ extension }`;\n};\n\nconst getGradientValue = ( value: BackgroundOverlayItemPropValue ) => {\n\tconst gradient = value.value;\n\n\tconst stops = gradient.stops.value\n\t\t?.map( ( { value: { color, offset } }: ColorStop ) => `${ color.value } ${ offset.value ?? 0 }%` )\n\t\t?.join( ',' );\n\n\tif ( gradient.type.value === 'linear' ) {\n\t\treturn `linear-gradient(${ gradient.angle.value }deg, ${ stops })`;\n\t}\n\n\treturn `radial-gradient(circle at ${ gradient.positions.value }, ${ stops })`;\n};\n","import { parseEnv } from '@elementor/env';\n\nexport const { env } = parseEnv< {\n\tbackground_placeholder_image: string;\n} >( '@elementor/editor-controls' );\n","import * as React from 'react';\nimport {\n\tbackgroundGradientOverlayPropTypeUtil,\n\ttype BackgroundGradientOverlayPropValue,\n\ttype BackgroundOverlayItemPropValue,\n\tcolorPropTypeUtil,\n\ttype ColorPropValue,\n\tcolorStopPropTypeUtil,\n\tgradientColorStopPropTypeUtil,\n\tnumberPropTypeUtil,\n\ttype NumberPropValue,\n\tstringPropTypeUtil,\n\ttype TransformablePropValue,\n} from '@elementor/editor-props';\nimport { UnstableGradientBox } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { createControl } from '../../create-control';\n\nexport type ColorStop = TransformablePropValue<\n\t'color-stop',\n\t{\n\t\tcolor: ColorPropValue;\n\t\toffset: NumberPropValue;\n\t}\n>;\n\nexport const BackgroundGradientColorControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst handleChange = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => {\n\t\tconst transformedValue = createTransformableValue( newValue );\n\n\t\tif ( transformedValue.positions ) {\n\t\t\ttransformedValue.positions = stringPropTypeUtil.create( newValue.positions.join( ' ' ) );\n\t\t}\n\n\t\tsetValue( transformedValue );\n\t};\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst createTransformableValue = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => ( {\n\t\t...newValue,\n\t\ttype: stringPropTypeUtil.create( newValue.type ),\n\t\tangle: numberPropTypeUtil.create( newValue.angle ),\n\t\tstops: gradientColorStopPropTypeUtil.create(\n\t\t\tnewValue.stops.map( ( { color, offset }: { color: string; offset: number } ) =>\n\t\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\t\tcolor: colorPropTypeUtil.create( color ),\n\t\t\t\t\toffset: numberPropTypeUtil.create( offset ),\n\t\t\t\t} )\n\t\t\t)\n\t\t),\n\t} );\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst normalizeValue = () => {\n\t\tif ( ! value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { type, angle, stops, positions } = value;\n\n\t\treturn {\n\t\t\ttype: type.value,\n\t\t\tangle: angle?.value || 0,\n\t\t\tstops: stops.value.map( ( { value: { color, offset } }: ColorStop ) => ( {\n\t\t\t\tcolor: color.value,\n\t\t\t\toffset: offset.value,\n\t\t\t} ) ),\n\t\t\tpositions: positions?.value.split( ' ' ),\n\t\t};\n\t};\n\n\treturn (\n\t\t<UnstableGradientBox\n\t\t\tsx={ { width: 'auto', padding: 1.5 } }\n\t\t\tvalue={ normalizeValue() }\n\t\t\tonChange={ handleChange }\n\t\t/>\n\t);\n} );\n\nexport const initialBackgroundGradientOverlay: BackgroundOverlayItemPropValue =\n\tbackgroundGradientOverlayPropTypeUtil.create( {\n\t\ttype: stringPropTypeUtil.create( 'linear' ),\n\t\tangle: numberPropTypeUtil.create( 180 ),\n\t\tstops: gradientColorStopPropTypeUtil.create( [\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(0,0,0)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 0 ),\n\t\t\t} ),\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(255,255,255)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 100 ),\n\t\t\t} ),\n\t\t] ),\n\t} );\n","import * as React from 'react';\nimport { PinIcon, PinnedOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Attachment = 'fixed' | 'scroll';\n\nconst attachmentControlOptions: ToggleButtonGroupItem< Attachment >[] = [\n\t{\n\t\tvalue: 'fixed',\n\t\tlabel: __( 'Fixed', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'scroll',\n\t\tlabel: __( 'Scroll', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinnedOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayAttachment = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Attachment', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleControl options={ attachmentControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport ControlActions from '../../../../control-actions/control-actions';\nimport { SizeControl } from '../../../size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst backgroundPositionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const BackgroundImageOverlayPosition = () => {\n\tconst backgroundImageOffsetContext = useBoundProp( backgroundImagePositionOffsetPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageOffsetContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tbackgroundImageOffsetContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t\t\t<ControlActions>\n\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t( backgroundImageOffsetContext.value ? 'custom' : stringPropContext.value ) ?? ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ backgroundPositionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t</ControlActions>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageOffsetContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Repeaters = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';\n\nconst repeatControlOptions: ToggleButtonGroupItem< Repeaters >[] = [\n\t{\n\t\tvalue: 'repeat',\n\t\tlabel: __( 'Repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <GridDotsIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-x',\n\t\tlabel: __( 'Repeat-x', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsHorizontalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-y',\n\t\tlabel: __( 'Repeat-y', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsVerticalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'no-repeat',\n\t\tlabel: __( 'No-repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <XIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayRepeat = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Repeat', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t<ToggleControl options={ repeatControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tArrowBarBothIcon,\n\tArrowsMaximizeIcon,\n\tArrowsMoveHorizontalIcon,\n\tArrowsMoveVerticalIcon,\n\tLetterAIcon,\n\tPencilIcon,\n} from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport {\n\tControlToggleButtonGroup,\n\ttype ToggleButtonGroupItem,\n} from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { SizeControl } from '../../../size-control';\n\ntype Sizes = 'auto' | 'cover' | 'contain' | 'custom';\n\nconst sizeControlOptions: ToggleButtonGroupItem< Sizes >[] = [\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\t{\n\t\tvalue: 'cover',\n\t\tlabel: __( 'Cover', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowsMaximizeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: __( 'Contain', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBarBothIcon 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 BackgroundImageOverlaySize = () => {\n\tconst backgroundImageScaleContext = useBoundProp( backgroundImageSizeScalePropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageScaleContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handleSizeChange = ( size: Sizes | null ) => {\n\t\tif ( size === 'custom' ) {\n\t\t\tbackgroundImageScaleContext.setValue( { width: null, height: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( size );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Size', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\texclusive\n\t\t\t\t\t\t\titems={ sizeControlOptions }\n\t\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t( backgroundImageScaleContext.value ? 'custom' : stringPropContext.value ) as Sizes\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageScaleContext }>\n\t\t\t\t\t<Grid item xs={ 12 } ref={ rowRef }>\n\t\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'width' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveHorizontalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'height' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveVerticalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundGradientOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type BackgroundImageOverlay } from './types';\n\ntype OverlayType = 'image' | 'gradient' | 'color';\n\ntype InitialBackgroundValues = {\n\tcolor: BackgroundOverlayItemPropValue[ 'value' ];\n\timage: BackgroundImageOverlay[ 'value' ];\n\tgradient: BackgroundOverlayItemPropValue[ 'value' ];\n};\n\nexport const useBackgroundTabsHistory = ( {\n\tcolor: initialBackgroundColorOverlay,\n\timage: initialBackgroundImageOverlay,\n\tgradient: initialBackgroundGradientOverlay,\n}: InitialBackgroundValues ) => {\n\tconst { value: imageValue, setValue: setImageValue } = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\tconst { value: colorValue, setValue: setColorValue } = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\tconst { value: gradientValue, setValue: setGradientValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst getCurrentOverlayType = (): OverlayType => {\n\t\tif ( colorValue ) {\n\t\t\treturn 'color';\n\t\t}\n\n\t\tif ( gradientValue ) {\n\t\t\treturn 'gradient';\n\t\t}\n\n\t\treturn 'image';\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< OverlayType >( getCurrentOverlayType() );\n\n\tconst valuesHistory = useRef< InitialBackgroundValues >( {\n\t\timage: initialBackgroundImageOverlay,\n\t\tcolor: initialBackgroundColorOverlay,\n\t\tgradient: initialBackgroundGradientOverlay,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialBackgroundValues, value: BackgroundOverlayItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: OverlayType ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase 'image':\n\t\t\t\tsetImageValue( valuesHistory.current.image );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'gradient':\n\t\t\t\tsetGradientValue( valuesHistory.current.gradient );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'color':\n\t\t\t\tsetColorValue( valuesHistory.current.color );\n\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\treturn {\n\t\tgetTabProps,\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { createArrayPropUtils, type SizePropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlRepeater, Item, TooltipAddItemAction } from '../components/control-repeater';\nimport { DisableItemAction } from '../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../components/control-repeater/actions/remove-item-action';\nimport { type TooltipAddItemActionProps } from '../components/control-repeater/actions/tooltip-add-item-action';\nimport { EditItemPopover } from '../components/control-repeater/items/edit-item-popover';\nimport { ItemsContainer } from '../components/control-repeater/items/items-container';\nimport { type CollectionPropUtil, type RepeatablePropValue } from '../components/control-repeater/types';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { RepeaterHeader } from '../components/repeater/repeater-header';\nimport { createControl } from '../create-control';\nimport {\n\ttype ChildControlConfig,\n\tRepeatableControlContext,\n\tuseRepeatableControlContext,\n} from '../hooks/use-repeatable-control-context';\nimport { CUSTOM_SIZE_LABEL } from './size-control';\n\ntype RepeatableControlProps = {\n\tlabel: string;\n\trepeaterLabel: string;\n\tchildControlConfig: ChildControlConfig;\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tinitialValues?: object;\n\tpatternLabel?: string;\n\tplaceholder?: string;\n\tpropKey?: string;\n\taddItemTooltipProps?: TooltipAddItemActionProps;\n};\n\nconst PLACEHOLDER_REGEX = /\\$\\{([^}]+)\\}/g;\n\nexport const RepeatableControl = createControl(\n\t( {\n\t\trepeaterLabel,\n\t\tchildControlConfig,\n\t\tshowDuplicate,\n\t\tshowToggle,\n\t\tinitialValues,\n\t\tpatternLabel,\n\t\tplaceholder,\n\t\tpropKey,\n\t\taddItemTooltipProps,\n\t}: RepeatableControlProps ) => {\n\t\tconst { propTypeUtil: childPropTypeUtil, isItemDisabled } = childControlConfig;\n\n\t\tif ( ! childPropTypeUtil ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst childArrayPropTypeUtil = useMemo(\n\t\t\t() => createArrayPropUtils( childPropTypeUtil.key, childPropTypeUtil.schema, propKey ),\n\t\t\t[ childPropTypeUtil.key, childPropTypeUtil.schema, propKey ]\n\t\t);\n\n\t\tconst contextValue = useMemo(\n\t\t\t() => ( {\n\t\t\t\t...childControlConfig,\n\t\t\t\tplaceholder: placeholder || '',\n\t\t\t\tpatternLabel: patternLabel || '',\n\t\t\t} ),\n\t\t\t[ childControlConfig, placeholder, patternLabel ]\n\t\t);\n\n\t\tconst { propType, value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\n\t\treturn (\n\t\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t\t<RepeatableControlContext.Provider value={ contextValue }>\n\t\t\t\t\t<ControlRepeater\n\t\t\t\t\t\tinitial={ childPropTypeUtil.create( initialValues || null ) }\n\t\t\t\t\t\tpropTypeUtil={ childArrayPropTypeUtil as CollectionPropUtil< RepeatablePropValue > }\n\t\t\t\t\t\tisItemDisabled={ isItemDisabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t<RepeaterHeader label={ repeaterLabel }>\n\t\t\t\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\t\t\t\t{ ...addItemTooltipProps }\n\t\t\t\t\t\t\t\tnewItemIndex={ 0 }\n\t\t\t\t\t\t\t\tariaLabel={ repeaterLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RepeaterHeader>\n\t\t\t\t\t\t<ItemsContainer isSortable={ false }>\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ showDuplicate && <DuplicateItemAction /> }\n\t\t\t\t\t\t\t\t\t\t{ showToggle && <DisableItemAction /> }\n\t\t\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ItemsContainer>\n\t\t\t\t\t\t<EditItemPopover>\n\t\t\t\t\t\t\t<Content />\n\t\t\t\t\t\t</EditItemPopover>\n\t\t\t\t\t</ControlRepeater>\n\t\t\t\t</RepeatableControlContext.Provider>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\n// TODO: Configurable icon probably can be somehow part of the injected control and bubbled up to the repeater\nconst ItemIcon = () => <></>;\n\nconst Content = () => {\n\tconst { component: ChildControl, props = {} } = useRepeatableControlContext();\n\treturn (\n\t\t<PopoverContent p={ 1.5 }>\n\t\t\t<PopoverGridContainer>\n\t\t\t\t<ChildControl { ...props } />\n\t\t\t</PopoverGridContainer>\n\t\t</PopoverContent>\n\t);\n};\n\nconst interpolate = ( template: string, data: Record< string, unknown > ) => {\n\tif ( ! data ) {\n\t\treturn template;\n\t}\n\n\treturn template.replace( PLACEHOLDER_REGEX, ( _, path ): string => {\n\t\tconst value = getNestedValue( data, path );\n\n\t\tif ( typeof value === 'object' && value !== null && ! Array.isArray( value ) ) {\n\t\t\tif ( 'name' in value && value.name ) {\n\t\t\t\treturn value.name as string;\n\t\t\t}\n\n\t\t\treturn JSON.stringify( value );\n\t\t}\n\n\t\tif ( Array.isArray( value ) ) {\n\t\t\treturn value.join( ', ' );\n\t\t}\n\n\t\treturn String( value ?? '' );\n\t} );\n};\n\nconst getNestedValue = ( obj: Record< string, unknown >, path: string ) => {\n\tlet parentObj: Record< string, unknown > = {};\n\tconst pathKeys = path.split( '.' );\n\tconst key = pathKeys.slice( -1 )[ 0 ];\n\n\tlet value: unknown = pathKeys.reduce( ( current: Record< string, unknown >, currentKey, currentIndex ) => {\n\t\tif ( currentIndex === pathKeys.length - 2 ) {\n\t\t\tparentObj = current;\n\t\t}\n\n\t\tif ( current && typeof current === 'object' ) {\n\t\t\treturn current[ currentKey ] as Record< string, unknown >;\n\t\t}\n\n\t\treturn {};\n\t}, obj );\n\n\tvalue = !! value ? value : '';\n\tconst propType = parentObj?.$$type;\n\tconst propValue = parentObj?.value as SizePropValue[ 'value' ];\n\tconst doesValueRepresentCustomSize = key === 'unit' && propType === 'size' && propValue?.unit === 'custom';\n\n\tif ( ! doesValueRepresentCustomSize ) {\n\t\treturn value;\n\t}\n\n\treturn propValue?.size ? '' : CUSTOM_SIZE_LABEL;\n};\n\nconst isEmptyValue = ( val: unknown ) => {\n\tif ( typeof val === 'string' ) {\n\t\treturn val.trim() === '';\n\t}\n\n\tif ( Number.isNaN( val ) ) {\n\t\treturn true;\n\t}\n\n\tif ( Array.isArray( val ) ) {\n\t\treturn val.length === 0;\n\t}\n\n\tif ( typeof val === 'object' && val !== null ) {\n\t\treturn Object.keys( val ).length === 0;\n\t}\n\n\treturn false;\n};\n\nconst shouldShowPlaceholder = ( pattern: string, data: Record< string, unknown > ): boolean => {\n\tconst propertyPaths = getAllProperties( pattern );\n\n\tconst values = propertyPaths.map( ( path ) => getNestedValue( data, path ) );\n\n\tif ( values.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tif ( values.some( ( value ) => value === null || value === undefined ) ) {\n\t\treturn true;\n\t}\n\n\tif ( values.every( isEmptyValue ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nconst getTextColor = ( isReadOnly: boolean, showPlaceholder: boolean ): string => {\n\tif ( isReadOnly ) {\n\t\treturn 'text.disabled';\n\t}\n\treturn showPlaceholder ? 'text.tertiary' : 'text.primary';\n};\n\nconst ItemLabel = ( { value }: { value: Record< string, unknown > } ) => {\n\tconst { placeholder, patternLabel, props: childProps } = useRepeatableControlContext();\n\tconst showPlaceholder = shouldShowPlaceholder( patternLabel, value );\n\tconst label = showPlaceholder ? placeholder : interpolate( patternLabel, value );\n\tconst isReadOnly = !! childProps?.readOnly;\n\tconst color = getTextColor( isReadOnly, showPlaceholder );\n\n\treturn (\n\t\t<Box component=\"span\" color={ color }>\n\t\t\t{ label }\n\t\t</Box>\n\t);\n};\n\nconst getAllProperties = ( pattern: string ) => {\n\tconst properties = pattern.match( PLACEHOLDER_REGEX )?.map( ( match ) => match.slice( 2, -1 ) ) || [];\n\n\treturn properties;\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport {\n\ttype CreateOptions,\n\tisTransformable,\n\tkeyValuePropTypeUtil,\n\ttype PropKey,\n\ttype Props,\n\tstringPropTypeUtil,\n} from '@elementor/editor-props';\nimport { FormHelperText, FormLabel, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\nimport { escapeHtmlAttr } from '../utils/escape-html-attr';\nimport { TextControl } from './text-control';\n\ntype KeyValueControlProps = {\n\tkeyName?: string;\n\tvalueName?: string;\n\tregexKey?: string;\n\tregexValue?: string;\n\tvalidationErrorMessage?: string;\n\tescapeHtml?: boolean;\n\tgetHelperText?: ( key: string, value: string ) => { keyHelper?: string; valueHelper?: string };\n};\n\nconst getInitialFieldValue = ( fieldValue: unknown ): string => {\n\tconst transformableValue = fieldValue as { $$type?: string; value?: string };\n\n\tif ( ! fieldValue || typeof fieldValue !== 'object' || transformableValue.$$type === 'dynamic' ) {\n\t\treturn '';\n\t}\n\n\treturn transformableValue.value || '';\n};\n\nexport const KeyValueControl = createControl( ( props: KeyValueControlProps = {} ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( keyValuePropTypeUtil );\n\tconst [ keyError, setKeyError ] = useState< string >( '' );\n\tconst [ valueError, setValueError ] = useState< string >( '' );\n\n\tconst [ sessionState, setSessionState ] = useState( {\n\t\tkey: getInitialFieldValue( value?.key ),\n\t\tvalue: getInitialFieldValue( value?.value ),\n\t} );\n\n\tconst keyLabel = props.keyName || __( 'Key', 'elementor' );\n\tconst valueLabel = props.valueName || __( 'Value', 'elementor' );\n\tconst { keyHelper, valueHelper } = props.getHelperText?.( sessionState.key, sessionState.value ) || {\n\t\tkeyHelper: undefined,\n\t\tvalueHelper: undefined,\n\t};\n\n\tconst [ keyRegex, valueRegex, errMsg ] = useMemo< [ RegExp | undefined, RegExp | undefined, string ] >(\n\t\t() => [\n\t\t\tprops.regexKey ? new RegExp( props.regexKey ) : undefined,\n\t\t\tprops.regexValue ? new RegExp( props.regexValue ) : undefined,\n\t\t\tprops.validationErrorMessage || __( 'Invalid Format', 'elementor' ),\n\t\t],\n\t\t[ props.regexKey, props.regexValue, props.validationErrorMessage ]\n\t);\n\n\tconst validate = ( newValue: string, fieldType: string ): boolean => {\n\t\tif ( fieldType === 'key' && keyRegex ) {\n\t\t\tconst isValid = keyRegex.test( newValue );\n\t\t\tsetKeyError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t} else if ( fieldType === 'value' && valueRegex ) {\n\t\t\tconst isValid = valueRegex.test( newValue );\n\t\t\tsetValueError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst handleChange = ( newValue: Props, options?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tconst fieldType = meta?.bind;\n\n\t\tif ( ! fieldType ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newChangedValue = newValue[ fieldType ];\n\n\t\tif ( isTransformable( newChangedValue ) && newChangedValue.$$type === 'dynamic' ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst extractedValue = stringPropTypeUtil.extract( newChangedValue );\n\n\t\tsetSessionState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ fieldType ]: extractedValue,\n\t\t} ) );\n\n\t\tif ( extractedValue && validate( extractedValue, fieldType ) ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\t\t} else {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: {\n\t\t\t\t\tvalue: '',\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ handleChange }>\n\t\t\t<Grid container gap={ 1.5 }>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ keyLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'key' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ props.escapeHtml ? escapeHtmlAttr( sessionState.key ) : sessionState.key }\n\t\t\t\t\t\t\terror={ !! keyError }\n\t\t\t\t\t\t\thelperText={ keyHelper }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! keyError && <FormHelperText error>{ keyError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ valueLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'value' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ props.escapeHtml ? escapeHtmlAttr( sessionState.value ) : sessionState.value }\n\t\t\t\t\t\t\terror={ !! valueError }\n\t\t\t\t\t\t\tinputDisabled={ !! keyError }\n\t\t\t\t\t\t\thelperText={ valueHelper }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! valueError && <FormHelperText error>{ valueError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropProvider>\n\t);\n} );\n","export const escapeHtmlAttr = ( value: string ): string => {\n\tconst specialChars: Record< string, string > = {\n\t\t'&': '&amp;',\n\t\t'<': '&lt;',\n\t\t'>': '&gt;',\n\t\t\"'\": '&#39;',\n\t\t'\"': '&quot;',\n\t};\n\n\treturn value.replace( /[&<>'\"]/g, ( char ) => specialChars[ char ] || char );\n};\n","import * as React from 'react';\nimport { positionPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SizeControl } from './size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst positionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const PositionControl = () => {\n\tconst positionContext = useBoundProp( positionPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! positionContext.value;\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tpositionContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Object position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( positionContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ positionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t{ isCustom && (\n\t\t\t\t<PropProvider { ...positionContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type PropType, transformFunctionsPropTypeUtil, transformPropTypeUtil } from '@elementor/editor-props';\nimport { AdjustmentsIcon, InfoCircleFilledIcon } from '@elementor/icons';\nimport { bindTrigger, Box, IconButton, type PopupState, Tooltip, Typography, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../../components/control-repeater';\nimport { DisableItemAction } from '../../components/control-repeater/actions/disable-item-action';\nimport { RemoveItemAction } from '../../components/control-repeater/actions/remove-item-action';\nimport { EditItemPopover } from '../../components/control-repeater/items/edit-item-popover';\nimport { RepeaterHeader } from '../../components/repeater/repeater-header';\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\nimport { createControl } from '../../create-control';\nimport { useElementCanHaveChildren } from '../../hooks/use-element-can-have-children';\nimport { initialRotateValue, initialScaleValue, initialSkewValue, initialTransformValue } from './initial-values';\nimport { TransformContent } from './transform-content';\nimport { TransformIcon } from './transform-icon';\nimport { TransformLabel } from './transform-label';\nimport { TransformSettingsControl } from './transform-settings-control';\n\nconst SIZE = 'tiny';\n\nexport const TransformRepeaterControl = createControl( () => {\n\tconst context = useBoundProp( transformPropTypeUtil );\n\tconst headerRef = useRef< HTMLDivElement >( null );\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\tconst showChildrenPerspective = useElementCanHaveChildren();\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<TransformSettingsControl\n\t\t\t\tpopupState={ popupState }\n\t\t\t\tanchorRef={ headerRef }\n\t\t\t\tshowChildrenPerspective={ showChildrenPerspective }\n\t\t\t/>\n\t\t\t<PropKeyProvider bind={ 'transform-functions' }>\n\t\t\t\t<Repeater headerRef={ headerRef } propType={ context.propType } popupState={ popupState } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ToolTip = (\n\t<Box\n\t\tcomponent=\"span\"\n\t\taria-label={ undefined }\n\t\tsx={ { display: 'flex', gap: 0.5, p: 2, width: 320, borderRadius: 1 } }\n\t>\n\t\t<InfoCircleFilledIcon sx={ { color: 'secondary.main' } } />\n\t\t<Typography variant=\"body2\" color=\"text.secondary\" fontSize=\"14px\">\n\t\t\t{ __( 'You can use each kind of transform only once per element.', 'elementor' ) }\n\t\t</Typography>\n\t</Box>\n);\n\nconst Repeater = ( {\n\theaderRef,\n\tpropType,\n\tpopupState,\n}: {\n\theaderRef: React.RefObject< HTMLDivElement >;\n\tpropType: PropType;\n\tpopupState: PopupState;\n} ) => {\n\tconst transformFunctionsContext = useBoundProp( transformFunctionsPropTypeUtil );\n\tconst availableValues = [ initialTransformValue, initialScaleValue, initialRotateValue, initialSkewValue ];\n\tconst { value: transformValues, bind } = transformFunctionsContext;\n\n\tconst getInitialValue = () => {\n\t\treturn availableValues.find( ( value ) => ! transformValues?.some( ( item ) => item.$$type === value.$$type ) );\n\t};\n\n\tconst shouldDisableAddItem = ! getInitialValue();\n\n\treturn (\n\t\t<PropProvider { ...transformFunctionsContext }>\n\t\t\t<ControlRepeater\n\t\t\t\tinitial={ getInitialValue() ?? initialTransformValue }\n\t\t\t\tpropTypeUtil={ transformFunctionsPropTypeUtil }\n\t\t\t>\n\t\t\t\t<RepeaterHeader\n\t\t\t\t\tlabel={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\tadornment={ () => <ControlAdornments customContext={ { path: [ 'transform' ], propType } } /> }\n\t\t\t\t\tref={ headerRef }\n\t\t\t\t>\n\t\t\t\t\t<TransformBasePopoverTrigger popupState={ popupState } repeaterBindKey={ bind } />\n\t\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\t\tdisabled={ shouldDisableAddItem }\n\t\t\t\t\t\ttooltipContent={ ToolTip }\n\t\t\t\t\t\tenableTooltip={ shouldDisableAddItem }\n\t\t\t\t\t\tariaLabel={ 'transform' }\n\t\t\t\t\t/>\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ TransformIcon }\n\t\t\t\t\t\tLabel={ TransformLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\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</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<TransformContent />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n};\n\nconst TransformBasePopoverTrigger = ( {\n\tpopupState,\n\trepeaterBindKey,\n}: {\n\tpopupState: PopupState;\n\trepeaterBindKey: string;\n} ) => {\n\tconst { bind } = useBoundProp();\n\tconst titleLabel = __( 'Transform settings', 'elementor' );\n\n\treturn bind !== repeaterBindKey ? null : (\n\t\t<Tooltip title={ titleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } aria-label={ titleLabel } { ...bindTrigger( popupState ) }>\n\t\t\t\t<AdjustmentsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import { useMemo } from 'react';\nimport { getContainer, useSelectedElement } from '@elementor/editor-elements';\n\nexport const useElementCanHaveChildren = (): boolean => {\n\tconst { element } = useSelectedElement();\n\tconst elementId = element?.id || '';\n\n\treturn useMemo( () => {\n\t\tconst container = getContainer( elementId );\n\n\t\tif ( ! container ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn container.model.get( 'elType' ) !== 'widget';\n\t}, [ elementId ] );\n};\n","import {\n\tnumberPropTypeUtil,\n\trotateTransformPropTypeUtil,\n\tscaleTransformPropTypeUtil,\n\tskewTransformPropTypeUtil,\n\ttype TransformFunctionsItemPropValue,\n} from '@elementor/editor-props';\n\nexport type TransformFunction = 'transform-move' | 'transform-scale' | 'transform-rotate' | 'transform-skew';\n\nexport const TransformFunctionKeys: Record< string, TransformFunction > = {\n\tmove: 'transform-move',\n\tscale: 'transform-scale',\n\trotate: 'transform-rotate',\n\tskew: 'transform-skew',\n};\n\nexport const defaultValues = {\n\tmove: {\n\t\tsize: 0,\n\t\tunit: 'px',\n\t},\n\tscale: 1,\n\trotate: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n\tskew: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n};\n\nexport const initialTransformValue: TransformFunctionsItemPropValue = {\n\t$$type: TransformFunctionKeys.move,\n\tvalue: {\n\t\tx: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\ty: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\tz: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t},\n};\n\nexport const initialScaleValue = scaleTransformPropTypeUtil.create( {\n\tx: numberPropTypeUtil.create( defaultValues.scale ),\n\ty: numberPropTypeUtil.create( defaultValues.scale ),\n\tz: numberPropTypeUtil.create( defaultValues.scale ),\n} );\n\nexport const initialRotateValue = rotateTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\tz: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n} );\n\nexport const initialSkewValue = skewTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n} );\n","import * as React from 'react';\nimport { Box, Tab, TabPanel, Tabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverContent } from '../../components/popover-content';\nimport { Move } from './functions/move';\nimport { Rotate } from './functions/rotate';\nimport { Scale } from './functions/scale';\nimport { Skew } from './functions/skew';\nimport {\n\tinitialRotateValue,\n\tinitialScaleValue,\n\tinitialSkewValue,\n\tinitialTransformValue,\n\tTransformFunctionKeys,\n} from './initial-values';\nimport { useTransformTabsHistory } from './use-transform-tabs-history';\n\nexport const TransformContent = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTransformTabsHistory( {\n\t\tmove: initialTransformValue.value,\n\t\tscale: initialScaleValue.value,\n\t\trotate: initialRotateValue.value,\n\t\tskew: initialSkewValue.value,\n\t} );\n\n\treturn (\n\t\t<PopoverContent>\n\t\t\t<Box sx={ { width: '100%' } }>\n\t\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t\t<Tabs\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'& .MuiTab-root': {\n\t\t\t\t\t\t\t\tminWidth: '62px',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\taria-label={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tab label={ __( 'Move', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.move ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Scale', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.scale ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Rotate', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.rotate ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Skew', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.skew ) } />\n\t\t\t\t\t</Tabs>\n\t\t\t\t</Box>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.move ) }>\n\t\t\t\t\t<Move />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.scale ) }>\n\t\t\t\t\t<Scale />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.rotate ) }>\n\t\t\t\t\t<Rotate />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.skew ) }>\n\t\t\t\t\t<Skew />\n\t\t\t\t</TabPanel>\n\t\t\t</Box>\n\t\t</PopoverContent>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { moveTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\ntype Control = { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode; units: LengthUnit[] };\n\nconst moveAxisControls: Control[] = [\n\t{\n\t\tlabel: __( 'Move X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vw' ],\n\t},\n\t{\n\t\tlabel: __( 'Move Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vh' ],\n\t},\n\t{\n\t\tlabel: __( 'Move Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vw', 'vh' ],\n\t},\n];\n\nexport const Move = () => {\n\tconst context = useBoundProp( moveTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.move }>\n\t\t\t\t\t{ moveAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ control.units }\n\t\t\t\t\t\t\tvariant=\"length\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type AngleUnit, type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\ntype TransformAxisRowProps = {\n\tlabel: string;\n\tbind: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tunits?: AngleUnit[] | LengthUnit[];\n\tvariant?: 'length' | 'angle';\n};\n\nexport const AxisRow = ( { label, bind, startIcon, anchorRef, units, variant = 'angle' }: TransformAxisRowProps ) => {\n\tconst safeId = label.replace( /\\s+/g, '-' ).toLowerCase();\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel htmlFor={ safeId }>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tvariant={ variant }\n\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\tid={ safeId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { rotateTransformPropTypeUtil } from '@elementor/editor-props';\nimport { Arrow360Icon, RotateClockwiseIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\nconst rotateAxisControls: { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Rotate X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <Arrow360Icon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <Arrow360Icon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <RotateClockwiseIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nconst rotateUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Rotate = () => {\n\tconst context = useBoundProp( rotateTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.rotate }>\n\t\t\t\t\t{ rotateAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ rotateUnits }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { scaleTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { ScaleAxisRow } from './scale-axis-row';\n\nconst scaleAxisControls: { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Scale X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Scale = () => {\n\tconst context = useBoundProp( scaleTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.scale }>\n\t\t\t\t\t{ scaleAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<ScaleAxisRow key={ control.bind } { ...control } anchorRef={ rowRefs[ index ] } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { NumberControl } from '../../number-control';\n\ntype ScaleAxisRowProps = {\n\tlabel: string;\n\tbind: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\nexport const ScaleAxisRow = ( { label, bind, startIcon, anchorRef }: ScaleAxisRowProps ) => {\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t\t<NumberControl step={ 0.1 } placeholder=\"1\" startIcon={ startIcon } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { skewTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowLeftIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\nconst skewAxisControls: { label: string; bind: 'x' | 'y'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Skew X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Skew Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowLeftIcon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n];\n\nconst skewUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Skew = () => {\n\tconst context = useBoundProp( skewTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.skew }>\n\t\t\t\t\t{ skewAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ skewUnits }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tmoveTransformPropTypeUtil,\n\ttype MoveTransformPropValue,\n\trotateTransformPropTypeUtil,\n\ttype RotateTransformPropValue,\n\tscaleTransformPropTypeUtil,\n\ttype ScaleTransformPropValue,\n\tskewTransformPropTypeUtil,\n\ttype SkewTransformPropValue,\n\ttype TransformFunctionsItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { useRepeaterContext } from '../../components/control-repeater/context/repeater-context';\nimport { type TransformFunction, TransformFunctionKeys } from './initial-values';\n\ntype InitialTransformValues = {\n\tmove: TransformFunctionsItemPropValue[ 'value' ];\n\tscale: TransformFunctionsItemPropValue[ 'value' ];\n\trotate: TransformFunctionsItemPropValue[ 'value' ];\n\tskew: TransformFunctionsItemPropValue[ 'value' ];\n};\n\nexport const useTransformTabsHistory = ( {\n\tmove: initialMove,\n\tscale: initialScale,\n\trotate: initialRotate,\n\tskew: initialSkew,\n}: InitialTransformValues ) => {\n\tconst { value: moveValue, setValue: setMoveValue } = useBoundProp( moveTransformPropTypeUtil );\n\tconst { value: scaleValue, setValue: setScaleValue } = useBoundProp( scaleTransformPropTypeUtil );\n\tconst { value: rotateValue, setValue: setRotateValue } = useBoundProp( rotateTransformPropTypeUtil );\n\tconst { value: skewValue, setValue: setSkewValue } = useBoundProp( skewTransformPropTypeUtil );\n\n\tconst { openItemIndex, items } = useRepeaterContext();\n\n\tconst getCurrentTransformType = (): TransformFunction => {\n\t\tswitch ( true ) {\n\t\t\tcase !! scaleValue:\n\t\t\t\treturn TransformFunctionKeys.scale;\n\t\t\tcase !! rotateValue:\n\t\t\t\treturn TransformFunctionKeys.rotate;\n\t\t\tcase !! skewValue:\n\t\t\t\treturn TransformFunctionKeys.skew;\n\t\t\tdefault:\n\t\t\t\treturn TransformFunctionKeys.move;\n\t\t}\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< TransformFunction >( getCurrentTransformType() );\n\n\tconst valuesHistory = useRef< InitialTransformValues >( {\n\t\tmove: initialMove,\n\t\tscale: initialScale,\n\t\trotate: initialRotate,\n\t\tskew: initialSkew,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialTransformValues, value: TransformFunctionsItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: TransformFunction ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase TransformFunctionKeys.move:\n\t\t\t\tsetMoveValue( valuesHistory.current.move as MoveTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.scale:\n\t\t\t\tsetScaleValue( valuesHistory.current.scale as ScaleTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.rotate:\n\t\t\t\tsetRotateValue( valuesHistory.current.rotate as RotateTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.skew:\n\t\t\t\tsetSkewValue( valuesHistory.current.skew as SkewTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\tconst isTabDisabled = ( tabKey: TransformFunction ) => {\n\t\treturn !! items.find( ( { item: { $$type: key } }, pos ) => tabKey === key && pos !== openItemIndex );\n\t};\n\n\treturn {\n\t\tgetTabProps: ( value: TransformFunction ) => ( {\n\t\t\t...getTabProps( value ),\n\t\t\tdisabled: isTabDisabled( value ),\n\t\t} ),\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { type TransformFunctionsItemPropValue } from '@elementor/editor-props';\nimport { ArrowAutofitHeightIcon, ArrowsMaximizeIcon, RotateClockwise2Icon, SkewXIcon } from '@elementor/icons';\n\nimport { TransformFunctionKeys } from './initial-values';\n\nexport const TransformIcon = ( { value }: { value: TransformFunctionsItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <ArrowsMaximizeIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <ArrowAutofitHeightIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <RotateClockwise2Icon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <SkewXIcon fontSize=\"tiny\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import * as React from 'react';\nimport type { TransformFunctionsItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CUSTOM_SIZE_LABEL } from '../size-control';\nimport { defaultValues, TransformFunctionKeys } from './initial-values';\n\nconst orderedAxis = [ 'x', 'y', 'z' ];\n\nconst formatLabel = ( value: TransformFunctionsItemPropValue[ 'value' ], functionType: keyof typeof defaultValues ) => {\n\treturn orderedAxis\n\t\t.map( ( axisKey ) => {\n\t\t\tconst axis = value[ axisKey as keyof typeof value ];\n\n\t\t\tif ( functionType === 'scale' ) {\n\t\t\t\treturn axis?.value || defaultValues[ functionType ];\n\t\t\t}\n\n\t\t\tconst defaults = defaultValues[ functionType ];\n\t\t\tconst size = axis?.value?.size ?? defaults.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaults.unit;\n\n\t\t\treturn unit === 'custom' ? size || CUSTOM_SIZE_LABEL : `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\n};\n\nexport const TransformLabel = ( props: { value: TransformFunctionsItemPropValue } ) => {\n\tconst { $$type, value } = props.value;\n\tswitch ( $$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <Label label={ __( 'Move', 'elementor' ) } value={ formatLabel( value, 'move' ) } />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <Label label={ __( 'Scale', 'elementor' ) } value={ formatLabel( value, 'scale' ) } />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <Label label={ __( 'Rotate', 'elementor' ) } value={ formatLabel( value, 'rotate' ) } />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <Label label={ __( 'Skew', 'elementor' ) } value={ formatLabel( value, 'skew' ) } />;\n\t\tdefault:\n\t\t\treturn '';\n\t}\n};\n\nconst Label = ( { label, value }: { label: string; value: string } ) => {\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }: { value }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { AdjustmentsIcon } from '@elementor/icons';\nimport { bindPopover, Box, Divider, Popover, type PopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider } from '../../bound-prop-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { ChildrenPerspectiveControl } from './transform-base-controls/children-perspective-control';\nimport { TransformOriginControl } from './transform-base-controls/transform-origin-control';\n\nconst SIZE = 'tiny';\n\nexport const TransformSettingsControl = ( {\n\tpopupState,\n\tanchorRef,\n\tshowChildrenPerspective,\n}: {\n\tpopupState: PopupState;\n\tanchorRef: React.RefObject< HTMLDivElement | null >;\n\tshowChildrenPerspective: boolean;\n} ) => {\n\tconst popupProps = bindPopover( {\n\t\t...popupState,\n\t\tanchorEl: anchorRef.current ?? undefined,\n\t} );\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\twidth: ( anchorRef.current?.offsetWidth || 0 ) - 6 + 'px',\n\t\t\t\t\t\tmt: 0.5,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...popupProps }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Transform settings', 'elementor' ) }\n\t\t\t\tonClose={ popupState.close }\n\t\t\t\ticon={ <AdjustmentsIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<Divider />\n\t\t\t<PopoverContent sx={ { px: 2, py: 1.5 } }>\n\t\t\t\t<PropKeyProvider bind={ 'transform-origin' }>\n\t\t\t\t\t<TransformOriginControl />\n\t\t\t\t</PropKeyProvider>\n\t\t\t\t{ showChildrenPerspective && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Box sx={ { my: 0.5 } }>\n\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<ChildrenPerspectiveControl />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { perspectiveOriginPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\ntype FieldProps = {\n\tlabel: string;\n\tbind: string;\n\tunits: LengthUnit[];\n};\n\nconst ORIGIN_UNITS: LengthUnit[] = [ 'px', '%', 'em', 'rem' ];\n\nconst PERSPECTIVE_CONTROL_FIELD: FieldProps = {\n\tlabel: __( 'Perspective', 'elementor' ),\n\tbind: 'perspective',\n\tunits: [ 'px', 'em', 'rem', 'vw', 'vh' ],\n};\n\nconst CHILDREN_PERSPECTIVE_FIELDS: FieldProps[] = [\n\t{\n\t\tlabel: __( 'Origin X', 'elementor' ),\n\t\tbind: 'x',\n\t\tunits: ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tunits: ORIGIN_UNITS,\n\t},\n] as const;\n\nexport const ChildrenPerspectiveControl = () => {\n\treturn (\n\t\t<Stack direction=\"column\" spacing={ 1.5 }>\n\t\t\t<ControlFormLabel>{ __( 'Children perspective', 'elementor' ) }</ControlFormLabel>\n\t\t\t<PerspectiveControl />\n\t\t\t<PerspectiveOriginControl />\n\t\t</Stack>\n\t);\n};\n\nconst PerspectiveControl = () => (\n\t<PropKeyProvider bind={ 'perspective' }>\n\t\t<ControlFields control={ PERSPECTIVE_CONTROL_FIELD } key={ PERSPECTIVE_CONTROL_FIELD.bind } />\n\t</PropKeyProvider>\n);\n\nconst PerspectiveOriginControl = () => (\n\t<PropKeyProvider bind={ 'perspective-origin' }>\n\t\t<PerspectiveOriginControlProvider />\n\t</PropKeyProvider>\n);\n\nconst PerspectiveOriginControlProvider = () => {\n\tconst context = useBoundProp( perspectiveOriginPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ CHILDREN_PERSPECTIVE_FIELDS.map( ( control ) => (\n\t\t\t\t<PropKeyProvider bind={ control.bind } key={ control.bind }>\n\t\t\t\t\t<ControlFields control={ control } />\n\t\t\t\t</PropKeyProvider>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n\nconst ControlFields = ( { control }: { control: FieldProps } ) => {\n\tconst rowRef = React.useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<SizeControl variant=\"length\" units={ control.units } anchorRef={ rowRef } disableCustom />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { transformOriginPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\nconst TRANSFORM_ORIGIN_UNITS: LengthUnit[] = [ 'px', '%', 'em', 'rem' ];\nconst TRANSFORM_ORIGIN_UNITS_Z_AXIS = TRANSFORM_ORIGIN_UNITS.filter( ( unit ) => unit !== '%' );\n\nconst TRANSFORM_ORIGIN_FIELDS = [\n\t{\n\t\tlabel: __( 'Origin X', 'elementor' ),\n\t\tbind: 'x',\n\t\tunits: TRANSFORM_ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tunits: TRANSFORM_ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tunits: TRANSFORM_ORIGIN_UNITS_Z_AXIS,\n\t},\n];\n\nexport const TransformOriginControl = () => {\n\treturn (\n\t\t<Stack direction=\"column\" spacing={ 1.5 }>\n\t\t\t<ControlFormLabel>{ __( 'Transform', 'elementor' ) }</ControlFormLabel>\n\t\t\t{ TRANSFORM_ORIGIN_FIELDS.map( ( control ) => (\n\t\t\t\t<ControlFields control={ control } key={ control.bind } />\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n};\n\nconst ControlFields = ( { control }: { control: ( typeof TRANSFORM_ORIGIN_FIELDS )[ number ] } ) => {\n\tconst context = useBoundProp( transformOriginPropTypeUtil );\n\tconst rowRef = React.useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ control.bind }>\n\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<SizeControl variant=\"length\" units={ control.units } anchorRef={ rowRef } disableCustom />\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n\tcreateArrayPropUtils,\n\ttype KeyValuePropValue,\n\tselectionSizePropTypeUtil,\n\ttype SelectionSizePropValue,\n} from '@elementor/editor-props';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertTitle, Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { type Item, type RepeatablePropValue } from '../../components/control-repeater/types';\nimport { createControl } from '../../create-control';\nimport { RepeatableControl } from '../repeatable-control';\nimport { SelectionSizeControl } from '../selection-size-control';\nimport {\n\tinitialTransitionValue,\n\ttype TransitionItem,\n\ttransitionProperties,\n\ttype TransitionProperty,\n\ttype TransitionValue,\n} from './data';\nimport { subscribeToTransitionEvent } from './trainsition-events';\nimport { getTransitionPropertyByValue, TransitionSelector } from './transition-selector';\n\nconst DURATION_CONFIG = {\n\tvariant: 'time',\n\tunits: [ 's', 'ms' ],\n\tdefaultUnit: 'ms',\n};\n\nconst childArrayPropTypeUtil = createArrayPropUtils(\n\tselectionSizePropTypeUtil.key,\n\tselectionSizePropTypeUtil.schema,\n\t'transition'\n);\n\nsubscribeToTransitionEvent();\n\nconst areAllPropertiesUsed = ( value: SelectionSizePropValue[] = [] ) => {\n\treturn value?.length\n\t\t? transitionProperties.every( ( category ) => {\n\t\t\t\treturn category.properties.every( ( property ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tproperty.isDisabled ||\n\t\t\t\t\t\t!! value?.find( ( item ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t( item.value?.selection?.value as KeyValuePropValue )?.value?.value === property.value\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 } )\n\t\t: false;\n};\n\n// this config needs to be loaded at runtime/render since it's the transitionProperties object will be mutated by the pro plugin.\n// See: https://elementor.atlassian.net/browse/ED-20285\nconst getSelectionSizeProps = ( recentlyUsedList: string[], disabledItems?: string[], showPromotion?: boolean ) => {\n\treturn {\n\t\tselectionLabel: __( 'Type', 'elementor' ),\n\t\tsizeLabel: __( 'Duration', 'elementor' ),\n\t\tselectionConfig: {\n\t\t\tcomponent: TransitionSelector,\n\t\t\tprops: {\n\t\t\t\trecentlyUsedList,\n\t\t\t\tdisabledItems,\n\t\t\t\tshowPromotion,\n\t\t\t},\n\t\t},\n\t\tsizeConfigMap: {\n\t\t\t...transitionProperties.reduce(\n\t\t\t\t( acc, category ) => {\n\t\t\t\t\tcategory.properties.forEach( ( property ) => {\n\t\t\t\t\t\tacc[ property.value ] = DURATION_CONFIG;\n\t\t\t\t\t} );\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{} as Record< string, typeof DURATION_CONFIG >\n\t\t\t),\n\t\t},\n\t};\n};\n\nconst isItemDisabled = ( item: TransitionItem[ 'value' ] ) => {\n\tconst property = getTransitionPropertyByValue( item.value.selection.value?.value );\n\n\treturn ! property ? false : !! property.isDisabled;\n};\n\nconst getChildControlConfig = ( recentlyUsedList: string[], disabledItems?: string[], showPromotion?: boolean ) => {\n\treturn {\n\t\tpropTypeUtil: selectionSizePropTypeUtil,\n\t\tcomponent: SelectionSizeControl as unknown as React.ComponentType< Record< string, unknown > >,\n\t\tprops: getSelectionSizeProps( recentlyUsedList, disabledItems, showPromotion ),\n\t\tisItemDisabled: isItemDisabled as ( item: Item< RepeatablePropValue > ) => boolean,\n\t};\n};\n\nconst isPropertyUsed = ( value: SelectionSizePropValue[], property: TransitionProperty ) => {\n\treturn ( value ?? [] ).some( ( item ) => {\n\t\treturn ( item?.value?.selection?.value as KeyValuePropValue )?.value?.value === property.value;\n\t} );\n};\n\nconst getDisabledItemLabels = ( values: SelectionSizePropValue[] = [] ) => {\n\tconst selectedLabels: string[] = ( values || [] ).map(\n\t\t( item ) => ( item.value?.selection as KeyValuePropValue )?.value?.key?.value\n\t);\n\n\tconst proDisabledLabels: string[] = [];\n\ttransitionProperties.forEach( ( category ) => {\n\t\tconst disabledProperties = category.properties\n\t\t\t.filter( ( property ) => property.isDisabled && ! selectedLabels.includes( property.label ) )\n\t\t\t.map( ( property ) => property.label );\n\n\t\tproDisabledLabels.push( ...disabledProperties );\n\t} );\n\n\treturn {\n\t\tallDisabled: [ ...selectedLabels, ...proDisabledLabels ],\n\t\tproDisabled: proDisabledLabels,\n\t};\n};\n\nconst getInitialValue = ( values: SelectionSizePropValue[] = [] ): TransitionValue => {\n\tif ( ! values?.length ) {\n\t\treturn initialTransitionValue;\n\t}\n\n\tfor ( const category of transitionProperties ) {\n\t\tfor ( const property of category.properties ) {\n\t\t\tif ( isPropertyUsed( values, property ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...initialTransitionValue,\n\t\t\t\tselection: {\n\t\t\t\t\t$$type: 'key-value',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\treturn initialTransitionValue;\n};\n\nconst disableAddItemTooltipContent = (\n\t<Alert\n\t\tsx={ {\n\t\t\twidth: 280,\n\t\t\tgap: 0.5,\n\t\t} }\n\t\tcolor=\"secondary\"\n\t\ticon={ <InfoCircleFilledIcon /> }\n\t>\n\t\t<AlertTitle>{ __( 'Transitions', 'elementor' ) }</AlertTitle>\n\t\t<Box component=\"span\">\n\t\t\t<Typography variant=\"body2\">\n\t\t\t\t{ __( \"Switch to 'Normal' state to add a transition.\", 'elementor' ) }\n\t\t\t</Typography>\n\t\t</Box>\n\t</Alert>\n);\n\nexport const TransitionRepeaterControl = createControl(\n\t( {\n\t\trecentlyUsedListGetter,\n\t\tcurrentStyleState,\n\t}: {\n\t\trecentlyUsedListGetter: () => Promise< string[] >;\n\t\tcurrentStyleState: StyleDefinitionState;\n\t} ) => {\n\t\tconst currentStyleIsNormal = currentStyleState === null;\n\t\tconst [ recentlyUsedList, setRecentlyUsedList ] = useState< string[] >( [] );\n\n\t\tconst { value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\t\tconst { allDisabled: disabledItems, proDisabled: proDisabledItems } = useMemo(\n\t\t\t() => getDisabledItemLabels( value ),\n\t\t\t[ value ]\n\t\t);\n\n\t\tconst allowedTransitionSet = useMemo( () => {\n\t\t\tconst set = new Set< string >();\n\t\t\ttransitionProperties.forEach( ( category ) => {\n\t\t\t\tcategory.properties.forEach( ( prop ) => set.add( prop.value ) );\n\t\t\t} );\n\t\t\treturn set;\n\t\t}, [] );\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! value || value.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sanitized = value.filter( ( item ) => {\n\t\t\t\tconst selectionValue = ( item?.value?.selection?.value as KeyValuePropValue )?.value?.value ?? '';\n\t\t\t\treturn allowedTransitionSet.has( selectionValue );\n\t\t\t} );\n\n\t\t\tif ( sanitized.length !== value.length ) {\n\t\t\t\tsetValue( sanitized );\n\t\t\t}\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ allowedTransitionSet ] );\n\n\t\tuseEffect( () => {\n\t\t\trecentlyUsedListGetter().then( setRecentlyUsedList );\n\t\t}, [ recentlyUsedListGetter ] );\n\n\t\tconst allPropertiesUsed = useMemo( () => areAllPropertiesUsed( value ), [ value ] );\n\t\tconst isAddItemDisabled = ! currentStyleIsNormal || allPropertiesUsed;\n\n\t\treturn (\n\t\t\t<RepeatableControl\n\t\t\t\tlabel={ __( 'Transitions', 'elementor' ) }\n\t\t\t\trepeaterLabel={ __( 'Transitions', 'elementor' ) }\n\t\t\t\tpatternLabel=\"${value.selection.value.key.value}: ${value.size.value.size}${value.size.value.unit}\"\n\t\t\t\tplaceholder={ __( 'Empty Transition', 'elementor' ) }\n\t\t\t\tshowDuplicate={ false }\n\t\t\t\tshowToggle={ true }\n\t\t\t\tinitialValues={ getInitialValue( value ) }\n\t\t\t\tchildControlConfig={ getChildControlConfig(\n\t\t\t\t\trecentlyUsedList,\n\t\t\t\t\tdisabledItems,\n\t\t\t\t\tproDisabledItems.length > 0\n\t\t\t\t) }\n\t\t\t\tpropKey=\"transition\"\n\t\t\t\taddItemTooltipProps={ {\n\t\t\t\t\tdisabled: isAddItemDisabled,\n\t\t\t\t\tenableTooltip: ! currentStyleIsNormal,\n\t\t\t\t\ttooltipContent: disableAddItemTooltipContent,\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport { selectionSizePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { createControl } from '../create-control';\nimport { SizeControl, type SizeControlProps } from './size-control';\n\ntype SelectionComponentConfig = {\n\tcomponent: React.ComponentType< Record< string, unknown > >;\n\tprops: Record< string, unknown >;\n};\n\ntype SizeControlConfig = Pick< SizeControlProps, 'variant' | 'units' | 'defaultUnit' >;\n\ntype SelectionSizeControlProps = {\n\tselectionLabel: string;\n\tsizeLabel: string;\n\tselectionConfig: SelectionComponentConfig;\n\tsizeConfigMap: Record< string, SizeControlConfig >;\n};\n\nexport const SelectionSizeControl = createControl(\n\t( { selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }: SelectionSizeControlProps ) => {\n\t\tconst { value, setValue, propType } = useBoundProp( selectionSizePropTypeUtil );\n\t\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\t\tconst sizeFieldId = sizeLabel.replace( /\\s+/g, '-' ).toLowerCase();\n\n\t\tconst currentSizeConfig = useMemo( () => {\n\t\t\tswitch ( value.selection.$$type ) {\n\t\t\t\tcase 'key-value':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value.value.value || '' ];\n\t\t\t\tcase 'string':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value || '' ];\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}, [ value, sizeConfigMap ] );\n\t\tconst SelectionComponent = selectionConfig.component;\n\n\t\treturn (\n\t\t\t<PropProvider value={ value } setValue={ setValue } propType={ propType }>\n\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t<ControlFormLabel>{ selectionLabel }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<PropKeyProvider bind=\"selection\">\n\t\t\t\t\t\t\t<SelectionComponent { ...selectionConfig.props } />\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t{ currentSizeConfig && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t\t\t<ControlFormLabel htmlFor={ sizeFieldId }>{ sizeLabel }</ControlFormLabel>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind=\"size\">\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tvariant={ currentSizeConfig.variant }\n\t\t\t\t\t\t\t\t\t\tunits={ currentSizeConfig.units }\n\t\t\t\t\t\t\t\t\t\tdefaultUnit={ currentSizeConfig.defaultUnit }\n\t\t\t\t\t\t\t\t\t\tid={ sizeFieldId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n","import { type KeyValuePropValue, type SizePropValue } from '@elementor/editor-props';\nimport { isVersionGreaterOrEqual } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nexport type TransitionProperty = {\n\tlabel: string;\n\tvalue: string;\n\tunavailable?: boolean;\n\tisDisabled?: boolean;\n};\n\nexport type TransitionCategory = {\n\tlabel: string;\n\ttype: 'category';\n\tproperties: TransitionProperty[];\n};\n\nexport type TransitionValue = {\n\tselection: KeyValuePropValue;\n\tsize: SizePropValue;\n};\n\nexport type TransitionItem = {\n\t$$type: 'selection-size';\n\tvalue: {\n\t\t$$type: 'key-value';\n\t\tvalue: TransitionValue;\n\t};\n};\n\nexport const initialTransitionValue: TransitionValue = {\n\tselection: {\n\t\t$$type: 'key-value',\n\t\tvalue: {\n\t\t\tkey: { value: __( 'All properties', 'elementor' ), $$type: 'string' },\n\t\t\tvalue: { value: 'all', $$type: 'string' },\n\t\t},\n\t},\n\tsize: { $$type: 'size', value: { size: 200, unit: 'ms' } },\n};\n\nconst MIN_PRO_VERSION = '3.35';\n\nconst getIsSiteRtl = () => {\n\treturn !! window.elementorFrontend?.config?.is_rtl;\n};\n\n// TODO: Remove this after version 4.01 is released\nconst shouldExtendTransitionProperties = (): boolean => {\n\tconst hasProInstalled = !! window.elementorPro;\n\n\tif ( ! hasProInstalled ) {\n\t\treturn true;\n\t}\n\n\tconst proVersion = window.elementorPro?.config?.version;\n\n\tif ( ! proVersion ) {\n\t\treturn false;\n\t}\n\n\treturn isVersionGreaterOrEqual( proVersion, MIN_PRO_VERSION );\n};\n\nconst createTransitionPropertiesList = (): TransitionCategory[] => {\n\tconst isSiteRtl = getIsSiteRtl();\n\n\tconst baseProperties: TransitionCategory[] = [\n\t\t{\n\t\t\tlabel: __( 'Default', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [ { label: __( 'All properties', 'elementor' ), value: 'all' } ],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Margin', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Margin (all)', 'elementor' ), value: 'margin', isDisabled: true },\n\t\t\t\t{ label: __( 'Margin bottom', 'elementor' ), value: 'margin-block-end', isDisabled: true },\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Margin right', 'elementor' ) : __( 'Margin left', 'elementor' ),\n\t\t\t\t\tvalue: 'margin-inline-start',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Margin left', 'elementor' ) : __( 'Margin right', 'elementor' ),\n\t\t\t\t\tvalue: 'margin-inline-end',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{ label: __( 'Margin top', 'elementor' ), value: 'margin-block-start', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Padding', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Padding (all)', 'elementor' ), value: 'padding', isDisabled: true },\n\t\t\t\t{ label: __( 'Padding bottom', 'elementor' ), value: 'padding-block-end', isDisabled: true },\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Padding right', 'elementor' ) : __( 'Padding left', 'elementor' ),\n\t\t\t\t\tvalue: 'padding-inline-start',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Padding left', 'elementor' ) : __( 'Padding right', 'elementor' ),\n\t\t\t\t\tvalue: 'padding-inline-end',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{ label: __( 'Padding top', 'elementor' ), value: 'padding-block-start', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Flex', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Flex (all)', 'elementor' ), value: 'flex', isDisabled: true },\n\t\t\t\t{ label: __( 'Flex grow', 'elementor' ), value: 'flex-grow', isDisabled: true },\n\t\t\t\t{ label: __( 'Flex shrink', 'elementor' ), value: 'flex-shrink', isDisabled: true },\n\t\t\t\t{ label: __( 'Flex basis', 'elementor' ), value: 'flex-basis', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Size', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Width', 'elementor' ), value: 'width', isDisabled: true },\n\t\t\t\t{ label: __( 'Height', 'elementor' ), value: 'height', isDisabled: true },\n\t\t\t\t{ label: __( 'Max height', 'elementor' ), value: 'max-height', isDisabled: true },\n\t\t\t\t{ label: __( 'Max width', 'elementor' ), value: 'max-width', isDisabled: true },\n\t\t\t\t{ label: __( 'Min height', 'elementor' ), value: 'min-height', isDisabled: true },\n\t\t\t\t{ label: __( 'Min width', 'elementor' ), value: 'min-width', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Position', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Top', 'elementor' ), value: 'inset-block-start', isDisabled: true },\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\t\t\t\tvalue: 'inset-inline-start',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\t\t\t\tvalue: 'inset-inline-end',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{ label: __( 'Bottom', 'elementor' ), value: 'inset-block-end', isDisabled: true },\n\t\t\t\t{ label: __( 'Z-index', 'elementor' ), value: 'z-index', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Typography', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Font color', 'elementor' ), value: 'color', isDisabled: true },\n\t\t\t\t{ label: __( 'Font size', 'elementor' ), value: 'font-size', isDisabled: true },\n\t\t\t\t{ label: __( 'Line height', 'elementor' ), value: 'line-height', isDisabled: true },\n\t\t\t\t{ label: __( 'Letter spacing', 'elementor' ), value: 'letter-spacing', isDisabled: true },\n\t\t\t\t{ label: __( 'Word spacing', 'elementor' ), value: 'word-spacing', isDisabled: true },\n\t\t\t\t{ label: __( 'Font variations', 'elementor' ), value: 'font-variation-settings', isDisabled: true },\n\t\t\t\t{ label: __( 'Text stroke color', 'elementor' ), value: '-webkit-text-stroke-color', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Background', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Background color', 'elementor' ), value: 'background-color', isDisabled: true },\n\t\t\t\t{ label: __( 'Background position', 'elementor' ), value: 'background-position', isDisabled: true },\n\t\t\t\t{ label: __( 'Box shadow', 'elementor' ), value: 'box-shadow', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Border', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Border (all)', 'elementor' ), value: 'border', isDisabled: true },\n\t\t\t\t{ label: __( 'Border radius', 'elementor' ), value: 'border-radius', isDisabled: true },\n\t\t\t\t{ label: __( 'Border color', 'elementor' ), value: 'border-color', isDisabled: true },\n\t\t\t\t{ label: __( 'Border width', 'elementor' ), value: 'border-width', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Effects', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Opacity', 'elementor' ), value: 'opacity', isDisabled: true },\n\t\t\t\t{ label: __( 'Transform (all)', 'elementor' ), value: 'transform', isDisabled: true },\n\t\t\t\t{ label: __( 'Filter (all)', 'elementor' ), value: 'filter', isDisabled: true },\n\t\t\t],\n\t\t},\n\t];\n\n\treturn shouldExtendTransitionProperties() ? baseProperties : [ baseProperties[ 0 ] ];\n};\n\nexport const transitionProperties: TransitionCategory[] = createTransitionPropertiesList();\n\nexport const transitionsItemsList = transitionProperties.map( ( category ) => ( {\n\tlabel: category.label,\n\titems: category.properties.map( ( property ) => property.label ),\n} ) );\n","import { getSelectedElements } from '@elementor/editor-elements';\nimport { trackEvent } from '@elementor/mixpanel';\n\nimport { eventBus } from '../../services/event-bus';\nimport { type initialTransitionValue } from './data';\n\ntype TransitionItemValue = typeof initialTransitionValue;\n\nconst transitionRepeaterMixpanelEvent = {\n\teventName: 'click_added_transition',\n\tlocation: 'V4 Style Tab',\n\tsecondaryLocation: 'Transition control',\n\ttrigger: 'click',\n};\n\nexport function subscribeToTransitionEvent() {\n\teventBus.subscribe( 'transition-item-added', ( data ) => {\n\t\tconst payload = data as { itemValue?: TransitionItemValue };\n\t\tconst value = payload?.itemValue?.selection?.value?.value?.value;\n\t\tconst selectedElements = getSelectedElements();\n\t\tconst widgetType = selectedElements[ 0 ]?.type ?? null;\n\t\ttrackEvent( {\n\t\t\ttransition_type: value ?? 'unknown',\n\t\t\t...transitionRepeaterMixpanelEvent,\n\t\t\twidget_type: widgetType,\n\t\t} );\n\t} );\n}\n","import * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport { keyValuePropTypeUtil, type KeyValuePropValue, type StringPropValue } from '@elementor/editor-props';\nimport { PromotionChip } from '@elementor/editor-ui';\nimport { ChevronDownIcon, CrownFilledIcon, VariationsIcon } from '@elementor/icons';\nimport { Alert, bindPopover, bindTrigger, Box, Popover, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { ItemSelector } from '../../components/item-selector';\nimport ControlActions from '../../control-actions/control-actions';\nimport { transitionProperties, transitionsItemsList } from './data';\n\nconst toTransitionSelectorValue = ( label: string ) => {\n\tfor ( const category of transitionProperties ) {\n\t\tconst property = category.properties.find( ( prop ) => prop.label === label );\n\t\tif ( property ) {\n\t\t\treturn {\n\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n};\n\nexport function getTransitionPropertyByValue( item?: StringPropValue | null ) {\n\tif ( ! item?.value ) {\n\t\treturn null;\n\t}\n\n\tfor ( const category of transitionProperties ) {\n\t\tfor ( const property of category.properties ) {\n\t\t\tif ( property.value === item.value ) {\n\t\t\t\treturn property;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nconst includeCurrentValueInOptions = ( value: KeyValuePropValue[ 'value' ], disabledItems: string[] ) => {\n\treturn disabledItems.filter( ( item ) => {\n\t\treturn item !== value.key.value;\n\t} );\n};\n\nconst PRO_UPGRADE_URL = 'https://go.elementor.com/go-pro-transitions-modal/';\n\nexport const TransitionSelector = ( {\n\trecentlyUsedList = [],\n\tdisabledItems = [],\n\tshowPromotion = false,\n}: {\n\trecentlyUsedList: string[];\n\tdisabledItems?: string[];\n\tshowPromotion?: boolean;\n} ) => {\n\tconst { value, setValue } = useBoundProp( keyValuePropTypeUtil );\n\tconst {\n\t\tkey: { value: transitionLabel },\n\t} = value;\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst disabledCategories = useMemo( () => {\n\t\treturn new Set(\n\t\t\ttransitionProperties\n\t\t\t\t.filter( ( cat ) => cat.properties.some( ( prop ) => prop.isDisabled ) )\n\t\t\t\t.map( ( cat ) => cat.label )\n\t\t);\n\t}, [] );\n\n\tconst getItemList = () => {\n\t\tconst recentItems = recentlyUsedList\n\t\t\t.map( ( item ) => getTransitionPropertyByValue( { value: item, $$type: 'string' } )?.label )\n\t\t\t.filter( ( item ) => !! item ) as string[];\n\t\tconst filteredItems = transitionsItemsList.map( ( category ) => {\n\t\t\treturn {\n\t\t\t\t...category,\n\t\t\t\titems: category.items.filter( ( item ) => ! recentItems.includes( item ) ),\n\t\t\t};\n\t\t} );\n\t\tif ( recentItems.length === 0 ) {\n\t\t\treturn filteredItems;\n\t\t}\n\t\tconst [ first, ...rest ] = filteredItems;\n\t\treturn [\n\t\t\tfirst,\n\t\t\t{\n\t\t\t\tlabel: __( 'Recently Used', 'elementor' ),\n\t\t\t\titems: recentItems,\n\t\t\t},\n\t\t\t...rest,\n\t\t];\n\t};\n\n\tconst handleTransitionPropertyChange = ( newLabel: string ) => {\n\t\tconst newValue = toTransitionSelectorValue( newLabel );\n\n\t\tif ( ! newValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetValue( newValue );\n\t\tpopoverState.close();\n\t};\n\n\tconst getAnchorPosition = () => {\n\t\tif ( ! defaultRef.current ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rect = defaultRef.current.getBoundingClientRect();\n\t\treturn {\n\t\t\ttop: rect.top,\n\t\t\tleft: rect.right + 36,\n\t\t};\n\t};\n\n\treturn (\n\t\t<Box ref={ defaultRef }>\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ transitionLabel }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\tanchorPosition={ getAnchorPosition() }\n\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\titemsList={ getItemList() }\n\t\t\t\t\tselectedItem={ transitionLabel }\n\t\t\t\t\tonItemChange={ handleTransitionPropertyChange }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ 268 }\n\t\t\t\t\ttitle={ __( 'Transition Property', 'elementor' ) }\n\t\t\t\t\ticon={ VariationsIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\tdisabledItems={ includeCurrentValueInOptions( value, disabledItems ) }\n\t\t\t\t\tcategoryItemContentTemplate={ ( item ) => (\n\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>{ item.value }</span>\n\t\t\t\t\t\t\t{ showPromotion && disabledCategories.has( item.value ) && <PromotionChip /> }\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t) }\n\t\t\t\t\tfooter={\n\t\t\t\t\t\tshowPromotion ? (\n\t\t\t\t\t\t\t<Alert\n\t\t\t\t\t\t\t\tvariant=\"standard\"\n\t\t\t\t\t\t\t\tcolor=\"promotion\"\n\t\t\t\t\t\t\t\ticon={ false }\n\t\t\t\t\t\t\t\trole=\"dialog\"\n\t\t\t\t\t\t\t\taria-label=\"promotion-alert\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tsx={ { m: 1.5, mt: 0 } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upgrade to customize transition properties and control effects.', 'elementor' ) }\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tcomponent=\"a\"\n\t\t\t\t\t\t\t\t\thref={ PRO_UPGRADE_URL }\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\tgap: 0.5,\n\t\t\t\t\t\t\t\t\t\tcolor: 'promotion.main',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<CrownFilledIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t\t\t{ __( 'Upgrade now', 'elementor' ) }\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport type { Dayjs } from 'dayjs';\nimport * as dayjs from 'dayjs';\nimport { isTransformable, type Props, stringPropTypeUtil } from '@elementor/editor-props';\nimport { DateTimePropTypeUtil } from '@elementor/editor-props';\nimport { Box, DatePicker, LocalizationProvider, TimePicker } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst DATE_FORMAT = 'YYYY-MM-DD';\nconst TIME_FORMAT = 'HH:mm';\n\nexport const DateTimeControl = createControl( ( { inputDisabled }: { inputDisabled?: boolean } ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( DateTimePropTypeUtil );\n\n\tconst handleChange = ( newValue: Props, meta: { bind: 'date' | 'time' } ) => {\n\t\tconst field = meta.bind;\n\t\tconst fieldValue = newValue[ field as 'date' | 'time' ];\n\n\t\tif ( isTransformable( fieldValue ) ) {\n\t\t\treturn setValue( { ...value, [ field ]: fieldValue } );\n\t\t}\n\n\t\tlet formattedValue = '';\n\n\t\tif ( fieldValue ) {\n\t\t\tconst dayjsValue = fieldValue as Dayjs;\n\t\t\tformattedValue = field === 'date' ? dayjsValue.format( DATE_FORMAT ) : dayjsValue.format( TIME_FORMAT );\n\t\t}\n\n\t\tsetValue( {\n\t\t\t...value,\n\t\t\t[ field ]: {\n\t\t\t\t$$type: 'string',\n\t\t\t\tvalue: formattedValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst parseDateValue = ( dateStr?: string | null ): Dayjs | null => {\n\t\tif ( ! dateStr ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst d = ( dayjs as unknown as { default: ( s?: string | number | Date ) => Dayjs } ).default( dateStr );\n\n\t\treturn d && typeof d.isValid === 'function' && d.isValid() ? d : null;\n\t};\n\n\tconst parseTimeValue = ( timeStr?: string | null ): Dayjs | null => {\n\t\tif ( ! timeStr ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst [ hours, minutes ] = timeStr.split( ':' );\n\t\tconst h = Number.parseInt( hours ?? '', 10 );\n\t\tconst m = Number.parseInt( minutes ?? '', 10 );\n\n\t\tif ( Number.isNaN( h ) || Number.isNaN( m ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst base = ( dayjs as unknown as { default: () => Dayjs } ).default();\n\t\treturn base.hour( h ).minute( m ).second( 0 ).millisecond( 0 );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<ControlActions>\n\t\t\t\t<LocalizationProvider>\n\t\t\t\t\t<Box display=\"flex\" gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t\t<PropKeyProvider bind=\"date\">\n\t\t\t\t\t\t\t<DatePicker\n\t\t\t\t\t\t\t\tvalue={ parseDateValue( stringPropTypeUtil.extract( value?.date ) ) }\n\t\t\t\t\t\t\t\tonChange={ ( v: Dayjs | null ) =>\n\t\t\t\t\t\t\t\t\thandleChange( { date: v } as Props, { bind: 'date' } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ inputDisabled }\n\t\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\t\ttextField: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerButton: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerIcon: { fontSize: 'tiny' },\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\n\t\t\t\t\t\t<PropKeyProvider bind=\"time\">\n\t\t\t\t\t\t\t<TimePicker\n\t\t\t\t\t\t\t\tvalue={ parseTimeValue( stringPropTypeUtil.extract( value?.time ) ) }\n\t\t\t\t\t\t\t\tonChange={ ( v: Dayjs | null ) =>\n\t\t\t\t\t\t\t\t\thandleChange( { time: v } as Props, { bind: 'time' } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ inputDisabled }\n\t\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\t\ttextField: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerButton: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerIcon: { fontSize: 'tiny' },\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Box>\n\t\t\t\t</LocalizationProvider>\n\t\t\t</ControlActions>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport { type ComponentProps } from 'react';\nimport { htmlPropTypeUtil } from '@elementor/editor-props';\nimport { Box, type SxProps, type Theme } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { InlineEditor } from '../components/inline-editor';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const InlineEditingControl = createControl(\n\t( {\n\t\tsx,\n\t\tattributes,\n\t\tprops,\n\t}: {\n\t\tsx?: SxProps< Theme >;\n\t\tattributes?: Record< string, string >;\n\t\tprops?: ComponentProps< 'div' >;\n\t} ) => {\n\t\tconst { value, setValue } = useBoundProp( htmlPropTypeUtil );\n\t\tconst handleChange = ( newValue: unknown ) => setValue( newValue as string );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Box\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tp: 0.8,\n\t\t\t\t\t\tborder: '1px solid',\n\t\t\t\t\t\tborderColor: 'grey.200',\n\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\ttransition: 'border-color .2s ease, box-shadow .2s ease',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tborderColor: 'black',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'&:focus-within': {\n\t\t\t\t\t\t\tborderColor: 'black',\n\t\t\t\t\t\t\tboxShadow: '0 0 0 1px black',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .ProseMirror:focus': {\n\t\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .ProseMirror': {\n\t\t\t\t\t\t\tminHeight: '70px',\n\t\t\t\t\t\t\tfontSize: '12px',\n\t\t\t\t\t\t\t'& a': {\n\t\t\t\t\t\t\t\tcolor: 'inherit',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'& .elementor-inline-editor-reset': {\n\t\t\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'.strip-styles *': {\n\t\t\t\t\t\t\tall: 'unset',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...sx,\n\t\t\t\t\t} }\n\t\t\t\t\t{ ...attributes }\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t<InlineEditor value={ value || '' } setValue={ handleChange } />\n\t\t\t\t</Box>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport {\n\ttype DependencyList,\n\tforwardRef,\n\ttype PropsWithChildren,\n\ttype RefObject,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { bindPopover, Box, ClickAwayListener, Popover, type SxProps, type Theme, usePopupState } from '@elementor/ui';\nimport Bold from '@tiptap/extension-bold';\nimport Document from '@tiptap/extension-document';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Heading from '@tiptap/extension-heading';\nimport Italic from '@tiptap/extension-italic';\nimport Link from '@tiptap/extension-link';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Strike from '@tiptap/extension-strike';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport Text from '@tiptap/extension-text';\nimport Underline from '@tiptap/extension-underline';\nimport { type EditorView } from '@tiptap/pm/view';\nimport { type Editor, EditorContent, useEditor } from '@tiptap/react';\n\nimport { isEmpty } from '../utils/inline-editing';\nimport { InlineEditorToolbar } from './inline-editor-toolbar';\n\nconst ITALIC_KEYBOARD_SHORTCUT = 'i';\nconst BOLD_KEYBOARD_SHORTCUT = 'b';\nconst UNDERLINE_KEYBOARD_SHORTCUT = 'u';\n\nimport type { ElementID } from '@elementor/editor-elements';\n\ntype InlineEditorProps = {\n\tvalue: string | null;\n\tsetValue: ( value: string | null ) => void;\n\tattributes?: Record< string, string >;\n\telementClasses?: string;\n\tsx?: SxProps< Theme >;\n\tonBlur?: ( event: Event ) => void;\n\tshowToolbar?: boolean;\n\tautofocus?: boolean;\n\tgetInitialPopoverPosition?: () => { left: number; top: number };\n\texpectedTag?: string | null;\n\telementId?: ElementID;\n};\n\nconst INLINE_EDITOR_RESET_CLASS = 'elementor-inline-editor-reset';\n\nconst useOnUpdate = ( callback: () => void, dependencies: DependencyList ): void => {\n\tconst hasMounted = useRef( false );\n\n\tuseEffect( () => {\n\t\tif ( hasMounted.current ) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\thasMounted.current = true;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, dependencies );\n};\n\nconst calcSelectionCenter = (\n\tview: EditorView,\n\tcontainer: { left: number; top: number } | undefined\n): { left: number; top: number } | null => {\n\tif ( ! container ) {\n\t\treturn null;\n\t}\n\n\tconst { from, to } = view.state.selection;\n\tconst start = view.coordsAtPos( from );\n\tconst end = view.coordsAtPos( to );\n\n\tconst left = ( start.left + end.left ) / 2 - container.left;\n\tconst top = Math.min( start.top, end.top ) - container.top;\n\n\treturn { left, top };\n};\n\ntype WrapperProps = PropsWithChildren< {\n\tcontainerRef: RefObject< HTMLDivElement >;\n\teditor: ReturnType< typeof useEditor >;\n\tsx: SxProps< Theme >;\n\tonBlur?: ( event: Event ) => void;\n} >;\n\nconst Wrapper = ( { children, containerRef, editor, sx, onBlur }: WrapperProps ) => {\n\tconst wrappedChildren = (\n\t\t<Box ref={ containerRef } { ...sx }>\n\t\t\t{ children }\n\t\t</Box>\n\t);\n\n\treturn onBlur ? (\n\t\t<ClickAwayListener\n\t\t\tonClickAway={ ( event: PointerEvent ) => {\n\t\t\t\tif (\n\t\t\t\t\tcontainerRef.current?.contains( event.target as Node ) ||\n\t\t\t\t\teditor.view.dom.contains( event.target as Node )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonBlur?.( event );\n\t\t\t} }\n\t\t>\n\t\t\t{ wrappedChildren }\n\t\t</ClickAwayListener>\n\t) : (\n\t\t<>{ wrappedChildren }</>\n\t);\n};\n\nexport const InlineEditor = forwardRef(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tsetValue,\n\t\t\tattributes = {},\n\t\t\telementClasses = '',\n\t\t\tshowToolbar = false,\n\t\t\tautofocus = false,\n\t\t\tsx = {},\n\t\t\tonBlur = undefined,\n\t\t\tgetInitialPopoverPosition = undefined,\n\t\t\texpectedTag = null,\n\t\t\telementId = undefined,\n\t\t}: InlineEditorProps,\n\t\tref\n\t) => {\n\t\tconst containerRef = useRef< HTMLDivElement >( null );\n\t\tconst popupState = usePopupState( { variant: 'popover', disableAutoFocus: true } );\n\t\tconst [ hasSelectedContent, setHasSelectedContent ] = useState( false );\n\t\tconst documentContentSettings = !! expectedTag ? 'block+' : 'inline*';\n\t\tconst [ selectionRect, setSelectionRect ] = useState< { left: number; top: number } | null >( null );\n\n\t\tconst onSelectionEnd = ( view: EditorView ) => {\n\t\t\tconst hasSelection = ! view.state.selection.empty;\n\t\t\tsetHasSelectedContent( hasSelection );\n\n\t\t\tif ( hasSelection ) {\n\t\t\t\tconst container = containerRef.current?.getBoundingClientRect();\n\t\t\t\tsetSelectionRect( calcSelectionCenter( view, container ) );\n\t\t\t} else {\n\t\t\t\tsetSelectionRect( null );\n\t\t\t}\n\n\t\t\tqueueMicrotask( () => view.focus() );\n\t\t};\n\n\t\tconst onKeyDown = ( _: EditorView, event: KeyboardEvent ) => {\n\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\tonBlur?.( event );\n\t\t\t}\n\n\t\t\tif ( ( ! event.metaKey && ! event.ctrlKey ) || event.altKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t[ ITALIC_KEYBOARD_SHORTCUT, BOLD_KEYBOARD_SHORTCUT, UNDERLINE_KEYBOARD_SHORTCUT ].includes( event.key )\n\t\t\t) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t};\n\n\t\tconst toolbarRelatedListeners = showToolbar\n\t\t\t? {\n\t\t\t\t\tmouseup: onSelectionEnd,\n\t\t\t\t\tkeyup: onSelectionEnd,\n\t\t\t\t\tkeydown: onKeyDown,\n\t\t\t }\n\t\t\t: undefined;\n\n\t\tconst onUpdate = ( { editor: updatedEditor }: { editor: Editor } ) => {\n\t\t\tconst newValue: string | null = updatedEditor.getHTML();\n\n\t\t\tsetValue( isEmpty( newValue ) ? null : newValue );\n\t\t};\n\n\t\tconst classes = `${ INLINE_EDITOR_RESET_CLASS } ${ elementClasses }`;\n\n\t\tconst editor = useEditor( {\n\t\t\textensions: [\n\t\t\t\tDocument.extend( {\n\t\t\t\t\tcontent: documentContentSettings,\n\t\t\t\t} ),\n\t\t\t\tParagraph.extend( {\n\t\t\t\t\trenderHTML( { HTMLAttributes } ) {\n\t\t\t\t\t\tconst tag = expectedTag ?? 'p';\n\t\t\t\t\t\treturn [ tag, { ...HTMLAttributes, class: classes }, 0 ];\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t\tHeading.extend( {\n\t\t\t\t\trenderHTML( { node, HTMLAttributes } ) {\n\t\t\t\t\t\tif ( expectedTag ) {\n\t\t\t\t\t\t\treturn [ expectedTag, { ...HTMLAttributes, class: classes }, 0 ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst level = this.options.levels.includes( node.attrs.level )\n\t\t\t\t\t\t\t? node.attrs.level\n\t\t\t\t\t\t\t: this.options.levels[ 0 ];\n\n\t\t\t\t\t\treturn [ `h${ level }`, { ...HTMLAttributes, class: classes }, 0 ];\n\t\t\t\t\t},\n\t\t\t\t} ).configure( {\n\t\t\t\t\tlevels: [ 1, 2, 3, 4, 5, 6 ],\n\t\t\t\t} ),\n\t\t\t\tLink.configure( {\n\t\t\t\t\topenOnClick: false,\n\t\t\t\t} ),\n\t\t\t\tText,\n\t\t\t\tBold,\n\t\t\t\tItalic,\n\t\t\t\tStrike,\n\t\t\t\tSuperscript,\n\t\t\t\tSubscript,\n\t\t\t\tUnderline,\n\t\t\t\tHardBreak.extend( {\n\t\t\t\t\taddKeyboardShortcuts() {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tEnter: () => this.editor.commands.setHardBreak(),\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\tcontent: value,\n\t\t\tonUpdate,\n\t\t\tautofocus,\n\t\t\teditorProps: {\n\t\t\t\tattributes: {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tclass: attributes.class ?? '',\n\t\t\t\t\trole: 'textbox',\n\t\t\t\t},\n\t\t\t\thandleDOMEvents: toolbarRelatedListeners,\n\t\t\t},\n\t\t} );\n\n\t\tuseOnUpdate( () => {\n\t\t\tif ( ! editor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentContent = editor.getHTML();\n\n\t\t\tif ( currentContent !== value ) {\n\t\t\t\teditor.commands.setContent( value, { emitUpdate: false } );\n\t\t\t}\n\t\t}, [ editor, value ] );\n\n\t\tconst computePopupPosition = () => {\n\t\t\tif ( ! selectionRect ) {\n\t\t\t\treturn { left: 0, top: 0 };\n\t\t\t}\n\n\t\t\tconst container = containerRef.current?.getBoundingClientRect();\n\t\t\tif ( ! container ) {\n\t\t\t\treturn { left: 0, top: 0 };\n\t\t\t}\n\n\t\t\tconst initial = getInitialPopoverPosition?.() ?? { left: 0, top: 0 };\n\n\t\t\treturn {\n\t\t\t\tleft: container.left + selectionRect.left + initial.left,\n\t\t\t\ttop: container.top + selectionRect.top + initial.top,\n\t\t\t};\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Wrapper containerRef={ containerRef } editor={ editor } sx={ sx } onBlur={ onBlur }>\n\t\t\t\t\t<EditorContent ref={ ref } editor={ editor } />\n\t\t\t\t</Wrapper>\n\t\t\t\t{ showToolbar && containerRef.current && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\troot: {\n\t\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t\tpointerEvents: 'none',\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\t{ ...bindPopover( popupState ) }\n\t\t\t\t\t\topen={ hasSelectedContent && selectionRect !== null }\n\t\t\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\t\t\tanchorPosition={ computePopupPosition() }\n\t\t\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\t\t\t\ttransformOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InlineEditorToolbar editor={ editor } elementId={ elementId } />\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n","export function isEmpty( value: string | null = '' ) {\n\tif ( ! value ) {\n\t\treturn true;\n\t}\n\n\tconst pseudoElement = document.createElement( 'div' );\n\n\tpseudoElement.innerHTML = value;\n\n\treturn ! pseudoElement.textContent?.length;\n}\n","import * as React from 'react';\nimport { useMemo, useRef, useState } from 'react';\nimport { type ElementID, getElementSetting } from '@elementor/editor-elements';\nimport { type LinkPropValue } from '@elementor/editor-props';\nimport {\n\tBoldIcon,\n\tItalicIcon,\n\tLinkIcon,\n\tMinusIcon,\n\tStrikethroughIcon,\n\tSubscriptIcon,\n\tSuperscriptIcon,\n\tUnderlineIcon,\n} from '@elementor/icons';\nimport {\n\tBox,\n\tIconButton,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttoggleButtonGroupClasses,\n\tTooltip,\n\tusePopupState,\n} from '@elementor/ui';\nimport { type Editor, useEditorState } from '@tiptap/react';\nimport { __ } from '@wordpress/i18n';\n\nimport { UrlPopover } from './url-popover';\n\nconst checkIfElementHasLink = ( elementId: ElementID ): boolean =>\n\t!! getElementSetting< LinkPropValue >( elementId, 'link' )?.value?.destination;\n\ntype InlineEditorToolbarProps = {\n\teditor: Editor;\n\telementId?: ElementID;\n};\n\nconst toolbarButtons = {\n\tclear: {\n\t\tlabel: __( 'Clear', 'elementor' ),\n\t\ticon: <MinusIcon fontSize=\"tiny\" />,\n\t\taction: 'clear',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().clearNodes().unsetAllMarks().run();\n\t\t},\n\t},\n\tbold: {\n\t\tlabel: __( 'Bold', 'elementor' ),\n\t\ticon: <BoldIcon fontSize=\"tiny\" />,\n\t\taction: 'bold',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleBold().run();\n\t\t},\n\t},\n\titalic: {\n\t\tlabel: __( 'Italic', 'elementor' ),\n\t\ticon: <ItalicIcon fontSize=\"tiny\" />,\n\t\taction: 'italic',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleItalic().run();\n\t\t},\n\t},\n\tunderline: {\n\t\tlabel: __( 'Underline', 'elementor' ),\n\t\ticon: <UnderlineIcon fontSize=\"tiny\" />,\n\t\taction: 'underline',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleUnderline().run();\n\t\t},\n\t},\n\tstrike: {\n\t\tlabel: __( 'Strikethrough', 'elementor' ),\n\t\ticon: <StrikethroughIcon fontSize=\"tiny\" />,\n\t\taction: 'strike',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleStrike().run();\n\t\t},\n\t},\n\tsuperscript: {\n\t\tlabel: __( 'Superscript', 'elementor' ),\n\t\ticon: <SuperscriptIcon fontSize=\"tiny\" />,\n\t\taction: 'superscript',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleSuperscript().run();\n\t\t},\n\t},\n\tsubscript: {\n\t\tlabel: __( 'Subscript', 'elementor' ),\n\t\ticon: <SubscriptIcon fontSize=\"tiny\" />,\n\t\taction: 'subscript',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleSubscript().run();\n\t\t},\n\t},\n\tlink: {\n\t\tlabel: __( 'Link', 'elementor' ),\n\t\ticon: <LinkIcon fontSize=\"tiny\" />,\n\t\taction: 'link',\n\t\tmethod: null,\n\t},\n} as const;\n\ntype ToolbarButtonKeys = keyof typeof toolbarButtons;\n\ntype FormatAction = Omit< ToolbarButtonKeys, 'clear' >;\n\nconst { clear: clearButton, ...formatButtons } = toolbarButtons;\n\nconst possibleFormats: FormatAction[] = Object.keys( formatButtons ) as FormatAction[];\n\nexport const InlineEditorToolbar = ( { editor, elementId }: InlineEditorToolbarProps ) => {\n\tconst [ urlValue, setUrlValue ] = useState( '' );\n\tconst [ openInNewTab, setOpenInNewTab ] = useState( false );\n\tconst toolbarRef = useRef< HTMLDivElement >( null );\n\tconst linkPopupState = usePopupState( { variant: 'popover' } );\n\tconst hasLinkOnElement = elementId ? checkIfElementHasLink( elementId ) : false;\n\n\tconst editorState = useEditorState( {\n\t\teditor,\n\t\tselector: ( ctx ) => possibleFormats.filter( ( format ) => ctx.editor.isActive( format ) ),\n\t} );\n\n\tconst formatButtonsList = useMemo( () => {\n\t\tconst buttons = Object.values( formatButtons );\n\n\t\tif ( hasLinkOnElement ) {\n\t\t\treturn buttons.filter( ( button ) => button.action !== 'link' );\n\t\t}\n\n\t\treturn buttons;\n\t}, [ hasLinkOnElement ] );\n\n\tconst handleLinkClick = () => {\n\t\tconst linkAttrs = editor.getAttributes( 'link' );\n\t\tsetUrlValue( linkAttrs.href || '' );\n\t\tsetOpenInNewTab( linkAttrs.target === '_blank' );\n\t\tlinkPopupState.open( toolbarRef.current );\n\t};\n\n\tconst handleUrlChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetUrlValue( event.target.value );\n\t};\n\n\tconst handleToggleNewTab = () => {\n\t\tsetOpenInNewTab( ! openInNewTab );\n\t};\n\n\tconst handleUrlSubmit = () => {\n\t\tif ( urlValue ) {\n\t\t\teditor\n\t\t\t\t.chain()\n\t\t\t\t.focus()\n\t\t\t\t.setLink( {\n\t\t\t\t\thref: urlValue,\n\t\t\t\t\ttarget: openInNewTab ? '_blank' : '_self',\n\t\t\t\t} )\n\t\t\t\t.run();\n\t\t} else {\n\t\t\teditor.chain().focus().unsetLink().run();\n\t\t}\n\n\t\tif ( elementId ) {\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent( 'elementor:inline-link-changed', {\n\t\t\t\t\tdetail: { elementId },\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\tlinkPopupState.close();\n\t};\n\n\tReact.useEffect( () => {\n\t\teditor?.commands?.focus();\n\t}, [ editor ] );\n\n\treturn (\n\t\t<Box\n\t\t\tref={ toolbarRef }\n\t\t\tsx={ {\n\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\tgap: 0.5,\n\t\t\t\tpadding: 0.5,\n\t\t\t\tborderRadius: '8px',\n\t\t\t\tbackgroundColor: 'background.paper',\n\t\t\t\tboxShadow: '0 2px 8px rgba(0, 0, 0, 0.2)',\n\t\t\t\talignItems: 'center',\n\t\t\t\tvisibility: linkPopupState.isOpen ? 'hidden' : 'visible',\n\t\t\t\tpointerEvents: linkPopupState.isOpen ? 'none' : 'all',\n\t\t\t} }\n\t\t>\n\t\t\t<Tooltip title={ clearButton.label } placement=\"top\" sx={ { borderRadius: '8px' } }>\n\t\t\t\t<IconButton aria-label={ clearButton.label } onClick={ () => clearButton.method( editor ) } size=\"tiny\">\n\t\t\t\t\t{ clearButton.icon }\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t\t<ToggleButtonGroup\n\t\t\t\tvalue={ editorState }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tsx={ {\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tgap: 0.5,\n\t\t\t\t\tborder: 'none',\n\t\t\t\t\t[ `& .${ toggleButtonGroupClasses.firstButton }, & .${ toggleButtonGroupClasses.middleButton }, & .${ toggleButtonGroupClasses.lastButton }` ]:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t'&.Mui-selected': {\n\t\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'& + &.Mui-selected': {\n\t\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ formatButtonsList.map( ( button ) => (\n\t\t\t\t\t<Tooltip title={ button.label } key={ button.action } placement=\"top\">\n\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\tvalue={ button.action }\n\t\t\t\t\t\t\taria-label={ button.label }\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( button.action === 'link' ) {\n\t\t\t\t\t\t\t\t\thandleLinkClick();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbutton.method?.( editor );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\teditor?.commands?.focus();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ button.icon }\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) ) }\n\t\t\t</ToggleButtonGroup>\n\t\t\t<UrlPopover\n\t\t\t\tpopupState={ linkPopupState }\n\t\t\t\tanchorRef={ toolbarRef }\n\t\t\t\trestoreValue={ handleUrlSubmit }\n\t\t\t\tvalue={ urlValue }\n\t\t\t\tonChange={ handleUrlChange }\n\t\t\t\topenInNewTab={ openInNewTab }\n\t\t\t\tonToggleNewTab={ handleToggleNewTab }\n\t\t\t/>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { ExternalLinkIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, Stack, TextField, ToggleButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\topenInNewTab: boolean;\n\tonToggleNewTab: () => void;\n};\n\nexport const UrlPopover = ( {\n\tpopupState,\n\trestoreValue,\n\tanchorRef,\n\tvalue,\n\tonChange,\n\topenInNewTab,\n\tonToggleNewTab,\n}: Props ) => {\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => inputRef.current?.focus() );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tslotProps={ {\n\t\t\t\tpaper: { sx: { borderRadius: '16px', width: anchorRef.current?.offsetWidth + 'px', marginTop: -1 } },\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 } sx={ { p: 1.5 } }>\n\t\t\t\t<TextField\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tplaceholder={ __( 'Type a URL', 'elementor' ) }\n\t\t\t\t\tinputProps={ { ref: inputRef } }\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tInputProps={ { sx: { borderRadius: '8px' } } }\n\t\t\t\t\tonKeyUp={ ( event: React.KeyboardEvent< HTMLInputElement > ) =>\n\t\t\t\t\t\tevent.key === 'Enter' && handleClose()\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<Tooltip title={ __( 'Open in a new tab', 'elementor' ) }>\n\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\tvalue=\"newTab\"\n\t\t\t\t\t\tselected={ openInNewTab }\n\t\t\t\t\t\tonClick={ onToggleNewTab }\n\t\t\t\t\t\taria-label={ __( 'Open in a new tab', 'elementor' ) }\n\t\t\t\t\t\tsx={ { borderRadius: '8px' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ExternalLinkIcon fontSize=\"tiny\" />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { BrushBigIcon } from '@elementor/icons';\nimport { IconButton, styled, Tooltip } from '@elementor/ui';\n\ntype ClearIconButtonProps = {\n\tonClick?: () => void;\n\ttooltipText: React.ReactNode;\n\tdisabled?: boolean;\n\tsize?: 'tiny' | 'small' | 'medium' | 'large';\n};\n\nconst CustomIconButton = styled( IconButton )( ( { theme } ) => ( {\n\twidth: theme.spacing( 2.5 ),\n\theight: theme.spacing( 2.5 ),\n} ) );\n\nexport const ClearIconButton = ( { tooltipText, onClick, disabled, size = 'tiny' }: ClearIconButtonProps ) => (\n\t<Tooltip title={ tooltipText } placement=\"top\" disableInteractive>\n\t\t<CustomIconButton aria-label={ tooltipText } size={ size } onClick={ onClick } disabled={ disabled }>\n\t\t\t<BrushBigIcon fontSize={ size } />\n\t\t</CustomIconButton>\n\t</Tooltip>\n);\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { type CreateOptions, type PropKey } from '@elementor/editor-props';\nimport { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tInfotip,\n\tTooltip,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SetValueMeta } from '../../bound-prop-context';\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\nimport { RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../control-repeater/locations';\nimport { SectionContent } from '../section-content';\nimport { RepeaterHeader } from './repeater-header';\nimport { RepeaterPopover } from './repeater-popover';\nimport { RepeaterTag } from './repeater-tag';\nimport { SortableItem, SortableProvider } from './sortable';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\nexport type RepeaterItem< T > = {\n\tdisabled?: boolean;\n} & T;\n\ntype RepeaterItemContentProps< T > = {\n\tanchorEl: AnchorEl;\n\tbind: PropKey;\n\tvalue: T;\n\tindex: number;\n};\n\ntype RepeaterItemContent< T > = React.ComponentType< RepeaterItemContentProps< T > >;\n\nexport type ItemsActionPayload< T > = Array< { index: number; item: T } >;\n\ntype AddItemMeta< T > = {\n\ttype: 'add';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype RemoveItemMeta< T > = {\n\ttype: 'remove';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype DuplicateItemMeta< T > = {\n\ttype: 'duplicate';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype ReorderItemMeta = {\n\ttype: 'reorder';\n\tpayload: { from: number; to: number };\n};\n\ntype ToggleDisableItemMeta = {\n\ttype: 'toggle-disable';\n};\n\nexport type SetRepeaterValuesMeta< T > =\n\t| SetValueMeta< AddItemMeta< T > >\n\t| SetValueMeta< RemoveItemMeta< T > >\n\t| SetValueMeta< DuplicateItemMeta< T > >\n\t| SetValueMeta< ReorderItemMeta >\n\t| SetValueMeta< ToggleDisableItemMeta >;\n\ntype BaseItemSettings< T > = {\n\tinitialValues: T;\n\tLabel: React.ComponentType< { value: T; index: number } >;\n\tIcon: React.ComponentType< { value: T } >;\n\tContent: RepeaterItemContent< T >;\n\tactions?: ( value: T ) => React.ReactNode;\n};\n\ntype SortableItemSettings< T > = BaseItemSettings< T > & {\n\tgetId: ( { item, index }: { item: T; index: number } ) => string;\n};\n\ntype RepeaterProps< T > =\n\t| {\n\t\t\tlabel: string;\n\t\t\tvalues?: T[];\n\t\t\topenOnAdd?: boolean;\n\t\t\tsetValues: ( newValue: T[], _: CreateOptions, meta?: SetRepeaterValuesMeta< T > ) => void;\n\t\t\tdisabled?: boolean;\n\t\t\tdisableAddItemButton?: boolean;\n\t\t\taddButtonInfotipContent?: React.ReactNode;\n\t\t\tshowDuplicate?: boolean;\n\t\t\tshowToggle?: boolean;\n\t\t\tshowRemove?: boolean;\n\t\t\topenItem?: number;\n\t\t\tisSortable: false;\n\t\t\titemSettings: BaseItemSettings< T >;\n\t }\n\t| {\n\t\t\tlabel: string;\n\t\t\tvalues?: T[];\n\t\t\topenOnAdd?: boolean;\n\t\t\tsetValues: ( newValue: T[], _: CreateOptions, meta?: SetRepeaterValuesMeta< T > ) => void;\n\t\t\tdisabled?: boolean;\n\t\t\tdisableAddItemButton?: boolean;\n\t\t\taddButtonInfotipContent?: React.ReactNode;\n\t\t\tshowDuplicate?: boolean;\n\t\t\tshowToggle?: boolean;\n\t\t\tshowRemove?: boolean;\n\t\t\topenItem?: number;\n\t\t\tisSortable?: true;\n\t\t\titemSettings: SortableItemSettings< T >;\n\t };\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tdisabled = false,\n\topenOnAdd = false,\n\tvalues: items = [],\n\tsetValues: setItems,\n\tshowDuplicate = true,\n\tshowToggle = true,\n\tshowRemove = true,\n\tdisableAddItemButton = false,\n\taddButtonInfotipContent,\n\topenItem: initialOpenItem = EMPTY_OPEN_ITEM,\n\tisSortable = true,\n}: RepeaterProps< RepeaterItem< T > > ) => {\n\tconst [ openItem, setOpenItem ] = useState( initialOpenItem );\n\n\tconst uniqueKeys = items.map( ( item, index ) =>\n\t\tisSortable && 'getId' in itemSettings ? itemSettings.getId( { item, index } ) : String( index )\n\t);\n\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\t\tconst newIndex = items.length;\n\t\tsetItems(\n\t\t\t[ ...items, newItem ],\n\t\t\t{},\n\t\t\t{\n\t\t\t\taction: { type: 'add', payload: [ { index: newIndex, item: newItem } ] },\n\t\t\t}\n\t\t);\n\n\t\tif ( openOnAdd ) {\n\t\t\tsetOpenItem( newIndex );\n\t\t}\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\n\t\t// Insert the new (cloned item) at the next spot (after the current index)\n\t\tconst atPosition = 1 + index;\n\n\t\tsetItems(\n\t\t\t[ ...items.slice( 0, atPosition ), newItem, ...items.slice( atPosition ) ],\n\t\t\t{},\n\t\t\t{\n\t\t\t\taction: { type: 'duplicate', payload: [ { index, item: newItem } ] },\n\t\t\t}\n\t\t);\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tconst removedItem = items[ index ];\n\n\t\tsetItems(\n\t\t\titems.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'remove', payload: [ { index, item: removedItem } ] } }\n\t\t);\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetItems(\n\t\t\titems.map( ( value, pos ) => {\n\t\t\t\tif ( pos === index ) {\n\t\t\t\t\tconst { disabled: propDisabled, ...rest } = value;\n\n\t\t\t\t\t// If the items should not be disabled, remove the disabled property.\n\t\t\t\t\treturn { ...rest, ...( propDisabled ? {} : { disabled: true } ) } as RepeaterItem< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'toggle-disable' } }\n\t\t);\n\t};\n\n\tconst onChangeOrder = ( reorderedKeys: string[], meta: { from: number; to: number } ) => {\n\t\tsetItems(\n\t\t\treorderedKeys.map( ( id ) => {\n\t\t\t\treturn items[ uniqueKeys.indexOf( id ) ];\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'reorder', payload: { ...meta } } }\n\t\t);\n\t};\n\n\tconst isButtonDisabled = disabled || disableAddItemButton;\n\tconst shouldShowInfotip = isButtonDisabled && addButtonInfotipContent;\n\n\tconst addButton = (\n\t\t<IconButton\n\t\t\tsize={ SIZE }\n\t\t\tsx={ {\n\t\t\t\tml: 'auto',\n\t\t\t} }\n\t\t\tdisabled={ isButtonDisabled }\n\t\t\tonClick={ addRepeaterItem }\n\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t>\n\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t</IconButton>\n\t);\n\n\treturn (\n\t\t<SectionContent gap={ 2 }>\n\t\t\t<RepeaterHeader label={ label } adornment={ ControlAdornments }>\n\t\t\t\t{ shouldShowInfotip ? (\n\t\t\t\t\t<Infotip\n\t\t\t\t\t\tplacement=\"right\"\n\t\t\t\t\t\tcontent={ addButtonInfotipContent }\n\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Box sx={ { ...( isButtonDisabled ? { cursor: 'not-allowed' } : {} ) } }>{ addButton }</Box>\n\t\t\t\t\t</Infotip>\n\t\t\t\t) : (\n\t\t\t\t\taddButton\n\t\t\t\t) }\n\t\t\t</RepeaterHeader>\n\t\t\t{ 0 < uniqueKeys.length && (\n\t\t\t\t<SortableProvider value={ uniqueKeys } onChange={ onChangeOrder }>\n\t\t\t\t\t{ uniqueKeys.map( ( key ) => {\n\t\t\t\t\t\tconst index = uniqueKeys.indexOf( key );\n\t\t\t\t\t\tconst value = items[ index ];\n\n\t\t\t\t\t\tif ( ! value ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\t\tpropDisabled={ value?.disabled }\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Label value={ value } index={ index } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstartIcon={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Icon value={ value } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\topenOnMount={ openOnAdd && openItem === index }\n\t\t\t\t\t\t\t\t\tonOpen={ () => setOpenItem( EMPTY_OPEN_ITEM ) }\n\t\t\t\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t\t\t\t\tshowRemove={ showRemove }\n\t\t\t\t\t\t\t\t\tactions={ itemSettings.actions }\n\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<itemSettings.Content\n\t\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\tbind={ String( index ) }\n\t\t\t\t\t\t\t\t\t\t\tindex={ index }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</RepeaterItem>\n\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</SortableProvider>\n\t\t\t) }\n\t\t</SectionContent>\n\t);\n};\n\ntype RepeaterItemProps< T > = {\n\tlabel: React.ReactNode;\n\tpropDisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( props: Pick< RepeaterItemContentProps< T >, 'anchorEl' > ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tshowRemove: boolean;\n\tdisabled?: boolean;\n\tactions?: ( value: T ) => React.ReactNode;\n\tvalue: T;\n};\n\nconst RepeaterItem = < T, >( {\n\tlabel,\n\tpropDisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n\topenOnMount,\n\tonOpen,\n\tshowDuplicate,\n\tshowToggle,\n\tshowRemove,\n\tdisabled,\n\tactions,\n\tvalue,\n}: RepeaterItemProps< T > ) => {\n\tconst { popoverState, popoverProps, ref, setRef } = usePopover( openOnMount, onOpen );\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\treturn (\n\t\t<>\n\t\t\t<RepeaterTag\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ label }\n\t\t\t\tref={ setRef }\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ showDuplicate && (\n\t\t\t\t\t\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ duplicateItem } aria-label={ duplicateLabel }>\n\t\t\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showToggle && (\n\t\t\t\t\t\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ toggleDisableItem } aria-label={ toggleLabel }>\n\t\t\t\t\t\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ actions?.( value ) }\n\t\t\t\t\t\t{ showRemove && (\n\t\t\t\t\t\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ removeItem } aria-label={ removeLabel }>\n\t\t\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\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\t<RepeaterPopover width={ ref?.getBoundingClientRect().width } { ...popoverProps } anchorEl={ ref }>\n\t\t\t\t<Box>{ children( { anchorEl: ref } ) }</Box>\n\t\t\t</RepeaterPopover>\n\t\t</>\n\t);\n};\n\nconst usePopover = ( openOnMount: boolean, onOpen: () => void ) => {\n\tconst [ ref, setRef ] = useState< HTMLElement | null >( null );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\tuseEffect( () => {\n\t\tif ( openOnMount && ref ) {\n\t\t\tpopoverState.open( ref );\n\t\t\tonOpen?.();\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ ref ] );\n\n\treturn {\n\t\tpopoverState,\n\t\tref,\n\t\tsetRef,\n\t\tpopoverProps,\n\t};\n};\n","import * as React from 'react';\nimport type { PropValue, SizePropValue } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\n\nimport { useSizeValue } from '../../hooks/use-size-value';\nimport { type Unit } from '../../utils/size-control';\nimport { UnitSelect } from './unit-select';\nimport { UnstableSizeInput } from './unstable-size-input';\n\ntype Props< TValue > = {\n\tunits: Unit[];\n\tvalue: TValue;\n\tdefaultValue?: Partial< TValue >;\n\tonChange: ( value: TValue ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n};\n\nconst DEFAULT_VALUE: SizePropValue[ 'value' ] = {\n\tunit: 'px',\n\tsize: 0,\n};\n\nexport const UnstableSizeField = < T extends SizePropValue[ 'value' ] >( {\n\tvalue,\n\tdefaultValue,\n\tonChange,\n\tonBlur,\n\tunits,\n}: Props< T > ) => {\n\tconst { size, unit, setSize, setUnit } = useSizeValue< T >( value, onChange, {\n\t\t...DEFAULT_VALUE,\n\t\t...defaultValue,\n\t} as T );\n\n\tconst shouldHighlightUnit = () => {\n\t\treturn hasValue( size );\n\t};\n\n\treturn (\n\t\t<UnstableSizeInput\n\t\t\ttype=\"number\"\n\t\t\tvalue={ size ?? '' }\n\t\t\tonBlur={ onBlur }\n\t\t\tonChange={ ( event ) => setSize( event.target.value ) }\n\t\t\tInputProps={ {\n\t\t\t\tendAdornment: (\n\t\t\t\t\t<InputAdornment position=\"end\">\n\t\t\t\t\t\t<UnitSelect\n\t\t\t\t\t\t\toptions={ units }\n\t\t\t\t\t\t\tvalue={ unit }\n\t\t\t\t\t\t\tonClick={ setUnit }\n\t\t\t\t\t\t\tshowPrimaryColor={ shouldHighlightUnit() }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InputAdornment>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst hasValue = ( value: PropValue ): boolean => {\n\treturn value !== null && value !== '';\n};\n","import { type SizePropValue } from '@elementor/editor-props';\n\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\n\nexport const useSizeValue = < T extends SizePropValue[ 'value' ] >(\n\texternalValue: T,\n\tonChange: ( value: T ) => void,\n\tdefaultValue: T\n) => {\n\tconst [ sizeValue, setSizeValue ] = useSyncExternalState< T >( {\n\t\texternal: externalValue,\n\t\tsetExternal: ( newState ) => {\n\t\t\tif ( newState !== null ) {\n\t\t\t\tonChange( newState as T );\n\t\t\t}\n\t\t},\n\t\tpersistWhen: ( newState ) => differsFromExternal( newState as T, externalValue ),\n\t\tfallback: () => defaultValue,\n\t} );\n\n\tconst setSize = ( value: string ) => {\n\t\tconst newState = {\n\t\t\t...sizeValue,\n\t\t\tsize: value.trim() === '' ? null : Number( value ),\n\t\t};\n\n\t\tsetSizeValue( newState );\n\t};\n\n\tconst setUnit = ( unit: SizePropValue[ 'value' ][ 'unit' ] ) => {\n\t\tconst newState = {\n\t\t\t...sizeValue,\n\t\t\tunit,\n\t\t};\n\n\t\tsetSizeValue( newState );\n\t};\n\n\treturn {\n\t\tsize: sizeValue.size,\n\t\tunit: sizeValue.unit,\n\t\tsetSize,\n\t\tsetUnit,\n\t};\n};\n\nconst differsFromExternal = ( newState: SizePropValue[ 'value' ], externalState: SizePropValue[ 'value' ] ) => {\n\treturn newState.size !== externalState.size || newState.unit !== externalState.unit;\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { type SizePropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { bindMenu, bindTrigger, Button, Menu, styled, usePopupState } from '@elementor/ui';\n\ntype Props< T = SizePropValue[ 'value' ][ 'unit' ] > = {\n\toptions: T[];\n\tvalue: T;\n\tonClick: ( value: T ) => void;\n\tshowPrimaryColor: boolean;\n};\n\nconst menuItemContentStyles = {\n\tdisplay: 'flex',\n\tflexDirection: 'column',\n\tjustifyContent: 'center',\n};\n\nexport const UnitSelect = ( { value, showPrimaryColor, onClick, options }: Props ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<StyledButton isPrimaryColor={ showPrimaryColor } size=\"small\" { ...bindTrigger( popupState ) }>\n\t\t\t\t{ value }\n\t\t\t</StyledButton>\n\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\tkey={ option }\n\t\t\t\t\t\tonClick={ () => handleMenuItemClick( index ) }\n\t\t\t\t\t\tprimaryTypographyProps={ {\n\t\t\t\t\t\t\tvariant: 'caption',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t...menuItemContentStyles,\n\t\t\t\t\t\t\t\tlineHeight: '1',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuItemTextProps={ {\n\t\t\t\t\t\t\tsx: menuItemContentStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ option.toUpperCase() }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst StyledButton = styled( Button, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPrimaryColor',\n} )( ( { isPrimaryColor, theme } ) => ( {\n\tcolor: isPrimaryColor ? theme.palette.text.primary : theme.palette.text.tertiary,\n\tfont: 'inherit',\n\tminWidth: 'initial',\n\ttextTransform: 'uppercase',\n} ) );\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport type { PropValue } from '@elementor/editor-props';\nimport type { TextFieldProps } from '@elementor/ui';\n\nimport { NumberInput } from '../number-input';\n\ntype Props = {\n\ttype: 'number' | 'text';\n\tvalue: PropValue;\n\tfocused?: boolean;\n\tdisabled?: boolean;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tInputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n};\n\nexport const UnstableSizeInput = forwardRef(\n\t( { type, value, onChange, onKeyDown, onKeyUp, InputProps, onBlur, focused, disabled }: Props, ref ) => {\n\t\treturn (\n\t\t\t<NumberInput\n\t\t\t\tref={ ref }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonKeyUp={ onKeyUp }\n\t\t\t\tfocused={ focused }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonInput={ onChange }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tInputProps={ InputProps }\n\t\t\t\tsx={ getCursorStyle( InputProps?.readOnly ?? false ) }\n\t\t\t/>\n\t\t);\n\t}\n);\n\nconst getCursorStyle = ( readOnly: boolean ) => ( {\n\tinput: { cursor: readOnly ? 'default !important' : undefined },\n} );\n"],"mappings":"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","names":["React","Stack","__","React","createContext","useContext","createContext","useContext","value","value","React","React","React","React","createContext","useContext","items","items","React","React","createContext","useContext","createContext","useContext","Control","React","Stack","React","React","createContext","useContext","Context","items","items","MenuItem","Stack","React","__","Stack","React","stringPropTypeUtil","stringPropTypeUtil","React","stringPropTypeUtil","TextField","stringPropTypeUtil","TextField","React","useEffect","useMemo","sizePropTypeUtil","usePopupState","React","InputAdornment","React","forwardRef","MenuListItem","Button","React","useState","TextField","forwardRef","getCursorStyle","MenuListItem","Button","units","InputAdornment","React","useRef","MathFunctionIcon","TextField","__","useEffect","useState","units","sizePropTypeUtil","usePopupState","useMemo","useEffect","React","forwardRef","useRef","Grid","__","React","Stack","React","useRef","__","forwardRef","Grid","React","useRef","FormLabel","Grid","styled","__","React","Box","__","React","createContext","useMemo","useState","usePopupState","createContext","createContext","isItemDisabled","items","useState","useMemo","usePopupState","SIZE","Box","__","React","React","styled","__","items","React","bindTrigger","__","createContext","useContext","React","forwardRef","Label","isItemDisabled","bindTrigger","__","React","isItemDisabled","React","IconButton","__","SIZE","items","__","IconButton","React","IconButton","Tooltip","__","SIZE","items","isItemDisabled","__","Tooltip","IconButton","React","IconButton","Tooltip","__","SIZE","__","Tooltip","IconButton","React","bindPopover","Box","React","Popover","bindPopover","Box","React","Stack","forwardRef","React","Grid","React","forwardRef","Box","Stack","Typography","forwardRef","Stack","Box","Typography","__","styled","useRef","Control","Grid","FormLabel","React","__","React","createContext","useContext","useMemo","__","__","__","createContext","useMemo","useContext","React","cssFilterFunctionPropUtil","Grid","__","React","useRef","Grid","__","__","useRef","Grid","useRef","React","Grid","useRef","Grid","cssFilterFunctionPropUtil","Grid","__","items","React","styled","UnstableColorIndicator","StyledUnstableColorIndicator","React","React","Box","Box","React","Box","Box","__","getInitialValue","React","useEffect","useState","useState","useEffect","React","stringPropTypeUtil","React","useEffect","useMemo","useRef","useState","Menu","styled","Typography","React","Tooltip","styled","items","useMemo","Content","useState","useRef","Menu","Typography","useEffect","React","stringPropTypeUtil","React","InputAdornment","InputAdornment","React","useId","useRef","bindPopover","Box","Grid","Popover","Stack","Tooltip","usePopupState","__","items","useId","usePopupState","useRef","Grid","Stack","Box","__","Tooltip","Popover","bindPopover","React","useRef","useState","sizePropTypeUtil","useActiveBreakpoint","Grid","Stack","Tooltip","__","sprintf","useRef","sizePropTypeUtil","useState","useActiveBreakpoint","__","Stack","Tooltip","Grid","Control","sprintf","React","stringPropTypeUtil","ChevronDownIcon","bindPopover","bindTrigger","Popover","UnstableTag","usePopupState","__","React","useCallback","useEffect","useState","PopoverHeader","Box","Divider","Stack","Typography","__","useState","PopoverHeader","__","Divider","Box","Stack","Typography","useCallback","useEffect","stringPropTypeUtil","usePopupState","UnstableTag","ChevronDownIcon","bindTrigger","Popover","bindPopover","__","React","TextField","TextField","React","useEffect","useMemo","useState","PlusIcon","Grid","IconButton","Stack","debounce","__","React","Box","Infotip","Link","__","React","useMemo","useState","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","httpService","debounce","__","React","forwardRef","XIcon","Box","IconButton","InputAdornment","TextField","__","useState","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","useMemo","debounce","httpService","React","Box","Box","SIZE","useState","__","useMemo","debounce","useEffect","Stack","Grid","IconButton","PlusIcon","React","stringPropTypeUtil","MenuListItem","Select","styled","Typography","__","React","AlertTitle","Box","Infotip","useTheme","styled","Select","stringPropTypeUtil","__","Typography","MenuListItem","React","useLayoutEffect","useRef","useState","sizePropTypeUtil","useActiveBreakpoint","DetachIcon","LinkIcon","Grid","Stack","Tooltip","__","useRef","sizePropTypeUtil","useState","useActiveBreakpoint","useLayoutEffect","currentValue","LinkIcon","DetachIcon","__","Stack","Tooltip","Grid","Control","React","useEffect","useState","stringPropTypeUtil","MenuListItem","Grid","Select","Stack","TextField","__","__","stringPropTypeUtil","useState","useEffect","Stack","Grid","Select","MenuListItem","TextField","React","useState","imageSrcPropTypeUtil","UploadIcon","Button","Card","CardMedia","CardOverlay","CircularProgress","Stack","styled","useWpMediaAttachment","useWpMediaFrame","__","React","useState","Button","CircularProgress","Divider","__","__","useState","Divider","Button","CircularProgress","styled","Card","Stack","imageSrcPropTypeUtil","useWpMediaAttachment","useState","useWpMediaFrame","__","CircularProgress","CardMedia","CardOverlay","Button","UploadIcon","React","Grid","__","React","backgroundColorOverlayPropTypeUtil","backgroundImageOverlayPropTypeUtil","colorPropTypeUtil","Box","CardMedia","styled","UnstableColorIndicator","useWpMediaAttachment","__","React","colorPropTypeUtil","numberPropTypeUtil","stringPropTypeUtil","stringPropTypeUtil","numberPropTypeUtil","colorPropTypeUtil","React","Grid","__","__","Grid","React","useRef","stringPropTypeUtil","MenuListItem","Grid","Select","__","__","stringPropTypeUtil","useRef","Grid","Select","MenuListItem","React","XIcon","Grid","__","__","XIcon","Grid","React","useRef","stringPropTypeUtil","ArrowsMoveHorizontalIcon","ArrowsMoveVerticalIcon","Grid","__","__","stringPropTypeUtil","useRef","Grid","ArrowsMoveHorizontalIcon","ArrowsMoveVerticalIcon","useRef","backgroundGradientOverlayPropTypeUtil","initialBackgroundColorOverlay","initialBackgroundGradientOverlay","backgroundGradientOverlayPropTypeUtil","useRef","backgroundColorOverlayPropTypeUtil","colorPropTypeUtil","__","ItemIcon","ItemLabel","Box","StyledUnstableColorIndicator","CardMedia","backgroundImageOverlayPropTypeUtil","styled","UnstableColorIndicator","useWpMediaAttachment","__","Grid","React","useMemo","Box","isItemDisabled","childArrayPropTypeUtil","useMemo","ItemIcon","ItemLabel","Content","Box","React","useMemo","useState","stringPropTypeUtil","FormLabel","Grid","__","useState","__","useMemo","stringPropTypeUtil","Grid","FormLabel","React","stringPropTypeUtil","MenuListItem","LetterXIcon","LetterYIcon","Grid","Select","__","__","stringPropTypeUtil","Grid","Select","MenuListItem","LetterXIcon","LetterYIcon","React","useRef","AdjustmentsIcon","InfoCircleFilledIcon","bindTrigger","Box","IconButton","Tooltip","Typography","usePopupState","__","useMemo","numberPropTypeUtil","React","Box","Tab","TabPanel","Tabs","__","React","useRef","Grid","__","React","Grid","units","Grid","__","useRef","Grid","React","useRef","rotateTransformPropTypeUtil","Grid","__","__","rotateTransformPropTypeUtil","useRef","Grid","React","useRef","scaleTransformPropTypeUtil","ArrowDownLeftIcon","ArrowDownSmallIcon","ArrowRightIcon","Grid","__","React","Grid","Grid","__","ArrowRightIcon","ArrowDownSmallIcon","ArrowDownLeftIcon","scaleTransformPropTypeUtil","useRef","Grid","React","useRef","skewTransformPropTypeUtil","ArrowRightIcon","Grid","__","__","ArrowRightIcon","skewTransformPropTypeUtil","useRef","Grid","useRef","moveTransformPropTypeUtil","rotateTransformPropTypeUtil","scaleTransformPropTypeUtil","skewTransformPropTypeUtil","useTabs","moveTransformPropTypeUtil","scaleTransformPropTypeUtil","rotateTransformPropTypeUtil","skewTransformPropTypeUtil","items","useTabs","useRef","Box","Tabs","__","Tab","TabPanel","React","ArrowsMaximizeIcon","ArrowsMaximizeIcon","React","Box","__","Label","__","Box","React","PopoverHeader","bindPopover","Box","Divider","Popover","__","React","Grid","Stack","__","__","Stack","Grid","React","Grid","Stack","__","__","Stack","ControlFields","Grid","SIZE","bindPopover","Popover","PopoverHeader","__","Divider","Box","SIZE","useRef","usePopupState","Repeater","Box","InfoCircleFilledIcon","Typography","__","getInitialValue","Tooltip","IconButton","bindTrigger","AdjustmentsIcon","React","useEffect","useMemo","useState","createArrayPropUtils","selectionSizePropTypeUtil","InfoCircleFilledIcon","Alert","AlertTitle","Box","Typography","__","React","useMemo","useRef","Grid","useRef","useMemo","Grid","__","React","useMemo","useRef","keyValuePropTypeUtil","ChevronDownIcon","Alert","bindPopover","bindTrigger","Box","Popover","UnstableTag","usePopupState","__","keyValuePropTypeUtil","useRef","usePopupState","useMemo","__","Box","UnstableTag","ChevronDownIcon","bindTrigger","Popover","bindPopover","Alert","createArrayPropUtils","selectionSizePropTypeUtil","__","Alert","InfoCircleFilledIcon","AlertTitle","Box","Typography","useState","useMemo","useEffect","React","isTransformable","stringPropTypeUtil","Box","isTransformable","Box","stringPropTypeUtil","React","Box","React","forwardRef","useEffect","useRef","useState","bindPopover","Box","Popover","usePopupState","Link","React","useMemo","useRef","useState","LinkIcon","MinusIcon","Box","IconButton","ToggleButton","ToggleButtonGroup","Tooltip","usePopupState","__","React","useEffect","useRef","bindPopover","Popover","Stack","TextField","ToggleButton","Tooltip","__","__","MinusIcon","LinkIcon","useState","useRef","usePopupState","useMemo","Box","Tooltip","IconButton","ToggleButtonGroup","ToggleButton","useRef","useEffect","Box","forwardRef","usePopupState","useState","Link","Popover","bindPopover","Box","React","IconButton","styled","Tooltip","React","useEffect","useState","CopyIcon","EyeIcon","EyeOffIcon","PlusIcon","XIcon","bindPopover","bindTrigger","Box","IconButton","Infotip","Tooltip","usePopupState","__","SIZE","EMPTY_OPEN_ITEM","Repeater","items","useState","IconButton","__","PlusIcon","Infotip","Box","bindTrigger","Tooltip","CopyIcon","EyeOffIcon","EyeIcon","XIcon","usePopupState","bindPopover","useEffect","React","InputAdornment","React","useId","MenuListItem","bindMenu","bindTrigger","Button","Menu","styled","usePopupState","StyledButton","React","forwardRef","forwardRef","units","InputAdornment"]}
1
+ {"version":3,"sources":["../src/controls/image-control.tsx","../src/bound-prop-context/prop-context.tsx","../src/bound-prop-context/errors.ts","../src/bound-prop-context/prop-key-context.tsx","../src/bound-prop-context/use-bound-prop.ts","../src/components/control-form-label.tsx","../src/components/control-label.tsx","../src/control-adornments/control-adornments.tsx","../src/control-adornments/control-adornments-context.tsx","../src/create-control.tsx","../src/control-replacements.tsx","../src/hooks/use-unfiltered-files-upload.ts","../src/api.ts","../src/controls/image-media-control.tsx","../src/control-actions/control-actions.tsx","../src/control-actions/control-actions-context.tsx","../src/controls/select-control.tsx","../src/controls/text-control.tsx","../src/controls/text-area-control.tsx","../src/controls/size-control.tsx","../src/components/size-control/size-input.tsx","../src/utils/size-control.ts","../src/components/size-control/text-field-inner-selection.tsx","../src/components/number-input.tsx","../src/components/text-field-popover.tsx","../src/hooks/use-size-extended-options.ts","../src/hooks/use-sync-external-state.tsx","../src/controls/stroke-control.tsx","../src/components/section-content.tsx","../src/controls/color-control.tsx","../src/controls/box-shadow-repeater-control.tsx","../src/components/control-repeater/actions/tooltip-add-item-action.tsx","../src/components/control-repeater/context/repeater-context.tsx","../src/services/event-bus.ts","../src/components/control-repeater/context/item-context.tsx","../src/components/control-repeater/items/items-container.tsx","../src/components/repeater/sortable.tsx","../src/components/control-repeater/items/item.tsx","../src/hooks/use-repeatable-control-context.ts","../src/components/repeater/repeater-tag.tsx","../src/components/control-repeater/locations.ts","../src/components/control-repeater/control-repeater.tsx","../src/components/control-repeater/actions/disable-item-action.tsx","../src/components/control-repeater/actions/duplicate-item-action.tsx","../src/components/control-repeater/actions/remove-item-action.tsx","../src/components/control-repeater/items/edit-item-popover.tsx","../src/components/repeater/repeater-popover.tsx","../src/components/popover-content.tsx","../src/components/popover-grid-container.tsx","../src/components/repeater/repeater-header.tsx","../src/controls/filter-control/filter-repeater-control.tsx","../src/controls/filter-control/context/filter-config-context.tsx","../src/controls/filter-control/utils.ts","../src/controls/filter-control/configs.ts","../src/controls/filter-control/filter-content.tsx","../src/controls/filter-control/drop-shadow/drop-shadow-item-content.tsx","../src/controls/filter-control/single-size/single-size-item-content.tsx","../src/controls/filter-control/filter-icon.tsx","../src/controls/filter-control/filter-label.tsx","../src/controls/filter-control/drop-shadow/drop-shadow-item-label.tsx","../src/controls/filter-control/single-size/single-size-item-label.tsx","../src/controls/select-control-wrapper.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/components/conditional-tooltip.tsx","../src/utils/convert-toggle-options-to-atomic.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/controls/linked-dimensions-control.tsx","../src/controls/font-family-control/font-family-control.tsx","../src/components/item-selector.tsx","../src/hooks/use-filtered-items-list.ts","../src/controls/font-family-control/enqueue-font.tsx","../src/controls/url-control.tsx","../src/controls/link-control.tsx","../src/components/restricted-link-infotip.tsx","../src/controls/query-control.tsx","../src/components/autocomplete.tsx","../src/controls/switch-control.tsx","../src/controls/html-tag-control.tsx","../src/components/conditional-control-infotip.tsx","../src/controls/gap-control.tsx","../src/controls/aspect-ratio-control.tsx","../src/controls/svg-media-control.tsx","../src/components/enable-unfiltered-modal.tsx","../src/controls/background-control/background-control.tsx","../src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx","../src/env.ts","../src/controls/background-control/background-gradient-color-control.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx","../src/controls/background-control/background-overlay/use-background-tabs-history.ts","../src/controls/repeatable-control.tsx","../src/controls/key-value-control.tsx","../src/utils/escape-html-attr.ts","../src/controls/position-control.tsx","../src/controls/transform-control/transform-repeater-control.tsx","../src/hooks/use-element-can-have-children.ts","../src/controls/transform-control/initial-values.ts","../src/controls/transform-control/transform-content.tsx","../src/controls/transform-control/functions/move.tsx","../src/controls/transform-control/functions/axis-row.tsx","../src/controls/transform-control/functions/rotate.tsx","../src/controls/transform-control/functions/scale.tsx","../src/controls/transform-control/functions/scale-axis-row.tsx","../src/controls/transform-control/functions/skew.tsx","../src/controls/transform-control/use-transform-tabs-history.tsx","../src/controls/transform-control/transform-icon.tsx","../src/controls/transform-control/transform-label.tsx","../src/controls/transform-control/transform-settings-control.tsx","../src/controls/transform-control/transform-base-controls/children-perspective-control.tsx","../src/controls/transform-control/transform-base-controls/transform-origin-control.tsx","../src/controls/transition-control/transition-repeater-control.tsx","../src/controls/selection-size-control.tsx","../src/controls/transition-control/data.ts","../src/controls/transition-control/trainsition-events.ts","../src/controls/transition-control/transition-selector.tsx","../src/controls/date-time-control.tsx","../src/controls/inline-editing-control.tsx","../src/components/inline-editor.tsx","../src/utils/inline-editing.ts","../src/components/inline-editor-toolbar.tsx","../src/components/url-popover.tsx","../src/components/icon-buttons/clear-icon-button.tsx","../src/components/repeater/repeater.tsx","../src/components/size/unstable-size-field.tsx","../src/hooks/use-size-value.ts","../src/components/size/unit-select.tsx","../src/components/size/unstable-size-input.tsx"],"sourcesContent":["import * as React from 'react';\nimport { imagePropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { type MediaType } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\nimport { ImageMediaControl } from './image-media-control';\nimport { SelectControl } from './select-control';\n\ntype ImageControlProps = {\n\tsizes: { label: string; value: string }[];\n\tlabel?: string;\n};\n\nexport const ImageControl = createControl( ( { sizes, label = __( 'Image', 'elementor' ) }: ImageControlProps ) => {\n\tconst propContext = useBoundProp( imagePropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<ImageSrcControl />\n\t\t\t\t<Grid container gap={ 1.5 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Resolution', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<ImageSizeControl sizes={ sizes } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ImageSrcControl = () => {\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst mediaTypes: MediaType[] = allowSvgUpload ? [ 'image', 'svg' ] : [ 'image' ];\n\n\treturn (\n\t\t<PropKeyProvider bind={ 'src' }>\n\t\t\t<ImageMediaControl mediaTypes={ mediaTypes } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst ImageSizeControl = ( { sizes }: { sizes: ImageControlProps[ 'sizes' ] } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t<SelectControl options={ sizes } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { type CreateOptions, type PropKey, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { HookOutsideProviderError } from './errors';\n\ntype Action = {\n\ttype: string;\n\tpayload?: object;\n};\n\nexport type SetValueMeta< TAction = Action > = {\n\tbind?: PropKey;\n\tvalidation?: ( value: PropValue ) => boolean;\n\taction?: TAction;\n\twithHistory?: boolean;\n};\n\nexport type SetValue< T > = ( value: T, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\ntype PropContext< T extends PropValue, P extends PropType > = {\n\tsetValue: SetValue< T >;\n\tvalue: T | null;\n\tpropType: P;\n\tplaceholder?: T;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n};\n\nconst PropContext = createContext< PropContext< PropValue, PropType > | null >( null );\n\nexport type PropProviderProps< T extends PropValue, P extends PropType > = React.PropsWithChildren<\n\tPropContext< T, P >\n>;\n\nexport const PropProvider = < T extends PropValue, P extends PropType >( {\n\tchildren,\n\tvalue,\n\tsetValue,\n\tpropType,\n\tplaceholder,\n\tisDisabled,\n}: PropProviderProps< T, P > ) => {\n\treturn (\n\t\t<PropContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tvalue,\n\t\t\t\tpropType,\n\t\t\t\tsetValue: setValue as SetValue< PropValue >,\n\t\t\t\tplaceholder,\n\t\t\t\tisDisabled,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</PropContext.Provider>\n\t);\n};\n\nexport const usePropContext = < T extends PropValue, P extends PropType >() => {\n\tconst context = useContext( PropContext ) as PropContext< T, P > | null;\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: {\n\t\t\t\thook: 'usePropContext',\n\t\t\t\tprovider: 'PropProvider',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { createError } from '@elementor/utils';\n\nexport const MissingPropTypeError = createError( {\n\tcode: 'missing_prop_provider_prop_type',\n\tmessage: 'Prop type is missing',\n} );\n\nexport const UnsupportedParentError = createError( {\n\tcode: 'unsupported_prop_provider_prop_type',\n\tmessage: 'Parent prop type is not supported',\n} );\n\nexport const HookOutsideProviderError = createError( {\n\tcode: 'hook_outside_provider',\n\tmessage: 'Hook used outside of provider',\n} );\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport {\n\ttype ArrayPropType,\n\ttype ArrayPropValue,\n\ttype CreateOptions,\n\ttype ObjectPropType,\n\ttype ObjectPropValue,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { HookOutsideProviderError, MissingPropTypeError, UnsupportedParentError } from './errors';\nimport { type SetValue, usePropContext } from './prop-context';\n\nexport type PropKeyContextValue< T, P > = {\n\tbind: PropKey;\n\tsetValue: SetValue< T >;\n\tvalue: T;\n\tpropType: P;\n\tplaceholder?: T;\n\tpath: PropKey[];\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nconst PropKeyContext = createContext< PropKeyContextValue< PropValue, PropType > | null >( null );\n\ntype PropKeyProviderProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const PropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst { propType } = usePropContext();\n\n\tif ( ! propType ) {\n\t\tthrow new MissingPropTypeError( { context: { bind } } );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\treturn <ArrayPropKeyProvider bind={ bind }>{ children }</ArrayPropKeyProvider>;\n\t}\n\n\tif ( propType.kind === 'object' ) {\n\t\treturn <ObjectPropKeyProvider bind={ bind }>{ children }</ObjectPropKeyProvider>;\n\t}\n\n\tthrow new UnsupportedParentError( { context: { propType } } );\n};\n\nconst ObjectPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ObjectPropValue[ 'value' ], ObjectPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue: SetValue< PropValue > = ( value, options, meta ) => {\n\t\tconst newValue = {\n\t\t\t...context.value,\n\t\t\t[ bind ]: value,\n\t\t};\n\n\t\treturn context?.setValue( newValue, options, { ...meta, bind } );\n\t};\n\n\tconst value = context.value?.[ bind ];\n\tconst placeholder = context.placeholder?.[ bind ];\n\n\tconst propType = context.propType.shape[ bind ];\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, placeholder, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nconst ArrayPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ArrayPropValue[ 'value' ], ArrayPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue = ( value: PropValue, options?: CreateOptions ) => {\n\t\tconst newValue = [ ...( context.value ?? [] ) ];\n\n\t\tnewValue[ Number( bind ) ] = value;\n\n\t\treturn context?.setValue( newValue, options, { bind } );\n\t};\n\n\tconst value = context.value?.[ Number( bind ) ];\n\n\tconst propType = context.propType.item_prop_type;\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nexport const usePropKeyContext = () => {\n\tconst context = useContext( PropKeyContext );\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: { hook: 'usePropKeyContext', provider: 'PropKeyProvider' },\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { useState } from 'react';\nimport {\n\ttype CreateOptions,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropTypeUtil,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { MissingPropTypeError } from './errors';\nimport { type SetValue, type SetValueMeta } from './prop-context';\nimport { type PropKeyContextValue, usePropKeyContext } from './prop-key-context';\n\ntype UseBoundProp< TValue extends PropValue > = {\n\tbind: PropKey;\n\tsetValue: SetValue< TValue | null >;\n\tvalue: TValue;\n\tpropType: PropType;\n\tplaceholder?: TValue;\n\tpath: PropKey[];\n\trestoreValue: () => void;\n\tresetValue: () => void;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\ntype EnhancedPropKeyContextValue< T, P > = PropKeyContextValue< T, P > & {\n\tresetValue: () => void;\n};\n\nexport function useBoundProp<\n\tT extends PropValue = PropValue,\n\tP extends PropType = PropType,\n>(): EnhancedPropKeyContextValue< T, P >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil: PropTypeUtil< TKey, TValue >\n): UseBoundProp< TValue >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil?: PropTypeUtil< TKey, TValue >\n) {\n\tconst propKeyContext = usePropKeyContext();\n\n\tconst { isValid, validate, restoreValue } = useValidation( propKeyContext.propType );\n\n\tconst disabled = propKeyContext.isDisabled?.( propKeyContext.propType );\n\n\tconst resetValue = () => {\n\t\tpropKeyContext.setValue( propKeyContext.propType.initial_value ?? null );\n\t};\n\n\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn {\n\t\t\t...propKeyContext,\n\t\t\tdisabled,\n\t\t\tresetValue,\n\t\t} as EnhancedPropKeyContextValue< PropValue, PropType >;\n\t}\n\n\tfunction setValue( value: TValue | null, options: CreateOptions, meta?: SetValueMeta ) {\n\t\tif ( ! validate( value, meta?.validation ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value === null ) {\n\t\t\treturn propKeyContext?.setValue( null, options, meta );\n\t\t}\n\n\t\treturn propKeyContext?.setValue( propTypeUtil?.create( value, options ), {}, meta );\n\t}\n\n\tconst propType = resolveUnionPropType( propKeyContext.propType, propTypeUtil.key );\n\n\tconst value = propTypeUtil.extract( propKeyContext.value ?? propType.default ?? null );\n\tconst placeholder = propTypeUtil.extract( propKeyContext.placeholder ?? null );\n\n\treturn {\n\t\t...propKeyContext,\n\t\tpropType,\n\t\tsetValue,\n\t\tvalue: isValid ? value : null,\n\t\trestoreValue,\n\t\tplaceholder,\n\t\tdisabled,\n\t\tresetValue,\n\t};\n}\n\nconst useValidation = ( propType: PropType ) => {\n\tconst [ isValid, setIsValid ] = useState( true );\n\n\t// If the value does not pass the prop type validation, set the isValid state to false.\n\t// This will prevent the value from being set in the model, and its fallback will be used instead.\n\tconst validate = ( value: PropValue | null, validation?: ( value: PropValue ) => boolean ) => {\n\t\tlet valid = true;\n\n\t\tif ( propType.settings.required && value === null ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tif ( validation && ! validation( value ) ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tsetIsValid( valid );\n\n\t\treturn valid;\n\t};\n\n\tconst restoreValue = () => setIsValid( true );\n\n\treturn {\n\t\tisValid,\n\t\tsetIsValid,\n\t\tvalidate,\n\t\trestoreValue,\n\t};\n};\n\n// utils\nconst resolveUnionPropType = ( propType: PropType, key: string ): PropType => {\n\tlet resolvedPropType = propType;\n\n\tif ( propType.kind === 'union' ) {\n\t\tresolvedPropType = propType.prop_types[ key ];\n\t}\n\n\tif ( ! resolvedPropType ) {\n\t\tthrow new MissingPropTypeError( { context: { key } } );\n\t}\n\n\treturn resolvedPropType;\n};\n","import * as React from 'react';\nimport { FormLabel, type FormLabelProps } from '@elementor/ui';\n\nexport const ControlFormLabel = ( props: FormLabelProps ) => {\n\treturn <FormLabel size=\"tiny\" { ...props } />;\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { type FormLabelProps, Stack } from '@elementor/ui';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { ControlFormLabel } from './control-form-label';\n\ntype ControlLabelProps = FormLabelProps & PropsWithChildren< object >;\n\nexport const ControlLabel = ( { children, ...props }: ControlLabelProps ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel { ...props }>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type PropType } from '@elementor/editor-props';\n\nimport { useControlAdornments } from './control-adornments-context';\n\nexport function ControlAdornments( {\n\tcustomContext,\n}: {\n\tcustomContext?: {\n\t\tpath: string[];\n\t\tpropType: PropType;\n\t};\n} ) {\n\tconst items = useControlAdornments();\n\n\tif ( items?.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ items.map( ( { Adornment, id } ) => (\n\t\t\t\t<Adornment key={ id } customContext={ customContext } />\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropType } from '@elementor/editor-props';\n\nexport type AdornmentComponent = ComponentType< { customContext?: { path: string[]; propType: PropType } } >;\ntype ControlAdornmentsItem = {\n\tid: string;\n\tAdornment: AdornmentComponent;\n};\n\ntype ControlAdornmentsContext = {\n\titems?: ControlAdornmentsItem[];\n};\n\nconst Context = createContext< ControlAdornmentsContext | null >( null );\n\ntype ControlAdornmentsProviderProps = PropsWithChildren< ControlAdornmentsContext >;\n\nexport const ControlAdornmentsProvider = ( { children, items }: ControlAdornmentsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlAdornments = () => {\n\tconst context = useContext( Context );\n\n\treturn context?.items ?? [];\n};\n","import * as React from 'react';\nimport { type ComponentProps, type ComponentType } from 'react';\nimport { ErrorBoundary } from '@elementor/ui';\n\nimport { useControlReplacement } from './control-replacements';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\nconst brandSymbol = Symbol( 'control' );\n\nexport type ControlComponent< TComponent extends AnyComponentType = AnyComponentType > = TComponent & {\n\t[ brandSymbol ]: true;\n};\n\nexport function createControl< T extends AnyComponentType >( Control: T ) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst { ControlToRender, OriginalControl, isReplaced } = useControlReplacement( Control );\n\t\tconst controlProps = isReplaced ? { ...props, OriginalControl } : props;\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<ControlToRender { ...controlProps } />\n\t\t\t</ErrorBoundary>\n\t\t);\n\t} ) as ControlComponent< T >;\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from './bound-prop-context';\n\ntype ControlComponent = ComponentType< object & { OriginalControl: ComponentType } >;\nexport type ControlReplacement = {\n\tid?: string;\n\tcomponent: ControlComponent;\n\tcondition: ( { value }: ConditionArgs ) => boolean;\n};\n\ntype ConditionArgs = {\n\tvalue: PropValue;\n\tplaceholder?: PropValue;\n};\n\ntype Props = PropsWithChildren< { replacements: ControlReplacement[] } >;\n\nconst ControlReplacementContext = createContext< ControlReplacement[] >( [] );\n\nexport const ControlReplacementsProvider = ( { replacements, children }: Props ) => {\n\treturn <ControlReplacementContext.Provider value={ replacements }>{ children }</ControlReplacementContext.Provider>;\n};\n\nexport const useControlReplacement = ( OriginalComponent: ControlComponent ) => {\n\tconst { value, placeholder } = useBoundProp();\n\tconst replacements = useContext( ControlReplacementContext );\n\n\ttry {\n\t\tconst replacement = replacements.find( ( r ) => r.condition( { value, placeholder } ) );\n\n\t\treturn {\n\t\t\tControlToRender: replacement?.component ?? OriginalComponent,\n\t\t\tOriginalControl: OriginalComponent,\n\t\t\tisReplaced: !! replacement,\n\t\t};\n\t} catch {\n\t\treturn { ControlToRender: OriginalComponent, OriginalControl: OriginalComponent };\n\t}\n};\n\nexport const createControlReplacementsRegistry = () => {\n\tconst controlReplacements: ControlReplacement[] = [];\n\n\tfunction registerControlReplacement( replacement: ControlReplacement ) {\n\t\tcontrolReplacements.push( replacement );\n\t}\n\n\tfunction getControlReplacements() {\n\t\treturn controlReplacements;\n\t}\n\n\treturn { registerControlReplacement, getControlReplacements };\n};\n","import { useMutation, useQuery, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\n\nexport const UNFILTERED_FILES_UPLOAD_KEY = 'elementor_unfiltered_files_upload';\n\nconst unfilteredFilesQueryKey = {\n\tqueryKey: [ UNFILTERED_FILES_UPLOAD_KEY ],\n};\n\ntype Value = '0' | '1';\n\nexport const useUnfilteredFilesUpload = () =>\n\tuseQuery( {\n\t\t...unfilteredFilesQueryKey,\n\t\tqueryFn: (): Promise< boolean > =>\n\t\t\tapiClient.getElementorSetting< Value >( UNFILTERED_FILES_UPLOAD_KEY ).then( ( res ) => {\n\t\t\t\treturn formatResponse( res );\n\t\t\t} ),\n\t\tstaleTime: Infinity,\n\t} );\n\nexport function useUpdateUnfilteredFilesUpload() {\n\tconst queryClient = useQueryClient();\n\n\tconst mutate = useMutation( {\n\t\tmutationFn: ( { allowUnfilteredFilesUpload }: { allowUnfilteredFilesUpload: boolean } ) =>\n\t\t\tapiClient.updateElementorSetting< Value >(\n\t\t\t\tUNFILTERED_FILES_UPLOAD_KEY,\n\t\t\t\tallowUnfilteredFilesUpload ? '1' : '0'\n\t\t\t),\n\t\tonSuccess: () => queryClient.invalidateQueries( unfilteredFilesQueryKey ),\n\t} );\n\n\treturn mutate;\n}\n\nconst formatResponse = ( response: Value ): boolean => {\n\treturn Boolean( response === '1' );\n};\n","import { httpService } from '@elementor/http-client';\n\nconst ELEMENTOR_SETTING_URL = 'elementor/v1/settings';\n\ntype Response< T > = { data: { value: T }; success: boolean };\n\nexport const apiClient = {\n\tgetElementorSetting: < T >( key: string ) =>\n\t\thttpService()\n\t\t\t.get< Response< T > >( `${ ELEMENTOR_SETTING_URL }/${ key }` )\n\t\t\t.then( ( res ) => formatSettingResponse( res.data ) ),\n\tupdateElementorSetting: < T >( key: string, value: T ) =>\n\t\thttpService().put( `${ ELEMENTOR_SETTING_URL }/${ key }`, { value } ),\n};\n\nconst formatSettingResponse = < T >( response: Response< T > ) => response.data.value;\n","import * as React from 'react';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from '@elementor/ui';\nimport { type MediaType, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype ImageMediaControlProps = {\n\tmediaTypes?: MediaType[];\n};\n\nexport const ImageMediaControl = createControl( ( { mediaTypes = [ 'image' ] }: ImageMediaControlProps ) => {\n\tconst { value, setValue, propType } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes,\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Card variant=\"outlined\">\n\t\t\t\t<CardMedia image={ src } sx={ { height: propType.meta.isDynamic ? 134 : 150 } }>\n\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t<Stack justifyContent=\"center\" alignItems=\"center\" width=\"100%\" height=\"100%\">\n\t\t\t\t\t\t\t<CircularProgress />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<></>\n\t\t\t\t\t) }\n\t\t\t\t</CardMedia>\n\t\t\t\t<CardOverlay>\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'browse' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Select image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t</CardOverlay>\n\t\t\t</Card>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { FloatingActionsBar } from '@elementor/editor-ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { useControlActions } from './control-actions-context';\n\ntype ControlActionsProps = PropsWithChildren< object >;\n\nexport default function ControlActions( { children }: ControlActionsProps ) {\n\tconst { items } = useControlActions();\n\tconst { disabled } = useBoundProp();\n\n\tif ( items.length === 0 || disabled ) {\n\t\treturn children;\n\t}\n\n\tconst menuItems = items.map( ( { MenuItem, id } ) => <MenuItem key={ id } /> );\n\n\treturn <FloatingActionsBar actions={ menuItems }>{ children }</FloatingActionsBar>;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\nexport type ControlActionsItems = Array< {\n\tid: string;\n\tMenuItem: React.ComponentType;\n} >;\n\ntype ControlActionsContext = {\n\titems: ControlActionsItems;\n};\n\nconst Context = createContext< ControlActionsContext | null >( null );\n\ntype ControlActionsProviderProps = PropsWithChildren< ControlActionsContext >;\n\nexport const ControlActionsProvider = ( { children, items }: ControlActionsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlActions = () => {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useControlActions must be used within a ControlActionsProvider' );\n\t}\n\n\treturn context;\n};\n","import * as React from 'react';\nimport { stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Select, type SelectChangeEvent, type SelectProps, Typography } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype SelectControlProps = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n\tMenuProps?: SelectProps[ 'MenuProps' ];\n\tariaLabel?: string;\n};\n\nconst DEFAULT_MENU_PROPS = {\n\tMenuListProps: {\n\t\tsx: {\n\t\t\tmaxHeight: '160px',\n\t\t},\n\t},\n};\n\nexport const SelectControl = createControl(\n\t( { options, onChange, MenuProps = DEFAULT_MENU_PROPS, ariaLabel }: SelectControlProps ) => {\n\t\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\t\tconst newValue = event.target.value || null;\n\n\t\t\tonChange?.( newValue, value );\n\t\t\tsetValue( newValue );\n\t\t};\n\t\tconst isDisabled = disabled || options.length === 0;\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Select\n\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tMenuProps={ MenuProps }\n\t\t\t\t\taria-label={ ariaLabel || placeholder }\n\t\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\t\tconst findOptionByValue = ( searchValue: string | null ) =>\n\t\t\t\t\t\t\toptions.find( ( opt ) => opt.value === searchValue );\n\n\t\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\t\tif ( placeholder ) {\n\t\t\t\t\t\t\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\t\t\t\t\t\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t\t\t\t\t\t\t{ displayText }\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst option = findOptionByValue( selectedValue );\n\t\t\t\t\t\treturn option?.label || selectedValue;\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\tfullWidth\n\t\t\t\t>\n\t\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) ) }\n\t\t\t\t</Select>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { type SxProps, TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const TextControl = createControl(\n\t( {\n\t\tplaceholder,\n\t\terror,\n\t\tinputValue,\n\t\tinputDisabled,\n\t\thelperText,\n\t\tsx,\n\t\tariaLabel,\n\t}: {\n\t\tplaceholder?: string;\n\t\terror?: boolean;\n\t\tinputValue?: string;\n\t\tinputDisabled?: boolean;\n\t\thelperText?: string;\n\t\tsx?: SxProps;\n\t\tariaLabel?: string;\n\t} ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ inputDisabled ?? disabled }\n\t\t\t\t\tvalue={ inputValue ?? value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\terror={ error }\n\t\t\t\t\thelperText={ helperText }\n\t\t\t\t\tsx={ sx }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\tplaceholder?: string;\n\tariaLabel?: string;\n};\n\nexport const TextAreaControl = createControl( ( { placeholder, ariaLabel }: Props ) => {\n\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.value );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tmultiline\n\t\t\t\tfullWidth\n\t\t\t\tminRows={ 5 }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useMemo } from 'react';\nimport { type PropType, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { SizeInput } from '../components/size-control/size-input';\nimport { TextFieldPopover } from '../components/text-field-popover';\nimport { createControl } from '../create-control';\nimport { useSizeExtendedOptions } from '../hooks/use-size-extended-options';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport {\n\ttype AngleUnit,\n\tangleUnits,\n\tDEFAULT_SIZE,\n\tDEFAULT_UNIT,\n\ttype ExtendedOption,\n\tisUnitExtendedOption,\n\ttype LengthUnit,\n\tlengthUnits,\n\ttype TimeUnit,\n\ttimeUnits,\n\ttype Unit,\n} from '../utils/size-control';\n\ntype SizeValue = SizePropValue[ 'value' ];\n\ntype SizeVariant = 'length' | 'angle' | 'time';\n\ntype UnitProps< T extends readonly Unit[] > = {\n\tunits?: T;\n\tdefaultUnit?: T[ number ];\n};\n\ntype BaseSizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\textendedOptions?: ExtendedOption[];\n\tdisableCustom?: boolean;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tmin?: number;\n\tenablePropTypeUnits?: boolean;\n\tid?: string;\n\tariaLabel?: string;\n};\n\ntype LengthSizeControlProps = BaseSizeControlProps &\n\tUnitProps< LengthUnit[] > & {\n\t\tvariant: 'length';\n\t};\n\ntype AngleSizeControlProps = BaseSizeControlProps &\n\tUnitProps< AngleUnit[] > & {\n\t\tvariant: 'angle';\n\t};\n\ntype TimeSizeControlProps = BaseSizeControlProps &\n\tUnitProps< TimeUnit[] > & {\n\t\tvariant: 'time';\n\t};\n\nexport type SizeControlProps = LengthSizeControlProps | AngleSizeControlProps | TimeSizeControlProps;\n\ntype State = {\n\tnumeric: number;\n\tcustom: string;\n\tunit: Unit | ExtendedOption;\n};\n\nconst defaultSelectedUnit: Record< SizeControlProps[ 'variant' ], Unit > = {\n\tlength: 'px',\n\tangle: 'deg',\n\ttime: 'ms',\n} as const;\n\nconst defaultUnits: Record< SizeControlProps[ 'variant' ], Unit[] > = {\n\tlength: [ ...lengthUnits ] as LengthUnit[],\n\tangle: [ ...angleUnits ] as AngleUnit[],\n\ttime: [ ...timeUnits ] as TimeUnit[],\n} as const;\n\nexport const CUSTOM_SIZE_LABEL = 'fx';\n\nexport const SizeControl = createControl(\n\t( {\n\t\tvariant = 'length' as SizeControlProps[ 'variant' ],\n\t\tdefaultUnit,\n\t\tunits,\n\t\tplaceholder,\n\t\tstartIcon,\n\t\tanchorRef,\n\t\textendedOptions,\n\t\tdisableCustom,\n\t\tmin = 0,\n\t\tenablePropTypeUnits = false,\n\t\tid,\n\t\tariaLabel,\n\t}: Omit< SizeControlProps, 'variant' > & { variant?: SizeVariant } ) => {\n\t\tconst {\n\t\t\tvalue: sizeValue,\n\t\t\tsetValue: setSizeValue,\n\t\t\tdisabled,\n\t\t\trestoreValue,\n\t\t\tplaceholder: externalPlaceholder,\n\t\t\tpropType,\n\t\t} = useBoundProp( sizePropTypeUtil );\n\n\t\tconst actualDefaultUnit = defaultUnit ?? externalPlaceholder?.unit ?? defaultSelectedUnit[ variant ];\n\t\tconst activeBreakpoint = useActiveBreakpoint();\n\t\tconst actualExtendedOptions = useSizeExtendedOptions( extendedOptions || [], disableCustom ?? false );\n\t\tconst actualUnits = resolveUnits( propType, enablePropTypeUnits, variant, units, actualExtendedOptions );\n\n\t\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\t\tconst memorizedExternalState = useMemo(\n\t\t\t() => createStateFromSizeProp( sizeValue, actualDefaultUnit ),\n\t\t\t[ sizeValue, actualDefaultUnit ]\n\t\t);\n\n\t\tconst [ state, setState ] = useSyncExternalState( {\n\t\t\texternal: memorizedExternalState,\n\t\t\tsetExternal: ( newState: State | null, options, meta ) =>\n\t\t\t\tsetSizeValue( extractValueFromState( newState ), options, meta ),\n\t\t\tpersistWhen: ( newState ) => !! extractValueFromState( newState ),\n\t\t\tfallback: ( newState ) => ( {\n\t\t\t\tunit: newState?.unit ?? actualDefaultUnit,\n\t\t\t\tnumeric: newState?.numeric ?? DEFAULT_SIZE,\n\t\t\t\tcustom: newState?.custom ?? '',\n\t\t\t} ),\n\t\t} );\n\n\t\tconst { size: controlSize = DEFAULT_SIZE, unit: controlUnit = actualDefaultUnit } =\n\t\t\textractValueFromState( state, true ) || {};\n\n\t\tconst handleUnitChange = ( newUnit: Unit | ExtendedOption ) => {\n\t\t\tif ( newUnit === 'custom' ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\n\t\t\tsetState( ( prev ) => ( { ...prev, unit: newUnit } ) );\n\t\t};\n\n\t\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst size = event.target.value;\n\t\t\tconst isInputValid = event.target.validity.valid;\n\n\t\t\tif ( controlUnit === 'auto' ) {\n\t\t\t\tsetState( ( prev ) => ( { ...prev, unit: controlUnit } ) );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetState(\n\t\t\t\t( prev ) => ( {\n\t\t\t\t\t...prev,\n\t\t\t\t\t[ controlUnit === 'custom' ? 'custom' : 'numeric' ]: formatSize( size, controlUnit ),\n\t\t\t\t\tunit: controlUnit,\n\t\t\t\t} ),\n\t\t\t\tundefined,\n\t\t\t\t{ validation: () => isInputValid }\n\t\t\t);\n\t\t};\n\n\t\tconst onInputClick = ( event: React.MouseEvent ) => {\n\t\t\tif ( ( event.target as HTMLElement ).closest( 'input' ) && 'custom' === state.unit ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\t\t};\n\n\t\tconst maybeClosePopup = React.useCallback( () => {\n\t\t\tif ( popupState && popupState.isOpen ) {\n\t\t\t\tpopupState.close();\n\t\t\t}\n\t\t}, [ popupState ] );\n\n\t\tuseEffect( () => {\n\t\t\tmaybeClosePopup();\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ activeBreakpoint ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SizeInput\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tsize={ controlSize }\n\t\t\t\t\tunit={ controlUnit }\n\t\t\t\t\tunits={ [ ...actualUnits ] }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\thandleSizeChange={ handleSizeChange }\n\t\t\t\t\thandleUnitChange={ handleUnitChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tonClick={ onInputClick }\n\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\tmin={ min }\n\t\t\t\t\tid={ id }\n\t\t\t\t\tariaLabel={ ariaLabel }\n\t\t\t\t/>\n\t\t\t\t{ anchorRef?.current && popupState.isOpen && (\n\t\t\t\t\t<TextFieldPopover\n\t\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\trestoreValue={ restoreValue }\n\t\t\t\t\t\tvalue={ controlSize as string }\n\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n\nfunction resolveUnits(\n\tpropType: PropType,\n\tenablePropTypeUnits: boolean,\n\tvariant: SizeVariant,\n\texternalUnits?: Unit[],\n\tactualExtendedOptions?: ExtendedOption[]\n) {\n\tconst fallback = [ ...defaultUnits[ variant ] ];\n\n\tif ( ! enablePropTypeUnits ) {\n\t\treturn [ ...( externalUnits ?? fallback ), ...( actualExtendedOptions || [] ) ];\n\t}\n\n\treturn ( propType.settings?.available_units as Unit[] ) ?? fallback;\n}\n\nfunction formatSize< TSize extends string | number >( size: TSize, unit: Unit | ExtendedOption ): TSize {\n\tif ( isUnitExtendedOption( unit ) ) {\n\t\treturn unit === 'auto' ? ( '' as TSize ) : ( String( size ?? '' ) as TSize );\n\t}\n\n\treturn size || size === 0 ? ( Number( size ) as TSize ) : ( NaN as TSize );\n}\n\nfunction createStateFromSizeProp(\n\tsizeValue: SizeValue | null,\n\tdefaultUnit: Unit | ExtendedOption,\n\tdefaultSize: string | number = '',\n\tcustomState: string = ''\n): State {\n\tconst unit = sizeValue?.unit ?? defaultUnit;\n\tconst size = sizeValue?.size ?? defaultSize;\n\n\treturn {\n\t\tnumeric:\n\t\t\t! isUnitExtendedOption( unit ) && ! isNaN( Number( size ) ) && ( size || size === 0 )\n\t\t\t\t? Number( size )\n\t\t\t\t: DEFAULT_SIZE,\n\t\tcustom: unit === 'custom' ? String( size ) : customState,\n\t\tunit,\n\t};\n}\n\nfunction extractValueFromState( state: State | null, allowEmpty: boolean = false ): SizeValue | null {\n\tif ( ! state ) {\n\t\treturn null;\n\t}\n\n\tif ( ! state?.unit ) {\n\t\treturn { size: DEFAULT_SIZE, unit: DEFAULT_UNIT };\n\t}\n\n\tconst { unit } = state;\n\n\tif ( unit === 'auto' ) {\n\t\treturn { size: '', unit };\n\t}\n\n\tif ( unit === 'custom' ) {\n\t\treturn { size: state.custom ?? '', unit: 'custom' };\n\t}\n\n\tconst numeric = state.numeric;\n\n\tif ( ! allowEmpty && ( numeric === undefined || numeric === null || Number.isNaN( numeric ) ) ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tsize: numeric,\n\t\tunit,\n\t};\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { Box, InputAdornment, type PopupState } from '@elementor/ui';\n\nimport ControlActions from '../../control-actions/control-actions';\nimport { type ExtendedOption, isUnitExtendedOption, type Unit } from '../../utils/size-control';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../size-control/text-field-inner-selection';\n\nconst RESTRICTED_KEYBOARD_SHORTCUT_UNITS = [ 'auto' ];\n\ntype SizeInputProps = {\n\tunit: Unit | ExtendedOption;\n\tsize: number | string;\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits: ( Unit | ExtendedOption )[];\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonFocus?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonClick?: ( event: React.MouseEvent< HTMLInputElement > ) => void;\n\thandleUnitChange: ( unit: Unit | ExtendedOption ) => void;\n\thandleSizeChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tpopupState: PopupState;\n\tdisabled?: boolean;\n\tmin?: number;\n\tid?: string;\n\tariaLabel?: string;\n};\n\nexport const SizeInput = ( {\n\tunits,\n\thandleUnitChange,\n\thandleSizeChange,\n\tplaceholder,\n\tstartIcon,\n\tonBlur,\n\tonFocus,\n\tonClick,\n\tsize,\n\tunit,\n\tpopupState,\n\tdisabled,\n\tmin,\n\tid,\n\tariaLabel,\n}: SizeInputProps ) => {\n\tconst unitInputBufferRef = useRef( '' );\n\tconst inputType = isUnitExtendedOption( unit ) ? 'text' : 'number';\n\tconst inputValue = ! isUnitExtendedOption( unit ) && Number.isNaN( size ) ? '' : size ?? '';\n\n\tconst handleKeyUp = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\n\t\tif ( ! /^[a-zA-Z%]$/.test( key ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst newChar = key.toLowerCase();\n\t\tconst updatedBuffer = ( unitInputBufferRef.current + newChar ).slice( -3 );\n\t\tunitInputBufferRef.current = updatedBuffer;\n\n\t\tconst matchedUnit =\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.includes( updatedBuffer ) ) ||\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.startsWith( newChar ) ) ||\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.includes( newChar ) );\n\n\t\tif ( matchedUnit ) {\n\t\t\thandleUnitChange( matchedUnit );\n\t\t}\n\t};\n\n\tconst popupAttributes = {\n\t\t'aria-controls': popupState.isOpen ? popupState.popupId : undefined,\n\t\t'aria-haspopup': true,\n\t};\n\n\tconst menuItemsAttributes = units.includes( 'custom' )\n\t\t? {\n\t\t\t\tcustom: popupAttributes,\n\t\t }\n\t\t: undefined;\n\n\tconst alternativeOptionLabels = {\n\t\tcustom: <MathFunctionIcon fontSize=\"tiny\" />,\n\t};\n\n\tconst InputProps = {\n\t\t...popupAttributes,\n\t\treadOnly: isUnitExtendedOption( unit ),\n\t\tautoComplete: 'off',\n\t\tonClick,\n\t\tonFocus,\n\t\tstartAdornment: startIcon ? (\n\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t{ startIcon }\n\t\t\t</InputAdornment>\n\t\t) : undefined,\n\t\tendAdornment: (\n\t\t\t<SelectionEndAdornment\n\t\t\t\tdisabled={ disabled }\n\t\t\t\toptions={ units }\n\t\t\t\tonClick={ handleUnitChange }\n\t\t\t\tvalue={ unit }\n\t\t\t\talternativeOptionLabels={ alternativeOptionLabels }\n\t\t\t\tmenuItemsAttributes={ menuItemsAttributes }\n\t\t\t/>\n\t\t),\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Box>\n\t\t\t\t<TextFieldInnerSelection\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\ttype={ inputType }\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\tonKeyUp={ handleKeyUp }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tInputProps={ InputProps }\n\t\t\t\t\tinputProps={ { min, step: 'any', 'aria-label': ariaLabel } }\n\t\t\t\t\tisPopoverOpen={ popupState.isOpen }\n\t\t\t\t\tid={ id }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</ControlActions>\n\t);\n};\n","export const lengthUnits = [ 'px', '%', 'em', 'rem', 'vw', 'vh', 'ch' ] as const;\nexport const angleUnits = [ 'deg', 'rad', 'grad', 'turn' ] as const;\nexport const timeUnits = [ 's', 'ms' ] as const;\nconst defaultExtendedOptions = [ 'auto', 'custom' ] as const;\n\nexport const DEFAULT_UNIT = 'px';\nexport const DEFAULT_SIZE = NaN;\n\nexport type LengthUnit = ( typeof lengthUnits )[ number ];\nexport type AngleUnit = ( typeof angleUnits )[ number ];\nexport type TimeUnit = ( typeof timeUnits )[ number ];\nexport type ExtendedOption = ( typeof defaultExtendedOptions )[ number ];\n\nexport type Unit = LengthUnit | AngleUnit | TimeUnit;\n\nexport function isUnitExtendedOption( unit: Unit | ExtendedOption ): unit is ExtendedOption {\n\treturn defaultExtendedOptions.includes( unit as ExtendedOption );\n}\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { type PropValue, sizePropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tButton,\n\tInputAdornment,\n\tMenu,\n\tstyled,\n\ttype TextFieldProps,\n\tusePopupState,\n} from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { DEFAULT_UNIT } from '../../utils/size-control';\nimport { NumberInput } from '../number-input';\n\ntype TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tInputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n\tinputProps?: TextFieldProps[ 'inputProps' ];\n\tdisabled?: boolean;\n\tisPopoverOpen?: boolean;\n\tid?: string;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t(\n\t\t{\n\t\t\tplaceholder,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tonBlur,\n\t\t\tonKeyDown,\n\t\t\tonKeyUp,\n\t\t\tInputProps,\n\t\t\tinputProps,\n\t\t\tdisabled,\n\t\t\tisPopoverOpen,\n\t\t\tid,\n\t\t}: TextFieldInnerSelectionProps,\n\t\tref\n\t) => {\n\t\tconst { placeholder: boundPropPlaceholder } = useBoundProp( sizePropTypeUtil );\n\n\t\tconst getCursorStyle = () => ( {\n\t\t\tinput: { cursor: InputProps.readOnly ? 'default !important' : undefined },\n\t\t} );\n\n\t\treturn (\n\t\t\t<NumberInput\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ getCursorStyle() }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonInput={ onChange }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonKeyUp={ onKeyUp }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tfocused={ isPopoverOpen ? true : undefined }\n\t\t\t\tplaceholder={ placeholder ?? ( String( boundPropPlaceholder?.size ?? '' ) || undefined ) }\n\t\t\t\tInputProps={ InputProps }\n\t\t\t\tinputProps={ inputProps }\n\t\t\t\tid={ id }\n\t\t\t/>\n\t\t);\n\t}\n);\n\ntype SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n\talternativeOptionLabels?: { [ key in T ]?: React.ReactNode };\n\tmenuItemsAttributes?: { [ key in T ]?: Record< string, unknown > };\n\tdisabled?: boolean;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\talternativeOptionLabels = {} as Record< T, React.ReactNode >,\n\tonClick,\n\tvalue,\n\tmenuItemsAttributes = {},\n\tdisabled,\n}: SelectionEndAdornmentProps< T > ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\t\tpopupState.close();\n\t};\n\n\tconst { placeholder, showPrimaryColor } = useUnitPlaceholder( value );\n\tconst itemStyles = {\n\t\tdisplay: 'flex',\n\t\tflexDirection: 'column',\n\t\tjustifyContent: 'center',\n\t};\n\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<StyledButton\n\t\t\t\tisPrimaryColor={ showPrimaryColor }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ placeholder ?? alternativeOptionLabels[ value ] ?? value }\n\t\t\t</StyledButton>\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\tkey={ option }\n\t\t\t\t\t\tonClick={ () => handleMenuItemClick( index ) }\n\t\t\t\t\t\t{ ...menuItemsAttributes?.[ option ] }\n\t\t\t\t\t\tprimaryTypographyProps={ {\n\t\t\t\t\t\t\tvariant: 'caption',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t...itemStyles,\n\t\t\t\t\t\t\t\tlineHeight: '1',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuItemTextProps={ {\n\t\t\t\t\t\t\tsx: itemStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ alternativeOptionLabels[ option ] ?? option.toUpperCase() }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\n};\n\nfunction useUnitPlaceholder( value: string ) {\n\tconst { value: externalValue, placeholder } = useBoundProp( sizePropTypeUtil );\n\tconst size = externalValue?.size;\n\tconst unit = externalValue?.unit;\n\n\tconst isCustomUnitWithSize = value === 'custom' && Boolean( size );\n\tconst isAutoUnit = value === 'auto';\n\tconst showPrimaryColor = isAutoUnit || isCustomUnitWithSize || Boolean( size );\n\n\tif ( ! placeholder ) {\n\t\treturn {\n\t\t\tplaceholder: null,\n\t\t\tshowPrimaryColor,\n\t\t};\n\t}\n\n\tconst isMissingUnit = ! unit;\n\tconst showPlaceholder = isMissingUnit && value === DEFAULT_UNIT;\n\n\treturn {\n\t\tplaceholder: showPlaceholder ? placeholder.unit : undefined,\n\t\tshowPrimaryColor,\n\t};\n}\n\nconst StyledButton = styled( Button, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPrimaryColor',\n} )( ( { isPrimaryColor, theme } ) => ( {\n\tcolor: isPrimaryColor ? theme.palette.text.primary : theme.palette.text.tertiary,\n\tfont: 'inherit',\n\tminWidth: 'initial',\n\ttextTransform: 'uppercase',\n} ) );\n","import * as React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { TextField, type TextFieldProps } from '@elementor/ui';\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+' ];\n\nexport const NumberInput = forwardRef( ( props: TextFieldProps, ref ) => {\n\tconst [ key, setKey ] = useState< number >( 0 );\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tblockRestrictedKeys( event, props.inputProps?.min );\n\n\t\tprops.onKeyDown?.( event );\n\t};\n\n\tconst handleBlur = ( event: React.FocusEvent< HTMLInputElement > ) => {\n\t\tprops.onBlur?.( event );\n\n\t\tconst { valid } = event.target.validity;\n\n\t\t// HTML number input quirk: invalid input (e.g. \"-9-\") returns value=\"\" but displays \"-9-\" to user,\n\t\t// so when we revert to last valid value we must re-mount the component to actually display it.\n\t\tif ( ! valid ) {\n\t\t\tsetKey( ( prev ) => prev + 1 );\n\t\t}\n\t};\n\n\treturn <TextField { ...props } ref={ ref } key={ key } onKeyDown={ handleKeyDown } onBlur={ handleBlur } />;\n} );\n\nfunction blockRestrictedKeys( event: React.KeyboardEvent< HTMLInputElement >, min: number ) {\n\tconst restrictedInputKeys = [ ...RESTRICTED_INPUT_KEYS ];\n\n\tif ( min >= 0 ) {\n\t\trestrictedInputKeys.push( '-' );\n\t}\n\n\tif ( restrictedInputKeys.includes( event.key ) ) {\n\t\tevent.preventDefault();\n\t}\n}\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n};\n\nconst SIZE = 'tiny';\n\nexport const TextFieldPopover = ( props: Props ) => {\n\tconst { popupState, restoreValue, anchorRef, value, onChange } = props;\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => {\n\t\t\t\tif ( inputRef.current ) {\n\t\t\t\t\tinputRef.current.focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\twidth: anchorRef.current?.offsetWidth + 'px',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'CSS function', 'elementor' ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t\ticon={ <MathFunctionIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<TextField\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tfullWidth\n\t\t\t\tinputProps={ {\n\t\t\t\t\tref: inputRef,\n\t\t\t\t} }\n\t\t\t\tsx={ { pt: 0, pr: 1.5, pb: 1.5, pl: 1.5 } }\n\t\t\t/>\n\t\t</Popover>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type ExtendedOption } from '@elementor/editor-controls';\n\nexport function useSizeExtendedOptions( options: ExtendedOption[], disableCustom: boolean ) {\n\treturn useMemo( () => {\n\t\tconst extendedOptions = [ ...options ];\n\n\t\tif ( ! disableCustom && ! extendedOptions.includes( 'custom' ) ) {\n\t\t\textendedOptions.push( 'custom' );\n\t\t} else if ( options.includes( 'custom' ) ) {\n\t\t\textendedOptions.splice( extendedOptions.indexOf( 'custom' ), 1 );\n\t\t}\n\n\t\treturn extendedOptions;\n\t}, [ options, disableCustom ] );\n}\n","import { useEffect, useState } from 'react';\nimport { type CreateOptions } from '@elementor/editor-props';\n\nimport { type SetValueMeta } from '../bound-prop-context';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | null;\n\tsetExternal: ( value: TValue | null, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\tpersistWhen: ( value: TValue | null ) => boolean;\n\tfallback: ( value: TValue | null ) => TValue;\n};\n\nexport const useSyncExternalState = < TValue, >( {\n\texternal,\n\tsetExternal,\n\tpersistWhen,\n\tfallback,\n}: UseInternalStateOptions< TValue > ) => {\n\tfunction toExternal( internalValue: TValue | null ) {\n\t\tif ( persistWhen( internalValue ) ) {\n\t\t\treturn internalValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction toInternal( externalValue: TValue | null, internalValue: TValue | null ) {\n\t\tif ( ! externalValue ) {\n\t\t\treturn fallback( internalValue );\n\t\t}\n\n\t\treturn externalValue;\n\t}\n\n\tconst [ internal, setInternal ] = useState< TValue >( toInternal( external, null ) );\n\n\tuseEffect( () => {\n\t\tsetInternal( ( prevInternal ) => toInternal( external, prevInternal ) );\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ external ] );\n\n\ttype SetterFunc = ( value: TValue ) => TValue;\n\n\tconst setInternalValue = ( setter: SetterFunc | TValue, options?: CreateOptions, meta?: SetValueMeta ) => {\n\t\tconst setterFn = ( typeof setter === 'function' ? setter : () => setter ) as SetterFunc;\n\t\tconst updated = setterFn( internal );\n\n\t\tsetInternal( updated );\n\t\tsetExternal( toExternal( updated ), options, meta );\n\t};\n\n\treturn [ internal, setInternalValue ] as const;\n};\n","import * as React from 'react';\nimport { forwardRef, useRef } from 'react';\nimport { strokePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SectionContent } from '../components/section-content';\nimport { createControl } from '../create-control';\nimport { type LengthUnit } from '../utils/size-control';\nimport { ColorControl } from './color-control';\nimport { SizeControl } from './size-control';\n\ntype StrokeProps = {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n};\n\nconst units: LengthUnit[] = [ 'px', 'em', 'rem' ];\n\nexport const StrokeControl = createControl( () => {\n\tconst propContext = useBoundProp( strokePropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<SectionContent>\n\t\t\t\t<Control bind=\"width\" label={ __( 'Stroke width', 'elementor' ) } ref={ rowRef }>\n\t\t\t\t\t<SizeControl units={ units } anchorRef={ rowRef } />\n\t\t\t\t</Control>\n\t\t\t\t<Control bind=\"color\" label={ __( 'Stroke color', 'elementor' ) }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Control>\n\t\t\t</SectionContent>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = forwardRef( ( { bind, label, children }: StrokeProps, ref ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ ref }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n) );\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 = 0.5, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { colorPropTypeUtil, type PropTypeUtil } from '@elementor/editor-props';\nimport { UnstableColorField, type UnstableColorFieldProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = Partial< Omit< UnstableColorFieldProps, 'value' | 'onChange' > > & {\n\tpropTypeUtil?: PropTypeUtil< string, string >;\n\tanchorEl?: HTMLElement | null;\n\tid?: string;\n};\n\nexport const ColorControl = createControl(\n\t( { propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, id, ...props }: Props ) => {\n\t\tconst { value, setValue, placeholder: boundPropPlaceholder, disabled } = useBoundProp( propTypeUtil );\n\n\t\tconst placeholder = props.placeholder ?? boundPropPlaceholder;\n\n\t\tconst handleChange = ( selectedColor: string ) => {\n\t\t\tsetValue( selectedColor || null );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableColorField\n\t\t\t\t\tid={ id }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tplaceholder={ placeholder ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t...slotProps,\n\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\tanchorEl,\n\t\t\t\t\t\t\tanchorOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransformOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tslotProps: {\n\t\t\t\t\t\t\t\tcolorIndicator: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcolorBox: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\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} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { boxShadowPropTypeUtil, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { FormLabel, Grid, styled, type SxProps, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../components/control-repeater';\nimport { DisableItemAction } from '../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../components/control-repeater/actions/remove-item-action';\nimport { useRepeaterContext } from '../components/control-repeater/context/repeater-context';\nimport { EditItemPopover } from '../components/control-repeater/items/edit-item-popover';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { RepeaterHeader } from '../components/repeater/repeater-header';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SelectControl } from './select-control';\nimport { CUSTOM_SIZE_LABEL, SizeControl } from './size-control';\n\nexport const BoxShadowRepeaterControl = createControl( () => {\n\tconst { propType, value, setValue, disabled } = useBoundProp( boxShadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue } isDisabled={ () => disabled }>\n\t\t\t<ControlRepeater initial={ initialShadow } propTypeUtil={ boxShadowPropTypeUtil }>\n\t\t\t\t<RepeaterHeader label={ __( 'Box shadow', 'elementor' ) }>\n\t\t\t\t\t<TooltipAddItemAction newItemIndex={ 0 } disabled={ disabled } ariaLabel={ 'Box shadow' } />\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\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</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<Content />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\theight: '1rem',\n\twidth: '1rem',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color?.value } />\n);\n\nconst Content = () => {\n\tconst context = useBoundProp( shadowPropTypeUtil );\n\tconst rowRef: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\tconst { rowRef: anchorEl } = useRepeaterContext();\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Control bind=\"color\" label={ __( 'Color', 'elementor' ) }>\n\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"position\" label={ __( 'Position', 'elementor' ) } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t{ label: __( 'Inset', 'elementor' ), value: 'inset' },\n\t\t\t\t\t\t\t\t{ label: __( 'Outset', 'elementor' ), value: null },\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 0 ] }>\n\t\t\t\t\t<Control bind=\"hOffset\" label={ __( 'Horizontal', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"vOffset\" label={ __( 'Vertical', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 1 ] }>\n\t\t\t\t\t<Control bind=\"blur\" label={ __( 'Blur', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"spread\" label={ __( 'Spread', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PopoverContent>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tlabel,\n\tbind,\n\tchildren,\n\tsx,\n}: {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tsx?: SxProps< Theme >;\n} ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid item xs={ 6 } sx={ sx }>\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<FormLabel size=\"tiny\">{ label }</FormLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n);\n\nconst ItemLabel = ( { value }: { value: ShadowPropValue } ) => {\n\tconst { position, hOffset, vOffset, blur, spread } = value.value;\n\n\tconst { size: blurSize = '', unit: blurUnit = '' } = blur?.value || {};\n\tconst { size: spreadSize = '', unit: spreadUnit = '' } = spread?.value || {};\n\tconst { size: hOffsetSize = 'unset', unit: hOffsetUnit = '' } = hOffset?.value || {};\n\tconst { size: vOffsetSize = 'unset', unit: vOffsetUnit = '' } = vOffset?.value || {};\n\tconst positionLabel = position?.value || 'outset';\n\n\tconst sizes = [\n\t\t[ hOffsetSize, hOffsetUnit ],\n\t\t[ vOffsetSize, vOffsetUnit ],\n\t\t[ blurSize, blurUnit ],\n\t\t[ spreadSize, spreadUnit ],\n\t]\n\t\t.map( ( [ size, unit ] ) => {\n\t\t\tif ( unit !== 'custom' ) {\n\t\t\t\treturn size + unit;\n\t\t\t}\n\n\t\t\treturn ! size ? CUSTOM_SIZE_LABEL : size;\n\t\t} )\n\t\t.join( ' ' );\n\n\treturn (\n\t\t<span style={ { textTransform: 'capitalize' } }>\n\t\t\t{ positionLabel }: { sizes }\n\t\t</span>\n\t);\n};\n\nconst initialShadow: ShadowPropValue = {\n\t$$type: 'shadow',\n\tvalue: {\n\t\thOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tvOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tblur: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 10 },\n\t\t},\n\t\tspread: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: 'rgba(0, 0, 0, 1)',\n\t\t},\n\t\tposition: null,\n\t},\n};\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { Box, IconButton, Infotip } from '@elementor/ui';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport type TooltipAddItemActionProps = {\n\tdisabled?: boolean;\n\tenableTooltip?: boolean;\n\ttooltipContent?: React.ReactNode;\n\tnewItemIndex?: number;\n\tariaLabel?: string;\n};\n\nexport const TooltipAddItemAction = ( {\n\tdisabled = false,\n\tenableTooltip = false,\n\ttooltipContent = null,\n\tnewItemIndex,\n\tariaLabel,\n}: TooltipAddItemActionProps ) => {\n\tconst { addItem } = useRepeaterContext();\n\n\tconst onClick = ( ev: React.MouseEvent ) => addItem( ev, { index: newItemIndex } );\n\n\treturn (\n\t\t<ConditionalToolTip content={ tooltipContent } enable={ enableTooltip }>\n\t\t\t<Box component=\"span\" sx={ { cursor: disabled ? 'not-allowed' : 'pointer' } }>\n\t\t\t\t<IconButton\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t/* Translators: %s: Aria label. */\n\t\t\t\t\taria-label={ sprintf( __( 'Add %s item', 'elementor' ), ariaLabel?.toLowerCase() ) }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Box>\n\t\t</ConditionalToolTip>\n\t);\n};\n\nconst ConditionalToolTip = ( {\n\tchildren,\n\tenable,\n\tcontent,\n}: React.PropsWithChildren< {\n\tcontent?: React.ReactNode;\n\tenable: boolean;\n} > ) =>\n\tenable && content ? (\n\t\t<Infotip placement=\"right\" color=\"secondary\" content={ content }>\n\t\t\t{ children }\n\t\t</Infotip>\n\t) : (\n\t\tchildren\n\t);\n","import * as React from 'react';\nimport { createContext, useMemo, useState } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\nimport { type PopupState, usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context/use-bound-prop';\nimport { useSyncExternalState } from '../../../hooks/use-sync-external-state';\nimport { eventBus } from '../../../services/event-bus';\nimport { type Item, type RepeatablePropValue } from '../types';\nimport { ItemContext } from './item-context';\n\ntype SetterFn< T > = ( prevItems: T ) => T;\n\ntype AddItem< T > = { item?: T; index?: number };\n\ntype ItemWithKey< T > = { key: number; item: T };\n\ntype RepeaterContextType< T extends RepeatablePropValue > = {\n\tisOpen: boolean;\n\topenItemIndex: number;\n\tsetOpenItemIndex: ( key: number ) => void;\n\titems: ItemWithKey< Item< T > >[];\n\tsetItems: ( items: ItemWithKey< T >[] ) => void;\n\tpopoverState: PopupState;\n\tinitial: T;\n\taddItem: ( ev: React.MouseEvent, config?: AddItem< T > ) => void;\n\tupdateItem: ( item: T, index: number ) => void;\n\tremoveItem: ( index: number ) => void;\n\trowRef: HTMLElement | null;\n\tsetRowRef: ( ref: HTMLElement | null | SetterFn< HTMLElement | null > ) => void;\n\tisItemDisabled: ( index: number ) => boolean;\n};\n\nconst RepeaterContext = createContext< RepeaterContextType< RepeatablePropValue > | null >( null );\n\nexport const EMPTY_OPEN_ITEM = -1;\n\nexport const useRepeaterContext = () => {\n\tconst context = React.useContext( RepeaterContext );\n\tconst itemContext = React.useContext( ItemContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeaterContext must be used within a RepeaterContextProvider' );\n\t}\n\n\treturn { ...context, ...itemContext };\n};\n\nexport const RepeaterContextProvider = < T extends RepeatablePropValue = RepeatablePropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisItemDisabled = () => false,\n}: React.PropsWithChildren< {\n\tinitial: T;\n\tpropTypeUtil: PropTypeUtil< string, T[] >;\n\tisSortable?: boolean;\n\tisItemDisabled?: ( item: Item< T > ) => boolean;\n} > ) => {\n\tconst { value: repeaterValues, setValue: setRepeaterValues } = useBoundProp( propTypeUtil );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\tfallback: () => [] as T[],\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( () => {\n\t\treturn items?.map( () => generateUniqueKey() ) ?? [];\n\t} );\n\n\tReact.useEffect( () => {\n\t\tconst nextLength = items?.length ?? 0;\n\n\t\tsetUniqueKeys( ( prev ) => {\n\t\t\tconst prevLength = prev.length;\n\n\t\t\tif ( prevLength === nextLength ) {\n\t\t\t\treturn prev;\n\t\t\t}\n\n\t\t\tif ( prevLength > nextLength ) {\n\t\t\t\treturn prev.slice( 0, nextLength );\n\t\t\t}\n\n\t\t\treturn [ ...prev, ...Array.from( { length: nextLength - prevLength }, generateUniqueKey ) ];\n\t\t} );\n\t}, [ items?.length ] );\n\n\tconst itemsWithKeys = useMemo(\n\t\t() =>\n\t\t\tuniqueKeys\n\t\t\t\t.map( ( key, index ) => ( {\n\t\t\t\t\tkey,\n\t\t\t\t\titem: items[ index ],\n\t\t\t\t} ) )\n\t\t\t\t.filter( ( { item } ) => item !== undefined ),\n\t\t[ uniqueKeys, items ]\n\t);\n\n\tconst handleSetItems = ( newItemsWithKeys: ItemWithKey< T >[] ) => {\n\t\tsetItems( newItemsWithKeys.map( ( { item } ) => item ) );\n\t};\n\n\tconst [ openItemIndex, setOpenItemIndex ] = useState( EMPTY_OPEN_ITEM );\n\tconst [ rowRef, setRowRef ] = useState< HTMLElement | null >( null );\n\n\tconst isOpen = openItemIndex !== EMPTY_OPEN_ITEM;\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst addItem = ( ev: React.MouseEvent, config?: AddItem< T > ) => {\n\t\tconst item = config?.item ?? { ...initial };\n\t\tconst newIndex = config?.index ?? items.length;\n\t\tconst newKey = generateUniqueKey();\n\t\tconst newItems = [ ...items ];\n\n\t\tnewItems.splice( newIndex, 0, item );\n\t\tsetItems( newItems );\n\n\t\tsetUniqueKeys( [ ...uniqueKeys.slice( 0, newIndex ), newKey, ...uniqueKeys.slice( newIndex ) ] );\n\n\t\tsetOpenItemIndex( newIndex );\n\t\tpopoverState.open( rowRef ?? ev );\n\n\t\teventBus.emit( `${ propTypeUtil.key }-item-added`, {\n\t\t\titemValue: initial.value,\n\t\t} );\n\t};\n\n\tconst removeItem = ( index: number ) => {\n\t\tconst itemToRemove = items[ index ];\n\n\t\tsetItems( items.filter( ( _, pos ) => pos !== index ) );\n\t\tsetUniqueKeys( uniqueKeys.filter( ( _, pos ) => pos !== index ) );\n\n\t\teventBus.emit( `${ propTypeUtil.key }-item-removed`, {\n\t\t\titemValue: itemToRemove?.value,\n\t\t} );\n\t};\n\n\tconst updateItem = ( updatedItem: T, index: number ) => {\n\t\tconst newItems = [ ...items.slice( 0, index ), updatedItem, ...items.slice( index + 1 ) ];\n\t\tsetItems( newItems );\n\t};\n\n\treturn (\n\t\t<RepeaterContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tisOpen,\n\t\t\t\topenItemIndex,\n\t\t\t\tsetOpenItemIndex,\n\t\t\t\titems: ( itemsWithKeys ?? [] ) as RepeaterContextType< T >[ 'items' ],\n\t\t\t\tsetItems: handleSetItems as RepeaterContextType< RepeatablePropValue >[ 'setItems' ],\n\t\t\t\tpopoverState,\n\t\t\t\tinitial,\n\t\t\t\tupdateItem: updateItem as RepeaterContextType< RepeatablePropValue >[ 'updateItem' ],\n\t\t\t\taddItem: addItem as RepeaterContextType< RepeatablePropValue >[ 'addItem' ],\n\t\t\t\tremoveItem,\n\t\t\t\trowRef,\n\t\t\t\tsetRowRef,\n\t\t\t\tisItemDisabled: ( index: number ) => isItemDisabled( itemsWithKeys[ index ].item ),\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</RepeaterContext.Provider>\n\t);\n};\n\nconst generateUniqueKey = () => {\n\treturn Date.now() + Math.floor( Math.random() * 1000000 );\n};\n","class EventBus {\n\tprivate listeners = new Map< string, Set< ( data?: unknown ) => void > >();\n\n\tsubscribe( eventName: string, callback: ( data?: unknown ) => void ) {\n\t\tif ( ! this.listeners.has( eventName ) ) {\n\t\t\tthis.listeners.set( eventName, new Set() );\n\t\t}\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( eventListeners ) {\n\t\t\teventListeners.add( callback );\n\t\t}\n\t}\n\n\tunsubscribe( eventName: string, callback: ( data?: unknown ) => void ) {\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( ! eventListeners ) {\n\t\t\treturn;\n\t\t}\n\n\t\teventListeners.delete( callback );\n\t\tif ( eventListeners.size === 0 ) {\n\t\t\tthis.listeners.delete( eventName );\n\t\t}\n\t}\n\n\temit( eventName: string, data?: unknown ) {\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( eventListeners ) {\n\t\t\teventListeners.forEach( ( callback ) => callback( data ) );\n\t\t}\n\t}\n\n\tclearAll(): void {\n\t\tthis.listeners.clear();\n\t}\n}\n\nexport const eventBus = new EventBus();\n","import { createContext } from 'react';\n\nimport { type Item, type RepeatablePropValue } from '../types';\n\nexport const ItemContext = createContext< { index: number; value: Item< RepeatablePropValue > } >( {\n\tindex: -1,\n\tvalue: {} as Item< RepeatablePropValue >,\n} );\n","import * as React from 'react';\n\nimport { SortableItem, SortableProvider } from '../../repeater/sortable';\nimport { ItemContext } from '../context/item-context';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { type Item, type RepeatablePropValue } from '../types';\n\nexport const ItemsContainer = < T extends RepeatablePropValue >( {\n\tisSortable = true,\n\tchildren,\n}: React.PropsWithChildren< {\n\tisSortable?: boolean;\n} > ) => {\n\tconst { items, setItems } = useRepeaterContext();\n\tconst keys = items.map( ( { key } ) => key );\n\n\tif ( ! children ) {\n\t\treturn null;\n\t}\n\n\tconst onChangeOrder = ( newKeys: number[] ) => {\n\t\tsetItems(\n\t\t\tnewKeys.map( ( key ) => {\n\t\t\t\tconst index = items.findIndex( ( item ) => item.key === key );\n\n\t\t\t\treturn items[ index ];\n\t\t\t} )\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SortableProvider value={ keys } onChange={ onChangeOrder }>\n\t\t\t\t{ keys.map( ( key: number, index: number ) => {\n\t\t\t\t\tconst value = items[ index ].item as Item< T >;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t<ItemContext.Provider value={ { index, value } }>{ children }</ItemContext.Provider>\n\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</SortableProvider>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tDivider,\n\tList,\n\tListItem,\n\tstyled,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemProps,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n\ttype UnstableSortableProviderProps,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const SortableProvider = < T extends string | number >( props: UnstableSortableProviderProps< T > ) => {\n\treturn (\n\t\t<List sx={ { p: 0, my: -0.5, mx: 0 } }>\n\t\t\t<UnstableSortableProvider restrictAxis disableDragOverlay={ false } variant={ 'static' } { ...props } />\n\t\t</List>\n\t);\n};\n\ntype SortableItemProps = {\n\tid: UnstableSortableItemProps[ 'id' ];\n\tchildren: React.ReactNode;\n\tdisabled?: boolean;\n};\n\nexport const SortableItem = ( { id, children, disabled }: SortableItemProps ): React.ReactNode => {\n\treturn (\n\t\t<UnstableSortableItem\n\t\t\tid={ id }\n\t\t\tdisabled={ disabled }\n\t\t\trender={ ( {\n\t\t\t\titemProps,\n\t\t\t\ttriggerProps,\n\t\t\t\titemStyle,\n\t\t\t\ttriggerStyle,\n\t\t\t\tshowDropIndication,\n\t\t\t\tdropIndicationStyle,\n\t\t\t}: UnstableSortableItemRenderProps ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StyledListItem { ...itemProps } style={ itemStyle } tabIndex={ -1 }>\n\t\t\t\t\t\t{ ! disabled && <SortableTrigger { ...triggerProps } style={ triggerStyle } /> }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t{ showDropIndication && <StyledDivider style={ dropIndicationStyle } /> }\n\t\t\t\t\t</StyledListItem>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst StyledListItem = styled( ListItem )`\n\tposition: relative;\n\tmargin-inline: 0px;\n\tpadding-inline: 0px;\n\tpadding-block: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\n\t& .class-item-sortable-trigger {\n\t\tcolor: ${ ( { theme } ) => theme.palette.action.active };\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tvisibility: hidden;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tpadding-inline-end: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\ttransform: translate( -75%, -50% );\n\t}\n\n\t&[aria-describedby=''] > .MuiTag-root {\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.background.paper };\n\t\tbox-shadow: ${ ( { theme } ) => theme.shadows[ 3 ] };\n\t}\n\n\t&:hover,\n\t&:focus-within {\n\t\t& .class-item-sortable-trigger {\n\t\t\tvisibility: visible;\n\t\t}\n\t}\n`;\n\nconst SortableTrigger = ( props: React.HTMLAttributes< HTMLDivElement > ) => (\n\t<div\n\t\t{ ...props }\n\t\trole=\"button\"\n\t\tclassName=\"class-item-sortable-trigger\"\n\t\ttabIndex={ 0 }\n\t\taria-label={ __( 'Drag item', 'elementor' ) }\n\t>\n\t\t<GripVerticalIcon fontSize=\"tiny\" />\n\t</div>\n);\n\nconst StyledDivider = styled( Divider )`\n\theight: 0px;\n\tborder: none;\n\toverflow: visible;\n\n\t&:after {\n\t\t--height: 2px;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: var( --height );\n\t\tmargin-block: calc( -1 * var( --height ) / 2 );\n\t\tborder-radius: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.text.primary };\n\t}\n`;\n","import * as React from 'react';\nimport { bindTrigger } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { RepeatableControlContext } from '../../../hooks/use-repeatable-control-context';\nimport { RepeaterTag } from '../../repeater/repeater-tag';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { RepeaterItemActionsSlot, RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../locations';\nimport { type ItemProps, type RepeatablePropValue } from '../types';\n\nexport const Item = < T extends RepeatablePropValue >( { Label, Icon, actions }: ItemProps< T > ) => {\n\tconst {\n\t\tpopoverState,\n\t\tsetRowRef,\n\t\topenItemIndex,\n\t\tsetOpenItemIndex,\n\t\tindex = -1,\n\t\tvalue,\n\t\tisItemDisabled,\n\t} = useRepeaterContext();\n\tconst repeatableContext = React.useContext( RepeatableControlContext );\n\tconst disableOpen = !! repeatableContext?.props?.readOnly;\n\tconst triggerProps = bindTrigger( popoverState );\n\n\tconst onClick = ( ev: React.MouseEvent ) => {\n\t\tif ( disableOpen || isItemDisabled( index ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttriggerProps.onClick( ev );\n\t\tsetOpenItemIndex( index );\n\t};\n\n\tconst setRef = ( ref: HTMLDivElement | null ) => {\n\t\tif ( ! ref || openItemIndex !== index || ref === popoverState.anchorEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetRowRef( ref );\n\t\tpopoverState.setAnchorEl( ref );\n\t};\n\n\treturn (\n\t\t<RepeaterTag\n\t\t\tref={ setRef }\n\t\t\tlabel={\n\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t<Label value={ value as T } />\n\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t}\n\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t{ ...triggerProps }\n\t\t\tonClick={ onClick }\n\t\t\tstartIcon={\n\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t<Icon value={ value as T } />\n\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t}\n\t\t\tsx={ {\n\t\t\t\tminHeight: ( theme ) => theme.spacing( 3.5 ),\n\t\t\t\t...( isItemDisabled( index ) && {\n\t\t\t\t\t'[role=\"button\"]': {\n\t\t\t\t\t\tcursor: 'not-allowed',\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t} }\n\t\t\tactions={\n\t\t\t\t<>\n\t\t\t\t\t<RepeaterItemActionsSlot index={ index ?? -1 } />\n\t\t\t\t\t{ actions }\n\t\t\t\t</>\n\t\t\t}\n\t\t/>\n\t);\n};\n","import { createContext, useContext } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nimport type { Item, RepeatablePropValue } from '../components/control-repeater/types';\n\nexport type ChildControlConfig = {\n\tcomponent: React.ComponentType;\n\tprops?: Record< string, unknown >;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpropTypeUtil: PropTypeUtil< string, any >;\n\tlabel?: string;\n\tisItemDisabled?: ( item: Item< RepeatablePropValue > ) => boolean;\n};\n\ntype RepeatableControlContextType = ChildControlConfig & {\n\tplaceholder: string;\n\tpatternLabel: string;\n};\n\nconst RepeatableControlContext = createContext< RepeatableControlContextType | undefined >( undefined );\n\nconst useRepeatableControlContext = () => {\n\tconst context = useContext( RepeatableControlContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeatableControlContext must be used within RepeatableControl' );\n\t}\n\n\treturn context;\n};\n\nexport { RepeatableControlContext, useRepeatableControlContext };\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { UnstableTag, type UnstableTagProps } from '@elementor/ui';\n\nexport const RepeaterTag = forwardRef< HTMLDivElement, UnstableTagProps >( ( props, ref ) => {\n\treturn (\n\t\t<UnstableTag\n\t\t\tref={ ref }\n\t\t\tfullWidth\n\t\t\tshowActionsOnHover\n\t\t\tvariant=\"outlined\"\n\t\t\tsx={ { minHeight: ( theme ) => theme.spacing( 3.5 ) } }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n","import { type PropValue } from '@elementor/editor-props';\nimport { createLocation, createReplaceableLocation } from '@elementor/locations';\n\n// Repeaters\nexport const { Slot: RepeaterItemIconSlot, inject: injectIntoRepeaterItemIcon } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemLabelSlot, inject: injectIntoRepeaterItemLabel } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemActionsSlot, inject: injectIntoRepeaterItemActions } = createLocation< {\n\tindex: number;\n} >();\n","import * as React from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nimport { SectionContent } from '../section-content';\nimport { RepeaterContextProvider } from './context/repeater-context';\nimport { type Item, type RepeatablePropValue } from './types';\n\nexport const ControlRepeater = < T extends RepeatablePropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisItemDisabled,\n}: React.PropsWithChildren< {\n\tinitial: T;\n\tpropTypeUtil: PropTypeUtil< string, T[] >;\n\tisItemDisabled?: ( item: Item< T > ) => boolean;\n} > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<RepeaterContextProvider\n\t\t\t\tinitial={ initial }\n\t\t\t\tpropTypeUtil={ propTypeUtil }\n\t\t\t\tisItemDisabled={ isItemDisabled }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</RepeaterContextProvider>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\nconst SIZE = 'tiny';\n\nexport const DisableItemAction = () => {\n\tconst { items, updateItem, index = -1 } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst propDisabled = items[ index ].item.disabled ?? false;\n\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\n\tconst onClick = () => {\n\t\tconst self = structuredClone( items[ index ].item );\n\n\t\tself.disabled = ! self.disabled;\n\n\t\tif ( ! self.disabled ) {\n\t\t\tdelete self.disabled;\n\t\t}\n\n\t\tupdateItem( self, index );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ toggleLabel }>\n\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { CopyIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const DuplicateItemAction = () => {\n\tconst { items, addItem, index = -1, isItemDisabled } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst item = items[ index ]?.item;\n\n\tconst onClick = ( ev: React.MouseEvent ) => {\n\t\tconst newItem = structuredClone( item );\n\n\t\taddItem( ev, { item: newItem, index: index + 1 } );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\tonClick={ onClick }\n\t\t\t\taria-label={ duplicateLabel }\n\t\t\t\tdisabled={ isItemDisabled( index ) }\n\t\t\t>\n\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { XIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const RemoveItemAction = () => {\n\tconst { removeItem, index = -1 } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\tconst onClick = () => removeItem( index );\n\treturn (\n\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ removeLabel }>\n\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { bindPopover, Box } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { RepeaterPopover } from '../../repeater/repeater-popover';\nimport { EMPTY_OPEN_ITEM, useRepeaterContext } from '../context/repeater-context';\n\nexport const EditItemPopover = ( { children }: { children: React.ReactNode } ) => {\n\tconst { popoverState, openItemIndex, isOpen, rowRef, setOpenItemIndex, setRowRef } = useRepeaterContext();\n\n\tif ( ! isOpen || ! rowRef ) {\n\t\treturn null;\n\t}\n\n\tconst onClose = () => {\n\t\tsetRowRef( null );\n\t\tpopoverState.setAnchorEl( null );\n\t\tsetOpenItemIndex( EMPTY_OPEN_ITEM );\n\t};\n\n\treturn (\n\t\t<RepeaterPopover width={ rowRef.offsetWidth } { ...bindPopover( popoverState ) } onClose={ onClose }>\n\t\t\t<PropKeyProvider bind={ String( openItemIndex ) }>\n\t\t\t\t<Box>{ children }</Box>\n\t\t\t</PropKeyProvider>\n\t\t</RepeaterPopover>\n\t);\n};\n","import * as React from 'react';\nimport { Popover, type PopoverProps } from '@elementor/ui';\n\nexport const RepeaterPopover = ( { children, width, ...props }: PopoverProps & { width?: number } ) => {\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tdisableEnforceFocus\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: { marginBlockStart: 0.5, width, overflow: 'visible' },\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t</Popover>\n\t);\n};\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack, type StackProps } from '@elementor/ui';\n\nexport const PopoverContent: FC< PropsWithChildren< StackProps > > = ( { gap = 1.5, children, ...props } ) => (\n\t<Stack { ...props } gap={ gap }>\n\t\t{ children }\n\t</Stack>\n);\n","import { forwardRef, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\ntype PopoverGridContainerProps = PropsWithChildren< {\n\tgap?: number;\n\talignItems?: React.ComponentProps< typeof Grid >[ 'alignItems' ];\n\tflexWrap?: React.ComponentProps< typeof Grid >[ 'flexWrap' ];\n} >;\n\nexport const PopoverGridContainer = forwardRef(\n\t( { gap = 1.5, alignItems = 'center', flexWrap = 'nowrap', children }: PopoverGridContainerProps, ref ) => (\n\t\t<Grid container gap={ gap } alignItems={ alignItems } flexWrap={ flexWrap } ref={ ref }>\n\t\t\t{ children }\n\t\t</Grid>\n\t)\n);\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { Box, Stack, Typography } from '@elementor/ui';\n\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\n\nexport const RepeaterHeader = forwardRef(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tchildren,\n\t\t\tadornment: Adornment = ControlAdornments,\n\t\t}: React.PropsWithChildren< {\n\t\t\tlabel: string;\n\t\t\tadornment?: React.FC;\n\t\t} >,\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ 1 }\n\t\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t\t\tref={ ref }\n\t\t\t>\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap={ 1 } sx={ { flexGrow: 1 } }>\n\t\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Adornment />\n\t\t\t\t</Box>\n\t\t\t\t{ children }\n\t\t\t</Stack>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport {\n\tbackdropFilterPropTypeUtil,\n\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\ttype PropTypeUtil,\n} from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../../components/control-repeater';\nimport { DisableItemAction } from '../../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../components/control-repeater/actions/remove-item-action';\nimport { EditItemPopover } from '../../components/control-repeater/items/edit-item-popover';\nimport type { RepeatablePropValue } from '../../components/control-repeater/types';\nimport { RepeaterHeader } from '../../components/repeater/repeater-header';\nimport { createControl } from '../../create-control';\nimport { FilterConfigProvider, useFilterConfig } from './context/filter-config-context';\nimport { FilterContent } from './filter-content';\nimport { FilterIcon } from './filter-icon';\nimport { FilterLabel } from './filter-label';\n\ntype FilterPropName = {\n\tfilterPropName?: 'filter' | 'backdrop-filter';\n};\n\ntype Config = {\n\tpropTypeUtil: PropTypeUtil< string, FilterItemPropValue[] >;\n\tlabel: string;\n};\n\nconst FILTER_CONFIG: Record< string, Config > = {\n\tfilter: {\n\t\tpropTypeUtil: filterPropTypeUtil,\n\t\tlabel: __( 'Filters', 'elementor' ),\n\t},\n\t'backdrop-filter': {\n\t\tpropTypeUtil: backdropFilterPropTypeUtil,\n\t\tlabel: __( 'Backdrop filters', 'elementor' ),\n\t},\n} as const;\n\nexport const FilterRepeaterControl = createControl( ( { filterPropName = 'filter' }: FilterPropName ) => {\n\tconst { propTypeUtil, label } = ensureFilterConfig( filterPropName );\n\tconst { propType, value: filterValues, setValue } = useBoundProp( propTypeUtil );\n\n\treturn (\n\t\t<FilterConfigProvider>\n\t\t\t<PropProvider propType={ propType } value={ filterValues } setValue={ setValue }>\n\t\t\t\t<Repeater\n\t\t\t\t\tpropTypeUtil={ propTypeUtil as PropTypeUtil< string, RepeatablePropValue[] > }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tfilterPropName={ filterPropName }\n\t\t\t\t/>\n\t\t\t</PropProvider>\n\t\t</FilterConfigProvider>\n\t);\n} );\n\ntype RepeaterProps = {\n\tpropTypeUtil: PropTypeUtil< string, RepeatablePropValue[] >;\n\tlabel: string;\n\tfilterPropName: string;\n};\n\nconst Repeater = ( { propTypeUtil, label, filterPropName }: RepeaterProps ) => {\n\tconst { getInitialValue } = useFilterConfig();\n\n\treturn (\n\t\t<ControlRepeater initial={ getInitialValue() as RepeatablePropValue } propTypeUtil={ propTypeUtil }>\n\t\t\t<RepeaterHeader label={ label }>\n\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\tnewItemIndex={ 0 }\n\t\t\t\t\tariaLabel={ filterPropName === 'backdrop-filter' ? 'backdrop filter' : 'filter' }\n\t\t\t\t/>\n\t\t\t</RepeaterHeader>\n\t\t\t<ItemsContainer>\n\t\t\t\t<Item\n\t\t\t\t\tLabel={ FilterLabel }\n\t\t\t\t\tIcon={ FilterIcon }\n\t\t\t\t\tactions={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ItemsContainer>\n\t\t\t<EditItemPopover>\n\t\t\t\t<FilterContent />\n\t\t\t</EditItemPopover>\n\t\t</ControlRepeater>\n\t);\n};\n\nfunction ensureFilterConfig( name: string ): Config {\n\tif ( name && name in FILTER_CONFIG ) {\n\t\treturn FILTER_CONFIG[ name ];\n\t}\n\n\treturn FILTER_CONFIG.filter;\n}\n","import * as React from 'react';\nimport { createContext, useContext, useMemo } from 'react';\nimport { cssFilterFunctionPropUtil, type PropType } from '@elementor/editor-props';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type FilterFunction } from '../configs';\nimport { buildFilterConfig, type FilterConfigEntry } from '../utils';\n\ntype FilterConfigMap = Record< FilterFunction, FilterConfigEntry >;\n\ntype FilterConfigContextValue = {\n\tconfig: FilterConfigMap;\n\tfilterOptions: Array< { value: string; label: string } >;\n\tgetFilterFunctionConfig: ( filterFunction: FilterFunction ) => FilterConfigEntry;\n\tgetInitialValue: () => unknown;\n};\n\nconst FilterConfigContext = createContext< FilterConfigContextValue | null >( null );\n\nexport function FilterConfigProvider( { children }: React.PropsWithChildren ) {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil ) as { propType: { item_prop_type: PropType } };\n\n\tconst contextValue = useMemo( () => {\n\t\tconst config = buildFilterConfig( propContext.propType.item_prop_type );\n\t\tconst filterOptions = Object.entries( config ).map( ( [ key, conf ] ) => ( {\n\t\t\tvalue: key,\n\t\t\tlabel: conf.name,\n\t\t} ) );\n\n\t\treturn {\n\t\t\tconfig,\n\t\t\tfilterOptions,\n\t\t\tgetFilterFunctionConfig: ( filterFunction: FilterFunction ) => config[ filterFunction ],\n\t\t\tgetInitialValue: () => config.blur.defaultValue,\n\t\t};\n\t}, [ propContext.propType ] );\n\n\treturn <FilterConfigContext.Provider value={ contextValue }>{ children }</FilterConfigContext.Provider>;\n}\n\nexport function useFilterConfig(): FilterConfigContextValue {\n\tconst context = useContext( FilterConfigContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useFilterConfig must be used within FilterConfigProvider' );\n\t}\n\n\treturn context;\n}\n","import type { DropShadowFilterPropValue, PropType, SizePropValue, UnionPropType } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FilterFunction, type FilterFunctionGroup, FILTERS_BY_GROUP } from './configs';\n\nconst AMOUNT_VALUE_NAME = __( 'Amount', 'elementor' );\n\ntype SingleArgFilterFuncPropType = PropType & {\n\tshape: {\n\t\tsize?: PropType;\n\t};\n};\n\ntype DropShadowFuncPropType = PropType & {\n\tshape: {\n\t\tcolor: PropType;\n\t\txAxis: PropType;\n\t\tyAxis: PropType;\n\t\tblur: PropType;\n\t};\n};\n\ntype CssFilterFuncPropType = PropType & {\n\tshape: {\n\t\targs: {\n\t\t\tprop_types: {\n\t\t\t\t[ K in FilterFunctionGroup ]: SingleArgFilterFuncPropType | DropShadowFuncPropType;\n\t\t\t};\n\t\t};\n\t};\n};\n\nexport type DefaultValue = { size: SizePropValue } | DropShadowFilterPropValue[ 'value' ];\n\ntype CssFilterFuncValue = ReturnType< typeof createDefaultValue >;\n\nexport type FilterConfigEntry = {\n\tname: string;\n\tvalueName: string;\n\tfilterFunctionGroup: FilterFunctionGroup;\n\tdefaultValue: CssFilterFuncValue;\n};\n\ntype FilterConfigMap = Record< FilterFunction, FilterConfigEntry >;\n\nconst DEFAULT_FACTORIES: Partial< Record< FilterFunction, ( propType: PropType ) => DefaultValue > > = {\n\t'drop-shadow': ( propType: PropType ) => buildDropShadowDefault( propType as DropShadowFuncPropType ),\n};\n\nexport function buildFilterConfig( cssFilterPropType: PropType ): FilterConfigMap {\n\tfunction createEntry(\n\t\tfilterFunctionGroup: FilterFunctionGroup,\n\t\tfilterFunction: FilterFunction,\n\t\t{ name, valueName }: { name: string; valueName?: string }\n\t): [ FilterFunction, FilterConfigEntry ] {\n\t\tconst propType = extractPropType( cssFilterPropType as CssFilterFuncPropType, filterFunctionGroup );\n\n\t\tconst value =\n\t\t\tDEFAULT_FACTORIES[ filterFunction ]?.( propType ) ??\n\t\t\tbuildSizeDefault( propType as SingleArgFilterFuncPropType );\n\n\t\tconst defaultValue = createDefaultValue( {\n\t\t\tfilterFunction,\n\t\t\tfilterFunctionGroup,\n\t\t\tvalue,\n\t\t} );\n\n\t\treturn [\n\t\t\tfilterFunction,\n\t\t\t{\n\t\t\t\tname,\n\t\t\t\tvalueName: valueName ?? AMOUNT_VALUE_NAME,\n\t\t\t\tdefaultValue,\n\t\t\t\tfilterFunctionGroup,\n\t\t\t},\n\t\t];\n\t}\n\n\tconst entries = Object.entries( FILTERS_BY_GROUP ).flatMap( ( [ filterFunctionGroup, group ] ) =>\n\t\tObject.entries( group ).map( ( [ filterFunction, meta ] ) =>\n\t\t\tcreateEntry( filterFunctionGroup as FilterFunctionGroup, filterFunction as FilterFunction, meta )\n\t\t)\n\t);\n\n\treturn Object.fromEntries( entries ) as FilterConfigMap;\n}\n\ntype DefaultBuilderArgs = {\n\tfilterFunction: FilterFunction;\n\tfilterFunctionGroup: FilterFunctionGroup;\n\tvalue: DefaultValue;\n};\n\nfunction createDefaultValue( { filterFunction, filterFunctionGroup, value }: DefaultBuilderArgs ) {\n\treturn {\n\t\t$$type: 'css-filter-func',\n\t\tvalue: {\n\t\t\tfunc: { $$type: 'string', value: filterFunction },\n\t\t\targs: {\n\t\t\t\t$$type: filterFunctionGroup,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction buildSizeDefault( propType: SingleArgFilterFuncPropType ): DefaultValue {\n\tconst sizePropType = propType?.shape?.size;\n\n\treturn {\n\t\tsize: sizePropType?.default as SizePropValue,\n\t};\n}\n\nfunction buildDropShadowDefault( propType: DropShadowFuncPropType ): DefaultValue {\n\tconst dropShadowPropType = propType.shape;\n\n\treturn {\n\t\tblur: dropShadowPropType?.blur?.default,\n\t\txAxis: dropShadowPropType?.xAxis?.default,\n\t\tyAxis: dropShadowPropType?.yAxis?.default,\n\t\tcolor:\n\t\t\tdropShadowPropType?.color?.default ??\n\t\t\t( dropShadowPropType?.color as UnionPropType ).prop_types.color.default,\n\t};\n}\n\nfunction extractPropType( propType: CssFilterFuncPropType, filterFunctionGroup: FilterFunctionGroup ) {\n\treturn propType.shape?.args?.prop_types[ filterFunctionGroup ];\n}\n","import { __ } from '@wordpress/i18n';\n\nexport type FilterFunction =\n\t| 'blur'\n\t| 'brightness'\n\t| 'contrast'\n\t| 'hue-rotate'\n\t| 'saturate'\n\t| 'grayscale'\n\t| 'invert'\n\t| 'sepia'\n\t| 'drop-shadow';\n\nexport type FilterFunctionGroup = 'blur' | 'color-tone' | 'hue-rotate' | 'intensity' | 'drop-shadow';\n\nexport type FilterGroup = {\n\t[ filter in FilterFunction ]?: {\n\t\tname: string;\n\t\tvalueName?: string;\n\t};\n};\n\nexport const FILTERS_BY_GROUP: Record< FilterFunctionGroup, FilterGroup > = {\n\tblur: {\n\t\tblur: {\n\t\t\tname: __( 'Blur', 'elementor' ),\n\t\t\tvalueName: __( 'Radius', 'elementor' ),\n\t\t},\n\t},\n\tintensity: {\n\t\tbrightness: { name: __( 'Brightness', 'elementor' ) },\n\t\tcontrast: { name: __( 'Contrast', 'elementor' ) },\n\t\tsaturate: { name: __( 'Saturate', 'elementor' ) },\n\t},\n\t'hue-rotate': {\n\t\t'hue-rotate': {\n\t\t\tname: __( 'Hue Rotate', 'elementor' ),\n\t\t\tvalueName: __( 'Angle', 'elementor' ),\n\t\t},\n\t},\n\t'color-tone': {\n\t\tgrayscale: { name: __( 'Grayscale', 'elementor' ) },\n\t\tinvert: { name: __( 'Invert', 'elementor' ) },\n\t\tsepia: { name: __( 'Sepia', 'elementor' ) },\n\t},\n\t'drop-shadow': {\n\t\t'drop-shadow': { name: __( 'Drop shadow', 'elementor' ), valueName: __( 'Drop-shadow', 'elementor' ) },\n\t},\n};\n","import * as React from 'react';\nimport {\n\ttype CreateOptions,\n\tcssFilterFunctionPropUtil,\n\ttype FilterItemPropValue,\n\ttype PropKey,\n} from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlFormLabel } from '../../components/control-form-label';\nimport { useRepeaterContext } from '../../components/control-repeater/context/repeater-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { PopoverGridContainer } from '../../components/popover-grid-container';\nimport { SelectControl } from '../select-control';\nimport { type FilterFunction } from './configs';\nimport { useFilterConfig } from './context/filter-config-context';\nimport { DropShadowItemContent } from './drop-shadow/drop-shadow-item-content';\nimport { SingleSizeItemContent } from './single-size/single-size-item-content';\n\ntype Value = FilterItemPropValue[ 'value' ];\n\nexport const FilterContent = () => {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil );\n\tconst { filterOptions, getFilterFunctionConfig } = useFilterConfig();\n\n\tconst handleValueChange = ( value: Value, _?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tlet newValue = structuredClone( value );\n\t\tconst funcConfig = getFilterFunctionConfig( newValue?.func.value as FilterFunction );\n\n\t\tif ( meta?.bind === 'func' ) {\n\t\t\tnewValue = funcConfig.defaultValue.value as FilterItemPropValue[ 'value' ];\n\t\t}\n\n\t\tif ( ! newValue.args ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpropContext.setValue( newValue );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } setValue={ handleValueChange }>\n\t\t\t<PropKeyProvider bind=\"css-filter-func\">\n\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Filter', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<PropKeyProvider bind=\"func\">\n\t\t\t\t\t\t\t\t<SelectControl options={ filterOptions } />\n\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t<PropKeyProvider bind=\"args\">\n\t\t\t\t\t\t<FilterValueContent />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverContent>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst FilterValueContent = () => {\n\tconst { openItemIndex, items } = useRepeaterContext();\n\tconst currentItem = items[ openItemIndex ];\n\n\tconst filterFunc = ( currentItem.item.value as FilterItemPropValue[ 'value' ] ).func.value;\n\tconst isDropShadow = filterFunc === 'drop-shadow';\n\n\tif ( isDropShadow ) {\n\t\treturn <DropShadowItemContent />;\n\t}\n\n\treturn <SingleSizeItemContent filterFunc={ filterFunc as FilterFunction } />;\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { dropShadowFilterPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { ColorControl } from '../../color-control';\nimport { SizeControl } from '../../size-control';\n\nconst items = [\n\t{\n\t\tbind: 'xAxis',\n\t\tlabel: __( 'X-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'yAxis',\n\t\tlabel: __( 'Y-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'blur',\n\t\tlabel: __( 'Blur', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n\t{\n\t\tbind: 'color',\n\t\tlabel: __( 'Color', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n];\n\nexport const DropShadowItemContent = ( { anchorEl }: { anchorEl?: HTMLElement | null } ) => {\n\tconst context = useBoundProp( dropShadowFilterPropTypeUtil );\n\tconst rowRefs = [ useRef< HTMLDivElement >( null ), useRef< HTMLDivElement >( null ) ];\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ items.map( ( item ) => (\n\t\t\t\t<PopoverGridContainer key={ item.bind } ref={ rowRefs[ item.rowIndex ] ?? null }>\n\t\t\t\t\t<PropKeyProvider bind={ item.bind }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ item.label }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t{ item.bind === 'color' ? (\n\t\t\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\tanchorRef={ rowRefs[ item.rowIndex ] }\n\t\t\t\t\t\t\t\t\tenablePropTypeUnits\n\t\t\t\t\t\t\t\t\tdefaultUnit=\"px\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n","import { useRef } from 'react';\nimport * as React from 'react';\nimport {\n\tblurFilterPropTypeUtil,\n\tcolorToneFilterPropTypeUtil,\n\ttype createPropUtils,\n\thueRotateFilterPropTypeUtil,\n\tintensityFilterPropTypeUtil,\n} from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { SizeControl } from '../../size-control';\nimport { type FilterFunction } from '../configs';\nimport { useFilterConfig } from '../context/filter-config-context';\n\nexport const propTypeMap: Record< string, ReturnType< typeof createPropUtils > > = {\n\tblur: blurFilterPropTypeUtil,\n\tintensity: intensityFilterPropTypeUtil,\n\t'hue-rotate': hueRotateFilterPropTypeUtil,\n\t'color-tone': colorToneFilterPropTypeUtil,\n};\n\nexport const SingleSizeItemContent = ( { filterFunc }: { filterFunc: FilterFunction } ) => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst { getFilterFunctionConfig } = useFilterConfig();\n\tconst { valueName, filterFunctionGroup } = getFilterFunctionConfig( filterFunc );\n\tconst context = useBoundProp( propTypeMap[ filterFunctionGroup as string ] );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ filterFunctionGroup }>\n\t\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ valueName }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<SizeControl anchorRef={ rowRef } enablePropTypeUnits />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { styled, UnstableColorIndicator } from '@elementor/ui';\n\nexport const FilterIcon = ( { value }: { value: FilterItemPropValue } ) => {\n\tif ( value.value.func.value !== 'drop-shadow' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StyledUnstableColorIndicator\n\t\t\tsize=\"inherit\"\n\t\t\tcomponent=\"span\"\n\t\t\tvalue={ ( value.value.args as DropShadowFilterPropValue ).value?.color.value }\n\t\t/>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n","import * as React from 'react';\nimport type { FilterItemPropValue } from '@elementor/editor-props';\n\nimport { DropShadowItemLabel } from './drop-shadow/drop-shadow-item-label';\nimport { SingleSizeItemLabel } from './single-size/single-size-item-label';\n\nexport const FilterLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tif ( value.value.func.value === 'drop-shadow' ) {\n\t\treturn <DropShadowItemLabel value={ value } />;\n\t}\n\n\treturn <SingleSizeItemLabel value={ value } />;\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { CUSTOM_SIZE_LABEL } from '../../size-control';\n\nexport const DropShadowItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst values = value.value.args.value as DropShadowFilterPropValue[ 'value' ];\n\tconst keys = [ 'xAxis', 'yAxis', 'blur' ] as Array< keyof typeof values >;\n\tconst labels: string[] = keys.map( ( key ) =>\n\t\tvalues[ key ]?.value?.unit !== 'custom'\n\t\t\t? `${ values[ key ]?.value?.size ?? 0 }${ values[ key ]?.value?.unit ?? 'px' }`\n\t\t\t: values[ key ]?.value?.size || CUSTOM_SIZE_LABEL\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t\tDrop shadow:\n\t\t\t</Box>\n\t\t\t{ ` ${ labels.join( ' ' ) }` }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport type { FilterItemPropValue, SizePropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { lengthUnits } from '../../../utils/size-control';\nimport { CUSTOM_SIZE_LABEL } from '../../size-control';\nimport { type FilterFunction } from '../configs';\nimport { useFilterConfig } from '../context/filter-config-context';\n\nexport const SingleSizeItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { func, args } = value.value;\n\tconst { getFilterFunctionConfig } = useFilterConfig();\n\tconst { defaultValue } = getFilterFunctionConfig( ( func.value ?? '' ) as FilterFunction );\n\tconst defaultUnit =\n\t\t( defaultValue.value.args.value as { size: SizePropValue } )?.size?.value?.unit ?? lengthUnits[ 0 ];\n\n\tconst { unit, size } = ( args.value as { size: SizePropValue } ).size?.value ?? { unit: defaultUnit, size: 0 };\n\n\tconst label = (\n\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t{ func.value ?? '' }:\n\t\t</Box>\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }\n\t\t\t{ ' ' + ( unit !== 'custom' ? `${ size ?? 0 }${ unit ?? defaultUnit }` : size || CUSTOM_SIZE_LABEL ) }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { createControl } from '../create-control';\nimport { SelectControl, type SelectOption } from './select-control';\n\ntype ExtendedWindow = Window & {\n\telementor: { $previewContents: [ HTMLIFrameElement ]; config: { document: { id: string } } };\n};\n\nconst getOffCanvasElements = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst documentId = extendedWindow.elementor.config.document.id;\n\tconst offCanvasElements = extendedWindow.elementor.$previewContents[ 0 ].querySelectorAll(\n\t\t`[data-elementor-id=\"${ documentId }\"] .elementor-widget-off-canvas.elementor-element-edit-mode`\n\t);\n\n\treturn Array.from( offCanvasElements as unknown as HTMLElement[] ).map( ( offCanvasElement ) => {\n\t\treturn {\n\t\t\tlabel: offCanvasElement.querySelector( '.e-off-canvas' )?.getAttribute( 'aria-label' ) ?? '',\n\t\t\tvalue: offCanvasElement.dataset.id,\n\t\t} as SelectOption;\n\t} );\n};\n\nconst collectionMethods = {\n\t'off-canvas': getOffCanvasElements,\n} as const;\n\ntype SelectControlWrapperProps = Parameters< typeof SelectControl >[ 0 ] & {\n\tcollectionId?: keyof typeof collectionMethods;\n};\n\nconst useDynamicOptions = (\n\tcollectionId?: keyof typeof collectionMethods,\n\tinitialOptions?: SelectControlWrapperProps[ 'options' ]\n) => {\n\tconst [ options, setOptions ] = useState< SelectControlWrapperProps[ 'options' ] >( initialOptions ?? [] );\n\n\tuseEffect( () => {\n\t\tif ( ! collectionId || ! collectionMethods[ collectionId ] ) {\n\t\t\tsetOptions( initialOptions ?? [] );\n\t\t\treturn;\n\t\t}\n\t\tsetOptions( collectionMethods[ collectionId ]() );\n\t}, [ collectionId, initialOptions ] );\n\n\treturn options;\n};\n\nexport const SelectControlWrapper = createControl(\n\t( { collectionId, options, ...props }: SelectControlWrapperProps ) => {\n\t\tconst actualOptions = useDynamicOptions( collectionId, options );\n\n\t\treturn <SelectControl options={ actualOptions } { ...props } />;\n\t}\n);\n","import * as React from 'react';\nimport { type PropValue, stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlToggleButtonGroup, type ToggleButtonGroupItem } from '../components/control-toggle-button-group';\nimport { createControl } from '../create-control';\nimport { convertToggleOptionsToAtomic, type DynamicToggleOption } from '../utils/convert-toggle-options-to-atomic';\n\nexport type ToggleControlProps< T extends PropValue > = {\n\toptions: Array< ToggleButtonGroupItem< T > & { exclusive?: boolean } >;\n\tfullWidth?: boolean;\n\tsize?: ToggleButtonProps[ 'size' ];\n\texclusive?: boolean;\n\tmaxItems?: number;\n\tconvertOptions?: boolean;\n};\n\nexport const ToggleControl = createControl(\n\t( {\n\t\toptions,\n\t\tfullWidth = false,\n\t\tsize = 'tiny',\n\t\texclusive = true,\n\t\tmaxItems,\n\t\tconvertOptions = false,\n\t}: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst processedOptions = convertOptions\n\t\t\t? convertToggleOptionsToAtomic( options as DynamicToggleOption[] )\n\t\t\t: ( options as Array< ToggleButtonGroupItem< StringPropValue[ 'value' ] > & { exclusive?: boolean } > );\n\n\t\tconst exclusiveValues = processedOptions\n\t\t\t.filter( ( option ) => option.exclusive )\n\t\t\t.map( ( option ) => option.value );\n\n\t\tconst handleNonExclusiveToggle = ( selectedValues: StringPropValue[ 'value' ][] ) => {\n\t\t\tconst newSelectedValue = selectedValues[ selectedValues.length - 1 ];\n\t\t\tconst isNewSelectedValueExclusive = exclusiveValues.includes( newSelectedValue );\n\n\t\t\tconst updatedValues = isNewSelectedValueExclusive\n\t\t\t\t? [ newSelectedValue ]\n\t\t\t\t: selectedValues?.filter( ( val ) => ! exclusiveValues.includes( val ) );\n\n\t\t\tsetValue( updatedValues?.join( ' ' ) || null );\n\t\t};\n\n\t\tconst toggleButtonGroupProps = {\n\t\t\titems: processedOptions,\n\t\t\tmaxItems,\n\t\t\tfullWidth,\n\t\t\tsize,\n\t\t\tplaceholder,\n\t\t};\n\n\t\treturn exclusive ? (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value ?? null }\n\t\t\t\tonChange={ setValue }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ true }\n\t\t\t/>\n\t\t) : (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value?.split( ' ' ) ?? [] }\n\t\t\t\tonChange={ handleNonExclusiveToggle }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ false }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport {\n\tListItemText,\n\tMenu,\n\tMenuItem,\n\ttype StackProps,\n\tstyled,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttype ToggleButtonProps,\n\tTypography,\n\tuseTheme,\n} from '@elementor/ui';\n\nimport ControlActions from '../control-actions/control-actions';\nimport { ConditionalTooltip } from './conditional-tooltip';\n\ntype RenderContentProps = { size: ToggleButtonProps[ 'size' ] };\n\nexport type ToggleButtonGroupItem< TValue > = {\n\tvalue: TValue;\n\tlabel: string;\n\trenderContent: ( { size }: RenderContentProps ) => React.ReactNode;\n\tshowTooltip?: boolean;\n};\n\nconst StyledToggleButtonGroup = styled( ToggleButtonGroup )`\n\t${ ( { justify } ) => `justify-content: ${ justify };` }\n\tbutton:not( :last-of-type ) {\n\t\tborder-start-end-radius: 0;\n\t\tborder-end-end-radius: 0;\n\t}\n\tbutton:not( :first-of-type ) {\n\t\tborder-start-start-radius: 0;\n\t\tborder-end-start-radius: 0;\n\t}\n\tbutton:last-of-type {\n\t\tborder-start-end-radius: 8px;\n\t\tborder-end-end-radius: 8px;\n\t}\n`;\n\nexport const StyledToggleButton = styled( ToggleButton, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPlaceholder',\n} )< { isPlaceholder: boolean } >`\n\t${ ( { theme, isPlaceholder } ) =>\n\t\tisPlaceholder &&\n\t\t`\n\t\tcolor: ${ theme.palette.text.tertiary };\n\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.04)' : 'rgba(0,0,0,0.02)' };\n\n\t\t&:hover {\n\t\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.04)' };\n\t\t}\n\t` }\n`;\n\ntype ExclusiveValue< TValue > = TValue;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tdisabled?: boolean;\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tmaxItems?: number;\n\tfullWidth?: boolean;\n\tplaceholder?: TValue | TValue[];\n} & (\n\t| {\n\t\t\texclusive?: false;\n\t\t\tvalue: NonExclusiveValue< TValue >;\n\t\t\tonChange: ( value: NonExclusiveValue< TValue > ) => void;\n\t }\n\t| {\n\t\t\texclusive: true;\n\t\t\tvalue: ExclusiveValue< TValue >;\n\t\t\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n\t }\n);\nexport const ToggleButtonGroupUi = React.forwardRef(\n\t< TValue, >(\n\t\t{\n\t\t\tjustify = 'end',\n\t\t\tsize = 'tiny',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\titems,\n\t\t\tmaxItems,\n\t\t\texclusive = false,\n\t\t\tfullWidth = false,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t}: Props< TValue >,\n\t\tref: React.Ref< HTMLDivElement >\n\t) => {\n\t\tconst shouldSliceItems = exclusive && maxItems !== undefined && items.length > maxItems;\n\t\tconst menuItems = shouldSliceItems ? items.slice( maxItems - 1 ) : [];\n\t\tconst fixedItems = shouldSliceItems ? items.slice( 0, maxItems - 1 ) : items;\n\n\t\tconst theme = useTheme();\n\t\tconst isRtl = 'rtl' === theme.direction;\n\n\t\tconst handleChange = (\n\t\t\t_: React.MouseEvent< HTMLElement >,\n\t\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t\t) => {\n\t\t\tonChange( newValue as never );\n\t\t};\n\n\t\tconst getGridTemplateColumns = useMemo( () => {\n\t\t\tconst isOffLimits = menuItems?.length;\n\t\t\tconst itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;\n\t\t\tconst templateColumnsSuffix = isOffLimits ? 'auto' : '';\n\t\t\treturn `repeat(${ itemsCount }, minmax(0, 25%)) ${ templateColumnsSuffix }`;\n\t\t}, [ menuItems?.length, fixedItems.length ] );\n\n\t\tconst shouldShowExclusivePlaceholder = exclusive && ( value === null || value === undefined || value === '' );\n\n\t\tconst nonExclusiveSelectedValues =\n\t\t\t! exclusive && Array.isArray( value )\n\t\t\t\t? value\n\t\t\t\t\t\t.map( ( v ) => ( typeof v === 'string' ? v : '' ) )\n\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.split( /\\s+/ )\n\t\t\t\t\t\t.filter( Boolean )\n\t\t\t\t: [];\n\n\t\tconst shouldShowNonExclusivePlaceholder = ! exclusive && nonExclusiveSelectedValues.length === 0;\n\n\t\tconst getPlaceholderArray = ( placeholderValue: TValue | TValue[] | undefined ): string[] => {\n\t\t\tif ( Array.isArray( placeholderValue ) ) {\n\t\t\t\treturn placeholderValue.flatMap( ( p ) => {\n\t\t\t\t\tif ( typeof p === 'string' ) {\n\t\t\t\t\t\treturn p.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t\t\t}\n\t\t\t\t\treturn [];\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( typeof placeholderValue === 'string' ) {\n\t\t\t\treturn placeholderValue.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t}\n\n\t\t\treturn [];\n\t\t};\n\n\t\tconst placeholderArray = getPlaceholderArray( placeholder );\n\n\t\treturn (\n\t\t\t<StyledToggleButtonGroup\n\t\t\t\tref={ ref }\n\t\t\t\tjustify={ justify }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\texclusive={ exclusive }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsx={ {\n\t\t\t\t\tdirection: isRtl ? 'rtl /* @noflip */' : 'ltr /* @noflip */',\n\t\t\t\t\tdisplay: 'grid',\n\t\t\t\t\tgridTemplateColumns: getGridTemplateColumns,\n\t\t\t\t\twidth: `100%`,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ fixedItems.map( ( { label, value: buttonValue, renderContent: Content, showTooltip } ) => {\n\t\t\t\t\tconst isPlaceholder =\n\t\t\t\t\t\tplaceholderArray.length > 0 &&\n\t\t\t\t\t\tplaceholderArray.includes( buttonValue as string ) &&\n\t\t\t\t\t\t( shouldShowExclusivePlaceholder || shouldShowNonExclusivePlaceholder );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ConditionalTooltip\n\t\t\t\t\t\t\tkey={ buttonValue as string }\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip={ showTooltip || false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\t\t\tvalue={ buttonValue }\n\t\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t\t\t\tisPlaceholder={ isPlaceholder }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t\t\t</ConditionalTooltip>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\n\t\t\t\t{ menuItems.length && exclusive && (\n\t\t\t\t\t<SplitButtonGroup\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\tvalue={ ( value as ExclusiveValue< TValue > ) || null }\n\t\t\t\t\t\tonChange={ onChange as ( v: ExclusiveValue< TValue > ) => void }\n\t\t\t\t\t\titems={ menuItems }\n\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</StyledToggleButtonGroup>\n\t\t);\n\t}\n) as < TValue >( props: Props< TValue > & { ref?: React.Ref< HTMLDivElement > } ) => React.ReactElement;\n\nexport const ControlToggleButtonGroup = < TValue, >( props: Props< TValue > ) => {\n\treturn (\n\t\t<ControlActions>\n\t\t\t<ToggleButtonGroupUi { ...props } />\n\t\t</ControlActions>\n\t);\n};\n\ntype SplitButtonGroup< TValue > = {\n\tsize: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tfullWidth: boolean;\n\tvalue: ExclusiveValue< TValue > | null;\n\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n};\n\nconst SplitButtonGroup = < TValue, >( {\n\tsize = 'tiny',\n\tonChange,\n\titems,\n\tfullWidth,\n\tvalue,\n}: SplitButtonGroup< TValue > ) => {\n\tconst previewButton = usePreviewButton( items, value );\n\tconst [ isMenuOpen, setIsMenuOpen ] = useState( false );\n\tconst menuButtonRef = useRef( null );\n\n\tconst onMenuToggle = ( ev: React.MouseEvent ) => {\n\t\tsetIsMenuOpen( ( prev ) => ! prev );\n\t\tev.preventDefault();\n\t};\n\n\tconst onMenuItemClick = ( newValue: TValue | null ) => {\n\t\tsetIsMenuOpen( false );\n\t\tonToggleItem( newValue );\n\t};\n\n\tconst onToggleItem = ( newValue: TValue | null ) => {\n\t\tconst shouldRemove = newValue === value;\n\n\t\tonChange( ( shouldRemove ? null : newValue ) as never );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleButton\n\t\t\t\tvalue={ previewButton.value }\n\t\t\t\taria-label={ previewButton.label }\n\t\t\t\tsize={ size }\n\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\tonClick={ ( ev: React.MouseEvent ) => {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\tonMenuItemClick( previewButton.value );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ previewButton.renderContent( { size } ) }\n\t\t\t</ToggleButton>\n\t\t\t<ToggleButton\n\t\t\t\tsize={ size }\n\t\t\t\taria-expanded={ isMenuOpen ? 'true' : undefined }\n\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\taria-pressed={ undefined }\n\t\t\t\tonClick={ onMenuToggle }\n\t\t\t\tref={ menuButtonRef }\n\t\t\t\tvalue=\"__chevron-icon-button__\"\n\t\t\t>\n\t\t\t\t<ChevronDownIcon fontSize={ size } />\n\t\t\t</ToggleButton>\n\t\t\t<Menu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonClose={ () => setIsMenuOpen( false ) }\n\t\t\t\tanchorEl={ menuButtonRef.current }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tsx={ {\n\t\t\t\t\tmt: 0.5,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ items.map( ( { label, value: buttonValue } ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ buttonValue }\n\t\t\t\t\t\tselected={ buttonValue === value }\n\t\t\t\t\t\tonClick={ () => onMenuItemClick( buttonValue ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItemText>\n\t\t\t\t\t\t\t<Typography sx={ { fontSize: '14px' } }>{ label }</Typography>\n\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst usePreviewButton = < TValue, >( items: ToggleButtonGroupItem< TValue >[], value: TValue ) => {\n\tconst [ previewButton, setPreviewButton ] = useState(\n\t\titems.find( ( item ) => item.value === value ) ?? items[ 0 ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst selectedButton = items.find( ( item ) => item.value === value );\n\n\t\tif ( selectedButton ) {\n\t\t\tsetPreviewButton( selectedButton );\n\t\t}\n\t}, [ items, value ] );\n\n\treturn previewButton;\n};\n","import * as React from 'react';\nimport { Tooltip } from '@elementor/ui';\n\nexport const ConditionalTooltip = ( {\n\tshowTooltip,\n\tchildren,\n\tlabel,\n}: React.PropsWithChildren< { showTooltip: boolean; label: string } > ) => {\n\treturn showTooltip && label ? (\n\t\t<Tooltip title={ label } disableFocusListener={ true } placement=\"top\">\n\t\t\t{ children }\n\t\t</Tooltip>\n\t) : (\n\t\tchildren\n\t);\n};\n","import * as React from 'react';\nimport type { ToggleButtonGroupItem } from '@elementor/editor-controls';\nimport * as Icons from '@elementor/icons';\n\nexport type DynamicToggleOption = {\n\tvalue: string;\n\tlabel: string;\n\ticon?: string;\n\tshowTooltip?: boolean;\n\texclusive?: boolean;\n};\n\nexport const convertToggleOptionsToAtomic = (\n\toptions: DynamicToggleOption[]\n): Array< ToggleButtonGroupItem< string > & { exclusive?: boolean } > => {\n\treturn options.map( ( option ) => {\n\t\tconst iconName = option.icon;\n\t\tconst IconComponent = Icons[ iconName as keyof typeof Icons ];\n\n\t\treturn {\n\t\t\tvalue: option.value,\n\t\t\tlabel: option.label,\n\t\t\trenderContent: ( { size } ) => {\n\t\t\t\tif ( IconComponent ) {\n\t\t\t\t\treturn <IconComponent fontSize={ size } />;\n\t\t\t\t}\n\t\t\t\treturn option.label;\n\t\t\t},\n\t\t\tshowTooltip: option.showTooltip,\n\t\t\texclusive: option.exclusive,\n\t\t};\n\t} );\n};\n","import * as React from 'react';\nimport { numberPropTypeUtil } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { NumberInput } from '../components/number-input';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst isEmptyOrNaN = ( value?: string | number | null ) =>\n\tvalue === null || value === undefined || value === '' || Number.isNaN( Number( value ) );\n\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder: labelPlaceholder,\n\t\tmax = Number.MAX_SAFE_INTEGER,\n\t\tmin = -Number.MAX_SAFE_INTEGER,\n\t\tstep = 1,\n\t\tshouldForceInt = false,\n\t\tstartIcon,\n\t}: {\n\t\tplaceholder?: string;\n\t\tmax?: number;\n\t\tmin?: number;\n\t\tstep?: number;\n\t\tshouldForceInt?: boolean;\n\t\tstartIcon?: React.ReactNode;\n\t} ) => {\n\t\tconst { value, setValue, placeholder, disabled, restoreValue } = useBoundProp( numberPropTypeUtil );\n\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst {\n\t\t\t\tvalue: eventValue,\n\t\t\t\tvalidity: { valid: isInputValid },\n\t\t\t} = event.target;\n\n\t\t\tlet updatedValue;\n\n\t\t\tif ( isEmptyOrNaN( eventValue ) ) {\n\t\t\t\tupdatedValue = null;\n\t\t\t} else {\n\t\t\t\tconst formattedValue = shouldForceInt ? +parseInt( eventValue ) : Number( eventValue );\n\n\t\t\t\tupdatedValue = Math.min(\n\t\t\t\t\tMath.max( formattedValue, min ?? Number.MIN_SAFE_INTEGER ),\n\t\t\t\t\tmax ?? Number.MAX_SAFE_INTEGER\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetValue( updatedValue, undefined, { validation: () => isInputValid } );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<NumberInput\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\t\tonInput={ handleChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tplaceholder={ labelPlaceholder ?? ( isEmptyOrNaN( placeholder ) ? '' : String( placeholder ) ) }\n\t\t\t\t\tinputProps={ { step, min } }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: startIcon ? (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t\t\t\t\t{ startIcon }\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t) : undefined,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type ReactNode, type RefObject, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, type PropValue } from '@elementor/editor-props';\nimport { bindPopover, bindToggle, Box, Grid, Popover, Stack, Tooltip, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { SizeControl } from './size-control';\n\ntype MultiSizePropValue = Record< PropKey, PropValue >;\n\ntype Item = {\n\ticon: ReactNode;\n\tlabel: string;\n\tariaLabel?: string;\n\tbind: PropKey;\n};\n\nexport type EqualUnequalItems = [ Item, Item, Item, Item ];\n\ntype Props< TMultiPropType extends string, TPropValue extends MultiSizePropValue > = {\n\tlabel: string;\n\ticon: ReactNode;\n\ttooltipLabel: string;\n\titems: EqualUnequalItems;\n\tmultiSizePropTypeUtil: PropTypeUtil< TMultiPropType, TPropValue >;\n};\n\nexport function EqualUnequalSizesControl< TMultiPropType extends string, TPropValue extends MultiSizePropValue >( {\n\tlabel,\n\ticon,\n\ttooltipLabel,\n\titems,\n\tmultiSizePropTypeUtil,\n}: Props< TMultiPropType, TPropValue > ) {\n\tconst popupId = useId();\n\tconst popupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst { propType: multiSizePropType, disabled: multiSizeDisabled } = useBoundProp( multiSizePropTypeUtil );\n\tconst { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();\n\n\tconst getMultiSizeValues = ( sourceValue: PropValue ) => {\n\t\tif ( multiSizePropTypeUtil.isValid( sourceValue ) ) {\n\t\t\treturn sourceValue.value;\n\t\t}\n\n\t\tconst propValue: MultiSizePropValue = {};\n\n\t\titems.forEach( ( item ) => {\n\t\t\tpropValue[ item.bind ] = sourceValue;\n\t\t} );\n\n\t\tconst derived = multiSizePropTypeUtil.create( propValue as unknown as TPropValue );\n\t\treturn derived?.value;\n\t};\n\n\tconst isShowingGeneralIndicator = ! popupState.isOpen;\n\n\tconst derivedValue = getMultiSizeValues( masterValue ) as unknown as TPropValue;\n\tconst derivedPlaceholder = getMultiSizeValues( masterPlaceholder ) as unknown as TPropValue;\n\n\tconst isEqualValues = ( values: TPropValue | null ) => {\n\t\tif ( ! values ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst multiSizeValue = multiSizePropTypeUtil.create( values );\n\n\t\tconst propValue: MultiSizePropValue = {};\n\n\t\titems.forEach( ( item ) => {\n\t\t\tpropValue[ item.bind ] = multiSizeValue?.value?.[ item.bind ] ?? null;\n\t\t} );\n\n\t\tconst allValues = Object.values( propValue ).map( ( value ) => JSON.stringify( value ) );\n\t\treturn allValues.every( ( value ) => value === allValues[ 0 ] );\n\t};\n\n\tconst isMixedPlaceholder = ! masterValue && ! isEqualValues( derivedPlaceholder );\n\tconst isMixed = isMixedPlaceholder || ! isEqualValues( derivedValue );\n\n\tconst applyMultiSizeValue = ( newValue: TPropValue ) => {\n\t\tif ( ! isEqualValues( newValue ) ) {\n\t\t\tsetMasterValue( multiSizePropTypeUtil.create( newValue ) );\n\t\t\treturn;\n\t\t}\n\n\t\tsetMasterValue( Object.values( newValue )?.pop() ?? null );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ rowRefs[ 0 ] }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t{ ! isShowingGeneralIndicator ? (\n\t\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t\t<Box flexGrow={ 1 }>\n\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\tplaceholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined }\n\t\t\t\t\t\t\t\tenablePropTypeUnits={ ! isMixed || ! isMixedPlaceholder }\n\t\t\t\t\t\t\t\tanchorRef={ rowRefs[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<Tooltip title={ tooltipLabel } placement=\"top\">\n\t\t\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t\t{ ...bindToggle( popupState ) }\n\t\t\t\t\t\t\t\tselected={ popupState.isOpen }\n\t\t\t\t\t\t\t\tisPlaceholder={ isMixedPlaceholder }\n\t\t\t\t\t\t\t\taria-label={ tooltipLabel }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\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: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: { sx: { mt: 0.5, width: rowRefs[ 0 ].current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<PropProvider\n\t\t\t\t\tpropType={ multiSizePropType }\n\t\t\t\t\tvalue={ derivedValue }\n\t\t\t\t\tplaceholder={ derivedPlaceholder }\n\t\t\t\t\tsetValue={ applyMultiSizeValue }\n\t\t\t\t\tisDisabled={ () => multiSizeDisabled }\n\t\t\t\t>\n\t\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 1 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 0 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 1 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 2 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 2 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 3 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t</PropProvider>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nconst MultiSizeValueControl = ( { item, rowRef }: { item: Item; rowRef: RefObject< HTMLDivElement > } ) => {\n\tconst { bind, label, icon, ariaLabel } = item;\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<SizeControl startIcon={ icon } ariaLabel={ ariaLabel } anchorRef={ rowRef } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, Tooltip } from '@elementor/ui';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { type ExtendedOption } from '../utils/size-control';\nimport { SizeControl } from './size-control';\n\ntype Props = {\n\tlabel: string;\n\tisSiteRtl?: boolean;\n\textendedOptions?: ExtendedOption[];\n\tmin?: number;\n};\n\nexport const LinkedDimensionsControl = ( { label, isSiteRtl = false, extendedOptions, min }: Props ) => {\n\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst { disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst {\n\t\tvalue: dimensionsValue,\n\t\tsetValue: setDimensionsValue,\n\t\tpropType,\n\t\tplaceholder: dimensionsPlaceholder,\n\t\tdisabled: dimensionsDisabled,\n\t} = useBoundProp( dimensionsPropTypeUtil );\n\n\tconst { value: masterValue, placeholder: masterPlaceholder, setValue: setMasterValue } = useBoundProp();\n\n\tconst inferIsLinked = () => {\n\t\tif ( dimensionsPropTypeUtil.isValid( masterValue ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! masterValue && dimensionsPropTypeUtil.isValid( masterPlaceholder ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst [ isLinked, setIsLinked ] = useState( () => inferIsLinked() );\n\n\tconst activeBreakpoint = useActiveBreakpoint();\n\n\tuseLayoutEffect( () => {\n\t\tsetIsLinked( inferIsLinked );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\tconst onLinkToggle = () => {\n\t\tsetIsLinked( ( prev ) => ! prev );\n\n\t\tif ( ! dimensionsPropTypeUtil.isValid( masterValue ) ) {\n\t\t\tconst value = masterValue ? masterValue : null;\n\n\t\t\tif ( ! value ) {\n\t\t\t\tsetMasterValue( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetMasterValue(\n\t\t\t\tdimensionsPropTypeUtil.create( {\n\t\t\t\t\t'block-start': value,\n\t\t\t\t\t'block-end': value,\n\t\t\t\t\t'inline-start': value,\n\t\t\t\t\t'inline-end': value,\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tdimensionsValue?.[ 'block-start' ] ??\n\t\t\tdimensionsValue?.[ 'inline-end' ] ??\n\t\t\tdimensionsValue?.[ 'block-end' ] ??\n\t\t\tdimensionsValue?.[ 'inline-start' ] ??\n\t\t\tnull;\n\n\t\tif ( ! sizeValue ) {\n\t\t\tsetMasterValue( null );\n\t\t\treturn;\n\t\t}\n\n\t\tsetMasterValue( sizeValue );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || dimensionsDisabled;\n\n\tconst propProviderProps = {\n\t\tpropType,\n\t\tvalue: dimensionsValue,\n\t\tplaceholder: dimensionsPlaceholder,\n\t\tsetValue: setDimensionsValue,\n\t\tisDisabled: () => dimensionsDisabled,\n\t};\n\n\tconst hasPlaceholders = ! masterValue && ( dimensionsPlaceholder || masterPlaceholder );\n\n\treturn (\n\t\t<PropProvider { ...propProviderProps }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tisPlaceholder={ hasPlaceholders }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\n\t\t\t{ getCssDimensionProps( label, isSiteRtl ).map( ( row, index ) => (\n\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" key={ index } ref={ gridRowRefs[ index ] }>\n\t\t\t\t\t{ row.map( ( { icon, ...props } ) => (\n\t\t\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\" key={ props.bind }>\n\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t<Label { ...props } />\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\t\t\tbind={ props.bind }\n\t\t\t\t\t\t\t\t\tariaLabel={ props.ariaLabel }\n\t\t\t\t\t\t\t\t\tstartIcon={ icon }\n\t\t\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\t\t\t\t\t\tanchorRef={ gridRowRefs[ index ] }\n\t\t\t\t\t\t\t\t\tmin={ min }\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\t\t\t\t\t) ) }\n\t\t\t\t</Stack>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tbind,\n\tariaLabel,\n\tstartIcon,\n\tisLinked,\n\textendedOptions,\n\tanchorRef,\n\tmin,\n}: {\n\tbind: PropKey;\n\tariaLabel: string;\n\tstartIcon: React.ReactNode;\n\tisLinked: boolean;\n\textendedOptions?: ExtendedOption[];\n\tanchorRef: RefObject< HTMLDivElement >;\n\tmin?: number;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn (\n\t\t\t<SizeControl\n\t\t\t\tariaLabel={ ariaLabel }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tmin={ min }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl\n\t\t\t\tariaLabel={ ariaLabel }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tmin={ min }\n\t\t\t/>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Label = ( { label, bind }: { label: string; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t</PropKeyProvider>\n\t);\n};\n\nfunction getCssDimensionProps( label: string, isSiteRtl: boolean ) {\n\treturn [\n\t\t[\n\t\t\t{\n\t\t\t\tbind: 'block-start',\n\t\t\t\tlabel: __( 'Top', 'elementor' ),\n\t\t\t\t/* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\tariaLabel: sprintf( __( '%s top', 'elementor' ), label ),\n\t\t\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbind: 'inline-end',\n\t\t\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\t\t\tariaLabel: isSiteRtl\n\t\t\t\t\t? /* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\t\t sprintf( __( '%s left', 'elementor' ), label )\n\t\t\t\t\t: /* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\t\t sprintf( __( '%s right', 'elementor' ), label ),\n\t\t\t\ticon: isSiteRtl ? <SideLeftIcon fontSize={ 'tiny' } /> : <SideRightIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t],\n\t\t[\n\t\t\t{\n\t\t\t\tbind: 'block-end',\n\t\t\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\t\t\t/* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\tariaLabel: sprintf( __( '%s bottom', 'elementor' ), label ),\n\t\t\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbind: 'inline-start',\n\t\t\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\t\t\tariaLabel: isSiteRtl\n\t\t\t\t\t? /* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\t\t sprintf( __( '%s right', 'elementor' ), label )\n\t\t\t\t\t: /* translators: %s is the name of the main group (margin or padding) */\n\t\t\t\t\t sprintf( __( '%s left', 'elementor' ), label ),\n\t\t\t\ticon: isSiteRtl ? <SideRightIcon fontSize={ 'tiny' } /> : <SideLeftIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t],\n\t];\n}\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { ChevronDownIcon, TextIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Popover, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { ItemSelector } from '../../components/item-selector';\nimport { type Category } from '../../components/item-selector';\nimport ControlActions from '../../control-actions/control-actions';\nimport { createControl } from '../../create-control';\nimport { enqueueFont } from './enqueue-font';\n\nexport type FontCategory = {\n\tlabel: string;\n\tfonts: string[];\n};\n\ntype FontFamilyControlProps = {\n\tfontFamilies: FontCategory[];\n\tsectionWidth: number;\n\tariaLabel?: string;\n};\n\nexport const FontFamilyControl = createControl(\n\t( { fontFamilies, sectionWidth, ariaLabel }: FontFamilyControlProps ) => {\n\t\tconst {\n\t\t\tvalue: fontFamily,\n\t\t\tsetValue: setFontFamily,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t} = useBoundProp( stringPropTypeUtil );\n\n\t\tconst popoverState = usePopupState( { variant: 'popover' } );\n\t\tconst isShowingPlaceholder = ! fontFamily && placeholder;\n\n\t\tconst mapFontSubs = React.useMemo< Category[] >( () => {\n\t\t\treturn fontFamilies.map( ( { label, fonts } ) => ( {\n\t\t\t\tlabel,\n\t\t\t\titems: fonts,\n\t\t\t} ) );\n\t\t}, [ fontFamilies ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<ControlActions>\n\t\t\t\t\t<UnstableTag\n\t\t\t\t\t\tid=\"font-family-control\"\n\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\tlabel={ fontFamily || placeholder }\n\t\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\t\tsx={\n\t\t\t\t\t\t\tisShowingPlaceholder\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t'& .MuiTag-label': {\n\t\t\t\t\t\t\t\t\t\t\tcolor: ( theme ) => theme.palette.text.tertiary,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttextTransform: 'capitalize',\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ControlActions>\n\n\t\t\t\t<Popover\n\t\t\t\t\tdisablePortal\n\t\t\t\t\tdisableScrollLock\n\t\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\t\tsx={ { my: 1.5 } }\n\t\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\t>\n\t\t\t\t\t<ItemSelector\n\t\t\t\t\t\tid=\"font-family-selector\"\n\t\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\t\tonItemChange={ setFontFamily }\n\t\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\t\ttitle={ __( 'Font family', 'elementor' ) }\n\t\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\t/>\n\t\t\t\t</Popover>\n\t\t\t</>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type ReactNode, useCallback, useEffect, useState } from 'react';\nimport { PopoverBody, PopoverHeader, PopoverMenuList, SearchField } from '@elementor/editor-ui';\nimport { Box, Divider, Link, Stack, Typography } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SelectableItem, useFilteredItemsList } from '../hooks/use-filtered-items-list';\n\nexport type Category = {\n\tlabel: string;\n\titems: string[];\n};\n\ntype ItemSelectorProps = {\n\titemsList: Category[];\n\tselectedItem: string | null;\n\tonItemChange: ( item: string ) => void;\n\tonClose: () => void;\n\tsectionWidth: number;\n\ttitle: string;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\ticon: React.ElementType< { fontSize: string } >;\n\tdisabledItems?: string[];\n\tid?: string;\n\tfooter?: ReactNode;\n\tcategoryItemContentTemplate?: ( item: SelectableItem ) => ReactNode;\n};\n\nexport const ItemSelector = ( {\n\titemsList,\n\tselectedItem,\n\tonItemChange,\n\tonClose,\n\tsectionWidth,\n\ttitle,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n\ticon,\n\tdisabledItems,\n\tid = 'item-selector',\n\tfooter,\n\tcategoryItemContentTemplate,\n}: ItemSelectorProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst filteredItemsList = useFilteredItemsList( itemsList, searchValue, disabledItems );\n\n\tconst IconComponent = icon;\n\n\tconst handleSearch = ( value: string ) => {\n\t\tsetSearchValue( value );\n\t};\n\n\tconst handleClose = () => {\n\t\tsetSearchValue( '' );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<PopoverBody width={ sectionWidth } id={ id }>\n\t\t\t<PopoverHeader title={ title } onClose={ handleClose } icon={ <IconComponent fontSize=\"tiny\" /> } />\n\t\t\t<SearchField\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tonSearch={ handleSearch }\n\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\tid={ id + '-search' }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t<Box sx={ { flex: 1, overflow: 'auto', minHeight: 0 } }>\n\t\t\t\t{ filteredItemsList.length > 0 ? (\n\t\t\t\t\t<ItemList\n\t\t\t\t\t\titemListItems={ filteredItemsList }\n\t\t\t\t\t\tsetSelectedItem={ onItemChange }\n\t\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\t\tselectedItem={ selectedItem }\n\t\t\t\t\t\titemStyle={ itemStyle }\n\t\t\t\t\t\tonDebounce={ onDebounce }\n\t\t\t\t\t\tcategoryItemContentTemplate={ categoryItemContentTemplate }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\theight=\"100%\"\n\t\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\t\toverflow=\"hidden\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<IconComponent fontSize=\"large\" />\n\t\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\t\tsx={ { display: 'flex', width: '100%', justifyContent: 'center' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span>&ldquo;</span>\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\t\t\t\tsx={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t<span>&rdquo;.</span>\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t\t{ footer }\n\t\t</PopoverBody>\n\t);\n};\n\ntype ItemListProps = {\n\titemListItems: SelectableItem[];\n\tsetSelectedItem: ( item: string ) => void;\n\thandleClose: () => void;\n\tselectedItem: string | null;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\tdisabledItems?: string[];\n\tcategoryItemContentTemplate?: ( item: SelectableItem ) => ReactNode;\n};\n\nconst ItemList = ( {\n\titemListItems,\n\tsetSelectedItem,\n\thandleClose,\n\tselectedItem,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n\tcategoryItemContentTemplate,\n}: ItemListProps ) => {\n\tconst selectedItemFound = itemListItems.find( ( item ) => item.value === selectedItem );\n\n\tconst debouncedVirtualizeChange = useDebounce( ( visibleItems: SelectableItem[] ) => {\n\t\tvisibleItems.forEach( ( item ) => {\n\t\t\tif ( item && item.type === 'item' ) {\n\t\t\t\tonDebounce( item.value );\n\t\t\t}\n\t\t} );\n\t}, 100 );\n\n\tconst memoizedItemStyle = useCallback( ( item: SelectableItem ) => itemStyle( item ), [ itemStyle ] );\n\n\treturn (\n\t\t<PopoverMenuList\n\t\t\titems={ itemListItems }\n\t\t\tselectedValue={ selectedItemFound?.value }\n\t\t\tonChange={ debouncedVirtualizeChange }\n\t\t\tonSelect={ setSelectedItem }\n\t\t\tonClose={ handleClose }\n\t\t\titemStyle={ memoizedItemStyle }\n\t\t\tdata-testid=\"item-list\"\n\t\t\tcategoryItemContentTemplate={ categoryItemContentTemplate }\n\t\t/>\n\t);\n};\n\nconst useDebounce = < TArgs extends unknown[] >( fn: ( ...args: TArgs ) => void, delay: number ) => {\n\tconst [ debouncedFn ] = useState( () => debounce( fn, delay ) );\n\tuseEffect( () => () => debouncedFn.cancel(), [ debouncedFn ] );\n\treturn debouncedFn;\n};\n","import { type Category } from '../components/item-selector';\n\nexport type SelectableItem = {\n\ttype: 'item' | 'category';\n\tvalue: string;\n\tdisabled?: boolean;\n};\n\nexport const useFilteredItemsList = ( itemsList: Category[], searchValue: string, disabledItems?: string[] ) => {\n\treturn itemsList.reduce< SelectableItem[] >( ( acc, category ) => {\n\t\tconst filteredItems = category.items.filter( ( item ) =>\n\t\t\titem.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t);\n\n\t\tif ( filteredItems.length ) {\n\t\t\tacc.push( { type: 'category', value: category.label } );\n\n\t\t\tfilteredItems.forEach( ( item ) => {\n\t\t\t\tacc.push( { type: 'item', value: item, disabled: disabledItems?.includes( item ) ?? false } );\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n};\n","type EnqueueFont = ( fontFamily: string, context?: 'preview' | 'editor' ) => void;\n\ntype ExtendedWindow = Window & {\n\telementor?: {\n\t\thelpers?: {\n\t\t\tenqueueFont?: EnqueueFont;\n\t\t};\n\t};\n};\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'editor' ) => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import * as React from 'react';\nimport { urlPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const UrlControl = createControl(\n\t( { placeholder, ariaLabel }: { placeholder?: string; ariaLabel?: string } ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( urlPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { getLinkInLinkRestriction } from '@elementor/editor-elements';\nimport { linkPropTypeUtil, type LinkPropValue } from '@elementor/editor-props';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Collapse, Grid, IconButton, Stack } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { RestrictedLinkInfotip } from '../components/restricted-link-infotip';\nimport { createControl } from '../create-control';\nimport { type ControlProps } from '../utils/types';\nimport { QueryControl } from './query-control';\nimport { SwitchControl } from './switch-control';\n\ntype Props = ControlProps< {\n\tqueryOptions: {\n\t\tparams: Record< string, unknown >;\n\t\turl: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tlabel?: string;\n\tariaLabel?: string;\n} >;\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ] | null;\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\nexport type DestinationProp = LinkPropValue[ 'value' ][ 'destination' ];\n\nconst SIZE = 'tiny';\n\nexport const LinkControl = createControl( ( props: Props ) => {\n\tconst { value, path, setValue, ...propContext } = useBoundProp( linkPropTypeUtil );\n\tconst [ linkSessionValue, setLinkSessionValue ] = useSessionStorage< LinkSessionValue >( path.join( '/' ) );\n\tconst [ isActive, setIsActive ] = useState( !! value );\n\n\tconst {\n\t\tallowCustomValues = true,\n\t\tqueryOptions,\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tcontext: { elementId },\n\t\tlabel = __( 'Link', 'elementor' ),\n\t\tariaLabel,\n\t} = props || {};\n\n\tconst [ linkInLinkRestriction, setLinkInLinkRestriction ] = useState(\n\t\tgetLinkInLinkRestriction( elementId, value )\n\t);\n\tconst shouldDisableAddingLink = ! isActive && linkInLinkRestriction.shouldRestrict;\n\n\tconst debouncedCheckRestriction = useMemo(\n\t\t() =>\n\t\t\tdebounce( () => {\n\t\t\t\tconst newRestriction = getLinkInLinkRestriction( elementId, value );\n\n\t\t\t\tif ( newRestriction.shouldRestrict && isActive ) {\n\t\t\t\t\tsetIsActive( false );\n\t\t\t\t}\n\n\t\t\t\tsetLinkInLinkRestriction( newRestriction );\n\t\t\t}, 300 ),\n\t\t[ elementId, isActive, value ]\n\t);\n\n\tuseEffect( () => {\n\t\tdebouncedCheckRestriction();\n\n\t\tconst handleInlineLinkChanged = ( event: Event ) => {\n\t\t\tconst customEvent = event as CustomEvent< { elementId: string } >;\n\n\t\t\tif ( customEvent.detail.elementId === elementId ) {\n\t\t\t\tdebouncedCheckRestriction();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener( 'elementor:inline-link-changed', handleInlineLinkChanged );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'elementor:inline-link-changed', handleInlineLinkChanged );\n\t\t\tdebouncedCheckRestriction.cancel();\n\t\t};\n\t}, [ elementId, debouncedCheckRestriction ] );\n\n\tconst onEnabledChange = () => {\n\t\tsetLinkInLinkRestriction( getLinkInLinkRestriction( elementId, value ) );\n\n\t\tif ( linkInLinkRestriction.shouldRestrict && ! isActive ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newState = ! isActive;\n\t\tsetIsActive( newState );\n\n\t\tif ( ! newState && value !== null ) {\n\t\t\tsetValue( null );\n\t\t}\n\n\t\tif ( newState && linkSessionValue?.value ) {\n\t\t\tsetValue( linkSessionValue.value );\n\t\t}\n\n\t\tsetLinkSessionValue( {\n\t\t\tvalue: linkSessionValue?.value,\n\t\t\tmeta: { isEnabled: newState },\n\t\t} );\n\t};\n\n\tconst onSaveValueToSession = ( newValue: DestinationProp[ 'value' ] | null ) => {\n\t\tconst valueToSave: LinkPropValue[ 'value' ] | null = newValue\n\t\t\t? {\n\t\t\t\t\t...value,\n\t\t\t\t\tdestination: newValue,\n\t\t\t }\n\t\t\t: null;\n\n\t\tsetLinkSessionValue( { ...linkSessionValue, value: valueToSave } );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tmarginInlineEnd: -0.75,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t<RestrictedLinkInfotip isVisible={ ! isActive } linkInLinkRestriction={ linkInLinkRestriction }>\n\t\t\t\t\t\t<ToggleIconControl\n\t\t\t\t\t\t\tdisabled={ shouldDisableAddingLink }\n\t\t\t\t\t\t\tactive={ isActive }\n\t\t\t\t\t\t\tonIconClick={ onEnabledChange }\n\t\t\t\t\t\t\tlabel={ __( 'Toggle link', 'elementor' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</RestrictedLinkInfotip>\n\t\t\t\t</Stack>\n\t\t\t\t<Collapse in={ isActive } timeout=\"auto\" unmountOnExit>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'destination' }>\n\t\t\t\t\t\t\t<QueryControl\n\t\t\t\t\t\t\t\tqueryOptions={ queryOptions }\n\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\tonSetValue={ onSaveValueToSession }\n\t\t\t\t\t\t\t\tariaLabel={ ariaLabel || label }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'isTargetBlank' }>\n\t\t\t\t\t\t\t<Grid container alignItems=\"center\" flexWrap=\"nowrap\" justifyContent=\"space-between\">\n\t\t\t\t\t\t\t\t<Grid item>\n\t\t\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Open in a new tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item sx={ { marginInlineEnd: -1 } }>\n\t\t\t\t\t\t\t\t\t<SwitchControl />\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</PropKeyProvider>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Collapse>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\ntype ToggleIconControlProps = {\n\tdisabled: boolean;\n\tactive: boolean;\n\tonIconClick: () => void;\n\tlabel?: string;\n};\n\nconst ToggleIconControl = ( { disabled, active, onIconClick, label }: ToggleIconControlProps ) => {\n\treturn (\n\t\t<IconButton size={ SIZE } onClick={ onIconClick } aria-label={ label } disabled={ disabled }>\n\t\t\t{ active ? <MinusIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconButton>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { type LinkInLinkRestriction, selectElement } from '@elementor/editor-elements';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertAction, AlertTitle, Box, Infotip, Link } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst learnMoreButton = {\n\tlabel: __( 'Learn More', 'elementor' ),\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n};\n\nconst INFOTIP_CONTENT = {\n\tdescendant: __(\n\t\t'To add a link or action to this element, first remove the link or action from the elements inside of it.',\n\t\t'elementor'\n\t),\n\tancestor: __(\n\t\t'To add a link or action to this container, first remove the link or action from its parent container.',\n\t\t'elementor'\n\t),\n};\n\ntype RestrictedLinkInfotipProps = PropsWithChildren< {\n\tlinkInLinkRestriction: LinkInLinkRestriction;\n\tisVisible: boolean;\n} >;\n\nexport const RestrictedLinkInfotip: React.FC< RestrictedLinkInfotipProps > = ( {\n\tlinkInLinkRestriction,\n\tisVisible,\n\tchildren,\n} ) => {\n\tconst { shouldRestrict, reason, elementId } = linkInLinkRestriction;\n\n\tconst handleTakeMeClick = () => {\n\t\tif ( elementId ) {\n\t\t\tselectElement( elementId );\n\t\t}\n\t};\n\n\tconst content = (\n\t\t<Alert\n\t\t\tcolor=\"secondary\"\n\t\t\ticon={ <InfoCircleFilledIcon /> }\n\t\t\taction={\n\t\t\t\t<AlertAction\n\t\t\t\t\tsx={ { width: 'fit-content' } }\n\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tonClick={ handleTakeMeClick }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Take me there', 'elementor' ) }\n\t\t\t\t</AlertAction>\n\t\t\t}\n\t\t>\n\t\t\t<AlertTitle>{ __( 'Nested links', 'elementor' ) }</AlertTitle>\n\t\t\t<Box component=\"span\">\n\t\t\t\t{ INFOTIP_CONTENT[ reason ?? 'descendant' ] }{ ' ' }\n\t\t\t\t<Link href={ learnMoreButton.href } target=\"_blank\" color=\"info.main\">\n\t\t\t\t\t{ learnMoreButton.label }\n\t\t\t\t</Link>\n\t\t\t</Box>\n\t\t</Alert>\n\t);\n\n\treturn shouldRestrict && isVisible ? (\n\t\t<Infotip\n\t\t\tplacement=\"right\"\n\t\t\tcontent={ content }\n\t\t\tcolor=\"secondary\"\n\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Infotip>\n\t) : (\n\t\t<>{ children }</>\n\t);\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { numberPropTypeUtil, stringPropTypeUtil, urlPropTypeUtil } from '@elementor/editor-props';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\nimport { SearchIcon } from '@elementor/icons';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport {\n\tAutocomplete,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from '../components/autocomplete';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { type DestinationProp } from './link-control';\n\ntype Props = {\n\tqueryOptions: {\n\t\tparams: Record< string, unknown >;\n\t\turl: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tonSetValue?: ( value: DestinationProp | null ) => void;\n\tariaLabel?: string;\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\n\ntype FetchOptionsParams = Record< string, unknown > & { term: string };\n\nexport const QueryControl = createControl( ( props: Props ) => {\n\tconst { value, setValue } = useBoundProp< DestinationProp >();\n\n\tconst {\n\t\tallowCustomValues = true,\n\t\tqueryOptions: { url, params = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tonSetValue,\n\t\tariaLabel,\n\t} = props || {};\n\n\tconst normalizedPlaceholder = placeholder || __( 'Search', 'elementor' );\n\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value?.value )\n\t);\n\n\tconst onOptionChange = ( newValue: number | null ) => {\n\t\tif ( newValue === null ) {\n\t\t\tsetValue( null );\n\t\t\tonSetValue?.( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst valueToSave = {\n\t\t\t$$type: 'query',\n\t\t\tvalue: {\n\t\t\t\tid: numberPropTypeUtil.create( newValue ),\n\t\t\t\tlabel: stringPropTypeUtil.create( findMatchingOption( options, newValue )?.label || null ),\n\t\t\t},\n\t\t};\n\n\t\tsetValue( valueToSave );\n\t\tonSetValue?.( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tif ( ! newValue ) {\n\t\t\tsetValue( null );\n\t\t\tonSetValue?.( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst newLinkValue = newValue?.trim() || '';\n\t\tconst valueToSave = newLinkValue ? urlPropTypeUtil.create( newLinkValue ) : null;\n\n\t\tsetValue( valueToSave );\n\t\tonSetValue?.( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst updateOptions = ( newValue: string | null ) => {\n\t\tsetOptions( [] );\n\n\t\tif ( ! newValue || ! url || newValue.length < minInputLength ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounceFetch( { ...params, term: newValue } );\n\t};\n\n\tconst debounceFetch = useMemo(\n\t\t() =>\n\t\t\tdebounce(\n\t\t\t\t( queryParams: FetchOptionsParams ) =>\n\t\t\t\t\tfetchOptions( url, queryParams ).then( ( newOptions ) => {\n\t\t\t\t\t\tsetOptions( formatOptions( newOptions ) );\n\t\t\t\t\t} ),\n\t\t\t\t400\n\t\t\t),\n\t\t[ url ]\n\t);\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Autocomplete\n\t\t\t\toptions={ options }\n\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\tplaceholder={ normalizedPlaceholder }\n\t\t\t\tstartAdornment={ <SearchIcon fontSize=\"tiny\" /> }\n\t\t\t\tvalue={ value?.value?.id?.value || value?.value }\n\t\t\t\tonOptionChange={ onOptionChange }\n\t\t\t\tonTextChange={ onTextChange }\n\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\tdisablePortal={ false }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n\nasync function fetchOptions( ajaxUrl: string, params: FetchOptionsParams ) {\n\tif ( ! params || ! ajaxUrl ) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst { data: response } = await httpService().get< Response >( ajaxUrl, { params } );\n\n\t\treturn response.data.value;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction formatOptions( options: FlatOption[] | CategorizedOption[] ): FlatOption[] | CategorizedOption[] {\n\tconst compareKey = isCategorizedOptionPool( options ) ? 'groupLabel' : 'label';\n\n\treturn options.sort( ( a, b ) =>\n\t\ta[ compareKey ] && b[ compareKey ] ? a[ compareKey ].localeCompare( b[ compareKey ] ) : 0\n\t);\n}\n\nfunction generateFirstLoadedOption( unionValue: DestinationProp | null ): FlatOption[] {\n\tconst value = unionValue?.id?.value;\n\tconst label = unionValue?.label?.value;\n\tconst type = unionValue?.id?.$$type || 'url';\n\n\treturn value && label && type === 'number'\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tid: value.toString(),\n\t\t\t\t\tlabel,\n\t\t\t\t},\n\t\t ]\n\t\t: [];\n}\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport {\n\tAutocomplete as AutocompleteBase,\n\ttype AutocompleteRenderInputParams,\n\tBox,\n\tIconButton,\n\tInputAdornment,\n\tTextField,\n} from '@elementor/ui';\n\nexport type FlatOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel?: never;\n};\n\nexport type CategorizedOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel: string;\n};\n\nexport type Props = {\n\toptions: FlatOption[] | CategorizedOption[];\n\tvalue?: number | string | null;\n\tonOptionChange: ( newValue: number | null ) => void;\n\tonTextChange?: ( newValue: string | null ) => void;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n\tminInputLength?: number;\n\tstartAdornment?: React.ReactNode;\n\tinputProps?: Record< string, unknown >;\n\tdisablePortal?: boolean;\n};\n\nexport const Autocomplete = forwardRef( ( props: Props, ref ) => {\n\tconst {\n\t\toptions,\n\t\tonOptionChange,\n\t\tonTextChange,\n\t\tallowCustomValues = false,\n\t\tplaceholder = '',\n\t\tminInputLength = 2,\n\t\tvalue = '',\n\t\tstartAdornment,\n\t\tdisablePortal = true,\n\t\tinputProps,\n\t\t...restProps\n\t} = props;\n\n\tconst optionKeys = factoryFilter( value, options, minInputLength ).map( ( { id } ) => id );\n\tconst allowClear = !! value;\n\n\t// Prevents MUI warning when freeSolo/allowCustomValues is false\n\tconst muiWarningPreventer = allowCustomValues || !! value?.toString()?.length;\n\n\tconst isOptionEqualToValue = muiWarningPreventer ? undefined : () => true;\n\n\tconst isValueFromOptions = typeof value === 'number' && !! findMatchingOption( options, value );\n\n\tconst valueLength = value?.toString()?.length ?? 0;\n\tconst meetsMinLength = valueLength >= minInputLength;\n\tconst shouldOpen = meetsMinLength && ( allowCustomValues ? optionKeys.length > 0 : true );\n\n\treturn (\n\t\t<AutocompleteBase\n\t\t\t{ ...restProps }\n\t\t\tref={ ref }\n\t\t\tforcePopupIcon={ false }\n\t\t\tdisablePortal={ disablePortal }\n\t\t\tdisableClearable={ true } // Disabled component's auto clear icon to use our custom one instead\n\t\t\tfreeSolo={ allowCustomValues }\n\t\t\topenOnFocus={ false }\n\t\t\topen={ shouldOpen }\n\t\t\tvalue={ value?.toString() || '' }\n\t\t\tsize={ 'tiny' }\n\t\t\tonChange={ ( _, newValue ) => onOptionChange( Number( newValue ) ) }\n\t\t\treadOnly={ isValueFromOptions }\n\t\t\toptions={ optionKeys }\n\t\t\tgetOptionKey={ ( optionId ) => findMatchingOption( options, optionId )?.id || optionId }\n\t\t\tgetOptionLabel={ ( optionId ) => findMatchingOption( options, optionId )?.label || optionId.toString() }\n\t\t\tgroupBy={\n\t\t\t\tisCategorizedOptionPool( options )\n\t\t\t\t\t? ( optionId: string ) => findMatchingOption( options, optionId )?.groupLabel || optionId\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tisOptionEqualToValue={ isOptionEqualToValue }\n\t\t\tfilterOptions={ () => optionKeys }\n\t\t\trenderOption={ ( optionProps, optionId ) => (\n\t\t\t\t<Box component=\"li\" { ...optionProps } key={ optionProps.id }>\n\t\t\t\t\t{ findMatchingOption( options, optionId )?.label ?? optionId }\n\t\t\t\t</Box>\n\t\t\t) }\n\t\t\trenderInput={ ( params ) => (\n\t\t\t\t<TextInput\n\t\t\t\t\tparams={ params }\n\t\t\t\t\thandleChange={ ( newValue ) => onTextChange?.( newValue ) }\n\t\t\t\t\tallowClear={ allowClear }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\thasSelectedValue={ isValueFromOptions }\n\t\t\t\t\tstartAdornment={ startAdornment }\n\t\t\t\t\textraInputProps={ inputProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n} );\n\nconst TextInput = ( {\n\tparams,\n\tallowClear,\n\tplaceholder,\n\thandleChange,\n\thasSelectedValue,\n\tstartAdornment,\n\textraInputProps,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n\tplaceholder: string;\n\thasSelectedValue: boolean;\n\tstartAdornment?: React.ReactNode;\n\textraInputProps?: Record< string, unknown >;\n} ) => {\n\tconst onChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\thandleChange( event.target.value );\n\t};\n\n\treturn (\n\t\t<TextField\n\t\t\t{ ...params }\n\t\t\tplaceholder={ placeholder }\n\t\t\tonChange={ onChange }\n\t\t\tinputProps={ { ...( params.inputProps ?? {} ), ...( extraInputProps ?? {} ) } }\n\t\t\tsx={ {\n\t\t\t\t'& .MuiInputBase-input': {\n\t\t\t\t\tcursor: hasSelectedValue ? 'default' : undefined,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tInputProps={ {\n\t\t\t\t...params.InputProps,\n\t\t\t\tstartAdornment: startAdornment || params.InputProps.startAdornment,\n\t\t\t\tendAdornment: <ClearButton params={ params } allowClear={ allowClear } handleChange={ handleChange } />,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ClearButton = ( {\n\tallowClear,\n\thandleChange,\n\tparams,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n} ) => (\n\t<InputAdornment position=\"end\">\n\t\t{ allowClear && (\n\t\t\t<IconButton size={ params.size } onClick={ () => handleChange( null ) } sx={ { cursor: 'pointer' } }>\n\t\t\t\t<XIcon fontSize={ params.size } />\n\t\t\t</IconButton>\n\t\t) }\n\t</InputAdornment>\n);\n\nexport function findMatchingOption(\n\toptions: FlatOption[] | CategorizedOption[],\n\toptionId: string | number | null = null\n) {\n\tconst formattedOption = ( optionId || '' ).toString();\n\n\treturn options.find( ( { id } ) => formattedOption === id.toString() );\n}\n\nexport function isCategorizedOptionPool( options: FlatOption[] | CategorizedOption[] ): options is CategorizedOption[] {\n\tif ( options.length <= 1 ) {\n\t\treturn false;\n\t}\n\n\tconst uniqueGroupLabels = new Set( options.map( ( option ) => option.groupLabel ) );\n\n\treturn uniqueGroupLabels.size > 1; // should not categorize options if there is only one group\n}\n\nfunction factoryFilter< T extends FlatOption[] | CategorizedOption[] >(\n\tnewValue: string | number | null,\n\toptions: T,\n\tminInputLength: number\n): T {\n\tif ( null === newValue ) {\n\t\treturn options;\n\t}\n\n\tconst formattedValue = String( newValue || '' )?.toLowerCase();\n\n\tif ( formattedValue.length < minInputLength ) {\n\t\treturn new Array( 0 ) as T;\n\t}\n\n\treturn options.filter(\n\t\t( option ) =>\n\t\t\tString( option.id ).toLowerCase().includes( formattedValue ) ||\n\t\t\toption.label.toLowerCase().includes( formattedValue )\n\t) as T;\n}\n","import * as React from 'react';\nimport { booleanPropTypeUtil } from '@elementor/editor-props';\nimport { Box, Switch } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context/use-bound-prop';\nimport { createControl } from '../create-control';\n\nexport const SwitchControl = createControl( () => {\n\tconst { value, setValue, disabled } = useBoundProp( booleanPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.checked );\n\t};\n\n\treturn (\n\t\t<Box sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t<Switch\n\t\t\t\tchecked={ !! value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( disabled ? { style: { opacity: 0 } } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Box>\n\t);\n} );\n","import * as React from 'react';\nimport { getElementLabel } from '@elementor/editor-elements';\nimport { stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Select, type SelectChangeEvent, styled, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ConditionalControlInfotip } from '../components/conditional-control-infotip';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype Props = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n\tfallbackLabels?: Record< string, string >;\n};\n\nconst StyledSelect = styled( Select )( () => ( { '.MuiSelect-select.Mui-disabled': { cursor: 'not-allowed' } } ) );\n\nexport const HtmlTagControl = createControl( ( { options, onChange, fallbackLabels = {} }: Props ) => {\n\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\tconst newValue = event.target.value || null;\n\n\t\tonChange?.( newValue, value );\n\t\tsetValue( newValue );\n\t};\n\n\tconst elementLabel = getElementLabel() ?? 'element';\n\tconst infoTipProps = {\n\t\ttitle: __( 'HTML Tag', 'elementor' ),\n\t\t/* translators: %s is the element name. */\n\t\tdescription: __(\n\t\t\t`The tag is locked to 'a' tag because this %s has a link. To pick a different tag, remove the link first.`,\n\t\t\t'elementor'\n\t\t).replace( '%s', elementLabel ),\n\t\tisEnabled: !! disabled,\n\t};\n\n\tconst renderValue = ( selectedValue: string | null ) => {\n\t\tif ( selectedValue ) {\n\t\t\treturn findOptionByValue( selectedValue )?.label || fallbackLabels[ selectedValue ] || selectedValue;\n\t\t}\n\n\t\tif ( ! placeholder ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\treturn (\n\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t{ displayText }\n\t\t\t</Typography>\n\t\t);\n\t};\n\n\tconst findOptionByValue = ( searchValue: string | null ) => options.find( ( opt ) => opt.value === searchValue );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<ConditionalControlInfotip { ...infoTipProps }>\n\t\t\t\t<StyledSelect\n\t\t\t\t\tsx={ { overflow: 'hidden', cursor: disabled ? 'not-allowed' : undefined } }\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\trenderValue={ renderValue }\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tfullWidth\n\t\t\t\t>\n\t\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) ) }\n\t\t\t\t</StyledSelect>\n\t\t\t</ConditionalControlInfotip>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { InfoAlert } from '@elementor/editor-ui';\nimport { type AlertProps, AlertTitle, Box, Infotip, type InfotipProps, useTheme } from '@elementor/ui';\nimport { DirectionProvider } from '@elementor/ui';\n\ntype Props = {\n\tinfotipProps?: Partial< InfotipProps >;\n\talertProps?: Partial< AlertProps >;\n\ttitle?: string;\n\tdescription?: React.ReactNode | string;\n\tisEnabled?: boolean;\n};\n\nconst DEFAULT_COLOR = 'secondary';\n\nexport const ConditionalControlInfotip = React.forwardRef(\n\t( { children, title, description, alertProps, infotipProps, ...props }: React.PropsWithChildren< Props >, ref ) => {\n\t\tconst theme = useTheme();\n\t\tconst isUiRtl = 'rtl' === theme.direction;\n\t\tconst isEnabled = props.isEnabled && ( title || description );\n\n\t\treturn (\n\t\t\t<Box ref={ ref }>\n\t\t\t\t{ isEnabled ? (\n\t\t\t\t\t<DirectionProvider rtl={ isUiRtl }>\n\t\t\t\t\t\t<Infotip\n\t\t\t\t\t\t\tplacement={ 'right' }\n\t\t\t\t\t\t\tcolor={ DEFAULT_COLOR }\n\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\t\t\toffset: [ 0, 10 ],\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],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t{ ...infotipProps }\n\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t<InfoAlert\n\t\t\t\t\t\t\t\t\tcolor={ DEFAULT_COLOR }\n\t\t\t\t\t\t\t\t\tsx={ { width: 300, px: 1.5, py: 2 } }\n\t\t\t\t\t\t\t\t\t{ ...alertProps }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Box sx={ { flexDirection: 'column', display: 'flex', gap: 0.5 } }>\n\t\t\t\t\t\t\t\t\t\t<AlertTitle>{ title }</AlertTitle>\n\t\t\t\t\t\t\t\t\t\t<Box>{ description }</Box>\n\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t</InfoAlert>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</Infotip>\n\t\t\t\t\t</DirectionProvider>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { SizeControl } from './size-control';\n\nexport const GapControl = ( { label }: { label: string } ) => {\n\tconst stackRef = useRef< HTMLDivElement >( null );\n\n\tconst { disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst {\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tpropType,\n\t\tplaceholder: directionPlaceholder,\n\t\tdisabled: directionDisabled,\n\t} = useBoundProp( layoutDirectionPropTypeUtil );\n\n\tconst { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();\n\n\tconst inferIsLinked = () => {\n\t\tif ( layoutDirectionPropTypeUtil.isValid( masterValue ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! masterValue && layoutDirectionPropTypeUtil.isValid( masterPlaceholder ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst [ isLinked, setIsLinked ] = useState( () => inferIsLinked() );\n\n\tconst activeBreakpoint = useActiveBreakpoint();\n\tuseLayoutEffect( () => {\n\t\tsetIsLinked( inferIsLinked() );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\tconst onLinkToggle = () => {\n\t\tsetIsLinked( ( prev ) => ! prev );\n\n\t\tif ( ! layoutDirectionPropTypeUtil.isValid( masterValue ) ) {\n\t\t\tconst currentValue = masterValue ? masterValue : null;\n\n\t\t\tif ( ! currentValue ) {\n\t\t\t\tsetMasterValue( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetMasterValue(\n\t\t\t\tlayoutDirectionPropTypeUtil.create( {\n\t\t\t\t\trow: currentValue,\n\t\t\t\t\tcolumn: currentValue,\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentValue = directionValue?.column ?? directionValue?.row ?? null;\n\n\t\tsetMasterValue( currentValue );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || directionDisabled;\n\n\tconst propProviderProps = {\n\t\tpropType,\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tplaceholder: directionPlaceholder,\n\t};\n\n\tconst hasPlaceholders = ! masterValue && ( directionPlaceholder || masterPlaceholder );\n\n\treturn (\n\t\t<PropProvider { ...propProviderProps }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tisPlaceholder={ hasPlaceholders }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ stackRef }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Column', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'column' }\n\t\t\t\t\t\t\tariaLabel={ __( 'Column gap', 'elementor' ) }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\tanchorRef={ stackRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Row', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'row' }\n\t\t\t\t\t\t\tariaLabel={ __( 'Row gap', 'elementor' ) }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\tanchorRef={ stackRef }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tbind,\n\tariaLabel,\n\tisLinked,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tariaLabel?: string;\n\tisLinked: boolean;\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl anchorRef={ anchorRef } ariaLabel={ ariaLabel } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl anchorRef={ anchorRef } ariaLabel={ ariaLabel } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { ArrowsMoveHorizontalIcon, ArrowsMoveVerticalIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent, Stack, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst RATIO_OPTIONS = [\n\t{ label: __( 'Auto', 'elementor' ), value: 'auto' },\n\t{ label: '1/1', value: '1/1' },\n\t{ label: '4/3', value: '4/3' },\n\t{ label: '3/4', value: '3/4' },\n\t{ label: '16/9', value: '16/9' },\n\t{ label: '9/16', value: '9/16' },\n\t{ label: '3/2', value: '3/2' },\n\t{ label: '2/3', value: '2/3' },\n];\n\nconst CUSTOM_RATIO = 'custom';\n\nexport const AspectRatioControl = createControl( ( { label }: { label: string } ) => {\n\tconst { value: aspectRatioValue, setValue: setAspectRatioValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustomSelected =\n\t\taspectRatioValue && ! RATIO_OPTIONS.some( ( option ) => option.value === aspectRatioValue );\n\tconst [ initialWidth, initialHeight ] = isCustomSelected ? aspectRatioValue.split( '/' ) : [ '', '' ];\n\n\tconst [ isCustom, setIsCustom ] = useState( isCustomSelected );\n\tconst [ customWidth, setCustomWidth ] = useState< string >( initialWidth );\n\tconst [ customHeight, setCustomHeight ] = useState< string >( initialHeight );\n\tconst [ selectedValue, setSelectedValue ] = useState< string >(\n\t\tisCustomSelected ? CUSTOM_RATIO : aspectRatioValue || ''\n\t);\n\n\tuseEffect( () => {\n\t\tconst isCustomValue =\n\t\t\taspectRatioValue && ! RATIO_OPTIONS.some( ( option ) => option.value === aspectRatioValue );\n\n\t\tif ( isCustomValue ) {\n\t\t\tconst [ width, height ] = aspectRatioValue.split( '/' );\n\t\t\tsetCustomWidth( width || '' );\n\t\t\tsetCustomHeight( height || '' );\n\t\t\tsetSelectedValue( CUSTOM_RATIO );\n\t\t\tsetIsCustom( true );\n\t\t} else {\n\t\t\tsetSelectedValue( aspectRatioValue || '' );\n\t\t\tsetIsCustom( false );\n\t\t\tsetCustomWidth( '' );\n\t\t\tsetCustomHeight( '' );\n\t\t}\n\t}, [ aspectRatioValue ] );\n\n\tconst handleSelectChange = ( event: SelectChangeEvent< string > ) => {\n\t\tconst newValue = event.target.value;\n\t\tconst isCustomRatio = newValue === CUSTOM_RATIO;\n\n\t\tsetIsCustom( isCustomRatio );\n\t\tsetSelectedValue( newValue );\n\n\t\tif ( isCustomRatio ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAspectRatioValue( newValue );\n\t};\n\tconst handleCustomWidthChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst newWidth = event.target.value;\n\t\tsetCustomWidth( newWidth );\n\n\t\tif ( newWidth && customHeight ) {\n\t\t\tsetAspectRatioValue( `${ newWidth }/${ customHeight }` );\n\t\t}\n\t};\n\n\tconst handleCustomHeightChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst newHeight = event.target.value;\n\t\tsetCustomHeight( newHeight );\n\n\t\tif ( customWidth && newHeight ) {\n\t\t\tsetAspectRatioValue( `${ customWidth }/${ newHeight }` );\n\t\t}\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Stack direction=\"column\" gap={ 2 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisplayEmpty\n\t\t\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\t\tonChange={ handleSelectChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ [ ...RATIO_OPTIONS, { label: __( 'Custom', 'elementor' ), value: CUSTOM_RATIO } ].map(\n\t\t\t\t\t\t\t\t( { label: optionLabel, ...props } ) => (\n\t\t\t\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t\t\t\t{ optionLabel }\n\t\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t{ isCustom && (\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<TextField\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\tvalue={ customWidth }\n\t\t\t\t\t\t\t\tonChange={ handleCustomWidthChange }\n\t\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\t\tstartAdornment: <ArrowsMoveHorizontalIcon fontSize=\"tiny\" />,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\tvalue={ customHeight }\n\t\t\t\t\t\t\t\tonChange={ handleCustomHeightChange }\n\t\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\t\tstartAdornment: <ArrowsMoveVerticalIcon fontSize=\"tiny\" />,\n\t\t\t\t\t\t\t\t} }\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) }\n\t\t\t</Stack>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useCurrentUserCapabilities } from '@elementor/editor-current-user';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack, styled, ThemeProvider } from '@elementor/ui';\nimport { type OpenOptions, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ConditionalControlInfotip } from '../components/conditional-control-infotip';\nimport { EnableUnfilteredModal } from '../components/enable-unfiltered-modal';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\nconst TILE_SIZE = 8;\nconst TILE_WHITE = 'transparent';\nconst TILE_BLACK = '#c1c1c1';\nconst TILES_GRADIENT_FORMULA = `linear-gradient(45deg, ${ TILE_BLACK } 25%, ${ TILE_WHITE } 0, ${ TILE_WHITE } 75%, ${ TILE_BLACK } 0, ${ TILE_BLACK })`;\n\nconst StyledCard = styled( Card )`\n\tbackground-color: white;\n\tbackground-image: ${ TILES_GRADIENT_FORMULA }, ${ TILES_GRADIENT_FORMULA };\n\tbackground-size: ${ TILE_SIZE }px ${ TILE_SIZE }px;\n\tbackground-position:\n\t\t0 0,\n\t\t${ TILE_SIZE / 2 }px ${ TILE_SIZE / 2 }px;\n\tborder: none;\n`;\n\nconst StyledCardMediaContainer = styled( Stack )`\n\tposition: relative;\n\theight: 140px;\n\tobject-fit: contain;\n\tpadding: 5px;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground-color: rgba( 255, 255, 255, 0.37 );\n`;\n\nconst MODE_BROWSE: OpenOptions = { mode: 'browse' };\nconst MODE_UPLOAD: OpenOptions = { mode: 'upload' };\n\nexport const SvgMediaControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst [ unfilteredModalOpenState, setUnfilteredModalOpenState ] = useState( false );\n\tconst { isAdmin } = useCurrentUserCapabilities();\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes: [ 'svg' ],\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\tconst onCloseUnfilteredModal = ( enabled: boolean ) => {\n\t\tsetUnfilteredModalOpenState( false );\n\n\t\tif ( enabled ) {\n\t\t\topen( MODE_UPLOAD );\n\t\t}\n\t};\n\n\tconst handleClick = ( openOptions?: OpenOptions ) => {\n\t\tif ( ! allowSvgUpload && openOptions === MODE_UPLOAD ) {\n\t\t\tsetUnfilteredModalOpenState( true );\n\t\t} else {\n\t\t\topen( openOptions );\n\t\t}\n\t};\n\n\tconst infotipProps = {\n\t\ttitle: __( \"Sorry, you can't upload that file yet.\", 'elementor' ),\n\t\tdescription: (\n\t\t\t<>\n\t\t\t\t{ __( 'To upload them anyway, ask the site administrator to enable unfiltered', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t{ __( 'file uploads.', 'elementor' ) }\n\t\t\t</>\n\t\t),\n\t\tisEnabled: ! isAdmin,\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1 } aria-label=\"SVG Control\">\n\t\t\t<EnableUnfilteredModal open={ unfilteredModalOpenState } onClose={ onCloseUnfilteredModal } />\n\t\t\t<ControlActions>\n\t\t\t\t<StyledCard variant=\"outlined\">\n\t\t\t\t\t<StyledCardMediaContainer>\n\t\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t\t<CircularProgress role=\"progressbar\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<CardMedia\n\t\t\t\t\t\t\t\tcomponent=\"img\"\n\t\t\t\t\t\t\t\timage={ src }\n\t\t\t\t\t\t\t\talt={ __( 'Preview SVG', 'elementor' ) }\n\t\t\t\t\t\t\t\tsx={ { maxHeight: '140px', width: '50px' } }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</StyledCardMediaContainer>\n\t\t\t\t\t<CardOverlay\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba( 0, 0, 0, 0.75 )',\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\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_BROWSE ) }\n\t\t\t\t\t\t\t\taria-label=\"Select SVG\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Select SVG', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<ConditionalControlInfotip { ...infotipProps }>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ThemeProvider colorScheme={ isAdmin ? 'light' : 'dark' }>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ ! isAdmin }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => isAdmin && handleClick( MODE_UPLOAD ) }\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Upload SVG\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</ThemeProvider>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</ConditionalControlInfotip>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</CardOverlay>\n\t\t\t\t</StyledCard>\n\t\t\t</ControlActions>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport {\n\tButton,\n\tCircularProgress,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogHeader,\n\tDialogTitle,\n\tDivider,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useUpdateUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\ntype EnableUnfilteredModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n};\n\ntype LocalModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n\tisPending?: boolean;\n\tisError?: boolean;\n\thandleEnable: () => void;\n};\n\nconst ADMIN_TITLE_TEXT = __( 'Enable Unfiltered Uploads', 'elementor' );\nconst ADMIN_CONTENT_TEXT = __(\n\t'Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.',\n\t'elementor'\n);\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT1 = __( 'Failed to enable unfiltered files upload.', 'elementor' );\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT2 = __(\n\t'You can try again, if the problem persists, please contact support.',\n\t'elementor'\n);\n\nconst WAIT_FOR_CLOSE_TIMEOUT_MS = 300;\n\nexport const EnableUnfilteredModal = ( props: EnableUnfilteredModalProps ) => {\n\tconst { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();\n\tconst [ isError, setIsError ] = useState( false );\n\n\tconst onClose = ( enabled: boolean ) => {\n\t\tprops.onClose( enabled );\n\t\tsetTimeout( () => setIsError( false ), WAIT_FOR_CLOSE_TIMEOUT_MS );\n\t};\n\n\tconst handleEnable = async () => {\n\t\ttry {\n\t\t\tconst response = await mutateAsync( { allowUnfilteredFilesUpload: true } );\n\t\t\tif ( response?.data?.success === false ) {\n\t\t\t\tsetIsError( true );\n\t\t\t} else {\n\t\t\t\tprops.onClose( true );\n\t\t\t}\n\t\t} catch {\n\t\t\tsetIsError( true );\n\t\t}\n\t};\n\n\tconst dialogProps = { ...props, isPending, handleEnable, isError, onClose };\n\n\treturn <AdminDialog { ...dialogProps } />;\n};\n\nconst AdminDialog = ( { open, onClose, handleEnable, isPending, isError }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>\n\t\t\t\t{ isError ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ADMIN_FAILED_CONTENT_TEXT_PT1 } <br /> { ADMIN_FAILED_CONTENT_TEXT_PT2 }\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tADMIN_CONTENT_TEXT\n\t\t\t\t) }\n\t\t\t</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } color=\"secondary\" onClick={ () => onClose( false ) }>\n\t\t\t\t{ __( 'Cancel', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tsize={ 'medium' }\n\t\t\t\tonClick={ () => handleEnable() }\n\t\t\t\tvariant=\"contained\"\n\t\t\t\tcolor=\"primary\"\n\t\t\t\tdisabled={ isPending }\n\t\t\t>\n\t\t\t\t{ isPending ? <CircularProgress size={ 24 } /> : __( 'Enable', 'elementor' ) }\n\t\t\t</Button>\n\t\t</DialogActions>\n\t</Dialog>\n);\n","import * as React from 'react';\nimport { backgroundPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { SelectControl } from '../select-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nconst clipOptions = [\n\t{ label: __( 'Full element', 'elementor' ), value: 'border-box' },\n\t{ label: __( 'Padding edges', 'elementor' ), value: 'padding-box' },\n\t{ label: __( 'Content edges', 'elementor' ), value: 'content-box' },\n\t{ label: __( 'Text', 'elementor' ), value: 'text' },\n];\n\nconst colorLabel = __( 'Color', 'elementor' );\nconst clipLabel = __( 'Clipping', 'elementor' );\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind=\"background-overlay\">\n\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t</PropKeyProvider>\n\t\t\t<BackgroundColorField />\n\t\t\t<BackgroundClipField />\n\t\t</PropProvider>\n\t);\n} );\n\nconst BackgroundColorField = () => {\n\treturn (\n\t\t<PropKeyProvider 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>{ colorLabel }</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</PropKeyProvider>\n\t);\n};\n\nconst BackgroundClipField = () => {\n\treturn (\n\t\t<PropKeyProvider bind=\"clip\">\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>{ clipLabel }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SelectControl options={ clipOptions } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\tcolorPropTypeUtil,\n} from '@elementor/editor-props';\nimport { Box, CardMedia, styled, Tab, TabPanel, Tabs, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlRepeater, ItemsContainer, TooltipAddItemAction } from '../../../components/control-repeater';\nimport { DisableItemAction } from '../../../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../../components/control-repeater/actions/remove-item-action';\nimport { useRepeaterContext } from '../../../components/control-repeater/context/repeater-context';\nimport { EditItemPopover } from '../../../components/control-repeater/items/edit-item-popover';\nimport { Item } from '../../../components/control-repeater/items/item';\nimport { type CollectionPropUtil, type RepeatablePropValue } from '../../../components/control-repeater/types';\nimport { PopoverContent } from '../../../components/popover-content';\nimport { RepeaterHeader } from '../../../components/repeater/repeater-header';\nimport { createControl } from '../../../create-control';\nimport { env } from '../../../env';\nimport { ColorControl } from '../../color-control';\nimport { ImageControl } from '../../image-control';\nimport {\n\tBackgroundGradientColorControl,\n\ttype ColorStop,\n\tinitialBackgroundGradientOverlay,\n} from '../background-gradient-color-control';\nimport { BackgroundImageOverlayAttachment } from './background-image-overlay/background-image-overlay-attachment';\nimport { BackgroundImageOverlayPosition } from './background-image-overlay/background-image-overlay-position';\nimport { BackgroundImageOverlayRepeat } from './background-image-overlay/background-image-overlay-repeat';\nimport { BackgroundImageOverlaySize } from './background-image-overlay/background-image-overlay-size';\nimport { type BackgroundImageOverlay } from './types';\nimport { useBackgroundTabsHistory } from './use-background-tabs-history';\n\nconst DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR = '#00000033';\n\nexport const initialBackgroundColorOverlay: BackgroundOverlayItemPropValue = backgroundColorOverlayPropTypeUtil.create(\n\t{\n\t\tcolor: colorPropTypeUtil.create( DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR ),\n\t}\n);\n\nexport const getInitialBackgroundOverlay = (): BackgroundOverlayItemPropValue => ( {\n\t$$type: 'background-image-overlay',\n\tvalue: {\n\t\timage: {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: {\n\t\t\t\t\t$$type: 'image-src',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\turl: {\n\t\t\t\t\t\t\t$$type: 'url',\n\t\t\t\t\t\t\tvalue: env.background_placeholder_image,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t\tvalue: 'large',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst backgroundResolutionOptions = [\n\t{ label: __( 'Thumbnail - 150 x 150', 'elementor' ), value: 'thumbnail' },\n\t{ label: __( 'Medium - 300 x 300', 'elementor' ), value: 'medium' },\n\t{ label: __( 'Large 1024 x 1024', 'elementor' ), value: 'large' },\n\t{ label: __( 'Full', 'elementor' ), value: 'full' },\n];\n\nexport const BackgroundOverlayRepeaterControl = createControl( () => {\n\tconst { propType, value: overlayValues, setValue } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ overlayValues } setValue={ setValue }>\n\t\t\t<ControlRepeater\n\t\t\t\tinitial={ getInitialBackgroundOverlay() as RepeatablePropValue }\n\t\t\t\tpropTypeUtil={ backgroundOverlayPropTypeUtil as CollectionPropUtil< RepeatablePropValue > }\n\t\t\t>\n\t\t\t\t<RepeaterHeader label={ __( 'Overlay', 'elementor' ) }>\n\t\t\t\t\t<TooltipAddItemAction newItemIndex={ 0 } />\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\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</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<ItemContent />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nexport const ItemContent = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory( {\n\t\timage: getInitialBackgroundOverlay().value,\n\t\tcolor: initialBackgroundColorOverlay.value,\n\t\tgradient: initialBackgroundGradientOverlay.value,\n\t} );\n\n\tconst { rowRef } = useRepeaterContext();\n\n\treturn (\n\t\t<Box sx={ { width: '100%' } }>\n\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t<Tabs\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\taria-label={ __( 'Background Overlay', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<Tab label={ __( 'Image', 'elementor' ) } { ...getTabProps( 'image' ) } />\n\t\t\t\t\t<Tab label={ __( 'Gradient', 'elementor' ) } { ...getTabProps( 'gradient' ) } />\n\t\t\t\t\t<Tab label={ __( 'Color', 'elementor' ) } { ...getTabProps( 'color' ) } />\n\t\t\t\t</Tabs>\n\t\t\t</Box>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'image' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ImageOverlayContent />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'gradient' ) }>\n\t\t\t\t<BackgroundGradientColorControl />\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'color' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ColorOverlayContent anchorEl={ rowRef } />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: RepeatablePropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemIconImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemIconColor value={ value as BackgroundOverlayItemPropValue } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemIconGradient value={ value as BackgroundOverlayItemPropValue } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst extractColorFrom = ( prop: BackgroundOverlayItemPropValue ) => {\n\tif ( prop?.value?.color?.value ) {\n\t\treturn prop.value.color.value;\n\t}\n\n\treturn '';\n};\n\nconst ItemIconColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ color } />;\n};\n\nconst ItemIconImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn (\n\t\t<CardMedia\n\t\t\timage={ imageUrl }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\theight: '1rem',\n\t\t\t\twidth: '1rem',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\t\t\t\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nconst ItemIconGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst gradient = getGradientValue( value );\n\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ gradient } />;\n};\n\nexport const ItemLabel = ( { value }: { value: RepeatablePropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemLabelImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemLabelColor value={ value as BackgroundOverlayItemPropValue } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemLabelGradient value={ value as BackgroundOverlayItemPropValue } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst ItemLabelColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <span>{ color }</span>;\n};\n\nconst ItemLabelImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn <span>{ imageTitle }</span>;\n};\n\nconst ItemLabelGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tif ( value.value.type.value === 'linear' ) {\n\t\treturn <span>{ __( 'Linear Gradient', 'elementor' ) }</span>;\n\t}\n\n\treturn <span>{ __( 'Radial Gradient', 'elementor' ) }</span>;\n};\n\nconst ColorOverlayContent = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst propContext = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'color' }>\n\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst ImageOverlayContent = () => {\n\tconst propContext = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'image' }>\n\t\t\t\t<ImageControl sizes={ backgroundResolutionOptions } />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'position' }>\n\t\t\t\t<BackgroundImageOverlayPosition />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'repeat' }>\n\t\t\t\t<BackgroundImageOverlayRepeat />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t<BackgroundImageOverlaySize />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'attachment' }>\n\t\t\t\t<BackgroundImageOverlayAttachment />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\theight: '1rem',\n\twidth: '1rem',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst useImage = ( image: BackgroundImageOverlay ) => {\n\tlet imageTitle,\n\t\timageUrl: string | null = null;\n\n\tconst imageSrc = image?.value.image.value?.src.value;\n\tconst { data: attachment } = useWpMediaAttachment( imageSrc.id?.value || null );\n\n\tif ( imageSrc.id ) {\n\t\tconst imageFileTypeExtension = getFileExtensionFromFilename( attachment?.filename );\n\t\timageTitle = `${ attachment?.title }${ imageFileTypeExtension }` || null;\n\t\timageUrl = attachment?.url || null;\n\t} else if ( imageSrc.url ) {\n\t\timageUrl = imageSrc.url.value;\n\t\timageTitle = imageUrl?.substring( imageUrl.lastIndexOf( '/' ) + 1 ) || null;\n\t}\n\n\treturn { imageTitle, imageUrl };\n};\n\nconst getFileExtensionFromFilename = ( filename?: string ) => {\n\tif ( ! filename ) {\n\t\treturn '';\n\t}\n\n\t// get the substring after the last . in the filename\n\tconst extension = filename.substring( filename.lastIndexOf( '.' ) + 1 );\n\n\treturn `.${ extension }`;\n};\n\nconst getGradientValue = ( value: BackgroundOverlayItemPropValue ) => {\n\tconst gradient = value.value;\n\n\tconst stops = gradient.stops.value\n\t\t?.map( ( { value: { color, offset } }: ColorStop ) => `${ color.value } ${ offset.value ?? 0 }%` )\n\t\t?.join( ',' );\n\n\tif ( gradient.type.value === 'linear' ) {\n\t\treturn `linear-gradient(${ gradient.angle.value }deg, ${ stops })`;\n\t}\n\n\treturn `radial-gradient(circle at ${ gradient.positions.value }, ${ stops })`;\n};\n","import { parseEnv } from '@elementor/env';\n\nexport const { env } = parseEnv< {\n\tbackground_placeholder_image: string;\n} >( '@elementor/editor-controls' );\n","import * as React from 'react';\nimport {\n\tbackgroundGradientOverlayPropTypeUtil,\n\ttype BackgroundGradientOverlayPropValue,\n\ttype BackgroundOverlayItemPropValue,\n\tcolorPropTypeUtil,\n\ttype ColorPropValue,\n\tcolorStopPropTypeUtil,\n\tgradientColorStopPropTypeUtil,\n\tnumberPropTypeUtil,\n\ttype NumberPropValue,\n\tstringPropTypeUtil,\n\ttype TransformablePropValue,\n} from '@elementor/editor-props';\nimport { UnstableGradientBox } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { createControl } from '../../create-control';\n\nexport type ColorStop = TransformablePropValue<\n\t'color-stop',\n\t{\n\t\tcolor: ColorPropValue;\n\t\toffset: NumberPropValue;\n\t}\n>;\n\nexport const BackgroundGradientColorControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst handleChange = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => {\n\t\tconst transformedValue = createTransformableValue( newValue );\n\n\t\tif ( transformedValue.positions ) {\n\t\t\ttransformedValue.positions = stringPropTypeUtil.create( newValue.positions.join( ' ' ) );\n\t\t}\n\n\t\tsetValue( transformedValue );\n\t};\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst createTransformableValue = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => ( {\n\t\t...newValue,\n\t\ttype: stringPropTypeUtil.create( newValue.type ),\n\t\tangle: numberPropTypeUtil.create( newValue.angle ),\n\t\tstops: gradientColorStopPropTypeUtil.create(\n\t\t\tnewValue.stops.map( ( { color, offset }: { color: string; offset: number } ) =>\n\t\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\t\tcolor: colorPropTypeUtil.create( color ),\n\t\t\t\t\toffset: numberPropTypeUtil.create( offset ),\n\t\t\t\t} )\n\t\t\t)\n\t\t),\n\t} );\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst normalizeValue = () => {\n\t\tif ( ! value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { type, angle, stops, positions } = value;\n\n\t\treturn {\n\t\t\ttype: type.value,\n\t\t\tangle: angle?.value || 0,\n\t\t\tstops: stops.value.map( ( { value: { color, offset } }: ColorStop ) => ( {\n\t\t\t\tcolor: color.value,\n\t\t\t\toffset: offset.value,\n\t\t\t} ) ),\n\t\t\tpositions: positions?.value.split( ' ' ),\n\t\t};\n\t};\n\n\treturn (\n\t\t<UnstableGradientBox\n\t\t\tsx={ { width: 'auto', padding: 1.5 } }\n\t\t\tvalue={ normalizeValue() }\n\t\t\tonChange={ handleChange }\n\t\t/>\n\t);\n} );\n\nexport const initialBackgroundGradientOverlay: BackgroundOverlayItemPropValue =\n\tbackgroundGradientOverlayPropTypeUtil.create( {\n\t\ttype: stringPropTypeUtil.create( 'linear' ),\n\t\tangle: numberPropTypeUtil.create( 180 ),\n\t\tstops: gradientColorStopPropTypeUtil.create( [\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(0,0,0)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 0 ),\n\t\t\t} ),\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(255,255,255)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 100 ),\n\t\t\t} ),\n\t\t] ),\n\t} );\n","import * as React from 'react';\nimport { PinIcon, PinnedOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Attachment = 'fixed' | 'scroll';\n\nconst attachmentControlOptions: ToggleButtonGroupItem< Attachment >[] = [\n\t{\n\t\tvalue: 'fixed',\n\t\tlabel: __( 'Fixed', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'scroll',\n\t\tlabel: __( 'Scroll', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinnedOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayAttachment = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Attachment', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleControl options={ attachmentControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport ControlActions from '../../../../control-actions/control-actions';\nimport { SizeControl } from '../../../size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst backgroundPositionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const BackgroundImageOverlayPosition = () => {\n\tconst backgroundImageOffsetContext = useBoundProp( backgroundImagePositionOffsetPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageOffsetContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tbackgroundImageOffsetContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t\t\t<ControlActions>\n\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t( backgroundImageOffsetContext.value ? 'custom' : stringPropContext.value ) ?? ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ backgroundPositionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t</ControlActions>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageOffsetContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Repeaters = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';\n\nconst repeatControlOptions: ToggleButtonGroupItem< Repeaters >[] = [\n\t{\n\t\tvalue: 'repeat',\n\t\tlabel: __( 'Repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <GridDotsIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-x',\n\t\tlabel: __( 'Repeat-x', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsHorizontalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-y',\n\t\tlabel: __( 'Repeat-y', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsVerticalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'no-repeat',\n\t\tlabel: __( 'No-repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <XIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayRepeat = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Repeat', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t<ToggleControl options={ repeatControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tArrowBarBothIcon,\n\tArrowsMaximizeIcon,\n\tArrowsMoveHorizontalIcon,\n\tArrowsMoveVerticalIcon,\n\tLetterAIcon,\n\tPencilIcon,\n} from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport {\n\tControlToggleButtonGroup,\n\ttype ToggleButtonGroupItem,\n} from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { SizeControl } from '../../../size-control';\n\ntype Sizes = 'auto' | 'cover' | 'contain' | 'custom';\n\nconst sizeControlOptions: ToggleButtonGroupItem< Sizes >[] = [\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\t{\n\t\tvalue: 'cover',\n\t\tlabel: __( 'Cover', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowsMaximizeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: __( 'Contain', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBarBothIcon 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 BackgroundImageOverlaySize = () => {\n\tconst backgroundImageScaleContext = useBoundProp( backgroundImageSizeScalePropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageScaleContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handleSizeChange = ( size: Sizes | null ) => {\n\t\tif ( size === 'custom' ) {\n\t\t\tbackgroundImageScaleContext.setValue( { width: null, height: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( size );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Size', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\texclusive\n\t\t\t\t\t\t\titems={ sizeControlOptions }\n\t\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t( backgroundImageScaleContext.value ? 'custom' : stringPropContext.value ) as Sizes\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageScaleContext }>\n\t\t\t\t\t<Grid item xs={ 12 } ref={ rowRef }>\n\t\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'width' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveHorizontalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'height' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveVerticalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundGradientOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type BackgroundImageOverlay } from './types';\n\ntype OverlayType = 'image' | 'gradient' | 'color';\n\ntype InitialBackgroundValues = {\n\tcolor: BackgroundOverlayItemPropValue[ 'value' ];\n\timage: BackgroundImageOverlay[ 'value' ];\n\tgradient: BackgroundOverlayItemPropValue[ 'value' ];\n};\n\nexport const useBackgroundTabsHistory = ( {\n\tcolor: initialBackgroundColorOverlay,\n\timage: initialBackgroundImageOverlay,\n\tgradient: initialBackgroundGradientOverlay,\n}: InitialBackgroundValues ) => {\n\tconst { value: imageValue, setValue: setImageValue } = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\tconst { value: colorValue, setValue: setColorValue } = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\tconst { value: gradientValue, setValue: setGradientValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst getCurrentOverlayType = (): OverlayType => {\n\t\tif ( colorValue ) {\n\t\t\treturn 'color';\n\t\t}\n\n\t\tif ( gradientValue ) {\n\t\t\treturn 'gradient';\n\t\t}\n\n\t\treturn 'image';\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< OverlayType >( getCurrentOverlayType() );\n\n\tconst valuesHistory = useRef< InitialBackgroundValues >( {\n\t\timage: initialBackgroundImageOverlay,\n\t\tcolor: initialBackgroundColorOverlay,\n\t\tgradient: initialBackgroundGradientOverlay,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialBackgroundValues, value: BackgroundOverlayItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: OverlayType ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase 'image':\n\t\t\t\tsetImageValue( valuesHistory.current.image );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'gradient':\n\t\t\t\tsetGradientValue( valuesHistory.current.gradient );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'color':\n\t\t\t\tsetColorValue( valuesHistory.current.color );\n\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\treturn {\n\t\tgetTabProps,\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { createArrayPropUtils, type SizePropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlRepeater, Item, TooltipAddItemAction } from '../components/control-repeater';\nimport { DisableItemAction } from '../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../components/control-repeater/actions/remove-item-action';\nimport { type TooltipAddItemActionProps } from '../components/control-repeater/actions/tooltip-add-item-action';\nimport { EditItemPopover } from '../components/control-repeater/items/edit-item-popover';\nimport { ItemsContainer } from '../components/control-repeater/items/items-container';\nimport { type CollectionPropUtil, type RepeatablePropValue } from '../components/control-repeater/types';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { RepeaterHeader } from '../components/repeater/repeater-header';\nimport { createControl } from '../create-control';\nimport {\n\ttype ChildControlConfig,\n\tRepeatableControlContext,\n\tuseRepeatableControlContext,\n} from '../hooks/use-repeatable-control-context';\nimport { CUSTOM_SIZE_LABEL } from './size-control';\n\ntype RepeatableControlProps = {\n\tlabel: string;\n\trepeaterLabel: string;\n\tchildControlConfig: ChildControlConfig;\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tinitialValues?: object;\n\tpatternLabel?: string;\n\tplaceholder?: string;\n\tpropKey?: string;\n\taddItemTooltipProps?: TooltipAddItemActionProps;\n};\n\nconst PLACEHOLDER_REGEX = /\\$\\{([^}]+)\\}/g;\n\nexport const RepeatableControl = createControl(\n\t( {\n\t\trepeaterLabel,\n\t\tchildControlConfig,\n\t\tshowDuplicate,\n\t\tshowToggle,\n\t\tinitialValues,\n\t\tpatternLabel,\n\t\tplaceholder,\n\t\tpropKey,\n\t\taddItemTooltipProps,\n\t}: RepeatableControlProps ) => {\n\t\tconst { propTypeUtil: childPropTypeUtil, isItemDisabled } = childControlConfig;\n\n\t\tif ( ! childPropTypeUtil ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst childArrayPropTypeUtil = useMemo(\n\t\t\t() => createArrayPropUtils( childPropTypeUtil.key, childPropTypeUtil.schema, propKey ),\n\t\t\t[ childPropTypeUtil.key, childPropTypeUtil.schema, propKey ]\n\t\t);\n\n\t\tconst contextValue = useMemo(\n\t\t\t() => ( {\n\t\t\t\t...childControlConfig,\n\t\t\t\tplaceholder: placeholder || '',\n\t\t\t\tpatternLabel: patternLabel || '',\n\t\t\t} ),\n\t\t\t[ childControlConfig, placeholder, patternLabel ]\n\t\t);\n\n\t\tconst { propType, value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\n\t\treturn (\n\t\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t\t<RepeatableControlContext.Provider value={ contextValue }>\n\t\t\t\t\t<ControlRepeater\n\t\t\t\t\t\tinitial={ childPropTypeUtil.create( initialValues || null ) }\n\t\t\t\t\t\tpropTypeUtil={ childArrayPropTypeUtil as CollectionPropUtil< RepeatablePropValue > }\n\t\t\t\t\t\tisItemDisabled={ isItemDisabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t<RepeaterHeader label={ repeaterLabel }>\n\t\t\t\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\t\t\t\t{ ...addItemTooltipProps }\n\t\t\t\t\t\t\t\tnewItemIndex={ 0 }\n\t\t\t\t\t\t\t\tariaLabel={ repeaterLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RepeaterHeader>\n\t\t\t\t\t\t<ItemsContainer isSortable={ false }>\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ showDuplicate && <DuplicateItemAction /> }\n\t\t\t\t\t\t\t\t\t\t{ showToggle && <DisableItemAction /> }\n\t\t\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ItemsContainer>\n\t\t\t\t\t\t<EditItemPopover>\n\t\t\t\t\t\t\t<Content />\n\t\t\t\t\t\t</EditItemPopover>\n\t\t\t\t\t</ControlRepeater>\n\t\t\t\t</RepeatableControlContext.Provider>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\n// TODO: Configurable icon probably can be somehow part of the injected control and bubbled up to the repeater\nconst ItemIcon = () => <></>;\n\nconst Content = () => {\n\tconst { component: ChildControl, props = {} } = useRepeatableControlContext();\n\treturn (\n\t\t<PopoverContent p={ 1.5 }>\n\t\t\t<PopoverGridContainer>\n\t\t\t\t<ChildControl { ...props } />\n\t\t\t</PopoverGridContainer>\n\t\t</PopoverContent>\n\t);\n};\n\nconst interpolate = ( template: string, data: Record< string, unknown > ) => {\n\tif ( ! data ) {\n\t\treturn template;\n\t}\n\n\treturn template.replace( PLACEHOLDER_REGEX, ( _, path ): string => {\n\t\tconst value = getNestedValue( data, path );\n\n\t\tif ( typeof value === 'object' && value !== null && ! Array.isArray( value ) ) {\n\t\t\tif ( 'name' in value && value.name ) {\n\t\t\t\treturn value.name as string;\n\t\t\t}\n\n\t\t\treturn JSON.stringify( value );\n\t\t}\n\n\t\tif ( Array.isArray( value ) ) {\n\t\t\treturn value.join( ', ' );\n\t\t}\n\n\t\treturn String( value ?? '' );\n\t} );\n};\n\nconst getNestedValue = ( obj: Record< string, unknown >, path: string ) => {\n\tlet parentObj: Record< string, unknown > = {};\n\tconst pathKeys = path.split( '.' );\n\tconst key = pathKeys.slice( -1 )[ 0 ];\n\n\tlet value: unknown = pathKeys.reduce( ( current: Record< string, unknown >, currentKey, currentIndex ) => {\n\t\tif ( currentIndex === pathKeys.length - 2 ) {\n\t\t\tparentObj = current;\n\t\t}\n\n\t\tif ( current && typeof current === 'object' ) {\n\t\t\treturn current[ currentKey ] as Record< string, unknown >;\n\t\t}\n\n\t\treturn {};\n\t}, obj );\n\n\tvalue = !! value ? value : '';\n\tconst propType = parentObj?.$$type;\n\tconst propValue = parentObj?.value as SizePropValue[ 'value' ];\n\tconst doesValueRepresentCustomSize = key === 'unit' && propType === 'size' && propValue?.unit === 'custom';\n\n\tif ( ! doesValueRepresentCustomSize ) {\n\t\treturn value;\n\t}\n\n\treturn propValue?.size ? '' : CUSTOM_SIZE_LABEL;\n};\n\nconst isEmptyValue = ( val: unknown ) => {\n\tif ( typeof val === 'string' ) {\n\t\treturn val.trim() === '';\n\t}\n\n\tif ( Number.isNaN( val ) ) {\n\t\treturn true;\n\t}\n\n\tif ( Array.isArray( val ) ) {\n\t\treturn val.length === 0;\n\t}\n\n\tif ( typeof val === 'object' && val !== null ) {\n\t\treturn Object.keys( val ).length === 0;\n\t}\n\n\treturn false;\n};\n\nconst shouldShowPlaceholder = ( pattern: string, data: Record< string, unknown > ): boolean => {\n\tconst propertyPaths = getAllProperties( pattern );\n\n\tconst values = propertyPaths.map( ( path ) => getNestedValue( data, path ) );\n\n\tif ( values.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tif ( values.some( ( value ) => value === null || value === undefined ) ) {\n\t\treturn true;\n\t}\n\n\tif ( values.every( isEmptyValue ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nconst getTextColor = ( isReadOnly: boolean, showPlaceholder: boolean ): string => {\n\tif ( isReadOnly ) {\n\t\treturn 'text.disabled';\n\t}\n\treturn showPlaceholder ? 'text.tertiary' : 'text.primary';\n};\n\nconst ItemLabel = ( { value }: { value: Record< string, unknown > } ) => {\n\tconst { placeholder, patternLabel, props: childProps } = useRepeatableControlContext();\n\tconst showPlaceholder = shouldShowPlaceholder( patternLabel, value );\n\tconst label = showPlaceholder ? placeholder : interpolate( patternLabel, value );\n\tconst isReadOnly = !! childProps?.readOnly;\n\tconst color = getTextColor( isReadOnly, showPlaceholder );\n\n\treturn (\n\t\t<Box component=\"span\" color={ color }>\n\t\t\t{ label }\n\t\t</Box>\n\t);\n};\n\nconst getAllProperties = ( pattern: string ) => {\n\tconst properties = pattern.match( PLACEHOLDER_REGEX )?.map( ( match ) => match.slice( 2, -1 ) ) || [];\n\n\treturn properties;\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport {\n\ttype CreateOptions,\n\tisTransformable,\n\tkeyValuePropTypeUtil,\n\ttype PropKey,\n\ttype Props,\n\tstringPropTypeUtil,\n} from '@elementor/editor-props';\nimport { FormHelperText, FormLabel, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\nimport { escapeHtmlAttr } from '../utils/escape-html-attr';\nimport { TextControl } from './text-control';\n\ntype KeyValueControlProps = {\n\tkeyName?: string;\n\tvalueName?: string;\n\tregexKey?: string;\n\tregexValue?: string;\n\tvalidationErrorMessage?: string;\n\tescapeHtml?: boolean;\n\tgetHelperText?: ( key: string, value: string ) => { keyHelper?: string; valueHelper?: string };\n};\n\nconst getInitialFieldValue = ( fieldValue: unknown ): string => {\n\tconst transformableValue = fieldValue as { $$type?: string; value?: string };\n\n\tif ( ! fieldValue || typeof fieldValue !== 'object' || transformableValue.$$type === 'dynamic' ) {\n\t\treturn '';\n\t}\n\n\treturn transformableValue.value || '';\n};\n\nexport const KeyValueControl = createControl( ( props: KeyValueControlProps = {} ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( keyValuePropTypeUtil );\n\tconst [ keyError, setKeyError ] = useState< string >( '' );\n\tconst [ valueError, setValueError ] = useState< string >( '' );\n\n\tconst [ sessionState, setSessionState ] = useState( {\n\t\tkey: getInitialFieldValue( value?.key ),\n\t\tvalue: getInitialFieldValue( value?.value ),\n\t} );\n\n\tconst keyLabel = props.keyName || __( 'Key', 'elementor' );\n\tconst valueLabel = props.valueName || __( 'Value', 'elementor' );\n\tconst { keyHelper, valueHelper } = props.getHelperText?.( sessionState.key, sessionState.value ) || {\n\t\tkeyHelper: undefined,\n\t\tvalueHelper: undefined,\n\t};\n\n\tconst [ keyRegex, valueRegex, errMsg ] = useMemo< [ RegExp | undefined, RegExp | undefined, string ] >(\n\t\t() => [\n\t\t\tprops.regexKey ? new RegExp( props.regexKey ) : undefined,\n\t\t\tprops.regexValue ? new RegExp( props.regexValue ) : undefined,\n\t\t\tprops.validationErrorMessage || __( 'Invalid Format', 'elementor' ),\n\t\t],\n\t\t[ props.regexKey, props.regexValue, props.validationErrorMessage ]\n\t);\n\n\tconst validate = ( newValue: string, fieldType: string ): boolean => {\n\t\tif ( fieldType === 'key' && keyRegex ) {\n\t\t\tconst isValid = keyRegex.test( newValue );\n\t\t\tsetKeyError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t} else if ( fieldType === 'value' && valueRegex ) {\n\t\t\tconst isValid = valueRegex.test( newValue );\n\t\t\tsetValueError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst handleChange = ( newValue: Props, options?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tconst fieldType = meta?.bind;\n\n\t\tif ( ! fieldType ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newChangedValue = newValue[ fieldType ];\n\n\t\tif ( isTransformable( newChangedValue ) && newChangedValue.$$type === 'dynamic' ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst extractedValue = stringPropTypeUtil.extract( newChangedValue );\n\n\t\tsetSessionState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ fieldType ]: extractedValue,\n\t\t} ) );\n\n\t\tif ( extractedValue && validate( extractedValue, fieldType ) ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\t\t} else {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: {\n\t\t\t\t\tvalue: '',\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ handleChange }>\n\t\t\t<Grid container gap={ 1.5 }>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ keyLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'key' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ props.escapeHtml ? escapeHtmlAttr( sessionState.key ) : sessionState.key }\n\t\t\t\t\t\t\terror={ !! keyError }\n\t\t\t\t\t\t\thelperText={ keyHelper }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! keyError && <FormHelperText error>{ keyError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ valueLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'value' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ props.escapeHtml ? escapeHtmlAttr( sessionState.value ) : sessionState.value }\n\t\t\t\t\t\t\terror={ !! valueError }\n\t\t\t\t\t\t\tinputDisabled={ !! keyError }\n\t\t\t\t\t\t\thelperText={ valueHelper }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! valueError && <FormHelperText error>{ valueError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropProvider>\n\t);\n} );\n","export const escapeHtmlAttr = ( value: string ): string => {\n\tconst specialChars: Record< string, string > = {\n\t\t'&': '&amp;',\n\t\t'<': '&lt;',\n\t\t'>': '&gt;',\n\t\t\"'\": '&#39;',\n\t\t'\"': '&quot;',\n\t};\n\n\treturn value.replace( /[&<>'\"]/g, ( char ) => specialChars[ char ] || char );\n};\n","import * as React from 'react';\nimport { positionPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SizeControl } from './size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst positionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const PositionControl = () => {\n\tconst positionContext = useBoundProp( positionPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! positionContext.value;\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tpositionContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Object position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( positionContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ positionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t{ isCustom && (\n\t\t\t\t<PropProvider { ...positionContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type PropType, transformFunctionsPropTypeUtil, transformPropTypeUtil } from '@elementor/editor-props';\nimport { AdjustmentsIcon, InfoCircleFilledIcon } from '@elementor/icons';\nimport { bindTrigger, Box, IconButton, type PopupState, Tooltip, Typography, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../../components/control-repeater';\nimport { DisableItemAction } from '../../components/control-repeater/actions/disable-item-action';\nimport { RemoveItemAction } from '../../components/control-repeater/actions/remove-item-action';\nimport { EditItemPopover } from '../../components/control-repeater/items/edit-item-popover';\nimport { RepeaterHeader } from '../../components/repeater/repeater-header';\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\nimport { createControl } from '../../create-control';\nimport { useElementCanHaveChildren } from '../../hooks/use-element-can-have-children';\nimport { initialRotateValue, initialScaleValue, initialSkewValue, initialTransformValue } from './initial-values';\nimport { TransformContent } from './transform-content';\nimport { TransformIcon } from './transform-icon';\nimport { TransformLabel } from './transform-label';\nimport { TransformSettingsControl } from './transform-settings-control';\n\nconst SIZE = 'tiny';\n\nexport const TransformRepeaterControl = createControl( () => {\n\tconst context = useBoundProp( transformPropTypeUtil );\n\tconst headerRef = useRef< HTMLDivElement >( null );\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\tconst showChildrenPerspective = useElementCanHaveChildren();\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<TransformSettingsControl\n\t\t\t\tpopupState={ popupState }\n\t\t\t\tanchorRef={ headerRef }\n\t\t\t\tshowChildrenPerspective={ showChildrenPerspective }\n\t\t\t/>\n\t\t\t<PropKeyProvider bind={ 'transform-functions' }>\n\t\t\t\t<Repeater headerRef={ headerRef } propType={ context.propType } popupState={ popupState } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ToolTip = (\n\t<Box\n\t\tcomponent=\"span\"\n\t\taria-label={ undefined }\n\t\tsx={ { display: 'flex', gap: 0.5, p: 2, width: 320, borderRadius: 1 } }\n\t>\n\t\t<InfoCircleFilledIcon sx={ { color: 'secondary.main' } } />\n\t\t<Typography variant=\"body2\" color=\"text.secondary\" fontSize=\"14px\">\n\t\t\t{ __( 'You can use each kind of transform only once per element.', 'elementor' ) }\n\t\t</Typography>\n\t</Box>\n);\n\nconst Repeater = ( {\n\theaderRef,\n\tpropType,\n\tpopupState,\n}: {\n\theaderRef: React.RefObject< HTMLDivElement >;\n\tpropType: PropType;\n\tpopupState: PopupState;\n} ) => {\n\tconst transformFunctionsContext = useBoundProp( transformFunctionsPropTypeUtil );\n\tconst availableValues = [ initialTransformValue, initialScaleValue, initialRotateValue, initialSkewValue ];\n\tconst { value: transformValues, bind } = transformFunctionsContext;\n\n\tconst getInitialValue = () => {\n\t\treturn availableValues.find( ( value ) => ! transformValues?.some( ( item ) => item.$$type === value.$$type ) );\n\t};\n\n\tconst shouldDisableAddItem = ! getInitialValue();\n\n\treturn (\n\t\t<PropProvider { ...transformFunctionsContext }>\n\t\t\t<ControlRepeater\n\t\t\t\tinitial={ getInitialValue() ?? initialTransformValue }\n\t\t\t\tpropTypeUtil={ transformFunctionsPropTypeUtil }\n\t\t\t>\n\t\t\t\t<RepeaterHeader\n\t\t\t\t\tlabel={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\tadornment={ () => <ControlAdornments customContext={ { path: [ 'transform' ], propType } } /> }\n\t\t\t\t\tref={ headerRef }\n\t\t\t\t>\n\t\t\t\t\t<TransformBasePopoverTrigger popupState={ popupState } repeaterBindKey={ bind } />\n\t\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\t\tdisabled={ shouldDisableAddItem }\n\t\t\t\t\t\ttooltipContent={ ToolTip }\n\t\t\t\t\t\tenableTooltip={ shouldDisableAddItem }\n\t\t\t\t\t\tariaLabel={ 'transform' }\n\t\t\t\t\t/>\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ TransformIcon }\n\t\t\t\t\t\tLabel={ TransformLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\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</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<TransformContent />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n};\n\nconst TransformBasePopoverTrigger = ( {\n\tpopupState,\n\trepeaterBindKey,\n}: {\n\tpopupState: PopupState;\n\trepeaterBindKey: string;\n} ) => {\n\tconst { bind } = useBoundProp();\n\tconst titleLabel = __( 'Transform settings', 'elementor' );\n\n\treturn bind !== repeaterBindKey ? null : (\n\t\t<Tooltip title={ titleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } aria-label={ titleLabel } { ...bindTrigger( popupState ) }>\n\t\t\t\t<AdjustmentsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import { useMemo } from 'react';\nimport { getContainer, useSelectedElement } from '@elementor/editor-elements';\n\nexport const useElementCanHaveChildren = (): boolean => {\n\tconst { element } = useSelectedElement();\n\tconst elementId = element?.id || '';\n\n\treturn useMemo( () => {\n\t\tconst container = getContainer( elementId );\n\n\t\tif ( ! container ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn container.model.get( 'elType' ) !== 'widget';\n\t}, [ elementId ] );\n};\n","import {\n\tnumberPropTypeUtil,\n\trotateTransformPropTypeUtil,\n\tscaleTransformPropTypeUtil,\n\tskewTransformPropTypeUtil,\n\ttype TransformFunctionsItemPropValue,\n} from '@elementor/editor-props';\n\nexport type TransformFunction = 'transform-move' | 'transform-scale' | 'transform-rotate' | 'transform-skew';\n\nexport const TransformFunctionKeys: Record< string, TransformFunction > = {\n\tmove: 'transform-move',\n\tscale: 'transform-scale',\n\trotate: 'transform-rotate',\n\tskew: 'transform-skew',\n};\n\nexport const defaultValues = {\n\tmove: {\n\t\tsize: 0,\n\t\tunit: 'px',\n\t},\n\tscale: 1,\n\trotate: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n\tskew: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n};\n\nexport const initialTransformValue: TransformFunctionsItemPropValue = {\n\t$$type: TransformFunctionKeys.move,\n\tvalue: {\n\t\tx: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\ty: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\tz: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t},\n};\n\nexport const initialScaleValue = scaleTransformPropTypeUtil.create( {\n\tx: numberPropTypeUtil.create( defaultValues.scale ),\n\ty: numberPropTypeUtil.create( defaultValues.scale ),\n\tz: numberPropTypeUtil.create( defaultValues.scale ),\n} );\n\nexport const initialRotateValue = rotateTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\tz: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n} );\n\nexport const initialSkewValue = skewTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n} );\n","import * as React from 'react';\nimport { Box, Tab, TabPanel, Tabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverContent } from '../../components/popover-content';\nimport { Move } from './functions/move';\nimport { Rotate } from './functions/rotate';\nimport { Scale } from './functions/scale';\nimport { Skew } from './functions/skew';\nimport {\n\tinitialRotateValue,\n\tinitialScaleValue,\n\tinitialSkewValue,\n\tinitialTransformValue,\n\tTransformFunctionKeys,\n} from './initial-values';\nimport { useTransformTabsHistory } from './use-transform-tabs-history';\n\nexport const TransformContent = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTransformTabsHistory( {\n\t\tmove: initialTransformValue.value,\n\t\tscale: initialScaleValue.value,\n\t\trotate: initialRotateValue.value,\n\t\tskew: initialSkewValue.value,\n\t} );\n\n\treturn (\n\t\t<PopoverContent>\n\t\t\t<Box sx={ { width: '100%' } }>\n\t\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t\t<Tabs\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'& .MuiTab-root': {\n\t\t\t\t\t\t\t\tminWidth: '62px',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\taria-label={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tab label={ __( 'Move', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.move ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Scale', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.scale ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Rotate', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.rotate ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Skew', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.skew ) } />\n\t\t\t\t\t</Tabs>\n\t\t\t\t</Box>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.move ) }>\n\t\t\t\t\t<Move />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.scale ) }>\n\t\t\t\t\t<Scale />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.rotate ) }>\n\t\t\t\t\t<Rotate />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.skew ) }>\n\t\t\t\t\t<Skew />\n\t\t\t\t</TabPanel>\n\t\t\t</Box>\n\t\t</PopoverContent>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { moveTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\ntype Control = { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode; units: LengthUnit[] };\n\nconst moveAxisControls: Control[] = [\n\t{\n\t\tlabel: __( 'Move X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vw' ],\n\t},\n\t{\n\t\tlabel: __( 'Move Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vh' ],\n\t},\n\t{\n\t\tlabel: __( 'Move Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vw', 'vh' ],\n\t},\n];\n\nexport const Move = () => {\n\tconst context = useBoundProp( moveTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.move }>\n\t\t\t\t\t{ moveAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ control.units }\n\t\t\t\t\t\t\tvariant=\"length\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type AngleUnit, type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\ntype TransformAxisRowProps = {\n\tlabel: string;\n\tbind: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tunits?: AngleUnit[] | LengthUnit[];\n\tvariant?: 'length' | 'angle';\n};\n\nexport const AxisRow = ( { label, bind, startIcon, anchorRef, units, variant = 'angle' }: TransformAxisRowProps ) => {\n\tconst safeId = label.replace( /\\s+/g, '-' ).toLowerCase();\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel htmlFor={ safeId }>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tvariant={ variant }\n\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\tid={ safeId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { rotateTransformPropTypeUtil } from '@elementor/editor-props';\nimport { Arrow360Icon, RotateClockwiseIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\nconst rotateAxisControls: { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Rotate X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <Arrow360Icon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <Arrow360Icon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <RotateClockwiseIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nconst rotateUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Rotate = () => {\n\tconst context = useBoundProp( rotateTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.rotate }>\n\t\t\t\t\t{ rotateAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ rotateUnits }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { scaleTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { ScaleAxisRow } from './scale-axis-row';\n\nconst scaleAxisControls: { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Scale X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Scale = () => {\n\tconst context = useBoundProp( scaleTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.scale }>\n\t\t\t\t\t{ scaleAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<ScaleAxisRow key={ control.bind } { ...control } anchorRef={ rowRefs[ index ] } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { NumberControl } from '../../number-control';\n\ntype ScaleAxisRowProps = {\n\tlabel: string;\n\tbind: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\nexport const ScaleAxisRow = ( { label, bind, startIcon, anchorRef }: ScaleAxisRowProps ) => {\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t\t<NumberControl step={ 0.1 } placeholder=\"1\" startIcon={ startIcon } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { skewTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowLeftIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\nconst skewAxisControls: { label: string; bind: 'x' | 'y'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Skew X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Skew Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowLeftIcon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n];\n\nconst skewUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Skew = () => {\n\tconst context = useBoundProp( skewTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.skew }>\n\t\t\t\t\t{ skewAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ skewUnits }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tmoveTransformPropTypeUtil,\n\ttype MoveTransformPropValue,\n\trotateTransformPropTypeUtil,\n\ttype RotateTransformPropValue,\n\tscaleTransformPropTypeUtil,\n\ttype ScaleTransformPropValue,\n\tskewTransformPropTypeUtil,\n\ttype SkewTransformPropValue,\n\ttype TransformFunctionsItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { useRepeaterContext } from '../../components/control-repeater/context/repeater-context';\nimport { type TransformFunction, TransformFunctionKeys } from './initial-values';\n\ntype InitialTransformValues = {\n\tmove: TransformFunctionsItemPropValue[ 'value' ];\n\tscale: TransformFunctionsItemPropValue[ 'value' ];\n\trotate: TransformFunctionsItemPropValue[ 'value' ];\n\tskew: TransformFunctionsItemPropValue[ 'value' ];\n};\n\nexport const useTransformTabsHistory = ( {\n\tmove: initialMove,\n\tscale: initialScale,\n\trotate: initialRotate,\n\tskew: initialSkew,\n}: InitialTransformValues ) => {\n\tconst { value: moveValue, setValue: setMoveValue } = useBoundProp( moveTransformPropTypeUtil );\n\tconst { value: scaleValue, setValue: setScaleValue } = useBoundProp( scaleTransformPropTypeUtil );\n\tconst { value: rotateValue, setValue: setRotateValue } = useBoundProp( rotateTransformPropTypeUtil );\n\tconst { value: skewValue, setValue: setSkewValue } = useBoundProp( skewTransformPropTypeUtil );\n\n\tconst { openItemIndex, items } = useRepeaterContext();\n\n\tconst getCurrentTransformType = (): TransformFunction => {\n\t\tswitch ( true ) {\n\t\t\tcase !! scaleValue:\n\t\t\t\treturn TransformFunctionKeys.scale;\n\t\t\tcase !! rotateValue:\n\t\t\t\treturn TransformFunctionKeys.rotate;\n\t\t\tcase !! skewValue:\n\t\t\t\treturn TransformFunctionKeys.skew;\n\t\t\tdefault:\n\t\t\t\treturn TransformFunctionKeys.move;\n\t\t}\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< TransformFunction >( getCurrentTransformType() );\n\n\tconst valuesHistory = useRef< InitialTransformValues >( {\n\t\tmove: initialMove,\n\t\tscale: initialScale,\n\t\trotate: initialRotate,\n\t\tskew: initialSkew,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialTransformValues, value: TransformFunctionsItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: TransformFunction ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase TransformFunctionKeys.move:\n\t\t\t\tsetMoveValue( valuesHistory.current.move as MoveTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.scale:\n\t\t\t\tsetScaleValue( valuesHistory.current.scale as ScaleTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.rotate:\n\t\t\t\tsetRotateValue( valuesHistory.current.rotate as RotateTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.skew:\n\t\t\t\tsetSkewValue( valuesHistory.current.skew as SkewTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\tconst isTabDisabled = ( tabKey: TransformFunction ) => {\n\t\treturn !! items.find( ( { item: { $$type: key } }, pos ) => tabKey === key && pos !== openItemIndex );\n\t};\n\n\treturn {\n\t\tgetTabProps: ( value: TransformFunction ) => ( {\n\t\t\t...getTabProps( value ),\n\t\t\tdisabled: isTabDisabled( value ),\n\t\t} ),\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { type TransformFunctionsItemPropValue } from '@elementor/editor-props';\nimport { ArrowAutofitHeightIcon, ArrowsMaximizeIcon, RotateClockwise2Icon, SkewXIcon } from '@elementor/icons';\n\nimport { TransformFunctionKeys } from './initial-values';\n\nexport const TransformIcon = ( { value }: { value: TransformFunctionsItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <ArrowsMaximizeIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <ArrowAutofitHeightIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <RotateClockwise2Icon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <SkewXIcon fontSize=\"tiny\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import * as React from 'react';\nimport type { TransformFunctionsItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CUSTOM_SIZE_LABEL } from '../size-control';\nimport { defaultValues, TransformFunctionKeys } from './initial-values';\n\nconst orderedAxis = [ 'x', 'y', 'z' ];\n\nconst formatLabel = ( value: TransformFunctionsItemPropValue[ 'value' ], functionType: keyof typeof defaultValues ) => {\n\treturn orderedAxis\n\t\t.map( ( axisKey ) => {\n\t\t\tconst axis = value[ axisKey as keyof typeof value ];\n\n\t\t\tif ( functionType === 'scale' ) {\n\t\t\t\treturn axis?.value || defaultValues[ functionType ];\n\t\t\t}\n\n\t\t\tconst defaults = defaultValues[ functionType ];\n\t\t\tconst size = axis?.value?.size ?? defaults.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaults.unit;\n\n\t\t\treturn unit === 'custom' ? size || CUSTOM_SIZE_LABEL : `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\n};\n\nexport const TransformLabel = ( props: { value: TransformFunctionsItemPropValue } ) => {\n\tconst { $$type, value } = props.value;\n\tswitch ( $$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <Label label={ __( 'Move', 'elementor' ) } value={ formatLabel( value, 'move' ) } />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <Label label={ __( 'Scale', 'elementor' ) } value={ formatLabel( value, 'scale' ) } />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <Label label={ __( 'Rotate', 'elementor' ) } value={ formatLabel( value, 'rotate' ) } />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <Label label={ __( 'Skew', 'elementor' ) } value={ formatLabel( value, 'skew' ) } />;\n\t\tdefault:\n\t\t\treturn '';\n\t}\n};\n\nconst Label = ( { label, value }: { label: string; value: string } ) => {\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }: { value }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { AdjustmentsIcon } from '@elementor/icons';\nimport { bindPopover, Box, Divider, Popover, type PopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider } from '../../bound-prop-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { ChildrenPerspectiveControl } from './transform-base-controls/children-perspective-control';\nimport { TransformOriginControl } from './transform-base-controls/transform-origin-control';\n\nconst SIZE = 'tiny';\n\nexport const TransformSettingsControl = ( {\n\tpopupState,\n\tanchorRef,\n\tshowChildrenPerspective,\n}: {\n\tpopupState: PopupState;\n\tanchorRef: React.RefObject< HTMLDivElement | null >;\n\tshowChildrenPerspective: boolean;\n} ) => {\n\tconst popupProps = bindPopover( {\n\t\t...popupState,\n\t\tanchorEl: anchorRef.current ?? undefined,\n\t} );\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\twidth: ( anchorRef.current?.offsetWidth || 0 ) - 6 + 'px',\n\t\t\t\t\t\tmt: 0.5,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...popupProps }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Transform settings', 'elementor' ) }\n\t\t\t\tonClose={ popupState.close }\n\t\t\t\ticon={ <AdjustmentsIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<Divider />\n\t\t\t<PopoverContent sx={ { px: 2, py: 1.5 } }>\n\t\t\t\t<PropKeyProvider bind={ 'transform-origin' }>\n\t\t\t\t\t<TransformOriginControl />\n\t\t\t\t</PropKeyProvider>\n\t\t\t\t{ showChildrenPerspective && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Box sx={ { my: 0.5 } }>\n\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<ChildrenPerspectiveControl />\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { perspectiveOriginPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\ntype FieldProps = {\n\tlabel: string;\n\tbind: string;\n\tunits: LengthUnit[];\n};\n\nconst ORIGIN_UNITS: LengthUnit[] = [ 'px', '%', 'em', 'rem' ];\n\nconst PERSPECTIVE_CONTROL_FIELD: FieldProps = {\n\tlabel: __( 'Perspective', 'elementor' ),\n\tbind: 'perspective',\n\tunits: [ 'px', 'em', 'rem', 'vw', 'vh' ],\n};\n\nconst CHILDREN_PERSPECTIVE_FIELDS: FieldProps[] = [\n\t{\n\t\tlabel: __( 'Origin X', 'elementor' ),\n\t\tbind: 'x',\n\t\tunits: ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tunits: ORIGIN_UNITS,\n\t},\n] as const;\n\nexport const ChildrenPerspectiveControl = () => {\n\treturn (\n\t\t<Stack direction=\"column\" spacing={ 1.5 }>\n\t\t\t<ControlFormLabel>{ __( 'Children perspective', 'elementor' ) }</ControlFormLabel>\n\t\t\t<PerspectiveControl />\n\t\t\t<PerspectiveOriginControl />\n\t\t</Stack>\n\t);\n};\n\nconst PerspectiveControl = () => (\n\t<PropKeyProvider bind={ 'perspective' }>\n\t\t<ControlFields control={ PERSPECTIVE_CONTROL_FIELD } key={ PERSPECTIVE_CONTROL_FIELD.bind } />\n\t</PropKeyProvider>\n);\n\nconst PerspectiveOriginControl = () => (\n\t<PropKeyProvider bind={ 'perspective-origin' }>\n\t\t<PerspectiveOriginControlProvider />\n\t</PropKeyProvider>\n);\n\nconst PerspectiveOriginControlProvider = () => {\n\tconst context = useBoundProp( perspectiveOriginPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ CHILDREN_PERSPECTIVE_FIELDS.map( ( control ) => (\n\t\t\t\t<PropKeyProvider bind={ control.bind } key={ control.bind }>\n\t\t\t\t\t<ControlFields control={ control } />\n\t\t\t\t</PropKeyProvider>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n\nconst ControlFields = ( { control }: { control: FieldProps } ) => {\n\tconst rowRef = React.useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<SizeControl variant=\"length\" units={ control.units } anchorRef={ rowRef } disableCustom />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { transformOriginPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\nconst TRANSFORM_ORIGIN_UNITS: LengthUnit[] = [ 'px', '%', 'em', 'rem' ];\nconst TRANSFORM_ORIGIN_UNITS_Z_AXIS = TRANSFORM_ORIGIN_UNITS.filter( ( unit ) => unit !== '%' );\n\nconst TRANSFORM_ORIGIN_FIELDS = [\n\t{\n\t\tlabel: __( 'Origin X', 'elementor' ),\n\t\tbind: 'x',\n\t\tunits: TRANSFORM_ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tunits: TRANSFORM_ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tunits: TRANSFORM_ORIGIN_UNITS_Z_AXIS,\n\t},\n];\n\nexport const TransformOriginControl = () => {\n\treturn (\n\t\t<Stack direction=\"column\" spacing={ 1.5 }>\n\t\t\t<ControlFormLabel>{ __( 'Transform', 'elementor' ) }</ControlFormLabel>\n\t\t\t{ TRANSFORM_ORIGIN_FIELDS.map( ( control ) => (\n\t\t\t\t<ControlFields control={ control } key={ control.bind } />\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n};\n\nconst ControlFields = ( { control }: { control: ( typeof TRANSFORM_ORIGIN_FIELDS )[ number ] } ) => {\n\tconst context = useBoundProp( transformOriginPropTypeUtil );\n\tconst rowRef = React.useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ control.bind }>\n\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<SizeControl variant=\"length\" units={ control.units } anchorRef={ rowRef } disableCustom />\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n\tcreateArrayPropUtils,\n\ttype KeyValuePropValue,\n\tselectionSizePropTypeUtil,\n\ttype SelectionSizePropValue,\n} from '@elementor/editor-props';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertTitle, Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { type Item, type RepeatablePropValue } from '../../components/control-repeater/types';\nimport { createControl } from '../../create-control';\nimport { RepeatableControl } from '../repeatable-control';\nimport { SelectionSizeControl } from '../selection-size-control';\nimport {\n\tinitialTransitionValue,\n\ttype TransitionItem,\n\ttransitionProperties,\n\ttype TransitionProperty,\n\ttype TransitionValue,\n} from './data';\nimport { subscribeToTransitionEvent } from './trainsition-events';\nimport { getTransitionPropertyByValue, TransitionSelector } from './transition-selector';\n\nconst DURATION_CONFIG = {\n\tvariant: 'time',\n\tunits: [ 's', 'ms' ],\n\tdefaultUnit: 'ms',\n};\n\nconst childArrayPropTypeUtil = createArrayPropUtils(\n\tselectionSizePropTypeUtil.key,\n\tselectionSizePropTypeUtil.schema,\n\t'transition'\n);\n\nsubscribeToTransitionEvent();\n\nconst areAllPropertiesUsed = ( value: SelectionSizePropValue[] = [] ) => {\n\treturn value?.length\n\t\t? transitionProperties.every( ( category ) => {\n\t\t\t\treturn category.properties.every( ( property ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tproperty.isDisabled ||\n\t\t\t\t\t\t!! value?.find( ( item ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t( item.value?.selection?.value as KeyValuePropValue )?.value?.value === property.value\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 } )\n\t\t: false;\n};\n\n// this config needs to be loaded at runtime/render since it's the transitionProperties object will be mutated by the pro plugin.\n// See: https://elementor.atlassian.net/browse/ED-20285\nconst getSelectionSizeProps = ( recentlyUsedList: string[], disabledItems?: string[], showPromotion?: boolean ) => {\n\treturn {\n\t\tselectionLabel: __( 'Type', 'elementor' ),\n\t\tsizeLabel: __( 'Duration', 'elementor' ),\n\t\tselectionConfig: {\n\t\t\tcomponent: TransitionSelector,\n\t\t\tprops: {\n\t\t\t\trecentlyUsedList,\n\t\t\t\tdisabledItems,\n\t\t\t\tshowPromotion,\n\t\t\t},\n\t\t},\n\t\tsizeConfigMap: {\n\t\t\t...transitionProperties.reduce(\n\t\t\t\t( acc, category ) => {\n\t\t\t\t\tcategory.properties.forEach( ( property ) => {\n\t\t\t\t\t\tacc[ property.value ] = DURATION_CONFIG;\n\t\t\t\t\t} );\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{} as Record< string, typeof DURATION_CONFIG >\n\t\t\t),\n\t\t},\n\t};\n};\n\nconst isItemDisabled = ( item: TransitionItem[ 'value' ] ) => {\n\tconst property = getTransitionPropertyByValue( item.value.selection.value?.value );\n\n\treturn ! property ? false : !! property.isDisabled;\n};\n\nconst getChildControlConfig = ( recentlyUsedList: string[], disabledItems?: string[], showPromotion?: boolean ) => {\n\treturn {\n\t\tpropTypeUtil: selectionSizePropTypeUtil,\n\t\tcomponent: SelectionSizeControl as unknown as React.ComponentType< Record< string, unknown > >,\n\t\tprops: getSelectionSizeProps( recentlyUsedList, disabledItems, showPromotion ),\n\t\tisItemDisabled: isItemDisabled as ( item: Item< RepeatablePropValue > ) => boolean,\n\t};\n};\n\nconst isPropertyUsed = ( value: SelectionSizePropValue[], property: TransitionProperty ) => {\n\treturn ( value ?? [] ).some( ( item ) => {\n\t\treturn ( item?.value?.selection?.value as KeyValuePropValue )?.value?.value === property.value;\n\t} );\n};\n\nconst getDisabledItemLabels = ( values: SelectionSizePropValue[] = [] ) => {\n\tconst selectedLabels: string[] = ( values || [] ).map(\n\t\t( item ) => ( item.value?.selection as KeyValuePropValue )?.value?.key?.value\n\t);\n\n\tconst proDisabledLabels: string[] = [];\n\ttransitionProperties.forEach( ( category ) => {\n\t\tconst disabledProperties = category.properties\n\t\t\t.filter( ( property ) => property.isDisabled && ! selectedLabels.includes( property.label ) )\n\t\t\t.map( ( property ) => property.label );\n\n\t\tproDisabledLabels.push( ...disabledProperties );\n\t} );\n\n\treturn {\n\t\tallDisabled: [ ...selectedLabels, ...proDisabledLabels ],\n\t\tproDisabled: proDisabledLabels,\n\t};\n};\n\nconst getInitialValue = ( values: SelectionSizePropValue[] = [] ): TransitionValue => {\n\tif ( ! values?.length ) {\n\t\treturn initialTransitionValue;\n\t}\n\n\tfor ( const category of transitionProperties ) {\n\t\tfor ( const property of category.properties ) {\n\t\t\tif ( isPropertyUsed( values, property ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...initialTransitionValue,\n\t\t\t\tselection: {\n\t\t\t\t\t$$type: 'key-value',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\treturn initialTransitionValue;\n};\n\nconst disableAddItemTooltipContent = (\n\t<Alert\n\t\tsx={ {\n\t\t\twidth: 280,\n\t\t\tgap: 0.5,\n\t\t} }\n\t\tcolor=\"secondary\"\n\t\ticon={ <InfoCircleFilledIcon /> }\n\t>\n\t\t<AlertTitle>{ __( 'Transitions', 'elementor' ) }</AlertTitle>\n\t\t<Box component=\"span\">\n\t\t\t<Typography variant=\"body2\">\n\t\t\t\t{ __( \"Switch to 'Normal' state to add a transition.\", 'elementor' ) }\n\t\t\t</Typography>\n\t\t</Box>\n\t</Alert>\n);\n\nexport const TransitionRepeaterControl = createControl(\n\t( {\n\t\trecentlyUsedListGetter,\n\t\tcurrentStyleState,\n\t}: {\n\t\trecentlyUsedListGetter: () => Promise< string[] >;\n\t\tcurrentStyleState: StyleDefinitionState;\n\t} ) => {\n\t\tconst currentStyleIsNormal = currentStyleState === null;\n\t\tconst [ recentlyUsedList, setRecentlyUsedList ] = useState< string[] >( [] );\n\n\t\tconst { value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\t\tconst { allDisabled: disabledItems, proDisabled: proDisabledItems } = useMemo(\n\t\t\t() => getDisabledItemLabels( value ),\n\t\t\t[ value ]\n\t\t);\n\n\t\tconst allowedTransitionSet = useMemo( () => {\n\t\t\tconst set = new Set< string >();\n\t\t\ttransitionProperties.forEach( ( category ) => {\n\t\t\t\tcategory.properties.forEach( ( prop ) => set.add( prop.value ) );\n\t\t\t} );\n\t\t\treturn set;\n\t\t}, [] );\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! value || value.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sanitized = value.filter( ( item ) => {\n\t\t\t\tconst selectionValue = ( item?.value?.selection?.value as KeyValuePropValue )?.value?.value ?? '';\n\t\t\t\treturn allowedTransitionSet.has( selectionValue );\n\t\t\t} );\n\n\t\t\tif ( sanitized.length !== value.length ) {\n\t\t\t\tsetValue( sanitized );\n\t\t\t}\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ allowedTransitionSet ] );\n\n\t\tuseEffect( () => {\n\t\t\trecentlyUsedListGetter().then( setRecentlyUsedList );\n\t\t}, [ recentlyUsedListGetter ] );\n\n\t\tconst allPropertiesUsed = useMemo( () => areAllPropertiesUsed( value ), [ value ] );\n\t\tconst isAddItemDisabled = ! currentStyleIsNormal || allPropertiesUsed;\n\n\t\treturn (\n\t\t\t<RepeatableControl\n\t\t\t\tlabel={ __( 'Transitions', 'elementor' ) }\n\t\t\t\trepeaterLabel={ __( 'Transitions', 'elementor' ) }\n\t\t\t\tpatternLabel=\"${value.selection.value.key.value}: ${value.size.value.size}${value.size.value.unit}\"\n\t\t\t\tplaceholder={ __( 'Empty Transition', 'elementor' ) }\n\t\t\t\tshowDuplicate={ false }\n\t\t\t\tshowToggle={ true }\n\t\t\t\tinitialValues={ getInitialValue( value ) }\n\t\t\t\tchildControlConfig={ getChildControlConfig(\n\t\t\t\t\trecentlyUsedList,\n\t\t\t\t\tdisabledItems,\n\t\t\t\t\tproDisabledItems.length > 0\n\t\t\t\t) }\n\t\t\t\tpropKey=\"transition\"\n\t\t\t\taddItemTooltipProps={ {\n\t\t\t\t\tdisabled: isAddItemDisabled,\n\t\t\t\t\tenableTooltip: ! currentStyleIsNormal,\n\t\t\t\t\ttooltipContent: disableAddItemTooltipContent,\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport { selectionSizePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { createControl } from '../create-control';\nimport { SizeControl, type SizeControlProps } from './size-control';\n\ntype SelectionComponentConfig = {\n\tcomponent: React.ComponentType< Record< string, unknown > >;\n\tprops: Record< string, unknown >;\n};\n\ntype SizeControlConfig = Pick< SizeControlProps, 'variant' | 'units' | 'defaultUnit' >;\n\ntype SelectionSizeControlProps = {\n\tselectionLabel: string;\n\tsizeLabel: string;\n\tselectionConfig: SelectionComponentConfig;\n\tsizeConfigMap: Record< string, SizeControlConfig >;\n};\n\nexport const SelectionSizeControl = createControl(\n\t( { selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }: SelectionSizeControlProps ) => {\n\t\tconst { value, setValue, propType } = useBoundProp( selectionSizePropTypeUtil );\n\t\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\t\tconst sizeFieldId = sizeLabel.replace( /\\s+/g, '-' ).toLowerCase();\n\n\t\tconst currentSizeConfig = useMemo( () => {\n\t\t\tswitch ( value.selection.$$type ) {\n\t\t\t\tcase 'key-value':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value.value.value || '' ];\n\t\t\t\tcase 'string':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value || '' ];\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}, [ value, sizeConfigMap ] );\n\t\tconst SelectionComponent = selectionConfig.component;\n\n\t\treturn (\n\t\t\t<PropProvider value={ value } setValue={ setValue } propType={ propType }>\n\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t<ControlFormLabel>{ selectionLabel }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<PropKeyProvider bind=\"selection\">\n\t\t\t\t\t\t\t<SelectionComponent { ...selectionConfig.props } />\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t{ currentSizeConfig && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t\t\t<ControlFormLabel htmlFor={ sizeFieldId }>{ sizeLabel }</ControlFormLabel>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind=\"size\">\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tvariant={ currentSizeConfig.variant }\n\t\t\t\t\t\t\t\t\t\tunits={ currentSizeConfig.units }\n\t\t\t\t\t\t\t\t\t\tdefaultUnit={ currentSizeConfig.defaultUnit }\n\t\t\t\t\t\t\t\t\t\tid={ sizeFieldId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n","import { type KeyValuePropValue, type SizePropValue } from '@elementor/editor-props';\nimport { isVersionGreaterOrEqual } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nexport type TransitionProperty = {\n\tlabel: string;\n\tvalue: string;\n\tunavailable?: boolean;\n\tisDisabled?: boolean;\n};\n\nexport type TransitionCategory = {\n\tlabel: string;\n\ttype: 'category';\n\tproperties: TransitionProperty[];\n};\n\nexport type TransitionValue = {\n\tselection: KeyValuePropValue;\n\tsize: SizePropValue;\n};\n\nexport type TransitionItem = {\n\t$$type: 'selection-size';\n\tvalue: {\n\t\t$$type: 'key-value';\n\t\tvalue: TransitionValue;\n\t};\n};\n\nexport const initialTransitionValue: TransitionValue = {\n\tselection: {\n\t\t$$type: 'key-value',\n\t\tvalue: {\n\t\t\tkey: { value: __( 'All properties', 'elementor' ), $$type: 'string' },\n\t\t\tvalue: { value: 'all', $$type: 'string' },\n\t\t},\n\t},\n\tsize: { $$type: 'size', value: { size: 200, unit: 'ms' } },\n};\n\nconst MIN_PRO_VERSION = '3.35';\n\nconst getIsSiteRtl = () => {\n\treturn !! window.elementorFrontend?.config?.is_rtl;\n};\n\n// TODO: Remove this after version 4.01 is released\nconst shouldExtendTransitionProperties = (): boolean => {\n\tconst hasProInstalled = !! window.elementorPro;\n\n\tif ( ! hasProInstalled ) {\n\t\treturn true;\n\t}\n\n\tconst proVersion = window.elementorPro?.config?.version;\n\n\tif ( ! proVersion ) {\n\t\treturn false;\n\t}\n\n\treturn isVersionGreaterOrEqual( proVersion, MIN_PRO_VERSION );\n};\n\nconst createTransitionPropertiesList = (): TransitionCategory[] => {\n\tconst isSiteRtl = getIsSiteRtl();\n\n\tconst baseProperties: TransitionCategory[] = [\n\t\t{\n\t\t\tlabel: __( 'Default', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [ { label: __( 'All properties', 'elementor' ), value: 'all' } ],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Margin', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Margin (all)', 'elementor' ), value: 'margin', isDisabled: true },\n\t\t\t\t{ label: __( 'Margin bottom', 'elementor' ), value: 'margin-block-end', isDisabled: true },\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Margin right', 'elementor' ) : __( 'Margin left', 'elementor' ),\n\t\t\t\t\tvalue: 'margin-inline-start',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Margin left', 'elementor' ) : __( 'Margin right', 'elementor' ),\n\t\t\t\t\tvalue: 'margin-inline-end',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{ label: __( 'Margin top', 'elementor' ), value: 'margin-block-start', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Padding', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Padding (all)', 'elementor' ), value: 'padding', isDisabled: true },\n\t\t\t\t{ label: __( 'Padding bottom', 'elementor' ), value: 'padding-block-end', isDisabled: true },\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Padding right', 'elementor' ) : __( 'Padding left', 'elementor' ),\n\t\t\t\t\tvalue: 'padding-inline-start',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Padding left', 'elementor' ) : __( 'Padding right', 'elementor' ),\n\t\t\t\t\tvalue: 'padding-inline-end',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{ label: __( 'Padding top', 'elementor' ), value: 'padding-block-start', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Flex', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Flex (all)', 'elementor' ), value: 'flex', isDisabled: true },\n\t\t\t\t{ label: __( 'Flex grow', 'elementor' ), value: 'flex-grow', isDisabled: true },\n\t\t\t\t{ label: __( 'Flex shrink', 'elementor' ), value: 'flex-shrink', isDisabled: true },\n\t\t\t\t{ label: __( 'Flex basis', 'elementor' ), value: 'flex-basis', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Size', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Width', 'elementor' ), value: 'width', isDisabled: true },\n\t\t\t\t{ label: __( 'Height', 'elementor' ), value: 'height', isDisabled: true },\n\t\t\t\t{ label: __( 'Max height', 'elementor' ), value: 'max-height', isDisabled: true },\n\t\t\t\t{ label: __( 'Max width', 'elementor' ), value: 'max-width', isDisabled: true },\n\t\t\t\t{ label: __( 'Min height', 'elementor' ), value: 'min-height', isDisabled: true },\n\t\t\t\t{ label: __( 'Min width', 'elementor' ), value: 'min-width', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Position', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Top', 'elementor' ), value: 'inset-block-start', isDisabled: true },\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\t\t\t\tvalue: 'inset-inline-start',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\t\t\t\tvalue: 'inset-inline-end',\n\t\t\t\t\tisDisabled: true,\n\t\t\t\t},\n\t\t\t\t{ label: __( 'Bottom', 'elementor' ), value: 'inset-block-end', isDisabled: true },\n\t\t\t\t{ label: __( 'Z-index', 'elementor' ), value: 'z-index', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Typography', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Font color', 'elementor' ), value: 'color', isDisabled: true },\n\t\t\t\t{ label: __( 'Font size', 'elementor' ), value: 'font-size', isDisabled: true },\n\t\t\t\t{ label: __( 'Line height', 'elementor' ), value: 'line-height', isDisabled: true },\n\t\t\t\t{ label: __( 'Letter spacing', 'elementor' ), value: 'letter-spacing', isDisabled: true },\n\t\t\t\t{ label: __( 'Word spacing', 'elementor' ), value: 'word-spacing', isDisabled: true },\n\t\t\t\t{ label: __( 'Font variations', 'elementor' ), value: 'font-variation-settings', isDisabled: true },\n\t\t\t\t{ label: __( 'Text stroke color', 'elementor' ), value: '-webkit-text-stroke-color', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Background', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Background color', 'elementor' ), value: 'background-color', isDisabled: true },\n\t\t\t\t{ label: __( 'Background position', 'elementor' ), value: 'background-position', isDisabled: true },\n\t\t\t\t{ label: __( 'Box shadow', 'elementor' ), value: 'box-shadow', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Border', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Border (all)', 'elementor' ), value: 'border', isDisabled: true },\n\t\t\t\t{ label: __( 'Border radius', 'elementor' ), value: 'border-radius', isDisabled: true },\n\t\t\t\t{ label: __( 'Border color', 'elementor' ), value: 'border-color', isDisabled: true },\n\t\t\t\t{ label: __( 'Border width', 'elementor' ), value: 'border-width', isDisabled: true },\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tlabel: __( 'Effects', 'elementor' ),\n\t\t\ttype: 'category',\n\t\t\tproperties: [\n\t\t\t\t{ label: __( 'Opacity', 'elementor' ), value: 'opacity', isDisabled: true },\n\t\t\t\t{ label: __( 'Transform (all)', 'elementor' ), value: 'transform', isDisabled: true },\n\t\t\t\t{ label: __( 'Filter (all)', 'elementor' ), value: 'filter', isDisabled: true },\n\t\t\t],\n\t\t},\n\t];\n\n\treturn shouldExtendTransitionProperties() ? baseProperties : [ baseProperties[ 0 ] ];\n};\n\nexport const transitionProperties: TransitionCategory[] = createTransitionPropertiesList();\n\nexport const transitionsItemsList = transitionProperties.map( ( category ) => ( {\n\tlabel: category.label,\n\titems: category.properties.map( ( property ) => property.label ),\n} ) );\n","import { getSelectedElements } from '@elementor/editor-elements';\nimport { trackEvent } from '@elementor/mixpanel';\n\nimport { eventBus } from '../../services/event-bus';\nimport { type initialTransitionValue } from './data';\n\ntype TransitionItemValue = typeof initialTransitionValue;\n\nconst transitionRepeaterMixpanelEvent = {\n\teventName: 'click_added_transition',\n\tlocation: 'V4 Style Tab',\n\tsecondaryLocation: 'Transition control',\n\ttrigger: 'click',\n};\n\nexport function subscribeToTransitionEvent() {\n\teventBus.subscribe( 'transition-item-added', ( data ) => {\n\t\tconst payload = data as { itemValue?: TransitionItemValue };\n\t\tconst value = payload?.itemValue?.selection?.value?.value?.value;\n\t\tconst selectedElements = getSelectedElements();\n\t\tconst widgetType = selectedElements[ 0 ]?.type ?? null;\n\t\ttrackEvent( {\n\t\t\ttransition_type: value ?? 'unknown',\n\t\t\t...transitionRepeaterMixpanelEvent,\n\t\t\twidget_type: widgetType,\n\t\t} );\n\t} );\n}\n","import * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport { keyValuePropTypeUtil, type KeyValuePropValue, type StringPropValue } from '@elementor/editor-props';\nimport { PromotionChip } from '@elementor/editor-ui';\nimport { ChevronDownIcon, CrownFilledIcon, VariationsIcon } from '@elementor/icons';\nimport { Alert, bindPopover, bindTrigger, Box, Popover, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { ItemSelector } from '../../components/item-selector';\nimport ControlActions from '../../control-actions/control-actions';\nimport { transitionProperties, transitionsItemsList } from './data';\n\nconst toTransitionSelectorValue = ( label: string ) => {\n\tfor ( const category of transitionProperties ) {\n\t\tconst property = category.properties.find( ( prop ) => prop.label === label );\n\t\tif ( property ) {\n\t\t\treturn {\n\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n};\n\nexport function getTransitionPropertyByValue( item?: StringPropValue | null ) {\n\tif ( ! item?.value ) {\n\t\treturn null;\n\t}\n\n\tfor ( const category of transitionProperties ) {\n\t\tfor ( const property of category.properties ) {\n\t\t\tif ( property.value === item.value ) {\n\t\t\t\treturn property;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nconst includeCurrentValueInOptions = ( value: KeyValuePropValue[ 'value' ], disabledItems: string[] ) => {\n\treturn disabledItems.filter( ( item ) => {\n\t\treturn item !== value.key.value;\n\t} );\n};\n\nconst PRO_UPGRADE_URL = 'https://go.elementor.com/go-pro-transitions-modal/';\n\nexport const TransitionSelector = ( {\n\trecentlyUsedList = [],\n\tdisabledItems = [],\n\tshowPromotion = false,\n}: {\n\trecentlyUsedList: string[];\n\tdisabledItems?: string[];\n\tshowPromotion?: boolean;\n} ) => {\n\tconst { value, setValue } = useBoundProp( keyValuePropTypeUtil );\n\tconst {\n\t\tkey: { value: transitionLabel },\n\t} = value;\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst disabledCategories = useMemo( () => {\n\t\treturn new Set(\n\t\t\ttransitionProperties\n\t\t\t\t.filter( ( cat ) => cat.properties.some( ( prop ) => prop.isDisabled ) )\n\t\t\t\t.map( ( cat ) => cat.label )\n\t\t);\n\t}, [] );\n\n\tconst getItemList = () => {\n\t\tconst recentItems = recentlyUsedList\n\t\t\t.map( ( item ) => getTransitionPropertyByValue( { value: item, $$type: 'string' } )?.label )\n\t\t\t.filter( ( item ) => !! item ) as string[];\n\t\tconst filteredItems = transitionsItemsList.map( ( category ) => {\n\t\t\treturn {\n\t\t\t\t...category,\n\t\t\t\titems: category.items.filter( ( item ) => ! recentItems.includes( item ) ),\n\t\t\t};\n\t\t} );\n\t\tif ( recentItems.length === 0 ) {\n\t\t\treturn filteredItems;\n\t\t}\n\t\tconst [ first, ...rest ] = filteredItems;\n\t\treturn [\n\t\t\tfirst,\n\t\t\t{\n\t\t\t\tlabel: __( 'Recently Used', 'elementor' ),\n\t\t\t\titems: recentItems,\n\t\t\t},\n\t\t\t...rest,\n\t\t];\n\t};\n\n\tconst handleTransitionPropertyChange = ( newLabel: string ) => {\n\t\tconst newValue = toTransitionSelectorValue( newLabel );\n\n\t\tif ( ! newValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetValue( newValue );\n\t\tpopoverState.close();\n\t};\n\n\tconst getAnchorPosition = () => {\n\t\tif ( ! defaultRef.current ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rect = defaultRef.current.getBoundingClientRect();\n\t\treturn {\n\t\t\ttop: rect.top,\n\t\t\tleft: rect.right + 36,\n\t\t};\n\t};\n\n\treturn (\n\t\t<Box ref={ defaultRef }>\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ transitionLabel }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\tanchorPosition={ getAnchorPosition() }\n\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\titemsList={ getItemList() }\n\t\t\t\t\tselectedItem={ transitionLabel }\n\t\t\t\t\tonItemChange={ handleTransitionPropertyChange }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ 268 }\n\t\t\t\t\ttitle={ __( 'Transition Property', 'elementor' ) }\n\t\t\t\t\ticon={ VariationsIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\tdisabledItems={ includeCurrentValueInOptions( value, disabledItems ) }\n\t\t\t\t\tcategoryItemContentTemplate={ ( item ) => (\n\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>{ item.value }</span>\n\t\t\t\t\t\t\t{ showPromotion && disabledCategories.has( item.value ) && <PromotionChip /> }\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t) }\n\t\t\t\t\tfooter={\n\t\t\t\t\t\tshowPromotion ? (\n\t\t\t\t\t\t\t<Alert\n\t\t\t\t\t\t\t\tvariant=\"standard\"\n\t\t\t\t\t\t\t\tcolor=\"promotion\"\n\t\t\t\t\t\t\t\ticon={ false }\n\t\t\t\t\t\t\t\trole=\"dialog\"\n\t\t\t\t\t\t\t\taria-label=\"promotion-alert\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tsx={ { m: 1.5, mt: 0 } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upgrade to customize transition properties and control effects.', 'elementor' ) }\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tcomponent=\"a\"\n\t\t\t\t\t\t\t\t\thref={ PRO_UPGRADE_URL }\n\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\t\t\t\tgap: 0.5,\n\t\t\t\t\t\t\t\t\t\tcolor: 'promotion.main',\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<CrownFilledIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t\t\t{ __( 'Upgrade now', 'elementor' ) }\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t) : null\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport type { Dayjs } from 'dayjs';\nimport * as dayjs from 'dayjs';\nimport { isTransformable, type Props, stringPropTypeUtil } from '@elementor/editor-props';\nimport { DateTimePropTypeUtil } from '@elementor/editor-props';\nimport { Box, DatePicker, LocalizationProvider, TimePicker } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst DATE_FORMAT = 'YYYY-MM-DD';\nconst TIME_FORMAT = 'HH:mm';\n\nexport const DateTimeControl = createControl( ( { inputDisabled }: { inputDisabled?: boolean } ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( DateTimePropTypeUtil );\n\n\tconst handleChange = ( newValue: Props, meta: { bind: 'date' | 'time' } ) => {\n\t\tconst field = meta.bind;\n\t\tconst fieldValue = newValue[ field as 'date' | 'time' ];\n\n\t\tif ( isTransformable( fieldValue ) ) {\n\t\t\treturn setValue( { ...value, [ field ]: fieldValue } );\n\t\t}\n\n\t\tlet formattedValue = '';\n\n\t\tif ( fieldValue ) {\n\t\t\tconst dayjsValue = fieldValue as Dayjs;\n\t\t\tformattedValue = field === 'date' ? dayjsValue.format( DATE_FORMAT ) : dayjsValue.format( TIME_FORMAT );\n\t\t}\n\n\t\tsetValue( {\n\t\t\t...value,\n\t\t\t[ field ]: {\n\t\t\t\t$$type: 'string',\n\t\t\t\tvalue: formattedValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst parseDateValue = ( dateStr?: string | null ): Dayjs | null => {\n\t\tif ( ! dateStr ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst d = ( dayjs as unknown as { default: ( s?: string | number | Date ) => Dayjs } ).default( dateStr );\n\n\t\treturn d && typeof d.isValid === 'function' && d.isValid() ? d : null;\n\t};\n\n\tconst parseTimeValue = ( timeStr?: string | null ): Dayjs | null => {\n\t\tif ( ! timeStr ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst [ hours, minutes ] = timeStr.split( ':' );\n\t\tconst h = Number.parseInt( hours ?? '', 10 );\n\t\tconst m = Number.parseInt( minutes ?? '', 10 );\n\n\t\tif ( Number.isNaN( h ) || Number.isNaN( m ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst base = ( dayjs as unknown as { default: () => Dayjs } ).default();\n\t\treturn base.hour( h ).minute( m ).second( 0 ).millisecond( 0 );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<ControlActions>\n\t\t\t\t<LocalizationProvider>\n\t\t\t\t\t<Box display=\"flex\" gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t\t<PropKeyProvider bind=\"date\">\n\t\t\t\t\t\t\t<DatePicker\n\t\t\t\t\t\t\t\tvalue={ parseDateValue( stringPropTypeUtil.extract( value?.date ) ) }\n\t\t\t\t\t\t\t\tonChange={ ( v: Dayjs | null ) =>\n\t\t\t\t\t\t\t\t\thandleChange( { date: v } as Props, { bind: 'date' } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ inputDisabled }\n\t\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\t\ttextField: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerButton: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerIcon: { fontSize: 'tiny' },\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\n\t\t\t\t\t\t<PropKeyProvider bind=\"time\">\n\t\t\t\t\t\t\t<TimePicker\n\t\t\t\t\t\t\t\tvalue={ parseTimeValue( stringPropTypeUtil.extract( value?.time ) ) }\n\t\t\t\t\t\t\t\tonChange={ ( v: Dayjs | null ) =>\n\t\t\t\t\t\t\t\t\thandleChange( { time: v } as Props, { bind: 'time' } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ inputDisabled }\n\t\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\t\ttextField: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerButton: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerIcon: { fontSize: 'tiny' },\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Box>\n\t\t\t\t</LocalizationProvider>\n\t\t\t</ControlActions>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport { type ComponentProps } from 'react';\nimport { htmlPropTypeUtil } from '@elementor/editor-props';\nimport { Box, type SxProps, type Theme } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { InlineEditor } from '../components/inline-editor';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const InlineEditingControl = createControl(\n\t( {\n\t\tsx,\n\t\tattributes,\n\t\tprops,\n\t}: {\n\t\tsx?: SxProps< Theme >;\n\t\tattributes?: Record< string, string >;\n\t\tprops?: ComponentProps< 'div' >;\n\t} ) => {\n\t\tconst { value, setValue } = useBoundProp( htmlPropTypeUtil );\n\t\tconst handleChange = ( newValue: unknown ) => setValue( newValue as string );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Box\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tp: 0.8,\n\t\t\t\t\t\tborder: '1px solid',\n\t\t\t\t\t\tborderColor: 'grey.200',\n\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\ttransition: 'border-color .2s ease, box-shadow .2s ease',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tborderColor: 'black',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'&:focus-within': {\n\t\t\t\t\t\t\tborderColor: 'black',\n\t\t\t\t\t\t\tboxShadow: '0 0 0 1px black',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .ProseMirror:focus': {\n\t\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .ProseMirror': {\n\t\t\t\t\t\t\tminHeight: '70px',\n\t\t\t\t\t\t\tfontSize: '12px',\n\t\t\t\t\t\t\t'& a': {\n\t\t\t\t\t\t\t\tcolor: 'inherit',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'& .elementor-inline-editor-reset': {\n\t\t\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'.strip-styles *': {\n\t\t\t\t\t\t\tall: 'unset',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...sx,\n\t\t\t\t\t} }\n\t\t\t\t\t{ ...attributes }\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t<InlineEditor value={ value || '' } setValue={ handleChange } />\n\t\t\t\t</Box>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport {\n\ttype DependencyList,\n\tforwardRef,\n\ttype PropsWithChildren,\n\ttype RefObject,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { bindPopover, Box, ClickAwayListener, Popover, type SxProps, type Theme, usePopupState } from '@elementor/ui';\nimport Bold from '@tiptap/extension-bold';\nimport Document from '@tiptap/extension-document';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Heading from '@tiptap/extension-heading';\nimport Italic from '@tiptap/extension-italic';\nimport Link from '@tiptap/extension-link';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Strike from '@tiptap/extension-strike';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport Text from '@tiptap/extension-text';\nimport Underline from '@tiptap/extension-underline';\nimport { type EditorView } from '@tiptap/pm/view';\nimport { type Editor, EditorContent, useEditor } from '@tiptap/react';\n\nimport { isEmpty } from '../utils/inline-editing';\nimport { InlineEditorToolbar } from './inline-editor-toolbar';\n\nconst ITALIC_KEYBOARD_SHORTCUT = 'i';\nconst BOLD_KEYBOARD_SHORTCUT = 'b';\nconst UNDERLINE_KEYBOARD_SHORTCUT = 'u';\n\nimport type { ElementID } from '@elementor/editor-elements';\n\ntype InlineEditorProps = {\n\tvalue: string | null;\n\tsetValue: ( value: string | null ) => void;\n\tattributes?: Record< string, string >;\n\telementClasses?: string;\n\tsx?: SxProps< Theme >;\n\tonBlur?: ( event: Event ) => void;\n\tshowToolbar?: boolean;\n\tautofocus?: boolean;\n\tgetInitialPopoverPosition?: () => { left: number; top: number };\n\texpectedTag?: string | null;\n\telementId?: ElementID;\n};\n\nconst INLINE_EDITOR_RESET_CLASS = 'elementor-inline-editor-reset';\n\nconst useOnUpdate = ( callback: () => void, dependencies: DependencyList ): void => {\n\tconst hasMounted = useRef( false );\n\n\tuseEffect( () => {\n\t\tif ( hasMounted.current ) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\thasMounted.current = true;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, dependencies );\n};\n\nconst calcSelectionCenter = (\n\tview: EditorView,\n\tcontainer: { left: number; top: number } | undefined\n): { left: number; top: number } | null => {\n\tif ( ! container ) {\n\t\treturn null;\n\t}\n\n\tconst { from, to } = view.state.selection;\n\tconst start = view.coordsAtPos( from );\n\tconst end = view.coordsAtPos( to );\n\n\tconst left = ( start.left + end.left ) / 2 - container.left;\n\tconst top = Math.min( start.top, end.top ) - container.top;\n\n\treturn { left, top };\n};\n\ntype WrapperProps = PropsWithChildren< {\n\tcontainerRef: RefObject< HTMLDivElement >;\n\teditor: ReturnType< typeof useEditor >;\n\tsx: SxProps< Theme >;\n\tonBlur?: ( event: Event ) => void;\n} >;\n\nconst Wrapper = ( { children, containerRef, editor, sx, onBlur }: WrapperProps ) => {\n\tconst wrappedChildren = (\n\t\t<Box ref={ containerRef } { ...sx }>\n\t\t\t{ children }\n\t\t</Box>\n\t);\n\n\treturn onBlur ? (\n\t\t<ClickAwayListener\n\t\t\tonClickAway={ ( event: PointerEvent ) => {\n\t\t\t\tif (\n\t\t\t\t\tcontainerRef.current?.contains( event.target as Node ) ||\n\t\t\t\t\teditor.view.dom.contains( event.target as Node )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonBlur?.( event );\n\t\t\t} }\n\t\t>\n\t\t\t{ wrappedChildren }\n\t\t</ClickAwayListener>\n\t) : (\n\t\t<>{ wrappedChildren }</>\n\t);\n};\n\nexport const InlineEditor = forwardRef(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tsetValue,\n\t\t\tattributes = {},\n\t\t\telementClasses = '',\n\t\t\tshowToolbar = false,\n\t\t\tautofocus = false,\n\t\t\tsx = {},\n\t\t\tonBlur = undefined,\n\t\t\tgetInitialPopoverPosition = undefined,\n\t\t\texpectedTag = null,\n\t\t\telementId = undefined,\n\t\t}: InlineEditorProps,\n\t\tref\n\t) => {\n\t\tconst containerRef = useRef< HTMLDivElement >( null );\n\t\tconst popupState = usePopupState( { variant: 'popover', disableAutoFocus: true } );\n\t\tconst [ hasSelectedContent, setHasSelectedContent ] = useState( false );\n\t\tconst documentContentSettings = !! expectedTag ? 'block+' : 'inline*';\n\t\tconst [ selectionRect, setSelectionRect ] = useState< { left: number; top: number } | null >( null );\n\n\t\tconst onSelectionEnd = ( view: EditorView ) => {\n\t\t\tconst hasSelection = ! view.state.selection.empty;\n\t\t\tsetHasSelectedContent( hasSelection );\n\n\t\t\tif ( hasSelection ) {\n\t\t\t\tconst container = containerRef.current?.getBoundingClientRect();\n\t\t\t\tsetSelectionRect( calcSelectionCenter( view, container ) );\n\t\t\t} else {\n\t\t\t\tsetSelectionRect( null );\n\t\t\t}\n\n\t\t\tqueueMicrotask( () => view.focus() );\n\t\t};\n\n\t\tconst onKeyDown = ( _: EditorView, event: KeyboardEvent ) => {\n\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\tonBlur?.( event );\n\t\t\t}\n\n\t\t\tif ( ( ! event.metaKey && ! event.ctrlKey ) || event.altKey ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t[ ITALIC_KEYBOARD_SHORTCUT, BOLD_KEYBOARD_SHORTCUT, UNDERLINE_KEYBOARD_SHORTCUT ].includes( event.key )\n\t\t\t) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t};\n\n\t\tconst toolbarRelatedListeners = showToolbar\n\t\t\t? {\n\t\t\t\t\tmouseup: onSelectionEnd,\n\t\t\t\t\tkeyup: onSelectionEnd,\n\t\t\t\t\tkeydown: onKeyDown,\n\t\t\t }\n\t\t\t: undefined;\n\n\t\tconst onUpdate = ( { editor: updatedEditor }: { editor: Editor } ) => {\n\t\t\tconst newValue: string | null = updatedEditor.getHTML();\n\n\t\t\tsetValue( isEmpty( newValue ) ? null : newValue );\n\t\t};\n\n\t\tconst classes = `${ INLINE_EDITOR_RESET_CLASS } ${ elementClasses }`;\n\n\t\tconst editor = useEditor( {\n\t\t\textensions: [\n\t\t\t\tDocument.extend( {\n\t\t\t\t\tcontent: documentContentSettings,\n\t\t\t\t} ),\n\t\t\t\tParagraph.extend( {\n\t\t\t\t\trenderHTML( { HTMLAttributes } ) {\n\t\t\t\t\t\tconst tag = expectedTag ?? 'p';\n\t\t\t\t\t\treturn [ tag, { ...HTMLAttributes, class: classes }, 0 ];\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t\tHeading.extend( {\n\t\t\t\t\trenderHTML( { node, HTMLAttributes } ) {\n\t\t\t\t\t\tif ( expectedTag ) {\n\t\t\t\t\t\t\treturn [ expectedTag, { ...HTMLAttributes, class: classes }, 0 ];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst level = this.options.levels.includes( node.attrs.level )\n\t\t\t\t\t\t\t? node.attrs.level\n\t\t\t\t\t\t\t: this.options.levels[ 0 ];\n\n\t\t\t\t\t\treturn [ `h${ level }`, { ...HTMLAttributes, class: classes }, 0 ];\n\t\t\t\t\t},\n\t\t\t\t} ).configure( {\n\t\t\t\t\tlevels: [ 1, 2, 3, 4, 5, 6 ],\n\t\t\t\t} ),\n\t\t\t\tLink.configure( {\n\t\t\t\t\topenOnClick: false,\n\t\t\t\t} ),\n\t\t\t\tText,\n\t\t\t\tBold,\n\t\t\t\tItalic,\n\t\t\t\tStrike,\n\t\t\t\tSuperscript,\n\t\t\t\tSubscript,\n\t\t\t\tUnderline,\n\t\t\t\tHardBreak.extend( {\n\t\t\t\t\taddKeyboardShortcuts() {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tEnter: () => this.editor.commands.setHardBreak(),\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\tcontent: value,\n\t\t\tonUpdate,\n\t\t\tautofocus,\n\t\t\teditorProps: {\n\t\t\t\tattributes: {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tclass: attributes.class ?? '',\n\t\t\t\t\trole: 'textbox',\n\t\t\t\t},\n\t\t\t\thandleDOMEvents: toolbarRelatedListeners,\n\t\t\t},\n\t\t} );\n\n\t\tuseOnUpdate( () => {\n\t\t\tif ( ! editor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentContent = editor.getHTML();\n\n\t\t\tif ( currentContent !== value ) {\n\t\t\t\teditor.commands.setContent( value, { emitUpdate: false } );\n\t\t\t}\n\t\t}, [ editor, value ] );\n\n\t\tconst computePopupPosition = () => {\n\t\t\tif ( ! selectionRect ) {\n\t\t\t\treturn { left: 0, top: 0 };\n\t\t\t}\n\n\t\t\tconst container = containerRef.current?.getBoundingClientRect();\n\t\t\tif ( ! container ) {\n\t\t\t\treturn { left: 0, top: 0 };\n\t\t\t}\n\n\t\t\tconst initial = getInitialPopoverPosition?.() ?? { left: 0, top: 0 };\n\n\t\t\treturn {\n\t\t\t\tleft: container.left + selectionRect.left + initial.left,\n\t\t\t\ttop: container.top + selectionRect.top + initial.top,\n\t\t\t};\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Wrapper containerRef={ containerRef } editor={ editor } sx={ sx } onBlur={ onBlur }>\n\t\t\t\t\t<EditorContent ref={ ref } editor={ editor } />\n\t\t\t\t</Wrapper>\n\t\t\t\t{ showToolbar && containerRef.current && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\troot: {\n\t\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t\tpointerEvents: 'none',\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\t{ ...bindPopover( popupState ) }\n\t\t\t\t\t\topen={ hasSelectedContent && selectionRect !== null }\n\t\t\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\t\t\tanchorPosition={ computePopupPosition() }\n\t\t\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\t\t\t\ttransformOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InlineEditorToolbar editor={ editor } elementId={ elementId } />\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n","export function isEmpty( value: string | null = '' ) {\n\tif ( ! value ) {\n\t\treturn true;\n\t}\n\n\tconst pseudoElement = document.createElement( 'div' );\n\n\tpseudoElement.innerHTML = value;\n\n\treturn ! pseudoElement.textContent?.length;\n}\n","import * as React from 'react';\nimport { useMemo, useRef, useState } from 'react';\nimport { type ElementID, getElementSetting } from '@elementor/editor-elements';\nimport { type LinkPropValue } from '@elementor/editor-props';\nimport {\n\tBoldIcon,\n\tItalicIcon,\n\tLinkIcon,\n\tMinusIcon,\n\tStrikethroughIcon,\n\tSubscriptIcon,\n\tSuperscriptIcon,\n\tUnderlineIcon,\n} from '@elementor/icons';\nimport {\n\tBox,\n\tIconButton,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttoggleButtonGroupClasses,\n\tTooltip,\n\tusePopupState,\n} from '@elementor/ui';\nimport { type Editor, useEditorState } from '@tiptap/react';\nimport { __ } from '@wordpress/i18n';\n\nimport { UrlPopover } from './url-popover';\n\nconst checkIfElementHasLink = ( elementId: ElementID ): boolean =>\n\t!! getElementSetting< LinkPropValue >( elementId, 'link' )?.value?.destination;\n\ntype InlineEditorToolbarProps = {\n\teditor: Editor;\n\telementId?: ElementID;\n};\n\nconst toolbarButtons = {\n\tclear: {\n\t\tlabel: __( 'Clear', 'elementor' ),\n\t\ticon: <MinusIcon fontSize=\"tiny\" />,\n\t\taction: 'clear',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().clearNodes().unsetAllMarks().run();\n\t\t},\n\t},\n\tbold: {\n\t\tlabel: __( 'Bold', 'elementor' ),\n\t\ticon: <BoldIcon fontSize=\"tiny\" />,\n\t\taction: 'bold',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleBold().run();\n\t\t},\n\t},\n\titalic: {\n\t\tlabel: __( 'Italic', 'elementor' ),\n\t\ticon: <ItalicIcon fontSize=\"tiny\" />,\n\t\taction: 'italic',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleItalic().run();\n\t\t},\n\t},\n\tunderline: {\n\t\tlabel: __( 'Underline', 'elementor' ),\n\t\ticon: <UnderlineIcon fontSize=\"tiny\" />,\n\t\taction: 'underline',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleUnderline().run();\n\t\t},\n\t},\n\tstrike: {\n\t\tlabel: __( 'Strikethrough', 'elementor' ),\n\t\ticon: <StrikethroughIcon fontSize=\"tiny\" />,\n\t\taction: 'strike',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleStrike().run();\n\t\t},\n\t},\n\tsuperscript: {\n\t\tlabel: __( 'Superscript', 'elementor' ),\n\t\ticon: <SuperscriptIcon fontSize=\"tiny\" />,\n\t\taction: 'superscript',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleSuperscript().run();\n\t\t},\n\t},\n\tsubscript: {\n\t\tlabel: __( 'Subscript', 'elementor' ),\n\t\ticon: <SubscriptIcon fontSize=\"tiny\" />,\n\t\taction: 'subscript',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleSubscript().run();\n\t\t},\n\t},\n\tlink: {\n\t\tlabel: __( 'Link', 'elementor' ),\n\t\ticon: <LinkIcon fontSize=\"tiny\" />,\n\t\taction: 'link',\n\t\tmethod: null,\n\t},\n} as const;\n\ntype ToolbarButtonKeys = keyof typeof toolbarButtons;\n\ntype FormatAction = Omit< ToolbarButtonKeys, 'clear' >;\n\nconst { clear: clearButton, ...formatButtons } = toolbarButtons;\n\nconst possibleFormats: FormatAction[] = Object.keys( formatButtons ) as FormatAction[];\n\nexport const InlineEditorToolbar = ( { editor, elementId }: InlineEditorToolbarProps ) => {\n\tconst [ urlValue, setUrlValue ] = useState( '' );\n\tconst [ openInNewTab, setOpenInNewTab ] = useState( false );\n\tconst toolbarRef = useRef< HTMLDivElement >( null );\n\tconst linkPopupState = usePopupState( { variant: 'popover' } );\n\tconst hasLinkOnElement = elementId ? checkIfElementHasLink( elementId ) : false;\n\n\tconst editorState = useEditorState( {\n\t\teditor,\n\t\tselector: ( ctx ) => possibleFormats.filter( ( format ) => ctx.editor.isActive( format ) ),\n\t} );\n\n\tconst formatButtonsList = useMemo( () => {\n\t\tconst buttons = Object.values( formatButtons );\n\n\t\tif ( hasLinkOnElement ) {\n\t\t\treturn buttons.filter( ( button ) => button.action !== 'link' );\n\t\t}\n\n\t\treturn buttons;\n\t}, [ hasLinkOnElement ] );\n\n\tconst handleLinkClick = () => {\n\t\tconst linkAttrs = editor.getAttributes( 'link' );\n\t\tsetUrlValue( linkAttrs.href || '' );\n\t\tsetOpenInNewTab( linkAttrs.target === '_blank' );\n\t\tlinkPopupState.open( toolbarRef.current );\n\t};\n\n\tconst handleUrlChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetUrlValue( event.target.value );\n\t};\n\n\tconst handleToggleNewTab = () => {\n\t\tsetOpenInNewTab( ! openInNewTab );\n\t};\n\n\tconst handleUrlSubmit = () => {\n\t\tif ( urlValue ) {\n\t\t\teditor\n\t\t\t\t.chain()\n\t\t\t\t.focus()\n\t\t\t\t.setLink( {\n\t\t\t\t\thref: urlValue,\n\t\t\t\t\ttarget: openInNewTab ? '_blank' : '_self',\n\t\t\t\t} )\n\t\t\t\t.run();\n\t\t} else {\n\t\t\teditor.chain().focus().unsetLink().run();\n\t\t}\n\n\t\tif ( elementId ) {\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent( 'elementor:inline-link-changed', {\n\t\t\t\t\tdetail: { elementId },\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\tlinkPopupState.close();\n\t};\n\n\tReact.useEffect( () => {\n\t\teditor?.commands?.focus();\n\t}, [ editor ] );\n\n\treturn (\n\t\t<Box\n\t\t\tref={ toolbarRef }\n\t\t\tsx={ {\n\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\tgap: 0.5,\n\t\t\t\tpadding: 0.5,\n\t\t\t\tborderRadius: '8px',\n\t\t\t\tbackgroundColor: 'background.paper',\n\t\t\t\tboxShadow: '0 2px 8px rgba(0, 0, 0, 0.2)',\n\t\t\t\talignItems: 'center',\n\t\t\t\tvisibility: linkPopupState.isOpen ? 'hidden' : 'visible',\n\t\t\t\tpointerEvents: linkPopupState.isOpen ? 'none' : 'all',\n\t\t\t} }\n\t\t>\n\t\t\t<Tooltip title={ clearButton.label } placement=\"top\" sx={ { borderRadius: '8px' } }>\n\t\t\t\t<IconButton aria-label={ clearButton.label } onClick={ () => clearButton.method( editor ) } size=\"tiny\">\n\t\t\t\t\t{ clearButton.icon }\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t\t<ToggleButtonGroup\n\t\t\t\tvalue={ editorState }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tsx={ {\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tgap: 0.5,\n\t\t\t\t\tborder: 'none',\n\t\t\t\t\t[ `& .${ toggleButtonGroupClasses.firstButton }, & .${ toggleButtonGroupClasses.middleButton }, & .${ toggleButtonGroupClasses.lastButton }` ]:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t'&.Mui-selected': {\n\t\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'& + &.Mui-selected': {\n\t\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ formatButtonsList.map( ( button ) => (\n\t\t\t\t\t<Tooltip title={ button.label } key={ button.action } placement=\"top\">\n\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\tvalue={ button.action }\n\t\t\t\t\t\t\taria-label={ button.label }\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( button.action === 'link' ) {\n\t\t\t\t\t\t\t\t\thandleLinkClick();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbutton.method?.( editor );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\teditor?.commands?.focus();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ button.icon }\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) ) }\n\t\t\t</ToggleButtonGroup>\n\t\t\t<UrlPopover\n\t\t\t\tpopupState={ linkPopupState }\n\t\t\t\tanchorRef={ toolbarRef }\n\t\t\t\trestoreValue={ handleUrlSubmit }\n\t\t\t\tvalue={ urlValue }\n\t\t\t\tonChange={ handleUrlChange }\n\t\t\t\topenInNewTab={ openInNewTab }\n\t\t\t\tonToggleNewTab={ handleToggleNewTab }\n\t\t\t/>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { ExternalLinkIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, Stack, TextField, ToggleButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\topenInNewTab: boolean;\n\tonToggleNewTab: () => void;\n};\n\nexport const UrlPopover = ( {\n\tpopupState,\n\trestoreValue,\n\tanchorRef,\n\tvalue,\n\tonChange,\n\topenInNewTab,\n\tonToggleNewTab,\n}: Props ) => {\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => inputRef.current?.focus() );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tslotProps={ {\n\t\t\t\tpaper: { sx: { borderRadius: '16px', width: anchorRef.current?.offsetWidth + 'px', marginTop: -1 } },\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 } sx={ { p: 1.5 } }>\n\t\t\t\t<TextField\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tplaceholder={ __( 'Type a URL', 'elementor' ) }\n\t\t\t\t\tinputProps={ { ref: inputRef } }\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tInputProps={ { sx: { borderRadius: '8px' } } }\n\t\t\t\t\tonKeyUp={ ( event: React.KeyboardEvent< HTMLInputElement > ) =>\n\t\t\t\t\t\tevent.key === 'Enter' && handleClose()\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<Tooltip title={ __( 'Open in a new tab', 'elementor' ) }>\n\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\tvalue=\"newTab\"\n\t\t\t\t\t\tselected={ openInNewTab }\n\t\t\t\t\t\tonClick={ onToggleNewTab }\n\t\t\t\t\t\taria-label={ __( 'Open in a new tab', 'elementor' ) }\n\t\t\t\t\t\tsx={ { borderRadius: '8px' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ExternalLinkIcon fontSize=\"tiny\" />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { BrushBigIcon } from '@elementor/icons';\nimport { IconButton, styled, Tooltip } from '@elementor/ui';\n\ntype ClearIconButtonProps = {\n\tonClick?: () => void;\n\ttooltipText: React.ReactNode;\n\tdisabled?: boolean;\n\tsize?: 'tiny' | 'small' | 'medium' | 'large';\n};\n\nconst CustomIconButton = styled( IconButton )( ( { theme } ) => ( {\n\twidth: theme.spacing( 2.5 ),\n\theight: theme.spacing( 2.5 ),\n} ) );\n\nexport const ClearIconButton = ( { tooltipText, onClick, disabled, size = 'tiny' }: ClearIconButtonProps ) => (\n\t<Tooltip title={ tooltipText } placement=\"top\" disableInteractive>\n\t\t<CustomIconButton aria-label={ tooltipText } size={ size } onClick={ onClick } disabled={ disabled }>\n\t\t\t<BrushBigIcon fontSize={ size } />\n\t\t</CustomIconButton>\n\t</Tooltip>\n);\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { type CreateOptions, type PropKey } from '@elementor/editor-props';\nimport { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tInfotip,\n\tTooltip,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SetValueMeta } from '../../bound-prop-context';\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\nimport { RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../control-repeater/locations';\nimport { SectionContent } from '../section-content';\nimport { RepeaterHeader } from './repeater-header';\nimport { RepeaterPopover } from './repeater-popover';\nimport { RepeaterTag } from './repeater-tag';\nimport { SortableItem, SortableProvider } from './sortable';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\nexport type RepeaterItem< T > = {\n\tdisabled?: boolean;\n} & T;\n\ntype RepeaterItemContentProps< T > = {\n\tanchorEl: AnchorEl;\n\tbind: PropKey;\n\tvalue: T;\n\tindex: number;\n};\n\ntype RepeaterItemContent< T > = React.ComponentType< RepeaterItemContentProps< T > >;\n\nexport type ItemsActionPayload< T > = Array< { index: number; item: T } >;\n\ntype AddItemMeta< T > = {\n\ttype: 'add';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype RemoveItemMeta< T > = {\n\ttype: 'remove';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype DuplicateItemMeta< T > = {\n\ttype: 'duplicate';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype ReorderItemMeta = {\n\ttype: 'reorder';\n\tpayload: { from: number; to: number };\n};\n\ntype ToggleDisableItemMeta = {\n\ttype: 'toggle-disable';\n};\n\nexport type SetRepeaterValuesMeta< T > =\n\t| SetValueMeta< AddItemMeta< T > >\n\t| SetValueMeta< RemoveItemMeta< T > >\n\t| SetValueMeta< DuplicateItemMeta< T > >\n\t| SetValueMeta< ReorderItemMeta >\n\t| SetValueMeta< ToggleDisableItemMeta >;\n\ntype BaseItemSettings< T > = {\n\tinitialValues: T;\n\tLabel: React.ComponentType< { value: T; index: number } >;\n\tIcon: React.ComponentType< { value: T } >;\n\tContent: RepeaterItemContent< T >;\n\tactions?: ( value: T ) => React.ReactNode;\n};\n\ntype SortableItemSettings< T > = BaseItemSettings< T > & {\n\tgetId: ( { item, index }: { item: T; index: number } ) => string;\n};\n\ntype RepeaterProps< T > =\n\t| {\n\t\t\tlabel: string;\n\t\t\tvalues?: T[];\n\t\t\topenOnAdd?: boolean;\n\t\t\tsetValues: ( newValue: T[], _: CreateOptions, meta?: SetRepeaterValuesMeta< T > ) => void;\n\t\t\tdisabled?: boolean;\n\t\t\tdisableAddItemButton?: boolean;\n\t\t\taddButtonInfotipContent?: React.ReactNode;\n\t\t\tshowDuplicate?: boolean;\n\t\t\tshowToggle?: boolean;\n\t\t\tshowRemove?: boolean;\n\t\t\topenItem?: number;\n\t\t\tisSortable: false;\n\t\t\titemSettings: BaseItemSettings< T >;\n\t }\n\t| {\n\t\t\tlabel: string;\n\t\t\tvalues?: T[];\n\t\t\topenOnAdd?: boolean;\n\t\t\tsetValues: ( newValue: T[], _: CreateOptions, meta?: SetRepeaterValuesMeta< T > ) => void;\n\t\t\tdisabled?: boolean;\n\t\t\tdisableAddItemButton?: boolean;\n\t\t\taddButtonInfotipContent?: React.ReactNode;\n\t\t\tshowDuplicate?: boolean;\n\t\t\tshowToggle?: boolean;\n\t\t\tshowRemove?: boolean;\n\t\t\topenItem?: number;\n\t\t\tisSortable?: true;\n\t\t\titemSettings: SortableItemSettings< T >;\n\t };\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tdisabled = false,\n\topenOnAdd = false,\n\tvalues: items = [],\n\tsetValues: setItems,\n\tshowDuplicate = true,\n\tshowToggle = true,\n\tshowRemove = true,\n\tdisableAddItemButton = false,\n\taddButtonInfotipContent,\n\topenItem: initialOpenItem = EMPTY_OPEN_ITEM,\n\tisSortable = true,\n}: RepeaterProps< RepeaterItem< T > > ) => {\n\tconst [ openItem, setOpenItem ] = useState( initialOpenItem );\n\n\tconst uniqueKeys = items.map( ( item, index ) =>\n\t\tisSortable && 'getId' in itemSettings ? itemSettings.getId( { item, index } ) : String( index )\n\t);\n\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\t\tconst newIndex = items.length;\n\t\tsetItems(\n\t\t\t[ ...items, newItem ],\n\t\t\t{},\n\t\t\t{\n\t\t\t\taction: { type: 'add', payload: [ { index: newIndex, item: newItem } ] },\n\t\t\t}\n\t\t);\n\n\t\tif ( openOnAdd ) {\n\t\t\tsetOpenItem( newIndex );\n\t\t}\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\n\t\t// Insert the new (cloned item) at the next spot (after the current index)\n\t\tconst atPosition = 1 + index;\n\n\t\tsetItems(\n\t\t\t[ ...items.slice( 0, atPosition ), newItem, ...items.slice( atPosition ) ],\n\t\t\t{},\n\t\t\t{\n\t\t\t\taction: { type: 'duplicate', payload: [ { index, item: newItem } ] },\n\t\t\t}\n\t\t);\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tconst removedItem = items[ index ];\n\n\t\tsetItems(\n\t\t\titems.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'remove', payload: [ { index, item: removedItem } ] } }\n\t\t);\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetItems(\n\t\t\titems.map( ( value, pos ) => {\n\t\t\t\tif ( pos === index ) {\n\t\t\t\t\tconst { disabled: propDisabled, ...rest } = value;\n\n\t\t\t\t\t// If the items should not be disabled, remove the disabled property.\n\t\t\t\t\treturn { ...rest, ...( propDisabled ? {} : { disabled: true } ) } as RepeaterItem< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'toggle-disable' } }\n\t\t);\n\t};\n\n\tconst onChangeOrder = ( reorderedKeys: string[], meta: { from: number; to: number } ) => {\n\t\tsetItems(\n\t\t\treorderedKeys.map( ( id ) => {\n\t\t\t\treturn items[ uniqueKeys.indexOf( id ) ];\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'reorder', payload: { ...meta } } }\n\t\t);\n\t};\n\n\tconst isButtonDisabled = disabled || disableAddItemButton;\n\tconst shouldShowInfotip = isButtonDisabled && addButtonInfotipContent;\n\n\tconst addButton = (\n\t\t<IconButton\n\t\t\tsize={ SIZE }\n\t\t\tsx={ {\n\t\t\t\tml: 'auto',\n\t\t\t} }\n\t\t\tdisabled={ isButtonDisabled }\n\t\t\tonClick={ addRepeaterItem }\n\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t>\n\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t</IconButton>\n\t);\n\n\treturn (\n\t\t<SectionContent gap={ 2 }>\n\t\t\t<RepeaterHeader label={ label } adornment={ ControlAdornments }>\n\t\t\t\t{ shouldShowInfotip ? (\n\t\t\t\t\t<Infotip\n\t\t\t\t\t\tplacement=\"right\"\n\t\t\t\t\t\tcontent={ addButtonInfotipContent }\n\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Box sx={ { ...( isButtonDisabled ? { cursor: 'not-allowed' } : {} ) } }>{ addButton }</Box>\n\t\t\t\t\t</Infotip>\n\t\t\t\t) : (\n\t\t\t\t\taddButton\n\t\t\t\t) }\n\t\t\t</RepeaterHeader>\n\t\t\t{ 0 < uniqueKeys.length && (\n\t\t\t\t<SortableProvider value={ uniqueKeys } onChange={ onChangeOrder }>\n\t\t\t\t\t{ uniqueKeys.map( ( key ) => {\n\t\t\t\t\t\tconst index = uniqueKeys.indexOf( key );\n\t\t\t\t\t\tconst value = items[ index ];\n\n\t\t\t\t\t\tif ( ! value ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\t\tpropDisabled={ value?.disabled }\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Label value={ value } index={ index } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstartIcon={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Icon value={ value } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\topenOnMount={ openOnAdd && openItem === index }\n\t\t\t\t\t\t\t\t\tonOpen={ () => setOpenItem( EMPTY_OPEN_ITEM ) }\n\t\t\t\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t\t\t\t\tshowRemove={ showRemove }\n\t\t\t\t\t\t\t\t\tactions={ itemSettings.actions }\n\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<itemSettings.Content\n\t\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\tbind={ String( index ) }\n\t\t\t\t\t\t\t\t\t\t\tindex={ index }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</RepeaterItem>\n\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</SortableProvider>\n\t\t\t) }\n\t\t</SectionContent>\n\t);\n};\n\ntype RepeaterItemProps< T > = {\n\tlabel: React.ReactNode;\n\tpropDisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( props: Pick< RepeaterItemContentProps< T >, 'anchorEl' > ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tshowRemove: boolean;\n\tdisabled?: boolean;\n\tactions?: ( value: T ) => React.ReactNode;\n\tvalue: T;\n};\n\nconst RepeaterItem = < T, >( {\n\tlabel,\n\tpropDisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n\topenOnMount,\n\tonOpen,\n\tshowDuplicate,\n\tshowToggle,\n\tshowRemove,\n\tdisabled,\n\tactions,\n\tvalue,\n}: RepeaterItemProps< T > ) => {\n\tconst { popoverState, popoverProps, ref, setRef } = usePopover( openOnMount, onOpen );\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\treturn (\n\t\t<>\n\t\t\t<RepeaterTag\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ label }\n\t\t\t\tref={ setRef }\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ showDuplicate && (\n\t\t\t\t\t\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ duplicateItem } aria-label={ duplicateLabel }>\n\t\t\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showToggle && (\n\t\t\t\t\t\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ toggleDisableItem } aria-label={ toggleLabel }>\n\t\t\t\t\t\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ actions?.( value ) }\n\t\t\t\t\t\t{ showRemove && (\n\t\t\t\t\t\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ removeItem } aria-label={ removeLabel }>\n\t\t\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\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\t<RepeaterPopover width={ ref?.getBoundingClientRect().width } { ...popoverProps } anchorEl={ ref }>\n\t\t\t\t<Box>{ children( { anchorEl: ref } ) }</Box>\n\t\t\t</RepeaterPopover>\n\t\t</>\n\t);\n};\n\nconst usePopover = ( openOnMount: boolean, onOpen: () => void ) => {\n\tconst [ ref, setRef ] = useState< HTMLElement | null >( null );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\tuseEffect( () => {\n\t\tif ( openOnMount && ref ) {\n\t\t\tpopoverState.open( ref );\n\t\t\tonOpen?.();\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ ref ] );\n\n\treturn {\n\t\tpopoverState,\n\t\tref,\n\t\tsetRef,\n\t\tpopoverProps,\n\t};\n};\n","import * as React from 'react';\nimport type { PropValue, SizePropValue } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\n\nimport { useSizeValue } from '../../hooks/use-size-value';\nimport { type Unit } from '../../utils/size-control';\nimport { UnitSelect } from './unit-select';\nimport { UnstableSizeInput } from './unstable-size-input';\n\ntype Props< TValue > = {\n\tunits: Unit[];\n\tvalue: TValue;\n\tdefaultValue?: Partial< TValue >;\n\tonChange: ( value: TValue ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tdisabled?: boolean;\n};\n\nconst DEFAULT_VALUE: SizePropValue[ 'value' ] = {\n\tunit: 'px',\n\tsize: 0,\n};\n\nexport const UnstableSizeField = < T extends SizePropValue[ 'value' ] >( {\n\tvalue,\n\tdefaultValue,\n\tonChange,\n\tonBlur,\n\tunits,\n}: Props< T > ) => {\n\tconst { size, unit, setSize, setUnit } = useSizeValue< T >( value, onChange, {\n\t\t...DEFAULT_VALUE,\n\t\t...defaultValue,\n\t} as T );\n\n\tconst shouldHighlightUnit = () => {\n\t\treturn hasValue( size );\n\t};\n\n\treturn (\n\t\t<UnstableSizeInput\n\t\t\ttype=\"number\"\n\t\t\tvalue={ size ?? '' }\n\t\t\tonBlur={ onBlur }\n\t\t\tonChange={ ( event ) => setSize( event.target.value ) }\n\t\t\tInputProps={ {\n\t\t\t\tendAdornment: (\n\t\t\t\t\t<InputAdornment position=\"end\">\n\t\t\t\t\t\t<UnitSelect\n\t\t\t\t\t\t\toptions={ units }\n\t\t\t\t\t\t\tvalue={ unit }\n\t\t\t\t\t\t\tonClick={ setUnit }\n\t\t\t\t\t\t\tshowPrimaryColor={ shouldHighlightUnit() }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</InputAdornment>\n\t\t\t\t),\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst hasValue = ( value: PropValue ): boolean => {\n\treturn value !== null && value !== '';\n};\n","import { type SizePropValue } from '@elementor/editor-props';\n\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\n\nexport const useSizeValue = < T extends SizePropValue[ 'value' ] >(\n\texternalValue: T,\n\tonChange: ( value: T ) => void,\n\tdefaultValue: T\n) => {\n\tconst [ sizeValue, setSizeValue ] = useSyncExternalState< T >( {\n\t\texternal: externalValue,\n\t\tsetExternal: ( newState ) => {\n\t\t\tif ( newState !== null ) {\n\t\t\t\tonChange( newState as T );\n\t\t\t}\n\t\t},\n\t\tpersistWhen: ( newState ) => differsFromExternal( newState as T, externalValue ),\n\t\tfallback: () => defaultValue,\n\t} );\n\n\tconst setSize = ( value: string ) => {\n\t\tconst newState = {\n\t\t\t...sizeValue,\n\t\t\tsize: value.trim() === '' ? null : Number( value ),\n\t\t};\n\n\t\tsetSizeValue( newState );\n\t};\n\n\tconst setUnit = ( unit: SizePropValue[ 'value' ][ 'unit' ] ) => {\n\t\tconst newState = {\n\t\t\t...sizeValue,\n\t\t\tunit,\n\t\t};\n\n\t\tsetSizeValue( newState );\n\t};\n\n\treturn {\n\t\tsize: sizeValue.size,\n\t\tunit: sizeValue.unit,\n\t\tsetSize,\n\t\tsetUnit,\n\t};\n};\n\nconst differsFromExternal = ( newState: SizePropValue[ 'value' ], externalState: SizePropValue[ 'value' ] ) => {\n\treturn newState.size !== externalState.size || newState.unit !== externalState.unit;\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { type SizePropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { bindMenu, bindTrigger, Button, Menu, styled, usePopupState } from '@elementor/ui';\n\ntype Props< T = SizePropValue[ 'value' ][ 'unit' ] > = {\n\toptions: T[];\n\tvalue: T;\n\tonClick: ( value: T ) => void;\n\tshowPrimaryColor: boolean;\n};\n\nconst menuItemContentStyles = {\n\tdisplay: 'flex',\n\tflexDirection: 'column',\n\tjustifyContent: 'center',\n};\n\nexport const UnitSelect = ( { value, showPrimaryColor, onClick, options }: Props ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<StyledButton isPrimaryColor={ showPrimaryColor } size=\"small\" { ...bindTrigger( popupState ) }>\n\t\t\t\t{ value }\n\t\t\t</StyledButton>\n\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\tkey={ option }\n\t\t\t\t\t\tonClick={ () => handleMenuItemClick( index ) }\n\t\t\t\t\t\tprimaryTypographyProps={ {\n\t\t\t\t\t\t\tvariant: 'caption',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t...menuItemContentStyles,\n\t\t\t\t\t\t\t\tlineHeight: '1',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuItemTextProps={ {\n\t\t\t\t\t\t\tsx: menuItemContentStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ option.toUpperCase() }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst StyledButton = styled( Button, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPrimaryColor',\n} )( ( { isPrimaryColor, theme } ) => ( {\n\tcolor: isPrimaryColor ? theme.palette.text.primary : theme.palette.text.tertiary,\n\tfont: 'inherit',\n\tminWidth: 'initial',\n\ttextTransform: 'uppercase',\n} ) );\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport type { PropValue } from '@elementor/editor-props';\nimport type { TextFieldProps } from '@elementor/ui';\n\nimport { NumberInput } from '../number-input';\n\ntype Props = {\n\ttype: 'number' | 'text';\n\tvalue: PropValue;\n\tfocused?: boolean;\n\tdisabled?: boolean;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tInputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n};\n\nexport const UnstableSizeInput = forwardRef(\n\t( { type, value, onChange, onKeyDown, onKeyUp, InputProps, onBlur, focused, disabled }: Props, ref ) => {\n\t\treturn (\n\t\t\t<NumberInput\n\t\t\t\tref={ ref }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonKeyUp={ onKeyUp }\n\t\t\t\tfocused={ focused }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonInput={ onChange }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tInputProps={ InputProps }\n\t\t\t\tsx={ getCursorStyle( InputProps?.readOnly ?? false ) }\n\t\t\t/>\n\t\t);\n\t}\n);\n\nconst getCursorStyle = ( readOnly: boolean ) => ( {\n\tinput: { cursor: readOnly ? 'default !important' : undefined },\n} );\n"],"mappings":"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","names":["React","Stack","__","React","createContext","useContext","createContext","useContext","value","value","React","React","React","React","createContext","useContext","items","items","React","React","createContext","useContext","createContext","useContext","Control","React","Stack","React","React","createContext","useContext","Context","items","items","MenuItem","Stack","React","__","Stack","React","stringPropTypeUtil","stringPropTypeUtil","React","stringPropTypeUtil","TextField","stringPropTypeUtil","TextField","React","useEffect","useMemo","sizePropTypeUtil","usePopupState","React","InputAdornment","React","forwardRef","MenuListItem","Button","React","useState","TextField","forwardRef","getCursorStyle","MenuListItem","Button","units","InputAdornment","React","useRef","MathFunctionIcon","TextField","__","useEffect","useState","units","sizePropTypeUtil","usePopupState","useMemo","useEffect","React","forwardRef","useRef","Grid","__","React","Stack","React","useRef","__","forwardRef","Grid","React","useRef","FormLabel","Grid","styled","__","React","Box","__","React","createContext","useMemo","useState","usePopupState","createContext","createContext","isItemDisabled","items","useState","useMemo","usePopupState","SIZE","Box","__","React","React","styled","__","items","React","bindTrigger","__","createContext","useContext","React","forwardRef","Label","isItemDisabled","bindTrigger","__","React","isItemDisabled","React","IconButton","__","SIZE","items","__","IconButton","React","IconButton","Tooltip","__","SIZE","items","isItemDisabled","__","Tooltip","IconButton","React","IconButton","Tooltip","__","SIZE","__","Tooltip","IconButton","React","bindPopover","Box","React","Popover","bindPopover","Box","React","Stack","forwardRef","React","Grid","React","forwardRef","Box","Stack","Typography","forwardRef","Stack","Box","Typography","__","styled","useRef","Control","Grid","FormLabel","React","__","React","createContext","useContext","useMemo","__","__","__","createContext","useMemo","useContext","React","cssFilterFunctionPropUtil","Grid","__","React","useRef","Grid","__","__","useRef","Grid","useRef","React","Grid","useRef","Grid","cssFilterFunctionPropUtil","Grid","__","items","React","styled","UnstableColorIndicator","StyledUnstableColorIndicator","React","React","Box","Box","React","Box","Box","__","getInitialValue","React","useEffect","useState","useState","useEffect","React","stringPropTypeUtil","React","useEffect","useMemo","useRef","useState","Menu","styled","Typography","React","Tooltip","styled","items","useMemo","Content","useState","useRef","Menu","Typography","useEffect","React","stringPropTypeUtil","React","InputAdornment","InputAdornment","React","useId","useRef","bindPopover","Box","Grid","Popover","Stack","Tooltip","usePopupState","__","items","useId","usePopupState","useRef","Grid","Stack","Box","__","Tooltip","Popover","bindPopover","React","useRef","useState","sizePropTypeUtil","useActiveBreakpoint","Grid","Stack","Tooltip","__","sprintf","useRef","sizePropTypeUtil","useState","useActiveBreakpoint","__","Stack","Tooltip","Grid","Control","sprintf","React","stringPropTypeUtil","ChevronDownIcon","bindPopover","bindTrigger","Popover","UnstableTag","usePopupState","__","React","useCallback","useEffect","useState","PopoverHeader","Box","Divider","Stack","Typography","__","useState","PopoverHeader","__","Divider","Box","Stack","Typography","useCallback","useEffect","stringPropTypeUtil","usePopupState","UnstableTag","ChevronDownIcon","bindTrigger","Popover","bindPopover","__","React","TextField","TextField","React","useEffect","useMemo","useState","PlusIcon","Grid","IconButton","Stack","debounce","__","React","Box","Infotip","Link","__","React","useMemo","useState","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","httpService","debounce","__","React","forwardRef","XIcon","Box","IconButton","InputAdornment","TextField","__","useState","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","useMemo","debounce","httpService","React","Box","Box","SIZE","useState","__","useMemo","debounce","useEffect","Stack","Grid","IconButton","PlusIcon","React","stringPropTypeUtil","MenuListItem","Select","styled","Typography","__","React","AlertTitle","Box","Infotip","useTheme","styled","Select","stringPropTypeUtil","__","Typography","MenuListItem","React","useLayoutEffect","useRef","useState","sizePropTypeUtil","useActiveBreakpoint","DetachIcon","LinkIcon","Grid","Stack","Tooltip","__","useRef","sizePropTypeUtil","useState","useActiveBreakpoint","useLayoutEffect","currentValue","LinkIcon","DetachIcon","__","Stack","Tooltip","Grid","Control","React","useEffect","useState","stringPropTypeUtil","MenuListItem","Grid","Select","Stack","TextField","__","__","stringPropTypeUtil","useState","useEffect","Stack","Grid","Select","MenuListItem","TextField","React","useState","imageSrcPropTypeUtil","UploadIcon","Button","Card","CardMedia","CardOverlay","CircularProgress","Stack","styled","useWpMediaAttachment","useWpMediaFrame","__","React","useState","Button","CircularProgress","Divider","__","__","useState","Divider","Button","CircularProgress","styled","Card","Stack","imageSrcPropTypeUtil","useWpMediaAttachment","useState","useWpMediaFrame","__","CircularProgress","CardMedia","CardOverlay","Button","UploadIcon","React","Grid","__","React","backgroundColorOverlayPropTypeUtil","backgroundImageOverlayPropTypeUtil","colorPropTypeUtil","Box","CardMedia","styled","UnstableColorIndicator","useWpMediaAttachment","__","React","colorPropTypeUtil","numberPropTypeUtil","stringPropTypeUtil","stringPropTypeUtil","numberPropTypeUtil","colorPropTypeUtil","React","Grid","__","__","Grid","React","useRef","stringPropTypeUtil","MenuListItem","Grid","Select","__","__","stringPropTypeUtil","useRef","Grid","Select","MenuListItem","React","XIcon","Grid","__","__","XIcon","Grid","React","useRef","stringPropTypeUtil","ArrowsMoveHorizontalIcon","ArrowsMoveVerticalIcon","Grid","__","__","stringPropTypeUtil","useRef","Grid","ArrowsMoveHorizontalIcon","ArrowsMoveVerticalIcon","useRef","backgroundGradientOverlayPropTypeUtil","initialBackgroundColorOverlay","initialBackgroundGradientOverlay","backgroundGradientOverlayPropTypeUtil","useRef","backgroundColorOverlayPropTypeUtil","colorPropTypeUtil","__","ItemIcon","ItemLabel","Box","StyledUnstableColorIndicator","CardMedia","backgroundImageOverlayPropTypeUtil","styled","UnstableColorIndicator","useWpMediaAttachment","__","Grid","React","useMemo","Box","isItemDisabled","childArrayPropTypeUtil","useMemo","ItemIcon","ItemLabel","Content","Box","React","useMemo","useState","stringPropTypeUtil","FormLabel","Grid","__","useState","__","useMemo","stringPropTypeUtil","Grid","FormLabel","React","stringPropTypeUtil","MenuListItem","LetterXIcon","LetterYIcon","Grid","Select","__","__","stringPropTypeUtil","Grid","Select","MenuListItem","LetterXIcon","LetterYIcon","React","useRef","AdjustmentsIcon","InfoCircleFilledIcon","bindTrigger","Box","IconButton","Tooltip","Typography","usePopupState","__","useMemo","numberPropTypeUtil","React","Box","Tab","TabPanel","Tabs","__","React","useRef","Grid","__","React","Grid","units","Grid","__","useRef","Grid","React","useRef","rotateTransformPropTypeUtil","Grid","__","__","rotateTransformPropTypeUtil","useRef","Grid","React","useRef","scaleTransformPropTypeUtil","ArrowDownLeftIcon","ArrowDownSmallIcon","ArrowRightIcon","Grid","__","React","Grid","Grid","__","ArrowRightIcon","ArrowDownSmallIcon","ArrowDownLeftIcon","scaleTransformPropTypeUtil","useRef","Grid","React","useRef","skewTransformPropTypeUtil","ArrowRightIcon","Grid","__","__","ArrowRightIcon","skewTransformPropTypeUtil","useRef","Grid","useRef","moveTransformPropTypeUtil","rotateTransformPropTypeUtil","scaleTransformPropTypeUtil","skewTransformPropTypeUtil","useTabs","moveTransformPropTypeUtil","scaleTransformPropTypeUtil","rotateTransformPropTypeUtil","skewTransformPropTypeUtil","items","useTabs","useRef","Box","Tabs","__","Tab","TabPanel","React","ArrowsMaximizeIcon","ArrowsMaximizeIcon","React","Box","__","Label","__","Box","React","PopoverHeader","bindPopover","Box","Divider","Popover","__","React","Grid","Stack","__","__","Stack","Grid","React","Grid","Stack","__","__","Stack","ControlFields","Grid","SIZE","bindPopover","Popover","PopoverHeader","__","Divider","Box","SIZE","useRef","usePopupState","Repeater","Box","InfoCircleFilledIcon","Typography","__","getInitialValue","Tooltip","IconButton","bindTrigger","AdjustmentsIcon","React","useEffect","useMemo","useState","createArrayPropUtils","selectionSizePropTypeUtil","InfoCircleFilledIcon","Alert","AlertTitle","Box","Typography","__","React","useMemo","useRef","Grid","useRef","useMemo","Grid","__","React","useMemo","useRef","keyValuePropTypeUtil","ChevronDownIcon","Alert","bindPopover","bindTrigger","Box","Popover","UnstableTag","usePopupState","__","keyValuePropTypeUtil","useRef","usePopupState","useMemo","__","Box","UnstableTag","ChevronDownIcon","bindTrigger","Popover","bindPopover","Alert","createArrayPropUtils","selectionSizePropTypeUtil","__","Alert","InfoCircleFilledIcon","AlertTitle","Box","Typography","useState","useMemo","useEffect","React","isTransformable","stringPropTypeUtil","Box","isTransformable","Box","stringPropTypeUtil","React","Box","React","forwardRef","useEffect","useRef","useState","bindPopover","Box","Popover","usePopupState","Link","React","useMemo","useRef","useState","LinkIcon","MinusIcon","Box","IconButton","ToggleButton","ToggleButtonGroup","Tooltip","usePopupState","__","React","useEffect","useRef","bindPopover","Popover","Stack","TextField","ToggleButton","Tooltip","__","__","MinusIcon","LinkIcon","useState","useRef","usePopupState","useMemo","Box","Tooltip","IconButton","ToggleButtonGroup","ToggleButton","useRef","useEffect","Box","forwardRef","usePopupState","useState","Link","Popover","bindPopover","Box","React","IconButton","styled","Tooltip","React","useEffect","useState","CopyIcon","EyeIcon","EyeOffIcon","PlusIcon","XIcon","bindPopover","bindTrigger","Box","IconButton","Infotip","Tooltip","usePopupState","__","SIZE","EMPTY_OPEN_ITEM","Repeater","items","useState","IconButton","__","PlusIcon","Infotip","Box","bindTrigger","Tooltip","CopyIcon","EyeOffIcon","EyeIcon","XIcon","usePopupState","bindPopover","useEffect","React","InputAdornment","React","useId","MenuListItem","bindMenu","bindTrigger","Button","Menu","styled","usePopupState","StyledButton","React","forwardRef","forwardRef","units","InputAdornment"]}