@elementor/editor-controls 1.2.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +66 -0
- package/dist/index.d.mts +20 -8
- package/dist/index.d.ts +20 -8
- package/dist/index.js +1092 -714
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +937 -549
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
- package/src/bound-prop-context/prop-context.tsx +3 -3
- package/src/bound-prop-context/prop-key-context.tsx +1 -0
- package/src/bound-prop-context/use-bound-prop.ts +5 -1
- package/src/components/font-family-selector.tsx +54 -56
- package/src/components/repeater.tsx +22 -11
- package/src/components/size-control/size-input.tsx +4 -4
- package/src/components/text-field-popover.tsx +19 -18
- package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +3 -15
- package/src/controls/box-shadow-repeater-control.tsx +1 -1
- package/src/controls/color-control.tsx +12 -1
- package/src/controls/equal-unequal-sizes-control.tsx +1 -1
- package/src/controls/filter-control/drop-shadow-item-content.tsx +69 -0
- package/src/controls/filter-control/drop-shadow-item-label.tsx +20 -0
- package/src/controls/filter-repeater-control.tsx +108 -21
- package/src/controls/font-family-control/font-family-control.tsx +14 -2
- package/src/controls/image-control.tsx +45 -16
- package/src/controls/key-value-control.tsx +57 -46
- package/src/controls/link-control.tsx +25 -20
- package/src/controls/linked-dimensions-control.tsx +1 -1
- package/src/controls/repeatable-control.tsx +100 -21
- package/src/controls/select-control.tsx +22 -2
- package/src/controls/size-control.tsx +25 -12
- package/src/controls/switch-control.tsx +9 -1
- package/src/controls/text-control.tsx +33 -18
- package/src/controls/transform-control/functions/axis-row.tsx +32 -0
- package/src/controls/transform-control/functions/move.tsx +44 -0
- package/src/controls/transform-control/transform-content.tsx +36 -0
- package/src/controls/transform-control/transform-icon.tsx +12 -0
- package/src/controls/transform-control/transform-label.tsx +27 -0
- package/src/controls/transform-control/transform-repeater-control.tsx +42 -0
- package/src/hooks/use-repeatable-control-context.ts +6 -1
- package/src/index.ts +1 -0
- package/src/utils/size-control.ts +4 -2
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/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/control-form-label.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/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/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/switch-control.tsx","../src/controls/repeatable-control.tsx","../src/hooks/use-repeatable-control-context.ts","../src/controls/key-value-control.tsx","../src/controls/position-control.tsx"],"sourcesContent":["import * as React from 'react';\nimport { imagePropTypeUtil } from '@elementor/editor-props';\nimport { Stack } from '@elementor/ui';\nimport { type MediaType } from '@elementor/wp-media';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\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\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst mediaTypes: MediaType[] = allowSvgUpload ? [ 'image', 'svg' ] : [ 'image' ];\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t{ [ 'all', 'media' ].includes( showMode ) ? (\n\t\t\t\t\t<PropKeyProvider bind={ 'src' }>\n\t\t\t\t\t\t<ImageMediaControl mediaTypes={ mediaTypes } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t) : null }\n\t\t\t\t{ [ 'all', 'sizes' ].includes( showMode ) ? (\n\t\t\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t\t\t<SelectControl options={ sizes } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t) : null }\n\t\t\t</Stack>\n\t\t</PropProvider>\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\tdisabled?: boolean;\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\tdisabled,\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\tdisabled,\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\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\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\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn propKeyContext;\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};\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 { 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 } 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 } = 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\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 { 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( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\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\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 { 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 { defaultUnits, type ExtendedOption, isUnitExtendedOption, type Unit } 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[];\n\textendedOptions?: ExtendedOption[];\n\tdisableCustom?: boolean;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tdefaultUnit?: Unit;\n};\n\ntype State = {\n\tnumeric: number;\n\tcustom: string;\n\tunit: Unit | 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 ?? props.defaultUnit ?? DEFAULT_UNIT,\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 = DEFAULT_UNIT } = extractValueFromState( state ) || {};\n\n\tconst handleUnitChange = ( newUnit: Unit | 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, defaultUnit );\n\t\tconst currentUnit = isUnitExtendedOption( state.unit ) ? 'custom' : 'numeric';\n\t\tconst mergedStates = { ...state, [ currentUnit ]: newState[ currentUnit ] };\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 | 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( sizeValue: SizeValue | null, defaultUnit: Unit ): 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 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\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;\nconst defaultExtendedOptions = [ 'auto', 'custom' ] as const;\n\nexport type Unit = ( typeof defaultUnits )[ number ];\n\nexport type ExtendedOption = ( typeof defaultExtendedOptions )[ number ];\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 } 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, Paper, 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\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<Paper\n\t\t\t\tsx={ {\n\t\t\t\t\twidth: anchorRef.current?.offsetWidth + 'px',\n\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\tp: 1.5,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<TextField\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\tautoFocus: true,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Paper>\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 * 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 { 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, disabled } = useBoundProp( propTypeUtil );\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\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},\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 } disabled={ 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 } 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;\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: React.ComponentType< {\n\t\t\tanchorEl: AnchorEl;\n\t\t\tbind: PropKey;\n\t\t\tvalue: T;\n\t\t} >;\n\t};\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tisSortable?: boolean;\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}: 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>\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 = {\n\tlabel: React.ReactNode;\n\tpropDisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( { anchorEl }: { anchorEl: AnchorEl } ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tdisabled?: boolean;\n};\n\nconst RepeaterItem = ( {\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}: RepeaterItemProps ) => {\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 } ) }</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\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\ttype PropKey,\n\ttype PropTypeUtil,\n\ttype SizePropValue,\n} 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 { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { defaultUnits } from '../utils/size-control';\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\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};\n\nconst filterKeys = Object.keys( filterConfig ) as FilterType[];\n\nconst singleSizeFilterNames = filterKeys.filter( ( name ) => {\n\tconst filter = filterConfig[ name as FilterType ].defaultValue;\n\n\treturn filter[ filter.$$type ].$$type === 'size';\n} ) as FilterType[];\n\nexport const FilterRepeaterControl = createControl( () => {\n\tconst { propType, value: filterValues, setValue, disabled } = useBoundProp( filterPropTypeUtil );\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={ __( 'Filter', '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: {\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 = ( props: { value: FilterItemPropValue } ) => {\n\tconst { $$type } = props.value;\n\n\treturn singleSizeFilterNames.includes( $$type ) && <SingleSizeItemLabel value={ props.value } />;\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 = ( { bind }: { bind: PropKey } ) => {\n\tconst { value: filterValues, setValue } = useBoundProp( 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 } />\n\t\t\t</PopoverContent>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { filterType }: { filterType: FilterType } ) => {\n\treturn singleSizeFilterNames.includes( filterType ) && <SingleSizeItemContent filterType={ filterType } />;\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\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 } />\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 { 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\tdisabled={ 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\tdisabled={ 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 } = useBoundProp( stringPropTypeUtil );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\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 }\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/>\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 { PopoverHeader, PopoverMenuList, PopoverScrollableContent, 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<Stack>\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<PopoverScrollableContent width={ sectionWidth }>\n\t\t\t\t{ filteredFontFamilies.length > 0 ? (\n\t\t\t\t\t<FontList\n\t\t\t\t\t\tfontListItems={ filteredFontFamilies }\n\t\t\t\t\t\tsetFontFamily={ onFontFamilyChange }\n\t\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\t\tfontFamily={ fontFamily }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<Stack\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\t\theight=\"100%\"\n\t\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\t\toverflow={ 'hidden' }\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextIcon fontSize=\"large\" />\n\t\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span>“</span>\n\t\t\t\t\t\t\t\t<span style={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }>\n\t\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<span>”.</span>\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</PopoverScrollableContent>\n\t\t</Stack>\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 { 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';\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<SwitchControl disabled={ propContext.disabled || ! value } />\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\n// @TODO Should be refactored in ED-16323\nconst SwitchControl = ( { disabled }: { disabled: boolean } ) => {\n\tconst { value = false, setValue } = useBoundProp( booleanPropTypeUtil );\n\n\tconst onClick = () => {\n\t\tsetValue( ! value );\n\t};\n\n\tconst inputProps = disabled\n\t\t? {\n\t\t\t\tstyle: {\n\t\t\t\t\topacity: 0,\n\t\t\t\t},\n\t\t }\n\t\t: {};\n\n\treturn (\n\t\t<Grid container alignItems=\"center\" flexWrap=\"nowrap\" justifyContent=\"space-between\">\n\t\t\t<Grid item>\n\t\t\t\t<ControlFormLabel>{ __( 'Open in a new tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item sx={ { marginInlineEnd: -1 } }>\n\t\t\t\t<Switch checked={ value } onClick={ onClick } disabled={ disabled } inputProps={ inputProps } />\n\t\t\t</Grid>\n\t\t</Grid>\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 { 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, Grid, 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 { ControlFormLabel } from '../../../components/control-form-label';\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 } disabled={ 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<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Resolution', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t\t\t<ImageControl sizes={ backgroundResolutionOptions } />\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</Grid>\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 { 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 checked={ !! value } onChange={ handleChange } size=\"small\" disabled={ disabled } />\n\t\t</div>\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\n/* eslint-disable */\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\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 { propType, value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\t\tconst ItemLabel = ( { value: itemValue }: { value: any } ) => {\n\t\t\tconst pattern = patternLabel || '';\n\t\t\tconst finalLabel = interpolate( pattern, itemValue.value );\n\n\t\t\tif ( finalLabel ) {\n\t\t\t\treturn <span>{ finalLabel }</span>;\n\t\t\t}\n\n\t\t\treturn (\n\t\t\t\t<Box component=\"span\" color=\"text.tertiary\">\n\t\t\t\t\t{ placeholder }\n\t\t\t\t</Box>\n\t\t\t);\n\t\t};\n\n\t\treturn (\n\t\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t\t<RepeatableControlContext.Provider value={ childControlConfig }>\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: object ) => {\n\t//remove it to be generic\n\tif ( Object.values( data ).some( ( value ) => value.value === '' || value === '' ) ) {\n\t\treturn null;\n\t}\n\treturn new Function( ...Object.keys( data ), `return \\`${ template }\\`;` )( ...Object.values( data ) );\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\nconst RepeatableControlContext = createContext< ChildControlConfig | 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 { type ChangeEvent, useMemo, useState } from 'react';\nimport { keyValuePropTypeUtil } from '@elementor/editor-props';\nimport { FormHelperText, FormLabel, Grid, TextField } from '@elementor/ui';\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 FieldType = 'key' | 'value';\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 } = useBoundProp( keyValuePropTypeUtil );\n\tconst [ keyError, setKeyError ] = useState< string | null >( null );\n\tconst [ valueError, setValueError ] = useState< string | null >( null );\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 ? null : errMsg );\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 ? null : errMsg );\n\t\t\treturn isValid;\n\t\t}\n\t\treturn true;\n\t};\n\n\tconst handleChange = ( event: ChangeEvent< HTMLInputElement >, fieldType: FieldType ) => {\n\t\tconst newValue = event.target.value;\n\n\t\tsetSessionState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ fieldType ]: newValue,\n\t\t} ) );\n\n\t\tif ( validate( newValue, fieldType ) ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: {\n\t\t\t\t\tvalue: newValue,\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t},\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\tconst isKeyInvalid = keyError !== null;\n\tconst isValueInvalid = valueError !== null;\n\n\treturn (\n\t\t<ControlActions>\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<TextField\n\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\tautoFocus\n\t\t\t\t\t\tsx={ { pt: 1 } }\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tvalue={ sessionState.key }\n\t\t\t\t\t\tonChange={ ( e: ChangeEvent< HTMLInputElement > ) => handleChange( e, 'key' ) }\n\t\t\t\t\t\terror={ isKeyInvalid }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isKeyInvalid && <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<TextField\n\t\t\t\t\t\tsx={ { pt: 1 } }\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tvalue={ sessionState.value }\n\t\t\t\t\t\tonChange={ ( e: ChangeEvent< HTMLInputElement > ) => handleChange( e, 'value' ) }\n\t\t\t\t\t\tdisabled={ isKeyInvalid }\n\t\t\t\t\t\terror={ isValueInvalid }\n\t\t\t\t\t/>\n\t\t\t\t\t{ isValueInvalid && <FormHelperText error>{ valueError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</ControlActions>\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"],"mappings":"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","names":["React","Stack","React","createContext","useContext","createContext","useContext","value","value","React","React","createContext","useContext","createContext","useContext","Control","React","React","React","createContext","useContext","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","__","React","React","Stack","React","useRef","__","forwardRef","React","useRef","FormLabel","Grid","__","React","Stack","forwardRef","React","Grid","React","useEffect","useState","bindPopover","bindTrigger","Box","Popover","Stack","usePopupState","__","React","React","createContext","useContext","Context","React","styled","useState","Stack","__","bindTrigger","Popover","Box","usePopupState","bindPopover","useEffect","__","useRef","Control","Grid","FormLabel","React","useRef","MenuListItem","Box","Grid","Select","__","React","Stack","Stack","__","ItemIcon","ItemLabel","ItemContent","Box","Grid","Select","MenuListItem","Content","units","useRef","React","stringPropTypeUtil","React","useEffect","useMemo","useRef","useState","Menu","styled","Typography","React","Tooltip","styled","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","__","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","Stack","__","Divider","Box","Typography","useEffect","SIZE","stringPropTypeUtil","usePopupState","UnstableTag","ChevronDownIcon","bindTrigger","Popover","bindPopover","React","TextField","TextField","React","useMemo","useState","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","httpService","PlusIcon","Box","Grid","IconButton","Stack","debounce","__","React","forwardRef","XIcon","Box","IconButton","InputAdornment","TextField","SIZE","__","useState","numberPropTypeUtil","stringPropTypeUtil","urlPropTypeUtil","useMemo","debounce","Stack","IconButton","PlusIcon","Grid","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","Grid","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","Grid","styled","UnstableColorIndicator","useWpMediaAttachment","isExperimentActive","__","Grid","React","booleanPropTypeUtil","Switch","SwitchControl","booleanPropTypeUtil","Switch","React","useMemo","Box","createContext","useContext","useMemo","ItemLabel","Box","ItemIcon","ItemContent","Content","React","useMemo","useState","FormLabel","Grid","TextField","__","useState","__","useMemo","Grid","FormLabel","TextField","React","useMemo","stringPropTypeUtil","MenuListItem","isExperimentActive","LetterXIcon","LetterYIcon","Grid","Select","__","__","stringPropTypeUtil","isExperimentActive","useMemo","Grid","Select","MenuListItem","LetterXIcon","LetterYIcon"]}
|
|
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","__"]}
|