@elementor/editor-controls 0.7.0 → 0.9.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 +48 -0
- package/dist/index.d.mts +37 -25
- package/dist/index.d.ts +37 -25
- package/dist/index.js +558 -274
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +529 -239
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -6
- package/src/bound-prop-context/prop-key-context.tsx +1 -1
- package/src/components/repeater.tsx +10 -4
- package/src/components/text-field-inner-selection.tsx +2 -2
- package/src/control-actions/control-actions-context.tsx +1 -1
- package/src/control-actions/control-actions.tsx +1 -1
- package/src/controls/autocomplete-control.tsx +99 -80
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx +3 -3
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx +72 -8
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx +1 -1
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx +71 -11
- package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +107 -33
- package/src/controls/box-shadow-repeater-control.tsx +1 -1
- package/src/controls/image-control.tsx +26 -22
- package/src/controls/image-media-control.tsx +1 -1
- package/src/controls/link-control.tsx +134 -17
- package/src/controls/size-control.tsx +1 -1
- package/src/controls/stroke-control.tsx +1 -1
- package/src/controls/svg-media-control.tsx +107 -0
- package/src/create-control-replacement.tsx +2 -2
- package/src/env.ts +5 -0
- package/src/index.ts +2 -1
- package/src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-resolution.tsx +0 -27
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../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-label.tsx","../src/create-control.tsx","../src/create-control-replacement.tsx","../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/autocomplete-control.tsx","../src/controls/text-control.tsx","../src/controls/text-area-control.tsx","../src/controls/size-control.tsx","../src/components/text-field-inner-selection.tsx","../src/hooks/use-sync-external-state.tsx","../src/controls/stroke-control.tsx","../src/controls/color-control.tsx","../src/controls/box-shadow-repeater-control.tsx","../src/components/repeater.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/controls/linked-dimensions-control.tsx","../src/controls/font-family-control.tsx","../src/hooks/use-filtered-font-families.ts","../src/controls/url-control.tsx","../src/controls/link-control.tsx","../src/controls/gap-control.tsx","../src/controls/background-control/background-control.tsx","../src/controls/background-control/background-overlay/background-overlay-repeater-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-resolution.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx"],"sourcesContent":["// control types\nexport { ImageControl } from './controls/image-control';\nexport { AutocompleteControl } from './controls/autocomplete-control';\nexport { TextControl } from './controls/text-control';\nexport { TextAreaControl } from './controls/text-area-control';\nexport { SizeControl } from './controls/size-control';\nexport { StrokeControl } from './controls/stroke-control';\nexport { BoxShadowRepeaterControl } from './controls/box-shadow-repeater-control';\nexport { SelectControl } from './controls/select-control';\nexport { ColorControl } from './controls/color-control';\nexport { ToggleControl } from './controls/toggle-control';\nexport { NumberControl } from './controls/number-control';\nexport { EqualUnequalSizesControl } from './controls/equal-unequal-sizes-control';\nexport { LinkedDimensionsControl } from './controls/linked-dimensions-control';\nexport { FontFamilyControl } from './controls/font-family-control';\nexport { UrlControl } from './controls/url-control';\nexport { LinkControl } from './controls/link-control';\nexport { GapControl } from './controls/gap-control';\nexport { BackgroundControl } from './controls/background-control/background-control';\n\n// components\nexport { ControlLabel } from './components/control-label';\nexport { ControlToggleButtonGroup } from './components/control-toggle-button-group';\n\n// types\nexport type { ControlComponent } from './create-control';\nexport type { ToggleButtonGroupItem } from './components/control-toggle-button-group';\nexport type { EqualUnequalItems } from './controls/equal-unequal-sizes-control';\nexport type { ControlActionsItems } from './control-actions/control-actions-context';\nexport type { PropProviderProps } from './bound-prop-context';\nexport type { SetValue } from './bound-prop-context/prop-context';\n\n// providers\nexport { createControlReplacement, ControlReplacementProvider } from './create-control-replacement';\nexport { ControlActionsProvider, useControlActions } from './control-actions/control-actions-context';\nexport { useBoundProp, PropProvider, PropKeyProvider } from './bound-prop-context';\n\n// hooks\nexport { useSyncExternalState } from './hooks/use-sync-external-state';\n","import * as React from 'react';\nimport { imagePropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { ImageMediaControl } from './image-media-control';\nimport { SelectControl } from './select-control';\n\nexport type ImageControlProps = {\n\tsizes: { label: string; value: string }[];\n};\n\nexport const ImageControl = createControl( ( props: ImageControlProps ) => {\n\tconst propContext = useBoundProp( imagePropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<PropKeyProvider bind={ 'src' }>\n\t\t\t\t\t<ImageMediaControl />\n\t\t\t\t</PropKeyProvider>\n\t\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel> { __( 'Image Resolution', 'elementor' ) }</ControlLabel>\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<SelectControl options={ props.sizes } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropKeyProvider>\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};\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}: 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} }\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\tpath: PropKey[];\n};\n\nexport const 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\n\tconst propType = context.propType.shape[ bind ];\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\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 {\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\tpath: PropKey[];\n};\n\nexport function useBoundProp< T extends PropValue = PropValue >(): PropKeyContextValue< T, PropType >;\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\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 ( 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\n\treturn {\n\t\t...propKeyContext,\n\t\tsetValue,\n\t\tvalue,\n\t\tpropType,\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 { Typography } from '@elementor/ui';\n\nexport const ControlLabel = ( { children }: { children: React.ReactNode } ) => {\n\treturn (\n\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t{ children }\n\t\t</Typography>\n\t);\n};\n","import * as React from 'react';\nimport { type ComponentProps, type ComponentType } from 'react';\nimport { ErrorBoundary } from '@elementor/ui';\n\nimport { useControlReplacement } from './create-control-replacement';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\ntype Options = {\n\tsupportsReplacements?: boolean;\n};\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 >(\n\tComponent: T,\n\t{ supportsReplacements = true }: Options = {}\n) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst ControlReplacement = useControlReplacement();\n\n\t\tif ( ControlReplacement && supportsReplacements ) {\n\t\t\treturn (\n\t\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t\t<ControlReplacement { ...props } />\n\t\t\t\t</ErrorBoundary>\n\t\t\t);\n\t\t}\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, useContext } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from './bound-prop-context';\n\nexport type ReplaceWhenParams = {\n\tvalue: PropValue;\n};\n\nexport type CreateControlReplacement = {\n\tcomponent: ComponentType;\n\tcondition: ( { value }: ReplaceWhenParams ) => boolean;\n};\n\nconst ControlReplacementContext = createContext< CreateControlReplacement | undefined >( undefined );\n\nexport const ControlReplacementProvider = ( {\n\tcomponent,\n\tcondition,\n\tchildren,\n}: React.PropsWithChildren< CreateControlReplacement > ) => {\n\treturn (\n\t\t<ControlReplacementContext.Provider value={ { component, condition } }>\n\t\t\t{ children }\n\t\t</ControlReplacementContext.Provider>\n\t);\n};\nexport const useControlReplacement = () => {\n\tconst { value } = useBoundProp();\n\tconst controlReplacement = useContext( ControlReplacementContext );\n\n\tlet shouldReplace = false;\n\n\ttry {\n\t\tshouldReplace = !! controlReplacement?.condition( { value } ) && !! controlReplacement.component;\n\t} catch {}\n\n\treturn shouldReplace ? controlReplacement?.component : undefined;\n};\n\nexport const createControlReplacement = () => {\n\tlet controlReplacement: CreateControlReplacement;\n\n\tfunction replaceControl( { component, condition }: CreateControlReplacement ) {\n\t\tcontrolReplacement = { component, condition };\n\t}\n\n\tfunction getControlReplacement() {\n\t\treturn controlReplacement;\n\t}\n\n\treturn { replaceControl, getControlReplacement };\n};\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 { useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { type ImageExtension } 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\nexport type ImageMediaControlProps = {\n\tallowedExtensions?: ImageExtension[];\n};\n\nexport const ImageMediaControl = createControl( ( props: 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\ttypes: [ 'image', 'image/svg+xml' ],\n\t\tallowedExtensions: props.allowedExtensions,\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 Image', '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 { 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\nexport type ControlActionsProps = PropsWithChildren< object >;\n\nexport default function ControlActions( { children }: ControlActionsProps ) {\n\tconst { items } = useControlActions();\n\n\tif ( items.length === 0 ) {\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\nexport type 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 { MenuItem, 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 } = 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 displayEmpty size=\"tiny\" value={ value ?? '' } onChange={ handleChange } fullWidth>\n\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t<MenuItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</MenuItem>\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, type urlPropTypeUtil } from '@elementor/editor-props';\nimport { XIcon } from '@elementor/icons';\nimport {\n\tAutocomplete,\n\ttype AutocompleteRenderInputParams,\n\tBox,\n\tIconButton,\n\tInputAdornment,\n\tTextField,\n} 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 Option = {\n\tlabel: string;\n\tgroupLabel?: never;\n};\n\nexport type GroupedOption = {\n\tlabel: string;\n\tgroupLabel: string;\n};\n\ntype Props = {\n\toptions: Record< string, Option > | Record< string, GroupedOption >;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n\tpropType?: typeof urlPropTypeUtil | typeof stringPropTypeUtil;\n\tminInputLength?: number;\n};\n\nexport const AutocompleteControl = createControl(\n\t( {\n\t\toptions,\n\t\tplaceholder = '',\n\t\tallowCustomValues = false,\n\t\tpropType = stringPropTypeUtil,\n\t\tminInputLength = 2,\n\t}: Props ) => {\n\t\tconst { value = '', setValue } = useBoundProp( propType );\n\n\t\tconst hasSelectedValue = !! (\n\t\t\tvalue &&\n\t\t\t( options[ value ] || Object.values( options ).find( ( { label } ) => label === value ) )\n\t\t);\n\t\tconst allowClear = !! value;\n\t\tconst formattedOptions = Object.keys( options );\n\n\t\tconst onOptionSelect = ( _: React.SyntheticEvent | null, newValue: string | null ) => {\n\t\t\tsetValue( newValue );\n\t\t};\n\n\t\tconst handleChange = ( newValue: string | null ) => {\n\t\t\tsetValue( newValue );\n\t\t};\n\n\t\tconst filterOptions = ( _: string[], { inputValue }: { inputValue: string | null } ) => {\n\t\t\tconst formattedValue = inputValue?.toLowerCase() || '';\n\n\t\t\tif ( formattedValue.length < minInputLength ) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\treturn formattedOptions.filter(\n\t\t\t\t( optionValue ) =>\n\t\t\t\t\toptionValue.toLowerCase().indexOf( formattedValue ) !== -1 ||\n\t\t\t\t\toptions[ optionValue ].label.toLowerCase().indexOf( formattedValue ) !== -1\n\t\t\t);\n\t\t};\n\n\t\tconst isOptionEqualToValue = () => {\n\t\t\treturn muiWarningPreventer() ? undefined : () => true;\n\t\t};\n\n\t\t// Prevents MUI warning when freeSolo/allowCustomValues is false\n\t\tconst muiWarningPreventer = () => allowCustomValues || !! filterOptions( [], { inputValue: value } ).length;\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Autocomplete\n\t\t\t\t\tforcePopupIcon={ false }\n\t\t\t\t\tdisableClearable={ true } // Disabled component's auto clear icon to use our custom one instead\n\t\t\t\t\tfreeSolo={ muiWarningPreventer() }\n\t\t\t\t\tvalue={ value || '' }\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tonChange={ onOptionSelect }\n\t\t\t\t\treadOnly={ hasSelectedValue }\n\t\t\t\t\toptions={ formattedOptions }\n\t\t\t\t\tgetOptionKey={ ( option ) => option }\n\t\t\t\t\tgetOptionLabel={ ( option ) => options[ option ]?.label ?? option }\n\t\t\t\t\tgroupBy={\n\t\t\t\t\t\tshouldGroupOptions( options ) ? ( option: string ) => options[ option ]?.groupLabel : undefined\n\t\t\t\t\t}\n\t\t\t\t\tisOptionEqualToValue={ isOptionEqualToValue() }\n\t\t\t\t\tfilterOptions={ filterOptions }\n\t\t\t\t\trenderOption={ ( optionProps, option ) => (\n\t\t\t\t\t\t<Box component=\"li\" { ...optionProps } key={ optionProps.id }>\n\t\t\t\t\t\t\t{ options[ option ]?.label ?? option }\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t) }\n\t\t\t\t\trenderInput={ ( params ) => (\n\t\t\t\t\t\t<TextInput\n\t\t\t\t\t\t\tparams={ params }\n\t\t\t\t\t\t\thandleChange={ handleChange }\n\t\t\t\t\t\t\tallowClear={ allowClear }\n\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\thasSelectedValue={ hasSelectedValue }\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\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\nfunction shouldGroupOptions(\n\toptions: Record< string, Option | GroupedOption >\n): options is Record< string, GroupedOption > {\n\treturn Object.values( options ).every( ( option ) => 'groupLabel' in option );\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 } = 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\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 } = 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\trows={ 5 }\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 { sizePropTypeUtil } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../components/text-field-inner-selection';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\n\nexport type Unit = 'px' | '%' | 'em' | 'rem' | 'vw' | 'vh';\n\nconst defaultUnits: Unit[] = [ 'px', '%', 'em', 'rem', 'vw', 'vh' ];\n\nconst defaultUnit = 'px';\nconst defaultSize = NaN;\n\nexport type SizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits?: Unit[];\n};\n\nexport const SizeControl = createControl( ( { units = defaultUnits, placeholder, startIcon }: SizeControlProps ) => {\n\tconst { value, setValue } = useBoundProp( sizePropTypeUtil );\n\n\tconst [ state, setState ] = useSyncExternalState( {\n\t\texternal: value,\n\t\tsetExternal: setValue,\n\t\tpersistWhen: ( controlValue ) => !! controlValue?.size || controlValue?.size === 0,\n\t\tfallback: ( controlValue ) => ( { unit: controlValue?.unit || defaultUnit, size: defaultSize } ),\n\t} );\n\n\tconst handleUnitChange = ( unit: Unit ) => {\n\t\tsetState( ( prev ) => ( {\n\t\t\tsize: prev?.size ?? defaultSize,\n\t\t\tunit,\n\t\t} ) );\n\t};\n\n\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value: size } = event.target;\n\n\t\tsetState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\tsize: size || size === '0' ? parseFloat( size ) : defaultSize,\n\t\t} ) );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextFieldInnerSelection\n\t\t\t\tendAdornment={\n\t\t\t\t\t<SelectionEndAdornment\n\t\t\t\t\t\toptions={ units }\n\t\t\t\t\t\tonClick={ handleUnitChange }\n\t\t\t\t\t\tvalue={ state?.unit ?? defaultUnit }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tstartAdornment={ startIcon ?? <InputAdornment position=\"start\">{ startIcon }</InputAdornment> }\n\t\t\t\ttype=\"number\"\n\t\t\t\tvalue={ Number.isNaN( state?.size ) ? '' : state?.size }\n\t\t\t\tonChange={ handleSizeChange }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\nimport { bindMenu, bindTrigger, Button, InputAdornment, Menu, MenuItem, TextField, usePopupState } from '@elementor/ui';\n\nexport type TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tendAdornment: React.ReactNode;\n\tstartAdornment?: React.ReactNode;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t( { placeholder, type, value, onChange, endAdornment, startAdornment }: TextFieldInnerSelectionProps, ref ) => {\n\t\treturn (\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tInputProps={ {\n\t\t\t\t\tendAdornment,\n\t\t\t\t\tstartAdornment,\n\t\t\t\t} }\n\t\t\t\tref={ ref }\n\t\t\t/>\n\t\t);\n\t}\n);\n\nexport type SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\tonClick,\n\tvalue,\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=\"inherit\"\n\t\t\t\tsx={ { font: 'inherit', minWidth: 'initial' } }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ value.toUpperCase() }\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<MenuItem key={ option } onClick={ () => handleMenuItemClick( index ) }>\n\t\t\t\t\t\t{ option.toUpperCase() }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\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-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 { strokePropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SizeControl, type Unit } from './size-control';\n\nexport type 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\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Control bind=\"width\" label={ __( 'Stroke Width', 'elementor' ) }>\n\t\t\t\t\t<SizeControl units={ units } />\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</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = ( { bind, label, children }: StrokeProps ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\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 { 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};\n\nexport const ColorControl = createControl( ( { propTypeUtil = colorPropTypeUtil, ...props }: Props ) => {\n\tconst { value, setValue } = useBoundProp( propTypeUtil );\n\n\tconst handleChange = ( selectedColor: string ) => {\n\t\tsetValue( selectedColor );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<UnstableColorField size=\"tiny\" { ...props } value={ value ?? '' } onChange={ handleChange } fullWidth />\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { boxShadowPropTypeUtil, type PropKey, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { Grid, Stack, Typography, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\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 } = useBoundProp( boxShadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t<Repeater\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 { propType, value, setValue } = useBoundProp( shadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t<Control bind=\"color\" label={ __( 'Color', 'elementor' ) }>\n\t\t\t\t\t\t<ColorControl\n\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\t\t\tanchorEl,\n\t\t\t\t\t\t\t\t\tanchorOrigin: {\n\t\t\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttransformOrigin: {\n\t\t\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"position\" label={ __( 'Position', 'elementor' ) }>\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</Grid>\n\t\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t<Control bind=\"hOffset\" label={ __( 'Horizontal', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl />\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 />\n\t\t\t\t\t</Control>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t<Control bind=\"blur\" label={ __( 'Blur', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl />\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 />\n\t\t\t\t\t</Control>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( { label, bind, children }: { bind: string; label: string; children: React.ReactNode } ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid item xs={ 6 }>\n\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\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 * as React from 'react';\nimport { useRef, 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\tTypography,\n\tUnstableTag,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\ntype Item< T > = {\n\tdisabled?: boolean;\n} & T;\n\nexport type RepeaterProps< T > = {\n\tlabel: string;\n\tvalues?: T[];\n\tsetValues: ( newValue: T[] ) => void;\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};\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tvalues: repeaterValues = [],\n\tsetValues: setRepeaterValues,\n}: RepeaterProps< Item< T > > ) => {\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\n\t\tsetRepeaterValues( [ ...repeaterValues, newItem ] );\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues( [\n\t\t\t...repeaterValues.slice( 0, index ),\n\t\t\tstructuredClone( repeaterValues[ index ] ),\n\t\t\t...repeaterValues.slice( index ),\n\t\t] );\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues( repeaterValues.filter( ( _, i ) => i !== index ) );\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues(\n\t\t\trepeaterValues.map( ( value, i ) => {\n\t\t\t\tif ( i === index ) {\n\t\t\t\t\tconst { disabled, ...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, ...( disabled ? {} : { 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\treturn (\n\t\t<Stack>\n\t\t\t<Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" sx={ { pb: 1 } }>\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<IconButton size={ SIZE } onClick={ addRepeaterItem } aria-label={ __( 'Add item', 'elementor' ) }>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t{ repeaterValues.map( ( value, index ) => (\n\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tbind={ String( index ) }\n\t\t\t\t\t\tdisabled={ value.disabled }\n\t\t\t\t\t\tlabel={ <itemSettings.Label value={ value } /> }\n\t\t\t\t\t\tstartIcon={ <itemSettings.Icon value={ value } /> }\n\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( props ) => <itemSettings.Content { ...props } value={ value } bind={ String( index ) } /> }\n\t\t\t\t\t</RepeaterItem>\n\t\t\t\t) ) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n};\n\ntype RepeaterItemProps = {\n\tlabel: React.ReactNode;\n\tbind: string;\n\tdisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( { anchorEl }: { anchorEl: AnchorEl } ) => React.ReactNode;\n};\n\nconst RepeaterItem = ( {\n\tlabel,\n\tbind,\n\tdisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n}: RepeaterItemProps ) => {\n\tconst popupId = `repeater-popup-${ bind }`;\n\tconst controlRef = useRef< HTMLElement >( null );\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\n\n\tconst popoverState = usePopupState( { popupId, variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tlabel={ label }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tref={ controlRef }\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<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ duplicateItem }\n\t\t\t\t\t\t\taria-label={ __( 'Duplicate item', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ toggleDisableItem }\n\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\tdisabled ? __( 'Enable item', 'elementor' ) : __( 'Disable item', 'elementor' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ disabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ removeItem }\n\t\t\t\t\t\t\taria-label={ __( 'Remove item', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\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, p: 1, pt: 1, width: controlRef.current?.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>\n\t\t\t\t<Box p={ 0.5 }>{ children( { anchorEl } ) }</Box>\n\t\t\t</Popover>\n\t\t</>\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\ntype ToggleControlProps< T extends PropValue > = {\n\toptions: ToggleButtonGroupItem< T >[];\n\tfullWidth?: boolean;\n\tsize?: ToggleButtonProps[ 'size' ];\n};\n\nexport const ToggleControl = createControl(\n\t( { options, fullWidth = false, size = 'tiny' }: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst handleToggle = ( option: StringPropValue[ 'value' ] | null ) => {\n\t\t\tsetValue( option );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\titems={ options }\n\t\t\t\tvalue={ value ?? null }\n\t\t\t\tonChange={ handleToggle }\n\t\t\t\texclusive={ true }\n\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\tsize={ size }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport {\n\ttype StackProps,\n\tstyled,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttype ToggleButtonProps,\n\tTooltip,\n\tuseTheme,\n} from '@elementor/ui';\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`;\n\ntype ExclusiveValue< TValue > = TValue;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\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\texclusive = false,\n\tfullWidth = false,\n}: Props< TValue > ) => {\n\tconst isRtl = 'rtl' === useTheme().direction;\n\n\tconst handleChange = (\n\t\t_: React.MouseEvent< HTMLElement >,\n\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t) => {\n\t\tonChange( newValue as never );\n\t};\n\n\treturn (\n\t\t<StyledToggleButtonGroup\n\t\t\tjustify={ justify }\n\t\t\tvalue={ value }\n\t\t\tonChange={ handleChange }\n\t\t\texclusive={ exclusive }\n\t\t\tsx={ {\n\t\t\t\tdirection: isRtl ? 'rtl /* @noflip */' : 'ltr /* @noflip */',\n\t\t\t} }\n\t\t>\n\t\t\t{ items.map( ( { label, value: buttonValue, renderContent: Content, showTooltip } ) =>\n\t\t\t\tshowTooltip ? (\n\t\t\t\t\t<Tooltip key={ buttonValue } title={ label } disableFocusListener={ true } placement=\"top\">\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</Tooltip>\n\t\t\t\t) : (\n\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\tkey={ buttonValue }\n\t\t\t\t\t\tvalue={ buttonValue }\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t)\n\t\t\t) }\n\t\t</StyledToggleButtonGroup>\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\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder,\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 } = 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\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tinputProps={ { step } }\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, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { bindPopover, bindToggle, Grid, Popover, Stack, ToggleButton, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\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\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\titems,\n\tmultiSizePropTypeUtil,\n}: Props< TMultiPropType, TPropValue > ) {\n\tconst popupId = useId();\n\tconst controlRef = useRef< HTMLElement >( null );\n\tconst popupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst {\n\t\tpropType: multiSizePropType,\n\t\tvalue: multiSizeValue,\n\t\tsetValue: setMultiSizeValue,\n\t} = useBoundProp( multiSizePropTypeUtil );\n\n\tconst { value: sizeValue, setValue: setSizeValue } = useBoundProp( sizePropTypeUtil );\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 isMixed = !! multiSizeValue;\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ controlRef }>\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<Stack direction=\"row\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t\t<SizeControl placeholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined } />\n\t\t\t\t\t\t<ToggleButton\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\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t{ ...bindToggle( popupState ) }\n\t\t\t\t\t\t\tselected={ popupState.isOpen }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t</ToggleButton>\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, p: 2, pt: 1, width: controlRef.current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<PropProvider propType={ multiSizePropType } value={ getMultiSizeValues() } setValue={ setNestedProp }>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 0 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 1 ] } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 3 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 2 ] } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Stack>\n\t\t\t\t</PropProvider>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nconst MultiSizeValueControl = ( { item }: { item: Item } ) => (\n\t<PropKeyProvider bind={ item.bind }>\n\t\t<Grid item xs={ 6 }>\n\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<ControlLabel>{ item.label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<SizeControl startIcon={ item.icon } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n);\n","import * as React from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { SizeControl } from './size-control';\n\nexport const LinkedDimensionsControl = createControl( ( { label }: { label: string } ) => {\n\tconst { value: dimensionsValue, setValue: setDimensionsValue, propType } = useBoundProp( dimensionsPropTypeUtil );\n\tconst { value: sizeValue, setValue: setSizeValue } = useBoundProp( sizePropTypeUtil );\n\n\tconst isLinked = ! dimensionsValue && ! sizeValue ? true : !! sizeValue;\n\n\tconst onLinkToggle = () => {\n\t\tif ( ! isLinked ) {\n\t\t\tsetSizeValue( dimensionsValue?.top?.value );\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\tsetDimensionsValue( {\n\t\t\ttop: value,\n\t\t\tright: value,\n\t\t\tbottom: value,\n\t\t\tleft: value,\n\t\t} );\n\t};\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ dimensionsValue } setValue={ setDimensionsValue }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<ToggleButton\n\t\t\t\t\taria-label={ __( 'Link Inputs', 'elementor' ) }\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t>\n\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t</ToggleButton>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Top', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'top' }\n\t\t\t\t\t\t\tstartIcon={ <SideTopIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Right', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'right' }\n\t\t\t\t\t\t\tstartIcon={ <SideRightIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Bottom', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'bottom' }\n\t\t\t\t\t\t\tstartIcon={ <SideBottomIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Left', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'left' }\n\t\t\t\t\t\t\tstartIcon={ <SideLeftIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = ( { bind, startIcon, isLinked }: { bind: PropKey; startIcon: React.ReactNode; isLinked: boolean } ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl startIcon={ startIcon } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl startIcon={ startIcon } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import { Fragment, useId, useState } from 'react';\nimport * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { ChevronDownIcon, EditIcon, PhotoIcon, SearchIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tDivider,\n\tIconButton,\n\tInputAdornment,\n\tLink,\n\tListSubheader,\n\tMenuItem,\n\tMenuList,\n\tPopover,\n\tStack,\n\tTextField,\n\tTypography,\n\tUnstableTag,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\nimport { useFilteredFontFamilies } from '../hooks/use-filtered-font-families';\n\nconst SIZE = 'tiny';\n\nexport const FontFamilyControl = createControl( ( { fontFamilies } ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { value: fontFamily, setValue: setFontFamily } = useBoundProp( stringPropTypeUtil );\n\n\tconst popupId = useId();\n\tconst popoverState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst filteredFontFamilies = useFilteredFontFamilies( fontFamilies, searchValue );\n\n\tif ( ! filteredFontFamilies ) {\n\t\treturn null;\n\t}\n\n\tconst handleSearch = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetSearchValue( event.target.value );\n\t};\n\n\tconst handleClose = () => {\n\t\tsetSearchValue( '' );\n\n\t\tpopoverState.close();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ fontFamily }\n\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tfullWidth\n\t\t\t/>\n\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t>\n\t\t\t\t<Stack>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t\t<EditIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ __( 'Font Family', 'elementor' ) }</Typography>\n\t\t\t\t\t\t<IconButton size={ SIZE } sx={ { ml: 'auto' } } onClick={ handleClose }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t<Box px={ 1.5 } pb={ 1 }>\n\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\t\t\t\tonChange={ handleSearch }\n\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t<InputAdornment position=\"start\">\n\t\t\t\t\t\t\t\t\t\t<SearchIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Divider />\n\t\t\t\t\t<Box sx={ { overflowY: 'auto', height: 260, width: 220 } }>\n\t\t\t\t\t\t{ filteredFontFamilies.length > 0 ? (\n\t\t\t\t\t\t\t<MenuList role=\"listbox\" tabIndex={ 0 }>\n\t\t\t\t\t\t\t\t{ filteredFontFamilies.map( ( [ category, items ], index ) => (\n\t\t\t\t\t\t\t\t\t<Fragment key={ index }>\n\t\t\t\t\t\t\t\t\t\t<ListSubheader sx={ { typography: 'caption', color: 'text.tertiary' } }>\n\t\t\t\t\t\t\t\t\t\t\t{ category }\n\t\t\t\t\t\t\t\t\t\t</ListSubheader>\n\t\t\t\t\t\t\t\t\t\t{ items.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst isSelected = item === fontFamily;\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselected={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\t\t\t\t\t\t\t\tautoFocus={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFontFamily( item );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ { typography: 'caption' } }\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={ { fontFamily: item } }\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ item }\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Stack alignItems=\"center\" p={ 2.5 } gap={ 1.5 }>\n\t\t\t\t\t\t\t\t<PhotoIcon fontSize=\"large\" />\n\t\t\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t“{ searchValue }”.\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Clear the filters', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t{ __( 'and try again.', 'elementor' ) }\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Box>\n\t\t\t\t</Stack>\n\t\t\t</Popover>\n\t\t</>\n\t);\n} );\n","import { __ } from '@wordpress/i18n';\n\nexport type SupportedFonts = 'system' | 'googlefonts' | 'customfonts';\n\nconst supportedCategories: Record< SupportedFonts, string > = {\n\tsystem: __( 'System', 'elementor' ),\n\tgooglefonts: __( 'Google Fonts', 'elementor' ),\n\tcustomfonts: __( 'Custom Fonts', 'elementor' ),\n};\n\nexport const useFilteredFontFamilies = ( fontFamilies: Record< string, SupportedFonts >, searchValue: string ) => {\n\tconst filteredFontFamilies = Object.entries( fontFamilies ).reduce< Map< string, string[] > >(\n\t\t( acc, [ font, category ] ) => {\n\t\t\tconst isMatch = font.toLowerCase().includes( searchValue.trim().toLowerCase() );\n\n\t\t\tif ( ! isMatch ) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tconst categoryLabel = supportedCategories[ category as SupportedFonts ];\n\n\t\t\tif ( categoryLabel ) {\n\t\t\t\tconst existingCategory = acc.get( categoryLabel );\n\n\t\t\t\tif ( existingCategory ) {\n\t\t\t\t\texistingCategory.push( font );\n\t\t\t\t} else {\n\t\t\t\t\tacc.set( categoryLabel, [ font ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn acc;\n\t\t},\n\t\tnew Map()\n\t);\n\n\treturn [ ...filteredFontFamilies ];\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 } = 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\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 { booleanPropTypeUtil, linkPropTypeUtil, type LinkPropValue, urlPropTypeUtil } from '@elementor/editor-props';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Collapse, Divider, Grid, IconButton, Stack, Switch } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { AutocompleteControl, type GroupedOption, type Option } from './autocomplete-control';\n\ntype Props = {\n\toptions?: Record< string, Option > | Record< string, GroupedOption >;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n};\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ];\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\nconst SIZE = 'tiny';\n\nexport const LinkControl = createControl( ( props?: Props ) => {\n\tconst { value, path, setValue, ...propContext } = useBoundProp( linkPropTypeUtil );\n\n\tconst [ linkSessionValue, setLinkSessionValue ] = useSessionStorage< LinkSessionValue >( path.join( '/' ) );\n\n\tconst { allowCustomValues = false, options = {}, placeholder } = props || {};\n\n\tconst onEnabledChange = () => {\n\t\tconst { meta } = linkSessionValue ?? {};\n\t\tconst { isEnabled } = meta ?? {};\n\n\t\tif ( isEnabled && value ) {\n\t\t\tsetValue( null );\n\t\t} else if ( linkSessionValue?.value ) {\n\t\t\tsetValue( linkSessionValue?.value ?? null );\n\t\t}\n\n\t\tsetLinkSessionValue( { value, meta: { isEnabled: ! isEnabled } } );\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<Divider />\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} }\n\t\t\t\t>\n\t\t\t\t\t<ControlLabel>{ __( 'Link', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t<ToggleIconControl\n\t\t\t\t\t\tenabled={ linkSessionValue?.meta?.isEnabled ?? false }\n\t\t\t\t\t\tonIconClick={ onEnabledChange }\n\t\t\t\t\t\tlabel={ __( 'Toggle Link', 'elementor' ) }\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t\t<Collapse in={ linkSessionValue?.meta?.isEnabled } timeout=\"auto\" unmountOnExit>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'href' }>\n\t\t\t\t\t\t\t<AutocompleteControl\n\t\t\t\t\t\t\t\tallowCustomValues={ Object.keys( options ).length ? allowCustomValues : true }\n\t\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\t\tpropType={ urlPropTypeUtil }\n\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\n\t\t\t\t\t\t<PropKeyProvider bind={ 'isTargetBlank' }>\n\t\t\t\t\t\t\t<SwitchControl />\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\tenabled: boolean;\n\tonIconClick: () => void;\n\tlabel?: string;\n};\n\nconst ToggleIconControl = ( { enabled, onIconClick, label }: ToggleIconControlProps ) => {\n\treturn (\n\t\t<IconButton size={ SIZE } onClick={ onIconClick } aria-label={ label }>\n\t\t\t{ enabled ? <MinusIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconButton>\n\t);\n};\n\n// @TODO Should be refactored in ED-16323\nconst SwitchControl = () => {\n\tconst { value = false, setValue } = useBoundProp( booleanPropTypeUtil );\n\n\tconst onChange = () => {\n\t\tsetValue( ! value );\n\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<ControlLabel>{ __( 'Open in new tab', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item>\n\t\t\t\t<Switch checked={ value } onChange={ onChange } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { 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} = useBoundProp( layoutDirectionPropTypeUtil );\n\tconst { value: sizeValue, setValue: setSizeValue } = 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 );\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 LinkedIcon = isLinked ? LinkIcon : DetachIcon;\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<ToggleButton\n\t\t\t\t\taria-label={ __( 'Link Inputs', 'elementor' ) }\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t>\n\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t</ToggleButton>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Column', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control bind={ 'column' } isLinked={ isLinked } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Row', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control bind={ 'row' } isLinked={ isLinked } />\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 = ( { bind, isLinked }: { bind: PropKey; isLinked: boolean } ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { backgroundPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<PropKeyProvider bind=\"background-overlay\">\n\t\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t\t</PropKeyProvider>\n\t\t\t\t<PropKeyProvider bind=\"color\">\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Color', 'elementor' ) }</ControlLabel>\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<ColorControl />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\ttype PropKey,\n} from '@elementor/editor-props';\nimport { Box, Grid, Stack, Tab, TabPanel, Tabs, UnstableColorIndicator, useTabs } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { Repeater } from '../../../components/repeater';\nimport { createControl } from '../../../create-control';\nimport { ColorControl } from '../../color-control';\nimport { ImageMediaControl } from '../../image-media-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 { BackgroundImageOverlayResolution } from './background-image-overlay/background-image-overlay-resolution';\nimport { BackgroundImageOverlaySize } from './background-image-overlay/background-image-overlay-size';\n\nconst defaultImagePlaceholderId = 1;\nconst initialBackgroundOverlay: BackgroundOverlayItemPropValue = {\n\t$$type: 'background-image-overlay',\n\tvalue: {\n\t\t'image-src': {\n\t\t\t$$type: 'image-src',\n\t\t\tvalue: {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: defaultImagePlaceholderId,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n};\n\ntype OverlayType = 'image' | 'color';\n\nexport const BackgroundOverlayRepeaterControl = createControl( () => {\n\tconst { propType, value: overlayValues, setValue } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ overlayValues } setValue={ setValue }>\n\t\t\t<Repeater\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: initialBackgroundOverlay,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = ( { value }: { value: BackgroundOverlayItemPropValue } ) => (\n\t<UnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value } />\n);\n\nconst ItemContent = ( { bind, value }: { bind: PropKey; value: BackgroundOverlayItemPropValue } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content value={ value } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst activeTab = deriveOverlayType( value.$$type );\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< OverlayType >( activeTab );\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 { ...getTabsProps() } aria-label={ __( 'Background Overlay', 'elementor' ) }>\n\t\t\t\t\t<Tab label={ __( 'Image', 'elementor' ) } { ...getTabProps( 'image' ) } />\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 { ...getTabPanelProps( 'image' ) }>\n\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t<ImageOverlayContent />\n\t\t\t\t</Stack>\n\t\t\t</TabPanel>\n\t\t\t<TabPanel { ...getTabPanelProps( 'color' ) }>\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<ColorControl propTypeUtil={ backgroundColorOverlayPropTypeUtil } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemLabel = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst type = value.$$type;\n\n\tif ( type === 'background-color-overlay' ) {\n\t\treturn <ItemLabelColor value={ value } />;\n\t}\n\tif ( type === 'background-image-overlay' ) {\n\t\treturn <ItemLabelImage value={ value } />;\n\t}\n};\n\nconst ItemLabelColor = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\treturn <span>{ value.value }</span>;\n};\n\nconst ItemLabelImage = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst { data: attachment } = useWpMediaAttachment( value?.value[ 'image-src' ]?.value.id.value || null );\n\tconst imageTitle = attachment?.title || null;\n\n\treturn <span>{ imageTitle }</span>;\n};\n\nconst ImageOverlayContent = () => {\n\tconst propContext = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'image-src' }>\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<ImageMediaControl />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'resolution' }>\n\t\t\t\t<BackgroundImageOverlayResolution />\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 deriveOverlayType = ( type: string ): OverlayType => {\n\tif ( type === 'background-color-overlay' ) {\n\t\treturn 'color';\n\t}\n\n\tif ( type === 'background-image-overlay' ) {\n\t\treturn 'image';\n\t}\n\n\tthrow new Error( `Invalid overlay type: ${ type }` );\n};\n","import * as React from 'react';\nimport { PinIcon, PinnedOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlLabel } from '../../../../components/control-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\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<Grid container gap={ 8 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 2 }>\n\t\t\t\t<ControlLabel>{ __( 'Attachment', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item justifyContent=\"flex-end\" xs={ 8 } sx={ { display: 'flex' } }>\n\t\t\t\t<ToggleControl options={ attachmentControlOptions } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlLabel } from '../../../../components/control-label';\nimport { SelectControl } from '../../../select-control';\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];\n\nexport const BackgroundImageOverlayPosition = () => {\n\treturn (\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Position', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<SelectControl options={ backgroundPositionOptions } />\n\t\t\t</Grid>\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 { ControlLabel } from '../../../../components/control-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\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<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Repeat', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ToggleControl options={ repeatControlOptions } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlLabel } from '../../../../components/control-label';\nimport { SelectControl } from '../../../select-control';\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: __( 'Medium Large - 768 x 768' ), value: 'medium_large' },\n\t{ label: __( 'Large 1024 x 1024', 'elementor' ), value: 'large' },\n\t{ label: __( 'Full', 'elementor' ), value: 'full' },\n];\n\nexport const BackgroundImageOverlayResolution = () => {\n\treturn (\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Resolution', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<SelectControl options={ backgroundResolutionOptions } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { ArrowBarBothIcon, ArrowsMaximizeIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlLabel } from '../../../../components/control-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Sizes = 'auto' | 'cover' | 'contain';\n\nconst sizeControlOptions: ToggleButtonGroupItem< Sizes >[] = [\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: () => 'Auto',\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];\n\nexport const BackgroundImageOverlaySize = () => {\n\treturn (\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Size', 'elementor' ) }</ControlLabel>\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={ sizeControlOptions } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n"],"mappings":"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","names":["React","import_editor_props","import_ui","import_i18n","React","import_react","value","value","React","React","import_ui","React","import_react","React","import_ui","React","import_ui","React","import_react","MenuItem","React","import_editor_props","import_ui","React","import_editor_props","import_icons","import_ui","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_react","import_ui","import_react","units","React","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_ui","React","import_editor_props","import_ui","import_i18n","React","import_react","import_icons","import_ui","import_i18n","Control","React","import_editor_props","React","import_ui","Content","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_icons","import_ui","import_i18n","Control","import_react","React","import_editor_props","import_icons","import_ui","import_i18n","import_i18n","SIZE","React","import_editor_props","import_ui","React","import_editor_props","import_icons","import_ui","import_i18n","SIZE","React","import_editor_props","import_icons","import_ui","import_i18n","Control","React","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_ui","import_wp_media","import_i18n","React","import_icons","import_ui","import_i18n","React","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","ItemIcon","ItemLabel","ItemContent","Content"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/controls/autocomplete-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/create-control-replacement.tsx","../src/controls/image-control.tsx","../src/components/control-label.tsx","../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/text-field-inner-selection.tsx","../src/hooks/use-sync-external-state.tsx","../src/controls/stroke-control.tsx","../src/controls/color-control.tsx","../src/controls/box-shadow-repeater-control.tsx","../src/components/repeater.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/controls/linked-dimensions-control.tsx","../src/controls/font-family-control.tsx","../src/hooks/use-filtered-font-families.ts","../src/controls/url-control.tsx","../src/controls/link-control.tsx","../src/controls/gap-control.tsx","../src/controls/svg-media-control.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-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"],"sourcesContent":["// control types\nexport { AutocompleteControl } from './controls/autocomplete-control';\nexport { ImageControl } from './controls/image-control';\nexport { TextControl } from './controls/text-control';\nexport { TextAreaControl } from './controls/text-area-control';\nexport { SizeControl } from './controls/size-control';\nexport { StrokeControl } from './controls/stroke-control';\nexport { BoxShadowRepeaterControl } from './controls/box-shadow-repeater-control';\nexport { SelectControl } from './controls/select-control';\nexport { ColorControl } from './controls/color-control';\nexport { ToggleControl } from './controls/toggle-control';\nexport { NumberControl } from './controls/number-control';\nexport { EqualUnequalSizesControl } from './controls/equal-unequal-sizes-control';\nexport { LinkedDimensionsControl } from './controls/linked-dimensions-control';\nexport { FontFamilyControl } from './controls/font-family-control';\nexport { UrlControl } from './controls/url-control';\nexport { LinkControl } from './controls/link-control';\nexport { GapControl } from './controls/gap-control';\nexport { SvgMediaControl } from './controls/svg-media-control';\nexport { BackgroundControl } from './controls/background-control/background-control';\n\n// components\nexport { ControlLabel } from './components/control-label';\nexport { ControlToggleButtonGroup } from './components/control-toggle-button-group';\n\n// types\nexport type { ControlComponent } from './create-control';\nexport type { ToggleButtonGroupItem } from './components/control-toggle-button-group';\nexport type { EqualUnequalItems } from './controls/equal-unequal-sizes-control';\nexport type { ControlActionsItems } from './control-actions/control-actions-context';\nexport type { PropProviderProps } from './bound-prop-context';\nexport type { SetValue } from './bound-prop-context/prop-context';\n\n// providers\nexport { createControlReplacement, ControlReplacementProvider } from './create-control-replacement';\nexport { ControlActionsProvider, useControlActions } from './control-actions/control-actions-context';\nexport { useBoundProp, PropProvider, PropKeyProvider } from './bound-prop-context';\n\n// hooks\nexport { useSyncExternalState } from './hooks/use-sync-external-state';\n","import * as React from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\nimport { XIcon } from '@elementor/icons';\nimport {\n\tAutocomplete,\n\ttype AutocompleteRenderInputParams,\n\tBox,\n\tIconButton,\n\tInputAdornment,\n\tTextField,\n} from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\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< TOptionKey extends string, TCustomKey extends string = '' > = {\n\toptions: FlatOption[] | CategorizedOption[];\n\toptionRestrictedPropTypeUtil: PropTypeUtil< TOptionKey, number | null >;\n\tonOptionChangeCallback?: ( newValue: number | null ) => void;\n\tonTextChangeCallback?: ( newValue: string | null ) => void;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n\tminInputLength?: number;\n\tcustomValue?: TCustomKey;\n};\n\nexport const AutocompleteControl = createControl(\n\t< TOptionKey extends string, TCustomKey extends string >( props: Props< TOptionKey, TCustomKey > ) => {\n\t\tconst {\n\t\t\toptions,\n\t\t\toptionRestrictedPropTypeUtil,\n\t\t\tonOptionChangeCallback,\n\t\t\tonTextChangeCallback,\n\t\t\tallowCustomValues = false,\n\t\t\tplaceholder = '',\n\t\t\tminInputLength = 2,\n\t\t\tcustomValue,\n\t\t} = props;\n\n\t\tconst { value: selectableValue, setValue: setSelectableValue } = useBoundProp( optionRestrictedPropTypeUtil );\n\n\t\tconst value = selectableValue || customValue || '';\n\n\t\tconst optionKeys = _factoryFilter( selectableValue || customValue || null, options, minInputLength ).map(\n\t\t\t( { id } ) => id\n\t\t);\n\t\tconst allowClear = !! value;\n\n\t\t// Prevents MUI warning when freeSolo/allowCustomValues is false\n\t\tconst muiWarningPreventer = allowCustomValues || !! value?.toString()?.length;\n\t\tconst isOptionEqualToValue = () => {\n\t\t\treturn muiWarningPreventer ? undefined : () => true;\n\t\t};\n\t\tconst hasSelectedValue = !! findMatchingOption( options, selectableValue?.toString() );\n\n\t\tconst onOptionChange = ( newValue: number | null ) => {\n\t\t\tsetSelectableValue( newValue );\n\t\t\tonOptionChangeCallback?.( newValue );\n\t\t};\n\n\t\tconst onTextChange = ( newValue: string | null ) => {\n\t\t\tonTextChangeCallback?.( newValue );\n\t\t};\n\n\t\treturn (\n\t\t\t<Autocomplete\n\t\t\t\tforcePopupIcon={ false }\n\t\t\t\tdisableClearable={ true } // Disabled component's auto clear icon to use our custom one instead\n\t\t\t\tfreeSolo={ allowCustomValues }\n\t\t\t\tvalue={ value?.toString() || '' }\n\t\t\t\tsize={ 'tiny' }\n\t\t\t\tonChange={ ( _, newValue ) => onOptionChange( Number( newValue ) ) }\n\t\t\t\treadOnly={ hasSelectedValue }\n\t\t\t\toptions={ optionKeys }\n\t\t\t\tgetOptionKey={ ( optionId ) => findMatchingOption( options, optionId )?.id || optionId }\n\t\t\t\tgetOptionLabel={ ( optionId ) => findMatchingOption( options, optionId )?.label || optionId.toString() }\n\t\t\t\tgroupBy={\n\t\t\t\t\tisCategorizedOptionPool( options )\n\t\t\t\t\t\t? ( optionId: string ) => findMatchingOption( options, optionId )?.groupLabel || optionId\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tisOptionEqualToValue={ isOptionEqualToValue() }\n\t\t\t\tfilterOptions={ () => optionKeys }\n\t\t\t\trenderOption={ ( optionProps, optionId ) => (\n\t\t\t\t\t<Box component=\"li\" { ...optionProps } key={ optionProps.id }>\n\t\t\t\t\t\t{ findMatchingOption( options, optionId )?.label ?? optionId }\n\t\t\t\t\t</Box>\n\t\t\t\t) }\n\t\t\t\trenderInput={ ( params ) => (\n\t\t\t\t\t<TextInput\n\t\t\t\t\t\tparams={ params }\n\t\t\t\t\t\thandleChange={ onTextChange }\n\t\t\t\t\t\tallowClear={ allowClear }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\thasSelectedValue={ hasSelectedValue }\n\t\t\t\t\t/>\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( options: FlatOption[] | CategorizedOption[], optionId: string | null = null ) {\n\treturn options.find( ( { id } ) => optionId?.toString() === 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 { 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};\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}: 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} }\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\tpath: PropKey[];\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\n\tconst propType = context.propType.shape[ bind ];\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\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 {\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\tpath: PropKey[];\n};\n\nexport function useBoundProp< T extends PropValue = PropValue >(): PropKeyContextValue< T, PropType >;\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\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 ( 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\n\treturn {\n\t\t...propKeyContext,\n\t\tsetValue,\n\t\tvalue,\n\t\tpropType,\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 './create-control-replacement';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\ntype Options = {\n\tsupportsReplacements?: boolean;\n};\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 >(\n\tComponent: T,\n\t{ supportsReplacements = true }: Options = {}\n) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst ControlReplacement = useControlReplacement();\n\n\t\tif ( ControlReplacement && supportsReplacements ) {\n\t\t\treturn (\n\t\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t\t<ControlReplacement { ...props } />\n\t\t\t\t</ErrorBoundary>\n\t\t\t);\n\t\t}\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, useContext } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from './bound-prop-context';\n\ntype ReplaceWhenParams = {\n\tvalue: PropValue;\n};\n\ntype CreateControlReplacement = {\n\tcomponent: ComponentType;\n\tcondition: ( { value }: ReplaceWhenParams ) => boolean;\n};\n\nconst ControlReplacementContext = createContext< CreateControlReplacement | undefined >( undefined );\n\nexport const ControlReplacementProvider = ( {\n\tcomponent,\n\tcondition,\n\tchildren,\n}: React.PropsWithChildren< CreateControlReplacement > ) => {\n\treturn (\n\t\t<ControlReplacementContext.Provider value={ { component, condition } }>\n\t\t\t{ children }\n\t\t</ControlReplacementContext.Provider>\n\t);\n};\nexport const useControlReplacement = () => {\n\tconst { value } = useBoundProp();\n\tconst controlReplacement = useContext( ControlReplacementContext );\n\n\tlet shouldReplace = false;\n\n\ttry {\n\t\tshouldReplace = !! controlReplacement?.condition( { value } ) && !! controlReplacement.component;\n\t} catch {}\n\n\treturn shouldReplace ? controlReplacement?.component : undefined;\n};\n\nexport const createControlReplacement = () => {\n\tlet controlReplacement: CreateControlReplacement;\n\n\tfunction replaceControl( { component, condition }: CreateControlReplacement ) {\n\t\tcontrolReplacement = { component, condition };\n\t}\n\n\tfunction getControlReplacement() {\n\t\treturn controlReplacement;\n\t}\n\n\treturn { replaceControl, getControlReplacement };\n};\n","import * as React from 'react';\nimport { imagePropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { ImageMediaControl } from './image-media-control';\nimport { SelectControl } from './select-control';\n\ntype ImageControlProps = {\n\tsizes: { label: string; value: string }[];\n\tresolutionLabel?: string;\n};\n\nexport const ImageControl = createControl(\n\t( { sizes, resolutionLabel = __( 'Image resolution', 'elementor' ) }: ImageControlProps ) => {\n\t\tconst propContext = useBoundProp( imagePropTypeUtil );\n\n\t\treturn (\n\t\t\t<PropProvider { ...propContext }>\n\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t<PropKeyProvider bind={ 'src' }>\n\t\t\t\t\t\t<ControlLabel> { __( 'Choose image', 'elementor' ) } </ControlLabel>\n\t\t\t\t\t\t<ImageMediaControl />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<ControlLabel> { resolutionLabel } </ControlLabel>\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<SelectControl options={ sizes } />\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Stack>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { Typography } from '@elementor/ui';\n\nexport const ControlLabel = ( { children }: { children: React.ReactNode } ) => {\n\treturn (\n\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t{ children }\n\t\t</Typography>\n\t);\n};\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 { useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { type ImageExtension } 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\tallowedExtensions?: ImageExtension[];\n};\n\nexport const ImageMediaControl = createControl( ( props: 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\ttypes: [ 'image', 'image/svg+xml' ],\n\t\tallowedExtensions: props.allowedExtensions,\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 Image', '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 { 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\ntype ControlActionsProps = PropsWithChildren< object >;\n\nexport default function ControlActions( { children }: ControlActionsProps ) {\n\tconst { items } = useControlActions();\n\n\tif ( items.length === 0 ) {\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 { MenuItem, 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 } = 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 displayEmpty size=\"tiny\" value={ value ?? '' } onChange={ handleChange } fullWidth>\n\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t<MenuItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</MenuItem>\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 } = 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\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 } = 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\trows={ 5 }\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 { sizePropTypeUtil } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../components/text-field-inner-selection';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\n\nexport type Unit = 'px' | '%' | 'em' | 'rem' | 'vw' | 'vh';\n\nconst defaultUnits: Unit[] = [ 'px', '%', 'em', 'rem', 'vw', 'vh' ];\n\nconst defaultUnit = 'px';\nconst defaultSize = NaN;\n\ntype SizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits?: Unit[];\n};\n\nexport const SizeControl = createControl( ( { units = defaultUnits, placeholder, startIcon }: SizeControlProps ) => {\n\tconst { value, setValue } = useBoundProp( sizePropTypeUtil );\n\n\tconst [ state, setState ] = useSyncExternalState( {\n\t\texternal: value,\n\t\tsetExternal: setValue,\n\t\tpersistWhen: ( controlValue ) => !! controlValue?.size || controlValue?.size === 0,\n\t\tfallback: ( controlValue ) => ( { unit: controlValue?.unit || defaultUnit, size: defaultSize } ),\n\t} );\n\n\tconst handleUnitChange = ( unit: Unit ) => {\n\t\tsetState( ( prev ) => ( {\n\t\t\tsize: prev?.size ?? defaultSize,\n\t\t\tunit,\n\t\t} ) );\n\t};\n\n\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value: size } = event.target;\n\n\t\tsetState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\tsize: size || size === '0' ? parseFloat( size ) : defaultSize,\n\t\t} ) );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextFieldInnerSelection\n\t\t\t\tendAdornment={\n\t\t\t\t\t<SelectionEndAdornment\n\t\t\t\t\t\toptions={ units }\n\t\t\t\t\t\tonClick={ handleUnitChange }\n\t\t\t\t\t\tvalue={ state?.unit ?? defaultUnit }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tstartAdornment={ startIcon ?? <InputAdornment position=\"start\">{ startIcon }</InputAdornment> }\n\t\t\t\ttype=\"number\"\n\t\t\t\tvalue={ Number.isNaN( state?.size ) ? '' : state?.size }\n\t\t\t\tonChange={ handleSizeChange }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\nimport { bindMenu, bindTrigger, Button, InputAdornment, Menu, MenuItem, TextField, usePopupState } from '@elementor/ui';\n\ntype TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tendAdornment: React.ReactNode;\n\tstartAdornment?: React.ReactNode;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t( { placeholder, type, value, onChange, endAdornment, startAdornment }: TextFieldInnerSelectionProps, ref ) => {\n\t\treturn (\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tInputProps={ {\n\t\t\t\t\tendAdornment,\n\t\t\t\t\tstartAdornment,\n\t\t\t\t} }\n\t\t\t\tref={ ref }\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};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\tonClick,\n\tvalue,\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=\"inherit\"\n\t\t\t\tsx={ { font: 'inherit', minWidth: 'initial' } }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ value.toUpperCase() }\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<MenuItem key={ option } onClick={ () => handleMenuItemClick( index ) }>\n\t\t\t\t\t\t{ option.toUpperCase() }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\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-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 { strokePropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SizeControl, type Unit } 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\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Control bind=\"width\" label={ __( 'Stroke Width', 'elementor' ) }>\n\t\t\t\t\t<SizeControl units={ units } />\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</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = ( { bind, label, children }: StrokeProps ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\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 { 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};\n\nexport const ColorControl = createControl( ( { propTypeUtil = colorPropTypeUtil, ...props }: Props ) => {\n\tconst { value, setValue } = useBoundProp( propTypeUtil );\n\n\tconst handleChange = ( selectedColor: string ) => {\n\t\tsetValue( selectedColor );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<UnstableColorField size=\"tiny\" { ...props } value={ value ?? '' } onChange={ handleChange } fullWidth />\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { boxShadowPropTypeUtil, type PropKey, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { Grid, Stack, Typography, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\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 } = useBoundProp( boxShadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t<Repeater\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 { propType, value, setValue } = useBoundProp( shadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t<Stack gap={ 1.5 } sx={ { p: 1.5 } }>\n\t\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t<Control bind=\"color\" label={ __( 'Color', 'elementor' ) }>\n\t\t\t\t\t\t<ColorControl\n\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\t\t\tanchorEl,\n\t\t\t\t\t\t\t\t\tanchorOrigin: {\n\t\t\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttransformOrigin: {\n\t\t\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"position\" label={ __( 'Position', 'elementor' ) }>\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</Grid>\n\t\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t<Control bind=\"hOffset\" label={ __( 'Horizontal', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl />\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 />\n\t\t\t\t\t</Control>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t<Control bind=\"blur\" label={ __( 'Blur', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl />\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 />\n\t\t\t\t\t</Control>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( { label, bind, children }: { bind: string; label: string; children: React.ReactNode } ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid item xs={ 6 }>\n\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\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 * as React from 'react';\nimport { useRef, 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\tTypography,\n\tUnstableTag,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\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\tsetValues: ( newValue: T[] ) => void;\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};\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\taddToBottom = false,\n\tvalues: repeaterValues = [],\n\tsetValues: setRepeaterValues,\n}: RepeaterProps< Item< T > > ) => {\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\n\t\tif ( addToBottom ) {\n\t\t\treturn setRepeaterValues( [ ...repeaterValues, newItem ] );\n\t\t}\n\n\t\tsetRepeaterValues( [ newItem, ...repeaterValues ] );\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues( [\n\t\t\t...repeaterValues.slice( 0, index ),\n\t\t\tstructuredClone( repeaterValues[ index ] ),\n\t\t\t...repeaterValues.slice( index ),\n\t\t] );\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues( repeaterValues.filter( ( _, i ) => i !== index ) );\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues(\n\t\t\trepeaterValues.map( ( value, i ) => {\n\t\t\t\tif ( i === index ) {\n\t\t\t\t\tconst { disabled, ...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, ...( disabled ? {} : { 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\treturn (\n\t\t<Stack>\n\t\t\t<Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" sx={ { pb: 1 } }>\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<IconButton size={ SIZE } onClick={ addRepeaterItem } aria-label={ __( 'Add item', 'elementor' ) }>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t{ repeaterValues.map( ( value, index ) => (\n\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tbind={ String( index ) }\n\t\t\t\t\t\tdisabled={ value.disabled }\n\t\t\t\t\t\tlabel={ <itemSettings.Label value={ value } /> }\n\t\t\t\t\t\tstartIcon={ <itemSettings.Icon value={ value } /> }\n\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( props ) => <itemSettings.Content { ...props } value={ value } bind={ String( index ) } /> }\n\t\t\t\t\t</RepeaterItem>\n\t\t\t\t) ) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n};\n\ntype RepeaterItemProps = {\n\tlabel: React.ReactNode;\n\tbind: string;\n\tdisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( { anchorEl }: { anchorEl: AnchorEl } ) => React.ReactNode;\n};\n\nconst RepeaterItem = ( {\n\tlabel,\n\tbind,\n\tdisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n}: RepeaterItemProps ) => {\n\tconst popupId = `repeater-popup-${ bind }`;\n\tconst controlRef = useRef< HTMLElement >( null );\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\n\n\tconst popoverState = usePopupState( { popupId, variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tlabel={ label }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tref={ controlRef }\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<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ duplicateItem }\n\t\t\t\t\t\t\taria-label={ __( 'Duplicate item', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ toggleDisableItem }\n\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\tdisabled ? __( 'Enable item', 'elementor' ) : __( 'Disable item', 'elementor' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ disabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ removeItem }\n\t\t\t\t\t\t\taria-label={ __( 'Remove item', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\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: controlRef.current?.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>\n\t\t\t\t<Box>{ children( { anchorEl } ) }</Box>\n\t\t\t</Popover>\n\t\t</>\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\ntype ToggleControlProps< T extends PropValue > = {\n\toptions: ToggleButtonGroupItem< T >[];\n\tfullWidth?: boolean;\n\tsize?: ToggleButtonProps[ 'size' ];\n};\n\nexport const ToggleControl = createControl(\n\t( { options, fullWidth = false, size = 'tiny' }: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst handleToggle = ( option: StringPropValue[ 'value' ] | null ) => {\n\t\t\tsetValue( option );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\titems={ options }\n\t\t\t\tvalue={ value ?? null }\n\t\t\t\tonChange={ handleToggle }\n\t\t\t\texclusive={ true }\n\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\tsize={ size }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport {\n\ttype StackProps,\n\tstyled,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttype ToggleButtonProps,\n\tTooltip,\n\tuseTheme,\n} from '@elementor/ui';\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`;\n\ntype ExclusiveValue< TValue > = TValue;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\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\texclusive = false,\n\tfullWidth = false,\n}: Props< TValue > ) => {\n\tconst isRtl = 'rtl' === useTheme().direction;\n\n\tconst handleChange = (\n\t\t_: React.MouseEvent< HTMLElement >,\n\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t) => {\n\t\tonChange( newValue as never );\n\t};\n\n\treturn (\n\t\t<StyledToggleButtonGroup\n\t\t\tjustify={ justify }\n\t\t\tvalue={ value }\n\t\t\tonChange={ handleChange }\n\t\t\texclusive={ exclusive }\n\t\t\tsx={ {\n\t\t\t\tdirection: isRtl ? 'rtl /* @noflip */' : 'ltr /* @noflip */',\n\t\t\t} }\n\t\t>\n\t\t\t{ items.map( ( { label, value: buttonValue, renderContent: Content, showTooltip } ) =>\n\t\t\t\tshowTooltip ? (\n\t\t\t\t\t<Tooltip key={ buttonValue } title={ label } disableFocusListener={ true } placement=\"top\">\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</Tooltip>\n\t\t\t\t) : (\n\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\tkey={ buttonValue }\n\t\t\t\t\t\tvalue={ buttonValue }\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t)\n\t\t\t) }\n\t\t</StyledToggleButtonGroup>\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\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder,\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 } = 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\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tinputProps={ { step } }\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, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { bindPopover, bindToggle, Grid, Popover, Stack, ToggleButton, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\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\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\titems,\n\tmultiSizePropTypeUtil,\n}: Props< TMultiPropType, TPropValue > ) {\n\tconst popupId = useId();\n\tconst controlRef = useRef< HTMLElement >( null );\n\tconst popupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst {\n\t\tpropType: multiSizePropType,\n\t\tvalue: multiSizeValue,\n\t\tsetValue: setMultiSizeValue,\n\t} = useBoundProp( multiSizePropTypeUtil );\n\n\tconst { value: sizeValue, setValue: setSizeValue } = useBoundProp( sizePropTypeUtil );\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 isMixed = !! multiSizeValue;\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ controlRef }>\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<Stack direction=\"row\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t\t<SizeControl placeholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined } />\n\t\t\t\t\t\t<ToggleButton\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\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t{ ...bindToggle( popupState ) }\n\t\t\t\t\t\t\tselected={ popupState.isOpen }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t</ToggleButton>\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, p: 2, pt: 1, width: controlRef.current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<PropProvider propType={ multiSizePropType } value={ getMultiSizeValues() } setValue={ setNestedProp }>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 0 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 1 ] } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 3 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 2 ] } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Stack>\n\t\t\t\t</PropProvider>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nconst MultiSizeValueControl = ( { item }: { item: Item } ) => (\n\t<PropKeyProvider bind={ item.bind }>\n\t\t<Grid item xs={ 6 }>\n\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<ControlLabel>{ item.label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<SizeControl startIcon={ item.icon } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n);\n","import * as React from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { SizeControl } from './size-control';\n\nexport const LinkedDimensionsControl = createControl( ( { label }: { label: string } ) => {\n\tconst { value: dimensionsValue, setValue: setDimensionsValue, propType } = useBoundProp( dimensionsPropTypeUtil );\n\tconst { value: sizeValue, setValue: setSizeValue } = useBoundProp( sizePropTypeUtil );\n\n\tconst isLinked = ! dimensionsValue && ! sizeValue ? true : !! sizeValue;\n\n\tconst onLinkToggle = () => {\n\t\tif ( ! isLinked ) {\n\t\t\tsetSizeValue( dimensionsValue?.top?.value );\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\tsetDimensionsValue( {\n\t\t\ttop: value,\n\t\t\tright: value,\n\t\t\tbottom: value,\n\t\t\tleft: value,\n\t\t} );\n\t};\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ dimensionsValue } setValue={ setDimensionsValue }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<ToggleButton\n\t\t\t\t\taria-label={ __( 'Link Inputs', 'elementor' ) }\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t>\n\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t</ToggleButton>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Top', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'top' }\n\t\t\t\t\t\t\tstartIcon={ <SideTopIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Right', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'right' }\n\t\t\t\t\t\t\tstartIcon={ <SideRightIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Bottom', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'bottom' }\n\t\t\t\t\t\t\tstartIcon={ <SideBottomIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Left', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'left' }\n\t\t\t\t\t\t\tstartIcon={ <SideLeftIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = ( { bind, startIcon, isLinked }: { bind: PropKey; startIcon: React.ReactNode; isLinked: boolean } ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl startIcon={ startIcon } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl startIcon={ startIcon } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import { Fragment, useId, useState } from 'react';\nimport * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { ChevronDownIcon, EditIcon, PhotoIcon, SearchIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tDivider,\n\tIconButton,\n\tInputAdornment,\n\tLink,\n\tListSubheader,\n\tMenuItem,\n\tMenuList,\n\tPopover,\n\tStack,\n\tTextField,\n\tTypography,\n\tUnstableTag,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\nimport { useFilteredFontFamilies } from '../hooks/use-filtered-font-families';\n\nconst SIZE = 'tiny';\n\nexport const FontFamilyControl = createControl( ( { fontFamilies } ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { value: fontFamily, setValue: setFontFamily } = useBoundProp( stringPropTypeUtil );\n\n\tconst popupId = useId();\n\tconst popoverState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst filteredFontFamilies = useFilteredFontFamilies( fontFamilies, searchValue );\n\n\tif ( ! filteredFontFamilies ) {\n\t\treturn null;\n\t}\n\n\tconst handleSearch = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetSearchValue( event.target.value );\n\t};\n\n\tconst handleClose = () => {\n\t\tsetSearchValue( '' );\n\n\t\tpopoverState.close();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ fontFamily }\n\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tfullWidth\n\t\t\t/>\n\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t>\n\t\t\t\t<Stack>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t\t<EditIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ __( 'Font Family', 'elementor' ) }</Typography>\n\t\t\t\t\t\t<IconButton size={ SIZE } sx={ { ml: 'auto' } } onClick={ handleClose }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\n\t\t\t\t\t<Box px={ 1.5 } pb={ 1 }>\n\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\t\t\t\tonChange={ handleSearch }\n\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t\t\t<InputAdornment position=\"start\">\n\t\t\t\t\t\t\t\t\t\t<SearchIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Divider />\n\t\t\t\t\t<Box sx={ { overflowY: 'auto', height: 260, width: 220 } }>\n\t\t\t\t\t\t{ filteredFontFamilies.length > 0 ? (\n\t\t\t\t\t\t\t<MenuList role=\"listbox\" tabIndex={ 0 }>\n\t\t\t\t\t\t\t\t{ filteredFontFamilies.map( ( [ category, items ], index ) => (\n\t\t\t\t\t\t\t\t\t<Fragment key={ index }>\n\t\t\t\t\t\t\t\t\t\t<ListSubheader sx={ { typography: 'caption', color: 'text.tertiary' } }>\n\t\t\t\t\t\t\t\t\t\t\t{ category }\n\t\t\t\t\t\t\t\t\t\t</ListSubheader>\n\t\t\t\t\t\t\t\t\t\t{ items.map( ( item ) => {\n\t\t\t\t\t\t\t\t\t\t\tconst isSelected = item === fontFamily;\n\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={ item }\n\t\t\t\t\t\t\t\t\t\t\t\t\tselected={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\t\t\t\t\t\t\t\tautoFocus={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetFontFamily( item );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleClose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ { typography: 'caption' } }\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={ { fontFamily: item } }\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ item }\n\t\t\t\t\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</MenuList>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Stack alignItems=\"center\" p={ 2.5 } gap={ 1.5 }>\n\t\t\t\t\t\t\t\t<PhotoIcon fontSize=\"large\" />\n\t\t\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t“{ searchValue }”.\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{ __( 'Clear the filters', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t{ __( 'and try again.', 'elementor' ) }\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Box>\n\t\t\t\t</Stack>\n\t\t\t</Popover>\n\t\t</>\n\t);\n} );\n","import { __ } from '@wordpress/i18n';\n\nexport type SupportedFonts = 'system' | 'googlefonts' | 'customfonts';\n\nconst supportedCategories: Record< SupportedFonts, string > = {\n\tsystem: __( 'System', 'elementor' ),\n\tgooglefonts: __( 'Google Fonts', 'elementor' ),\n\tcustomfonts: __( 'Custom Fonts', 'elementor' ),\n};\n\nexport const useFilteredFontFamilies = ( fontFamilies: Record< string, SupportedFonts >, searchValue: string ) => {\n\tconst filteredFontFamilies = Object.entries( fontFamilies ).reduce< Map< string, string[] > >(\n\t\t( acc, [ font, category ] ) => {\n\t\t\tconst isMatch = font.toLowerCase().includes( searchValue.trim().toLowerCase() );\n\n\t\t\tif ( ! isMatch ) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tconst categoryLabel = supportedCategories[ category as SupportedFonts ];\n\n\t\t\tif ( categoryLabel ) {\n\t\t\t\tconst existingCategory = acc.get( categoryLabel );\n\n\t\t\t\tif ( existingCategory ) {\n\t\t\t\t\texistingCategory.push( font );\n\t\t\t\t} else {\n\t\t\t\t\tacc.set( categoryLabel, [ font ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn acc;\n\t\t},\n\t\tnew Map()\n\t);\n\n\treturn [ ...filteredFontFamilies ];\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 } = 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\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 { useState } from 'react';\nimport { booleanPropTypeUtil, linkPropTypeUtil, type LinkPropValue, numberPropTypeUtil } from '@elementor/editor-props';\nimport { type HttpResponse, httpService } from '@elementor/http';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Collapse, Divider, Grid, IconButton, Stack, Switch } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport {\n\tAutocompleteControl,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from './autocomplete-control';\n\ntype Props = {\n\tqueryOptions: {\n\t\trequestParams: object;\n\t\tendpoint: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n};\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ];\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\n\nconst SIZE = 'tiny';\n\nexport const LinkControl = createControl( ( props: Props ) => {\n\tconst { value, path, setValue, ...propContext } = useBoundProp( linkPropTypeUtil );\n\tconst [ linkSessionValue, setLinkSessionValue ] = useSessionStorage< LinkSessionValue >( path.join( '/' ) );\n\n\tconst {\n\t\tallowCustomValues,\n\t\tqueryOptions: { endpoint = '', requestParams = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t} = props || {};\n\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value )\n\t);\n\n\tconst onEnabledChange = () => {\n\t\tconst { meta } = linkSessionValue ?? {};\n\t\tconst { isEnabled } = meta ?? {};\n\n\t\tsetValue( isEnabled ? null : linkSessionValue?.value ?? { destination: null } );\n\t\tsetLinkSessionValue( { value, meta: { isEnabled: ! isEnabled } } );\n\t};\n\n\tconst onOptionChange = ( newValue: number | null ) => {\n\t\tconst valueToSave = {\n\t\t\t...value,\n\t\t\tdestination: { $$type: 'number', value: newValue },\n\t\t\tlabel: {\n\t\t\t\t$$type: 'string',\n\t\t\t\tvalue: findMatchingOption( options, newValue?.toString() )?.label || '',\n\t\t\t},\n\t\t};\n\n\t\tonSaveNewValue( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tconst valueToSave = {\n\t\t\t...value,\n\t\t\tdestination: { $$type: 'url', value: newValue },\n\t\t\tlabel: null,\n\t\t};\n\n\t\tonSaveNewValue( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst onSaveNewValue = ( newValue: typeof value ) => {\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( newValue )();\n\t};\n\n\tconst debounceFetch = ( newValue: string ) =>\n\t\tdebounce(\n\t\t\t() =>\n\t\t\t\tfetchOptions( endpoint, { ...requestParams, term: newValue } ).then( ( newOptions ) => {\n\t\t\t\t\tsetOptions( formatOptions( newOptions ) );\n\t\t\t\t} ),\n\t\t\t400\n\t\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<Divider />\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} }\n\t\t\t\t>\n\t\t\t\t\t<ControlLabel>{ __( 'Link', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t<ToggleIconControl\n\t\t\t\t\t\tenabled={ linkSessionValue?.meta?.isEnabled ?? false }\n\t\t\t\t\t\tonIconClick={ onEnabledChange }\n\t\t\t\t\t\tlabel={ __( 'Toggle Link', 'elementor' ) }\n\t\t\t\t\t/>\n\t\t\t\t</Stack>\n\t\t\t\t<Collapse in={ linkSessionValue?.meta?.isEnabled } 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<AutocompleteControl\n\t\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\toptionRestrictedPropTypeUtil={ numberPropTypeUtil }\n\t\t\t\t\t\t\t\tonOptionChangeCallback={ onOptionChange }\n\t\t\t\t\t\t\t\tonTextChangeCallback={ onTextChange }\n\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\tcustomValue={ value?.destination?.value?.toString() }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'isTargetBlank' }>\n\t\t\t\t\t\t\t<SwitchControl />\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\tenabled: boolean;\n\tonIconClick: () => void;\n\tlabel?: string;\n};\n\nconst ToggleIconControl = ( { enabled, onIconClick, label }: ToggleIconControlProps ) => {\n\treturn (\n\t\t<IconButton size={ SIZE } onClick={ onIconClick } aria-label={ label }>\n\t\t\t{ enabled ? <MinusIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconButton>\n\t);\n};\n\n// @TODO Should be refactored in ED-16323\nconst SwitchControl = () => {\n\tconst { value = false, setValue } = useBoundProp( booleanPropTypeUtil );\n\n\tconst onClick = () => {\n\t\tsetValue( ! value );\n\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<ControlLabel>{ __( 'Open in new tab', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item>\n\t\t\t\t<Switch checked={ value } onClick={ onClick } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n\nasync function fetchOptions( ajaxUrl: string, params: object ) {\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\nfunction debounce< TArgs extends unknown[] >( fn: ( ...args: TArgs ) => unknown, timeout: number ) {\n\tlet timer: ReturnType< typeof setTimeout >;\n\n\treturn ( ...args: TArgs ) => {\n\t\tclearTimeout( timer );\n\n\t\ttimer = setTimeout( () => {\n\t\t\tfn( ...args );\n\t\t}, timeout );\n\t};\n}\n","import * as React from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { 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} = useBoundProp( layoutDirectionPropTypeUtil );\n\tconst { value: sizeValue, setValue: setSizeValue } = 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 );\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 LinkedIcon = isLinked ? LinkIcon : DetachIcon;\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<ToggleButton\n\t\t\t\t\taria-label={ __( 'Link Inputs', 'elementor' ) }\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t>\n\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t</ToggleButton>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Column', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control bind={ 'column' } isLinked={ isLinked } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Row', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control bind={ 'row' } isLinked={ isLinked } />\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 = ( { bind, isLinked }: { bind: PropKey; isLinked: boolean } ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React 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 { useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\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 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\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 { open } = useWpMediaFrame( {\n\t\ttypes: [ 'image/svg+xml' ],\n\t\tallowedExtensions: [ '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\treturn (\n\t\t<Stack gap={ 1 }>\n\t\t\t<ControlLabel> { __( 'Choose SVG', 'elementor' ) } </ControlLabel>\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={ () => open( { 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={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upload SVG', '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 { backgroundPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<PropKeyProvider bind=\"background-overlay\">\n\t\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t\t</PropKeyProvider>\n\t\t\t\t<PropKeyProvider bind=\"color\">\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Color', 'elementor' ) }</ControlLabel>\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<ColorControl />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\ttype PropKey,\n} from '@elementor/editor-props';\nimport { Box, CardMedia, Grid, Stack, Tab, TabPanel, Tabs, UnstableColorIndicator, useTabs } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\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 { 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';\n\nconst initialBackgroundOverlay = ( backgroundPlaceholderImage: string ): 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: backgroundPlaceholderImage,\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\ntype OverlayType = 'image' | 'color';\n\ntype ImageSrcAttachment = { id: { $$type: 'image-attachment-id'; value: number }; url: null };\n\ntype ImageSrcUrl = { url: { $$type: 'url'; value: string }; id: null };\n\ntype BackgroundImageOverlay = {\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: ImageSrcAttachment | ImageSrcUrl;\n\t\t\t\t};\n\t\t\t\tsize: {\n\t\t\t\t\t$$type: 'string';\n\t\t\t\t\tvalue: 'thumbnail' | 'medium' | 'large' | 'full';\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n};\n\nexport const BackgroundOverlayRepeaterControl = createControl( () => {\n\tconst { propType, value: overlayValues, setValue } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ overlayValues } setValue={ setValue }>\n\t\t\t<Repeater\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: initialBackgroundOverlay( env.background_placeholder_image ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemContent = ( { bind, value }: { bind: PropKey; value: BackgroundOverlayItemPropValue } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content value={ value } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst activeTab = deriveOverlayType( value.$$type );\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< OverlayType >( activeTab );\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 { ...getTabsProps() } aria-label={ __( 'Background Overlay', 'elementor' ) }>\n\t\t\t\t\t<Tab label={ __( 'Image', 'elementor' ) } { ...getTabProps( 'image' ) } />\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<Stack gap={ 1.5 }>\n\t\t\t\t\t<ImageOverlayContent />\n\t\t\t\t</Stack>\n\t\t\t</TabPanel>\n\t\t\t<TabPanel { ...getTabPanelProps( 'color' ) } sx={ { p: 1.5 } }>\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<ColorControl propTypeUtil={ backgroundColorOverlayPropTypeUtil } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\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\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst ItemIconColor = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\treturn <UnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value } />;\n};\n\nconst ItemIconImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn <CardMedia image={ imageUrl } sx={ { height: 13, width: 13, borderRadius: '4px' } } />;\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\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst ItemLabelColor = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\treturn <span>{ value.value }</span>;\n};\n\nconst ItemLabelImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn <span>{ imageTitle }</span>;\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<ImageControl\n\t\t\t\t\t\t\tresolutionLabel={ __( 'Resolution', 'elementor' ) }\n\t\t\t\t\t\t\tsizes={ backgroundResolutionOptions }\n\t\t\t\t\t\t/>\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 deriveOverlayType = ( type: string ): OverlayType => {\n\tif ( type === 'background-color-overlay' ) {\n\t\treturn 'color';\n\t}\n\n\tif ( type === 'background-image-overlay' ) {\n\t\treturn 'image';\n\t}\n\n\tthrow new Error( `Invalid overlay type: ${ type }` );\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 = attachment?.subtype ? `.${ attachment.subtype }` : '';\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","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 { PinIcon, PinnedOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlLabel } from '../../../../components/control-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\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<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Attachment', 'elementor' ) }</ControlLabel>\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={ attachmentControlOptions } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, MenuItem, 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 { 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\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={ 2 }>\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<ControlLabel>{ __( 'Position', 'elementor' ) }</ControlLabel>\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<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvalue={ ( backgroundImageOffsetContext.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{ backgroundPositionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuItem>\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 { ...backgroundImageOffsetContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 2 }>\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) : 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 { ControlLabel } from '../../../../components/control-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\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<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Repeat', 'elementor' ) }</ControlLabel>\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</Grid>\n\t);\n};\n","import * as React 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 { ControlLabel } from '../../../../components/control-label';\nimport {\n\tControlToggleButtonGroup,\n\ttype ToggleButtonGroupItem,\n} from '../../../../components/control-toggle-button-group';\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\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<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>{ __( 'Size', 'elementor' ) }</ControlLabel>\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\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\tonChange={ handleSizeChange }\n\t\t\t\t\t\t/>\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 { ...backgroundImageScaleContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 2 }>\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 startIcon={ <ArrowsMoveHorizontalIcon 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={ 'height' }>\n\t\t\t\t\t\t\t\t\t<SizeControl startIcon={ <ArrowsMoveVerticalIcon 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) : null }\n\t\t</Grid>\n\t);\n};\n"],"mappings":"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","names":["React","import_ui","React","import_react","value","value","React","React","import_react","React","import_editor_props","import_ui","import_i18n","React","import_ui","React","import_icons","import_ui","React","import_ui","React","import_react","MenuItem","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_react","import_ui","import_react","units","React","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_ui","React","import_editor_props","import_ui","import_i18n","React","import_react","import_icons","import_ui","import_i18n","Control","React","import_editor_props","React","import_ui","Content","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_icons","import_ui","import_i18n","Control","import_react","React","import_editor_props","import_icons","import_ui","import_i18n","import_i18n","SIZE","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","SIZE","React","import_editor_props","import_icons","import_ui","import_i18n","Control","React","import_editor_props","import_icons","import_ui","import_wp_media","import_i18n","React","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_ui","import_wp_media","import_i18n","React","import_icons","import_ui","import_i18n","React","import_editor_props","import_icons","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_editor_props","import_icons","import_ui","import_i18n","ItemIcon","ItemLabel","ItemContent","Content"]}
|