@elementor/editor-controls 1.5.0 → 3.32.0-21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -22
- package/dist/index.d.mts +95 -25
- package/dist/index.d.ts +95 -25
- package/dist/index.js +2045 -1041
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1962 -964
- package/dist/index.mjs.map +1 -1
- package/package.json +18 -18
- package/src/components/control-toggle-button-group.tsx +78 -14
- package/src/components/floating-bar.tsx +45 -0
- package/src/components/{font-family-selector.tsx → item-selector.tsx} +62 -50
- package/src/components/repeater.tsx +1 -1
- package/src/components/restricted-link-infotip.tsx +76 -0
- package/src/components/size-control/size-input.tsx +8 -7
- package/src/components/size-control/text-field-inner-selection.tsx +60 -14
- package/src/components/text-field-popover.tsx +30 -7
- package/src/components/unstable-repeater/actions/add-item-action.tsx +50 -0
- package/src/components/unstable-repeater/actions/disable-item-action.tsx +39 -0
- package/src/components/unstable-repeater/actions/duplicate-item-action.tsx +32 -0
- package/src/components/unstable-repeater/actions/remove-item-action.tsx +27 -0
- package/src/components/unstable-repeater/context/repeater-context.tsx +137 -0
- package/src/components/unstable-repeater/header/header.tsx +23 -0
- package/src/components/unstable-repeater/index.ts +5 -0
- package/src/components/unstable-repeater/items/edit-item-popover.tsx +28 -0
- package/src/components/unstable-repeater/items/item.tsx +71 -0
- package/src/components/unstable-repeater/items/items-container.tsx +49 -0
- package/src/components/unstable-repeater/items/use-popover.tsx +26 -0
- package/src/{locations.ts → components/unstable-repeater/locations.ts} +9 -1
- package/src/components/unstable-repeater/types.ts +26 -0
- package/src/components/unstable-repeater/unstable-repeater.tsx +24 -0
- package/src/control-actions/control-actions.tsx +3 -20
- package/src/control-replacements.tsx +41 -0
- package/src/controls/background-control/background-control.tsx +1 -8
- package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +17 -16
- package/src/controls/equal-unequal-sizes-control.tsx +2 -9
- package/src/controls/filter-control/drop-shadow-item-content.tsx +4 -6
- package/src/controls/filter-control/drop-shadow-item-label.tsx +2 -2
- package/src/controls/filter-repeater-control.tsx +149 -110
- package/src/controls/font-family-control/font-family-control.tsx +22 -10
- package/src/controls/key-value-control.tsx +9 -6
- package/src/controls/link-control.tsx +8 -91
- package/src/controls/linked-dimensions-control.tsx +3 -16
- package/src/controls/number-control.tsx +10 -1
- package/src/controls/position-control.tsx +4 -16
- package/src/controls/repeatable-control.tsx +8 -5
- package/src/controls/select-control.tsx +7 -2
- package/src/controls/selection-size-control.tsx +74 -0
- package/src/controls/size-control.tsx +181 -126
- package/src/controls/stroke-control.tsx +2 -2
- package/src/controls/toggle-control.tsx +3 -2
- package/src/controls/transform-control/functions/axis-row.tsx +4 -2
- package/src/controls/transform-control/functions/move.tsx +2 -1
- package/src/controls/transform-control/functions/rotate.tsx +48 -0
- package/src/controls/transform-control/functions/scale-axis-row.tsx +32 -0
- package/src/controls/transform-control/functions/scale.tsx +45 -0
- package/src/controls/transform-control/functions/skew.tsx +43 -0
- package/src/controls/transform-control/transform-content.tsx +60 -23
- package/src/controls/transform-control/transform-icon.tsx +10 -2
- package/src/controls/transform-control/transform-label.tsx +39 -2
- package/src/controls/transform-control/transform-repeater-control.tsx +2 -10
- package/src/controls/transform-control/types.ts +58 -0
- package/src/controls/transform-control/use-transform-tabs-history.tsx +107 -0
- package/src/controls/transition-control/data.ts +34 -0
- package/src/controls/transition-control/transition-repeater-control.tsx +63 -0
- package/src/controls/transition-control/transition-selector.tsx +88 -0
- package/src/controls/unstable-transform-control/unstable-transform-repeater-control.tsx +35 -0
- package/src/hooks/use-filtered-items-list.ts +24 -0
- package/src/hooks/use-size-extended-options.ts +1 -6
- package/src/index.ts +13 -3
- package/src/utils/size-control.ts +12 -6
- package/src/hooks/use-filtered-font-families.ts +0 -24
package/dist/index.mjs.map
CHANGED
|
@@ -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/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/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/popover-content.tsx","../src/components/popover-grid-container.tsx","../src/components/repeater.tsx","../src/control-adornments/control-adornments.tsx","../src/control-adornments/control-adornments-context.tsx","../src/locations.ts","../src/components/sortable.tsx","../src/controls/filter-repeater-control.tsx","../src/components/control-label.tsx","../src/controls/filter-control/drop-shadow-item-content.tsx","../src/controls/filter-control/drop-shadow-item-label.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/components/conditional-tooltip.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/font-family-selector.tsx","../src/controls/font-family-control/enqueue-font.tsx","../src/hooks/use-filtered-font-families.ts","../src/controls/url-control.tsx","../src/controls/link-control.tsx","../src/components/autocomplete.tsx","../src/controls/switch-control.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/hooks/use-repeatable-control-context.ts","../src/controls/key-value-control.tsx","../src/controls/position-control.tsx","../src/controls/transform-control/transform-repeater-control.tsx","../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/transform-icon.tsx","../src/controls/transform-control/transform-label.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 { 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\tshowMode?: 'all' | 'media' | 'sizes';\n};\n\nexport const ImageControl = createControl( ( { sizes, showMode = 'all' }: ImageControlProps ) => {\n\tconst propContext = useBoundProp( imagePropTypeUtil );\n\n\tlet componentToRender;\n\tswitch ( showMode ) {\n\t\tcase 'media':\n\t\t\tcomponentToRender = <ImageSrcControl />;\n\t\t\tbreak;\n\t\tcase 'sizes':\n\t\t\tcomponentToRender = <ImageSizeControl sizes={ sizes } />;\n\t\t\tbreak;\n\t\tcase 'all':\n\t\tdefault:\n\t\t\tcomponentToRender = (\n\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t<ControlFormLabel>{ __( 'Image', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t<ImageSrcControl />\n\t\t\t\t\t<Grid container gap={ 1.5 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Resolution', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t\t<ImageSizeControl sizes={ sizes } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Stack>\n\t\t\t);\n\t}\n\n\treturn <PropProvider { ...propContext }>{ componentToRender }</PropProvider>;\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 SetValueMeta = {\n\tbind?: PropKey;\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 } 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\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nexport function useBoundProp< T extends PropValue = PropValue, P extends PropType = PropType >(): PropKeyContextValue<\n\tT,\n\tP\n>;\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\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn { ...propKeyContext, disabled } as PropKeyContextValue< PropValue, PropType >;\n\t}\n\n\tfunction setValue( value: TValue | null, options: CreateOptions, meta: { bind?: PropKey } ) {\n\t\tif ( ! validate( value ) ) {\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};\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 ) => {\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\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 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 Component = useControlReplacement( Control );\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<Component { ...props } />\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 ControlReplacement = {\n\tcomponent: ComponentType;\n\tcondition: ( { value }: ConditionArgs ) => boolean;\n};\n\ntype ConditionArgs = {\n\tvalue: 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: ComponentType ) => {\n\tconst { value } = useBoundProp();\n\tconst replacements = useContext( ControlReplacementContext );\n\n\ttry {\n\t\tconst replacement = replacements.find( ( r ) => r.condition( { value } ) );\n\n\t\treturn replacement?.component ?? OriginalComponent;\n\t} catch {\n\t\treturn 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 } = 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: 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, type ReactElement } from 'react';\nimport { styled, UnstableFloatingActionBar } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { useControlActions } from './control-actions-context';\n\n// CSS hack to hide empty floating bars.\nconst FloatingBarContainer = styled( 'span' )`\n\tdisplay: contents;\n\n\t.MuiFloatingActionBar-popper:has( .MuiFloatingActionBar-actions:empty ) {\n\t\tdisplay: none;\n\t}\n\n\t.MuiFloatingActionBar-popper {\n\t\tz-index: 1000;\n\t}\n`;\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 (\n\t\t<FloatingBarContainer>\n\t\t\t<UnstableFloatingActionBar actions={ menuItems }>{ children as ReactElement }</UnstableFloatingActionBar>\n\t\t</FloatingBarContainer>\n\t);\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, Typography } 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\toptions: Array< { label: string; value: StringPropValue[ 'value' ]; disabled?: boolean } >;\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n};\n\nexport const SelectControl = createControl( ( { options, onChange }: Props ) => {\n\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\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\treturn (\n\t\t<ControlActions>\n\t\t\t<Select\n\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\tdisplayEmpty\n\t\t\t\tsize=\"tiny\"\n\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\tconst findOptionByValue = ( searchValue: string | null ) =>\n\t\t\t\t\t\toptions.find( ( opt ) => opt.value === searchValue );\n\n\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\tif ( placeholder ) {\n\t\t\t\t\t\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\t\t\t\t\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\t\t\t\t\t\treturn (\n\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{ displayText }\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tconst option = findOptionByValue( selectedValue );\n\t\t\t\t\treturn option?.label || selectedValue;\n\t\t\t\t} }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tfullWidth\n\t\t\t>\n\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Select>\n\t\t</ControlActions>\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\tsx,\n\t}: {\n\t\tplaceholder?: string;\n\t\terror?: boolean;\n\t\tinputValue?: string;\n\t\tinputDisabled?: boolean;\n\t\tsx?: SxProps;\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\tsx={ sx }\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};\n\nexport const TextAreaControl = createControl( ( { placeholder }: 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/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useState } from 'react';\nimport { 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\tdefaultUnits,\n\ttype DegreeUnit,\n\ttype ExtendedOption,\n\tisUnitExtendedOption,\n\ttype Unit,\n} from '../utils/size-control';\n\nconst DEFAULT_UNIT = 'px';\nconst DEFAULT_SIZE = NaN;\n\ntype SizeValue = SizePropValue[ 'value' ];\n\ntype SizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits?: ( Unit | DegreeUnit )[];\n\textendedOptions?: ExtendedOption[];\n\tdisableCustom?: boolean;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tdefaultUnit?: Unit | DegreeUnit;\n};\n\ntype State = {\n\tnumeric: number;\n\tcustom: string;\n\tunit: Unit | DegreeUnit | ExtendedOption;\n};\n\nexport const SizeControl = createControl( ( props: SizeControlProps ) => {\n\tconst defaultUnit = props.defaultUnit ?? DEFAULT_UNIT;\n\tconst { units = [ ...defaultUnits ], placeholder, startIcon, anchorRef } = props;\n\tconst { value: sizeValue, setValue: setSizeValue, disabled, restoreValue } = useBoundProp( sizePropTypeUtil );\n\tconst [ internalState, setInternalState ] = useState( createStateFromSizeProp( sizeValue, defaultUnit ) );\n\tconst activeBreakpoint = useActiveBreakpoint();\n\n\tconst extendedOptions = useSizeExtendedOptions( props.extendedOptions || [], props.disableCustom ?? false );\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\tconst [ state, setState ] = useSyncExternalState( {\n\t\texternal: internalState,\n\t\tsetExternal: ( newState: State | null ) => setSizeValue( extractValueFromState( newState ) ),\n\t\tpersistWhen: ( newState ) => {\n\t\t\tif ( ! newState?.unit ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( isUnitExtendedOption( newState.unit ) ) {\n\t\t\t\treturn newState.unit === 'auto' ? true : !! newState.custom;\n\t\t\t}\n\n\t\t\treturn !! newState?.numeric || newState?.numeric === 0;\n\t\t},\n\t\tfallback: ( newState ) => ( {\n\t\t\tunit: newState?.unit ?? defaultUnit,\n\t\t\tnumeric: newState?.numeric ?? DEFAULT_SIZE,\n\t\t\tcustom: newState?.custom ?? '',\n\t\t} ),\n\t} );\n\n\tconst { size: controlSize = DEFAULT_SIZE, unit: controlUnit = defaultUnit } = extractValueFromState( state ) || {};\n\n\tconst handleUnitChange = ( newUnit: Unit | DegreeUnit | ExtendedOption ) => {\n\t\tif ( newUnit === 'custom' ) {\n\t\t\tpopupState.open( anchorRef?.current );\n\t\t}\n\n\t\tsetState( ( prev ) => ( { ...prev, unit: newUnit } ) );\n\t};\n\n\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value: size } = event.target;\n\n\t\tif ( controlUnit === 'auto' ) {\n\t\t\tsetState( ( prev ) => ( { ...prev, unit: controlUnit } ) );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ controlUnit === 'custom' ? 'custom' : 'numeric' ]: formatSize( size, controlUnit ),\n\t\t\tunit: controlUnit,\n\t\t} ) );\n\t};\n\n\tconst onInputFocus = ( event: React.FocusEvent< HTMLInputElement > ) => {\n\t\tif ( isUnitExtendedOption( state.unit ) ) {\n\t\t\t( event.target as HTMLElement )?.blur();\n\t\t}\n\t};\n\n\tconst onInputClick = ( event: React.MouseEvent ) => {\n\t\tif ( ( event.target as HTMLElement ).closest( 'input' ) && 'custom' === state.unit ) {\n\t\t\tpopupState.open( anchorRef?.current );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tconst newState = createStateFromSizeProp( sizeValue, state.unit === 'custom' ? state.unit : defaultUnit );\n\t\tconst currentUnitType = isUnitExtendedOption( state.unit ) ? 'custom' : 'numeric';\n\t\tconst mergedStates = {\n\t\t\t...state,\n\t\t\tunit: newState.unit ?? state.unit,\n\t\t\t[ currentUnitType ]: newState[ currentUnitType ],\n\t\t};\n\n\t\tif ( mergedStates.unit !== 'auto' && areStatesEqual( state, mergedStates ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( state.unit === newState.unit ) {\n\t\t\tsetInternalState( mergedStates );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetState( newState );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ sizeValue ] );\n\n\tuseEffect( () => {\n\t\tconst newState = createStateFromSizeProp( sizeValue, defaultUnit );\n\n\t\tif ( activeBreakpoint && ! areStatesEqual( newState, state ) ) {\n\t\t\tsetState( newState );\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\treturn (\n\t\t<>\n\t\t\t<SizeInput\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsize={ controlSize }\n\t\t\t\tunit={ controlUnit }\n\t\t\t\tunits={ [ ...units, ...( extendedOptions || [] ) ] }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\thandleSizeChange={ handleSizeChange }\n\t\t\t\thandleUnitChange={ handleUnitChange }\n\t\t\t\tonBlur={ restoreValue }\n\t\t\t\tonFocus={ onInputFocus }\n\t\t\t\tonClick={ onInputClick }\n\t\t\t\tpopupState={ popupState }\n\t\t\t/>\n\t\t\t{ anchorRef?.current && (\n\t\t\t\t<TextFieldPopover\n\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\trestoreValue={ restoreValue }\n\t\t\t\t\tvalue={ controlSize as string }\n\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n} );\n\nfunction formatSize< TSize extends string | number >( size: TSize, unit: Unit | DegreeUnit | 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 | DegreeUnit | ExtendedOption\n): State {\n\tconst unit = sizeValue?.unit ?? defaultUnit;\n\tconst size = sizeValue?.size ?? '';\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 ) : '',\n\t\tunit,\n\t};\n}\n\nfunction extractValueFromState( state: State | null ): 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\treturn {\n\t\tsize: state[ unit === 'custom' ? 'custom' : 'numeric' ],\n\t\tunit,\n\t} as SizeValue;\n}\n\nfunction areStatesEqual( state1: State, state2: State ): boolean {\n\tif ( state1.unit !== state2.unit || state1.custom !== state2.custom ) {\n\t\treturn false;\n\t}\n\n\tif ( isUnitExtendedOption( state1.unit ) ) {\n\t\treturn state1.custom === state2.custom;\n\t}\n\n\treturn state1.numeric === state2.numeric || ( isNaN( state1.numeric ) && isNaN( state2.numeric ) );\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { PencilIcon } from '@elementor/icons';\nimport { Box, InputAdornment, type PopupState } from '@elementor/ui';\n\nimport ControlActions from '../../control-actions/control-actions';\nimport { type DegreeUnit, type ExtendedOption, isUnitExtendedOption, type Unit } from '../../utils/size-control';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../size-control/text-field-inner-selection';\n\ntype SizeInputProps = {\n\tunit: Unit | DegreeUnit | ExtendedOption;\n\tsize: number | string;\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits: ( Unit | DegreeUnit | 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 | DegreeUnit | ExtendedOption ) => void;\n\thandleSizeChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tpopupState: PopupState;\n\tdisabled?: boolean;\n};\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+', '-' ];\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}: 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 ) => u.includes( updatedBuffer ) ) ||\n\t\t\tunits.find( ( u ) => u.startsWith( newChar ) ) ||\n\t\t\tunits.find( ( 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 inputProps = {\n\t\t...popupAttributes,\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={ {\n\t\t\t\t\tcustom: <PencilIcon fontSize=\"small\" />,\n\t\t\t\t} }\n\t\t\t\tmenuItemsAttributes={\n\t\t\t\t\tunits.includes( 'custom' )\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tcustom: popupAttributes,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\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\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\tif ( RESTRICTED_INPUT_KEYS.includes( event.key ) ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tonKeyUp={ handleKeyUp }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tshouldBlockInput={ isUnitExtendedOption( unit ) }\n\t\t\t\t\tinputProps={ inputProps }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</ControlActions>\n\t);\n};\n","export const defaultUnits = [ 'px', '%', 'em', 'rem', 'vw', 'vh' ] as const;\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst degreeUnits = [ 'deg', 'rad', 'grad', 'turn' ] as const;\nconst defaultExtendedOptions = [ 'auto', 'custom' ] as const;\n\nexport type Unit = ( typeof defaultUnits )[ number ];\nexport type DegreeUnit = ( typeof degreeUnits )[ number ];\nexport type ExtendedOption = ( typeof defaultExtendedOptions )[ number ];\n\nexport function isUnitExtendedOption( unit: Unit | DegreeUnit | 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 } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tButton,\n\tInputAdornment,\n\tMenu,\n\tTextField,\n\ttype TextFieldProps,\n\tusePopupState,\n} from '@elementor/ui';\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\tshouldBlockInput?: boolean;\n\tinputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n\tdisabled?: boolean;\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\tshouldBlockInput = false,\n\t\t\tinputProps,\n\t\t\tdisabled,\n\t\t}: TextFieldInnerSelectionProps,\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t<TextField\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ { input: { cursor: shouldBlockInput ? 'default !important' : undefined } } }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ shouldBlockInput ? undefined : type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ shouldBlockInput ? undefined : onChange }\n\t\t\t\tonKeyDown={ shouldBlockInput ? undefined : onKeyDown }\n\t\t\t\tonKeyUp={ shouldBlockInput ? undefined : onKeyUp }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tInputProps={ inputProps }\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\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<Button\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"secondary\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsx={ { font: 'inherit', minWidth: 'initial', textTransform: 'uppercase' } }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ alternativeOptionLabels[ value ] ?? value }\n\t\t\t</Button>\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\t{ ...menuItemsAttributes?.[ option ] }\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","import * as React from 'react';\nimport { type RefObject } from 'react';\nimport { bindPopover, Popover, type PopupState, TextField } from '@elementor/ui';\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\nexport const TextFieldPopover = ( props: Props ) => {\n\tconst { popupState, restoreValue, anchorRef, value, onChange } = props;\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\tp: 1.5,\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={ () => {\n\t\t\t\trestoreValue();\n\t\t\t\tpopupState.close();\n\t\t\t} }\n\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\tautoFocus: true,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Popover>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type ExtendedOption } from '@elementor/editor-controls';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\n\nconst EXPERIMENT_ID = 'e_v_3_30';\n\nexport function useSizeExtendedOptions( options: ExtendedOption[], disableCustom: boolean ) {\n\treturn useMemo( () => {\n\t\tconst isVersion330Active = isExperimentActive( EXPERIMENT_ID );\n\t\tconst shouldDisableCustom = ! isVersion330Active || disableCustom;\n\t\tconst extendedOptions = [ ...options ];\n\n\t\tif ( ! shouldDisableCustom && ! 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';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | null;\n\tsetExternal: ( value: TValue | null ) => 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-compiler/react-compiler\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 ) => {\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 ) );\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 Unit } 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: Unit[] = [ '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 = 2, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { 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};\n\nexport const ColorControl = createControl(\n\t( { propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, ...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\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, type PropKey, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { FormLabel, Grid, type SxProps, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SelectControl } from './select-control';\nimport { 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<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ value ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Box shadow', 'elementor' ) }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: initialShadow,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<UnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color?.value } />\n);\n\nconst ItemContent = ( { anchorEl, bind }: { anchorEl: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst context = useBoundProp( shadowPropTypeUtil );\n\tconst rowRef: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\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\thOffsetSize + hOffsetUnit,\n\t\tvOffsetSize + vOffsetUnit,\n\t\tblurSize + blurUnit,\n\t\tspreadSize + spreadUnit,\n\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 { 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 { useEffect, useState } from 'react';\nimport { type PropKey, type PropTypeUtil } from '@elementor/editor-props';\nimport { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tPopover,\n\tStack,\n\tTooltip,\n\tTypography,\n\tUnstableTag,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport { RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../locations';\nimport { SectionContent } from './section-content';\nimport { SortableItem, SortableProvider } from './sortable';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\ntype Item< T > = {\n\tdisabled?: boolean;\n} & T;\nexport type CollectionPropUtil< T > = PropTypeUtil< PropKey, T[] >;\n\ntype RepeaterItemContentProps< T > = {\n\tanchorEl: AnchorEl;\n\tbind: PropKey;\n\tvalue: T;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\ntype RepeaterItemContent< T > = React.ComponentType< RepeaterItemContentProps< T > >;\n\ntype RepeaterProps< T > = {\n\tlabel: string;\n\tvalues?: T[];\n\taddToBottom?: boolean;\n\topenOnAdd?: boolean;\n\tsetValues: ( newValue: T[] ) => void;\n\tdisabled?: boolean;\n\titemSettings: {\n\t\tinitialValues: T;\n\t\tLabel: React.ComponentType< { value: T } >;\n\t\tIcon: React.ComponentType< { value: T } >;\n\t\tContent: RepeaterItemContent< T >;\n\t};\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tisSortable?: boolean;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tdisabled = false,\n\topenOnAdd = false,\n\taddToBottom = false,\n\tvalues: repeaterValues = [],\n\tsetValues: setRepeaterValues,\n\tshowDuplicate = true,\n\tshowToggle = true,\n\tisSortable = true,\n\tcollectionPropUtil,\n}: RepeaterProps< Item< T > > ) => {\n\tconst [ openItem, setOpenItem ] = useState( EMPTY_OPEN_ITEM );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\t// @ts-expect-error - as long as persistWhen => true, value will never be null\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( items.map( ( _, index ) => index ) );\n\n\tconst generateNextKey = ( source: number[] ) => {\n\t\treturn 1 + Math.max( 0, ...source );\n\t};\n\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\t\tconst newKey = generateNextKey( uniqueKeys );\n\n\t\tif ( addToBottom ) {\n\t\t\tsetItems( [ ...items, newItem ] );\n\t\t\tsetUniqueKeys( [ ...uniqueKeys, newKey ] );\n\t\t} else {\n\t\t\tsetItems( [ newItem, ...items ] );\n\t\t\tsetUniqueKeys( [ newKey, ...uniqueKeys ] );\n\t\t}\n\n\t\tif ( openOnAdd ) {\n\t\t\tsetOpenItem( newKey );\n\t\t}\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\t\tconst newKey = generateNextKey( uniqueKeys );\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( [ ...items.slice( 0, atPosition ), newItem, ...items.slice( atPosition ) ] );\n\t\tsetUniqueKeys( [ ...uniqueKeys.slice( 0, atPosition ), newKey, ...uniqueKeys.slice( atPosition ) ] );\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tsetUniqueKeys(\n\t\t\tuniqueKeys.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} )\n\t\t);\n\n\t\tsetItems(\n\t\t\titems.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} )\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 Item< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst onChangeOrder = ( reorderedKeys: number[] ) => {\n\t\tsetUniqueKeys( reorderedKeys );\n\t\tsetItems( ( prevItems ) => {\n\t\t\treturn reorderedKeys.map( ( keyValue ) => {\n\t\t\t\tconst index = uniqueKeys.indexOf( keyValue );\n\t\t\t\treturn prevItems[ index ];\n\t\t\t} );\n\t\t} );\n\t};\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tjustifyContent=\"start\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ 1 }\n\t\t\t\tsx={ { marginInlineEnd: -0.75 } }\n\t\t\t>\n\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t\t<ControlAdornments />\n\t\t\t\t<IconButton\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tsx={ { ml: 'auto' } }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ addRepeaterItem }\n\t\t\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\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, index ) => {\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 } />\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 === key }\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\tcollectionPropUtil={ collectionPropUtil }\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 { ...props } value={ value } bind={ String( index ) } />\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' | 'collectionPropUtil' > ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tdisabled?: boolean;\n\tcollectionPropUtil?: CollectionPropUtil< 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\tdisabled,\n\tcollectionPropUtil,\n}: RepeaterItemProps< T > ) => {\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\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<UnstableTag\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ label }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tfullWidth\n\t\t\t\tref={ setRef }\n\t\t\t\tvariant=\"outlined\"\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<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ removeItem } aria-label={ removeLabel }>\n\t\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: {\n\t\t\t\t\t\tref: setAnchorEl,\n\t\t\t\t\t\tsx: { mt: 0.5, width: ref?.getBoundingClientRect().width },\n\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...popoverProps }\n\t\t\t\tanchorEl={ ref }\n\t\t\t>\n\t\t\t\t<Box>{ children( { anchorEl, collectionPropUtil } ) }</Box>\n\t\t\t</Popover>\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-compiler/react-compiler\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';\n\nimport { useControlAdornments } from './control-adornments-context';\n\nexport function ControlAdornments() {\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 } />\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';\n\ntype ControlAdornmentsItems = Array< {\n\tid: string;\n\tAdornment: ComponentType;\n} >;\n\ntype ControlAdornmentsContext = {\n\titems?: ControlAdornmentsItems;\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 { type PropValue } from '@elementor/editor-props';\nimport { 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","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';\n\nexport const SortableProvider = < T extends 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 }>\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\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 { ...props } role=\"button\" className=\"class-item-sortable-trigger\">\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 { useRef } from 'react';\nimport {\n\tblurFilterPropTypeUtil,\n\tbrightnessFilterPropTypeUtil,\n\tcontrastFilterPropTypeUtil,\n\tdropShadowFilterPropTypeUtil,\n\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\tgrayscaleFilterPropTypeUtil,\n\thueRotateFilterPropTypeUtil,\n\tinvertFilterPropTypeUtil,\n\ttype PropKey,\n\ttype PropTypeUtil,\n\tsaturateFilterPropTypeUtil,\n\tsepiaFilterPropTypeUtil,\n\ttype SizePropValue,\n} from '@elementor/editor-props';\nimport { backdropFilterPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Box, Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { type CollectionPropUtil, Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { defaultUnits, type Unit } from '../utils/size-control';\nimport { DropShadowItemContent } from './filter-control/drop-shadow-item-content';\nimport { DropShadowItemLabel } from './filter-control/drop-shadow-item-label';\nimport { SizeControl } from './size-control';\n\ntype FilterType = FilterItemPropValue[ '$$type' ];\ntype FilterValue = FilterItemPropValue[ 'value' ];\n\nconst DEFAULT_FILTER_KEY: FilterType = 'blur';\n\ntype FilterItemConfig = {\n\tdefaultValue: FilterValue;\n\tname: string;\n\tvalueName: string;\n\tpropType: PropTypeUtil< FilterValue, FilterValue >;\n\tunits?: Exclude< SizePropValue[ 'value' ][ 'unit' ], 'custom' | 'auto' >[];\n};\n\nconst filterConfig: Record< FilterType, FilterItemConfig > = {\n\tblur: {\n\t\tdefaultValue: { $$type: 'radius', radius: { $$type: 'size', value: { size: 0, unit: 'px' } } },\n\t\tname: __( 'Blur', 'elementor' ),\n\t\tvalueName: __( 'Radius', 'elementor' ),\n\t\tpropType: blurFilterPropTypeUtil,\n\t\tunits: defaultUnits.filter( ( unit ) => unit !== '%' ),\n\t},\n\t'drop-shadow': {\n\t\tdefaultValue: {\n\t\t\t$$type: 'drop-shadow',\n\t\t\tvalue: {\n\t\t\t\txAxis: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t\tyAxis: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t\tblur: { $$type: 'size', value: { size: 10, unit: 'px' } },\n\t\t\t\tcolor: { $$type: 'color', value: 'rgba(0, 0, 0, 1)' },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Drop shadow', 'elementor' ),\n\t\tvalueName: __( 'Drop-shadow', 'elementor' ),\n\t\tpropType: dropShadowFilterPropTypeUtil,\n\t\tunits: defaultUnits.filter( ( unit ) => unit !== '%' ),\n\t},\n\tbrightness: {\n\t\tdefaultValue: { $$type: 'amount', amount: { $$type: 'size', value: { size: 100, unit: '%' } } },\n\t\tname: __( 'Brightness', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: brightnessFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\tcontrast: {\n\t\tdefaultValue: { $$type: 'contrast', contrast: { $$type: 'size', value: { size: 100, unit: '%' } } },\n\t\tname: __( 'Contrast', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: contrastFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\t'hue-rotate': {\n\t\tdefaultValue: { $$type: 'hue-rotate', 'hue-rotate': { $$type: 'size', value: { size: 0, unit: 'deg' } } },\n\t\tname: __( 'Hue Rotate', 'elementor' ),\n\t\tvalueName: __( 'Angle', 'elementor' ),\n\t\tpropType: hueRotateFilterPropTypeUtil,\n\t\tunits: [ 'deg', 'rad', 'grad', 'turn' ],\n\t},\n\tsaturate: {\n\t\tdefaultValue: { $$type: 'saturate', saturate: { $$type: 'size', value: { size: 100, unit: '%' } } },\n\t\tname: __( 'Saturate', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: saturateFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\tgrayscale: {\n\t\tdefaultValue: { $$type: 'grayscale', grayscale: { $$type: 'size', value: { size: 0, unit: '%' } } },\n\t\tname: __( 'Grayscale', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: grayscaleFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\tinvert: {\n\t\tdefaultValue: { $$type: 'invert', invert: { $$type: 'size', value: { size: 0, unit: '%' } } },\n\t\tname: __( 'Invert', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: invertFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\tsepia: {\n\t\tdefaultValue: { $$type: 'sepia', sepia: { $$type: 'size', value: { size: 0, unit: '%' } } },\n\t\tname: __( 'Sepia', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: sepiaFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n};\n\nconst filterKeys = Object.keys( filterConfig ) as FilterType[];\n\nconst isSingleSize = ( key: FilterType ): boolean => {\n\treturn ! [ 'drop-shadow' ].includes( key );\n};\n\nexport const FilterRepeaterControl = createControl( ( { filterPropName = 'filter' }: { filterPropName?: string } ) => {\n\tconst [ propUtil, label ] =\n\t\tfilterPropName === 'backdrop-filter'\n\t\t\t? [ backdropFilterPropTypeUtil, __( 'Backdrop Filters', 'elementor' ) ]\n\t\t\t: [ filterPropTypeUtil, __( 'Filters', 'elementor' ) ];\n\tconst { propType, value: filterValues, setValue, disabled } = useBoundProp( propUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ filterValues } setValue={ setValue }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ filterValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ label }\n\t\t\t\tcollectionPropUtil={ propUtil }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: {\n\t\t\t\t\t\t$$type: DEFAULT_FILTER_KEY,\n\t\t\t\t\t\tvalue: filterConfig[ DEFAULT_FILTER_KEY ].defaultValue,\n\t\t\t\t\t} as FilterItemPropValue,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = () => <></>;\n\nconst ItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\treturn isSingleSize( value.$$type ) ? (\n\t\t<SingleSizeItemLabel value={ value } />\n\t) : (\n\t\t<DropShadowItemLabel value={ value } />\n\t);\n};\n\nconst SingleSizeItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { $$type, value: sizeValue } = value;\n\tconst { $$type: key } = filterConfig[ $$type ].defaultValue;\n\tconst defaultUnit = filterConfig[ $$type ].defaultValue[ key ].value.unit;\n\tconst { unit, size } = sizeValue[ key ]?.value ?? { unit: defaultUnit, size: 0 };\n\n\tconst label = (\n\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t{ value.$$type }:\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 }\n\t\t</Box>\n\t);\n};\n\nconst ItemContent = ( {\n\tbind,\n\tcollectionPropUtil,\n\tanchorEl,\n}: {\n\tbind: PropKey;\n\tcollectionPropUtil?: CollectionPropUtil< FilterItemPropValue >;\n\tanchorEl?: HTMLElement | null;\n} ) => {\n\tconst { value: filterValues, setValue } = useBoundProp( collectionPropUtil ?? filterPropTypeUtil );\n\tconst itemIndex = parseInt( bind, 10 );\n\tconst item = filterValues?.[ itemIndex ];\n\n\tconst handleChange = ( e: SelectChangeEvent< string > ) => {\n\t\tconst newFilterValues = [ ...filterValues ];\n\t\tconst filterType = e.target.value as FilterType;\n\n\t\tnewFilterValues[ itemIndex ] = {\n\t\t\t$$type: filterType,\n\t\t\tvalue: { ...filterConfig[ filterType ].defaultValue },\n\t\t} as FilterItemPropValue;\n\n\t\tsetValue( newFilterValues );\n\t};\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Filter', 'elementor' ) }</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\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvalue={ item?.$$type ?? DEFAULT_FILTER_KEY }\n\t\t\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ filterKeys.map( ( filterKey ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ filterKey } value={ filterKey }>\n\t\t\t\t\t\t\t\t\t{ filterConfig[ filterKey ].name }\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</PopoverGridContainer>\n\t\t\t\t<Content filterType={ item?.$$type } anchorEl={ anchorEl } />\n\t\t\t</PopoverContent>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { filterType, anchorEl }: { filterType: FilterType; anchorEl?: HTMLElement | null } ) => {\n\tconst { propType, units = [] } = filterConfig[ filterType ];\n\n\treturn isSingleSize( filterType ) ? (\n\t\t<SingleSizeItemContent filterType={ filterType } />\n\t) : (\n\t\t<DropShadowItemContent propType={ propType } units={ units as Unit[] } anchorEl={ anchorEl } />\n\t);\n};\n\nconst SingleSizeItemContent = ( { filterType }: { filterType: FilterType } ) => {\n\tconst { propType, valueName, defaultValue, units } = filterConfig[ filterType ];\n\tconst { $$type } = defaultValue;\n\tconst context = useBoundProp( propType );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst defaultUnit = defaultValue[ $$type ].value.unit;\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ $$type }>\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<ControlLabel>{ valueName }</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<SizeControl anchorRef={ rowRef } units={ units } defaultUnit={ defaultUnit } />\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 { type PropsWithChildren } from 'react';\nimport { Stack } from '@elementor/ui';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { ControlFormLabel } from './control-form-label';\n\nexport const ControlLabel = ( { children }: PropsWithChildren< object > ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type DropShadowFilterPropValue, type PropTypeUtil } 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 { type Unit } from '../../utils/size-control';\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 = ( {\n\tpropType,\n\tunits,\n\tanchorEl,\n}: {\n\tpropType: PropTypeUtil< 'drop-shadow', DropShadowFilterPropValue[ 'value' ] >;\n\tunits: Unit[];\n\tanchorEl?: HTMLElement | null;\n} ) => {\n\tconst context = useBoundProp( propType );\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 anchorRef={ rowRefs[ item.rowIndex ] } units={ units } defaultUnit=\"px\" />\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 * as React from 'react';\nimport { type FilterItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nexport const DropShadowItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { xAxis, yAxis, blur } = value.value;\n\n\tconst xValue = `${ xAxis?.value?.size ?? 0 }${ xAxis?.value?.unit ?? 'px' }`;\n\tconst yValue = `${ yAxis?.value?.size ?? 0 }${ yAxis?.value?.unit ?? 'px' }`;\n\tconst blurValue = `${ blur?.value?.size ?? 10 }${ blur?.value?.unit ?? 'px' }`;\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{ `${ xValue } ${ yValue } ${ blurValue }` }\n\t\t</Box>\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';\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};\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}: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst exclusiveValues = options.filter( ( option ) => option.exclusive ).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: options,\n\t\t\tmaxItems,\n\t\t\tfullWidth,\n\t\t\tsize,\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 ?? placeholder ?? 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 ?? placeholder )?.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\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} & (\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);\n\nexport const ControlToggleButtonGroup = < TValue, >( {\n\tjustify = 'end',\n\tsize = 'tiny',\n\tvalue,\n\tonChange,\n\titems,\n\tmaxItems,\n\texclusive = false,\n\tfullWidth = false,\n\tdisabled,\n}: Props< TValue > ) => {\n\tconst shouldSliceItems = exclusive && maxItems !== undefined && items.length > maxItems;\n\tconst menuItems = shouldSliceItems ? items.slice( maxItems - 1 ) : [];\n\tconst fixedItems = shouldSliceItems ? items.slice( 0, maxItems - 1 ) : items;\n\n\tconst isRtl = 'rtl' === useTheme().direction;\n\tconst handleChange = (\n\t\t_: React.MouseEvent< HTMLElement >,\n\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t) => {\n\t\tonChange( newValue as never );\n\t};\n\n\tconst getGridTemplateColumns = useMemo( () => {\n\t\tconst isOffLimits = menuItems?.length;\n\t\tconst itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;\n\t\tconst templateColumnsSuffix = isOffLimits ? 'auto' : '';\n\n\t\treturn `repeat(${ itemsCount }, minmax(0, 25%)) ${ templateColumnsSuffix }`;\n\t}, [ menuItems?.length, fixedItems.length ] );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<StyledToggleButtonGroup\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\t<ConditionalTooltip\n\t\t\t\t\t\tkey={ buttonValue as string }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tshowTooltip={ showTooltip || false }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleButton value={ buttonValue } aria-label={ label } size={ size } fullWidth={ fullWidth }>\n\t\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</ConditionalTooltip>\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</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\tref={ menuButtonRef }\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 { numberPropTypeUtil } 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\nconst isEmptyOrNaN = ( value?: string | number | null ) =>\n\tvalue === null || value === undefined || value === '' || Number.isNaN( Number( value ) );\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+', '-' ];\n\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder: labelPlaceholder,\n\t\tmax = Number.MAX_VALUE,\n\t\tmin = -Number.MAX_VALUE,\n\t\tstep = 1,\n\t\tshouldForceInt = false,\n\t}: {\n\t\tplaceholder?: string;\n\t\tmax?: number;\n\t\tmin?: number;\n\t\tstep?: number;\n\t\tshouldForceInt?: boolean;\n\t} ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( numberPropTypeUtil );\n\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst eventValue: string = event.target.value;\n\n\t\t\tif ( isEmptyOrNaN( eventValue ) ) {\n\t\t\t\tsetValue( null );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst formattedValue = shouldForceInt ? +parseInt( eventValue ) : Number( eventValue );\n\n\t\t\tsetValue( Math.min( Math.max( formattedValue, min ), max ) );\n\t\t};\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\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\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ labelPlaceholder ?? ( placeholder ? String( placeholder ) : '' ) }\n\t\t\t\t\tinputProps={ { step } }\n\t\t\t\t\tonKeyDown={ ( event: KeyboardEvent ) => {\n\t\t\t\t\t\tif ( RESTRICTED_INPUT_KEYS.includes( event.key ) ) {\n\t\t\t\t\t\t\tevent.preventDefault();\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 ReactNode, type RefObject, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { bindPopover, bindToggle, Grid, Popover, Stack, ToggleButton, 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 { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { SizeControl } from './size-control';\n\ntype MultiSizePropValue = Record< PropKey, SizePropValue >;\n\ntype Item = {\n\ticon: ReactNode;\n\tlabel: 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\nconst isEqualSizes = ( propValue: MultiSizePropValue, items: EqualUnequalItems ) => {\n\tconst values = Object.values( propValue );\n\n\tif ( values.length !== items.length ) {\n\t\treturn false;\n\t}\n\n\tconst [ firstValue, ...restValues ] = values;\n\n\treturn restValues.every(\n\t\t( value ) => value?.value?.size === firstValue?.value?.size && value?.value?.unit === firstValue?.value?.unit\n\t);\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 {\n\t\tpropType: multiSizePropType,\n\t\tvalue: multiSizeValue,\n\t\tsetValue: setMultiSizeValue,\n\t\tdisabled: multiSizeDisabled,\n\t} = useBoundProp( multiSizePropTypeUtil );\n\n\tconst { value: sizeValue, setValue: setSizeValue } = useBoundProp( sizePropTypeUtil );\n\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst splitEqualValue = () => {\n\t\tif ( ! sizeValue ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn items.reduce< TPropValue >(\n\t\t\t( acc, { bind } ) => ( { ...acc, [ bind ]: sizePropTypeUtil.create( sizeValue ) } ),\n\t\t\t{} as TPropValue\n\t\t);\n\t};\n\n\tconst setNestedProp = ( newValue: TPropValue ) => {\n\t\tconst newMappedValues = {\n\t\t\t...( multiSizeValue ?? splitEqualValue() ),\n\t\t\t...newValue,\n\t\t};\n\n\t\tconst isEqual = isEqualSizes( newMappedValues, items );\n\n\t\tif ( isEqual ) {\n\t\t\treturn setSizeValue( Object.values( newMappedValues )[ 0 ]?.value );\n\t\t}\n\n\t\tsetMultiSizeValue( newMappedValues );\n\t};\n\n\tconst getMultiSizeValues = () => {\n\t\tif ( multiSizeValue ) {\n\t\t\treturn multiSizeValue;\n\t\t}\n\n\t\treturn splitEqualValue() ?? null;\n\t};\n\n\tconst isShowingGeneralIndicator = ! isExperimentActive( 'e_v_3_30' ) || ! popupState.isOpen;\n\n\tconst isMixed = !! multiSizeValue;\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\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<SizeControl\n\t\t\t\t\t\t\tplaceholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ 0 ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Tooltip title={ tooltipLabel } placement=\"top\">\n\t\t\t\t\t\t\t<ToggleButton\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\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</ToggleButton>\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\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={ getMultiSizeValues() }\n\t\t\t\t\tsetValue={ setNestedProp }\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 isUsingNestedProps = isExperimentActive( 'e_v_3_30' );\n\n\treturn (\n\t\t<PropKeyProvider bind={ item.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{ isUsingNestedProps ? (\n\t\t\t\t\t\t\t<ControlLabel>{ item.label }</ControlLabel>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ControlFormLabel>{ item.label }</ControlFormLabel>\n\t\t\t\t\t\t) }\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={ item.icon } 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, useRef } from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton, 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 { createControl } from '../create-control';\nimport { type ExtendedOption } from '../utils/size-control';\nimport { SizeControl } from './size-control';\n\nexport const LinkedDimensionsControl = createControl(\n\t( {\n\t\tlabel,\n\t\tisSiteRtl = false,\n\t\textendedOptions,\n\t}: {\n\t\tlabel: string;\n\t\tisSiteRtl?: boolean;\n\t\textendedOptions?: ExtendedOption[];\n\t} ) => {\n\t\tconst { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\t\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\t\tconst {\n\t\t\tvalue: dimensionsValue,\n\t\t\tsetValue: setDimensionsValue,\n\t\t\tpropType,\n\t\t\tdisabled: dimensionsDisabled,\n\t\t} = useBoundProp( dimensionsPropTypeUtil );\n\n\t\tconst isLinked = ! dimensionsValue && ! sizeValue ? true : !! sizeValue;\n\n\t\tconst isUsingNestedProps = isExperimentActive( 'e_v_3_30' );\n\n\t\tconst onLinkToggle = () => {\n\t\t\tif ( ! isLinked ) {\n\t\t\t\tsetSizeValue( dimensionsValue[ 'block-start' ]?.value ?? null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\t\tsetDimensionsValue( {\n\t\t\t\t'block-start': value,\n\t\t\t\t'block-end': value,\n\t\t\t\t'inline-start': value,\n\t\t\t\t'inline-end': value,\n\t\t\t} );\n\t\t};\n\n\t\tconst tooltipLabel = label.toLowerCase();\n\n\t\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t\t// translators: %s: Tooltip title.\n\t\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t\t// translators: %s: Tooltip title.\n\t\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\t\tconst disabled = sizeDisabled || dimensionsDisabled;\n\n\t\treturn (\n\t\t\t<PropProvider\n\t\t\t\tpropType={ propType }\n\t\t\t\tvalue={ dimensionsValue }\n\t\t\t\tsetValue={ setDimensionsValue }\n\t\t\t\tisDisabled={ () => disabled }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t{ isUsingNestedProps ? (\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\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</Stack>\n\n\t\t\t\t{ getCssMarginProps( isSiteRtl ).map( ( row, index ) => (\n\t\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" key={ index } ref={ gridRowRefs[ index ] }>\n\t\t\t\t\t\t{ row.map( ( { icon, ...props } ) => (\n\t\t\t\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\" key={ props.bind }>\n\t\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t\t<Label { ...props } />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\t\t\t\tbind={ props.bind }\n\t\t\t\t\t\t\t\t\t\tstartIcon={ icon }\n\t\t\t\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ gridRowRefs[ index ] }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) ) }\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\nconst Control = ( {\n\tbind,\n\tstartIcon,\n\tisLinked,\n\textendedOptions,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tstartIcon: React.ReactNode;\n\tisLinked: boolean;\n\textendedOptions?: ExtendedOption[];\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl startIcon={ startIcon } extendedOptions={ extendedOptions } anchorRef={ anchorRef } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl startIcon={ startIcon } extendedOptions={ extendedOptions } anchorRef={ anchorRef } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Label = ( { label, bind }: { label: string; bind: PropKey } ) => {\n\tconst isUsingNestedProps = isExperimentActive( 'e_v_3_30' );\n\n\tif ( ! isUsingNestedProps ) {\n\t\treturn <ControlFormLabel>{ label }</ControlFormLabel>;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t</PropKeyProvider>\n\t);\n};\n\nfunction getCssMarginProps( 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\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\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\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\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 } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Popover, UnstableTag, usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { FontFamilySelector } from '../../components/font-family-selector';\nimport ControlActions from '../../control-actions/control-actions';\nimport { createControl } from '../../create-control';\n\nexport type FontCategory = {\n\tlabel: string;\n\tfonts: string[];\n};\n\ntype FontFamilyControlProps = {\n\tfontFamilies: FontCategory[];\n\tsectionWidth: number;\n};\n\nconst SIZE = 'tiny';\n\nexport const FontFamilyControl = createControl( ( { fontFamilies, sectionWidth }: FontFamilyControlProps ) => {\n\tconst { value: fontFamily, setValue: setFontFamily, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst isShowingPlaceholder = ! fontFamily && placeholder;\n\n\treturn (\n\t\t<>\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ fontFamily || placeholder }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize={ SIZE } /> }\n\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tsx={\n\t\t\t\t\t\tisShowingPlaceholder\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t'& .MuiTag-label': {\n\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},\n\t\t\t\t\t\t\t\t\ttextTransform: 'capitalize',\n\t\t\t\t\t\t\t }\n\t\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\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tsx={ { my: 1.5 } }\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t>\n\t\t\t\t<FontFamilySelector\n\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\tfontFamily={ fontFamily }\n\t\t\t\t\tonFontFamilyChange={ setFontFamily }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n} );\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { PopoverBody, PopoverHeader, PopoverMenuList, PopoverSearch } from '@elementor/editor-ui';\nimport { TextIcon } from '@elementor/icons';\nimport { Box, Divider, Link, Stack, Typography } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { enqueueFont } from '../controls/font-family-control/enqueue-font';\nimport { type FontCategory } from '../controls/font-family-control/font-family-control';\nimport { type FontListItem, useFilteredFontFamilies } from '../hooks/use-filtered-font-families';\n\nconst SIZE = 'tiny';\n\ntype FontFamilySelectorProps = {\n\tfontFamilies: FontCategory[];\n\tfontFamily: string | null;\n\tonFontFamilyChange: ( fontFamily: string ) => void;\n\tonClose: () => void;\n\tsectionWidth: number;\n};\n\nexport const FontFamilySelector = ( {\n\tfontFamilies,\n\tfontFamily,\n\tonFontFamilyChange,\n\tonClose,\n\tsectionWidth,\n}: FontFamilySelectorProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst filteredFontFamilies = useFilteredFontFamilies( fontFamilies, searchValue );\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 }>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Font Family', 'elementor' ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t\ticon={ <TextIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\n\t\t\t<PopoverSearch\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tonSearch={ handleSearch }\n\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t{ filteredFontFamilies.length > 0 ? (\n\t\t\t\t<FontList\n\t\t\t\t\tfontListItems={ filteredFontFamilies }\n\t\t\t\t\tsetFontFamily={ onFontFamilyChange }\n\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\tfontFamily={ fontFamily }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Stack\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\theight=\"100%\"\n\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\toverflow={ 'hidden' }\n\t\t\t\t>\n\t\t\t\t\t<TextIcon fontSize=\"large\" />\n\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\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\twidth: '100%',\n\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>“</span>\n\t\t\t\t\t\t\t<span style={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }>\n\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>”.</span>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n\ntype FontListProps = {\n\tfontListItems: FontListItem[];\n\tsetFontFamily: ( fontFamily: string ) => void;\n\thandleClose: () => void;\n\tfontFamily: string | null;\n};\n\nconst FontList = ( { fontListItems, setFontFamily, handleClose, fontFamily }: FontListProps ) => {\n\tconst selectedItem = fontListItems.find( ( item ) => item.value === fontFamily );\n\n\tconst debouncedVirtualizeChange = useDebounce( ( { getVirtualIndexes }: { getVirtualIndexes: () => number[] } ) => {\n\t\tgetVirtualIndexes().forEach( ( index ) => {\n\t\t\tconst item = fontListItems[ index ];\n\t\t\tif ( item && item.type === 'font' ) {\n\t\t\t\tenqueueFont( item.value );\n\t\t\t}\n\t\t} );\n\t}, 100 );\n\n\treturn (\n\t\t<PopoverMenuList\n\t\t\titems={ fontListItems }\n\t\t\tselectedValue={ selectedItem?.value }\n\t\t\tonChange={ debouncedVirtualizeChange }\n\t\t\tonSelect={ setFontFamily }\n\t\t\tonClose={ handleClose }\n\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\tdata-testid=\"font-list\"\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\n\tuseEffect( () => () => debouncedFn.cancel(), [ debouncedFn ] );\n\n\treturn debouncedFn;\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 { type FontCategory } from '@elementor/editor-controls';\n\nexport type FontListItem = {\n\ttype: 'font' | 'category';\n\tvalue: string;\n};\n\nexport const useFilteredFontFamilies = ( fontFamilies: FontCategory[], searchValue: string ) => {\n\treturn fontFamilies.reduce< FontListItem[] >( ( acc, category ) => {\n\t\tconst filteredFonts = category.fonts.filter( ( font ) =>\n\t\t\tfont.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t);\n\n\t\tif ( filteredFonts.length ) {\n\t\t\tacc.push( { type: 'category', value: category.label } );\n\n\t\t\tfilteredFonts.forEach( ( font ) => {\n\t\t\t\tacc.push( { type: 'font', value: font } );\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\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( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue, disabled } = useBoundProp( urlPropTypeUtil );\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropsWithChildren, useMemo, useState } from 'react';\nimport { getLinkInLinkRestriction, type LinkInLinkRestriction, selectElement } from '@elementor/editor-elements';\nimport {\n\tbooleanPropTypeUtil,\n\tlinkPropTypeUtil,\n\ttype LinkPropValue,\n\tnumberPropTypeUtil,\n\tstringPropTypeUtil,\n\turlPropTypeUtil,\n} from '@elementor/editor-props';\nimport { InfoTipCard } from '@elementor/editor-ui';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\nimport { AlertTriangleIcon, MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Box, Collapse, Grid, IconButton, Infotip, Stack, Switch } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport {\n\tAutocomplete,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from '../components/autocomplete';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { type ControlProps } from '../utils/types';\nimport { SwitchControl } from './switch-control';\n\ntype Props = ControlProps< {\n\tqueryOptions: {\n\t\trequestParams: Record< string, unknown >;\n\t\tendpoint: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tlabel?: string;\n} >;\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ] | null;\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\n\nconst SIZE = 'tiny';\nconst learnMoreButton = {\n\tlabel: __( 'Learn More', 'elementor' ),\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n};\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,\n\t\tqueryOptions: { endpoint = '', requestParams = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tcontext: { elementId },\n\t\tlabel = __( 'Link', 'elementor' ),\n\t} = props || {};\n\n\tconst [ linkInLinkRestriction, setLinkInLinkRestriction ] = useState( getLinkInLinkRestriction( elementId ) );\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value )\n\t);\n\tconst shouldDisableAddingLink = ! isActive && linkInLinkRestriction.shouldRestrict;\n\n\tconst onEnabledChange = () => {\n\t\tsetLinkInLinkRestriction( getLinkInLinkRestriction( elementId ) );\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 onOptionChange = ( newValue: number | 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: numberPropTypeUtil.create( newValue ),\n\t\t\t\t\tlabel: stringPropTypeUtil.create( findMatchingOption( options, newValue )?.label || null ),\n\t\t\t }\n\t\t\t: null;\n\n\t\tonSaveNewValue( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tnewValue = newValue?.trim() || '';\n\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: urlPropTypeUtil.create( newValue ),\n\t\t\t\t\tlabel: stringPropTypeUtil.create( '' ),\n\t\t\t }\n\t\t\t: null;\n\n\t\tonSaveNewValue( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst onSaveNewValue = ( newValue: LinkPropValue[ 'value' ] | null ) => {\n\t\tsetValue( newValue );\n\t\tsetLinkSessionValue( { ...linkSessionValue, value: newValue } );\n\t};\n\n\tconst updateOptions = ( newValue: string | null ) => {\n\t\tsetOptions( [] );\n\n\t\tif ( ! newValue || ! endpoint || newValue.length < minInputLength ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounceFetch( { ...requestParams, term: newValue } );\n\t};\n\n\tconst debounceFetch = useMemo(\n\t\t() =>\n\t\t\tdebounce(\n\t\t\t\t( params: FetchOptionsParams ) =>\n\t\t\t\t\tfetchOptions( endpoint, params ).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[ endpoint ]\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<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t<ConditionalInfoTip 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</ConditionalInfoTip>\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<ControlActions>\n\t\t\t\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\t\tvalue={ value?.destination?.value?.settings?.label || value?.destination?.value }\n\t\t\t\t\t\t\t\t\tonOptionChange={ onOptionChange }\n\t\t\t\t\t\t\t\t\tonTextChange={ onTextChange }\n\t\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ControlActions>\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<SwitchControlComponent disabled={ propContext.disabled || ! value } />\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\nconst SwitchControlComponent = ( { disabled }: { disabled: boolean } ) => {\n\tconst { value, setValue } = useBoundProp( booleanPropTypeUtil );\n\tconst isVersion331Active = isExperimentActive( 'e_v_3_31' );\n\n\tif ( isVersion331Active ) {\n\t\treturn <SwitchControl />;\n\t}\n\n\tconst onClick = () => {\n\t\tsetValue( ! value );\n\t};\n\n\treturn (\n\t\t<Switch\n\t\t\tchecked={ value ?? false }\n\t\t\tonClick={ onClick }\n\t\t\tdisabled={ disabled }\n\t\t\tinputProps={ {\n\t\t\t\t...( disabled ? { style: { opacity: 0 } } : {} ),\n\t\t\t} }\n\t\t/>\n\t);\n};\n\ntype FetchOptionsParams = Record< string, unknown > & { term: string };\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: LinkPropValue[ 'value' ] | null ): FlatOption[] {\n\tconst value = unionValue?.destination?.value;\n\tconst label = unionValue?.label?.value;\n\tconst type = unionValue?.destination?.$$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\ninterface ConditionalInfoTipType extends PropsWithChildren {\n\tlinkInLinkRestriction: LinkInLinkRestriction;\n\tisVisible: boolean;\n}\n\nconst ConditionalInfoTip: React.FC< ConditionalInfoTipType > = ( { linkInLinkRestriction, isVisible, children } ) => {\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\treturn shouldRestrict && isVisible ? (\n\t\t<Infotip\n\t\t\tplacement=\"right\"\n\t\t\tcontent={\n\t\t\t\t<InfoTipCard\n\t\t\t\t\tcontent={ INFOTIP_CONTENT[ reason ] }\n\t\t\t\t\tsvgIcon={ <AlertTriangleIcon /> }\n\t\t\t\t\tlearnMoreButton={ learnMoreButton }\n\t\t\t\t\tctaButton={ {\n\t\t\t\t\t\tlabel: __( 'Take me there', 'elementor' ),\n\t\t\t\t\t\tonClick: handleTakeMeClick,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Infotip>\n\t) : (\n\t\t<>{ children }</>\n\t);\n};\n\nconst INFOTIP_CONTENT = {\n\tdescendant: (\n\t\t<>\n\t\t\t{ __( 'To add a link to this container,', 'elementor' ) }\n\t\t\t<br />\n\t\t\t{ __( 'first remove the link from the elements inside of it.', 'elementor' ) }\n\t\t</>\n\t),\n\tancestor: (\n\t\t<>\n\t\t\t{ __( 'To add a link to this element,', 'elementor' ) }\n\t\t\t<br />\n\t\t\t{ __( 'first remove the link from its parent container.', 'elementor' ) }\n\t\t</>\n\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};\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\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\treturn (\n\t\t<AutocompleteBase\n\t\t\t{ ...restProps }\n\t\t\tref={ ref }\n\t\t\tforcePopupIcon={ false }\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\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/>\n\t\t\t) }\n\t\t/>\n\t);\n} );\n\nconst TextInput = ( {\n\tparams,\n\tallowClear,\n\tplaceholder,\n\thandleChange,\n\thasSelectedValue,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n\tplaceholder: string;\n\thasSelectedValue: boolean;\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\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\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\treturn options.every( ( option ) => 'groupLabel' in option );\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 { 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<div style={ { 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</div>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton, 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 { createControl } from '../create-control';\nimport { SizeControl } from './size-control';\n\nexport const GapControl = createControl( ( { label }: { label: string } ) => {\n\tconst {\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tpropType,\n\t\tdisabled: directionDisabled,\n\t} = useBoundProp( layoutDirectionPropTypeUtil );\n\n\tconst stackRef = useRef< HTMLDivElement >( null );\n\n\tconst { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst isLinked = ! directionValue && ! sizeValue ? true : !! sizeValue;\n\n\tconst onLinkToggle = () => {\n\t\tif ( ! isLinked ) {\n\t\t\tsetSizeValue( directionValue?.column?.value ?? null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\tsetDirectionValue( {\n\t\t\trow: value,\n\t\t\tcolumn: value,\n\t\t} );\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\treturn (\n\t\t<PropProvider propType={ propType } value={ directionValue } setValue={ setDirectionValue }>\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<ToggleButton\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>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</ToggleButton>\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 bind={ 'column' } isLinked={ isLinked } anchorRef={ stackRef } />\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 bind={ 'row' } isLinked={ isLinked } anchorRef={ stackRef } />\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\tisLinked,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tisLinked: boolean;\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl anchorRef={ anchorRef } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl anchorRef={ anchorRef } />\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 { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack, styled } from '@elementor/ui';\nimport { type OpenOptions, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\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\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\treturn (\n\t\t<Stack gap={ 1 }>\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>\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<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_UPLOAD ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\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 { useCurrentUserCapabilities } from '@elementor/editor-current-user';\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);\nconst NON_ADMIN_TITLE_TEXT = __( \"Sorry, you can't upload that file yet\", 'elementor' );\nconst NON_ADMIN_CONTENT_TEXT = __(\n\t'This is because this file type may pose a security risk. To upload them anyway, ask the site administrator to enable unfiltered file uploads.',\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 { canUser } = useCurrentUserCapabilities();\n\tconst [ isError, setIsError ] = useState( false );\n\tconst canManageOptions = canUser( 'manage_options' );\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 canManageOptions ? <AdminDialog { ...dialogProps } /> : <NonAdminDialog { ...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\nconst NonAdminDialog = ( { open, onClose }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ NON_ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>{ NON_ADMIN_CONTENT_TEXT }</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } onClick={ () => onClose( false ) } variant=\"contained\" color=\"primary\">\n\t\t\t\t{ __( 'Got it', '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 { isExperimentActive } from '@elementor/editor-v1-adapters';\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 { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\tconst isUsingNestedProps = isExperimentActive( 'e_v_3_30' );\n\n\tconst colorLabel = __( 'Color', 'elementor' );\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<PropKeyProvider bind=\"color\">\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{ isUsingNestedProps ? (\n\t\t\t\t\t\t\t<ControlLabel>{ colorLabel }</ControlLabel>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ControlFormLabel>{ colorLabel }</ControlFormLabel>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ColorControl />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\tcolorPropTypeUtil,\n\ttype PropKey,\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 { PopoverContent } from '../../../components/popover-content';\nimport { Repeater } from '../../../components/repeater';\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, disabled } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ overlayValues } setValue={ setValue } isDisabled={ () => disabled }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ overlayValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Overlay', 'elementor' ) }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: getInitialBackgroundOverlay(),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nexport const ItemContent = ( { anchorEl = null, bind }: { anchorEl?: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\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\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={ anchorEl } />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\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 } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemIconGradient value={ value } />;\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: '1em',\n\t\t\t\twidth: '1em',\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\nconst ItemLabel = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\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 } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemLabelGradient value={ value } />;\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\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 ControlActions from '../../control-actions/control-actions';\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,\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<ControlActions>\n\t\t\t<UnstableGradientBox\n\t\t\t\tsx={ { width: 'auto', padding: 1.5 } }\n\t\t\t\tvalue={ normalizeValue() }\n\t\t\t\tonChange={ handleChange }\n\t\t\t/>\n\t\t</ControlActions>\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 { 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<Select\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( backgroundImageOffsetContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ backgroundPositionOptions.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</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/>\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/>\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 PropKey } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport {\n\ttype ChildControlConfig,\n\tRepeatableControlContext,\n\tuseRepeatableControlContext,\n} from '../hooks/use-repeatable-control-context';\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};\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}: RepeatableControlProps ) => {\n\t\tconst { propTypeUtil: childPropTypeUtil } = 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 ),\n\t\t\t[ childPropTypeUtil.key, childPropTypeUtil.schema ]\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<Repeater\n\t\t\t\t\t\topenOnAdd\n\t\t\t\t\t\tvalues={ value ?? [] }\n\t\t\t\t\t\tsetValues={ setValue }\n\t\t\t\t\t\tlabel={ repeaterLabel }\n\t\t\t\t\t\tisSortable={ false }\n\t\t\t\t\t\titemSettings={ {\n\t\t\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\t\t\tinitialValues: childPropTypeUtil.create( initialValues || null ),\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t/>\n\t\t\t\t</RepeatableControlContext.Provider>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\nconst ItemContent = ( { bind }: { bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content />\n\t\t</PropKeyProvider>\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\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 ( 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\treturn path.split( '.' ).reduce( ( current: Record< string, unknown >, key ) => {\n\t\tif ( current && typeof current === 'object' ) {\n\t\t\treturn current[ key ] as Record< string, unknown >;\n\t\t}\n\t\treturn {};\n\t}, obj );\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 ItemLabel = ( { value }: { value: Record< string, unknown > } ) => {\n\tconst { placeholder, patternLabel } = useRepeatableControlContext();\n\n\tconst label = shouldShowPlaceholder( patternLabel, value ) ? placeholder : interpolate( patternLabel, value );\n\n\treturn (\n\t\t<Box component=\"span\" color=\"text.tertiary\">\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 { createContext, useContext } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\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};\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 { 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 { TextControl } from './text-control';\n\ntype KeyValueControlProps = {\n\tkeyName?: string;\n\tvalueName?: string;\n\tregexKey?: string;\n\tregexValue?: string;\n\tvalidationErrorMessage?: string;\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: value?.key?.value || '',\n\t\tvalue: value?.value?.value || '',\n\t} );\n\n\tconst keyLabel = props.keyName || __( 'Key', 'elementor' );\n\tconst valueLabel = props.valueName || __( 'Value', 'elementor' );\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 }>\n\t\t\t\t\t<FormLabel size=\"tiny\">{ keyLabel }</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'key' }>\n\t\t\t\t\t\t<TextControl inputValue={ sessionState.key } error={ !! keyError } sx={ { pt: 1 } } />\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 }>\n\t\t\t\t\t<FormLabel size=\"tiny\">{ valueLabel }</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={ 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\tsx={ { pt: 1 } }\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","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { positionPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\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];\n\nexport const PositionControl = () => {\n\tconst positionContext = useBoundProp( positionPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isVersion331Active = isExperimentActive( 'e_v_3_31' );\n\tconst isCustom = !! positionContext.value && isVersion331Active;\n\n\tconst availablePositionOptions = useMemo( () => {\n\t\tconst options = [ ...positionOptions ];\n\n\t\tif ( isVersion331Active ) {\n\t\t\toptions.push( { label: __( 'Custom', 'elementor' ), value: 'custom' } );\n\t\t}\n\n\t\treturn options;\n\t}, [ isVersion331Active ] );\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' && isVersion331Active ) {\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{ availablePositionOptions.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 startIcon={ <LetterXIcon fontSize={ 'tiny' } /> } />\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 startIcon={ <LetterYIcon fontSize={ 'tiny' } /> } />\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 { type TransformItemPropValue, transformPropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { Repeater } from '../../components/repeater';\nimport { createControl } from '../../create-control';\nimport { TransformContent } from './transform-content';\nimport { TransformIcon } from './transform-icon';\nimport { TransformLabel } from './transform-label';\n\nconst initialTransformValue: TransformItemPropValue = {\n\t$$type: 'transform-move',\n\tvalue: {\n\t\tx: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\ty: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\tz: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t},\n};\n\nexport const TransformRepeaterControl = createControl( () => {\n\tconst { propType, value: transformValues, setValue, disabled } = useBoundProp( transformPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ transformValues } setValue={ setValue }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ transformValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Transform', 'elementor' ) }\n\t\t\t\tshowDuplicate={ false }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: TransformIcon,\n\t\t\t\t\tLabel: TransformLabel,\n\t\t\t\t\tContent: TransformContent,\n\t\t\t\t\tinitialValues: initialTransformValue,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport type { PropKey } from '@elementor/editor-props';\nimport { Box, Tab, TabPanel, Tabs, useTabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider } from '../../bound-prop-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { Move } from './functions/move';\n\ntype TransformTabValue = 'transform-move';\n\nexport const TransformContent = ( { bind }: { anchorEl?: HTMLElement | null; bind: PropKey } ) => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< TransformTabValue >( 'transform-move' );\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<PopoverContent>\n\t\t\t\t<Box sx={ { width: '100%' } }>\n\t\t\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t\t\t<Tabs\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\t\taria-label={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tab label={ __( 'Move', 'elementor' ) } { ...getTabProps( 'transform-move' ) } />\n\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'transform-move' ) }>\n\t\t\t\t\t\t<Move />\n\t\t\t\t\t</TabPanel>\n\t\t\t\t</Box>\n\t\t\t</PopoverContent>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { 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 { AxisRow } from './axis-row';\n\nconst moveAxisControls: { label: string; bindValue: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Move X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Move Y', 'elementor' ),\n\t\tbindValue: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Move Z', 'elementor' ),\n\t\tbindValue: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Move = () => {\n\tconst context = useBoundProp( moveTransformPropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( 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={ 'transform-move' }>\n\t\t\t\t\t{ moveAxisControls.map( ( control ) => (\n\t\t\t\t\t\t<AxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } />\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 { SizeControl } from '../../size-control';\n\ntype TransformAxisRowProps = {\n\tlabel: string;\n\tbindValue: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\nexport const AxisRow = ( { label, bindValue, startIcon, anchorRef }: TransformAxisRowProps ) => {\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={ bindValue }>\n\t\t\t\t\t\t<SizeControl anchorRef={ anchorRef } 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 TransformItemPropValue } from '@elementor/editor-props';\nimport { ArrowsMaximizeIcon } from '@elementor/icons';\n\nexport const TransformIcon = ( { value }: { value: TransformItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'transform-move':\n\t\t\treturn <ArrowsMaximizeIcon fontSize=\"tiny\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import * as React from 'react';\nimport type { TransformItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst transformMoveValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => `${ axis?.value.size }${ axis?.value.unit }` )\n\t\t.join( ', ' );\n\nexport const TransformLabel = ( props: { value: TransformItemPropValue } ) => {\n\tconst { $$type, value } = props.value;\n\tswitch ( $$type ) {\n\t\tcase 'transform-move':\n\t\t\treturn <Label label={ __( 'Move', 'elementor' ) } value={ transformMoveValue( value ) } />;\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"],"mappings":"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","names":["React","Stack","__","React","createContext","useContext","createContext","useContext","value","value","React","React","React","createContext","useContext","createContext","useContext","Control","React","React","React","createContext","useContext","items","items","MenuItem","React","Stack","__","React","stringPropTypeUtil","stringPropTypeUtil","React","stringPropTypeUtil","TextField","stringPropTypeUtil","TextField","React","useEffect","useState","usePopupState","React","InputAdornment","React","MenuListItem","Button","TextField","units","InputAdornment","React","TextField","useState","units","useState","usePopupState","useEffect","React","forwardRef","useRef","Grid","__","React","Stack","React","useRef","__","forwardRef","Grid","React","useRef","FormLabel","Grid","__","React","Stack","forwardRef","React","Grid","React","useEffect","useState","bindPopover","bindTrigger","Box","Popover","Stack","Typography","usePopupState","__","React","React","createContext","useContext","Context","items","items","React","styled","useState","items","Stack","Typography","__","bindTrigger","Popover","Box","usePopupState","bindPopover","useEffect","__","useRef","Control","Grid","FormLabel","React","useRef","MenuListItem","Box","Grid","Select","__","React","Stack","Stack","React","useRef","Grid","__","__","units","useRef","Grid","React","Box","__","ItemIcon","ItemLabel","ItemContent","Box","Grid","Select","MenuListItem","Content","units","useRef","React","stringPropTypeUtil","React","useEffect","useMemo","useRef","useState","Menu","styled","Typography","React","Tooltip","styled","items","useMemo","Content","useState","useRef","Menu","Typography","useEffect","stringPropTypeUtil","React","TextField","RESTRICTED_INPUT_KEYS","TextField","React","useId","useRef","sizePropTypeUtil","isExperimentActive","bindPopover","Grid","Popover","Stack","ToggleButton","Tooltip","usePopupState","__","items","useId","usePopupState","sizePropTypeUtil","useRef","isExperimentActive","Grid","Stack","__","Tooltip","ToggleButton","Popover","bindPopover","React","useRef","sizePropTypeUtil","isExperimentActive","Grid","Stack","ToggleButton","Tooltip","__","sizePropTypeUtil","useRef","isExperimentActive","__","Stack","Tooltip","ToggleButton","Grid","Control","React","stringPropTypeUtil","ChevronDownIcon","bindPopover","bindTrigger","Popover","UnstableTag","usePopupState","React","useEffect","useState","Box","Divider","Stack","Typography","__","SIZE","useState","__","Divider","Stack","Box","Typography","useEffect","SIZE","stringPropTypeUtil","usePopupState","UnstableTag","ChevronDownIcon","bindTrigger","Popover","bindPopover","React","TextField","TextField","React","useMemo","useState","booleanPropTypeUtil","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","isExperimentActive","httpService","PlusIcon","Box","Grid","IconButton","Stack","Switch","debounce","__","React","forwardRef","XIcon","Box","IconButton","InputAdornment","TextField","React","SIZE","__","useState","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","useMemo","debounce","Stack","Grid","IconButton","PlusIcon","booleanPropTypeUtil","isExperimentActive","Switch","httpService","Box","React","useRef","sizePropTypeUtil","DetachIcon","LinkIcon","Grid","Stack","ToggleButton","Tooltip","__","useRef","sizePropTypeUtil","LinkIcon","DetachIcon","__","Stack","Tooltip","ToggleButton","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","isExperimentActive","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","PencilIcon","Grid","__","__","PencilIcon","stringPropTypeUtil","useRef","Grid","ArrowsMoveHorizontalIcon","ArrowsMoveVerticalIcon","useRef","backgroundGradientOverlayPropTypeUtil","initialBackgroundColorOverlay","initialBackgroundGradientOverlay","backgroundGradientOverlayPropTypeUtil","useRef","backgroundColorOverlayPropTypeUtil","colorPropTypeUtil","__","ItemIcon","ItemLabel","ItemContent","Content","Box","CardMedia","backgroundImageOverlayPropTypeUtil","styled","UnstableColorIndicator","useWpMediaAttachment","isExperimentActive","__","Grid","React","useMemo","Box","createContext","useContext","useMemo","ItemIcon","ItemLabel","ItemContent","Content","Box","React","useMemo","useState","stringPropTypeUtil","FormLabel","Grid","__","useState","__","useMemo","stringPropTypeUtil","Grid","FormLabel","React","useMemo","stringPropTypeUtil","MenuListItem","isExperimentActive","LetterXIcon","LetterYIcon","Grid","Select","__","__","stringPropTypeUtil","isExperimentActive","useMemo","Grid","Select","MenuListItem","LetterXIcon","LetterYIcon","React","__","React","Box","Tab","TabPanel","Tabs","useTabs","__","React","useRef","Grid","__","React","Grid","Grid","__","useRef","Grid","useTabs","Box","Tabs","__","Tab","TabPanel","React","ArrowsMaximizeIcon","React","Box","__","Label","__"]}
|
|
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/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/components/floating-bar.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/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/popover-content.tsx","../src/components/popover-grid-container.tsx","../src/components/repeater.tsx","../src/control-adornments/control-adornments.tsx","../src/control-adornments/control-adornments-context.tsx","../src/components/sortable.tsx","../src/components/unstable-repeater/locations.ts","../src/controls/filter-repeater-control.tsx","../src/controls/filter-control/drop-shadow-item-content.tsx","../src/controls/filter-control/drop-shadow-item-label.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/components/conditional-tooltip.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/components/control-label.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/autocomplete.tsx","../src/components/restricted-link-infotip.tsx","../src/controls/switch-control.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/components/unstable-repeater/actions/add-item-action.tsx","../src/components/unstable-repeater/context/repeater-context.tsx","../src/components/unstable-repeater/header/header.tsx","../src/components/unstable-repeater/items/items-container.tsx","../src/components/unstable-repeater/items/item.tsx","../src/components/unstable-repeater/actions/disable-item-action.tsx","../src/components/unstable-repeater/actions/duplicate-item-action.tsx","../src/components/unstable-repeater/actions/remove-item-action.tsx","../src/components/unstable-repeater/items/edit-item-popover.tsx","../src/components/unstable-repeater/items/use-popover.tsx","../src/components/unstable-repeater/unstable-repeater.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/hooks/use-repeatable-control-context.ts","../src/controls/key-value-control.tsx","../src/controls/position-control.tsx","../src/controls/transform-control/transform-repeater-control.tsx","../src/controls/transform-control/transform-content.tsx","../src/controls/transform-control/functions/move.tsx","../src/controls/transform-control/types.ts","../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/transition-control/transition-repeater-control.tsx","../src/controls/selection-size-control.tsx","../src/controls/transition-control/data.ts","../src/controls/transition-control/transition-selector.tsx","../src/controls/unstable-transform-control/unstable-transform-repeater-control.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 { 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\tshowMode?: 'all' | 'media' | 'sizes';\n};\n\nexport const ImageControl = createControl( ( { sizes, showMode = 'all' }: ImageControlProps ) => {\n\tconst propContext = useBoundProp( imagePropTypeUtil );\n\n\tlet componentToRender;\n\tswitch ( showMode ) {\n\t\tcase 'media':\n\t\t\tcomponentToRender = <ImageSrcControl />;\n\t\t\tbreak;\n\t\tcase 'sizes':\n\t\t\tcomponentToRender = <ImageSizeControl sizes={ sizes } />;\n\t\t\tbreak;\n\t\tcase 'all':\n\t\tdefault:\n\t\t\tcomponentToRender = (\n\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t<ControlFormLabel>{ __( 'Image', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t<ImageSrcControl />\n\t\t\t\t\t<Grid container gap={ 1.5 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Resolution', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t\t<ImageSizeControl sizes={ sizes } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Stack>\n\t\t\t);\n\t}\n\n\treturn <PropProvider { ...propContext }>{ componentToRender }</PropProvider>;\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 SetValueMeta = {\n\tbind?: PropKey;\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 } 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\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nexport function useBoundProp< T extends PropValue = PropValue, P extends PropType = PropType >(): PropKeyContextValue<\n\tT,\n\tP\n>;\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\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn { ...propKeyContext, disabled } as PropKeyContextValue< PropValue, PropType >;\n\t}\n\n\tfunction setValue( value: TValue | null, options: CreateOptions, meta: { bind?: PropKey } ) {\n\t\tif ( ! validate( value ) ) {\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};\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 ) => {\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\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 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 Component = useControlReplacement( Control );\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<Component { ...props } />\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 ControlReplacement = {\n\tcomponent: ComponentType;\n\tcondition: ( { value }: ConditionArgs ) => boolean;\n};\n\ntype ConditionArgs = {\n\tvalue: 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: ComponentType ) => {\n\tconst { value } = useBoundProp();\n\tconst replacements = useContext( ControlReplacementContext );\n\n\ttry {\n\t\tconst replacement = replacements.find( ( r ) => r.condition( { value } ) );\n\n\t\treturn replacement?.component ?? OriginalComponent;\n\t} catch {\n\t\treturn 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\nexport const SlotChildren = ( {\n\tchildren,\n\twhitelist = [],\n\tsorted = false,\n\tprops = {},\n}: {\n\tchildren: React.ReactNode;\n\twhitelist: React.FC[];\n\tsorted?: boolean;\n\tprops?: Record< string, unknown >;\n} ) => {\n\tconst filtered = (\n\t\t! whitelist.length\n\t\t\t? React.Children.toArray( children )\n\t\t\t: React.Children.toArray( children ).filter(\n\t\t\t\t\t( child ) => React.isValidElement( child ) && whitelist.includes( child.type as React.FC )\n\t\t\t )\n\t) as React.ReactElement[];\n\n\tif ( sorted ) {\n\t\tsort( filtered, whitelist );\n\t}\n\n\treturn filtered.map( ( child, index ) => (\n\t\t<React.Fragment key={ index }>{ React.cloneElement( child, props ) }</React.Fragment>\n\t) );\n};\n\nconst sort = ( childrenArray: React.ReactElement[], whitelist: unknown[] ) => {\n\tchildrenArray.sort( ( a, b ) => {\n\t\tconst aIndex = whitelist.indexOf( a.type );\n\t\tconst bIndex = whitelist.indexOf( b.type );\n\n\t\tif ( aIndex === -1 || bIndex === -1 ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn aIndex - bIndex;\n\t} );\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 } = 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: 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';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { FloatingActionsBar } from '../components/floating-bar';\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, type ReactElement, useContext, useState } from 'react';\nimport { styled, UnstableFloatingActionBar } from '@elementor/ui';\n\n// CSS hack to hide empty floating bars.\nconst FloatingBarContainer = styled( 'span' )`\n\tdisplay: contents;\n\n\t.MuiFloatingActionBar-popper:has( .MuiFloatingActionBar-actions:empty ) {\n\t\tdisplay: none;\n\t}\n\n\t.MuiFloatingActionBar-popper {\n\t\tz-index: 1000;\n\t}\n`;\n\nconst FloatingActionsContext = createContext< null | {\n\topen: boolean;\n\tsetOpen: React.Dispatch< React.SetStateAction< boolean > >;\n} >( null );\n\nexport function FloatingActionsBar( { actions, children }: PropsWithChildren< { actions: ReactElement[] } > ) {\n\tconst [ open, setOpen ] = useState< boolean >( false );\n\n\treturn (\n\t\t<FloatingActionsContext.Provider value={ { open, setOpen } }>\n\t\t\t<FloatingBarContainer>\n\t\t\t\t<UnstableFloatingActionBar actions={ actions } open={ open || undefined }>\n\t\t\t\t\t{ children as ReactElement }\n\t\t\t\t</UnstableFloatingActionBar>\n\t\t\t</FloatingBarContainer>\n\t\t</FloatingActionsContext.Provider>\n\t);\n}\n\nexport function useFloatingActionsBar() {\n\tconst context = useContext( FloatingActionsContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useFloatingActions must be used within a FloatingActionsBar' );\n\t}\n\n\treturn context;\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, 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 Props = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n};\n\nexport const SelectControl = createControl( ( { options, onChange }: 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\treturn (\n\t\t<ControlActions>\n\t\t\t<Select\n\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\tdisplayEmpty\n\t\t\t\tsize=\"tiny\"\n\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\tconst findOptionByValue = ( searchValue: string | null ) =>\n\t\t\t\t\t\toptions.find( ( opt ) => opt.value === searchValue );\n\n\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\tif ( placeholder ) {\n\t\t\t\t\t\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\t\t\t\t\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\t\t\t\t\t\treturn (\n\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{ displayText }\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tconst option = findOptionByValue( selectedValue );\n\t\t\t\t\treturn option?.label || selectedValue;\n\t\t\t\t} }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tfullWidth\n\t\t\t>\n\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Select>\n\t\t</ControlActions>\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\tsx,\n\t}: {\n\t\tplaceholder?: string;\n\t\terror?: boolean;\n\t\tinputValue?: string;\n\t\tinputDisabled?: boolean;\n\t\tsx?: SxProps;\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\tsx={ sx }\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};\n\nexport const TextAreaControl = createControl( ( { placeholder }: 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/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useState } from 'react';\nimport { 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};\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 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}: 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} = useBoundProp( sizePropTypeUtil );\n\t\tconst actualDefaultUnit = defaultUnit ?? externalPlaceholder?.unit ?? defaultSelectedUnit[ variant ];\n\t\tconst actualUnits = units ?? [ ...defaultUnits[ variant ] ];\n\t\tconst [ internalState, setInternalState ] = useState( createStateFromSizeProp( sizeValue, actualDefaultUnit ) );\n\t\tconst activeBreakpoint = useActiveBreakpoint();\n\n\t\tconst actualExtendedOptions = useSizeExtendedOptions( extendedOptions || [], disableCustom ?? false );\n\t\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\t\tconst [ state, setState ] = useSyncExternalState( {\n\t\t\texternal: internalState,\n\t\t\tsetExternal: ( newState: State | null ) => setSizeValue( extractValueFromState( newState ) ),\n\t\t\tpersistWhen: ( newState ) => {\n\t\t\t\tif ( ! newState?.unit ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( isUnitExtendedOption( newState.unit ) ) {\n\t\t\t\t\treturn newState.unit === 'auto' ? true : !! newState.custom;\n\t\t\t\t}\n\n\t\t\t\treturn !! newState?.numeric || newState?.numeric === 0;\n\t\t\t},\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 ) || {};\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 { value: size } = event.target;\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( ( prev ) => ( {\n\t\t\t\t...prev,\n\t\t\t\t[ controlUnit === 'custom' ? 'custom' : 'numeric' ]: formatSize( size, controlUnit ),\n\t\t\t\tunit: controlUnit,\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\tuseEffect( () => {\n\t\t\tconst newState = createStateFromSizeProp(\n\t\t\t\tsizeValue,\n\t\t\t\tstate.unit === 'custom' ? state.unit : actualDefaultUnit,\n\t\t\t\t'',\n\t\t\t\tstate.custom\n\t\t\t);\n\t\t\tconst currentUnitType = isUnitExtendedOption( state.unit ) ? 'custom' : 'numeric';\n\t\t\tconst mergedStates = {\n\t\t\t\t...state,\n\t\t\t\tunit: newState.unit ?? state.unit,\n\t\t\t\t[ currentUnitType ]: newState[ currentUnitType ],\n\t\t\t};\n\n\t\t\tif ( mergedStates.unit !== 'auto' && areStatesEqual( state, mergedStates ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( state.unit === newState.unit ) {\n\t\t\t\tsetInternalState( mergedStates );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetState( newState );\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ sizeValue ] );\n\n\t\tuseEffect( () => {\n\t\t\tconst newState = createStateFromSizeProp( sizeValue, actualDefaultUnit, '', state.custom );\n\n\t\t\tif ( activeBreakpoint && ! areStatesEqual( newState, state ) ) {\n\t\t\t\tsetState( newState );\n\t\t\t}\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, ...( actualExtendedOptions || [] ) ] }\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/>\n\t\t\t\t{ anchorRef?.current && (\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 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 ): 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\treturn {\n\t\tsize: state[ unit === 'custom' ? 'custom' : 'numeric' ],\n\t\tunit,\n\t} as SizeValue;\n}\n\nfunction areStatesEqual( state1: State, state2: State ): boolean {\n\tif ( state1.unit !== state2.unit || state1.custom !== state2.custom ) {\n\t\treturn false;\n\t}\n\n\tif ( isUnitExtendedOption( state1.unit ) ) {\n\t\treturn state1.custom === state2.custom;\n\t}\n\n\treturn state1.numeric === state2.numeric || ( isNaN( state1.numeric ) && isNaN( state2.numeric ) );\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\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};\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+', '-' ];\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}: 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 ) => u.includes( updatedBuffer ) ) ||\n\t\t\tunits.find( ( u ) => u.startsWith( newChar ) ) ||\n\t\t\tunits.find( ( 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 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={ {\n\t\t\t\t\tcustom: <MathFunctionIcon fontSize=\"tiny\" />,\n\t\t\t\t} }\n\t\t\t\tmenuItemsAttributes={\n\t\t\t\t\tunits.includes( 'custom' )\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tcustom: popupAttributes,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\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\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\tif ( RESTRICTED_INPUT_KEYS.includes( event.key ) ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\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\tisPopoverOpen={ popupState.isOpen }\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' ] 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\tTextField,\n\ttype TextFieldProps,\n\tusePopupState,\n} from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { DEFAULT_UNIT } from '../../utils/size-control';\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\tdisabled?: boolean;\n\tisPopoverOpen?: boolean;\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\tdisabled,\n\t\t\tisPopoverOpen,\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<TextField\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\tonChange={ 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/>\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\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\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>\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 { 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';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | null;\n\tsetExternal: ( value: TValue | null ) => 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-compiler/react-compiler\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 ) => {\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 ) );\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 = 2, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { 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};\n\nexport const ColorControl = createControl(\n\t( { propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, ...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\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, type PropKey, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { FormLabel, Grid, type SxProps, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SelectControl } from './select-control';\nimport { 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<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ value ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Box shadow', 'elementor' ) }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: initialShadow,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<UnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color?.value } />\n);\n\nconst ItemContent = ( { anchorEl, bind }: { anchorEl: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst context = useBoundProp( shadowPropTypeUtil );\n\tconst rowRef: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\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\thOffsetSize + hOffsetUnit,\n\t\tvOffsetSize + vOffsetUnit,\n\t\tblurSize + blurUnit,\n\t\tspreadSize + spreadUnit,\n\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 { 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 { useEffect, useState } from 'react';\nimport { type PropKey, type PropTypeUtil } from '@elementor/editor-props';\nimport { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tPopover,\n\tStack,\n\tTooltip,\n\tTypography,\n\tUnstableTag,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport { SectionContent } from './section-content';\nimport { SortableItem, SortableProvider } from './sortable';\nimport { RepeaterItemIconSlot, RepeaterItemLabelSlot } from './unstable-repeater/locations';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\ntype Item< T > = {\n\tdisabled?: boolean;\n} & T;\nexport type CollectionPropUtil< T > = PropTypeUtil< PropKey, T[] >;\n\ntype RepeaterItemContentProps< T > = {\n\tanchorEl: AnchorEl;\n\tbind: PropKey;\n\tvalue: T;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\ntype RepeaterItemContent< T > = React.ComponentType< RepeaterItemContentProps< T > >;\n\ntype RepeaterProps< T > = {\n\tlabel: string;\n\tvalues?: T[];\n\taddToBottom?: boolean;\n\topenOnAdd?: boolean;\n\tsetValues: ( newValue: T[] ) => void;\n\tdisabled?: boolean;\n\titemSettings: {\n\t\tinitialValues: T;\n\t\tLabel: React.ComponentType< { value: T } >;\n\t\tIcon: React.ComponentType< { value: T } >;\n\t\tContent: RepeaterItemContent< T >;\n\t};\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tisSortable?: boolean;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tdisabled = false,\n\topenOnAdd = false,\n\taddToBottom = false,\n\tvalues: repeaterValues = [],\n\tsetValues: setRepeaterValues,\n\tshowDuplicate = true,\n\tshowToggle = true,\n\tisSortable = true,\n\tcollectionPropUtil,\n}: RepeaterProps< Item< T > > ) => {\n\tconst [ openItem, setOpenItem ] = useState( EMPTY_OPEN_ITEM );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\t// @ts-expect-error - as long as persistWhen => true, value will never be null\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( items.map( ( _, index ) => index ) );\n\n\tconst generateNextKey = ( source: number[] ) => {\n\t\treturn 1 + Math.max( 0, ...source );\n\t};\n\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\t\tconst newKey = generateNextKey( uniqueKeys );\n\n\t\tif ( addToBottom ) {\n\t\t\tsetItems( [ ...items, newItem ] );\n\t\t\tsetUniqueKeys( [ ...uniqueKeys, newKey ] );\n\t\t} else {\n\t\t\tsetItems( [ newItem, ...items ] );\n\t\t\tsetUniqueKeys( [ newKey, ...uniqueKeys ] );\n\t\t}\n\n\t\tif ( openOnAdd ) {\n\t\t\tsetOpenItem( newKey );\n\t\t}\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\t\tconst newKey = generateNextKey( uniqueKeys );\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( [ ...items.slice( 0, atPosition ), newItem, ...items.slice( atPosition ) ] );\n\t\tsetUniqueKeys( [ ...uniqueKeys.slice( 0, atPosition ), newKey, ...uniqueKeys.slice( atPosition ) ] );\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tsetUniqueKeys(\n\t\t\tuniqueKeys.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} )\n\t\t);\n\n\t\tsetItems(\n\t\t\titems.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} )\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 Item< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst onChangeOrder = ( reorderedKeys: number[] ) => {\n\t\tsetUniqueKeys( reorderedKeys );\n\t\tsetItems( ( prevItems ) => {\n\t\t\treturn reorderedKeys.map( ( keyValue ) => {\n\t\t\t\tconst index = uniqueKeys.indexOf( keyValue );\n\t\t\t\treturn prevItems[ index ];\n\t\t\t} );\n\t\t} );\n\t};\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tjustifyContent=\"start\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ 1 }\n\t\t\t\tsx={ { marginInlineEnd: -0.75 } }\n\t\t\t>\n\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t\t<ControlAdornments />\n\t\t\t\t<IconButton\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tsx={ { ml: 'auto' } }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ addRepeaterItem }\n\t\t\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\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, index ) => {\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 } />\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 === key }\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\tcollectionPropUtil={ collectionPropUtil }\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 { ...props } value={ value } bind={ String( index ) } />\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' | 'collectionPropUtil' > ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tdisabled?: boolean;\n\tcollectionPropUtil?: CollectionPropUtil< 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\tdisabled,\n\tcollectionPropUtil,\n}: RepeaterItemProps< T > ) => {\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\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<UnstableTag\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ label }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tfullWidth\n\t\t\t\tref={ setRef }\n\t\t\t\tvariant=\"outlined\"\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<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ removeItem } aria-label={ removeLabel }>\n\t\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: {\n\t\t\t\t\t\tref: setAnchorEl,\n\t\t\t\t\t\tsx: { mt: 0.5, width: ref?.getBoundingClientRect().width },\n\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...popoverProps }\n\t\t\t\tanchorEl={ ref }\n\t\t\t>\n\t\t\t\t<Box>{ children( { anchorEl, collectionPropUtil } ) }</Box>\n\t\t\t</Popover>\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-compiler/react-compiler\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';\n\nimport { useControlAdornments } from './control-adornments-context';\n\nexport function ControlAdornments() {\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 } />\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';\n\ntype ControlAdornmentsItems = Array< {\n\tid: string;\n\tAdornment: ComponentType;\n} >;\n\ntype ControlAdornmentsContext = {\n\titems?: ControlAdornmentsItems;\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 { 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';\n\nexport const SortableProvider = < T extends 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 }>\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\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 { ...props } role=\"button\" className=\"class-item-sortable-trigger\">\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 { 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: RepeaterHeaderActionsSlot, inject: injectIntoRepeaterHeaderActions } = createLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemActionsSlot, inject: injectIntoRepeaterItemActions } = createLocation< {\n\tindex: number;\n} >();\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport {\n\ttype CreateOptions,\n\tcssFilterFunctionPropUtil,\n\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\ttype PropKey,\n\ttype SizePropValue,\n} from '@elementor/editor-props';\nimport { backdropFilterPropTypeUtil } from '@elementor/editor-props';\nimport { Box, 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 { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { type CollectionPropUtil, Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { type LengthUnit, lengthUnits, type Unit } from '../utils/size-control';\nimport { DropShadowItemContent } from './filter-control/drop-shadow-item-content';\nimport { DropShadowItemLabel } from './filter-control/drop-shadow-item-label';\nimport { SelectControl } from './select-control';\nimport { SizeControl, type SizeControlProps } from './size-control';\n\ntype FilterType = FilterItemPropValue[ 'value' ][ 'func' ];\n\nconst DEFAULT_FILTER = 'blur';\n\ntype FilterItemConfig = {\n\tdefaultValue: FilterItemPropValue;\n\tname: string;\n\tvalueName: string;\n\tunits?: Exclude< SizePropValue[ 'value' ][ 'unit' ], 'custom' | 'auto' >[];\n\tsizeVariant?: SizeControlProps[ 'variant' ];\n};\n\nconst filterConfig: Record< string, FilterItemConfig > = {\n\tblur: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'blur' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Blur', 'elementor' ),\n\t\tvalueName: __( 'Radius', 'elementor' ),\n\t\tunits: lengthUnits.filter( ( unit ) => unit !== '%' ),\n\t},\n\tbrightness: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'brightness' },\n\t\t\t\targs: { $$type: 'size', value: { size: 100, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Brightness', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\tcontrast: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'contrast' },\n\t\t\t\targs: { $$type: 'size', value: { size: 100, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Contrast', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\t'hue-rotate': {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'hue-rotate' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: 'deg' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Hue Rotate', 'elementor' ),\n\t\tvalueName: __( 'Angle', 'elementor' ),\n\t\tunits: [ 'deg', 'rad', 'grad', 'turn' ],\n\t},\n\tsaturate: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'saturate' },\n\t\t\t\targs: { $$type: 'size', value: { size: 100, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Saturate', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\tgrayscale: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'grayscale' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Grayscale', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\tinvert: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'invert' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Invert', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\tsepia: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'sepia' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Sepia', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\t'drop-shadow': {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'drop-shadow' },\n\t\t\t\targs: {\n\t\t\t\t\t$$type: 'drop-shadow',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\txAxis: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t\t\t\tyAxis: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t\t\t\tblur: { $$type: 'size', value: { size: 10, unit: 'px' } },\n\t\t\t\t\t\tcolor: { $$type: 'color', value: 'rgba(0, 0, 0, 1)' },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tname: __( 'Drop shadow', 'elementor' ),\n\t\tvalueName: __( 'Drop-shadow', 'elementor' ),\n\t\tunits: lengthUnits.filter( ( unit ) => unit !== '%' ),\n\t},\n};\n\nconst filterKeys = Object.keys( filterConfig );\n\nconst isSingleSize = ( key: string ): boolean => {\n\treturn ! [ 'drop-shadow' ].includes( key );\n};\n\nexport const FilterRepeaterControl = createControl( ( { filterPropName = 'filter' }: { filterPropName?: string } ) => {\n\tconst [ propUtil, label ] =\n\t\tfilterPropName === 'backdrop-filter'\n\t\t\t? [ backdropFilterPropTypeUtil, __( 'Backdrop Filters', 'elementor' ) ]\n\t\t\t: [ filterPropTypeUtil, __( 'Filters', 'elementor' ) ];\n\tconst { propType, value: filterValues, setValue, disabled } = useBoundProp( propUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ filterValues } setValue={ setValue }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ filterValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ label }\n\t\t\t\tcollectionPropUtil={ propUtil }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: filterConfig[ DEFAULT_FILTER ].defaultValue,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = () => <></>;\n\nconst ItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\treturn isSingleSize( value.value.func.value ?? '' ) ? (\n\t\t<SingleSizeItemLabel value={ value } />\n\t) : (\n\t\t<DropShadowItemLabel value={ value } />\n\t);\n};\n\nconst SingleSizeItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { func, args } = value.value;\n\tconst defaultUnit =\n\t\t( filterConfig[ func.value ?? '' ].defaultValue.value.args as SizePropValue ).value.unit ?? lengthUnits[ 0 ];\n\tconst { unit, size } = ( args as SizePropValue ).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 }\n\t\t</Box>\n\t);\n};\n\nconst ItemContent = ( {\n\tbind,\n\tcollectionPropUtil,\n\tanchorEl,\n}: {\n\tbind: PropKey;\n\tcollectionPropUtil?: CollectionPropUtil< FilterItemPropValue >;\n\tanchorEl?: HTMLElement | null;\n} ) => {\n\tconst { value: filterValues = [] } = useBoundProp( collectionPropUtil ?? filterPropTypeUtil );\n\tconst itemIndex = parseInt( bind, 10 );\n\tconst item = filterValues?.[ itemIndex ];\n\treturn item ? (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<PropContent item={ item } anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t) : null;\n};\n\nconst PropContent = ( { item, anchorEl }: { item: FilterItemPropValue; anchorEl?: HTMLElement | null } ) => {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil );\n\n\tconst handleValueChange = (\n\t\tchangedValue: FilterItemPropValue[ 'value' ],\n\t\toptions?: CreateOptions,\n\t\tmeta?: { bind?: PropKey }\n\t) => {\n\t\tlet newValue = structuredClone( changedValue );\n\t\tconst newFuncName = newValue?.func.value ?? '';\n\t\tif ( meta?.bind === 'func' ) {\n\t\t\tnewValue = structuredClone( filterConfig[ newFuncName ].defaultValue.value );\n\t\t}\n\n\t\tif ( ! newValue.args ) {\n\t\t\treturn;\n\t\t}\n\t\tpropContext.setValue( newValue );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } setValue={ handleValueChange }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Filter', 'elementor' ) }</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=\"func\">\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\toptions={ filterKeys.map( ( filterKey ) => ( {\n\t\t\t\t\t\t\t\t\tlabel: filterConfig[ filterKey ].name,\n\t\t\t\t\t\t\t\t\tvalue: filterKey,\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</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PropKeyProvider bind=\"args\">\n\t\t\t\t\t<Content filterType={ item?.value.func } anchorEl={ anchorEl } />\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PopoverContent>\n\t\t</PropProvider>\n\t);\n};\n\nconst Content = ( { filterType, anchorEl }: { filterType: FilterType; anchorEl?: HTMLElement | null } ) => {\n\tconst filterName = filterType?.value || DEFAULT_FILTER;\n\tconst filterItemConfig = filterConfig[ filterName ];\n\tconst { units = [] } = filterItemConfig;\n\n\treturn isSingleSize( filterName ) ? (\n\t\t<SingleSizeItemContent filterType={ filterName } />\n\t) : (\n\t\t<DropShadowItemContent units={ units as LengthUnit[] } anchorEl={ anchorEl } />\n\t);\n};\n\nconst SingleSizeItemContent = ( { filterType }: { filterType: string } ) => {\n\tconst { valueName, defaultValue, units } = filterConfig[ filterType ];\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst defaultUnit = ( defaultValue.value.args as SizePropValue ).value.unit;\n\treturn (\n\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ valueName }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } units={ units as LengthUnit[] } defaultUnit={ defaultUnit as Unit } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\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 { type LengthUnit } from '../../utils/size-control';\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 = ( {\n\tunits,\n\tanchorEl,\n}: {\n\tunits: LengthUnit[];\n\tanchorEl?: HTMLElement | null;\n} ) => {\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 anchorRef={ rowRefs[ item.rowIndex ] } units={ units } defaultUnit=\"px\" />\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 * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nexport const DropShadowItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { xAxis, yAxis, blur } = value.value.args.value as DropShadowFilterPropValue[ 'value' ];\n\n\tconst xValue = `${ xAxis?.value?.size ?? 0 }${ xAxis?.value?.unit ?? 'px' }`;\n\tconst yValue = `${ yAxis?.value?.size ?? 0 }${ yAxis?.value?.unit ?? 'px' }`;\n\tconst blurValue = `${ blur?.value?.size ?? 10 }${ blur?.value?.unit ?? 'px' }`;\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{ `${ xValue } ${ yValue } ${ blurValue }` }\n\t\t</Box>\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';\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};\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}: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst exclusiveValues = options.filter( ( option ) => option.exclusive ).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: options,\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\nconst 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\t\t\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);\n\nexport const ControlToggleButtonGroup = < TValue, >( {\n\tjustify = 'end',\n\tsize = 'tiny',\n\tvalue,\n\tonChange,\n\titems,\n\tmaxItems,\n\texclusive = false,\n\tfullWidth = false,\n\tdisabled,\n\tplaceholder,\n}: Props< TValue > ) => {\n\tconst shouldSliceItems = exclusive && maxItems !== undefined && items.length > maxItems;\n\tconst menuItems = shouldSliceItems ? items.slice( maxItems - 1 ) : [];\n\tconst fixedItems = shouldSliceItems ? items.slice( 0, maxItems - 1 ) : items;\n\n\tconst theme = useTheme();\n\tconst isRtl = 'rtl' === theme.direction;\n\n\tconst handleChange = (\n\t\t_: React.MouseEvent< HTMLElement >,\n\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t) => {\n\t\tonChange( newValue as never );\n\t};\n\n\tconst getGridTemplateColumns = useMemo( () => {\n\t\tconst isOffLimits = menuItems?.length;\n\t\tconst itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;\n\t\tconst templateColumnsSuffix = isOffLimits ? 'auto' : '';\n\t\treturn `repeat(${ itemsCount }, minmax(0, 25%)) ${ templateColumnsSuffix }`;\n\t}, [ menuItems?.length, fixedItems.length ] );\n\n\tconst shouldShowExclusivePlaceholder = exclusive && ( value === null || value === undefined || value === '' );\n\n\tconst nonExclusiveSelectedValues =\n\t\t! exclusive && Array.isArray( value )\n\t\t\t? value\n\t\t\t\t\t.map( ( v ) => ( typeof v === 'string' ? v : '' ) )\n\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t.trim()\n\t\t\t\t\t.split( /\\s+/ )\n\t\t\t\t\t.filter( Boolean )\n\t\t\t: [];\n\n\tconst shouldShowNonExclusivePlaceholder = ! exclusive && nonExclusiveSelectedValues.length === 0;\n\n\tconst getPlaceholderArray = ( placeholderValue: TValue | TValue[] | undefined ): string[] => {\n\t\tif ( Array.isArray( placeholderValue ) ) {\n\t\t\treturn placeholderValue.flatMap( ( p ) => {\n\t\t\t\tif ( typeof p === 'string' ) {\n\t\t\t\t\treturn p.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof placeholderValue === 'string' ) {\n\t\t\treturn placeholderValue.trim().split( /\\s+/ ).filter( Boolean );\n\t\t}\n\n\t\treturn [];\n\t};\n\n\tconst placeholderArray = getPlaceholderArray( placeholder );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<StyledToggleButtonGroup\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</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\tref={ menuButtonRef }\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 { numberPropTypeUtil } from '@elementor/editor-props';\nimport { InputAdornment, TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\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\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+', '-' ];\n\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder: labelPlaceholder,\n\t\tmax = Number.MAX_VALUE,\n\t\tmin = -Number.MAX_VALUE,\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 } = useBoundProp( numberPropTypeUtil );\n\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst eventValue: string = event.target.value;\n\n\t\t\tif ( isEmptyOrNaN( eventValue ) ) {\n\t\t\t\tsetValue( null );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst formattedValue = shouldForceInt ? +parseInt( eventValue ) : Number( eventValue );\n\n\t\t\tsetValue( Math.min( Math.max( formattedValue, min ), max ) );\n\t\t};\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\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\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ labelPlaceholder ?? ( placeholder ? String( placeholder ) : '' ) }\n\t\t\t\t\tinputProps={ { step } }\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\tonKeyDown={ ( event: KeyboardEvent ) => {\n\t\t\t\t\t\tif ( RESTRICTED_INPUT_KEYS.includes( event.key ) ) {\n\t\t\t\t\t\t\tevent.preventDefault();\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 ReactNode, type RefObject, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { bindPopover, bindToggle, Grid, Popover, Stack, ToggleButton, 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 { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { SizeControl } from './size-control';\n\ntype MultiSizePropValue = Record< PropKey, SizePropValue >;\n\ntype Item = {\n\ticon: ReactNode;\n\tlabel: 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\nconst isEqualSizes = ( propValue: MultiSizePropValue, items: EqualUnequalItems ) => {\n\tconst values = Object.values( propValue );\n\n\tif ( values.length !== items.length ) {\n\t\treturn false;\n\t}\n\n\tconst [ firstValue, ...restValues ] = values;\n\n\treturn restValues.every(\n\t\t( value ) => value?.value?.size === firstValue?.value?.size && value?.value?.unit === firstValue?.value?.unit\n\t);\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 {\n\t\tpropType: multiSizePropType,\n\t\tvalue: multiSizeValue,\n\t\tsetValue: setMultiSizeValue,\n\t\tdisabled: multiSizeDisabled,\n\t} = useBoundProp( multiSizePropTypeUtil );\n\n\tconst { value: sizeValue, setValue: setSizeValue } = useBoundProp( sizePropTypeUtil );\n\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst splitEqualValue = () => {\n\t\tif ( ! sizeValue ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn items.reduce< TPropValue >(\n\t\t\t( acc, { bind } ) => ( { ...acc, [ bind ]: sizePropTypeUtil.create( sizeValue ) } ),\n\t\t\t{} as TPropValue\n\t\t);\n\t};\n\n\tconst setNestedProp = ( newValue: TPropValue ) => {\n\t\tconst newMappedValues = {\n\t\t\t...( multiSizeValue ?? splitEqualValue() ),\n\t\t\t...newValue,\n\t\t};\n\n\t\tconst isEqual = isEqualSizes( newMappedValues, items );\n\n\t\tif ( isEqual ) {\n\t\t\treturn setSizeValue( Object.values( newMappedValues )[ 0 ]?.value );\n\t\t}\n\n\t\tsetMultiSizeValue( newMappedValues );\n\t};\n\n\tconst getMultiSizeValues = () => {\n\t\tif ( multiSizeValue ) {\n\t\t\treturn multiSizeValue;\n\t\t}\n\n\t\treturn splitEqualValue() ?? null;\n\t};\n\n\tconst isShowingGeneralIndicator = ! popupState.isOpen;\n\n\tconst isMixed = !! multiSizeValue;\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\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<SizeControl\n\t\t\t\t\t\t\tplaceholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ 0 ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Tooltip title={ tooltipLabel } placement=\"top\">\n\t\t\t\t\t\t\t<ToggleButton\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\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</ToggleButton>\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\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={ getMultiSizeValues() }\n\t\t\t\t\tsetValue={ setNestedProp }\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\treturn (\n\t\t<PropKeyProvider bind={ item.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>{ item.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={ item.icon } 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 PropsWithChildren } from 'react';\nimport { Stack } from '@elementor/ui';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { ControlFormLabel } from './control-form-label';\n\nexport const ControlLabel = ( { children }: PropsWithChildren< object > ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton, 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 { createControl } from '../create-control';\nimport { type ExtendedOption } from '../utils/size-control';\nimport { SizeControl } from './size-control';\n\nexport const LinkedDimensionsControl = createControl(\n\t( {\n\t\tlabel,\n\t\tisSiteRtl = false,\n\t\textendedOptions,\n\t}: {\n\t\tlabel: string;\n\t\tisSiteRtl?: boolean;\n\t\textendedOptions?: ExtendedOption[];\n\t} ) => {\n\t\tconst { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\t\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\t\tconst {\n\t\t\tvalue: dimensionsValue,\n\t\t\tsetValue: setDimensionsValue,\n\t\t\tpropType,\n\t\t\tdisabled: dimensionsDisabled,\n\t\t} = useBoundProp( dimensionsPropTypeUtil );\n\n\t\tconst isLinked = ! dimensionsValue && ! sizeValue ? true : !! sizeValue;\n\n\t\tconst onLinkToggle = () => {\n\t\t\tif ( ! isLinked ) {\n\t\t\t\tsetSizeValue( dimensionsValue[ 'block-start' ]?.value ?? null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\t\tsetDimensionsValue( {\n\t\t\t\t'block-start': value,\n\t\t\t\t'block-end': value,\n\t\t\t\t'inline-start': value,\n\t\t\t\t'inline-end': value,\n\t\t\t} );\n\t\t};\n\n\t\tconst tooltipLabel = label.toLowerCase();\n\n\t\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t\t// translators: %s: Tooltip title.\n\t\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t\t// translators: %s: Tooltip title.\n\t\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\t\tconst disabled = sizeDisabled || dimensionsDisabled;\n\n\t\treturn (\n\t\t\t<PropProvider\n\t\t\t\tpropType={ propType }\n\t\t\t\tvalue={ dimensionsValue }\n\t\t\t\tsetValue={ setDimensionsValue }\n\t\t\t\tisDisabled={ () => disabled }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</Stack>\n\n\t\t\t\t{ getCssDimensionProps( isSiteRtl ).map( ( row, index ) => (\n\t\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" key={ index } ref={ gridRowRefs[ index ] }>\n\t\t\t\t\t\t{ row.map( ( { icon, ...props } ) => (\n\t\t\t\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\" key={ props.bind }>\n\t\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t\t<Label { ...props } />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\t\t\t\tbind={ props.bind }\n\t\t\t\t\t\t\t\t\t\tstartIcon={ icon }\n\t\t\t\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ gridRowRefs[ index ] }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) ) }\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\nconst Control = ( {\n\tbind,\n\tstartIcon,\n\tisLinked,\n\textendedOptions,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tstartIcon: React.ReactNode;\n\tisLinked: boolean;\n\textendedOptions?: ExtendedOption[];\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl startIcon={ startIcon } extendedOptions={ extendedOptions } anchorRef={ anchorRef } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl startIcon={ startIcon } extendedOptions={ extendedOptions } anchorRef={ anchorRef } />\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( 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\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\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\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\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};\n\nexport const FontFamilyControl = createControl( ( { fontFamilies, sectionWidth }: FontFamilyControlProps ) => {\n\tconst { value: fontFamily, setValue: setFontFamily, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\tconst isShowingPlaceholder = ! fontFamily && placeholder;\n\n\tconst mapFontSubs = React.useMemo< Category[] >( () => {\n\t\treturn fontFamilies.map( ( { label, fonts } ) => ( {\n\t\t\tlabel,\n\t\t\titems: fonts,\n\t\t} ) );\n\t}, [ fontFamilies ] );\n\n\treturn (\n\t\t<>\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ fontFamily || placeholder }\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\tdisabled={ disabled }\n\t\t\t\t\tsx={\n\t\t\t\t\t\tisShowingPlaceholder\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t'& .MuiTag-label': {\n\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},\n\t\t\t\t\t\t\t\t\ttextTransform: 'capitalize',\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tsx={ { my: 1.5 } }\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\tonItemChange={ setFontFamily }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\ttitle={ __( 'Font Family', 'elementor' ) }\n\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n} );\n","import * as React from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { PopoverBody, PopoverHeader, PopoverMenuList, PopoverSearch } 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};\n\nexport const ItemSelector = ( {\n\titemsList,\n\tselectedItem,\n\tonItemChange,\n\tonClose,\n\tsectionWidth,\n\ttitle,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n\ticon,\n}: ItemSelectorProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst filteredItemsList = useFilteredItemsList( itemsList, searchValue );\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 }>\n\t\t\t<PopoverHeader title={ title } onClose={ handleClose } icon={ <IconComponent fontSize=\"tiny\" /> } />\n\t\t\t<PopoverSearch\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tonSearch={ handleSearch }\n\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t{ filteredItemsList.length > 0 ? (\n\t\t\t\t<ItemList\n\t\t\t\t\titemListItems={ filteredItemsList }\n\t\t\t\t\tsetSelectedItem={ onItemChange }\n\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\tselectedItem={ selectedItem }\n\t\t\t\t\titemStyle={ itemStyle }\n\t\t\t\t\tonDebounce={ onDebounce }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Stack\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\theight=\"100%\"\n\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\toverflow=\"hidden\"\n\t\t\t\t>\n\t\t\t\t\t<IconComponent fontSize=\"large\" />\n\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ { display: 'flex', width: '100%', justifyContent: 'center' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>“</span>\n\t\t\t\t\t\t\t<span style={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }>\n\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>”.</span>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t) }\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};\n\nconst ItemList = ( {\n\titemListItems,\n\tsetSelectedItem,\n\thandleClose,\n\tselectedItem,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n}: ItemListProps ) => {\n\tconst selectedItemFound = itemListItems.find( ( item ) => item.value === selectedItem );\n\n\tconst debouncedVirtualizeChange = useDebounce( ( { getVirtualIndexes }: { getVirtualIndexes: () => number[] } ) => {\n\t\tgetVirtualIndexes().forEach( ( index ) => {\n\t\t\tconst item = itemListItems[ index ];\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/>\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};\n\nexport const useFilteredItemsList = ( itemsList: Category[], searchValue: 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 } );\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( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue, disabled } = useBoundProp( urlPropTypeUtil );\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { getLinkInLinkRestriction } from '@elementor/editor-elements';\nimport {\n\tlinkPropTypeUtil,\n\ttype LinkPropValue,\n\tnumberPropTypeUtil,\n\tstringPropTypeUtil,\n\turlPropTypeUtil,\n} from '@elementor/editor-props';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\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 {\n\tAutocomplete,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from '../components/autocomplete';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { RestrictedLinkInfotip } from '../components/restricted-link-infotip';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { type ControlProps } from '../utils/types';\nimport { SwitchControl } from './switch-control';\n\ntype Props = ControlProps< {\n\tqueryOptions: {\n\t\trequestParams: Record< string, unknown >;\n\t\tendpoint: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tlabel?: string;\n} >;\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ] | null;\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\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,\n\t\tqueryOptions: { endpoint = '', requestParams = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tcontext: { elementId },\n\t\tlabel = __( 'Link', 'elementor' ),\n\t} = props || {};\n\n\tconst [ linkInLinkRestriction, setLinkInLinkRestriction ] = useState( getLinkInLinkRestriction( elementId ) );\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value )\n\t);\n\tconst shouldDisableAddingLink = ! isActive && linkInLinkRestriction.shouldRestrict;\n\n\tconst onEnabledChange = () => {\n\t\tsetLinkInLinkRestriction( getLinkInLinkRestriction( elementId ) );\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 onOptionChange = ( newValue: number | 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: numberPropTypeUtil.create( newValue ),\n\t\t\t\t\tlabel: stringPropTypeUtil.create( findMatchingOption( options, newValue )?.label || null ),\n\t\t\t }\n\t\t\t: null;\n\n\t\tonSaveNewValue( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tnewValue = newValue?.trim() || '';\n\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: urlPropTypeUtil.create( newValue ),\n\t\t\t\t\tlabel: stringPropTypeUtil.create( '' ),\n\t\t\t }\n\t\t\t: null;\n\n\t\tonSaveNewValue( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst onSaveNewValue = ( newValue: LinkPropValue[ 'value' ] | null ) => {\n\t\tsetValue( newValue );\n\t\tsetLinkSessionValue( { ...linkSessionValue, value: newValue } );\n\t};\n\n\tconst updateOptions = ( newValue: string | null ) => {\n\t\tsetOptions( [] );\n\n\t\tif ( ! newValue || ! endpoint || newValue.length < minInputLength ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounceFetch( { ...requestParams, term: newValue } );\n\t};\n\n\tconst debounceFetch = useMemo(\n\t\t() =>\n\t\t\tdebounce(\n\t\t\t\t( params: FetchOptionsParams ) =>\n\t\t\t\t\tfetchOptions( endpoint, params ).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[ endpoint ]\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<ControlFormLabel>{ label }</ControlFormLabel>\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<ControlActions>\n\t\t\t\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\t\tvalue={ value?.destination?.value?.settings?.label || value?.destination?.value }\n\t\t\t\t\t\t\t\t\tonOptionChange={ onOptionChange }\n\t\t\t\t\t\t\t\t\tonTextChange={ onTextChange }\n\t\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ControlActions>\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\ntype FetchOptionsParams = Record< string, unknown > & { term: string };\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: LinkPropValue[ 'value' ] | null ): FlatOption[] {\n\tconst value = unionValue?.destination?.value;\n\tconst label = unionValue?.label?.value;\n\tconst type = unionValue?.destination?.$$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};\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\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\treturn (\n\t\t<AutocompleteBase\n\t\t\t{ ...restProps }\n\t\t\tref={ ref }\n\t\t\tforcePopupIcon={ false }\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\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/>\n\t\t\t) }\n\t\t/>\n\t);\n} );\n\nconst TextInput = ( {\n\tparams,\n\tallowClear,\n\tplaceholder,\n\thandleChange,\n\thasSelectedValue,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n\tplaceholder: string;\n\thasSelectedValue: boolean;\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\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\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\treturn options.every( ( option ) => 'groupLabel' in option );\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 { 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 to this element, first remove the link from the elements inside of it.',\n\t\t'elementor'\n\t),\n\tancestor: __( 'To add a link to this element, first remove the link from its parent container.', 'elementor' ),\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\tseverity=\"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 { booleanPropTypeUtil } from '@elementor/editor-props';\nimport { 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<div style={ { 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</div>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton, 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 { createControl } from '../create-control';\nimport { SizeControl } from './size-control';\n\nexport const GapControl = createControl( ( { label }: { label: string } ) => {\n\tconst {\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tpropType,\n\t\tdisabled: directionDisabled,\n\t} = useBoundProp( layoutDirectionPropTypeUtil );\n\n\tconst stackRef = useRef< HTMLDivElement >( null );\n\n\tconst { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst isLinked = ! directionValue && ! sizeValue ? true : !! sizeValue;\n\n\tconst onLinkToggle = () => {\n\t\tif ( ! isLinked ) {\n\t\t\tsetSizeValue( directionValue?.column?.value ?? null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\tsetDirectionValue( {\n\t\t\trow: value,\n\t\t\tcolumn: value,\n\t\t} );\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\treturn (\n\t\t<PropProvider propType={ propType } value={ directionValue } setValue={ setDirectionValue }>\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<ToggleButton\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>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</ToggleButton>\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 bind={ 'column' } isLinked={ isLinked } anchorRef={ stackRef } />\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 bind={ 'row' } isLinked={ isLinked } anchorRef={ stackRef } />\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\tisLinked,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tisLinked: boolean;\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl anchorRef={ anchorRef } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl anchorRef={ anchorRef } />\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 { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack, styled } from '@elementor/ui';\nimport { type OpenOptions, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\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\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\treturn (\n\t\t<Stack gap={ 1 }>\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>\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<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_UPLOAD ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\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 { useCurrentUserCapabilities } from '@elementor/editor-current-user';\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);\nconst NON_ADMIN_TITLE_TEXT = __( \"Sorry, you can't upload that file yet\", 'elementor' );\nconst NON_ADMIN_CONTENT_TEXT = __(\n\t'This is because this file type may pose a security risk. To upload them anyway, ask the site administrator to enable unfiltered file uploads.',\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 { canUser } = useCurrentUserCapabilities();\n\tconst [ isError, setIsError ] = useState( false );\n\tconst canManageOptions = canUser( 'manage_options' );\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 canManageOptions ? <AdminDialog { ...dialogProps } /> : <NonAdminDialog { ...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\nconst NonAdminDialog = ( { open, onClose }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ NON_ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>{ NON_ADMIN_CONTENT_TEXT }</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } onClick={ () => onClose( false ) } variant=\"contained\" color=\"primary\">\n\t\t\t\t{ __( 'Got it', '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 { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\n\tconst colorLabel = __( 'Color', 'elementor' );\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<PropKeyProvider bind=\"color\">\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>{ colorLabel }</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<ColorControl />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\tcolorPropTypeUtil,\n\ttype PropKey,\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 { PopoverContent } from '../../../components/popover-content';\nimport { AddItemAction, Header, ItemsContainer, UnstableRepeater } from '../../../components/unstable-repeater';\nimport { DisableItemAction } from '../../../components/unstable-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../../components/unstable-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../../components/unstable-repeater/actions/remove-item-action';\nimport { Item } from '../../../components/unstable-repeater/items/item';\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: backgroundValues, setValue } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ backgroundValues } setValue={ setValue }>\n\t\t\t<UnstableRepeater initial={ getInitialBackgroundOverlay() } propTypeUtil={ backgroundOverlayPropTypeUtil }>\n\t\t\t\t<Header label={ __( 'Overlay', 'elementor' ) }>\n\t\t\t\t\t<AddItemAction newItemIndex={ 0 } />\n\t\t\t\t</Header>\n\t\t\t\t<ItemsContainer itemTemplate={ <Item Icon={ ItemIcon } Label={ ItemLabel } Content={ ItemContent } /> }>\n\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t</ItemsContainer>\n\t\t\t</UnstableRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nexport const ItemContent = ( { anchorEl = null, bind }: { anchorEl?: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\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\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={ anchorEl } />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\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 } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemIconGradient value={ value } />;\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: '1em',\n\t\t\t\twidth: '1em',\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\nconst ItemLabel = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\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 } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemLabelGradient value={ value } />;\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\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 * as React from 'react';\nimport { PlusIcon } 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 AddItemAction = ( {\n\tdisabled = false,\n\ttooltip = false,\n\ttooltipContent = null,\n\tnewItemIndex,\n}: {\n\tdisabled?: boolean;\n\ttooltip?: boolean;\n\ttooltipContent?: React.ReactNode;\n\tnewItemIndex?: number;\n} ) => {\n\tconst { addItem } = useRepeaterContext();\n\tconst shouldShowTooltip = tooltip && tooltipContent;\n\n\tconst onClick = () => addItem( { index: newItemIndex } );\n\n\treturn (\n\t\t<ConditionalToolTip content={ tooltipContent } shouldShowTooltip={ !! shouldShowTooltip }>\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\tsx={ { ml: 'auto' } }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonClick={ onClick }\n\t\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</ConditionalToolTip>\n\t);\n};\n\nconst ConditionalToolTip = ( {\n\tchildren,\n\tcontent,\n\tshouldShowTooltip,\n}: React.PropsWithChildren< {\n\tcontent: React.ReactNode;\n\tshouldShowTooltip: boolean;\n} > ) => {\n\treturn shouldShowTooltip ? <Tooltip title={ content }>{ children }</Tooltip> : children;\n};\n","import * as React from 'react';\nimport { createContext, useState } from 'react';\nimport { type PropTypeUtil, type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from '../../../bound-prop-context/use-bound-prop';\nimport { useSyncExternalState } from '../../../hooks/use-sync-external-state';\nimport { type Item } from '../types';\n\ntype SetterFn< T extends PropValue > = ( prevItems: T[] ) => T[];\n\ntype AddItem< T > = { item?: T; index?: number };\n\ntype RepeaterContextType< T extends PropValue > = {\n\tisOpen: boolean;\n\topenItem: number;\n\tsetOpenItem: ( key: number ) => void;\n\titems: Item< T >[];\n\tsetItems: ( items: T[] | SetterFn< T > ) => void;\n\tinitial: T;\n\tuniqueKeys: number[];\n\tsetUniqueKeys: ( keys: number[] ) => void;\n\tisSortable: boolean;\n\tgenerateNextKey: ( source: number[] ) => number;\n\taddItem: ( config?: AddItem< T > ) => void;\n\tupdateItem: ( item: T, index: number ) => void;\n\tremoveItem: ( index: number ) => void;\n\tsortItemsByKeys: ( newKeysOrder: number[] ) => void;\n};\n\nconst RepeaterContext = createContext< RepeaterContextType< PropValue > | null >( null );\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const useRepeaterContext = () => {\n\tconst context = React.useContext( RepeaterContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeaterContext must be used within a RepeaterContextProvider' );\n\t}\n\n\treturn {\n\t\tisOpen: context.isOpen,\n\t\topenItem: context.openItem,\n\t\tsetOpenItem: context.setOpenItem,\n\t\titems: context.items,\n\t\tsetItems: context.setItems,\n\t\tuniqueKeys: context.uniqueKeys,\n\t\tsetUniqueKeys: context.setUniqueKeys,\n\t\tinitial: context.initial,\n\t\tisSortable: context.isSortable,\n\t\tgenerateNextKey: context.generateNextKey,\n\t\tsortItemsByKeys: context.sortItemsByKeys,\n\t\taddItem: context.addItem,\n\t\tupdateItem: context.updateItem,\n\t\tremoveItem: context.removeItem,\n\t};\n};\n\nexport const RepeaterContextProvider = < T extends PropValue = PropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisSortable = true,\n}: React.PropsWithChildren< { initial: T; propTypeUtil: PropTypeUtil< string, T[] >; isSortable?: boolean } > ) => {\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 [ openItem, setOpenItem ] = useState( EMPTY_OPEN_ITEM );\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( items?.map( ( _, index ) => index ) ?? [] );\n\n\tconst isOpen = openItem !== EMPTY_OPEN_ITEM;\n\n\tconst sortItemsByKeys = ( keysOrder: number[] ) => {\n\t\tsetUniqueKeys( keysOrder );\n\t\tsetItems( ( prevItems ) =>\n\t\t\tkeysOrder.map( ( key ) => {\n\t\t\t\tconst index = uniqueKeys.indexOf( key );\n\n\t\t\t\treturn prevItems[ index ];\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst addItem = ( config?: AddItem< T > ) => {\n\t\tconst item = config?.item ?? initial;\n\t\tconst index = config?.index ?? items.length;\n\t\tconst newItems = [ ...items ];\n\n\t\tnewItems.splice( index, 0, item );\n\t\tsetItems( newItems );\n\t\tsetUniqueKeys( newItems.map( ( _, i ) => i ) );\n\n\t\tsetOpenItem( index );\n\t};\n\n\tconst removeItem = ( index: number ) => {\n\t\tsetItems( ( prevItems ) => prevItems.filter( ( _, pos ) => pos !== index ) );\n\t\tsetUniqueKeys( ( prevKeys ) => prevKeys.slice( 0, -1 ) );\n\t};\n\n\tconst updateItem = ( updatedItem: T, index: number ) => {\n\t\tsetItems( ( prevItems ) => prevItems.map( ( item, pos ) => ( pos === index ? updatedItem : item ) ) );\n\t};\n\n\treturn (\n\t\t<RepeaterContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tisOpen,\n\t\t\t\topenItem,\n\t\t\t\tsetOpenItem,\n\t\t\t\titems: ( items ?? [] ) as Item< T >[],\n\t\t\t\tsetItems: setItems as ( items: PropValue[] | SetterFn< PropValue > ) => void,\n\t\t\t\tinitial,\n\t\t\t\tuniqueKeys,\n\t\t\t\tsetUniqueKeys,\n\t\t\t\tisSortable,\n\t\t\t\tgenerateNextKey,\n\t\t\t\tsortItemsByKeys,\n\t\t\t\taddItem: addItem as ( config?: AddItem< PropValue > ) => void,\n\t\t\t\tupdateItem: updateItem as ( item: PropValue, index: number ) => void,\n\t\t\t\tremoveItem,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</RepeaterContext.Provider>\n\t);\n};\n\nconst generateNextKey = ( source: number[] ) => {\n\treturn 1 + Math.max( 0, ...source );\n};\n","import * as React from 'react';\nimport { Stack, Typography } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context/use-bound-prop';\nimport { ControlAdornments } from '../../../control-adornments/control-adornments';\nimport { SlotChildren } from '../../../control-replacements';\nimport { AddItemAction } from '../actions/add-item-action';\nimport { RepeaterHeaderActionsSlot } from '../locations';\n\nexport const Header = ( { label, children }: React.PropsWithChildren< { label: string } > ) => {\n\tconst { value } = useBoundProp();\n\n\treturn (\n\t\t<Stack direction=\"row\" justifyContent=\"start\" alignItems=\"center\" gap={ 1 } sx={ { marginInlineEnd: -0.75 } }>\n\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t{ label }\n\t\t\t</Typography>\n\t\t\t<RepeaterHeaderActionsSlot value={ value } />\n\t\t\t<SlotChildren whitelist={ [ AddItemAction ] as React.FC[] }>{ children }</SlotChildren>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { SortableItem, SortableProvider } from '../../sortable';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { type ItemProps } from '../types';\n\nexport const ItemsContainer = < T extends PropValue >( {\n\titemTemplate,\n\tchildren,\n}: React.PropsWithChildren< { itemTemplate: React.ReactNode } > ) => {\n\tconst { items, uniqueKeys, openItem, isSortable, sortItemsByKeys } = useRepeaterContext();\n\n\tif ( ! itemTemplate ) {\n\t\treturn null;\n\t}\n\n\tconst onChangeOrder = ( newOrder: number[] ) => {\n\t\tsortItemsByKeys( newOrder );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SortableProvider value={ uniqueKeys } onChange={ onChangeOrder }>\n\t\t\t\t{ uniqueKeys?.map( ( key: number, index: number ) => {\n\t\t\t\t\tconst value = items?.[ index ] as T;\n\n\t\t\t\t\tif ( ! value ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\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{ React.isValidElement< React.PropsWithChildren< ItemProps< T > > >( itemTemplate )\n\t\t\t\t\t\t\t\t? React.cloneElement( itemTemplate, {\n\t\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\topenOnMount: key === openItem,\n\t\t\t\t\t\t\t\t\t\tchildren,\n\t\t\t\t\t\t\t\t } )\n\t\t\t\t\t\t\t\t: null }\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 { useState } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\nimport { bindTrigger, UnstableTag } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { SlotChildren } from '../../../control-replacements';\nimport { DisableItemAction } from '../actions/disable-item-action';\nimport { DuplicateItemAction } from '../actions/duplicate-item-action';\nimport { RemoveItemAction } from '../actions/remove-item-action';\nimport { RepeaterItemActionsSlot, RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../locations';\nimport { type ItemProps } from '../types';\nimport { EditItemPopover } from './edit-item-popover';\nimport { usePopover } from './use-popover';\n\ntype AnchorEl = HTMLElement | null;\n\nexport const Item = < T extends PropValue >( {\n\tLabel,\n\tIcon,\n\tContent,\n\tkey,\n\tvalue,\n\tindex,\n\topenOnMount,\n\tchildren,\n}: React.PropsWithChildren< ItemProps< T > > ) => {\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\n\tconst { popoverState, popoverProps, ref, setRef } = usePopover( openOnMount as boolean, () => {} );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tkey={ key }\n\t\t\t\tdisabled={ false }\n\t\t\t\tlabel={\n\t\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t\t<Label value={ value as T } />\n\t\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t\t}\n\t\t\t\tshowActionsOnHover\n\t\t\t\tfullWidth\n\t\t\t\tref={ setRef }\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={\n\t\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t\t<Icon value={ value as T } />\n\t\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t\t}\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<RepeaterItemActionsSlot index={ index ?? -1 } />\n\n\t\t\t\t\t\t<SlotChildren\n\t\t\t\t\t\t\twhitelist={ [ DuplicateItemAction, DisableItemAction, RemoveItemAction ] as React.FC[] }\n\t\t\t\t\t\t\tprops={ { index } }\n\t\t\t\t\t\t\tsorted\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</SlotChildren>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<EditItemPopover anchorRef={ ref } setAnchorEl={ setAnchorEl } popoverProps={ popoverProps }>\n\t\t\t\t<Content anchorEl={ anchorEl } bind={ String( index ) } value={ value as T } />\n\t\t\t</EditItemPopover>\n\t\t</>\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 = ( { index = -1 }: { index?: number } ) => {\n\tconst { items, updateItem } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst propDisabled = items[ index ]?.disabled ?? false;\n\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\n\tconst onClick = () => {\n\t\tconst self = structuredClone( items[ index ] );\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 = ( { index = -1 }: { index?: number } ) => {\n\tconst { items, addItem } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\n\tconst onClick = () => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\n\t\taddItem( { item: newItem, index: index + 1 } );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ duplicateLabel }>\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 = ( { index = -1 }: { index?: number } ) => {\n\tconst { removeItem } = 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 { Box, Popover, type PopoverProps } from '@elementor/ui';\n\ntype AddItemPopoverProps = {\n\tanchorRef: HTMLElement | null;\n\tsetAnchorEl: ( el: HTMLElement | null ) => void;\n\tpopoverProps: Partial< PopoverProps >;\n\tchildren?: React.ReactNode;\n};\n\nexport const EditItemPopover = ( { children, anchorRef, setAnchorEl, popoverProps }: AddItemPopoverProps ) => {\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tref: setAnchorEl,\n\t\t\t\t\tsx: { mt: 0.5, width: anchorRef?.offsetWidth },\n\t\t\t\t},\n\t\t\t} }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tanchorEl={ anchorRef }\n\t\t\t{ ...popoverProps }\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Popover>\n\t);\n};\n","import { useEffect, useState } from 'react';\nimport { bindPopover, type PopoverProps, usePopupState } from '@elementor/ui';\n\nexport const usePopover = ( openOnMount: boolean, onOpen: () => void ) => {\n\tconst [ ref, setRef ] = useState< HTMLElement | null >( null );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst popoverProps: Partial< 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-compiler/react-compiler\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 PropTypeUtil, type PropValue } from '@elementor/editor-props';\n\nimport { SlotChildren } from '../../control-replacements';\nimport { SectionContent } from '../section-content';\nimport { RepeaterContextProvider } from './context/repeater-context';\nimport { Header } from './header/header';\nimport { ItemsContainer } from './items/items-container';\n\nexport const UnstableRepeater = < T extends PropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n}: React.PropsWithChildren< { initial: T; propTypeUtil: PropTypeUtil< string, T[] > } > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<RepeaterContextProvider initial={ initial } propTypeUtil={ propTypeUtil }>\n\t\t\t\t<SlotChildren whitelist={ [ Header, ItemsContainer ] as React.FC[] } sorted>\n\t\t\t\t\t{ children }\n\t\t\t\t</SlotChildren>\n\t\t\t</RepeaterContextProvider>\n\t\t</SectionContent>\n\t);\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 ControlActions from '../../control-actions/control-actions';\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,\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<ControlActions>\n\t\t\t<UnstableGradientBox\n\t\t\t\tsx={ { width: 'auto', padding: 1.5 } }\n\t\t\t\tvalue={ normalizeValue() }\n\t\t\t\tonChange={ handleChange }\n\t\t\t/>\n\t\t</ControlActions>\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 { 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<Select\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( backgroundImageOffsetContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ backgroundPositionOptions.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</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/>\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/>\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 PropKey } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport {\n\ttype ChildControlConfig,\n\tRepeatableControlContext,\n\tuseRepeatableControlContext,\n} from '../hooks/use-repeatable-control-context';\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};\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}: RepeatableControlProps ) => {\n\t\tconst { propTypeUtil: childPropTypeUtil } = 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<Repeater\n\t\t\t\t\t\topenOnAdd\n\t\t\t\t\t\tvalues={ value ?? [] }\n\t\t\t\t\t\tsetValues={ setValue }\n\t\t\t\t\t\tlabel={ repeaterLabel }\n\t\t\t\t\t\tisSortable={ false }\n\t\t\t\t\t\titemSettings={ {\n\t\t\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\t\t\tinitialValues: childPropTypeUtil.create( initialValues || null ),\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t/>\n\t\t\t\t</RepeatableControlContext.Provider>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\nconst ItemContent = ( { bind }: { bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content />\n\t\t</PropKeyProvider>\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\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 ( 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\treturn path.split( '.' ).reduce( ( current: Record< string, unknown >, key ) => {\n\t\tif ( current && typeof current === 'object' ) {\n\t\t\treturn current[ key ] as Record< string, unknown >;\n\t\t}\n\t\treturn {};\n\t}, obj );\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 ItemLabel = ( { value }: { value: Record< string, unknown > } ) => {\n\tconst { placeholder, patternLabel } = useRepeatableControlContext();\n\tconst showPlaceholder = shouldShowPlaceholder( patternLabel, value );\n\tconst label = showPlaceholder ? placeholder : interpolate( patternLabel, value );\n\tconst color = showPlaceholder ? 'text.tertiary' : 'text.primary';\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 { createContext, useContext } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\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};\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 { 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 { TextControl } from './text-control';\n\ntype KeyValueControlProps = {\n\tkeyName?: string;\n\tvalueName?: string;\n\tregexKey?: string;\n\tregexValue?: string;\n\tvalidationErrorMessage?: string;\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: value?.key?.value || '',\n\t\tvalue: value?.value?.value || '',\n\t} );\n\n\tconst keyLabel = props.keyName || __( 'Key', 'elementor' );\n\tconst valueLabel = props.valueName || __( 'Value', 'elementor' );\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 inputValue={ sessionState.key } error={ !! keyError } />\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={ 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/>\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","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 startIcon={ <LetterXIcon fontSize={ 'tiny' } /> } />\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 startIcon={ <LetterYIcon fontSize={ 'tiny' } /> } />\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 { transformPropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { Repeater } from '../../components/repeater';\nimport { createControl } from '../../create-control';\nimport { TransformContent } from './transform-content';\nimport { TransformIcon } from './transform-icon';\nimport { TransformLabel } from './transform-label';\nimport { initialTransformValue } from './types';\n\nexport const TransformRepeaterControl = createControl( () => {\n\tconst { propType, value: transformValues, setValue, disabled } = useBoundProp( transformPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ transformValues } setValue={ setValue }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ transformValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Transform', 'elementor' ) }\n\t\t\t\tshowDuplicate={ false }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: TransformIcon,\n\t\t\t\t\tLabel: TransformLabel,\n\t\t\t\t\tContent: TransformContent,\n\t\t\t\t\tinitialValues: initialTransformValue,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropKey } from '@elementor/editor-props';\nimport { Box, Tab, TabPanel, Tabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider } from '../../bound-prop-context';\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 './types';\nimport { useTransformTabsHistory } from './use-transform-tabs-history';\n\nexport const TransformContent = ( { bind }: { anchorEl?: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = () => {\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 { 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 { TransformFunctionKeys } from '../types';\nimport { AxisRow } from './axis-row';\n\nconst moveAxisControls: { label: string; bindValue: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Move X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Move Y', 'elementor' ),\n\t\tbindValue: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Move Z', 'elementor' ),\n\t\tbindValue: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Move = () => {\n\tconst context = useBoundProp( moveTransformPropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( 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 ) => (\n\t\t\t\t\t\t<AxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } />\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 {\n\tnumberPropTypeUtil,\n\trotateTransformPropTypeUtil,\n\tscaleTransformPropTypeUtil,\n\tskewTransformPropTypeUtil,\n\ttype TransformItemPropValue,\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: TransformItemPropValue = {\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 { type RefObject } from 'react';\nimport * as React from 'react';\nimport { type AngleUnit } from '@elementor/editor-controls';\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 { SizeControl } from '../../size-control';\n\ntype TransformAxisRowProps = {\n\tlabel: string;\n\tbindValue: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tunits?: AngleUnit[];\n};\n\nexport const AxisRow = ( { label, bindValue, startIcon, anchorRef, units }: TransformAxisRowProps ) => {\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={ bindValue }>\n\t\t\t\t\t\t<SizeControl anchorRef={ anchorRef } startIcon={ startIcon } units={ units } variant=\"angle\" />\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 { 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 '../types';\nimport { AxisRow } from './axis-row';\n\nconst rotateAxisControls: { label: string; bindValue: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Rotate X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <Arrow360Icon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Y', 'elementor' ),\n\t\tbindValue: '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\tbindValue: '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 rowRef = useRef< HTMLDivElement >( 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 ) => (\n\t\t\t\t\t\t<AxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } units={ rotateUnits } />\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 { 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 '../types';\nimport { ScaleAxisRow } from './scale-axis-row';\n\nconst scaleAxisControls: { label: string; bindValue: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Scale X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Y', 'elementor' ),\n\t\tbindValue: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Z', 'elementor' ),\n\t\tbindValue: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Scale = () => {\n\tconst context = useBoundProp( scaleTransformPropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( 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 ) => (\n\t\t\t\t\t\t<ScaleAxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } />\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\tbindValue: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\nexport const ScaleAxisRow = ( { label, bindValue, 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={ bindValue }>\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 { 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 '../types';\nimport { AxisRow } from './axis-row';\n\nconst skewAxisControls: { label: string; bindValue: 'x' | 'y'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Skew X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Skew Y', 'elementor' ),\n\t\tbindValue: '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 rowRef = useRef< HTMLDivElement >( 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 ) => (\n\t\t\t\t\t\t<AxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } units={ skewUnits } />\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 TransformItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { type TransformFunction, TransformFunctionKeys } from './types';\n\ntype InitialTransformValues = {\n\tmove: TransformItemPropValue[ 'value' ];\n\tscale: TransformItemPropValue[ 'value' ];\n\trotate: TransformItemPropValue[ 'value' ];\n\tskew: TransformItemPropValue[ '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 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: TransformItemPropValue[ '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\treturn {\n\t\tgetTabProps,\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { type TransformItemPropValue } from '@elementor/editor-props';\nimport { ArrowsMaximizeIcon, ExpandIcon, RotateClockwise2Icon, SkewXIcon } from '@elementor/icons';\n\nimport { TransformFunctionKeys } from './types';\n\nexport const TransformIcon = ( { value }: { value: TransformItemPropValue } ) => {\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 <ExpandIcon 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 { TransformItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { defaultValues, TransformFunctionKeys } from './types';\n\nconst transformMoveValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => {\n\t\t\tconst size = axis?.value?.size ?? defaultValues.move.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaultValues.move.unit;\n\n\t\t\treturn `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\n\nconst transformScaleValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => axis?.value || defaultValues.scale )\n\t\t.join( ', ' );\n\nconst transformRotateValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => {\n\t\t\tconst size = axis?.value?.size ?? defaultValues.rotate.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaultValues.rotate.unit;\n\n\t\t\treturn `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\nconst transformSkewValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => {\n\t\t\tconst size = axis?.value?.size ?? defaultValues.skew.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaultValues.skew.unit;\n\n\t\t\treturn `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\n\nexport const TransformLabel = ( props: { value: TransformItemPropValue } ) => {\n\tconst { $$type, value } = props.value;\n\tswitch ( $$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <Label label={ __( 'Move', 'elementor' ) } value={ transformMoveValue( value ) } />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <Label label={ __( 'Scale', 'elementor' ) } value={ transformScaleValue( value ) } />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <Label label={ __( 'Rotate', 'elementor' ) } value={ transformRotateValue( value ) } />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <Label label={ __( 'Skew', 'elementor' ) } value={ transformSkewValue( value ) } />;\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 { selectionSizePropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { createControl } from '../../create-control';\nimport { RepeatableControl } from '../repeatable-control';\nimport { SelectionSizeControl } from '../selection-size-control';\nimport { initialTransitionValue, transitionProperties } from './data';\nimport { TransitionSelector } from './transition-selector';\n\nconst DURATION_CONFIG = {\n\tvariant: 'time',\n\tunits: [ 's', 'ms' ],\n\tdefaultUnit: 'ms',\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 = () => {\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},\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\nfunction getChildControlConfig() {\n\treturn {\n\t\tpropTypeUtil: selectionSizePropTypeUtil,\n\t\tcomponent: SelectionSizeControl as unknown as React.ComponentType< Record< string, unknown > >,\n\t\tprops: getSelectionSizeProps(),\n\t};\n}\n\nexport const TransitionRepeaterControl = createControl( () => {\n\treturn (\n\t\t<RepeatableControl\n\t\t\tlabel={ __( 'Transitions', 'elementor' ) }\n\t\t\trepeaterLabel={ __( 'Transitions', 'elementor' ) }\n\t\t\tpatternLabel=\"${value.selection.value.key.value}: ${value.size.value.size}${value.size.value.unit}\"\n\t\t\tplaceholder={ __( 'Empty Transition', 'elementor' ) }\n\t\t\tshowDuplicate={ false }\n\t\t\tshowToggle={ true }\n\t\t\tinitialValues={ initialTransitionValue }\n\t\t\tchildControlConfig={ getChildControlConfig() }\n\t\t\tpropKey=\"transition\"\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 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>{ 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/>\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","export type TransitionProperty = {\n\tlabel: string;\n\tvalue: string;\n};\n\nexport type TransitionCategory = {\n\tlabel: string;\n\ttype: 'category';\n\tproperties: TransitionProperty[];\n};\n\nexport const initialTransitionValue = {\n\tselection: {\n\t\t$$type: 'key-value',\n\t\tvalue: {\n\t\t\tkey: { value: 'All properties', $$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\nexport const transitionProperties: TransitionCategory[] = [\n\t{\n\t\tlabel: 'Common',\n\t\ttype: 'category',\n\t\tproperties: [ { label: 'All properties', value: 'all' } ],\n\t},\n];\n\nexport const transitionsItemsList = transitionProperties.map( ( category ) => ( {\n\tlabel: category.label,\n\titems: category.properties.map( ( property ) => property.label ),\n} ) );\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { keyValuePropTypeUtil } from '@elementor/editor-props';\nimport { ChevronDownIcon, VariationsIcon } from '@elementor/icons';\nimport { 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 { 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 const TransitionSelector = () => {\n\tconst { value, setValue } = useBoundProp( keyValuePropTypeUtil );\n\tconst {\n\t\tvalue: { value: transitionValue },\n\t\tkey: { value: transitionLabel },\n\t} = value;\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst popoverState = usePopupState( { variant: 'popover' } );\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<UnstableTag\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ transitionLabel }\n\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tfullWidth\n\t\t\t/>\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={ transitionsItemsList }\n\t\t\t\t\tselectedItem={ transitionValue }\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/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { transformPropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { AddItemAction, Header, Item, ItemsContainer, UnstableRepeater } from '../../components/unstable-repeater';\nimport { DisableItemAction } from '../../components/unstable-repeater/actions/disable-item-action';\nimport { RemoveItemAction } from '../../components/unstable-repeater/actions/remove-item-action';\nimport { createControl } from '../../create-control';\nimport { TransformContent } from '../transform-control/transform-content';\nimport { TransformIcon } from '../transform-control/transform-icon';\nimport { TransformLabel } from '../transform-control/transform-label';\nimport { initialTransformValue } from '../transform-control/types';\n\nexport const UnstableTransformRepeaterControl = createControl( () => {\n\tconst { propType, value: transformValues, setValue } = useBoundProp( transformPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ transformValues } setValue={ setValue }>\n\t\t\t<UnstableRepeater initial={ initialTransformValue } propTypeUtil={ transformPropTypeUtil }>\n\t\t\t\t<Header label={ __( 'Transform', 'elementor' ) }>\n\t\t\t\t\t<AddItemAction />\n\t\t\t\t</Header>\n\t\t\t\t<ItemsContainer\n\t\t\t\t\titemTemplate={\n\t\t\t\t\t\t<Item Icon={ TransformIcon } Label={ TransformLabel } Content={ TransformContent } />\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t</ItemsContainer>\n\t\t\t</UnstableRepeater>\n\t\t</PropProvider>\n\t);\n} );\n"],"mappings":"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","names":["React","Stack","__","React","createContext","useContext","createContext","useContext","value","value","React","React","React","createContext","useContext","createContext","useContext","Control","React","React","React","createContext","useContext","useState","React","createContext","useContext","items","items","MenuItem","React","Stack","__","React","stringPropTypeUtil","stringPropTypeUtil","React","stringPropTypeUtil","TextField","stringPropTypeUtil","TextField","React","useEffect","useState","sizePropTypeUtil","usePopupState","React","InputAdornment","React","MenuListItem","Button","styled","TextField","TextField","MenuListItem","styled","Button","units","InputAdornment","React","useRef","MathFunctionIcon","TextField","__","useEffect","useState","units","sizePropTypeUtil","useState","usePopupState","useEffect","React","forwardRef","useRef","Grid","__","React","Stack","React","useRef","__","forwardRef","Grid","React","useRef","FormLabel","Grid","__","React","Stack","forwardRef","React","Grid","React","useEffect","useState","bindPopover","bindTrigger","Box","Popover","Stack","Typography","usePopupState","__","React","React","createContext","useContext","Context","items","items","React","styled","SIZE","useState","items","generateNextKey","Stack","Typography","__","bindTrigger","Popover","Box","usePopupState","bindPopover","useEffect","__","useRef","Control","Grid","FormLabel","React","useRef","Box","Grid","__","React","useRef","Grid","__","__","units","useRef","Grid","React","Box","__","ItemIcon","ItemLabel","ItemContent","Box","Grid","Content","units","useRef","React","stringPropTypeUtil","React","useEffect","useMemo","useRef","useState","Menu","styled","Typography","React","Tooltip","styled","items","useMemo","Content","useState","useRef","Menu","Typography","useEffect","stringPropTypeUtil","React","InputAdornment","TextField","RESTRICTED_INPUT_KEYS","TextField","InputAdornment","React","useId","useRef","sizePropTypeUtil","bindPopover","Grid","Popover","Stack","ToggleButton","Tooltip","usePopupState","__","React","Stack","Stack","items","useId","usePopupState","sizePropTypeUtil","useRef","Grid","Stack","__","Tooltip","ToggleButton","Popover","bindPopover","React","useRef","sizePropTypeUtil","Grid","Stack","ToggleButton","Tooltip","__","sizePropTypeUtil","useRef","__","Stack","Tooltip","ToggleButton","Grid","Control","React","stringPropTypeUtil","ChevronDownIcon","bindPopover","bindTrigger","Popover","UnstableTag","usePopupState","__","React","useEffect","useState","PopoverHeader","Box","Divider","Stack","Typography","__","useState","PopoverHeader","__","Divider","Stack","Box","Typography","useEffect","stringPropTypeUtil","usePopupState","UnstableTag","ChevronDownIcon","bindTrigger","Popover","bindPopover","__","React","TextField","TextField","React","useMemo","useState","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","httpService","PlusIcon","Grid","IconButton","Stack","debounce","__","React","forwardRef","XIcon","Box","IconButton","InputAdornment","TextField","React","Box","Link","__","React","SIZE","useState","__","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","useMemo","debounce","Stack","Grid","IconButton","PlusIcon","httpService","React","useRef","sizePropTypeUtil","DetachIcon","LinkIcon","Grid","Stack","ToggleButton","Tooltip","__","useRef","sizePropTypeUtil","LinkIcon","DetachIcon","__","Stack","Tooltip","ToggleButton","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","PlusIcon","IconButton","Tooltip","__","React","createContext","useState","createContext","EMPTY_OPEN_ITEM","items","useState","SIZE","IconButton","__","PlusIcon","Tooltip","React","Stack","Typography","Stack","Typography","React","items","React","useState","bindTrigger","UnstableTag","__","React","EyeIcon","EyeOffIcon","IconButton","Tooltip","__","SIZE","items","__","Tooltip","IconButton","EyeOffIcon","EyeIcon","React","CopyIcon","IconButton","Tooltip","__","SIZE","items","__","Tooltip","IconButton","CopyIcon","React","XIcon","IconButton","Tooltip","__","SIZE","__","Tooltip","IconButton","XIcon","React","Box","Popover","useEffect","useState","bindPopover","usePopupState","usePopover","Label","Content","useState","usePopover","UnstableTag","__","bindTrigger","React","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","ItemContent","Content","Box","CardMedia","backgroundImageOverlayPropTypeUtil","styled","UnstableColorIndicator","useWpMediaAttachment","__","Grid","React","useMemo","Box","createContext","useContext","useMemo","ItemIcon","ItemLabel","ItemContent","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","__","React","Box","Tab","TabPanel","Tabs","__","React","useRef","Grid","__","numberPropTypeUtil","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","useTabs","useRef","Content","Box","Tabs","__","Tab","TabPanel","React","ArrowsMaximizeIcon","ArrowsMaximizeIcon","React","Box","__","Label","__","Box","__","React","selectionSizePropTypeUtil","__","React","useMemo","useRef","Grid","useRef","useMemo","Grid","React","useRef","keyValuePropTypeUtil","ChevronDownIcon","bindPopover","bindTrigger","Box","Popover","UnstableTag","usePopupState","__","keyValuePropTypeUtil","useRef","usePopupState","Box","UnstableTag","ChevronDownIcon","bindTrigger","Popover","bindPopover","__","__","selectionSizePropTypeUtil","React","transformPropTypeUtil","__","transformPropTypeUtil","__"]}
|