@elementor/editor-controls 1.5.0 → 3.32.0-21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +0 -22
  2. package/dist/index.d.mts +95 -25
  3. package/dist/index.d.ts +95 -25
  4. package/dist/index.js +2045 -1041
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +1962 -964
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +18 -18
  9. package/src/components/control-toggle-button-group.tsx +78 -14
  10. package/src/components/floating-bar.tsx +45 -0
  11. package/src/components/{font-family-selector.tsx → item-selector.tsx} +62 -50
  12. package/src/components/repeater.tsx +1 -1
  13. package/src/components/restricted-link-infotip.tsx +76 -0
  14. package/src/components/size-control/size-input.tsx +8 -7
  15. package/src/components/size-control/text-field-inner-selection.tsx +60 -14
  16. package/src/components/text-field-popover.tsx +30 -7
  17. package/src/components/unstable-repeater/actions/add-item-action.tsx +50 -0
  18. package/src/components/unstable-repeater/actions/disable-item-action.tsx +39 -0
  19. package/src/components/unstable-repeater/actions/duplicate-item-action.tsx +32 -0
  20. package/src/components/unstable-repeater/actions/remove-item-action.tsx +27 -0
  21. package/src/components/unstable-repeater/context/repeater-context.tsx +137 -0
  22. package/src/components/unstable-repeater/header/header.tsx +23 -0
  23. package/src/components/unstable-repeater/index.ts +5 -0
  24. package/src/components/unstable-repeater/items/edit-item-popover.tsx +28 -0
  25. package/src/components/unstable-repeater/items/item.tsx +71 -0
  26. package/src/components/unstable-repeater/items/items-container.tsx +49 -0
  27. package/src/components/unstable-repeater/items/use-popover.tsx +26 -0
  28. package/src/{locations.ts → components/unstable-repeater/locations.ts} +9 -1
  29. package/src/components/unstable-repeater/types.ts +26 -0
  30. package/src/components/unstable-repeater/unstable-repeater.tsx +24 -0
  31. package/src/control-actions/control-actions.tsx +3 -20
  32. package/src/control-replacements.tsx +41 -0
  33. package/src/controls/background-control/background-control.tsx +1 -8
  34. package/src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx +17 -16
  35. package/src/controls/equal-unequal-sizes-control.tsx +2 -9
  36. package/src/controls/filter-control/drop-shadow-item-content.tsx +4 -6
  37. package/src/controls/filter-control/drop-shadow-item-label.tsx +2 -2
  38. package/src/controls/filter-repeater-control.tsx +149 -110
  39. package/src/controls/font-family-control/font-family-control.tsx +22 -10
  40. package/src/controls/key-value-control.tsx +9 -6
  41. package/src/controls/link-control.tsx +8 -91
  42. package/src/controls/linked-dimensions-control.tsx +3 -16
  43. package/src/controls/number-control.tsx +10 -1
  44. package/src/controls/position-control.tsx +4 -16
  45. package/src/controls/repeatable-control.tsx +8 -5
  46. package/src/controls/select-control.tsx +7 -2
  47. package/src/controls/selection-size-control.tsx +74 -0
  48. package/src/controls/size-control.tsx +181 -126
  49. package/src/controls/stroke-control.tsx +2 -2
  50. package/src/controls/toggle-control.tsx +3 -2
  51. package/src/controls/transform-control/functions/axis-row.tsx +4 -2
  52. package/src/controls/transform-control/functions/move.tsx +2 -1
  53. package/src/controls/transform-control/functions/rotate.tsx +48 -0
  54. package/src/controls/transform-control/functions/scale-axis-row.tsx +32 -0
  55. package/src/controls/transform-control/functions/scale.tsx +45 -0
  56. package/src/controls/transform-control/functions/skew.tsx +43 -0
  57. package/src/controls/transform-control/transform-content.tsx +60 -23
  58. package/src/controls/transform-control/transform-icon.tsx +10 -2
  59. package/src/controls/transform-control/transform-label.tsx +39 -2
  60. package/src/controls/transform-control/transform-repeater-control.tsx +2 -10
  61. package/src/controls/transform-control/types.ts +58 -0
  62. package/src/controls/transform-control/use-transform-tabs-history.tsx +107 -0
  63. package/src/controls/transition-control/data.ts +34 -0
  64. package/src/controls/transition-control/transition-repeater-control.tsx +63 -0
  65. package/src/controls/transition-control/transition-selector.tsx +88 -0
  66. package/src/controls/unstable-transform-control/unstable-transform-repeater-control.tsx +35 -0
  67. package/src/hooks/use-filtered-items-list.ts +24 -0
  68. package/src/hooks/use-size-extended-options.ts +1 -6
  69. package/src/index.ts +13 -3
  70. package/src/utils/size-control.ts +12 -6
  71. package/src/hooks/use-filtered-font-families.ts +0 -24
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-form-label.tsx","../src/create-control.tsx","../src/control-replacements.tsx","../src/hooks/use-unfiltered-files-upload.ts","../src/api.ts","../src/controls/image-media-control.tsx","../src/control-actions/control-actions.tsx","../src/control-actions/control-actions-context.tsx","../src/controls/select-control.tsx","../src/controls/text-control.tsx","../src/controls/text-area-control.tsx","../src/controls/size-control.tsx","../src/components/size-control/size-input.tsx","../src/utils/size-control.ts","../src/components/size-control/text-field-inner-selection.tsx","../src/components/text-field-popover.tsx","../src/hooks/use-size-extended-options.ts","../src/hooks/use-sync-external-state.tsx","../src/controls/stroke-control.tsx","../src/components/section-content.tsx","../src/controls/color-control.tsx","../src/controls/box-shadow-repeater-control.tsx","../src/components/popover-content.tsx","../src/components/popover-grid-container.tsx","../src/components/repeater.tsx","../src/control-adornments/control-adornments.tsx","../src/control-adornments/control-adornments-context.tsx","../src/locations.ts","../src/components/sortable.tsx","../src/controls/filter-repeater-control.tsx","../src/components/control-label.tsx","../src/controls/filter-control/drop-shadow-item-content.tsx","../src/controls/filter-control/drop-shadow-item-label.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/components/conditional-tooltip.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/controls/linked-dimensions-control.tsx","../src/controls/font-family-control/font-family-control.tsx","../src/components/font-family-selector.tsx","../src/controls/font-family-control/enqueue-font.tsx","../src/hooks/use-filtered-font-families.ts","../src/controls/url-control.tsx","../src/controls/link-control.tsx","../src/components/autocomplete.tsx","../src/controls/switch-control.tsx","../src/controls/gap-control.tsx","../src/controls/aspect-ratio-control.tsx","../src/controls/svg-media-control.tsx","../src/components/enable-unfiltered-modal.tsx","../src/controls/background-control/background-control.tsx","../src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx","../src/env.ts","../src/controls/background-control/background-gradient-color-control.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx","../src/controls/background-control/background-overlay/use-background-tabs-history.ts","../src/controls/repeatable-control.tsx","../src/hooks/use-repeatable-control-context.ts","../src/controls/key-value-control.tsx","../src/controls/position-control.tsx","../src/controls/transform-control/transform-repeater-control.tsx","../src/controls/transform-control/transform-content.tsx","../src/controls/transform-control/functions/move.tsx","../src/controls/transform-control/functions/axis-row.tsx","../src/controls/transform-control/transform-icon.tsx","../src/controls/transform-control/transform-label.tsx"],"sourcesContent":["// control types\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 { FilterRepeaterControl } from './controls/filter-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/font-family-control';\nexport { UrlControl } from './controls/url-control';\nexport { LinkControl } from './controls/link-control';\nexport { GapControl } from './controls/gap-control';\nexport { AspectRatioControl } from './controls/aspect-ratio-control';\nexport { SvgMediaControl } from './controls/svg-media-control';\nexport { BackgroundControl } from './controls/background-control/background-control';\nexport { SwitchControl } from './controls/switch-control';\nexport { RepeatableControl } from './controls/repeatable-control';\nexport { KeyValueControl } from './controls/key-value-control';\nexport { PositionControl } from './controls/position-control';\nexport { TransformRepeaterControl } from './controls/transform-control/transform-repeater-control';\nexport { PopoverContent } from './components/popover-content';\n\n// components\nexport { ControlFormLabel } from './components/control-form-label';\nexport { ControlToggleButtonGroup } from './components/control-toggle-button-group';\nexport { FontFamilySelector } from './components/font-family-selector';\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';\nexport type { ExtendedOption, Unit } from './utils/size-control';\nexport type { ToggleControlProps } from './controls/toggle-control';\nexport type { FontCategory } from './controls/font-family-control/font-family-control';\n\n// providers\nexport { createControlReplacementsRegistry, ControlReplacementsProvider } from './control-replacements';\nexport { ControlActionsProvider, useControlActions } from './control-actions/control-actions-context';\nexport { useBoundProp, PropProvider, PropKeyProvider } from './bound-prop-context';\nexport { ControlAdornmentsProvider } from './control-adornments/control-adornments-context';\nexport { ControlAdornments } from './control-adornments/control-adornments';\n\nexport { injectIntoRepeaterItemIcon, injectIntoRepeaterItemLabel } from './locations';\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 { type MediaType } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\nimport { ImageMediaControl } from './image-media-control';\nimport { SelectControl } from './select-control';\n\ntype ImageControlProps = {\n\tsizes: { label: string; value: string }[];\n\tshowMode?: 'all' | 'media' | 'sizes';\n};\n\nexport const ImageControl = createControl( ( { sizes, showMode = 'all' }: ImageControlProps ) => {\n\tconst propContext = useBoundProp( imagePropTypeUtil );\n\n\tlet componentToRender;\n\tswitch ( showMode ) {\n\t\tcase 'media':\n\t\t\tcomponentToRender = <ImageSrcControl />;\n\t\t\tbreak;\n\t\tcase 'sizes':\n\t\t\tcomponentToRender = <ImageSizeControl sizes={ sizes } />;\n\t\t\tbreak;\n\t\tcase 'all':\n\t\tdefault:\n\t\t\tcomponentToRender = (\n\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t<ControlFormLabel>{ __( 'Image', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t<ImageSrcControl />\n\t\t\t\t\t<Grid container gap={ 1.5 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Resolution', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t\t<ImageSizeControl sizes={ sizes } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Stack>\n\t\t\t);\n\t}\n\n\treturn <PropProvider { ...propContext }>{ componentToRender }</PropProvider>;\n} );\n\nconst ImageSrcControl = () => {\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst mediaTypes: MediaType[] = allowSvgUpload ? [ 'image', 'svg' ] : [ 'image' ];\n\n\treturn (\n\t\t<PropKeyProvider bind={ 'src' }>\n\t\t\t<ImageMediaControl mediaTypes={ mediaTypes } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst ImageSizeControl = ( { sizes }: { sizes: ImageControlProps[ 'sizes' ] } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t<SelectControl options={ sizes } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { type CreateOptions, type PropKey, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { HookOutsideProviderError } from './errors';\n\ntype SetValueMeta = {\n\tbind?: PropKey;\n};\n\nexport type SetValue< T > = ( value: T, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\ntype PropContext< T extends PropValue, P extends PropType > = {\n\tsetValue: SetValue< T >;\n\tvalue: T | null;\n\tpropType: P;\n\tplaceholder?: T;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n};\n\nconst PropContext = createContext< PropContext< PropValue, PropType > | null >( null );\n\nexport type PropProviderProps< T extends PropValue, P extends PropType > = React.PropsWithChildren<\n\tPropContext< T, P >\n>;\n\nexport const PropProvider = < T extends PropValue, P extends PropType >( {\n\tchildren,\n\tvalue,\n\tsetValue,\n\tpropType,\n\tplaceholder,\n\tisDisabled,\n}: PropProviderProps< T, P > ) => {\n\treturn (\n\t\t<PropContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tvalue,\n\t\t\t\tpropType,\n\t\t\t\tsetValue: setValue as SetValue< PropValue >,\n\t\t\t\tplaceholder,\n\t\t\t\tisDisabled,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</PropContext.Provider>\n\t);\n};\n\nexport const usePropContext = < T extends PropValue, P extends PropType >() => {\n\tconst context = useContext( PropContext ) as PropContext< T, P > | null;\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: {\n\t\t\t\thook: 'usePropContext',\n\t\t\t\tprovider: 'PropProvider',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { createError } from '@elementor/utils';\n\nexport const MissingPropTypeError = createError( {\n\tcode: 'missing_prop_provider_prop_type',\n\tmessage: 'Prop type is missing',\n} );\n\nexport const UnsupportedParentError = createError( {\n\tcode: 'unsupported_prop_provider_prop_type',\n\tmessage: 'Parent prop type is not supported',\n} );\n\nexport const HookOutsideProviderError = createError( {\n\tcode: 'hook_outside_provider',\n\tmessage: 'Hook used outside of provider',\n} );\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport {\n\ttype ArrayPropType,\n\ttype ArrayPropValue,\n\ttype CreateOptions,\n\ttype ObjectPropType,\n\ttype ObjectPropValue,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { HookOutsideProviderError, MissingPropTypeError, UnsupportedParentError } from './errors';\nimport { type SetValue, usePropContext } from './prop-context';\n\nexport type PropKeyContextValue< T, P > = {\n\tbind: PropKey;\n\tsetValue: SetValue< T >;\n\tvalue: T;\n\tpropType: P;\n\tplaceholder?: T;\n\tpath: PropKey[];\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nconst PropKeyContext = createContext< PropKeyContextValue< PropValue, PropType > | null >( null );\n\ntype PropKeyProviderProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const PropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst { propType } = usePropContext();\n\n\tif ( ! propType ) {\n\t\tthrow new MissingPropTypeError( { context: { bind } } );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\treturn <ArrayPropKeyProvider bind={ bind }>{ children }</ArrayPropKeyProvider>;\n\t}\n\n\tif ( propType.kind === 'object' ) {\n\t\treturn <ObjectPropKeyProvider bind={ bind }>{ children }</ObjectPropKeyProvider>;\n\t}\n\n\tthrow new UnsupportedParentError( { context: { propType } } );\n};\n\nconst ObjectPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ObjectPropValue[ 'value' ], ObjectPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue: SetValue< PropValue > = ( value, options, meta ) => {\n\t\tconst newValue = {\n\t\t\t...context.value,\n\t\t\t[ bind ]: value,\n\t\t};\n\n\t\treturn context?.setValue( newValue, options, { ...meta, bind } );\n\t};\n\n\tconst value = context.value?.[ bind ];\n\tconst placeholder = context.placeholder?.[ bind ];\n\n\tconst propType = context.propType.shape[ bind ];\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, placeholder, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nconst ArrayPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ArrayPropValue[ 'value' ], ArrayPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue = ( value: PropValue, options?: CreateOptions ) => {\n\t\tconst newValue = [ ...( context.value ?? [] ) ];\n\n\t\tnewValue[ Number( bind ) ] = value;\n\n\t\treturn context?.setValue( newValue, options, { bind } );\n\t};\n\n\tconst value = context.value?.[ Number( bind ) ];\n\n\tconst propType = context.propType.item_prop_type;\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nexport const usePropKeyContext = () => {\n\tconst context = useContext( PropKeyContext );\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: { hook: 'usePropKeyContext', provider: 'PropKeyProvider' },\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { useState } from 'react';\nimport {\n\ttype CreateOptions,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropTypeUtil,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { MissingPropTypeError } from './errors';\nimport { type SetValue } from './prop-context';\nimport { type PropKeyContextValue, usePropKeyContext } from './prop-key-context';\n\ntype UseBoundProp< TValue extends PropValue > = {\n\tbind: PropKey;\n\tsetValue: SetValue< TValue | null >;\n\tvalue: TValue;\n\tpropType: PropType;\n\tplaceholder?: TValue;\n\tpath: PropKey[];\n\trestoreValue: () => void;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nexport function useBoundProp< T extends PropValue = PropValue, P extends PropType = PropType >(): PropKeyContextValue<\n\tT,\n\tP\n>;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil: PropTypeUtil< TKey, TValue >\n): UseBoundProp< TValue >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil?: PropTypeUtil< TKey, TValue >\n) {\n\tconst propKeyContext = usePropKeyContext();\n\n\tconst { isValid, validate, restoreValue } = useValidation( propKeyContext.propType );\n\n\tconst disabled = propKeyContext.isDisabled?.( propKeyContext.propType );\n\n\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn { ...propKeyContext, disabled } as PropKeyContextValue< PropValue, PropType >;\n\t}\n\n\tfunction setValue( value: TValue | null, options: CreateOptions, meta: { bind?: PropKey } ) {\n\t\tif ( ! validate( value ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value === null ) {\n\t\t\treturn propKeyContext?.setValue( null, options, meta );\n\t\t}\n\n\t\treturn propKeyContext?.setValue( propTypeUtil?.create( value, options ), {}, meta );\n\t}\n\n\tconst propType = resolveUnionPropType( propKeyContext.propType, propTypeUtil.key );\n\n\tconst value = propTypeUtil.extract( propKeyContext.value ?? propType.default ?? null );\n\tconst placeholder = propTypeUtil.extract( propKeyContext.placeholder ?? null );\n\n\treturn {\n\t\t...propKeyContext,\n\t\tpropType,\n\t\tsetValue,\n\t\tvalue: isValid ? value : null,\n\t\trestoreValue,\n\t\tplaceholder,\n\t\tdisabled,\n\t};\n}\n\nconst useValidation = ( propType: PropType ) => {\n\tconst [ isValid, setIsValid ] = useState( true );\n\n\t// If the value does not pass the prop type validation, set the isValid state to false.\n\t// This will prevent the value from being set in the model, and its fallback will be used instead.\n\tconst validate = ( value: PropValue | null ) => {\n\t\tlet valid = true;\n\n\t\tif ( propType.settings.required && value === null ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tsetIsValid( valid );\n\n\t\treturn valid;\n\t};\n\n\tconst restoreValue = () => setIsValid( true );\n\n\treturn {\n\t\tisValid,\n\t\tsetIsValid,\n\t\tvalidate,\n\t\trestoreValue,\n\t};\n};\n\n// utils\nconst resolveUnionPropType = ( propType: PropType, key: string ): PropType => {\n\tlet resolvedPropType = propType;\n\n\tif ( propType.kind === 'union' ) {\n\t\tresolvedPropType = propType.prop_types[ key ];\n\t}\n\n\tif ( ! resolvedPropType ) {\n\t\tthrow new MissingPropTypeError( { context: { key } } );\n\t}\n\n\treturn resolvedPropType;\n};\n","import * as React from 'react';\nimport { FormLabel, type FormLabelProps } from '@elementor/ui';\n\nexport const ControlFormLabel = ( props: FormLabelProps ) => {\n\treturn <FormLabel size=\"tiny\" { ...props } />;\n};\n","import * as React from 'react';\nimport { type ComponentProps, type ComponentType } from 'react';\nimport { ErrorBoundary } from '@elementor/ui';\n\nimport { useControlReplacement } from './control-replacements';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\nconst brandSymbol = Symbol( 'control' );\n\nexport type ControlComponent< TComponent extends AnyComponentType = AnyComponentType > = TComponent & {\n\t[ brandSymbol ]: true;\n};\n\nexport function createControl< T extends AnyComponentType >( Control: T ) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst Component = useControlReplacement( Control );\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<Component { ...props } />\n\t\t\t</ErrorBoundary>\n\t\t);\n\t} ) as ControlComponent< T >;\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from './bound-prop-context';\n\ntype ControlReplacement = {\n\tcomponent: ComponentType;\n\tcondition: ( { value }: ConditionArgs ) => boolean;\n};\n\ntype ConditionArgs = {\n\tvalue: PropValue;\n};\n\ntype Props = PropsWithChildren< { replacements: ControlReplacement[] } >;\n\nconst ControlReplacementContext = createContext< ControlReplacement[] >( [] );\n\nexport const ControlReplacementsProvider = ( { replacements, children }: Props ) => {\n\treturn <ControlReplacementContext.Provider value={ replacements }>{ children }</ControlReplacementContext.Provider>;\n};\n\nexport const useControlReplacement = ( OriginalComponent: ComponentType ) => {\n\tconst { value } = useBoundProp();\n\tconst replacements = useContext( ControlReplacementContext );\n\n\ttry {\n\t\tconst replacement = replacements.find( ( r ) => r.condition( { value } ) );\n\n\t\treturn replacement?.component ?? OriginalComponent;\n\t} catch {\n\t\treturn OriginalComponent;\n\t}\n};\n\nexport const createControlReplacementsRegistry = () => {\n\tconst controlReplacements: ControlReplacement[] = [];\n\n\tfunction registerControlReplacement( replacement: ControlReplacement ) {\n\t\tcontrolReplacements.push( replacement );\n\t}\n\n\tfunction getControlReplacements() {\n\t\treturn controlReplacements;\n\t}\n\n\treturn { registerControlReplacement, getControlReplacements };\n};\n","import { useMutation, useQuery, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\n\nexport const UNFILTERED_FILES_UPLOAD_KEY = 'elementor_unfiltered_files_upload';\n\nconst unfilteredFilesQueryKey = {\n\tqueryKey: [ UNFILTERED_FILES_UPLOAD_KEY ],\n};\n\ntype Value = '0' | '1';\n\nexport const useUnfilteredFilesUpload = () =>\n\tuseQuery( {\n\t\t...unfilteredFilesQueryKey,\n\t\tqueryFn: (): Promise< boolean > =>\n\t\t\tapiClient.getElementorSetting< Value >( UNFILTERED_FILES_UPLOAD_KEY ).then( ( res ) => {\n\t\t\t\treturn formatResponse( res );\n\t\t\t} ),\n\t\tstaleTime: Infinity,\n\t} );\n\nexport function useUpdateUnfilteredFilesUpload() {\n\tconst queryClient = useQueryClient();\n\n\tconst mutate = useMutation( {\n\t\tmutationFn: ( { allowUnfilteredFilesUpload }: { allowUnfilteredFilesUpload: boolean } ) =>\n\t\t\tapiClient.updateElementorSetting< Value >(\n\t\t\t\tUNFILTERED_FILES_UPLOAD_KEY,\n\t\t\t\tallowUnfilteredFilesUpload ? '1' : '0'\n\t\t\t),\n\t\tonSuccess: () => queryClient.invalidateQueries( unfilteredFilesQueryKey ),\n\t} );\n\n\treturn mutate;\n}\n\nconst formatResponse = ( response: Value ): boolean => {\n\treturn Boolean( response === '1' );\n};\n","import { httpService } from '@elementor/http-client';\n\nconst ELEMENTOR_SETTING_URL = 'elementor/v1/settings';\n\ntype Response< T > = { data: { value: T }; success: boolean };\n\nexport const apiClient = {\n\tgetElementorSetting: < T >( key: string ) =>\n\t\thttpService()\n\t\t\t.get< Response< T > >( `${ ELEMENTOR_SETTING_URL }/${ key }` )\n\t\t\t.then( ( res ) => formatSettingResponse( res.data ) ),\n\tupdateElementorSetting: < T >( key: string, value: T ) =>\n\t\thttpService().put( `${ ELEMENTOR_SETTING_URL }/${ key }`, { value } ),\n};\n\nconst formatSettingResponse = < T >( response: Response< T > ) => response.data.value;\n","import * as React from 'react';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from '@elementor/ui';\nimport { type MediaType, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype ImageMediaControlProps = {\n\tmediaTypes?: MediaType[];\n};\n\nexport const ImageMediaControl = createControl( ( { mediaTypes = [ 'image' ] }: ImageMediaControlProps ) => {\n\tconst { value, setValue } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes,\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Card variant=\"outlined\">\n\t\t\t\t<CardMedia image={ src } sx={ { height: 150 } }>\n\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t<Stack justifyContent=\"center\" alignItems=\"center\" width=\"100%\" height=\"100%\">\n\t\t\t\t\t\t\t<CircularProgress />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<></>\n\t\t\t\t\t) }\n\t\t\t\t</CardMedia>\n\t\t\t\t<CardOverlay>\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'browse' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Select image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t</CardOverlay>\n\t\t\t</Card>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropsWithChildren, type ReactElement } from 'react';\nimport { styled, UnstableFloatingActionBar } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { useControlActions } from './control-actions-context';\n\n// CSS hack to hide empty floating bars.\nconst FloatingBarContainer = styled( 'span' )`\n\tdisplay: contents;\n\n\t.MuiFloatingActionBar-popper:has( .MuiFloatingActionBar-actions:empty ) {\n\t\tdisplay: none;\n\t}\n\n\t.MuiFloatingActionBar-popper {\n\t\tz-index: 1000;\n\t}\n`;\n\ntype ControlActionsProps = PropsWithChildren< object >;\n\nexport default function ControlActions( { children }: ControlActionsProps ) {\n\tconst { items } = useControlActions();\n\tconst { disabled } = useBoundProp();\n\n\tif ( items.length === 0 || disabled ) {\n\t\treturn children;\n\t}\n\n\tconst menuItems = items.map( ( { MenuItem, id } ) => <MenuItem key={ id } /> );\n\n\treturn (\n\t\t<FloatingBarContainer>\n\t\t\t<UnstableFloatingActionBar actions={ menuItems }>{ children as ReactElement }</UnstableFloatingActionBar>\n\t\t</FloatingBarContainer>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\nexport type ControlActionsItems = Array< {\n\tid: string;\n\tMenuItem: React.ComponentType;\n} >;\n\ntype ControlActionsContext = {\n\titems: ControlActionsItems;\n};\n\nconst Context = createContext< ControlActionsContext | null >( null );\n\ntype ControlActionsProviderProps = PropsWithChildren< ControlActionsContext >;\n\nexport const ControlActionsProvider = ( { children, items }: ControlActionsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlActions = () => {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useControlActions must be used within a ControlActionsProvider' );\n\t}\n\n\treturn context;\n};\n","import * as React from 'react';\nimport { stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Select, type SelectChangeEvent, Typography } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\toptions: Array< { label: string; value: StringPropValue[ 'value' ]; disabled?: boolean } >;\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n};\n\nexport const SelectControl = createControl( ( { options, onChange }: Props ) => {\n\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\n\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\tconst newValue = event.target.value || null;\n\n\t\tonChange?.( newValue, value );\n\t\tsetValue( newValue );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Select\n\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\tdisplayEmpty\n\t\t\t\tsize=\"tiny\"\n\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\tconst findOptionByValue = ( searchValue: string | null ) =>\n\t\t\t\t\t\toptions.find( ( opt ) => opt.value === searchValue );\n\n\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\tif ( placeholder ) {\n\t\t\t\t\t\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\t\t\t\t\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t\t\t\t\t\t{ displayText }\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tconst option = findOptionByValue( selectedValue );\n\t\t\t\t\treturn option?.label || selectedValue;\n\t\t\t\t} }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tfullWidth\n\t\t\t>\n\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Select>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { type SxProps, TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const TextControl = createControl(\n\t( {\n\t\tplaceholder,\n\t\terror,\n\t\tinputValue,\n\t\tinputDisabled,\n\t\tsx,\n\t}: {\n\t\tplaceholder?: string;\n\t\terror?: boolean;\n\t\tinputValue?: string;\n\t\tinputDisabled?: boolean;\n\t\tsx?: SxProps;\n\t} ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ inputDisabled ?? disabled }\n\t\t\t\t\tvalue={ inputValue ?? value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\terror={ error }\n\t\t\t\t\tsx={ sx }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\tplaceholder?: string;\n};\n\nexport const TextAreaControl = createControl( ( { placeholder }: Props ) => {\n\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.value );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tmultiline\n\t\t\t\tfullWidth\n\t\t\t\tminRows={ 5 }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useState } from 'react';\nimport { sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { SizeInput } from '../components/size-control/size-input';\nimport { TextFieldPopover } from '../components/text-field-popover';\nimport { createControl } from '../create-control';\nimport { useSizeExtendedOptions } from '../hooks/use-size-extended-options';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport {\n\tdefaultUnits,\n\ttype DegreeUnit,\n\ttype ExtendedOption,\n\tisUnitExtendedOption,\n\ttype Unit,\n} from '../utils/size-control';\n\nconst DEFAULT_UNIT = 'px';\nconst DEFAULT_SIZE = NaN;\n\ntype SizeValue = SizePropValue[ 'value' ];\n\ntype SizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits?: ( Unit | DegreeUnit )[];\n\textendedOptions?: ExtendedOption[];\n\tdisableCustom?: boolean;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tdefaultUnit?: Unit | DegreeUnit;\n};\n\ntype State = {\n\tnumeric: number;\n\tcustom: string;\n\tunit: Unit | DegreeUnit | ExtendedOption;\n};\n\nexport const SizeControl = createControl( ( props: SizeControlProps ) => {\n\tconst defaultUnit = props.defaultUnit ?? DEFAULT_UNIT;\n\tconst { units = [ ...defaultUnits ], placeholder, startIcon, anchorRef } = props;\n\tconst { value: sizeValue, setValue: setSizeValue, disabled, restoreValue } = useBoundProp( sizePropTypeUtil );\n\tconst [ internalState, setInternalState ] = useState( createStateFromSizeProp( sizeValue, defaultUnit ) );\n\tconst activeBreakpoint = useActiveBreakpoint();\n\n\tconst extendedOptions = useSizeExtendedOptions( props.extendedOptions || [], props.disableCustom ?? false );\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\tconst [ state, setState ] = useSyncExternalState( {\n\t\texternal: internalState,\n\t\tsetExternal: ( newState: State | null ) => setSizeValue( extractValueFromState( newState ) ),\n\t\tpersistWhen: ( newState ) => {\n\t\t\tif ( ! newState?.unit ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( isUnitExtendedOption( newState.unit ) ) {\n\t\t\t\treturn newState.unit === 'auto' ? true : !! newState.custom;\n\t\t\t}\n\n\t\t\treturn !! newState?.numeric || newState?.numeric === 0;\n\t\t},\n\t\tfallback: ( newState ) => ( {\n\t\t\tunit: newState?.unit ?? defaultUnit,\n\t\t\tnumeric: newState?.numeric ?? DEFAULT_SIZE,\n\t\t\tcustom: newState?.custom ?? '',\n\t\t} ),\n\t} );\n\n\tconst { size: controlSize = DEFAULT_SIZE, unit: controlUnit = defaultUnit } = extractValueFromState( state ) || {};\n\n\tconst handleUnitChange = ( newUnit: Unit | DegreeUnit | ExtendedOption ) => {\n\t\tif ( newUnit === 'custom' ) {\n\t\t\tpopupState.open( anchorRef?.current );\n\t\t}\n\n\t\tsetState( ( prev ) => ( { ...prev, unit: newUnit } ) );\n\t};\n\n\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value: size } = event.target;\n\n\t\tif ( controlUnit === 'auto' ) {\n\t\t\tsetState( ( prev ) => ( { ...prev, unit: controlUnit } ) );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ controlUnit === 'custom' ? 'custom' : 'numeric' ]: formatSize( size, controlUnit ),\n\t\t\tunit: controlUnit,\n\t\t} ) );\n\t};\n\n\tconst onInputFocus = ( event: React.FocusEvent< HTMLInputElement > ) => {\n\t\tif ( isUnitExtendedOption( state.unit ) ) {\n\t\t\t( event.target as HTMLElement )?.blur();\n\t\t}\n\t};\n\n\tconst onInputClick = ( event: React.MouseEvent ) => {\n\t\tif ( ( event.target as HTMLElement ).closest( 'input' ) && 'custom' === state.unit ) {\n\t\t\tpopupState.open( anchorRef?.current );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tconst newState = createStateFromSizeProp( sizeValue, state.unit === 'custom' ? state.unit : defaultUnit );\n\t\tconst currentUnitType = isUnitExtendedOption( state.unit ) ? 'custom' : 'numeric';\n\t\tconst mergedStates = {\n\t\t\t...state,\n\t\t\tunit: newState.unit ?? state.unit,\n\t\t\t[ currentUnitType ]: newState[ currentUnitType ],\n\t\t};\n\n\t\tif ( mergedStates.unit !== 'auto' && areStatesEqual( state, mergedStates ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( state.unit === newState.unit ) {\n\t\t\tsetInternalState( mergedStates );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetState( newState );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ sizeValue ] );\n\n\tuseEffect( () => {\n\t\tconst newState = createStateFromSizeProp( sizeValue, defaultUnit );\n\n\t\tif ( activeBreakpoint && ! areStatesEqual( newState, state ) ) {\n\t\t\tsetState( newState );\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\treturn (\n\t\t<>\n\t\t\t<SizeInput\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsize={ controlSize }\n\t\t\t\tunit={ controlUnit }\n\t\t\t\tunits={ [ ...units, ...( extendedOptions || [] ) ] }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\thandleSizeChange={ handleSizeChange }\n\t\t\t\thandleUnitChange={ handleUnitChange }\n\t\t\t\tonBlur={ restoreValue }\n\t\t\t\tonFocus={ onInputFocus }\n\t\t\t\tonClick={ onInputClick }\n\t\t\t\tpopupState={ popupState }\n\t\t\t/>\n\t\t\t{ anchorRef?.current && (\n\t\t\t\t<TextFieldPopover\n\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\trestoreValue={ restoreValue }\n\t\t\t\t\tvalue={ controlSize as string }\n\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n} );\n\nfunction formatSize< TSize extends string | number >( size: TSize, unit: Unit | DegreeUnit | ExtendedOption ): TSize {\n\tif ( isUnitExtendedOption( unit ) ) {\n\t\treturn unit === 'auto' ? ( '' as TSize ) : ( String( size ?? '' ) as TSize );\n\t}\n\n\treturn size || size === 0 ? ( Number( size ) as TSize ) : ( NaN as TSize );\n}\n\nfunction createStateFromSizeProp(\n\tsizeValue: SizeValue | null,\n\tdefaultUnit: Unit | DegreeUnit | ExtendedOption\n): State {\n\tconst unit = sizeValue?.unit ?? defaultUnit;\n\tconst size = sizeValue?.size ?? '';\n\n\treturn {\n\t\tnumeric:\n\t\t\t! isUnitExtendedOption( unit ) && ! isNaN( Number( size ) ) && ( size || size === 0 )\n\t\t\t\t? Number( size )\n\t\t\t\t: DEFAULT_SIZE,\n\t\tcustom: unit === 'custom' ? String( size ) : '',\n\t\tunit,\n\t};\n}\n\nfunction extractValueFromState( state: State | null ): SizeValue | null {\n\tif ( ! state ) {\n\t\treturn null;\n\t}\n\n\tif ( ! state?.unit ) {\n\t\treturn { size: DEFAULT_SIZE, unit: DEFAULT_UNIT };\n\t}\n\n\tconst { unit } = state;\n\n\tif ( unit === 'auto' ) {\n\t\treturn { size: '', unit };\n\t}\n\n\treturn {\n\t\tsize: state[ unit === 'custom' ? 'custom' : 'numeric' ],\n\t\tunit,\n\t} as SizeValue;\n}\n\nfunction areStatesEqual( state1: State, state2: State ): boolean {\n\tif ( state1.unit !== state2.unit || state1.custom !== state2.custom ) {\n\t\treturn false;\n\t}\n\n\tif ( isUnitExtendedOption( state1.unit ) ) {\n\t\treturn state1.custom === state2.custom;\n\t}\n\n\treturn state1.numeric === state2.numeric || ( isNaN( state1.numeric ) && isNaN( state2.numeric ) );\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { PencilIcon } from '@elementor/icons';\nimport { Box, InputAdornment, type PopupState } from '@elementor/ui';\n\nimport ControlActions from '../../control-actions/control-actions';\nimport { type DegreeUnit, type ExtendedOption, isUnitExtendedOption, type Unit } from '../../utils/size-control';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../size-control/text-field-inner-selection';\n\ntype SizeInputProps = {\n\tunit: Unit | DegreeUnit | ExtendedOption;\n\tsize: number | string;\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits: ( Unit | DegreeUnit | ExtendedOption )[];\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonFocus?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonClick?: ( event: React.MouseEvent< HTMLInputElement > ) => void;\n\thandleUnitChange: ( unit: Unit | DegreeUnit | ExtendedOption ) => void;\n\thandleSizeChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tpopupState: PopupState;\n\tdisabled?: boolean;\n};\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+', '-' ];\n\nexport const SizeInput = ( {\n\tunits,\n\thandleUnitChange,\n\thandleSizeChange,\n\tplaceholder,\n\tstartIcon,\n\tonBlur,\n\tonFocus,\n\tonClick,\n\tsize,\n\tunit,\n\tpopupState,\n\tdisabled,\n}: SizeInputProps ) => {\n\tconst unitInputBufferRef = useRef( '' );\n\tconst inputType = isUnitExtendedOption( unit ) ? 'text' : 'number';\n\tconst inputValue = ! isUnitExtendedOption( unit ) && Number.isNaN( size ) ? '' : size ?? '';\n\n\tconst handleKeyUp = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\n\t\tif ( ! /^[a-zA-Z%]$/.test( key ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst newChar = key.toLowerCase();\n\t\tconst updatedBuffer = ( unitInputBufferRef.current + newChar ).slice( -3 );\n\t\tunitInputBufferRef.current = updatedBuffer;\n\n\t\tconst matchedUnit =\n\t\t\tunits.find( ( u ) => u.includes( updatedBuffer ) ) ||\n\t\t\tunits.find( ( u ) => u.startsWith( newChar ) ) ||\n\t\t\tunits.find( ( u ) => u.includes( newChar ) );\n\n\t\tif ( matchedUnit ) {\n\t\t\thandleUnitChange( matchedUnit );\n\t\t}\n\t};\n\n\tconst popupAttributes = {\n\t\t'aria-controls': popupState.isOpen ? popupState.popupId : undefined,\n\t\t'aria-haspopup': true,\n\t};\n\n\tconst inputProps = {\n\t\t...popupAttributes,\n\t\tautoComplete: 'off',\n\t\tonClick,\n\t\tonFocus,\n\t\tstartAdornment: startIcon ? (\n\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t{ startIcon }\n\t\t\t</InputAdornment>\n\t\t) : undefined,\n\t\tendAdornment: (\n\t\t\t<SelectionEndAdornment\n\t\t\t\tdisabled={ disabled }\n\t\t\t\toptions={ units }\n\t\t\t\tonClick={ handleUnitChange }\n\t\t\t\tvalue={ unit }\n\t\t\t\talternativeOptionLabels={ {\n\t\t\t\t\tcustom: <PencilIcon fontSize=\"small\" />,\n\t\t\t\t} }\n\t\t\t\tmenuItemsAttributes={\n\t\t\t\t\tunits.includes( 'custom' )\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tcustom: popupAttributes,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t/>\n\t\t),\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Box>\n\t\t\t\t<TextFieldInnerSelection\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\ttype={ inputType }\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\tif ( RESTRICTED_INPUT_KEYS.includes( event.key ) ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tonKeyUp={ handleKeyUp }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tshouldBlockInput={ isUnitExtendedOption( unit ) }\n\t\t\t\t\tinputProps={ inputProps }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</ControlActions>\n\t);\n};\n","export const defaultUnits = [ 'px', '%', 'em', 'rem', 'vw', 'vh' ] as const;\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst degreeUnits = [ 'deg', 'rad', 'grad', 'turn' ] as const;\nconst defaultExtendedOptions = [ 'auto', 'custom' ] as const;\n\nexport type Unit = ( typeof defaultUnits )[ number ];\nexport type DegreeUnit = ( typeof degreeUnits )[ number ];\nexport type ExtendedOption = ( typeof defaultExtendedOptions )[ number ];\n\nexport function isUnitExtendedOption( unit: Unit | DegreeUnit | ExtendedOption ): unit is ExtendedOption {\n\treturn defaultExtendedOptions.includes( unit as ExtendedOption );\n}\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tButton,\n\tInputAdornment,\n\tMenu,\n\tTextField,\n\ttype TextFieldProps,\n\tusePopupState,\n} from '@elementor/ui';\n\ntype TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tshouldBlockInput?: boolean;\n\tinputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n\tdisabled?: boolean;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t(\n\t\t{\n\t\t\tplaceholder,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tonBlur,\n\t\t\tonKeyDown,\n\t\t\tonKeyUp,\n\t\t\tshouldBlockInput = false,\n\t\t\tinputProps,\n\t\t\tdisabled,\n\t\t}: TextFieldInnerSelectionProps,\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t<TextField\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ { input: { cursor: shouldBlockInput ? 'default !important' : undefined } } }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ shouldBlockInput ? undefined : type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ shouldBlockInput ? undefined : onChange }\n\t\t\t\tonKeyDown={ shouldBlockInput ? undefined : onKeyDown }\n\t\t\t\tonKeyUp={ shouldBlockInput ? undefined : onKeyUp }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tInputProps={ inputProps }\n\t\t\t/>\n\t\t);\n\t}\n);\n\ntype SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n\talternativeOptionLabels?: { [ key in T ]?: React.ReactNode };\n\tmenuItemsAttributes?: { [ key in T ]?: Record< string, unknown > };\n\tdisabled?: boolean;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\talternativeOptionLabels = {} as Record< T, React.ReactNode >,\n\tonClick,\n\tvalue,\n\tmenuItemsAttributes = {},\n\tdisabled,\n}: SelectionEndAdornmentProps< T > ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<Button\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"secondary\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsx={ { font: 'inherit', minWidth: 'initial', textTransform: 'uppercase' } }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ alternativeOptionLabels[ value ] ?? value }\n\t\t\t</Button>\n\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\tkey={ option }\n\t\t\t\t\t\tonClick={ () => handleMenuItemClick( index ) }\n\t\t\t\t\t\t{ ...menuItemsAttributes?.[ option ] }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ alternativeOptionLabels[ option ] ?? option.toUpperCase() }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject } from 'react';\nimport { bindPopover, Popover, type PopupState, TextField } from '@elementor/ui';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n};\n\nexport const TextFieldPopover = ( props: Props ) => {\n\tconst { popupState, restoreValue, anchorRef, value, onChange } = props;\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\twidth: anchorRef.current?.offsetWidth + 'px',\n\t\t\t\t\t\tp: 1.5,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\tonClose={ () => {\n\t\t\t\trestoreValue();\n\t\t\t\tpopupState.close();\n\t\t\t} }\n\t\t>\n\t\t\t<TextField\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tfullWidth\n\t\t\t\tinputProps={ {\n\t\t\t\t\tautoFocus: true,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Popover>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type ExtendedOption } from '@elementor/editor-controls';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\n\nconst EXPERIMENT_ID = 'e_v_3_30';\n\nexport function useSizeExtendedOptions( options: ExtendedOption[], disableCustom: boolean ) {\n\treturn useMemo( () => {\n\t\tconst isVersion330Active = isExperimentActive( EXPERIMENT_ID );\n\t\tconst shouldDisableCustom = ! isVersion330Active || disableCustom;\n\t\tconst extendedOptions = [ ...options ];\n\n\t\tif ( ! shouldDisableCustom && ! extendedOptions.includes( 'custom' ) ) {\n\t\t\textendedOptions.push( 'custom' );\n\t\t} else if ( options.includes( 'custom' ) ) {\n\t\t\textendedOptions.splice( extendedOptions.indexOf( 'custom' ), 1 );\n\t\t}\n\n\t\treturn extendedOptions;\n\t}, [ options, disableCustom ] );\n}\n","import { useEffect, useState } from 'react';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | null;\n\tsetExternal: ( value: TValue | null ) => void;\n\tpersistWhen: ( value: TValue | null ) => boolean;\n\tfallback: ( value: TValue | null ) => TValue;\n};\n\nexport const useSyncExternalState = < TValue, >( {\n\texternal,\n\tsetExternal,\n\tpersistWhen,\n\tfallback,\n}: UseInternalStateOptions< TValue > ) => {\n\tfunction toExternal( internalValue: TValue | null ) {\n\t\tif ( persistWhen( internalValue ) ) {\n\t\t\treturn internalValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction toInternal( externalValue: TValue | null, internalValue: TValue | null ) {\n\t\tif ( ! externalValue ) {\n\t\t\treturn fallback( internalValue );\n\t\t}\n\n\t\treturn externalValue;\n\t}\n\n\tconst [ internal, setInternal ] = useState< TValue >( toInternal( external, null ) );\n\n\tuseEffect( () => {\n\t\tsetInternal( ( prevInternal ) => toInternal( external, prevInternal ) );\n\n\t\t// eslint-disable-next-line react-compiler/react-compiler\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ external ] );\n\n\ttype SetterFunc = ( value: TValue ) => TValue;\n\n\tconst setInternalValue = ( setter: SetterFunc | TValue ) => {\n\t\tconst setterFn = ( typeof setter === 'function' ? setter : () => setter ) as SetterFunc;\n\t\tconst updated = setterFn( internal );\n\n\t\tsetInternal( updated );\n\t\tsetExternal( toExternal( updated ) );\n\t};\n\n\treturn [ internal, setInternalValue ] as const;\n};\n","import * as React from 'react';\nimport { forwardRef, useRef } from 'react';\nimport { strokePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SectionContent } from '../components/section-content';\nimport { createControl } from '../create-control';\nimport { type Unit } from '../utils/size-control';\nimport { ColorControl } from './color-control';\nimport { SizeControl } from './size-control';\n\ntype StrokeProps = {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n};\n\nconst units: Unit[] = [ 'px', 'em', 'rem' ];\n\nexport const StrokeControl = createControl( () => {\n\tconst propContext = useBoundProp( strokePropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<SectionContent>\n\t\t\t\t<Control bind=\"width\" label={ __( 'Stroke width', 'elementor' ) } ref={ rowRef }>\n\t\t\t\t\t<SizeControl units={ units } anchorRef={ rowRef } />\n\t\t\t\t</Control>\n\t\t\t\t<Control bind=\"color\" label={ __( 'Stroke color', 'elementor' ) }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Control>\n\t\t\t</SectionContent>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = forwardRef( ( { bind, label, children }: StrokeProps, ref ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ ref }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n) );\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\ntype SectionContentProps = PropsWithChildren< {\n\tgap?: number;\n\tsx?: {\n\t\tpt?: number;\n\t};\n} >;\n\nexport const SectionContent: FC< SectionContentProps > = ( { gap = 2, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { colorPropTypeUtil, type PropTypeUtil } from '@elementor/editor-props';\nimport { UnstableColorField, type UnstableColorFieldProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = Partial< Omit< UnstableColorFieldProps, 'value' | 'onChange' > > & {\n\tpropTypeUtil?: PropTypeUtil< string, string >;\n\tanchorEl?: HTMLElement | null;\n};\n\nexport const ColorControl = createControl(\n\t( { propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, ...props }: Props ) => {\n\t\tconst { value, setValue, placeholder: boundPropPlaceholder, disabled } = useBoundProp( propTypeUtil );\n\n\t\tconst placeholder = props.placeholder ?? boundPropPlaceholder;\n\n\t\tconst handleChange = ( selectedColor: string ) => {\n\t\t\tsetValue( selectedColor || null );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableColorField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tplaceholder={ placeholder ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t...slotProps,\n\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\tanchorEl,\n\t\t\t\t\t\t\tanchorOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransformOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tslotProps: {\n\t\t\t\t\t\t\t\tcolorIndicator: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcolorBox: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { boxShadowPropTypeUtil, type PropKey, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { FormLabel, Grid, type SxProps, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SelectControl } from './select-control';\nimport { SizeControl } from './size-control';\n\nexport const BoxShadowRepeaterControl = createControl( () => {\n\tconst { propType, value, setValue, disabled } = useBoundProp( boxShadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue } isDisabled={ () => disabled }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ value ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Box shadow', 'elementor' ) }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: initialShadow,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<UnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color?.value } />\n);\n\nconst ItemContent = ( { anchorEl, bind }: { anchorEl: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst context = useBoundProp( shadowPropTypeUtil );\n\tconst rowRef: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Control bind=\"color\" label={ __( 'Color', 'elementor' ) }>\n\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"position\" label={ __( 'Position', 'elementor' ) } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t{ label: __( 'Inset', 'elementor' ), value: 'inset' },\n\t\t\t\t\t\t\t\t{ label: __( 'Outset', 'elementor' ), value: null },\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 0 ] }>\n\t\t\t\t\t<Control bind=\"hOffset\" label={ __( 'Horizontal', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"vOffset\" label={ __( 'Vertical', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 1 ] }>\n\t\t\t\t\t<Control bind=\"blur\" label={ __( 'Blur', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"spread\" label={ __( 'Spread', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PopoverContent>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tlabel,\n\tbind,\n\tchildren,\n\tsx,\n}: {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tsx?: SxProps< Theme >;\n} ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid item xs={ 6 } sx={ sx }>\n\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<FormLabel size=\"tiny\">{ label }</FormLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n);\n\nconst ItemLabel = ( { value }: { value: ShadowPropValue } ) => {\n\tconst { position, hOffset, vOffset, blur, spread } = value.value;\n\n\tconst { size: blurSize = '', unit: blurUnit = '' } = blur?.value || {};\n\tconst { size: spreadSize = '', unit: spreadUnit = '' } = spread?.value || {};\n\tconst { size: hOffsetSize = 'unset', unit: hOffsetUnit = '' } = hOffset?.value || {};\n\tconst { size: vOffsetSize = 'unset', unit: vOffsetUnit = '' } = vOffset?.value || {};\n\tconst positionLabel = position?.value || 'outset';\n\n\tconst sizes = [\n\t\thOffsetSize + hOffsetUnit,\n\t\tvOffsetSize + vOffsetUnit,\n\t\tblurSize + blurUnit,\n\t\tspreadSize + spreadUnit,\n\t].join( ' ' );\n\n\treturn (\n\t\t<span style={ { textTransform: 'capitalize' } }>\n\t\t\t{ positionLabel }: { sizes }\n\t\t</span>\n\t);\n};\n\nconst initialShadow: ShadowPropValue = {\n\t$$type: 'shadow',\n\tvalue: {\n\t\thOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tvOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tblur: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 10 },\n\t\t},\n\t\tspread: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: 'rgba(0, 0, 0, 1)',\n\t\t},\n\t\tposition: null,\n\t},\n};\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack, type StackProps } from '@elementor/ui';\n\nexport const PopoverContent: FC< PropsWithChildren< StackProps > > = ( { gap = 1.5, children, ...props } ) => (\n\t<Stack { ...props } gap={ gap }>\n\t\t{ children }\n\t</Stack>\n);\n","import { forwardRef, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\ntype PopoverGridContainerProps = PropsWithChildren< {\n\tgap?: number;\n\talignItems?: React.ComponentProps< typeof Grid >[ 'alignItems' ];\n\tflexWrap?: React.ComponentProps< typeof Grid >[ 'flexWrap' ];\n} >;\n\nexport const PopoverGridContainer = forwardRef(\n\t( { gap = 1.5, alignItems = 'center', flexWrap = 'nowrap', children }: PopoverGridContainerProps, ref ) => (\n\t\t<Grid container gap={ gap } alignItems={ alignItems } flexWrap={ flexWrap } ref={ ref }>\n\t\t\t{ children }\n\t\t</Grid>\n\t)\n);\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { type PropKey, type PropTypeUtil } from '@elementor/editor-props';\nimport { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tPopover,\n\tStack,\n\tTooltip,\n\tTypography,\n\tUnstableTag,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport { RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../locations';\nimport { SectionContent } from './section-content';\nimport { SortableItem, SortableProvider } from './sortable';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\ntype Item< T > = {\n\tdisabled?: boolean;\n} & T;\nexport type CollectionPropUtil< T > = PropTypeUtil< PropKey, T[] >;\n\ntype RepeaterItemContentProps< T > = {\n\tanchorEl: AnchorEl;\n\tbind: PropKey;\n\tvalue: T;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\ntype RepeaterItemContent< T > = React.ComponentType< RepeaterItemContentProps< T > >;\n\ntype RepeaterProps< T > = {\n\tlabel: string;\n\tvalues?: T[];\n\taddToBottom?: boolean;\n\topenOnAdd?: boolean;\n\tsetValues: ( newValue: T[] ) => void;\n\tdisabled?: boolean;\n\titemSettings: {\n\t\tinitialValues: T;\n\t\tLabel: React.ComponentType< { value: T } >;\n\t\tIcon: React.ComponentType< { value: T } >;\n\t\tContent: RepeaterItemContent< T >;\n\t};\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tisSortable?: boolean;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tdisabled = false,\n\topenOnAdd = false,\n\taddToBottom = false,\n\tvalues: repeaterValues = [],\n\tsetValues: setRepeaterValues,\n\tshowDuplicate = true,\n\tshowToggle = true,\n\tisSortable = true,\n\tcollectionPropUtil,\n}: RepeaterProps< Item< T > > ) => {\n\tconst [ openItem, setOpenItem ] = useState( EMPTY_OPEN_ITEM );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\t// @ts-expect-error - as long as persistWhen => true, value will never be null\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( items.map( ( _, index ) => index ) );\n\n\tconst generateNextKey = ( source: number[] ) => {\n\t\treturn 1 + Math.max( 0, ...source );\n\t};\n\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\t\tconst newKey = generateNextKey( uniqueKeys );\n\n\t\tif ( addToBottom ) {\n\t\t\tsetItems( [ ...items, newItem ] );\n\t\t\tsetUniqueKeys( [ ...uniqueKeys, newKey ] );\n\t\t} else {\n\t\t\tsetItems( [ newItem, ...items ] );\n\t\t\tsetUniqueKeys( [ newKey, ...uniqueKeys ] );\n\t\t}\n\n\t\tif ( openOnAdd ) {\n\t\t\tsetOpenItem( newKey );\n\t\t}\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\t\tconst newKey = generateNextKey( uniqueKeys );\n\n\t\t// Insert the new (cloned item) at the next spot (after the current index)\n\t\tconst atPosition = 1 + index;\n\n\t\tsetItems( [ ...items.slice( 0, atPosition ), newItem, ...items.slice( atPosition ) ] );\n\t\tsetUniqueKeys( [ ...uniqueKeys.slice( 0, atPosition ), newKey, ...uniqueKeys.slice( atPosition ) ] );\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tsetUniqueKeys(\n\t\t\tuniqueKeys.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} )\n\t\t);\n\n\t\tsetItems(\n\t\t\titems.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetItems(\n\t\t\titems.map( ( value, pos ) => {\n\t\t\t\tif ( pos === index ) {\n\t\t\t\t\tconst { disabled: propDisabled, ...rest } = value;\n\n\t\t\t\t\t// If the items should not be disabled, remove the disabled property.\n\t\t\t\t\treturn { ...rest, ...( propDisabled ? {} : { disabled: true } ) } as Item< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst onChangeOrder = ( reorderedKeys: number[] ) => {\n\t\tsetUniqueKeys( reorderedKeys );\n\t\tsetItems( ( prevItems ) => {\n\t\t\treturn reorderedKeys.map( ( keyValue ) => {\n\t\t\t\tconst index = uniqueKeys.indexOf( keyValue );\n\t\t\t\treturn prevItems[ index ];\n\t\t\t} );\n\t\t} );\n\t};\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tjustifyContent=\"start\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ 1 }\n\t\t\t\tsx={ { marginInlineEnd: -0.75 } }\n\t\t\t>\n\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t\t<ControlAdornments />\n\t\t\t\t<IconButton\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tsx={ { ml: 'auto' } }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ addRepeaterItem }\n\t\t\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\n\t\t\t{ 0 < uniqueKeys.length && (\n\t\t\t\t<SortableProvider value={ uniqueKeys } onChange={ onChangeOrder }>\n\t\t\t\t\t{ uniqueKeys.map( ( key, index ) => {\n\t\t\t\t\t\tconst value = items[ index ];\n\n\t\t\t\t\t\tif ( ! value ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\t\tpropDisabled={ value?.disabled }\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Label value={ value } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstartIcon={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Icon value={ value } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\topenOnMount={ openOnAdd && openItem === key }\n\t\t\t\t\t\t\t\t\tonOpen={ () => setOpenItem( EMPTY_OPEN_ITEM ) }\n\t\t\t\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t\t\t\t\tcollectionPropUtil={ collectionPropUtil }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<itemSettings.Content { ...props } value={ value } bind={ String( index ) } />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</RepeaterItem>\n\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</SortableProvider>\n\t\t\t) }\n\t\t</SectionContent>\n\t);\n};\n\ntype RepeaterItemProps< T > = {\n\tlabel: React.ReactNode;\n\tpropDisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( props: Pick< RepeaterItemContentProps< T >, 'anchorEl' | 'collectionPropUtil' > ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tdisabled?: boolean;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\nconst RepeaterItem = < T, >( {\n\tlabel,\n\tpropDisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n\topenOnMount,\n\tonOpen,\n\tshowDuplicate,\n\tshowToggle,\n\tdisabled,\n\tcollectionPropUtil,\n}: RepeaterItemProps< T > ) => {\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\n\tconst { popoverState, popoverProps, ref, setRef } = usePopover( openOnMount, onOpen );\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ label }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tfullWidth\n\t\t\t\tref={ setRef }\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ showDuplicate && (\n\t\t\t\t\t\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ duplicateItem } aria-label={ duplicateLabel }>\n\t\t\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showToggle && (\n\t\t\t\t\t\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ toggleDisableItem } aria-label={ toggleLabel }>\n\t\t\t\t\t\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ removeItem } aria-label={ removeLabel }>\n\t\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: {\n\t\t\t\t\t\tref: setAnchorEl,\n\t\t\t\t\t\tsx: { mt: 0.5, width: ref?.getBoundingClientRect().width },\n\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...popoverProps }\n\t\t\t\tanchorEl={ ref }\n\t\t\t>\n\t\t\t\t<Box>{ children( { anchorEl, collectionPropUtil } ) }</Box>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n\nconst usePopover = ( openOnMount: boolean, onOpen: () => void ) => {\n\tconst [ ref, setRef ] = useState< HTMLElement | null >( null );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\tuseEffect( () => {\n\t\tif ( openOnMount && ref ) {\n\t\t\tpopoverState.open( ref );\n\t\t\tonOpen?.();\n\t\t}\n\t\t// eslint-disable-next-line react-compiler/react-compiler\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ ref ] );\n\n\treturn {\n\t\tpopoverState,\n\t\tref,\n\t\tsetRef,\n\t\tpopoverProps,\n\t};\n};\n","import * as React from 'react';\n\nimport { useControlAdornments } from './control-adornments-context';\n\nexport function ControlAdornments() {\n\tconst items = useControlAdornments();\n\n\tif ( items?.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ items.map( ( { Adornment, id } ) => (\n\t\t\t\t<Adornment key={ id } />\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\n\ntype ControlAdornmentsItems = Array< {\n\tid: string;\n\tAdornment: ComponentType;\n} >;\n\ntype ControlAdornmentsContext = {\n\titems?: ControlAdornmentsItems;\n};\n\nconst Context = createContext< ControlAdornmentsContext | null >( null );\n\ntype ControlAdornmentsProviderProps = PropsWithChildren< ControlAdornmentsContext >;\n\nexport const ControlAdornmentsProvider = ( { children, items }: ControlAdornmentsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlAdornments = () => {\n\tconst context = useContext( Context );\n\n\treturn context?.items ?? [];\n};\n","import { type PropValue } from '@elementor/editor-props';\nimport { createReplaceableLocation } from '@elementor/locations';\n\n// Repeaters\nexport const { Slot: RepeaterItemIconSlot, inject: injectIntoRepeaterItemIcon } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemLabelSlot, inject: injectIntoRepeaterItemLabel } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n","import * as React from 'react';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tDivider,\n\tList,\n\tListItem,\n\tstyled,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemProps,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n\ttype UnstableSortableProviderProps,\n} from '@elementor/ui';\n\nexport const SortableProvider = < T extends number >( props: UnstableSortableProviderProps< T > ) => {\n\treturn (\n\t\t<List sx={ { p: 0, my: -0.5, mx: 0 } }>\n\t\t\t<UnstableSortableProvider restrictAxis disableDragOverlay={ false } variant={ 'static' } { ...props } />\n\t\t</List>\n\t);\n};\n\ntype SortableItemProps = {\n\tid: UnstableSortableItemProps[ 'id' ];\n\tchildren: React.ReactNode;\n\tdisabled?: boolean;\n};\n\nexport const SortableItem = ( { id, children, disabled }: SortableItemProps ): React.ReactNode => {\n\treturn (\n\t\t<UnstableSortableItem\n\t\t\tid={ id }\n\t\t\tdisabled={ disabled }\n\t\t\trender={ ( {\n\t\t\t\titemProps,\n\t\t\t\ttriggerProps,\n\t\t\t\titemStyle,\n\t\t\t\ttriggerStyle,\n\t\t\t\tshowDropIndication,\n\t\t\t\tdropIndicationStyle,\n\t\t\t}: UnstableSortableItemRenderProps ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StyledListItem { ...itemProps } style={ itemStyle }>\n\t\t\t\t\t\t{ ! disabled && <SortableTrigger { ...triggerProps } style={ triggerStyle } /> }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t{ showDropIndication && <StyledDivider style={ dropIndicationStyle } /> }\n\t\t\t\t\t</StyledListItem>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst StyledListItem = styled( ListItem )`\n\tposition: relative;\n\tmargin-inline: 0px;\n\tpadding-inline: 0px;\n\tpadding-block: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\n\t& .class-item-sortable-trigger {\n\t\tcolor: ${ ( { theme } ) => theme.palette.action.active };\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tvisibility: hidden;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tpadding-inline-end: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\ttransform: translate( -75%, -50% );\n\t}\n\n\t&[aria-describedby=''] > .MuiTag-root {\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.background.paper };\n\t\tbox-shadow: ${ ( { theme } ) => theme.shadows[ 3 ] };\n\t}\n\n\t&:hover {\n\t\t& .class-item-sortable-trigger {\n\t\t\tvisibility: visible;\n\t\t}\n\t}\n`;\n\nconst SortableTrigger = ( props: React.HTMLAttributes< HTMLDivElement > ) => (\n\t<div { ...props } role=\"button\" className=\"class-item-sortable-trigger\">\n\t\t<GripVerticalIcon fontSize=\"tiny\" />\n\t</div>\n);\n\nconst StyledDivider = styled( Divider )`\n\theight: 0px;\n\tborder: none;\n\toverflow: visible;\n\n\t&:after {\n\t\t--height: 2px;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: var( --height );\n\t\tmargin-block: calc( -1 * var( --height ) / 2 );\n\t\tborder-radius: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.text.primary };\n\t}\n`;\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport {\n\tblurFilterPropTypeUtil,\n\tbrightnessFilterPropTypeUtil,\n\tcontrastFilterPropTypeUtil,\n\tdropShadowFilterPropTypeUtil,\n\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\tgrayscaleFilterPropTypeUtil,\n\thueRotateFilterPropTypeUtil,\n\tinvertFilterPropTypeUtil,\n\ttype PropKey,\n\ttype PropTypeUtil,\n\tsaturateFilterPropTypeUtil,\n\tsepiaFilterPropTypeUtil,\n\ttype SizePropValue,\n} from '@elementor/editor-props';\nimport { backdropFilterPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Box, Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { type CollectionPropUtil, Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { defaultUnits, type Unit } from '../utils/size-control';\nimport { DropShadowItemContent } from './filter-control/drop-shadow-item-content';\nimport { DropShadowItemLabel } from './filter-control/drop-shadow-item-label';\nimport { SizeControl } from './size-control';\n\ntype FilterType = FilterItemPropValue[ '$$type' ];\ntype FilterValue = FilterItemPropValue[ 'value' ];\n\nconst DEFAULT_FILTER_KEY: FilterType = 'blur';\n\ntype FilterItemConfig = {\n\tdefaultValue: FilterValue;\n\tname: string;\n\tvalueName: string;\n\tpropType: PropTypeUtil< FilterValue, FilterValue >;\n\tunits?: Exclude< SizePropValue[ 'value' ][ 'unit' ], 'custom' | 'auto' >[];\n};\n\nconst filterConfig: Record< FilterType, FilterItemConfig > = {\n\tblur: {\n\t\tdefaultValue: { $$type: 'radius', radius: { $$type: 'size', value: { size: 0, unit: 'px' } } },\n\t\tname: __( 'Blur', 'elementor' ),\n\t\tvalueName: __( 'Radius', 'elementor' ),\n\t\tpropType: blurFilterPropTypeUtil,\n\t\tunits: defaultUnits.filter( ( unit ) => unit !== '%' ),\n\t},\n\t'drop-shadow': {\n\t\tdefaultValue: {\n\t\t\t$$type: 'drop-shadow',\n\t\t\tvalue: {\n\t\t\t\txAxis: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t\tyAxis: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t\tblur: { $$type: 'size', value: { size: 10, unit: 'px' } },\n\t\t\t\tcolor: { $$type: 'color', value: 'rgba(0, 0, 0, 1)' },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Drop shadow', 'elementor' ),\n\t\tvalueName: __( 'Drop-shadow', 'elementor' ),\n\t\tpropType: dropShadowFilterPropTypeUtil,\n\t\tunits: defaultUnits.filter( ( unit ) => unit !== '%' ),\n\t},\n\tbrightness: {\n\t\tdefaultValue: { $$type: 'amount', amount: { $$type: 'size', value: { size: 100, unit: '%' } } },\n\t\tname: __( 'Brightness', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: brightnessFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\tcontrast: {\n\t\tdefaultValue: { $$type: 'contrast', contrast: { $$type: 'size', value: { size: 100, unit: '%' } } },\n\t\tname: __( 'Contrast', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: contrastFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\t'hue-rotate': {\n\t\tdefaultValue: { $$type: 'hue-rotate', 'hue-rotate': { $$type: 'size', value: { size: 0, unit: 'deg' } } },\n\t\tname: __( 'Hue Rotate', 'elementor' ),\n\t\tvalueName: __( 'Angle', 'elementor' ),\n\t\tpropType: hueRotateFilterPropTypeUtil,\n\t\tunits: [ 'deg', 'rad', 'grad', 'turn' ],\n\t},\n\tsaturate: {\n\t\tdefaultValue: { $$type: 'saturate', saturate: { $$type: 'size', value: { size: 100, unit: '%' } } },\n\t\tname: __( 'Saturate', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: saturateFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\tgrayscale: {\n\t\tdefaultValue: { $$type: 'grayscale', grayscale: { $$type: 'size', value: { size: 0, unit: '%' } } },\n\t\tname: __( 'Grayscale', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: grayscaleFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\tinvert: {\n\t\tdefaultValue: { $$type: 'invert', invert: { $$type: 'size', value: { size: 0, unit: '%' } } },\n\t\tname: __( 'Invert', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: invertFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n\tsepia: {\n\t\tdefaultValue: { $$type: 'sepia', sepia: { $$type: 'size', value: { size: 0, unit: '%' } } },\n\t\tname: __( 'Sepia', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tpropType: sepiaFilterPropTypeUtil,\n\t\tunits: [ '%' ],\n\t},\n};\n\nconst filterKeys = Object.keys( filterConfig ) as FilterType[];\n\nconst isSingleSize = ( key: FilterType ): boolean => {\n\treturn ! [ 'drop-shadow' ].includes( key );\n};\n\nexport const FilterRepeaterControl = createControl( ( { filterPropName = 'filter' }: { filterPropName?: string } ) => {\n\tconst [ propUtil, label ] =\n\t\tfilterPropName === 'backdrop-filter'\n\t\t\t? [ backdropFilterPropTypeUtil, __( 'Backdrop Filters', 'elementor' ) ]\n\t\t\t: [ filterPropTypeUtil, __( 'Filters', 'elementor' ) ];\n\tconst { propType, value: filterValues, setValue, disabled } = useBoundProp( propUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ filterValues } setValue={ setValue }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ filterValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ label }\n\t\t\t\tcollectionPropUtil={ propUtil }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: {\n\t\t\t\t\t\t$$type: DEFAULT_FILTER_KEY,\n\t\t\t\t\t\tvalue: filterConfig[ DEFAULT_FILTER_KEY ].defaultValue,\n\t\t\t\t\t} as FilterItemPropValue,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = () => <></>;\n\nconst ItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\treturn isSingleSize( value.$$type ) ? (\n\t\t<SingleSizeItemLabel value={ value } />\n\t) : (\n\t\t<DropShadowItemLabel value={ value } />\n\t);\n};\n\nconst SingleSizeItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { $$type, value: sizeValue } = value;\n\tconst { $$type: key } = filterConfig[ $$type ].defaultValue;\n\tconst defaultUnit = filterConfig[ $$type ].defaultValue[ key ].value.unit;\n\tconst { unit, size } = sizeValue[ key ]?.value ?? { unit: defaultUnit, size: 0 };\n\n\tconst label = (\n\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t{ value.$$type }:\n\t\t</Box>\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }\n\t\t\t{ unit !== 'custom' ? ` ${ size ?? 0 }${ unit ?? defaultUnit }` : size }\n\t\t</Box>\n\t);\n};\n\nconst ItemContent = ( {\n\tbind,\n\tcollectionPropUtil,\n\tanchorEl,\n}: {\n\tbind: PropKey;\n\tcollectionPropUtil?: CollectionPropUtil< FilterItemPropValue >;\n\tanchorEl?: HTMLElement | null;\n} ) => {\n\tconst { value: filterValues, setValue } = useBoundProp( collectionPropUtil ?? filterPropTypeUtil );\n\tconst itemIndex = parseInt( bind, 10 );\n\tconst item = filterValues?.[ itemIndex ];\n\n\tconst handleChange = ( e: SelectChangeEvent< string > ) => {\n\t\tconst newFilterValues = [ ...filterValues ];\n\t\tconst filterType = e.target.value as FilterType;\n\n\t\tnewFilterValues[ itemIndex ] = {\n\t\t\t$$type: filterType,\n\t\t\tvalue: { ...filterConfig[ filterType ].defaultValue },\n\t\t} as FilterItemPropValue;\n\n\t\tsetValue( newFilterValues );\n\t};\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Filter', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvalue={ item?.$$type ?? DEFAULT_FILTER_KEY }\n\t\t\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ filterKeys.map( ( filterKey ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ filterKey } value={ filterKey }>\n\t\t\t\t\t\t\t\t\t{ filterConfig[ filterKey ].name }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<Content filterType={ item?.$$type } anchorEl={ anchorEl } />\n\t\t\t</PopoverContent>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { filterType, anchorEl }: { filterType: FilterType; anchorEl?: HTMLElement | null } ) => {\n\tconst { propType, units = [] } = filterConfig[ filterType ];\n\n\treturn isSingleSize( filterType ) ? (\n\t\t<SingleSizeItemContent filterType={ filterType } />\n\t) : (\n\t\t<DropShadowItemContent propType={ propType } units={ units as Unit[] } anchorEl={ anchorEl } />\n\t);\n};\n\nconst SingleSizeItemContent = ( { filterType }: { filterType: FilterType } ) => {\n\tconst { propType, valueName, defaultValue, units } = filterConfig[ filterType ];\n\tconst { $$type } = defaultValue;\n\tconst context = useBoundProp( propType );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst defaultUnit = defaultValue[ $$type ].value.unit;\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ $$type }>\n\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel>{ valueName }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef } units={ units } defaultUnit={ defaultUnit } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { Stack } from '@elementor/ui';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { ControlFormLabel } from './control-form-label';\n\nexport const ControlLabel = ( { children }: PropsWithChildren< object > ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type DropShadowFilterPropValue, type PropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlFormLabel } from '../../components/control-form-label';\nimport { PopoverGridContainer } from '../../components/popover-grid-container';\nimport { type Unit } from '../../utils/size-control';\nimport { ColorControl } from '../color-control';\nimport { SizeControl } from '../size-control';\n\nconst items = [\n\t{\n\t\tbind: 'xAxis',\n\t\tlabel: __( 'X-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'yAxis',\n\t\tlabel: __( 'Y-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'blur',\n\t\tlabel: __( 'Blur', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n\t{\n\t\tbind: 'color',\n\t\tlabel: __( 'Color', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n];\n\nexport const DropShadowItemContent = ( {\n\tpropType,\n\tunits,\n\tanchorEl,\n}: {\n\tpropType: PropTypeUtil< 'drop-shadow', DropShadowFilterPropValue[ 'value' ] >;\n\tunits: Unit[];\n\tanchorEl?: HTMLElement | null;\n} ) => {\n\tconst context = useBoundProp( propType );\n\tconst rowRefs = [ useRef< HTMLDivElement >( null ), useRef< HTMLDivElement >( null ) ];\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ items.map( ( item ) => (\n\t\t\t\t<PopoverGridContainer key={ item.bind } ref={ rowRefs[ item.rowIndex ] ?? null }>\n\t\t\t\t\t<PropKeyProvider bind={ item.bind }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ item.label }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t{ item.bind === 'color' ? (\n\t\t\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<SizeControl anchorRef={ rowRefs[ item.rowIndex ] } units={ units } defaultUnit=\"px\" />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type FilterItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nexport const DropShadowItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { xAxis, yAxis, blur } = value.value;\n\n\tconst xValue = `${ xAxis?.value?.size ?? 0 }${ xAxis?.value?.unit ?? 'px' }`;\n\tconst yValue = `${ yAxis?.value?.size ?? 0 }${ yAxis?.value?.unit ?? 'px' }`;\n\tconst blurValue = `${ blur?.value?.size ?? 10 }${ blur?.value?.unit ?? 'px' }`;\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t\tDrop shadow:\n\t\t\t</Box>\n\t\t\t{ `${ xValue } ${ yValue } ${ blurValue }` }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { type PropValue, stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlToggleButtonGroup, type ToggleButtonGroupItem } from '../components/control-toggle-button-group';\nimport { createControl } from '../create-control';\n\nexport type ToggleControlProps< T extends PropValue > = {\n\toptions: Array< ToggleButtonGroupItem< T > & { exclusive?: boolean } >;\n\tfullWidth?: boolean;\n\tsize?: ToggleButtonProps[ 'size' ];\n\texclusive?: boolean;\n\tmaxItems?: number;\n};\n\nexport const ToggleControl = createControl(\n\t( {\n\t\toptions,\n\t\tfullWidth = false,\n\t\tsize = 'tiny',\n\t\texclusive = true,\n\t\tmaxItems,\n\t}: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst exclusiveValues = options.filter( ( option ) => option.exclusive ).map( ( option ) => option.value );\n\n\t\tconst handleNonExclusiveToggle = ( selectedValues: StringPropValue[ 'value' ][] ) => {\n\t\t\tconst newSelectedValue = selectedValues[ selectedValues.length - 1 ];\n\t\t\tconst isNewSelectedValueExclusive = exclusiveValues.includes( newSelectedValue );\n\n\t\t\tconst updatedValues = isNewSelectedValueExclusive\n\t\t\t\t? [ newSelectedValue ]\n\t\t\t\t: selectedValues?.filter( ( val ) => ! exclusiveValues.includes( val ) );\n\n\t\t\tsetValue( updatedValues?.join( ' ' ) || null );\n\t\t};\n\n\t\tconst toggleButtonGroupProps = {\n\t\t\titems: options,\n\t\t\tmaxItems,\n\t\t\tfullWidth,\n\t\t\tsize,\n\t\t};\n\n\t\treturn exclusive ? (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value ?? placeholder ?? null }\n\t\t\t\tonChange={ setValue }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ true }\n\t\t\t/>\n\t\t) : (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ ( value ?? placeholder )?.split( ' ' ) ?? [] }\n\t\t\t\tonChange={ handleNonExclusiveToggle }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ false }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport {\n\tListItemText,\n\tMenu,\n\tMenuItem,\n\ttype StackProps,\n\tstyled,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttype ToggleButtonProps,\n\tTypography,\n\tuseTheme,\n} from '@elementor/ui';\n\nimport ControlActions from '../control-actions/control-actions';\nimport { ConditionalTooltip } from './conditional-tooltip';\n\ntype RenderContentProps = { size: ToggleButtonProps[ 'size' ] };\n\nexport type ToggleButtonGroupItem< TValue > = {\n\tvalue: TValue;\n\tlabel: string;\n\trenderContent: ( { size }: RenderContentProps ) => React.ReactNode;\n\tshowTooltip?: boolean;\n};\n\nconst StyledToggleButtonGroup = styled( ToggleButtonGroup )`\n\t${ ( { justify } ) => `justify-content: ${ justify };` }\n\tbutton:not( :last-of-type ) {\n\t\tborder-start-end-radius: 0;\n\t\tborder-end-end-radius: 0;\n\t}\n\tbutton:not( :first-of-type ) {\n\t\tborder-start-start-radius: 0;\n\t\tborder-end-start-radius: 0;\n\t}\n\tbutton:last-of-type {\n\t\tborder-start-end-radius: 8px;\n\t\tborder-end-end-radius: 8px;\n\t}\n`;\n\ntype ExclusiveValue< TValue > = TValue;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tdisabled?: boolean;\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tmaxItems?: number;\n\tfullWidth?: boolean;\n} & (\n\t| {\n\t\t\texclusive?: false;\n\t\t\tvalue: NonExclusiveValue< TValue >;\n\t\t\tonChange: ( value: NonExclusiveValue< TValue > ) => void;\n\t }\n\t| {\n\t\t\texclusive: true;\n\t\t\tvalue: ExclusiveValue< TValue >;\n\t\t\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n\t }\n);\n\nexport const ControlToggleButtonGroup = < TValue, >( {\n\tjustify = 'end',\n\tsize = 'tiny',\n\tvalue,\n\tonChange,\n\titems,\n\tmaxItems,\n\texclusive = false,\n\tfullWidth = false,\n\tdisabled,\n}: Props< TValue > ) => {\n\tconst shouldSliceItems = exclusive && maxItems !== undefined && items.length > maxItems;\n\tconst menuItems = shouldSliceItems ? items.slice( maxItems - 1 ) : [];\n\tconst fixedItems = shouldSliceItems ? items.slice( 0, maxItems - 1 ) : items;\n\n\tconst isRtl = 'rtl' === useTheme().direction;\n\tconst handleChange = (\n\t\t_: React.MouseEvent< HTMLElement >,\n\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t) => {\n\t\tonChange( newValue as never );\n\t};\n\n\tconst getGridTemplateColumns = useMemo( () => {\n\t\tconst isOffLimits = menuItems?.length;\n\t\tconst itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;\n\t\tconst templateColumnsSuffix = isOffLimits ? 'auto' : '';\n\n\t\treturn `repeat(${ itemsCount }, minmax(0, 25%)) ${ templateColumnsSuffix }`;\n\t}, [ menuItems?.length, fixedItems.length ] );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<StyledToggleButtonGroup\n\t\t\t\tjustify={ justify }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\texclusive={ exclusive }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsx={ {\n\t\t\t\t\tdirection: isRtl ? 'rtl /* @noflip */' : 'ltr /* @noflip */',\n\t\t\t\t\tdisplay: 'grid',\n\t\t\t\t\tgridTemplateColumns: getGridTemplateColumns,\n\t\t\t\t\twidth: `100%`,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ fixedItems.map( ( { label, value: buttonValue, renderContent: Content, showTooltip } ) => (\n\t\t\t\t\t<ConditionalTooltip\n\t\t\t\t\t\tkey={ buttonValue as string }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tshowTooltip={ showTooltip || false }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ToggleButton value={ buttonValue } aria-label={ label } size={ size } fullWidth={ fullWidth }>\n\t\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</ConditionalTooltip>\n\t\t\t\t) ) }\n\n\t\t\t\t{ menuItems.length && exclusive && (\n\t\t\t\t\t<SplitButtonGroup\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\tvalue={ ( value as ExclusiveValue< TValue > ) || null }\n\t\t\t\t\t\tonChange={ onChange as ( v: ExclusiveValue< TValue > ) => void }\n\t\t\t\t\t\titems={ menuItems }\n\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</StyledToggleButtonGroup>\n\t\t</ControlActions>\n\t);\n};\n\ntype SplitButtonGroup< TValue > = {\n\tsize: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tfullWidth: boolean;\n\tvalue: ExclusiveValue< TValue > | null;\n\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n};\n\nconst SplitButtonGroup = < TValue, >( {\n\tsize = 'tiny',\n\tonChange,\n\titems,\n\tfullWidth,\n\tvalue,\n}: SplitButtonGroup< TValue > ) => {\n\tconst previewButton = usePreviewButton( items, value );\n\tconst [ isMenuOpen, setIsMenuOpen ] = useState( false );\n\tconst menuButtonRef = useRef( null );\n\n\tconst onMenuToggle = ( ev: React.MouseEvent ) => {\n\t\tsetIsMenuOpen( ( prev ) => ! prev );\n\t\tev.preventDefault();\n\t};\n\n\tconst onMenuItemClick = ( newValue: TValue | null ) => {\n\t\tsetIsMenuOpen( false );\n\t\tonToggleItem( newValue );\n\t};\n\n\tconst onToggleItem = ( newValue: TValue | null ) => {\n\t\tconst shouldRemove = newValue === value;\n\n\t\tonChange( ( shouldRemove ? null : newValue ) as never );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleButton\n\t\t\t\tvalue={ previewButton.value }\n\t\t\t\taria-label={ previewButton.label }\n\t\t\t\tsize={ size }\n\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\tonClick={ ( ev: React.MouseEvent ) => {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\tonMenuItemClick( previewButton.value );\n\t\t\t\t} }\n\t\t\t\tref={ menuButtonRef }\n\t\t\t>\n\t\t\t\t{ previewButton.renderContent( { size } ) }\n\t\t\t</ToggleButton>\n\t\t\t<ToggleButton\n\t\t\t\tsize={ size }\n\t\t\t\taria-expanded={ isMenuOpen ? 'true' : undefined }\n\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\taria-pressed={ undefined }\n\t\t\t\tonClick={ onMenuToggle }\n\t\t\t\tref={ menuButtonRef }\n\t\t\t\tvalue={ '__chevron-icon-button__' }\n\t\t\t>\n\t\t\t\t<ChevronDownIcon fontSize={ size } />\n\t\t\t</ToggleButton>\n\t\t\t<Menu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonClose={ () => setIsMenuOpen( false ) }\n\t\t\t\tanchorEl={ menuButtonRef.current }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tsx={ {\n\t\t\t\t\tmt: 0.5,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ items.map( ( { label, value: buttonValue } ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ buttonValue }\n\t\t\t\t\t\tselected={ buttonValue === value }\n\t\t\t\t\t\tonClick={ () => onMenuItemClick( buttonValue ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItemText>\n\t\t\t\t\t\t\t<Typography sx={ { fontSize: '14px' } }>{ label }</Typography>\n\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst usePreviewButton = < TValue, >( items: ToggleButtonGroupItem< TValue >[], value: TValue ) => {\n\tconst [ previewButton, setPreviewButton ] = useState(\n\t\titems.find( ( item ) => item.value === value ) ?? items[ 0 ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst selectedButton = items.find( ( item ) => item.value === value );\n\n\t\tif ( selectedButton ) {\n\t\t\tsetPreviewButton( selectedButton );\n\t\t}\n\t}, [ items, value ] );\n\n\treturn previewButton;\n};\n","import * as React from 'react';\nimport { Tooltip } from '@elementor/ui';\n\nexport const ConditionalTooltip = ( {\n\tshowTooltip,\n\tchildren,\n\tlabel,\n}: React.PropsWithChildren< { showTooltip: boolean; label: string } > ) => {\n\treturn showTooltip && label ? (\n\t\t<Tooltip title={ label } disableFocusListener={ true } placement=\"top\">\n\t\t\t{ children }\n\t\t</Tooltip>\n\t) : (\n\t\tchildren\n\t);\n};\n","import * as React from 'react';\nimport { numberPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst isEmptyOrNaN = ( value?: string | number | null ) =>\n\tvalue === null || value === undefined || value === '' || Number.isNaN( Number( value ) );\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+', '-' ];\n\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder: labelPlaceholder,\n\t\tmax = Number.MAX_VALUE,\n\t\tmin = -Number.MAX_VALUE,\n\t\tstep = 1,\n\t\tshouldForceInt = false,\n\t}: {\n\t\tplaceholder?: string;\n\t\tmax?: number;\n\t\tmin?: number;\n\t\tstep?: number;\n\t\tshouldForceInt?: boolean;\n\t} ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( numberPropTypeUtil );\n\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst eventValue: string = event.target.value;\n\n\t\t\tif ( isEmptyOrNaN( eventValue ) ) {\n\t\t\t\tsetValue( null );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst formattedValue = shouldForceInt ? +parseInt( eventValue ) : Number( eventValue );\n\n\t\t\tsetValue( Math.min( Math.max( formattedValue, min ), max ) );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ labelPlaceholder ?? ( placeholder ? String( placeholder ) : '' ) }\n\t\t\t\t\tinputProps={ { step } }\n\t\t\t\t\tonKeyDown={ ( event: KeyboardEvent ) => {\n\t\t\t\t\t\tif ( RESTRICTED_INPUT_KEYS.includes( event.key ) ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type ReactNode, type RefObject, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { bindPopover, bindToggle, Grid, Popover, Stack, ToggleButton, Tooltip, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { SizeControl } from './size-control';\n\ntype MultiSizePropValue = Record< PropKey, SizePropValue >;\n\ntype Item = {\n\ticon: ReactNode;\n\tlabel: string;\n\tbind: PropKey;\n};\n\nexport type EqualUnequalItems = [ Item, Item, Item, Item ];\n\ntype Props< TMultiPropType extends string, TPropValue extends MultiSizePropValue > = {\n\tlabel: string;\n\ticon: ReactNode;\n\ttooltipLabel: string;\n\titems: EqualUnequalItems;\n\tmultiSizePropTypeUtil: PropTypeUtil< TMultiPropType, TPropValue >;\n};\n\nconst isEqualSizes = ( propValue: MultiSizePropValue, items: EqualUnequalItems ) => {\n\tconst values = Object.values( propValue );\n\n\tif ( values.length !== items.length ) {\n\t\treturn false;\n\t}\n\n\tconst [ firstValue, ...restValues ] = values;\n\n\treturn restValues.every(\n\t\t( value ) => value?.value?.size === firstValue?.value?.size && value?.value?.unit === firstValue?.value?.unit\n\t);\n};\n\nexport function EqualUnequalSizesControl< TMultiPropType extends string, TPropValue extends MultiSizePropValue >( {\n\tlabel,\n\ticon,\n\ttooltipLabel,\n\titems,\n\tmultiSizePropTypeUtil,\n}: Props< TMultiPropType, TPropValue > ) {\n\tconst popupId = useId();\n\tconst popupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst {\n\t\tpropType: multiSizePropType,\n\t\tvalue: multiSizeValue,\n\t\tsetValue: setMultiSizeValue,\n\t\tdisabled: multiSizeDisabled,\n\t} = useBoundProp( multiSizePropTypeUtil );\n\n\tconst { value: sizeValue, setValue: setSizeValue } = useBoundProp( sizePropTypeUtil );\n\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst splitEqualValue = () => {\n\t\tif ( ! sizeValue ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn items.reduce< TPropValue >(\n\t\t\t( acc, { bind } ) => ( { ...acc, [ bind ]: sizePropTypeUtil.create( sizeValue ) } ),\n\t\t\t{} as TPropValue\n\t\t);\n\t};\n\n\tconst setNestedProp = ( newValue: TPropValue ) => {\n\t\tconst newMappedValues = {\n\t\t\t...( multiSizeValue ?? splitEqualValue() ),\n\t\t\t...newValue,\n\t\t};\n\n\t\tconst isEqual = isEqualSizes( newMappedValues, items );\n\n\t\tif ( isEqual ) {\n\t\t\treturn setSizeValue( Object.values( newMappedValues )[ 0 ]?.value );\n\t\t}\n\n\t\tsetMultiSizeValue( newMappedValues );\n\t};\n\n\tconst getMultiSizeValues = () => {\n\t\tif ( multiSizeValue ) {\n\t\t\treturn multiSizeValue;\n\t\t}\n\n\t\treturn splitEqualValue() ?? null;\n\t};\n\n\tconst isShowingGeneralIndicator = ! isExperimentActive( 'e_v_3_30' ) || ! popupState.isOpen;\n\n\tconst isMixed = !! multiSizeValue;\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ rowRefs[ 0 ] }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t{ ! isShowingGeneralIndicator ? (\n\t\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\tplaceholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ 0 ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Tooltip title={ tooltipLabel } placement=\"top\">\n\t\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t\t{ ...bindToggle( popupState ) }\n\t\t\t\t\t\t\t\tselected={ popupState.isOpen }\n\t\t\t\t\t\t\t\taria-label={ tooltipLabel }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: { sx: { mt: 0.5, width: rowRefs[ 0 ].current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<PropProvider\n\t\t\t\t\tpropType={ multiSizePropType }\n\t\t\t\t\tvalue={ getMultiSizeValues() }\n\t\t\t\t\tsetValue={ setNestedProp }\n\t\t\t\t\tisDisabled={ () => multiSizeDisabled }\n\t\t\t\t>\n\t\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 1 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 0 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 1 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 2 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 2 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 3 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t</PropProvider>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nconst MultiSizeValueControl = ( { item, rowRef }: { item: Item; rowRef: RefObject< HTMLDivElement > } ) => {\n\tconst isUsingNestedProps = isExperimentActive( 'e_v_3_30' );\n\n\treturn (\n\t\t<PropKeyProvider bind={ item.bind }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t{ isUsingNestedProps ? (\n\t\t\t\t\t\t\t<ControlLabel>{ item.label }</ControlLabel>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ControlFormLabel>{ item.label }</ControlFormLabel>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<SizeControl startIcon={ item.icon } anchorRef={ rowRef } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { type ExtendedOption } from '../utils/size-control';\nimport { SizeControl } from './size-control';\n\nexport const LinkedDimensionsControl = createControl(\n\t( {\n\t\tlabel,\n\t\tisSiteRtl = false,\n\t\textendedOptions,\n\t}: {\n\t\tlabel: string;\n\t\tisSiteRtl?: boolean;\n\t\textendedOptions?: ExtendedOption[];\n\t} ) => {\n\t\tconst { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\t\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\t\tconst {\n\t\t\tvalue: dimensionsValue,\n\t\t\tsetValue: setDimensionsValue,\n\t\t\tpropType,\n\t\t\tdisabled: dimensionsDisabled,\n\t\t} = useBoundProp( dimensionsPropTypeUtil );\n\n\t\tconst isLinked = ! dimensionsValue && ! sizeValue ? true : !! sizeValue;\n\n\t\tconst isUsingNestedProps = isExperimentActive( 'e_v_3_30' );\n\n\t\tconst onLinkToggle = () => {\n\t\t\tif ( ! isLinked ) {\n\t\t\t\tsetSizeValue( dimensionsValue[ 'block-start' ]?.value ?? null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\t\tsetDimensionsValue( {\n\t\t\t\t'block-start': value,\n\t\t\t\t'block-end': value,\n\t\t\t\t'inline-start': value,\n\t\t\t\t'inline-end': value,\n\t\t\t} );\n\t\t};\n\n\t\tconst tooltipLabel = label.toLowerCase();\n\n\t\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t\t// translators: %s: Tooltip title.\n\t\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t\t// translators: %s: Tooltip title.\n\t\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\t\tconst disabled = sizeDisabled || dimensionsDisabled;\n\n\t\treturn (\n\t\t\t<PropProvider\n\t\t\t\tpropType={ propType }\n\t\t\t\tvalue={ dimensionsValue }\n\t\t\t\tsetValue={ setDimensionsValue }\n\t\t\t\tisDisabled={ () => disabled }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t{ isUsingNestedProps ? (\n\t\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t) }\n\t\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</Stack>\n\n\t\t\t\t{ getCssMarginProps( isSiteRtl ).map( ( row, index ) => (\n\t\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" key={ index } ref={ gridRowRefs[ index ] }>\n\t\t\t\t\t\t{ row.map( ( { icon, ...props } ) => (\n\t\t\t\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\" key={ props.bind }>\n\t\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t\t<Label { ...props } />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\t\t\t\tbind={ props.bind }\n\t\t\t\t\t\t\t\t\t\tstartIcon={ icon }\n\t\t\t\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ gridRowRefs[ index ] }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) ) }\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\nconst Control = ( {\n\tbind,\n\tstartIcon,\n\tisLinked,\n\textendedOptions,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tstartIcon: React.ReactNode;\n\tisLinked: boolean;\n\textendedOptions?: ExtendedOption[];\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl startIcon={ startIcon } extendedOptions={ extendedOptions } anchorRef={ anchorRef } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl startIcon={ startIcon } extendedOptions={ extendedOptions } anchorRef={ anchorRef } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Label = ( { label, bind }: { label: string; bind: PropKey } ) => {\n\tconst isUsingNestedProps = isExperimentActive( 'e_v_3_30' );\n\n\tif ( ! isUsingNestedProps ) {\n\t\treturn <ControlFormLabel>{ label }</ControlFormLabel>;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t</PropKeyProvider>\n\t);\n};\n\nfunction getCssMarginProps( isSiteRtl: boolean ) {\n\treturn [\n\t\t[\n\t\t\t{\n\t\t\t\tbind: 'block-start',\n\t\t\t\tlabel: __( 'Top', 'elementor' ),\n\t\t\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbind: 'inline-end',\n\t\t\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\t\t\ticon: isSiteRtl ? <SideLeftIcon fontSize={ 'tiny' } /> : <SideRightIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t],\n\t\t[\n\t\t\t{\n\t\t\t\tbind: 'block-end',\n\t\t\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\t\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbind: 'inline-start',\n\t\t\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\t\t\ticon: isSiteRtl ? <SideRightIcon fontSize={ 'tiny' } /> : <SideLeftIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t],\n\t];\n}\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Popover, UnstableTag, usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { FontFamilySelector } from '../../components/font-family-selector';\nimport ControlActions from '../../control-actions/control-actions';\nimport { createControl } from '../../create-control';\n\nexport type FontCategory = {\n\tlabel: string;\n\tfonts: string[];\n};\n\ntype FontFamilyControlProps = {\n\tfontFamilies: FontCategory[];\n\tsectionWidth: number;\n};\n\nconst SIZE = 'tiny';\n\nexport const FontFamilyControl = createControl( ( { fontFamilies, sectionWidth }: FontFamilyControlProps ) => {\n\tconst { value: fontFamily, setValue: setFontFamily, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst isShowingPlaceholder = ! fontFamily && placeholder;\n\n\treturn (\n\t\t<>\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ fontFamily || placeholder }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize={ SIZE } /> }\n\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tsx={\n\t\t\t\t\t\tisShowingPlaceholder\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t'& .MuiTag-label': {\n\t\t\t\t\t\t\t\t\t\tcolor: ( theme ) => theme.palette.text.tertiary,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttextTransform: 'capitalize',\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tsx={ { my: 1.5 } }\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t>\n\t\t\t\t<FontFamilySelector\n\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\tfontFamily={ fontFamily }\n\t\t\t\t\tonFontFamilyChange={ setFontFamily }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n} );\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { PopoverBody, PopoverHeader, PopoverMenuList, PopoverSearch } from '@elementor/editor-ui';\nimport { TextIcon } from '@elementor/icons';\nimport { Box, Divider, Link, Stack, Typography } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { enqueueFont } from '../controls/font-family-control/enqueue-font';\nimport { type FontCategory } from '../controls/font-family-control/font-family-control';\nimport { type FontListItem, useFilteredFontFamilies } from '../hooks/use-filtered-font-families';\n\nconst SIZE = 'tiny';\n\ntype FontFamilySelectorProps = {\n\tfontFamilies: FontCategory[];\n\tfontFamily: string | null;\n\tonFontFamilyChange: ( fontFamily: string ) => void;\n\tonClose: () => void;\n\tsectionWidth: number;\n};\n\nexport const FontFamilySelector = ( {\n\tfontFamilies,\n\tfontFamily,\n\tonFontFamilyChange,\n\tonClose,\n\tsectionWidth,\n}: FontFamilySelectorProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst filteredFontFamilies = useFilteredFontFamilies( fontFamilies, searchValue );\n\n\tconst handleSearch = ( value: string ) => {\n\t\tsetSearchValue( value );\n\t};\n\n\tconst handleClose = () => {\n\t\tsetSearchValue( '' );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<PopoverBody width={ sectionWidth }>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Font Family', 'elementor' ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t\ticon={ <TextIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\n\t\t\t<PopoverSearch\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tonSearch={ handleSearch }\n\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t{ filteredFontFamilies.length > 0 ? (\n\t\t\t\t<FontList\n\t\t\t\t\tfontListItems={ filteredFontFamilies }\n\t\t\t\t\tsetFontFamily={ onFontFamilyChange }\n\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\tfontFamily={ fontFamily }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Stack\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\theight=\"100%\"\n\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\toverflow={ 'hidden' }\n\t\t\t\t>\n\t\t\t\t\t<TextIcon fontSize=\"large\" />\n\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\tjustifyContent: 'center',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>&ldquo;</span>\n\t\t\t\t\t\t\t<span style={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }>\n\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>&rdquo;.</span>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n\ntype FontListProps = {\n\tfontListItems: FontListItem[];\n\tsetFontFamily: ( fontFamily: string ) => void;\n\thandleClose: () => void;\n\tfontFamily: string | null;\n};\n\nconst FontList = ( { fontListItems, setFontFamily, handleClose, fontFamily }: FontListProps ) => {\n\tconst selectedItem = fontListItems.find( ( item ) => item.value === fontFamily );\n\n\tconst debouncedVirtualizeChange = useDebounce( ( { getVirtualIndexes }: { getVirtualIndexes: () => number[] } ) => {\n\t\tgetVirtualIndexes().forEach( ( index ) => {\n\t\t\tconst item = fontListItems[ index ];\n\t\t\tif ( item && item.type === 'font' ) {\n\t\t\t\tenqueueFont( item.value );\n\t\t\t}\n\t\t} );\n\t}, 100 );\n\n\treturn (\n\t\t<PopoverMenuList\n\t\t\titems={ fontListItems }\n\t\t\tselectedValue={ selectedItem?.value }\n\t\t\tonChange={ debouncedVirtualizeChange }\n\t\t\tonSelect={ setFontFamily }\n\t\t\tonClose={ handleClose }\n\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\tdata-testid=\"font-list\"\n\t\t/>\n\t);\n};\n\nconst useDebounce = < TArgs extends unknown[] >( fn: ( ...args: TArgs ) => void, delay: number ) => {\n\tconst [ debouncedFn ] = useState( () => debounce( fn, delay ) );\n\n\tuseEffect( () => () => debouncedFn.cancel(), [ debouncedFn ] );\n\n\treturn debouncedFn;\n};\n","type EnqueueFont = ( fontFamily: string, context?: 'preview' | 'editor' ) => void;\n\ntype ExtendedWindow = Window & {\n\telementor?: {\n\t\thelpers?: {\n\t\t\tenqueueFont?: EnqueueFont;\n\t\t};\n\t};\n};\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'editor' ) => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import { type FontCategory } from '@elementor/editor-controls';\n\nexport type FontListItem = {\n\ttype: 'font' | 'category';\n\tvalue: string;\n};\n\nexport const useFilteredFontFamilies = ( fontFamilies: FontCategory[], searchValue: string ) => {\n\treturn fontFamilies.reduce< FontListItem[] >( ( acc, category ) => {\n\t\tconst filteredFonts = category.fonts.filter( ( font ) =>\n\t\t\tfont.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t);\n\n\t\tif ( filteredFonts.length ) {\n\t\t\tacc.push( { type: 'category', value: category.label } );\n\n\t\t\tfilteredFonts.forEach( ( font ) => {\n\t\t\t\tacc.push( { type: 'font', value: font } );\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n};\n","import * as React from 'react';\nimport { urlPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const UrlControl = createControl( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue, disabled } = useBoundProp( urlPropTypeUtil );\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropsWithChildren, useMemo, useState } from 'react';\nimport { getLinkInLinkRestriction, type LinkInLinkRestriction, selectElement } from '@elementor/editor-elements';\nimport {\n\tbooleanPropTypeUtil,\n\tlinkPropTypeUtil,\n\ttype LinkPropValue,\n\tnumberPropTypeUtil,\n\tstringPropTypeUtil,\n\turlPropTypeUtil,\n} from '@elementor/editor-props';\nimport { InfoTipCard } from '@elementor/editor-ui';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\nimport { AlertTriangleIcon, MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Box, Collapse, Grid, IconButton, Infotip, Stack, Switch } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport {\n\tAutocomplete,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from '../components/autocomplete';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { type ControlProps } from '../utils/types';\nimport { SwitchControl } from './switch-control';\n\ntype Props = ControlProps< {\n\tqueryOptions: {\n\t\trequestParams: Record< string, unknown >;\n\t\tendpoint: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tlabel?: string;\n} >;\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ] | null;\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\n\nconst SIZE = 'tiny';\nconst learnMoreButton = {\n\tlabel: __( 'Learn More', 'elementor' ),\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n};\n\nexport const LinkControl = createControl( ( props: Props ) => {\n\tconst { value, path, setValue, ...propContext } = useBoundProp( linkPropTypeUtil );\n\tconst [ linkSessionValue, setLinkSessionValue ] = useSessionStorage< LinkSessionValue >( path.join( '/' ) );\n\tconst [ isActive, setIsActive ] = useState( !! value );\n\n\tconst {\n\t\tallowCustomValues,\n\t\tqueryOptions: { endpoint = '', requestParams = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tcontext: { elementId },\n\t\tlabel = __( 'Link', 'elementor' ),\n\t} = props || {};\n\n\tconst [ linkInLinkRestriction, setLinkInLinkRestriction ] = useState( getLinkInLinkRestriction( elementId ) );\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value )\n\t);\n\tconst shouldDisableAddingLink = ! isActive && linkInLinkRestriction.shouldRestrict;\n\n\tconst onEnabledChange = () => {\n\t\tsetLinkInLinkRestriction( getLinkInLinkRestriction( elementId ) );\n\n\t\tif ( linkInLinkRestriction.shouldRestrict && ! isActive ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newState = ! isActive;\n\t\tsetIsActive( newState );\n\n\t\tif ( ! newState && value !== null ) {\n\t\t\tsetValue( null );\n\t\t}\n\n\t\tif ( newState && linkSessionValue?.value ) {\n\t\t\tsetValue( linkSessionValue.value );\n\t\t}\n\n\t\tsetLinkSessionValue( {\n\t\t\tvalue: linkSessionValue?.value,\n\t\t\tmeta: { isEnabled: newState },\n\t\t} );\n\t};\n\n\tconst onOptionChange = ( newValue: number | null ) => {\n\t\tconst valueToSave: LinkPropValue[ 'value' ] | null = newValue\n\t\t\t? {\n\t\t\t\t\t...value,\n\t\t\t\t\tdestination: numberPropTypeUtil.create( newValue ),\n\t\t\t\t\tlabel: stringPropTypeUtil.create( findMatchingOption( options, newValue )?.label || null ),\n\t\t\t }\n\t\t\t: null;\n\n\t\tonSaveNewValue( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tnewValue = newValue?.trim() || '';\n\n\t\tconst valueToSave: LinkPropValue[ 'value' ] | null = newValue\n\t\t\t? {\n\t\t\t\t\t...value,\n\t\t\t\t\tdestination: urlPropTypeUtil.create( newValue ),\n\t\t\t\t\tlabel: stringPropTypeUtil.create( '' ),\n\t\t\t }\n\t\t\t: null;\n\n\t\tonSaveNewValue( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst onSaveNewValue = ( newValue: LinkPropValue[ 'value' ] | null ) => {\n\t\tsetValue( newValue );\n\t\tsetLinkSessionValue( { ...linkSessionValue, value: newValue } );\n\t};\n\n\tconst updateOptions = ( newValue: string | null ) => {\n\t\tsetOptions( [] );\n\n\t\tif ( ! newValue || ! endpoint || newValue.length < minInputLength ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounceFetch( { ...requestParams, term: newValue } );\n\t};\n\n\tconst debounceFetch = useMemo(\n\t\t() =>\n\t\t\tdebounce(\n\t\t\t\t( params: FetchOptionsParams ) =>\n\t\t\t\t\tfetchOptions( endpoint, params ).then( ( newOptions ) => {\n\t\t\t\t\t\tsetOptions( formatOptions( newOptions ) );\n\t\t\t\t\t} ),\n\t\t\t\t400\n\t\t\t),\n\t\t[ endpoint ]\n\t);\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tmarginInlineEnd: -0.75,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t<ConditionalInfoTip isVisible={ ! isActive } linkInLinkRestriction={ linkInLinkRestriction }>\n\t\t\t\t\t\t<ToggleIconControl\n\t\t\t\t\t\t\tdisabled={ shouldDisableAddingLink }\n\t\t\t\t\t\t\tactive={ isActive }\n\t\t\t\t\t\t\tonIconClick={ onEnabledChange }\n\t\t\t\t\t\t\tlabel={ __( 'Toggle link', 'elementor' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ConditionalInfoTip>\n\t\t\t\t</Stack>\n\t\t\t\t<Collapse in={ isActive } timeout=\"auto\" unmountOnExit>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'destination' }>\n\t\t\t\t\t\t\t<ControlActions>\n\t\t\t\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\t\tvalue={ value?.destination?.value?.settings?.label || value?.destination?.value }\n\t\t\t\t\t\t\t\t\tonOptionChange={ onOptionChange }\n\t\t\t\t\t\t\t\t\tonTextChange={ onTextChange }\n\t\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ControlActions>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'isTargetBlank' }>\n\t\t\t\t\t\t\t<Grid container alignItems=\"center\" flexWrap=\"nowrap\" justifyContent=\"space-between\">\n\t\t\t\t\t\t\t\t<Grid item>\n\t\t\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Open in a new tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item sx={ { marginInlineEnd: -1 } }>\n\t\t\t\t\t\t\t\t\t<SwitchControlComponent disabled={ propContext.disabled || ! value } />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Collapse>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\ntype ToggleIconControlProps = {\n\tdisabled: boolean;\n\tactive: boolean;\n\tonIconClick: () => void;\n\tlabel?: string;\n};\n\nconst ToggleIconControl = ( { disabled, active, onIconClick, label }: ToggleIconControlProps ) => {\n\treturn (\n\t\t<IconButton size={ SIZE } onClick={ onIconClick } aria-label={ label } disabled={ disabled }>\n\t\t\t{ active ? <MinusIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconButton>\n\t);\n};\n\nconst SwitchControlComponent = ( { disabled }: { disabled: boolean } ) => {\n\tconst { value, setValue } = useBoundProp( booleanPropTypeUtil );\n\tconst isVersion331Active = isExperimentActive( 'e_v_3_31' );\n\n\tif ( isVersion331Active ) {\n\t\treturn <SwitchControl />;\n\t}\n\n\tconst onClick = () => {\n\t\tsetValue( ! value );\n\t};\n\n\treturn (\n\t\t<Switch\n\t\t\tchecked={ value ?? false }\n\t\t\tonClick={ onClick }\n\t\t\tdisabled={ disabled }\n\t\t\tinputProps={ {\n\t\t\t\t...( disabled ? { style: { opacity: 0 } } : {} ),\n\t\t\t} }\n\t\t/>\n\t);\n};\n\ntype FetchOptionsParams = Record< string, unknown > & { term: string };\n\nasync function fetchOptions( ajaxUrl: string, params: FetchOptionsParams ) {\n\tif ( ! params || ! ajaxUrl ) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst { data: response } = await httpService().get< Response >( ajaxUrl, { params } );\n\n\t\treturn response.data.value;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction formatOptions( options: FlatOption[] | CategorizedOption[] ): FlatOption[] | CategorizedOption[] {\n\tconst compareKey = isCategorizedOptionPool( options ) ? 'groupLabel' : 'label';\n\n\treturn options.sort( ( a, b ) =>\n\t\ta[ compareKey ] && b[ compareKey ] ? a[ compareKey ].localeCompare( b[ compareKey ] ) : 0\n\t);\n}\n\nfunction generateFirstLoadedOption( unionValue: LinkPropValue[ 'value' ] | null ): FlatOption[] {\n\tconst value = unionValue?.destination?.value;\n\tconst label = unionValue?.label?.value;\n\tconst type = unionValue?.destination?.$$type || 'url';\n\n\treturn value && label && type === 'number'\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tid: value.toString(),\n\t\t\t\t\tlabel,\n\t\t\t\t},\n\t\t ]\n\t\t: [];\n}\n\ninterface ConditionalInfoTipType extends PropsWithChildren {\n\tlinkInLinkRestriction: LinkInLinkRestriction;\n\tisVisible: boolean;\n}\n\nconst ConditionalInfoTip: React.FC< ConditionalInfoTipType > = ( { linkInLinkRestriction, isVisible, children } ) => {\n\tconst { shouldRestrict, reason, elementId } = linkInLinkRestriction;\n\n\tconst handleTakeMeClick = () => {\n\t\tif ( elementId ) {\n\t\t\tselectElement( elementId );\n\t\t}\n\t};\n\n\treturn shouldRestrict && isVisible ? (\n\t\t<Infotip\n\t\t\tplacement=\"right\"\n\t\t\tcontent={\n\t\t\t\t<InfoTipCard\n\t\t\t\t\tcontent={ INFOTIP_CONTENT[ reason ] }\n\t\t\t\t\tsvgIcon={ <AlertTriangleIcon /> }\n\t\t\t\t\tlearnMoreButton={ learnMoreButton }\n\t\t\t\t\tctaButton={ {\n\t\t\t\t\t\tlabel: __( 'Take me there', 'elementor' ),\n\t\t\t\t\t\tonClick: handleTakeMeClick,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Infotip>\n\t) : (\n\t\t<>{ children }</>\n\t);\n};\n\nconst INFOTIP_CONTENT = {\n\tdescendant: (\n\t\t<>\n\t\t\t{ __( 'To add a link to this container,', 'elementor' ) }\n\t\t\t<br />\n\t\t\t{ __( 'first remove the link from the elements inside of it.', 'elementor' ) }\n\t\t</>\n\t),\n\tancestor: (\n\t\t<>\n\t\t\t{ __( 'To add a link to this element,', 'elementor' ) }\n\t\t\t<br />\n\t\t\t{ __( 'first remove the link from its parent container.', 'elementor' ) }\n\t\t</>\n\t),\n};\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport {\n\tAutocomplete as AutocompleteBase,\n\ttype AutocompleteRenderInputParams,\n\tBox,\n\tIconButton,\n\tInputAdornment,\n\tTextField,\n} from '@elementor/ui';\n\nexport type FlatOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel?: never;\n};\n\nexport type CategorizedOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel: string;\n};\n\nexport type Props = {\n\toptions: FlatOption[] | CategorizedOption[];\n\tvalue?: number | string | null;\n\tonOptionChange: ( newValue: number | null ) => void;\n\tonTextChange?: ( newValue: string | null ) => void;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n\tminInputLength?: number;\n};\n\nexport const Autocomplete = forwardRef( ( props: Props, ref ) => {\n\tconst {\n\t\toptions,\n\t\tonOptionChange,\n\t\tonTextChange,\n\t\tallowCustomValues = false,\n\t\tplaceholder = '',\n\t\tminInputLength = 2,\n\t\tvalue = '',\n\t\t...restProps\n\t} = props;\n\n\tconst optionKeys = _factoryFilter( value, options, minInputLength ).map( ( { id } ) => id );\n\tconst allowClear = !! value;\n\n\t// Prevents MUI warning when freeSolo/allowCustomValues is false\n\tconst muiWarningPreventer = allowCustomValues || !! value?.toString()?.length;\n\n\tconst isOptionEqualToValue = muiWarningPreventer ? undefined : () => true;\n\n\tconst isValueFromOptions = typeof value === 'number' && !! findMatchingOption( options, value );\n\n\treturn (\n\t\t<AutocompleteBase\n\t\t\t{ ...restProps }\n\t\t\tref={ ref }\n\t\t\tforcePopupIcon={ false }\n\t\t\tdisableClearable={ true } // Disabled component's auto clear icon to use our custom one instead\n\t\t\tfreeSolo={ allowCustomValues }\n\t\t\tvalue={ value?.toString() || '' }\n\t\t\tsize={ 'tiny' }\n\t\t\tonChange={ ( _, newValue ) => onOptionChange( Number( newValue ) ) }\n\t\t\treadOnly={ isValueFromOptions }\n\t\t\toptions={ optionKeys }\n\t\t\tgetOptionKey={ ( optionId ) => findMatchingOption( options, optionId )?.id || optionId }\n\t\t\tgetOptionLabel={ ( optionId ) => findMatchingOption( options, optionId )?.label || optionId.toString() }\n\t\t\tgroupBy={\n\t\t\t\tisCategorizedOptionPool( options )\n\t\t\t\t\t? ( optionId: string ) => findMatchingOption( options, optionId )?.groupLabel || optionId\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tisOptionEqualToValue={ isOptionEqualToValue }\n\t\t\tfilterOptions={ () => optionKeys }\n\t\t\trenderOption={ ( optionProps, optionId ) => (\n\t\t\t\t<Box component=\"li\" { ...optionProps } key={ optionProps.id }>\n\t\t\t\t\t{ findMatchingOption( options, optionId )?.label ?? optionId }\n\t\t\t\t</Box>\n\t\t\t) }\n\t\t\trenderInput={ ( params ) => (\n\t\t\t\t<TextInput\n\t\t\t\t\tparams={ params }\n\t\t\t\t\thandleChange={ ( newValue ) => onTextChange?.( newValue ) }\n\t\t\t\t\tallowClear={ allowClear }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\thasSelectedValue={ isValueFromOptions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n} );\n\nconst TextInput = ( {\n\tparams,\n\tallowClear,\n\tplaceholder,\n\thandleChange,\n\thasSelectedValue,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n\tplaceholder: string;\n\thasSelectedValue: boolean;\n} ) => {\n\tconst onChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\thandleChange( event.target.value );\n\t};\n\n\treturn (\n\t\t<TextField\n\t\t\t{ ...params }\n\t\t\tplaceholder={ placeholder }\n\t\t\tonChange={ onChange }\n\t\t\tsx={ {\n\t\t\t\t'& .MuiInputBase-input': {\n\t\t\t\t\tcursor: hasSelectedValue ? 'default' : undefined,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tInputProps={ {\n\t\t\t\t...params.InputProps,\n\t\t\t\tendAdornment: <ClearButton params={ params } allowClear={ allowClear } handleChange={ handleChange } />,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ClearButton = ( {\n\tallowClear,\n\thandleChange,\n\tparams,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n} ) => (\n\t<InputAdornment position=\"end\">\n\t\t{ allowClear && (\n\t\t\t<IconButton size={ params.size } onClick={ () => handleChange( null ) } sx={ { cursor: 'pointer' } }>\n\t\t\t\t<XIcon fontSize={ params.size } />\n\t\t\t</IconButton>\n\t\t) }\n\t</InputAdornment>\n);\n\nexport function findMatchingOption(\n\toptions: FlatOption[] | CategorizedOption[],\n\toptionId: string | number | null = null\n) {\n\tconst formattedOption = ( optionId || '' ).toString();\n\n\treturn options.find( ( { id } ) => formattedOption === id.toString() );\n}\n\nexport function isCategorizedOptionPool( options: FlatOption[] | CategorizedOption[] ): options is CategorizedOption[] {\n\treturn options.every( ( option ) => 'groupLabel' in option );\n}\nfunction _factoryFilter< T extends FlatOption[] | CategorizedOption[] >(\n\tnewValue: string | number | null,\n\toptions: T,\n\tminInputLength: number\n): T {\n\tif ( null === newValue ) {\n\t\treturn options;\n\t}\n\n\tconst formattedValue = String( newValue || '' )?.toLowerCase();\n\n\tif ( formattedValue.length < minInputLength ) {\n\t\treturn new Array( 0 ) as T;\n\t}\n\n\treturn options.filter(\n\t\t( option ) =>\n\t\t\tString( option.id ).toLowerCase().includes( formattedValue ) ||\n\t\t\toption.label.toLowerCase().includes( formattedValue )\n\t) as T;\n}\n","import * as React from 'react';\nimport { booleanPropTypeUtil } from '@elementor/editor-props';\nimport { Switch } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context/use-bound-prop';\nimport { createControl } from '../create-control';\n\nexport const SwitchControl = createControl( () => {\n\tconst { value, setValue, disabled } = useBoundProp( booleanPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.checked );\n\t};\n\n\treturn (\n\t\t<div style={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t<Switch\n\t\t\t\tchecked={ !! value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( disabled ? { style: { opacity: 0 } } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</div>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { SizeControl } from './size-control';\n\nexport const GapControl = createControl( ( { label }: { label: string } ) => {\n\tconst {\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tpropType,\n\t\tdisabled: directionDisabled,\n\t} = useBoundProp( layoutDirectionPropTypeUtil );\n\n\tconst stackRef = useRef< HTMLDivElement >( null );\n\n\tconst { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst isLinked = ! directionValue && ! sizeValue ? true : !! sizeValue;\n\n\tconst onLinkToggle = () => {\n\t\tif ( ! isLinked ) {\n\t\t\tsetSizeValue( directionValue?.column?.value ?? null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\tsetDirectionValue( {\n\t\t\trow: value,\n\t\t\tcolumn: value,\n\t\t} );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || directionDisabled;\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ directionValue } setValue={ setDirectionValue }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ stackRef }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Column', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control bind={ 'column' } isLinked={ isLinked } anchorRef={ stackRef } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Row', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control bind={ 'row' } isLinked={ isLinked } anchorRef={ stackRef } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = ( {\n\tbind,\n\tisLinked,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tisLinked: boolean;\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl anchorRef={ anchorRef } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl anchorRef={ anchorRef } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { ArrowsMoveHorizontalIcon, ArrowsMoveVerticalIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent, Stack, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst RATIO_OPTIONS = [\n\t{ label: __( 'Auto', 'elementor' ), value: 'auto' },\n\t{ label: '1/1', value: '1/1' },\n\t{ label: '4/3', value: '4/3' },\n\t{ label: '3/4', value: '3/4' },\n\t{ label: '16/9', value: '16/9' },\n\t{ label: '9/16', value: '9/16' },\n\t{ label: '3/2', value: '3/2' },\n\t{ label: '2/3', value: '2/3' },\n];\n\nconst CUSTOM_RATIO = 'custom';\n\nexport const AspectRatioControl = createControl( ( { label }: { label: string } ) => {\n\tconst { value: aspectRatioValue, setValue: setAspectRatioValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustomSelected =\n\t\taspectRatioValue && ! RATIO_OPTIONS.some( ( option ) => option.value === aspectRatioValue );\n\tconst [ initialWidth, initialHeight ] = isCustomSelected ? aspectRatioValue.split( '/' ) : [ '', '' ];\n\n\tconst [ isCustom, setIsCustom ] = useState( isCustomSelected );\n\tconst [ customWidth, setCustomWidth ] = useState< string >( initialWidth );\n\tconst [ customHeight, setCustomHeight ] = useState< string >( initialHeight );\n\tconst [ selectedValue, setSelectedValue ] = useState< string >(\n\t\tisCustomSelected ? CUSTOM_RATIO : aspectRatioValue || ''\n\t);\n\n\tuseEffect( () => {\n\t\tconst isCustomValue =\n\t\t\taspectRatioValue && ! RATIO_OPTIONS.some( ( option ) => option.value === aspectRatioValue );\n\n\t\tif ( isCustomValue ) {\n\t\t\tconst [ width, height ] = aspectRatioValue.split( '/' );\n\t\t\tsetCustomWidth( width || '' );\n\t\t\tsetCustomHeight( height || '' );\n\t\t\tsetSelectedValue( CUSTOM_RATIO );\n\t\t\tsetIsCustom( true );\n\t\t} else {\n\t\t\tsetSelectedValue( aspectRatioValue || '' );\n\t\t\tsetIsCustom( false );\n\t\t\tsetCustomWidth( '' );\n\t\t\tsetCustomHeight( '' );\n\t\t}\n\t}, [ aspectRatioValue ] );\n\n\tconst handleSelectChange = ( event: SelectChangeEvent< string > ) => {\n\t\tconst newValue = event.target.value;\n\t\tconst isCustomRatio = newValue === CUSTOM_RATIO;\n\n\t\tsetIsCustom( isCustomRatio );\n\t\tsetSelectedValue( newValue );\n\n\t\tif ( isCustomRatio ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAspectRatioValue( newValue );\n\t};\n\tconst handleCustomWidthChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst newWidth = event.target.value;\n\t\tsetCustomWidth( newWidth );\n\n\t\tif ( newWidth && customHeight ) {\n\t\t\tsetAspectRatioValue( `${ newWidth }/${ customHeight }` );\n\t\t}\n\t};\n\n\tconst handleCustomHeightChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst newHeight = event.target.value;\n\t\tsetCustomHeight( newHeight );\n\n\t\tif ( customWidth && newHeight ) {\n\t\t\tsetAspectRatioValue( `${ customWidth }/${ newHeight }` );\n\t\t}\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Stack direction=\"column\" gap={ 2 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisplayEmpty\n\t\t\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\t\tonChange={ handleSelectChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ [ ...RATIO_OPTIONS, { label: __( 'Custom', 'elementor' ), value: CUSTOM_RATIO } ].map(\n\t\t\t\t\t\t\t\t( { label: optionLabel, ...props } ) => (\n\t\t\t\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t\t\t\t{ optionLabel }\n\t\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t{ isCustom && (\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\tvalue={ customWidth }\n\t\t\t\t\t\t\t\tonChange={ handleCustomWidthChange }\n\t\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\t\tstartAdornment: <ArrowsMoveHorizontalIcon fontSize=\"tiny\" />,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\tvalue={ customHeight }\n\t\t\t\t\t\t\t\tonChange={ handleCustomHeightChange }\n\t\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\t\tstartAdornment: <ArrowsMoveVerticalIcon fontSize=\"tiny\" />,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack, styled } from '@elementor/ui';\nimport { type OpenOptions, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { EnableUnfilteredModal } from '../components/enable-unfiltered-modal';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\nconst TILE_SIZE = 8;\nconst TILE_WHITE = 'transparent';\nconst TILE_BLACK = '#c1c1c1';\nconst TILES_GRADIENT_FORMULA = `linear-gradient(45deg, ${ TILE_BLACK } 25%, ${ TILE_WHITE } 0, ${ TILE_WHITE } 75%, ${ TILE_BLACK } 0, ${ TILE_BLACK })`;\n\nconst StyledCard = styled( Card )`\n\tbackground-color: white;\n\tbackground-image: ${ TILES_GRADIENT_FORMULA }, ${ TILES_GRADIENT_FORMULA };\n\tbackground-size: ${ TILE_SIZE }px ${ TILE_SIZE }px;\n\tbackground-position:\n\t\t0 0,\n\t\t${ TILE_SIZE / 2 }px ${ TILE_SIZE / 2 }px;\n\tborder: none;\n`;\n\nconst StyledCardMediaContainer = styled( Stack )`\n\tposition: relative;\n\theight: 140px;\n\tobject-fit: contain;\n\tpadding: 5px;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground-color: rgba( 255, 255, 255, 0.37 );\n`;\n\nconst MODE_BROWSE: OpenOptions = { mode: 'browse' };\nconst MODE_UPLOAD: OpenOptions = { mode: 'upload' };\n\nexport const SvgMediaControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst [ unfilteredModalOpenState, setUnfilteredModalOpenState ] = useState( false );\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes: [ 'svg' ],\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\tconst onCloseUnfilteredModal = ( enabled: boolean ) => {\n\t\tsetUnfilteredModalOpenState( false );\n\n\t\tif ( enabled ) {\n\t\t\topen( MODE_UPLOAD );\n\t\t}\n\t};\n\n\tconst handleClick = ( openOptions?: OpenOptions ) => {\n\t\tif ( ! allowSvgUpload && openOptions === MODE_UPLOAD ) {\n\t\t\tsetUnfilteredModalOpenState( true );\n\t\t} else {\n\t\t\topen( openOptions );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1 }>\n\t\t\t<EnableUnfilteredModal open={ unfilteredModalOpenState } onClose={ onCloseUnfilteredModal } />\n\t\t\t<ControlActions>\n\t\t\t\t<StyledCard variant=\"outlined\">\n\t\t\t\t\t<StyledCardMediaContainer>\n\t\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t\t<CircularProgress role=\"progressbar\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<CardMedia\n\t\t\t\t\t\t\t\tcomponent=\"img\"\n\t\t\t\t\t\t\t\timage={ src }\n\t\t\t\t\t\t\t\talt={ __( 'Preview SVG', 'elementor' ) }\n\t\t\t\t\t\t\t\tsx={ { maxHeight: '140px', width: '50px' } }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</StyledCardMediaContainer>\n\t\t\t\t\t<CardOverlay\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba( 0, 0, 0, 0.75 )',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_BROWSE ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Select SVG', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_UPLOAD ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</CardOverlay>\n\t\t\t\t</StyledCard>\n\t\t\t</ControlActions>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useCurrentUserCapabilities } from '@elementor/editor-current-user';\nimport {\n\tButton,\n\tCircularProgress,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogHeader,\n\tDialogTitle,\n\tDivider,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useUpdateUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\ntype EnableUnfilteredModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n};\n\ntype LocalModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n\tisPending?: boolean;\n\tisError?: boolean;\n\thandleEnable: () => void;\n};\n\nconst ADMIN_TITLE_TEXT = __( 'Enable Unfiltered Uploads', 'elementor' );\nconst ADMIN_CONTENT_TEXT = __(\n\t'Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.',\n\t'elementor'\n);\nconst NON_ADMIN_TITLE_TEXT = __( \"Sorry, you can't upload that file yet\", 'elementor' );\nconst NON_ADMIN_CONTENT_TEXT = __(\n\t'This is because this file type may pose a security risk. To upload them anyway, ask the site administrator to enable unfiltered file uploads.',\n\t'elementor'\n);\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT1 = __( 'Failed to enable unfiltered files upload.', 'elementor' );\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT2 = __(\n\t'You can try again, if the problem persists, please contact support.',\n\t'elementor'\n);\n\nconst WAIT_FOR_CLOSE_TIMEOUT_MS = 300;\n\nexport const EnableUnfilteredModal = ( props: EnableUnfilteredModalProps ) => {\n\tconst { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();\n\tconst { canUser } = useCurrentUserCapabilities();\n\tconst [ isError, setIsError ] = useState( false );\n\tconst canManageOptions = canUser( 'manage_options' );\n\n\tconst onClose = ( enabled: boolean ) => {\n\t\tprops.onClose( enabled );\n\t\tsetTimeout( () => setIsError( false ), WAIT_FOR_CLOSE_TIMEOUT_MS );\n\t};\n\n\tconst handleEnable = async () => {\n\t\ttry {\n\t\t\tconst response = await mutateAsync( { allowUnfilteredFilesUpload: true } );\n\t\t\tif ( response?.data?.success === false ) {\n\t\t\t\tsetIsError( true );\n\t\t\t} else {\n\t\t\t\tprops.onClose( true );\n\t\t\t}\n\t\t} catch {\n\t\t\tsetIsError( true );\n\t\t}\n\t};\n\n\tconst dialogProps = { ...props, isPending, handleEnable, isError, onClose };\n\n\treturn canManageOptions ? <AdminDialog { ...dialogProps } /> : <NonAdminDialog { ...dialogProps } />;\n};\n\nconst AdminDialog = ( { open, onClose, handleEnable, isPending, isError }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>\n\t\t\t\t{ isError ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ADMIN_FAILED_CONTENT_TEXT_PT1 } <br /> { ADMIN_FAILED_CONTENT_TEXT_PT2 }\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tADMIN_CONTENT_TEXT\n\t\t\t\t) }\n\t\t\t</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } color=\"secondary\" onClick={ () => onClose( false ) }>\n\t\t\t\t{ __( 'Cancel', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tsize={ 'medium' }\n\t\t\t\tonClick={ () => handleEnable() }\n\t\t\t\tvariant=\"contained\"\n\t\t\t\tcolor=\"primary\"\n\t\t\t\tdisabled={ isPending }\n\t\t\t>\n\t\t\t\t{ isPending ? <CircularProgress size={ 24 } /> : __( 'Enable', 'elementor' ) }\n\t\t\t</Button>\n\t\t</DialogActions>\n\t</Dialog>\n);\n\nconst NonAdminDialog = ( { open, onClose }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ NON_ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>{ NON_ADMIN_CONTENT_TEXT }</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } onClick={ () => onClose( false ) } variant=\"contained\" color=\"primary\">\n\t\t\t\t{ __( 'Got it', 'elementor' ) }\n\t\t\t</Button>\n\t\t</DialogActions>\n\t</Dialog>\n);\n","import * as React from 'react';\nimport { backgroundPropTypeUtil } from '@elementor/editor-props';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlFormLabel } from '../../components/control-form-label';\nimport { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\tconst isUsingNestedProps = isExperimentActive( 'e_v_3_30' );\n\n\tconst colorLabel = __( 'Color', 'elementor' );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind=\"background-overlay\">\n\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind=\"color\">\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t{ isUsingNestedProps ? (\n\t\t\t\t\t\t\t<ControlLabel>{ colorLabel }</ControlLabel>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ControlFormLabel>{ colorLabel }</ControlFormLabel>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ColorControl />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\tcolorPropTypeUtil,\n\ttype PropKey,\n} from '@elementor/editor-props';\nimport { Box, CardMedia, styled, Tab, TabPanel, Tabs, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { PopoverContent } from '../../../components/popover-content';\nimport { Repeater } from '../../../components/repeater';\nimport { createControl } from '../../../create-control';\nimport { env } from '../../../env';\nimport { ColorControl } from '../../color-control';\nimport { ImageControl } from '../../image-control';\nimport {\n\tBackgroundGradientColorControl,\n\ttype ColorStop,\n\tinitialBackgroundGradientOverlay,\n} from '../background-gradient-color-control';\nimport { BackgroundImageOverlayAttachment } from './background-image-overlay/background-image-overlay-attachment';\nimport { BackgroundImageOverlayPosition } from './background-image-overlay/background-image-overlay-position';\nimport { BackgroundImageOverlayRepeat } from './background-image-overlay/background-image-overlay-repeat';\nimport { BackgroundImageOverlaySize } from './background-image-overlay/background-image-overlay-size';\nimport { type BackgroundImageOverlay } from './types';\nimport { useBackgroundTabsHistory } from './use-background-tabs-history';\n\nconst DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR = '#00000033';\n\nexport const initialBackgroundColorOverlay: BackgroundOverlayItemPropValue = backgroundColorOverlayPropTypeUtil.create(\n\t{\n\t\tcolor: colorPropTypeUtil.create( DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR ),\n\t}\n);\n\nexport const getInitialBackgroundOverlay = (): BackgroundOverlayItemPropValue => ( {\n\t$$type: 'background-image-overlay',\n\tvalue: {\n\t\timage: {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: {\n\t\t\t\t\t$$type: 'image-src',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\turl: {\n\t\t\t\t\t\t\t$$type: 'url',\n\t\t\t\t\t\t\tvalue: env.background_placeholder_image,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t\tvalue: 'large',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst backgroundResolutionOptions = [\n\t{ label: __( 'Thumbnail - 150 x 150', 'elementor' ), value: 'thumbnail' },\n\t{ label: __( 'Medium - 300 x 300', 'elementor' ), value: 'medium' },\n\t{ label: __( 'Large 1024 x 1024', 'elementor' ), value: 'large' },\n\t{ label: __( 'Full', 'elementor' ), value: 'full' },\n];\n\nexport const BackgroundOverlayRepeaterControl = createControl( () => {\n\tconst { propType, value: overlayValues, setValue, disabled } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ overlayValues } setValue={ setValue } isDisabled={ () => disabled }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ overlayValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Overlay', 'elementor' ) }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: getInitialBackgroundOverlay(),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nexport const ItemContent = ( { anchorEl = null, bind }: { anchorEl?: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory( {\n\t\timage: getInitialBackgroundOverlay().value,\n\t\tcolor: initialBackgroundColorOverlay.value,\n\t\tgradient: initialBackgroundGradientOverlay.value,\n\t} );\n\n\treturn (\n\t\t<Box sx={ { width: '100%' } }>\n\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t<Tabs\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\taria-label={ __( 'Background Overlay', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<Tab label={ __( 'Image', 'elementor' ) } { ...getTabProps( 'image' ) } />\n\t\t\t\t\t<Tab label={ __( 'Gradient', 'elementor' ) } { ...getTabProps( 'gradient' ) } />\n\t\t\t\t\t<Tab label={ __( 'Color', 'elementor' ) } { ...getTabProps( 'color' ) } />\n\t\t\t\t</Tabs>\n\t\t\t</Box>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'image' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ImageOverlayContent />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'gradient' ) }>\n\t\t\t\t<BackgroundGradientColorControl />\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'color' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ColorOverlayContent anchorEl={ anchorEl } />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemIconImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemIconColor value={ value } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemIconGradient value={ value } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst extractColorFrom = ( prop: BackgroundOverlayItemPropValue ) => {\n\tif ( prop?.value?.color?.value ) {\n\t\treturn prop.value.color.value;\n\t}\n\n\treturn '';\n};\n\nconst ItemIconColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ color } />;\n};\n\nconst ItemIconImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn (\n\t\t<CardMedia\n\t\t\timage={ imageUrl }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\theight: '1em',\n\t\t\t\twidth: '1em',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\t\t\t\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nconst ItemIconGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst gradient = getGradientValue( value );\n\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ gradient } />;\n};\n\nconst ItemLabel = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemLabelImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemLabelColor value={ value } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemLabelGradient value={ value } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst ItemLabelColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <span>{ color }</span>;\n};\n\nconst ItemLabelImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn <span>{ imageTitle }</span>;\n};\n\nconst ItemLabelGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tif ( value.value.type.value === 'linear' ) {\n\t\treturn <span>{ __( 'Linear Gradient', 'elementor' ) }</span>;\n\t}\n\n\treturn <span>{ __( 'Radial Gradient', 'elementor' ) }</span>;\n};\n\nconst ColorOverlayContent = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst propContext = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'color' }>\n\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst ImageOverlayContent = () => {\n\tconst propContext = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'image' }>\n\t\t\t\t<ImageControl sizes={ backgroundResolutionOptions } />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'position' }>\n\t\t\t\t<BackgroundImageOverlayPosition />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'repeat' }>\n\t\t\t\t<BackgroundImageOverlayRepeat />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t<BackgroundImageOverlaySize />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'attachment' }>\n\t\t\t\t<BackgroundImageOverlayAttachment />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst useImage = ( image: BackgroundImageOverlay ) => {\n\tlet imageTitle,\n\t\timageUrl: string | null = null;\n\n\tconst imageSrc = image?.value.image.value?.src.value;\n\tconst { data: attachment } = useWpMediaAttachment( imageSrc.id?.value || null );\n\n\tif ( imageSrc.id ) {\n\t\tconst imageFileTypeExtension = getFileExtensionFromFilename( attachment?.filename );\n\t\timageTitle = `${ attachment?.title }${ imageFileTypeExtension }` || null;\n\t\timageUrl = attachment?.url || null;\n\t} else if ( imageSrc.url ) {\n\t\timageUrl = imageSrc.url.value;\n\t\timageTitle = imageUrl?.substring( imageUrl.lastIndexOf( '/' ) + 1 ) || null;\n\t}\n\n\treturn { imageTitle, imageUrl };\n};\n\nconst getFileExtensionFromFilename = ( filename?: string ) => {\n\tif ( ! filename ) {\n\t\treturn '';\n\t}\n\n\t// get the substring after the last . in the filename\n\tconst extension = filename.substring( filename.lastIndexOf( '.' ) + 1 );\n\n\treturn `.${ extension }`;\n};\n\nconst getGradientValue = ( value: BackgroundOverlayItemPropValue ) => {\n\tconst gradient = value.value;\n\n\tconst stops = gradient.stops.value\n\t\t?.map( ( { value: { color, offset } }: ColorStop ) => `${ color.value } ${ offset.value ?? 0 }%` )\n\t\t?.join( ',' );\n\n\tif ( gradient.type.value === 'linear' ) {\n\t\treturn `linear-gradient(${ gradient.angle.value }deg, ${ stops })`;\n\t}\n\n\treturn `radial-gradient(circle at ${ gradient.positions.value }, ${ stops })`;\n};\n","import { parseEnv } from '@elementor/env';\n\nexport const { env } = parseEnv< {\n\tbackground_placeholder_image: string;\n} >( '@elementor/editor-controls' );\n","import * as React from 'react';\nimport {\n\tbackgroundGradientOverlayPropTypeUtil,\n\ttype BackgroundGradientOverlayPropValue,\n\ttype BackgroundOverlayItemPropValue,\n\tcolorPropTypeUtil,\n\ttype ColorPropValue,\n\tcolorStopPropTypeUtil,\n\tgradientColorStopPropTypeUtil,\n\tnumberPropTypeUtil,\n\ttype NumberPropValue,\n\tstringPropTypeUtil,\n\ttype TransformablePropValue,\n} from '@elementor/editor-props';\nimport { UnstableGradientBox } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport ControlActions from '../../control-actions/control-actions';\nimport { createControl } from '../../create-control';\n\nexport type ColorStop = TransformablePropValue<\n\t'color-stop',\n\t{\n\t\tcolor: ColorPropValue;\n\t\toffset: NumberPropValue;\n\t}\n>;\n\nexport const BackgroundGradientColorControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst handleChange = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => {\n\t\tconst transformedValue = createTransformableValue( newValue );\n\n\t\tif ( transformedValue.positions ) {\n\t\t\ttransformedValue.positions = stringPropTypeUtil.create( newValue.positions.join( ' ' ) );\n\t\t}\n\n\t\tsetValue( transformedValue );\n\t};\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst createTransformableValue = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => ( {\n\t\t...newValue,\n\t\ttype: stringPropTypeUtil.create( newValue.type ),\n\t\tangle: numberPropTypeUtil.create( newValue.angle ),\n\t\tstops: gradientColorStopPropTypeUtil.create(\n\t\t\tnewValue.stops.map( ( { color, offset }: { color: string; offset: number } ) =>\n\t\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\t\tcolor: colorPropTypeUtil.create( color ),\n\t\t\t\t\toffset: numberPropTypeUtil.create( offset ),\n\t\t\t\t} )\n\t\t\t)\n\t\t),\n\t} );\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst normalizeValue = () => {\n\t\tif ( ! value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { type, angle, stops, positions } = value;\n\n\t\treturn {\n\t\t\ttype: type.value,\n\t\t\tangle: angle.value,\n\t\t\tstops: stops.value.map( ( { value: { color, offset } }: ColorStop ) => ( {\n\t\t\t\tcolor: color.value,\n\t\t\t\toffset: offset.value,\n\t\t\t} ) ),\n\t\t\tpositions: positions?.value.split( ' ' ),\n\t\t};\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<UnstableGradientBox\n\t\t\t\tsx={ { width: 'auto', padding: 1.5 } }\n\t\t\t\tvalue={ normalizeValue() }\n\t\t\t\tonChange={ handleChange }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n\nexport const initialBackgroundGradientOverlay: BackgroundOverlayItemPropValue =\n\tbackgroundGradientOverlayPropTypeUtil.create( {\n\t\ttype: stringPropTypeUtil.create( 'linear' ),\n\t\tangle: numberPropTypeUtil.create( 180 ),\n\t\tstops: gradientColorStopPropTypeUtil.create( [\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(0,0,0)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 0 ),\n\t\t\t} ),\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(255,255,255)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 100 ),\n\t\t\t} ),\n\t\t] ),\n\t} );\n","import * as React from 'react';\nimport { PinIcon, PinnedOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Attachment = 'fixed' | 'scroll';\n\nconst attachmentControlOptions: ToggleButtonGroupItem< Attachment >[] = [\n\t{\n\t\tvalue: 'fixed',\n\t\tlabel: __( 'Fixed', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'scroll',\n\t\tlabel: __( 'Scroll', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinnedOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayAttachment = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Attachment', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleControl options={ attachmentControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { SizeControl } from '../../../size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst backgroundPositionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const BackgroundImageOverlayPosition = () => {\n\tconst backgroundImageOffsetContext = useBoundProp( backgroundImagePositionOffsetPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageOffsetContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tbackgroundImageOffsetContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( backgroundImageOffsetContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ backgroundPositionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageOffsetContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Repeaters = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';\n\nconst repeatControlOptions: ToggleButtonGroupItem< Repeaters >[] = [\n\t{\n\t\tvalue: 'repeat',\n\t\tlabel: __( 'Repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <GridDotsIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-x',\n\t\tlabel: __( 'Repeat-x', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsHorizontalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-y',\n\t\tlabel: __( 'Repeat-y', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsVerticalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'no-repeat',\n\t\tlabel: __( 'No-repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <XIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayRepeat = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Repeat', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t<ToggleControl options={ repeatControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tArrowBarBothIcon,\n\tArrowsMaximizeIcon,\n\tArrowsMoveHorizontalIcon,\n\tArrowsMoveVerticalIcon,\n\tLetterAIcon,\n\tPencilIcon,\n} from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport {\n\tControlToggleButtonGroup,\n\ttype ToggleButtonGroupItem,\n} from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { SizeControl } from '../../../size-control';\n\ntype Sizes = 'auto' | 'cover' | 'contain' | 'custom';\n\nconst sizeControlOptions: ToggleButtonGroupItem< Sizes >[] = [\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterAIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'cover',\n\t\tlabel: __( 'Cover', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowsMaximizeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: __( 'Contain', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBarBothIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'custom',\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlaySize = () => {\n\tconst backgroundImageScaleContext = useBoundProp( backgroundImageSizeScalePropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageScaleContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handleSizeChange = ( size: Sizes | null ) => {\n\t\tif ( size === 'custom' ) {\n\t\t\tbackgroundImageScaleContext.setValue( { width: null, height: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( size );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Size', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\texclusive\n\t\t\t\t\t\t\titems={ sizeControlOptions }\n\t\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t( backgroundImageScaleContext.value ? 'custom' : stringPropContext.value ) as Sizes\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageScaleContext }>\n\t\t\t\t\t<Grid item xs={ 12 } ref={ rowRef }>\n\t\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'width' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveHorizontalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'height' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveVerticalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundGradientOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type BackgroundImageOverlay } from './types';\n\ntype OverlayType = 'image' | 'gradient' | 'color';\n\ntype InitialBackgroundValues = {\n\tcolor: BackgroundOverlayItemPropValue[ 'value' ];\n\timage: BackgroundImageOverlay[ 'value' ];\n\tgradient: BackgroundOverlayItemPropValue[ 'value' ];\n};\n\nexport const useBackgroundTabsHistory = ( {\n\tcolor: initialBackgroundColorOverlay,\n\timage: initialBackgroundImageOverlay,\n\tgradient: initialBackgroundGradientOverlay,\n}: InitialBackgroundValues ) => {\n\tconst { value: imageValue, setValue: setImageValue } = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\tconst { value: colorValue, setValue: setColorValue } = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\tconst { value: gradientValue, setValue: setGradientValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst getCurrentOverlayType = (): OverlayType => {\n\t\tif ( colorValue ) {\n\t\t\treturn 'color';\n\t\t}\n\n\t\tif ( gradientValue ) {\n\t\t\treturn 'gradient';\n\t\t}\n\n\t\treturn 'image';\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< OverlayType >( getCurrentOverlayType() );\n\n\tconst valuesHistory = useRef< InitialBackgroundValues >( {\n\t\timage: initialBackgroundImageOverlay,\n\t\tcolor: initialBackgroundColorOverlay,\n\t\tgradient: initialBackgroundGradientOverlay,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialBackgroundValues, value: BackgroundOverlayItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: OverlayType ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase 'image':\n\t\t\t\tsetImageValue( valuesHistory.current.image );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'gradient':\n\t\t\t\tsetGradientValue( valuesHistory.current.gradient );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'color':\n\t\t\t\tsetColorValue( valuesHistory.current.color );\n\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\treturn {\n\t\tgetTabProps,\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { createArrayPropUtils, type PropKey } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport {\n\ttype ChildControlConfig,\n\tRepeatableControlContext,\n\tuseRepeatableControlContext,\n} from '../hooks/use-repeatable-control-context';\n\ntype RepeatableControlProps = {\n\tlabel: string;\n\trepeaterLabel: string;\n\tchildControlConfig: ChildControlConfig;\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tinitialValues?: object;\n\tpatternLabel?: string;\n\tplaceholder?: string;\n};\n\nconst PLACEHOLDER_REGEX = /\\$\\{([^}]+)\\}/g;\n\nexport const RepeatableControl = createControl(\n\t( {\n\t\trepeaterLabel,\n\t\tchildControlConfig,\n\t\tshowDuplicate,\n\t\tshowToggle,\n\t\tinitialValues,\n\t\tpatternLabel,\n\t\tplaceholder,\n\t}: RepeatableControlProps ) => {\n\t\tconst { propTypeUtil: childPropTypeUtil } = childControlConfig;\n\n\t\tif ( ! childPropTypeUtil ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst childArrayPropTypeUtil = useMemo(\n\t\t\t() => createArrayPropUtils( childPropTypeUtil.key, childPropTypeUtil.schema ),\n\t\t\t[ childPropTypeUtil.key, childPropTypeUtil.schema ]\n\t\t);\n\n\t\tconst contextValue = useMemo(\n\t\t\t() => ( {\n\t\t\t\t...childControlConfig,\n\t\t\t\tplaceholder: placeholder || '',\n\t\t\t\tpatternLabel: patternLabel || '',\n\t\t\t} ),\n\t\t\t[ childControlConfig, placeholder, patternLabel ]\n\t\t);\n\n\t\tconst { propType, value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\n\t\treturn (\n\t\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t\t<RepeatableControlContext.Provider value={ contextValue }>\n\t\t\t\t\t<Repeater\n\t\t\t\t\t\topenOnAdd\n\t\t\t\t\t\tvalues={ value ?? [] }\n\t\t\t\t\t\tsetValues={ setValue }\n\t\t\t\t\t\tlabel={ repeaterLabel }\n\t\t\t\t\t\tisSortable={ false }\n\t\t\t\t\t\titemSettings={ {\n\t\t\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\t\t\tinitialValues: childPropTypeUtil.create( initialValues || null ),\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t/>\n\t\t\t\t</RepeatableControlContext.Provider>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\nconst ItemContent = ( { bind }: { bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content />\n\t\t</PropKeyProvider>\n\t);\n};\n\n// TODO: Configurable icon probably can be somehow part of the injected control and bubbled up to the repeater\nconst ItemIcon = () => <></>;\n\nconst Content = () => {\n\tconst { component: ChildControl, props = {} } = useRepeatableControlContext();\n\n\treturn (\n\t\t<PopoverContent p={ 1.5 }>\n\t\t\t<PopoverGridContainer>\n\t\t\t\t<ChildControl { ...props } />\n\t\t\t</PopoverGridContainer>\n\t\t</PopoverContent>\n\t);\n};\n\nconst interpolate = ( template: string, data: Record< string, unknown > ) => {\n\tif ( ! data ) {\n\t\treturn template;\n\t}\n\n\treturn template.replace( PLACEHOLDER_REGEX, ( _, path ): string => {\n\t\tconst value = getNestedValue( data, path );\n\n\t\tif ( typeof value === 'object' && value !== null && ! Array.isArray( value ) ) {\n\t\t\tif ( value.name ) {\n\t\t\t\treturn value.name as string;\n\t\t\t}\n\n\t\t\treturn JSON.stringify( value );\n\t\t}\n\n\t\tif ( Array.isArray( value ) ) {\n\t\t\treturn value.join( ', ' );\n\t\t}\n\n\t\treturn String( value ?? '' );\n\t} );\n};\n\nconst getNestedValue = ( obj: Record< string, unknown >, path: string ) => {\n\treturn path.split( '.' ).reduce( ( current: Record< string, unknown >, key ) => {\n\t\tif ( current && typeof current === 'object' ) {\n\t\t\treturn current[ key ] as Record< string, unknown >;\n\t\t}\n\t\treturn {};\n\t}, obj );\n};\n\nconst isEmptyValue = ( val: unknown ) => {\n\tif ( typeof val === 'string' ) {\n\t\treturn val.trim() === '';\n\t}\n\n\tif ( Number.isNaN( val ) ) {\n\t\treturn true;\n\t}\n\n\tif ( Array.isArray( val ) ) {\n\t\treturn val.length === 0;\n\t}\n\n\tif ( typeof val === 'object' && val !== null ) {\n\t\treturn Object.keys( val ).length === 0;\n\t}\n\n\treturn false;\n};\n\nconst shouldShowPlaceholder = ( pattern: string, data: Record< string, unknown > ): boolean => {\n\tconst propertyPaths = getAllProperties( pattern );\n\n\tconst values = propertyPaths.map( ( path ) => getNestedValue( data, path ) );\n\n\tif ( values.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tif ( values.some( ( value ) => value === null || value === undefined ) ) {\n\t\treturn true;\n\t}\n\n\tif ( values.every( isEmptyValue ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nconst ItemLabel = ( { value }: { value: Record< string, unknown > } ) => {\n\tconst { placeholder, patternLabel } = useRepeatableControlContext();\n\n\tconst label = shouldShowPlaceholder( patternLabel, value ) ? placeholder : interpolate( patternLabel, value );\n\n\treturn (\n\t\t<Box component=\"span\" color=\"text.tertiary\">\n\t\t\t{ label }\n\t\t</Box>\n\t);\n};\n\nconst getAllProperties = ( pattern: string ) => {\n\tconst properties = pattern.match( PLACEHOLDER_REGEX )?.map( ( match ) => match.slice( 2, -1 ) ) || [];\n\n\treturn properties;\n};\n","import { createContext, useContext } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nexport type ChildControlConfig = {\n\tcomponent: React.ComponentType;\n\tprops?: Record< string, unknown >;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpropTypeUtil: PropTypeUtil< string, any >;\n\tlabel?: string;\n};\n\ntype RepeatableControlContextType = ChildControlConfig & {\n\tplaceholder: string;\n\tpatternLabel: string;\n};\n\nconst RepeatableControlContext = createContext< RepeatableControlContextType | undefined >( undefined );\n\nconst useRepeatableControlContext = () => {\n\tconst context = useContext( RepeatableControlContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeatableControlContext must be used within RepeatableControl' );\n\t}\n\n\treturn context;\n};\n\nexport { RepeatableControlContext, useRepeatableControlContext };\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport {\n\ttype CreateOptions,\n\tisTransformable,\n\tkeyValuePropTypeUtil,\n\ttype PropKey,\n\ttype Props,\n\tstringPropTypeUtil,\n} from '@elementor/editor-props';\nimport { FormHelperText, FormLabel, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\nimport { TextControl } from './text-control';\n\ntype KeyValueControlProps = {\n\tkeyName?: string;\n\tvalueName?: string;\n\tregexKey?: string;\n\tregexValue?: string;\n\tvalidationErrorMessage?: string;\n};\n\nexport const KeyValueControl = createControl( ( props: KeyValueControlProps = {} ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( keyValuePropTypeUtil );\n\tconst [ keyError, setKeyError ] = useState< string >( '' );\n\tconst [ valueError, setValueError ] = useState< string >( '' );\n\n\tconst [ sessionState, setSessionState ] = useState( {\n\t\tkey: value?.key?.value || '',\n\t\tvalue: value?.value?.value || '',\n\t} );\n\n\tconst keyLabel = props.keyName || __( 'Key', 'elementor' );\n\tconst valueLabel = props.valueName || __( 'Value', 'elementor' );\n\n\tconst [ keyRegex, valueRegex, errMsg ] = useMemo< [ RegExp | undefined, RegExp | undefined, string ] >(\n\t\t() => [\n\t\t\tprops.regexKey ? new RegExp( props.regexKey ) : undefined,\n\t\t\tprops.regexValue ? new RegExp( props.regexValue ) : undefined,\n\t\t\tprops.validationErrorMessage || __( 'Invalid Format', 'elementor' ),\n\t\t],\n\t\t[ props.regexKey, props.regexValue, props.validationErrorMessage ]\n\t);\n\n\tconst validate = ( newValue: string, fieldType: string ): boolean => {\n\t\tif ( fieldType === 'key' && keyRegex ) {\n\t\t\tconst isValid = keyRegex.test( newValue );\n\t\t\tsetKeyError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t} else if ( fieldType === 'value' && valueRegex ) {\n\t\t\tconst isValid = valueRegex.test( newValue );\n\t\t\tsetValueError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst handleChange = ( newValue: Props, options?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tconst fieldType = meta?.bind;\n\n\t\tif ( ! fieldType ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newChangedValue = newValue[ fieldType ];\n\n\t\tif ( isTransformable( newChangedValue ) && newChangedValue.$$type === 'dynamic' ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst extractedValue = stringPropTypeUtil.extract( newChangedValue );\n\n\t\tsetSessionState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ fieldType ]: extractedValue,\n\t\t} ) );\n\n\t\tif ( extractedValue && validate( extractedValue, fieldType ) ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\t\t} else {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: {\n\t\t\t\t\tvalue: '',\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ handleChange }>\n\t\t\t<Grid container gap={ 1.5 }>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<FormLabel size=\"tiny\">{ keyLabel }</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'key' }>\n\t\t\t\t\t\t<TextControl inputValue={ sessionState.key } error={ !! keyError } sx={ { pt: 1 } } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! keyError && <FormHelperText error>{ keyError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<FormLabel size=\"tiny\">{ valueLabel }</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'value' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ sessionState.value }\n\t\t\t\t\t\t\terror={ !! valueError }\n\t\t\t\t\t\t\tinputDisabled={ !! keyError }\n\t\t\t\t\t\t\tsx={ { pt: 1 } }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! valueError && <FormHelperText error>{ valueError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { positionPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SizeControl } from './size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst positionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n];\n\nexport const PositionControl = () => {\n\tconst positionContext = useBoundProp( positionPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isVersion331Active = isExperimentActive( 'e_v_3_31' );\n\tconst isCustom = !! positionContext.value && isVersion331Active;\n\n\tconst availablePositionOptions = useMemo( () => {\n\t\tconst options = [ ...positionOptions ];\n\n\t\tif ( isVersion331Active ) {\n\t\t\toptions.push( { label: __( 'Custom', 'elementor' ), value: 'custom' } );\n\t\t}\n\n\t\treturn options;\n\t}, [ isVersion331Active ] );\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' && isVersion331Active ) {\n\t\t\tpositionContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Object position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( positionContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ availablePositionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t{ isCustom && (\n\t\t\t\t<PropProvider { ...positionContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl startIcon={ <LetterXIcon fontSize={ 'tiny' } /> } />\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl startIcon={ <LetterYIcon fontSize={ 'tiny' } /> } />\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type TransformItemPropValue, transformPropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { Repeater } from '../../components/repeater';\nimport { createControl } from '../../create-control';\nimport { TransformContent } from './transform-content';\nimport { TransformIcon } from './transform-icon';\nimport { TransformLabel } from './transform-label';\n\nconst initialTransformValue: TransformItemPropValue = {\n\t$$type: 'transform-move',\n\tvalue: {\n\t\tx: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\ty: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\tz: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t},\n};\n\nexport const TransformRepeaterControl = createControl( () => {\n\tconst { propType, value: transformValues, setValue, disabled } = useBoundProp( transformPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ transformValues } setValue={ setValue }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ transformValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Transform', 'elementor' ) }\n\t\t\t\tshowDuplicate={ false }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: TransformIcon,\n\t\t\t\t\tLabel: TransformLabel,\n\t\t\t\t\tContent: TransformContent,\n\t\t\t\t\tinitialValues: initialTransformValue,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport type { PropKey } from '@elementor/editor-props';\nimport { Box, Tab, TabPanel, Tabs, useTabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider } from '../../bound-prop-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { Move } from './functions/move';\n\ntype TransformTabValue = 'transform-move';\n\nexport const TransformContent = ( { bind }: { anchorEl?: HTMLElement | null; bind: PropKey } ) => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< TransformTabValue >( 'transform-move' );\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<PopoverContent>\n\t\t\t\t<Box sx={ { width: '100%' } }>\n\t\t\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t\t\t<Tabs\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\t\taria-label={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Tab label={ __( 'Move', 'elementor' ) } { ...getTabProps( 'transform-move' ) } />\n\t\t\t\t\t\t</Tabs>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'transform-move' ) }>\n\t\t\t\t\t\t<Move />\n\t\t\t\t\t</TabPanel>\n\t\t\t\t</Box>\n\t\t\t</PopoverContent>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { moveTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { AxisRow } from './axis-row';\n\nconst moveAxisControls: { label: string; bindValue: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Move X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Move Y', 'elementor' ),\n\t\tbindValue: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Move Z', 'elementor' ),\n\t\tbindValue: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Move = () => {\n\tconst context = useBoundProp( moveTransformPropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ 'transform-move' }>\n\t\t\t\t\t{ moveAxisControls.map( ( control ) => (\n\t\t\t\t\t\t<AxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { SizeControl } from '../../size-control';\n\ntype TransformAxisRowProps = {\n\tlabel: string;\n\tbindValue: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\nexport const AxisRow = ( { label, bindValue, startIcon, anchorRef }: TransformAxisRowProps ) => {\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bindValue }>\n\t\t\t\t\t\t<SizeControl anchorRef={ anchorRef } startIcon={ startIcon } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type TransformItemPropValue } from '@elementor/editor-props';\nimport { ArrowsMaximizeIcon } from '@elementor/icons';\n\nexport const TransformIcon = ( { value }: { value: TransformItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'transform-move':\n\t\t\treturn <ArrowsMaximizeIcon fontSize=\"tiny\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import * as React from 'react';\nimport type { TransformItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst transformMoveValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => `${ axis?.value.size }${ axis?.value.unit }` )\n\t\t.join( ', ' );\n\nexport const TransformLabel = ( props: { value: TransformItemPropValue } ) => {\n\tconst { $$type, value } = props.value;\n\tswitch ( $$type ) {\n\t\tcase 'transform-move':\n\t\t\treturn <Label label={ __( 'Move', 'elementor' ) } value={ transformMoveValue( value ) } />;\n\t\tdefault:\n\t\t\treturn '';\n\t}\n};\n\nconst Label = ( { label, value }: { label: string; value: string } ) => {\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }: { value }\n\t\t</Box>\n\t);\n};\n"],"mappings":"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","names":["React","import_editor_props","import_ui","import_i18n","React","import_react","value","import_react","value","React","React","import_ui","React","import_react","Control","React","import_ui","React","import_ui","React","import_react","items","items","MenuItem","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_ui","React","import_react","import_icons","import_ui","React","import_react","import_editor_ui","import_ui","units","React","import_ui","import_react","import_react","units","React","import_react","import_editor_props","import_ui","import_i18n","React","import_ui","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_ui","import_i18n","React","import_ui","import_react","React","import_ui","React","import_react","import_icons","import_ui","import_i18n","React","React","import_react","Context","items","items","React","import_icons","import_ui","items","Control","React","import_react","import_editor_props","import_editor_ui","import_ui","import_i18n","React","import_ui","React","import_react","import_ui","import_i18n","units","React","import_ui","ItemIcon","ItemLabel","ItemContent","Content","units","React","import_editor_props","React","import_react","import_icons","import_ui","React","import_ui","items","Content","React","import_editor_props","import_ui","RESTRICTED_INPUT_KEYS","React","import_react","import_editor_props","import_editor_v1_adapters","import_ui","import_i18n","items","React","import_react","import_editor_props","import_editor_v1_adapters","import_icons","import_ui","import_i18n","Control","React","import_editor_props","import_icons","import_ui","React","import_react","import_editor_ui","import_icons","import_ui","import_utils","import_i18n","SIZE","SIZE","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_editor_ui","import_editor_v1_adapters","import_http_client","import_icons","import_ui","import_utils","import_i18n","React","import_react","import_icons","import_ui","AutocompleteBase","React","import_editor_props","import_ui","SIZE","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","Control","React","import_react","import_editor_props","import_editor_ui","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_wp_media","import_i18n","React","import_react","import_ui","import_i18n","React","import_editor_props","import_editor_v1_adapters","import_ui","import_i18n","React","import_editor_props","import_ui","import_wp_media","import_i18n","React","import_editor_props","import_ui","React","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_editor_ui","import_icons","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","import_react","import_editor_props","import_ui","initialBackgroundColorOverlay","initialBackgroundGradientOverlay","ItemIcon","ItemLabel","ItemContent","Content","React","import_react","import_editor_props","import_ui","import_react","ItemIcon","ItemLabel","ItemContent","Content","React","import_react","import_editor_props","import_ui","import_i18n","React","import_react","import_editor_props","import_editor_ui","import_editor_v1_adapters","import_icons","import_ui","import_i18n","React","import_editor_props","import_i18n","React","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","React","import_ui","React","import_icons","React","import_ui","import_i18n","Label"]}
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-form-label.tsx","../src/create-control.tsx","../src/control-replacements.tsx","../src/hooks/use-unfiltered-files-upload.ts","../src/api.ts","../src/controls/image-media-control.tsx","../src/control-actions/control-actions.tsx","../src/components/floating-bar.tsx","../src/control-actions/control-actions-context.tsx","../src/controls/select-control.tsx","../src/controls/text-control.tsx","../src/controls/text-area-control.tsx","../src/controls/size-control.tsx","../src/components/size-control/size-input.tsx","../src/utils/size-control.ts","../src/components/size-control/text-field-inner-selection.tsx","../src/components/text-field-popover.tsx","../src/hooks/use-size-extended-options.ts","../src/hooks/use-sync-external-state.tsx","../src/controls/stroke-control.tsx","../src/components/section-content.tsx","../src/controls/color-control.tsx","../src/controls/box-shadow-repeater-control.tsx","../src/components/popover-content.tsx","../src/components/popover-grid-container.tsx","../src/components/repeater.tsx","../src/control-adornments/control-adornments.tsx","../src/control-adornments/control-adornments-context.tsx","../src/components/sortable.tsx","../src/components/unstable-repeater/locations.ts","../src/controls/filter-repeater-control.tsx","../src/controls/filter-control/drop-shadow-item-content.tsx","../src/controls/filter-control/drop-shadow-item-label.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/components/conditional-tooltip.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/components/control-label.tsx","../src/controls/linked-dimensions-control.tsx","../src/controls/font-family-control/font-family-control.tsx","../src/components/item-selector.tsx","../src/hooks/use-filtered-items-list.ts","../src/controls/font-family-control/enqueue-font.tsx","../src/controls/url-control.tsx","../src/controls/link-control.tsx","../src/components/autocomplete.tsx","../src/components/restricted-link-infotip.tsx","../src/controls/switch-control.tsx","../src/controls/gap-control.tsx","../src/controls/aspect-ratio-control.tsx","../src/controls/svg-media-control.tsx","../src/components/enable-unfiltered-modal.tsx","../src/controls/background-control/background-control.tsx","../src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx","../src/components/unstable-repeater/actions/add-item-action.tsx","../src/components/unstable-repeater/context/repeater-context.tsx","../src/components/unstable-repeater/header/header.tsx","../src/components/unstable-repeater/items/items-container.tsx","../src/components/unstable-repeater/items/item.tsx","../src/components/unstable-repeater/actions/disable-item-action.tsx","../src/components/unstable-repeater/actions/duplicate-item-action.tsx","../src/components/unstable-repeater/actions/remove-item-action.tsx","../src/components/unstable-repeater/items/edit-item-popover.tsx","../src/components/unstable-repeater/items/use-popover.tsx","../src/components/unstable-repeater/unstable-repeater.tsx","../src/env.ts","../src/controls/background-control/background-gradient-color-control.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx","../src/controls/background-control/background-overlay/use-background-tabs-history.ts","../src/controls/repeatable-control.tsx","../src/hooks/use-repeatable-control-context.ts","../src/controls/key-value-control.tsx","../src/controls/position-control.tsx","../src/controls/transform-control/transform-repeater-control.tsx","../src/controls/transform-control/transform-content.tsx","../src/controls/transform-control/functions/move.tsx","../src/controls/transform-control/types.ts","../src/controls/transform-control/functions/axis-row.tsx","../src/controls/transform-control/functions/rotate.tsx","../src/controls/transform-control/functions/scale.tsx","../src/controls/transform-control/functions/scale-axis-row.tsx","../src/controls/transform-control/functions/skew.tsx","../src/controls/transform-control/use-transform-tabs-history.tsx","../src/controls/transform-control/transform-icon.tsx","../src/controls/transform-control/transform-label.tsx","../src/controls/transition-control/transition-repeater-control.tsx","../src/controls/selection-size-control.tsx","../src/controls/transition-control/data.ts","../src/controls/transition-control/transition-selector.tsx","../src/controls/unstable-transform-control/unstable-transform-repeater-control.tsx"],"sourcesContent":["// control types\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 { FilterRepeaterControl } from './controls/filter-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/font-family-control';\nexport { ItemSelector } from './components/item-selector';\nexport { UrlControl } from './controls/url-control';\nexport { LinkControl } from './controls/link-control';\nexport { GapControl } from './controls/gap-control';\nexport { AspectRatioControl } from './controls/aspect-ratio-control';\nexport { SvgMediaControl } from './controls/svg-media-control';\nexport { BackgroundControl } from './controls/background-control/background-control';\nexport { SwitchControl } from './controls/switch-control';\nexport { RepeatableControl } from './controls/repeatable-control';\nexport { KeyValueControl } from './controls/key-value-control';\nexport { PositionControl } from './controls/position-control';\nexport { TransformRepeaterControl } from './controls/transform-control/transform-repeater-control';\nexport { TransitionRepeaterControl } from './controls/transition-control/transition-repeater-control';\nexport { PopoverContent } from './components/popover-content';\nexport { enqueueFont } from './controls/font-family-control/enqueue-font';\nexport { UnstableTransformRepeaterControl } from './controls/unstable-transform-control/unstable-transform-repeater-control';\nexport { transitionProperties, transitionsItemsList } from './controls/transition-control/data';\n\n// components\nexport { ControlFormLabel } from './components/control-form-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';\nexport type { ExtendedOption, Unit, LengthUnit, AngleUnit, TimeUnit } from './utils/size-control';\nexport type { ToggleControlProps } from './controls/toggle-control';\nexport type { FontCategory } from './controls/font-family-control/font-family-control';\n\n// providers\nexport { createControlReplacementsRegistry, ControlReplacementsProvider } from './control-replacements';\nexport { ControlActionsProvider, useControlActions } from './control-actions/control-actions-context';\nexport { useFloatingActionsBar } from './components/floating-bar';\nexport { useBoundProp, PropProvider, PropKeyProvider } from './bound-prop-context';\nexport { ControlAdornmentsProvider } from './control-adornments/control-adornments-context';\nexport { ControlAdornments } from './control-adornments/control-adornments';\n\nexport {\n\tinjectIntoRepeaterItemIcon,\n\tinjectIntoRepeaterItemLabel,\n\tinjectIntoRepeaterHeaderActions,\n\tinjectIntoRepeaterItemActions,\n} from './components/unstable-repeater/locations';\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 { type MediaType } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\nimport { ImageMediaControl } from './image-media-control';\nimport { SelectControl } from './select-control';\n\ntype ImageControlProps = {\n\tsizes: { label: string; value: string }[];\n\tshowMode?: 'all' | 'media' | 'sizes';\n};\n\nexport const ImageControl = createControl( ( { sizes, showMode = 'all' }: ImageControlProps ) => {\n\tconst propContext = useBoundProp( imagePropTypeUtil );\n\n\tlet componentToRender;\n\tswitch ( showMode ) {\n\t\tcase 'media':\n\t\t\tcomponentToRender = <ImageSrcControl />;\n\t\t\tbreak;\n\t\tcase 'sizes':\n\t\t\tcomponentToRender = <ImageSizeControl sizes={ sizes } />;\n\t\t\tbreak;\n\t\tcase 'all':\n\t\tdefault:\n\t\t\tcomponentToRender = (\n\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t<ControlFormLabel>{ __( 'Image', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t<ImageSrcControl />\n\t\t\t\t\t<Grid container gap={ 1.5 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Resolution', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t\t<ImageSizeControl sizes={ sizes } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Stack>\n\t\t\t);\n\t}\n\n\treturn <PropProvider { ...propContext }>{ componentToRender }</PropProvider>;\n} );\n\nconst ImageSrcControl = () => {\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst mediaTypes: MediaType[] = allowSvgUpload ? [ 'image', 'svg' ] : [ 'image' ];\n\n\treturn (\n\t\t<PropKeyProvider bind={ 'src' }>\n\t\t\t<ImageMediaControl mediaTypes={ mediaTypes } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst ImageSizeControl = ( { sizes }: { sizes: ImageControlProps[ 'sizes' ] } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t<SelectControl options={ sizes } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport { type CreateOptions, type PropKey, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { HookOutsideProviderError } from './errors';\n\ntype SetValueMeta = {\n\tbind?: PropKey;\n};\n\nexport type SetValue< T > = ( value: T, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\ntype PropContext< T extends PropValue, P extends PropType > = {\n\tsetValue: SetValue< T >;\n\tvalue: T | null;\n\tpropType: P;\n\tplaceholder?: T;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n};\n\nconst PropContext = createContext< PropContext< PropValue, PropType > | null >( null );\n\nexport type PropProviderProps< T extends PropValue, P extends PropType > = React.PropsWithChildren<\n\tPropContext< T, P >\n>;\n\nexport const PropProvider = < T extends PropValue, P extends PropType >( {\n\tchildren,\n\tvalue,\n\tsetValue,\n\tpropType,\n\tplaceholder,\n\tisDisabled,\n}: PropProviderProps< T, P > ) => {\n\treturn (\n\t\t<PropContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tvalue,\n\t\t\t\tpropType,\n\t\t\t\tsetValue: setValue as SetValue< PropValue >,\n\t\t\t\tplaceholder,\n\t\t\t\tisDisabled,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</PropContext.Provider>\n\t);\n};\n\nexport const usePropContext = < T extends PropValue, P extends PropType >() => {\n\tconst context = useContext( PropContext ) as PropContext< T, P > | null;\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: {\n\t\t\t\thook: 'usePropContext',\n\t\t\t\tprovider: 'PropProvider',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { createError } from '@elementor/utils';\n\nexport const MissingPropTypeError = createError( {\n\tcode: 'missing_prop_provider_prop_type',\n\tmessage: 'Prop type is missing',\n} );\n\nexport const UnsupportedParentError = createError( {\n\tcode: 'unsupported_prop_provider_prop_type',\n\tmessage: 'Parent prop type is not supported',\n} );\n\nexport const HookOutsideProviderError = createError( {\n\tcode: 'hook_outside_provider',\n\tmessage: 'Hook used outside of provider',\n} );\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport {\n\ttype ArrayPropType,\n\ttype ArrayPropValue,\n\ttype CreateOptions,\n\ttype ObjectPropType,\n\ttype ObjectPropValue,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { HookOutsideProviderError, MissingPropTypeError, UnsupportedParentError } from './errors';\nimport { type SetValue, usePropContext } from './prop-context';\n\nexport type PropKeyContextValue< T, P > = {\n\tbind: PropKey;\n\tsetValue: SetValue< T >;\n\tvalue: T;\n\tpropType: P;\n\tplaceholder?: T;\n\tpath: PropKey[];\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nconst PropKeyContext = createContext< PropKeyContextValue< PropValue, PropType > | null >( null );\n\ntype PropKeyProviderProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const PropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst { propType } = usePropContext();\n\n\tif ( ! propType ) {\n\t\tthrow new MissingPropTypeError( { context: { bind } } );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\treturn <ArrayPropKeyProvider bind={ bind }>{ children }</ArrayPropKeyProvider>;\n\t}\n\n\tif ( propType.kind === 'object' ) {\n\t\treturn <ObjectPropKeyProvider bind={ bind }>{ children }</ObjectPropKeyProvider>;\n\t}\n\n\tthrow new UnsupportedParentError( { context: { propType } } );\n};\n\nconst ObjectPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ObjectPropValue[ 'value' ], ObjectPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue: SetValue< PropValue > = ( value, options, meta ) => {\n\t\tconst newValue = {\n\t\t\t...context.value,\n\t\t\t[ bind ]: value,\n\t\t};\n\n\t\treturn context?.setValue( newValue, options, { ...meta, bind } );\n\t};\n\n\tconst value = context.value?.[ bind ];\n\tconst placeholder = context.placeholder?.[ bind ];\n\n\tconst propType = context.propType.shape[ bind ];\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, placeholder, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nconst ArrayPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ArrayPropValue[ 'value' ], ArrayPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue = ( value: PropValue, options?: CreateOptions ) => {\n\t\tconst newValue = [ ...( context.value ?? [] ) ];\n\n\t\tnewValue[ Number( bind ) ] = value;\n\n\t\treturn context?.setValue( newValue, options, { bind } );\n\t};\n\n\tconst value = context.value?.[ Number( bind ) ];\n\n\tconst propType = context.propType.item_prop_type;\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nexport const usePropKeyContext = () => {\n\tconst context = useContext( PropKeyContext );\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: { hook: 'usePropKeyContext', provider: 'PropKeyProvider' },\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { useState } from 'react';\nimport {\n\ttype CreateOptions,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropTypeUtil,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { MissingPropTypeError } from './errors';\nimport { type SetValue } from './prop-context';\nimport { type PropKeyContextValue, usePropKeyContext } from './prop-key-context';\n\ntype UseBoundProp< TValue extends PropValue > = {\n\tbind: PropKey;\n\tsetValue: SetValue< TValue | null >;\n\tvalue: TValue;\n\tpropType: PropType;\n\tplaceholder?: TValue;\n\tpath: PropKey[];\n\trestoreValue: () => void;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nexport function useBoundProp< T extends PropValue = PropValue, P extends PropType = PropType >(): PropKeyContextValue<\n\tT,\n\tP\n>;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil: PropTypeUtil< TKey, TValue >\n): UseBoundProp< TValue >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil?: PropTypeUtil< TKey, TValue >\n) {\n\tconst propKeyContext = usePropKeyContext();\n\n\tconst { isValid, validate, restoreValue } = useValidation( propKeyContext.propType );\n\n\tconst disabled = propKeyContext.isDisabled?.( propKeyContext.propType );\n\n\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn { ...propKeyContext, disabled } as PropKeyContextValue< PropValue, PropType >;\n\t}\n\n\tfunction setValue( value: TValue | null, options: CreateOptions, meta: { bind?: PropKey } ) {\n\t\tif ( ! validate( value ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value === null ) {\n\t\t\treturn propKeyContext?.setValue( null, options, meta );\n\t\t}\n\n\t\treturn propKeyContext?.setValue( propTypeUtil?.create( value, options ), {}, meta );\n\t}\n\n\tconst propType = resolveUnionPropType( propKeyContext.propType, propTypeUtil.key );\n\n\tconst value = propTypeUtil.extract( propKeyContext.value ?? propType.default ?? null );\n\tconst placeholder = propTypeUtil.extract( propKeyContext.placeholder ?? null );\n\n\treturn {\n\t\t...propKeyContext,\n\t\tpropType,\n\t\tsetValue,\n\t\tvalue: isValid ? value : null,\n\t\trestoreValue,\n\t\tplaceholder,\n\t\tdisabled,\n\t};\n}\n\nconst useValidation = ( propType: PropType ) => {\n\tconst [ isValid, setIsValid ] = useState( true );\n\n\t// If the value does not pass the prop type validation, set the isValid state to false.\n\t// This will prevent the value from being set in the model, and its fallback will be used instead.\n\tconst validate = ( value: PropValue | null ) => {\n\t\tlet valid = true;\n\n\t\tif ( propType.settings.required && value === null ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tsetIsValid( valid );\n\n\t\treturn valid;\n\t};\n\n\tconst restoreValue = () => setIsValid( true );\n\n\treturn {\n\t\tisValid,\n\t\tsetIsValid,\n\t\tvalidate,\n\t\trestoreValue,\n\t};\n};\n\n// utils\nconst resolveUnionPropType = ( propType: PropType, key: string ): PropType => {\n\tlet resolvedPropType = propType;\n\n\tif ( propType.kind === 'union' ) {\n\t\tresolvedPropType = propType.prop_types[ key ];\n\t}\n\n\tif ( ! resolvedPropType ) {\n\t\tthrow new MissingPropTypeError( { context: { key } } );\n\t}\n\n\treturn resolvedPropType;\n};\n","import * as React from 'react';\nimport { FormLabel, type FormLabelProps } from '@elementor/ui';\n\nexport const ControlFormLabel = ( props: FormLabelProps ) => {\n\treturn <FormLabel size=\"tiny\" { ...props } />;\n};\n","import * as React from 'react';\nimport { type ComponentProps, type ComponentType } from 'react';\nimport { ErrorBoundary } from '@elementor/ui';\n\nimport { useControlReplacement } from './control-replacements';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\nconst brandSymbol = Symbol( 'control' );\n\nexport type ControlComponent< TComponent extends AnyComponentType = AnyComponentType > = TComponent & {\n\t[ brandSymbol ]: true;\n};\n\nexport function createControl< T extends AnyComponentType >( Control: T ) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst Component = useControlReplacement( Control );\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<Component { ...props } />\n\t\t\t</ErrorBoundary>\n\t\t);\n\t} ) as ControlComponent< T >;\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from './bound-prop-context';\n\ntype ControlReplacement = {\n\tcomponent: ComponentType;\n\tcondition: ( { value }: ConditionArgs ) => boolean;\n};\n\ntype ConditionArgs = {\n\tvalue: PropValue;\n};\n\ntype Props = PropsWithChildren< { replacements: ControlReplacement[] } >;\n\nconst ControlReplacementContext = createContext< ControlReplacement[] >( [] );\n\nexport const ControlReplacementsProvider = ( { replacements, children }: Props ) => {\n\treturn <ControlReplacementContext.Provider value={ replacements }>{ children }</ControlReplacementContext.Provider>;\n};\n\nexport const useControlReplacement = ( OriginalComponent: ComponentType ) => {\n\tconst { value } = useBoundProp();\n\tconst replacements = useContext( ControlReplacementContext );\n\n\ttry {\n\t\tconst replacement = replacements.find( ( r ) => r.condition( { value } ) );\n\n\t\treturn replacement?.component ?? OriginalComponent;\n\t} catch {\n\t\treturn OriginalComponent;\n\t}\n};\n\nexport const createControlReplacementsRegistry = () => {\n\tconst controlReplacements: ControlReplacement[] = [];\n\n\tfunction registerControlReplacement( replacement: ControlReplacement ) {\n\t\tcontrolReplacements.push( replacement );\n\t}\n\n\tfunction getControlReplacements() {\n\t\treturn controlReplacements;\n\t}\n\n\treturn { registerControlReplacement, getControlReplacements };\n};\n\nexport const SlotChildren = ( {\n\tchildren,\n\twhitelist = [],\n\tsorted = false,\n\tprops = {},\n}: {\n\tchildren: React.ReactNode;\n\twhitelist: React.FC[];\n\tsorted?: boolean;\n\tprops?: Record< string, unknown >;\n} ) => {\n\tconst filtered = (\n\t\t! whitelist.length\n\t\t\t? React.Children.toArray( children )\n\t\t\t: React.Children.toArray( children ).filter(\n\t\t\t\t\t( child ) => React.isValidElement( child ) && whitelist.includes( child.type as React.FC )\n\t\t\t )\n\t) as React.ReactElement[];\n\n\tif ( sorted ) {\n\t\tsort( filtered, whitelist );\n\t}\n\n\treturn filtered.map( ( child, index ) => (\n\t\t<React.Fragment key={ index }>{ React.cloneElement( child, props ) }</React.Fragment>\n\t) );\n};\n\nconst sort = ( childrenArray: React.ReactElement[], whitelist: unknown[] ) => {\n\tchildrenArray.sort( ( a, b ) => {\n\t\tconst aIndex = whitelist.indexOf( a.type );\n\t\tconst bIndex = whitelist.indexOf( b.type );\n\n\t\tif ( aIndex === -1 || bIndex === -1 ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn aIndex - bIndex;\n\t} );\n};\n","import { useMutation, useQuery, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\n\nexport const UNFILTERED_FILES_UPLOAD_KEY = 'elementor_unfiltered_files_upload';\n\nconst unfilteredFilesQueryKey = {\n\tqueryKey: [ UNFILTERED_FILES_UPLOAD_KEY ],\n};\n\ntype Value = '0' | '1';\n\nexport const useUnfilteredFilesUpload = () =>\n\tuseQuery( {\n\t\t...unfilteredFilesQueryKey,\n\t\tqueryFn: (): Promise< boolean > =>\n\t\t\tapiClient.getElementorSetting< Value >( UNFILTERED_FILES_UPLOAD_KEY ).then( ( res ) => {\n\t\t\t\treturn formatResponse( res );\n\t\t\t} ),\n\t\tstaleTime: Infinity,\n\t} );\n\nexport function useUpdateUnfilteredFilesUpload() {\n\tconst queryClient = useQueryClient();\n\n\tconst mutate = useMutation( {\n\t\tmutationFn: ( { allowUnfilteredFilesUpload }: { allowUnfilteredFilesUpload: boolean } ) =>\n\t\t\tapiClient.updateElementorSetting< Value >(\n\t\t\t\tUNFILTERED_FILES_UPLOAD_KEY,\n\t\t\t\tallowUnfilteredFilesUpload ? '1' : '0'\n\t\t\t),\n\t\tonSuccess: () => queryClient.invalidateQueries( unfilteredFilesQueryKey ),\n\t} );\n\n\treturn mutate;\n}\n\nconst formatResponse = ( response: Value ): boolean => {\n\treturn Boolean( response === '1' );\n};\n","import { httpService } from '@elementor/http-client';\n\nconst ELEMENTOR_SETTING_URL = 'elementor/v1/settings';\n\ntype Response< T > = { data: { value: T }; success: boolean };\n\nexport const apiClient = {\n\tgetElementorSetting: < T >( key: string ) =>\n\t\thttpService()\n\t\t\t.get< Response< T > >( `${ ELEMENTOR_SETTING_URL }/${ key }` )\n\t\t\t.then( ( res ) => formatSettingResponse( res.data ) ),\n\tupdateElementorSetting: < T >( key: string, value: T ) =>\n\t\thttpService().put( `${ ELEMENTOR_SETTING_URL }/${ key }`, { value } ),\n};\n\nconst formatSettingResponse = < T >( response: Response< T > ) => response.data.value;\n","import * as React from 'react';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from '@elementor/ui';\nimport { type MediaType, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype ImageMediaControlProps = {\n\tmediaTypes?: MediaType[];\n};\n\nexport const ImageMediaControl = createControl( ( { mediaTypes = [ 'image' ] }: ImageMediaControlProps ) => {\n\tconst { value, setValue } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes,\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Card variant=\"outlined\">\n\t\t\t\t<CardMedia image={ src } sx={ { height: 150 } }>\n\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t<Stack justifyContent=\"center\" alignItems=\"center\" width=\"100%\" height=\"100%\">\n\t\t\t\t\t\t\t<CircularProgress />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<></>\n\t\t\t\t\t) }\n\t\t\t\t</CardMedia>\n\t\t\t\t<CardOverlay>\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'browse' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Select image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t</CardOverlay>\n\t\t\t</Card>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { FloatingActionsBar } from '../components/floating-bar';\nimport { useControlActions } from './control-actions-context';\n\ntype ControlActionsProps = PropsWithChildren< object >;\n\nexport default function ControlActions( { children }: ControlActionsProps ) {\n\tconst { items } = useControlActions();\n\tconst { disabled } = useBoundProp();\n\n\tif ( items.length === 0 || disabled ) {\n\t\treturn children;\n\t}\n\n\tconst menuItems = items.map( ( { MenuItem, id } ) => <MenuItem key={ id } /> );\n\n\treturn <FloatingActionsBar actions={ menuItems }>{ children }</FloatingActionsBar>;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, type ReactElement, useContext, useState } from 'react';\nimport { styled, UnstableFloatingActionBar } from '@elementor/ui';\n\n// CSS hack to hide empty floating bars.\nconst FloatingBarContainer = styled( 'span' )`\n\tdisplay: contents;\n\n\t.MuiFloatingActionBar-popper:has( .MuiFloatingActionBar-actions:empty ) {\n\t\tdisplay: none;\n\t}\n\n\t.MuiFloatingActionBar-popper {\n\t\tz-index: 1000;\n\t}\n`;\n\nconst FloatingActionsContext = createContext< null | {\n\topen: boolean;\n\tsetOpen: React.Dispatch< React.SetStateAction< boolean > >;\n} >( null );\n\nexport function FloatingActionsBar( { actions, children }: PropsWithChildren< { actions: ReactElement[] } > ) {\n\tconst [ open, setOpen ] = useState< boolean >( false );\n\n\treturn (\n\t\t<FloatingActionsContext.Provider value={ { open, setOpen } }>\n\t\t\t<FloatingBarContainer>\n\t\t\t\t<UnstableFloatingActionBar actions={ actions } open={ open || undefined }>\n\t\t\t\t\t{ children as ReactElement }\n\t\t\t\t</UnstableFloatingActionBar>\n\t\t\t</FloatingBarContainer>\n\t\t</FloatingActionsContext.Provider>\n\t);\n}\n\nexport function useFloatingActionsBar() {\n\tconst context = useContext( FloatingActionsContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useFloatingActions must be used within a FloatingActionsBar' );\n\t}\n\n\treturn context;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\nexport type ControlActionsItems = Array< {\n\tid: string;\n\tMenuItem: React.ComponentType;\n} >;\n\ntype ControlActionsContext = {\n\titems: ControlActionsItems;\n};\n\nconst Context = createContext< ControlActionsContext | null >( null );\n\ntype ControlActionsProviderProps = PropsWithChildren< ControlActionsContext >;\n\nexport const ControlActionsProvider = ( { children, items }: ControlActionsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlActions = () => {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useControlActions must be used within a ControlActionsProvider' );\n\t}\n\n\treturn context;\n};\n","import * as React from 'react';\nimport { stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Select, type SelectChangeEvent, Typography } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype Props = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n};\n\nexport const SelectControl = createControl( ( { options, onChange }: Props ) => {\n\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\tconst newValue = event.target.value || null;\n\n\t\tonChange?.( newValue, value );\n\t\tsetValue( newValue );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Select\n\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\tdisplayEmpty\n\t\t\t\tsize=\"tiny\"\n\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\tconst findOptionByValue = ( searchValue: string | null ) =>\n\t\t\t\t\t\toptions.find( ( opt ) => opt.value === searchValue );\n\n\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\tif ( placeholder ) {\n\t\t\t\t\t\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\t\t\t\t\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t\t\t\t\t\t{ displayText }\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn '';\n\t\t\t\t\t}\n\t\t\t\t\tconst option = findOptionByValue( selectedValue );\n\t\t\t\t\treturn option?.label || selectedValue;\n\t\t\t\t} }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tfullWidth\n\t\t\t>\n\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Select>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { type SxProps, TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const TextControl = createControl(\n\t( {\n\t\tplaceholder,\n\t\terror,\n\t\tinputValue,\n\t\tinputDisabled,\n\t\tsx,\n\t}: {\n\t\tplaceholder?: string;\n\t\terror?: boolean;\n\t\tinputValue?: string;\n\t\tinputDisabled?: boolean;\n\t\tsx?: SxProps;\n\t} ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ inputDisabled ?? disabled }\n\t\t\t\t\tvalue={ inputValue ?? value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\terror={ error }\n\t\t\t\t\tsx={ sx }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\tplaceholder?: string;\n};\n\nexport const TextAreaControl = createControl( ( { placeholder }: Props ) => {\n\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.value );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tmultiline\n\t\t\t\tfullWidth\n\t\t\t\tminRows={ 5 }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useState } from 'react';\nimport { sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { SizeInput } from '../components/size-control/size-input';\nimport { TextFieldPopover } from '../components/text-field-popover';\nimport { createControl } from '../create-control';\nimport { useSizeExtendedOptions } from '../hooks/use-size-extended-options';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport {\n\ttype AngleUnit,\n\tangleUnits,\n\tDEFAULT_SIZE,\n\tDEFAULT_UNIT,\n\ttype ExtendedOption,\n\tisUnitExtendedOption,\n\ttype LengthUnit,\n\tlengthUnits,\n\ttype TimeUnit,\n\ttimeUnits,\n\ttype Unit,\n} from '../utils/size-control';\n\ntype SizeValue = SizePropValue[ 'value' ];\n\ntype SizeVariant = 'length' | 'angle' | 'time';\n\ntype UnitProps< T extends readonly Unit[] > = {\n\tunits?: T;\n\tdefaultUnit?: T[ number ];\n};\n\ntype BaseSizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\textendedOptions?: ExtendedOption[];\n\tdisableCustom?: boolean;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\ntype LengthSizeControlProps = BaseSizeControlProps &\n\tUnitProps< LengthUnit[] > & {\n\t\tvariant: 'length';\n\t};\n\ntype AngleSizeControlProps = BaseSizeControlProps &\n\tUnitProps< AngleUnit[] > & {\n\t\tvariant: 'angle';\n\t};\n\ntype TimeSizeControlProps = BaseSizeControlProps &\n\tUnitProps< TimeUnit[] > & {\n\t\tvariant: 'time';\n\t};\n\nexport type SizeControlProps = LengthSizeControlProps | AngleSizeControlProps | TimeSizeControlProps;\n\ntype State = {\n\tnumeric: number;\n\tcustom: string;\n\tunit: Unit | ExtendedOption;\n};\n\nconst defaultSelectedUnit: Record< SizeControlProps[ 'variant' ], Unit > = {\n\tlength: 'px',\n\tangle: 'deg',\n\ttime: 'ms',\n} as const;\n\nconst defaultUnits: Record< SizeControlProps[ 'variant' ], Unit[] > = {\n\tlength: [ ...lengthUnits ] as LengthUnit[],\n\tangle: [ ...angleUnits ] as AngleUnit[],\n\ttime: [ ...timeUnits ] as TimeUnit[],\n} as const;\n\nexport const SizeControl = createControl(\n\t( {\n\t\tvariant = 'length' as SizeControlProps[ 'variant' ],\n\t\tdefaultUnit,\n\t\tunits,\n\t\tplaceholder,\n\t\tstartIcon,\n\t\tanchorRef,\n\t\textendedOptions,\n\t\tdisableCustom,\n\t}: Omit< SizeControlProps, 'variant' > & { variant?: SizeVariant } ) => {\n\t\tconst {\n\t\t\tvalue: sizeValue,\n\t\t\tsetValue: setSizeValue,\n\t\t\tdisabled,\n\t\t\trestoreValue,\n\t\t\tplaceholder: externalPlaceholder,\n\t\t} = useBoundProp( sizePropTypeUtil );\n\t\tconst actualDefaultUnit = defaultUnit ?? externalPlaceholder?.unit ?? defaultSelectedUnit[ variant ];\n\t\tconst actualUnits = units ?? [ ...defaultUnits[ variant ] ];\n\t\tconst [ internalState, setInternalState ] = useState( createStateFromSizeProp( sizeValue, actualDefaultUnit ) );\n\t\tconst activeBreakpoint = useActiveBreakpoint();\n\n\t\tconst actualExtendedOptions = useSizeExtendedOptions( extendedOptions || [], disableCustom ?? false );\n\t\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\t\tconst [ state, setState ] = useSyncExternalState( {\n\t\t\texternal: internalState,\n\t\t\tsetExternal: ( newState: State | null ) => setSizeValue( extractValueFromState( newState ) ),\n\t\t\tpersistWhen: ( newState ) => {\n\t\t\t\tif ( ! newState?.unit ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif ( isUnitExtendedOption( newState.unit ) ) {\n\t\t\t\t\treturn newState.unit === 'auto' ? true : !! newState.custom;\n\t\t\t\t}\n\n\t\t\t\treturn !! newState?.numeric || newState?.numeric === 0;\n\t\t\t},\n\t\t\tfallback: ( newState ) => ( {\n\t\t\t\tunit: newState?.unit ?? actualDefaultUnit,\n\t\t\t\tnumeric: newState?.numeric ?? DEFAULT_SIZE,\n\t\t\t\tcustom: newState?.custom ?? '',\n\t\t\t} ),\n\t\t} );\n\n\t\tconst { size: controlSize = DEFAULT_SIZE, unit: controlUnit = actualDefaultUnit } =\n\t\t\textractValueFromState( state ) || {};\n\n\t\tconst handleUnitChange = ( newUnit: Unit | ExtendedOption ) => {\n\t\t\tif ( newUnit === 'custom' ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\n\t\t\tsetState( ( prev ) => ( { ...prev, unit: newUnit } ) );\n\t\t};\n\n\t\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst { value: size } = event.target;\n\n\t\t\tif ( controlUnit === 'auto' ) {\n\t\t\t\tsetState( ( prev ) => ( { ...prev, unit: controlUnit } ) );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetState( ( prev ) => ( {\n\t\t\t\t...prev,\n\t\t\t\t[ controlUnit === 'custom' ? 'custom' : 'numeric' ]: formatSize( size, controlUnit ),\n\t\t\t\tunit: controlUnit,\n\t\t\t} ) );\n\t\t};\n\n\t\tconst onInputClick = ( event: React.MouseEvent ) => {\n\t\t\tif ( ( event.target as HTMLElement ).closest( 'input' ) && 'custom' === state.unit ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\t\t};\n\n\t\tuseEffect( () => {\n\t\t\tconst newState = createStateFromSizeProp(\n\t\t\t\tsizeValue,\n\t\t\t\tstate.unit === 'custom' ? state.unit : actualDefaultUnit,\n\t\t\t\t'',\n\t\t\t\tstate.custom\n\t\t\t);\n\t\t\tconst currentUnitType = isUnitExtendedOption( state.unit ) ? 'custom' : 'numeric';\n\t\t\tconst mergedStates = {\n\t\t\t\t...state,\n\t\t\t\tunit: newState.unit ?? state.unit,\n\t\t\t\t[ currentUnitType ]: newState[ currentUnitType ],\n\t\t\t};\n\n\t\t\tif ( mergedStates.unit !== 'auto' && areStatesEqual( state, mergedStates ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( state.unit === newState.unit ) {\n\t\t\t\tsetInternalState( mergedStates );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetState( newState );\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ sizeValue ] );\n\n\t\tuseEffect( () => {\n\t\t\tconst newState = createStateFromSizeProp( sizeValue, actualDefaultUnit, '', state.custom );\n\n\t\t\tif ( activeBreakpoint && ! areStatesEqual( newState, state ) ) {\n\t\t\t\tsetState( newState );\n\t\t\t}\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ activeBreakpoint ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SizeInput\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tsize={ controlSize }\n\t\t\t\t\tunit={ controlUnit }\n\t\t\t\t\tunits={ [ ...actualUnits, ...( actualExtendedOptions || [] ) ] }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\thandleSizeChange={ handleSizeChange }\n\t\t\t\t\thandleUnitChange={ handleUnitChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tonClick={ onInputClick }\n\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t/>\n\t\t\t\t{ anchorRef?.current && (\n\t\t\t\t\t<TextFieldPopover\n\t\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\trestoreValue={ restoreValue }\n\t\t\t\t\t\tvalue={ controlSize as string }\n\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n\nfunction formatSize< TSize extends string | number >( size: TSize, unit: Unit | ExtendedOption ): TSize {\n\tif ( isUnitExtendedOption( unit ) ) {\n\t\treturn unit === 'auto' ? ( '' as TSize ) : ( String( size ?? '' ) as TSize );\n\t}\n\n\treturn size || size === 0 ? ( Number( size ) as TSize ) : ( NaN as TSize );\n}\n\nfunction createStateFromSizeProp(\n\tsizeValue: SizeValue | null,\n\tdefaultUnit: Unit | ExtendedOption,\n\tdefaultSize: string | number = '',\n\tcustomState: string = ''\n): State {\n\tconst unit = sizeValue?.unit ?? defaultUnit;\n\tconst size = sizeValue?.size ?? defaultSize;\n\n\treturn {\n\t\tnumeric:\n\t\t\t! isUnitExtendedOption( unit ) && ! isNaN( Number( size ) ) && ( size || size === 0 )\n\t\t\t\t? Number( size )\n\t\t\t\t: DEFAULT_SIZE,\n\t\tcustom: unit === 'custom' ? String( size ) : customState,\n\t\tunit,\n\t};\n}\n\nfunction extractValueFromState( state: State | null ): SizeValue | null {\n\tif ( ! state ) {\n\t\treturn null;\n\t}\n\n\tif ( ! state?.unit ) {\n\t\treturn { size: DEFAULT_SIZE, unit: DEFAULT_UNIT };\n\t}\n\n\tconst { unit } = state;\n\n\tif ( unit === 'auto' ) {\n\t\treturn { size: '', unit };\n\t}\n\n\treturn {\n\t\tsize: state[ unit === 'custom' ? 'custom' : 'numeric' ],\n\t\tunit,\n\t} as SizeValue;\n}\n\nfunction areStatesEqual( state1: State, state2: State ): boolean {\n\tif ( state1.unit !== state2.unit || state1.custom !== state2.custom ) {\n\t\treturn false;\n\t}\n\n\tif ( isUnitExtendedOption( state1.unit ) ) {\n\t\treturn state1.custom === state2.custom;\n\t}\n\n\treturn state1.numeric === state2.numeric || ( isNaN( state1.numeric ) && isNaN( state2.numeric ) );\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { Box, InputAdornment, type PopupState } from '@elementor/ui';\n\nimport ControlActions from '../../control-actions/control-actions';\nimport { type ExtendedOption, isUnitExtendedOption, type Unit } from '../../utils/size-control';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../size-control/text-field-inner-selection';\n\ntype SizeInputProps = {\n\tunit: Unit | ExtendedOption;\n\tsize: number | string;\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits: ( Unit | ExtendedOption )[];\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonFocus?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonClick?: ( event: React.MouseEvent< HTMLInputElement > ) => void;\n\thandleUnitChange: ( unit: Unit | ExtendedOption ) => void;\n\thandleSizeChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tpopupState: PopupState;\n\tdisabled?: boolean;\n};\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+', '-' ];\n\nexport const SizeInput = ( {\n\tunits,\n\thandleUnitChange,\n\thandleSizeChange,\n\tplaceholder,\n\tstartIcon,\n\tonBlur,\n\tonFocus,\n\tonClick,\n\tsize,\n\tunit,\n\tpopupState,\n\tdisabled,\n}: SizeInputProps ) => {\n\tconst unitInputBufferRef = useRef( '' );\n\tconst inputType = isUnitExtendedOption( unit ) ? 'text' : 'number';\n\tconst inputValue = ! isUnitExtendedOption( unit ) && Number.isNaN( size ) ? '' : size ?? '';\n\n\tconst handleKeyUp = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\n\t\tif ( ! /^[a-zA-Z%]$/.test( key ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst newChar = key.toLowerCase();\n\t\tconst updatedBuffer = ( unitInputBufferRef.current + newChar ).slice( -3 );\n\t\tunitInputBufferRef.current = updatedBuffer;\n\n\t\tconst matchedUnit =\n\t\t\tunits.find( ( u ) => u.includes( updatedBuffer ) ) ||\n\t\t\tunits.find( ( u ) => u.startsWith( newChar ) ) ||\n\t\t\tunits.find( ( u ) => u.includes( newChar ) );\n\n\t\tif ( matchedUnit ) {\n\t\t\thandleUnitChange( matchedUnit );\n\t\t}\n\t};\n\n\tconst popupAttributes = {\n\t\t'aria-controls': popupState.isOpen ? popupState.popupId : undefined,\n\t\t'aria-haspopup': true,\n\t};\n\n\tconst inputProps = {\n\t\t...popupAttributes,\n\t\treadOnly: isUnitExtendedOption( unit ),\n\t\tautoComplete: 'off',\n\t\tonClick,\n\t\tonFocus,\n\t\tstartAdornment: startIcon ? (\n\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t{ startIcon }\n\t\t\t</InputAdornment>\n\t\t) : undefined,\n\t\tendAdornment: (\n\t\t\t<SelectionEndAdornment\n\t\t\t\tdisabled={ disabled }\n\t\t\t\toptions={ units }\n\t\t\t\tonClick={ handleUnitChange }\n\t\t\t\tvalue={ unit }\n\t\t\t\talternativeOptionLabels={ {\n\t\t\t\t\tcustom: <MathFunctionIcon fontSize=\"tiny\" />,\n\t\t\t\t} }\n\t\t\t\tmenuItemsAttributes={\n\t\t\t\t\tunits.includes( 'custom' )\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tcustom: popupAttributes,\n\t\t\t\t\t\t }\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t/>\n\t\t),\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Box>\n\t\t\t\t<TextFieldInnerSelection\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\ttype={ inputType }\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\tonKeyDown={ ( event ) => {\n\t\t\t\t\t\tif ( RESTRICTED_INPUT_KEYS.includes( event.key ) ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t\tonKeyUp={ handleKeyUp }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tinputProps={ inputProps }\n\t\t\t\t\tisPopoverOpen={ popupState.isOpen }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</ControlActions>\n\t);\n};\n","export const lengthUnits = [ 'px', '%', 'em', 'rem', 'vw', 'vh' ] as const;\nexport const angleUnits = [ 'deg', 'rad', 'grad', 'turn' ] as const;\nexport const timeUnits = [ 's', 'ms' ] as const;\nconst defaultExtendedOptions = [ 'auto', 'custom' ] as const;\n\nexport const DEFAULT_UNIT = 'px';\nexport const DEFAULT_SIZE = NaN;\n\nexport type LengthUnit = ( typeof lengthUnits )[ number ];\nexport type AngleUnit = ( typeof angleUnits )[ number ];\nexport type TimeUnit = ( typeof timeUnits )[ number ];\nexport type ExtendedOption = ( typeof defaultExtendedOptions )[ number ];\n\nexport type Unit = LengthUnit | AngleUnit | TimeUnit;\n\nexport function isUnitExtendedOption( unit: Unit | ExtendedOption ): unit is ExtendedOption {\n\treturn defaultExtendedOptions.includes( unit as ExtendedOption );\n}\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { type PropValue, sizePropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tButton,\n\tInputAdornment,\n\tMenu,\n\tstyled,\n\tTextField,\n\ttype TextFieldProps,\n\tusePopupState,\n} from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { DEFAULT_UNIT } from '../../utils/size-control';\n\ntype TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tinputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n\tdisabled?: boolean;\n\tisPopoverOpen?: boolean;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t(\n\t\t{\n\t\t\tplaceholder,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tonBlur,\n\t\t\tonKeyDown,\n\t\t\tonKeyUp,\n\t\t\tinputProps,\n\t\t\tdisabled,\n\t\t\tisPopoverOpen,\n\t\t}: TextFieldInnerSelectionProps,\n\t\tref\n\t) => {\n\t\tconst { placeholder: boundPropPlaceholder } = useBoundProp( sizePropTypeUtil );\n\n\t\tconst getCursorStyle = () => ( {\n\t\t\tinput: { cursor: inputProps.readOnly ? 'default !important' : undefined },\n\t\t} );\n\n\t\treturn (\n\t\t\t<TextField\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ getCursorStyle() }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonKeyUp={ onKeyUp }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tfocused={ isPopoverOpen ? true : undefined }\n\t\t\t\tplaceholder={ placeholder ?? ( String( boundPropPlaceholder?.size ?? '' ) || undefined ) }\n\t\t\t\tInputProps={ inputProps }\n\t\t\t/>\n\t\t);\n\t}\n);\n\ntype SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n\talternativeOptionLabels?: { [ key in T ]?: React.ReactNode };\n\tmenuItemsAttributes?: { [ key in T ]?: Record< string, unknown > };\n\tdisabled?: boolean;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\talternativeOptionLabels = {} as Record< T, React.ReactNode >,\n\tonClick,\n\tvalue,\n\tmenuItemsAttributes = {},\n\tdisabled,\n}: SelectionEndAdornmentProps< T > ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\t\tpopupState.close();\n\t};\n\n\tconst { placeholder, showPrimaryColor } = useUnitPlaceholder( value );\n\n\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<StyledButton\n\t\t\t\tisPrimaryColor={ showPrimaryColor }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ placeholder ?? alternativeOptionLabels[ value ] ?? value }\n\t\t\t</StyledButton>\n\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\tkey={ option }\n\t\t\t\t\t\tonClick={ () => handleMenuItemClick( index ) }\n\t\t\t\t\t\t{ ...menuItemsAttributes?.[ option ] }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ alternativeOptionLabels[ option ] ?? option.toUpperCase() }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\n};\n\nfunction useUnitPlaceholder( value: string ) {\n\tconst { value: externalValue, placeholder } = useBoundProp( sizePropTypeUtil );\n\tconst size = externalValue?.size;\n\tconst unit = externalValue?.unit;\n\n\tconst isCustomUnitWithSize = value === 'custom' && Boolean( size );\n\tconst isAutoUnit = value === 'auto';\n\tconst showPrimaryColor = isAutoUnit || isCustomUnitWithSize || Boolean( size );\n\n\tif ( ! placeholder ) {\n\t\treturn {\n\t\t\tplaceholder: null,\n\t\t\tshowPrimaryColor,\n\t\t};\n\t}\n\n\tconst isMissingUnit = ! unit;\n\tconst showPlaceholder = isMissingUnit && value === DEFAULT_UNIT;\n\n\treturn {\n\t\tplaceholder: showPlaceholder ? placeholder.unit : undefined,\n\t\tshowPrimaryColor,\n\t};\n}\n\nconst StyledButton = styled( Button, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPrimaryColor',\n} )( ( { isPrimaryColor, theme } ) => ( {\n\tcolor: isPrimaryColor ? theme.palette.text.primary : theme.palette.text.tertiary,\n\tfont: 'inherit',\n\tminWidth: 'initial',\n\ttextTransform: 'uppercase',\n} ) );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n};\n\nconst SIZE = 'tiny';\n\nexport const TextFieldPopover = ( props: Props ) => {\n\tconst { popupState, restoreValue, anchorRef, value, onChange } = props;\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => {\n\t\t\t\tif ( inputRef.current ) {\n\t\t\t\t\tinputRef.current.focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\twidth: anchorRef.current?.offsetWidth + 'px',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'CSS function', 'elementor' ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t\ticon={ <MathFunctionIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<TextField\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tfullWidth\n\t\t\t\tinputProps={ {\n\t\t\t\t\tref: inputRef,\n\t\t\t\t} }\n\t\t\t\tsx={ { pt: 0, pr: 1.5, pb: 1.5, pl: 1.5 } }\n\t\t\t/>\n\t\t</Popover>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type ExtendedOption } from '@elementor/editor-controls';\n\nexport function useSizeExtendedOptions( options: ExtendedOption[], disableCustom: boolean ) {\n\treturn useMemo( () => {\n\t\tconst extendedOptions = [ ...options ];\n\n\t\tif ( ! disableCustom && ! extendedOptions.includes( 'custom' ) ) {\n\t\t\textendedOptions.push( 'custom' );\n\t\t} else if ( options.includes( 'custom' ) ) {\n\t\t\textendedOptions.splice( extendedOptions.indexOf( 'custom' ), 1 );\n\t\t}\n\n\t\treturn extendedOptions;\n\t}, [ options, disableCustom ] );\n}\n","import { useEffect, useState } from 'react';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | null;\n\tsetExternal: ( value: TValue | null ) => void;\n\tpersistWhen: ( value: TValue | null ) => boolean;\n\tfallback: ( value: TValue | null ) => TValue;\n};\n\nexport const useSyncExternalState = < TValue, >( {\n\texternal,\n\tsetExternal,\n\tpersistWhen,\n\tfallback,\n}: UseInternalStateOptions< TValue > ) => {\n\tfunction toExternal( internalValue: TValue | null ) {\n\t\tif ( persistWhen( internalValue ) ) {\n\t\t\treturn internalValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction toInternal( externalValue: TValue | null, internalValue: TValue | null ) {\n\t\tif ( ! externalValue ) {\n\t\t\treturn fallback( internalValue );\n\t\t}\n\n\t\treturn externalValue;\n\t}\n\n\tconst [ internal, setInternal ] = useState< TValue >( toInternal( external, null ) );\n\n\tuseEffect( () => {\n\t\tsetInternal( ( prevInternal ) => toInternal( external, prevInternal ) );\n\n\t\t// eslint-disable-next-line react-compiler/react-compiler\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ external ] );\n\n\ttype SetterFunc = ( value: TValue ) => TValue;\n\n\tconst setInternalValue = ( setter: SetterFunc | TValue ) => {\n\t\tconst setterFn = ( typeof setter === 'function' ? setter : () => setter ) as SetterFunc;\n\t\tconst updated = setterFn( internal );\n\n\t\tsetInternal( updated );\n\t\tsetExternal( toExternal( updated ) );\n\t};\n\n\treturn [ internal, setInternalValue ] as const;\n};\n","import * as React from 'react';\nimport { forwardRef, useRef } from 'react';\nimport { strokePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SectionContent } from '../components/section-content';\nimport { createControl } from '../create-control';\nimport { type LengthUnit } from '../utils/size-control';\nimport { ColorControl } from './color-control';\nimport { SizeControl } from './size-control';\n\ntype StrokeProps = {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n};\n\nconst units: LengthUnit[] = [ 'px', 'em', 'rem' ];\n\nexport const StrokeControl = createControl( () => {\n\tconst propContext = useBoundProp( strokePropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<SectionContent>\n\t\t\t\t<Control bind=\"width\" label={ __( 'Stroke width', 'elementor' ) } ref={ rowRef }>\n\t\t\t\t\t<SizeControl units={ units } anchorRef={ rowRef } />\n\t\t\t\t</Control>\n\t\t\t\t<Control bind=\"color\" label={ __( 'Stroke color', 'elementor' ) }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Control>\n\t\t\t</SectionContent>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = forwardRef( ( { bind, label, children }: StrokeProps, ref ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ ref }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n) );\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\ntype SectionContentProps = PropsWithChildren< {\n\tgap?: number;\n\tsx?: {\n\t\tpt?: number;\n\t};\n} >;\n\nexport const SectionContent: FC< SectionContentProps > = ( { gap = 2, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { colorPropTypeUtil, type PropTypeUtil } from '@elementor/editor-props';\nimport { UnstableColorField, type UnstableColorFieldProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = Partial< Omit< UnstableColorFieldProps, 'value' | 'onChange' > > & {\n\tpropTypeUtil?: PropTypeUtil< string, string >;\n\tanchorEl?: HTMLElement | null;\n};\n\nexport const ColorControl = createControl(\n\t( { propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, ...props }: Props ) => {\n\t\tconst { value, setValue, placeholder: boundPropPlaceholder, disabled } = useBoundProp( propTypeUtil );\n\n\t\tconst placeholder = props.placeholder ?? boundPropPlaceholder;\n\n\t\tconst handleChange = ( selectedColor: string ) => {\n\t\t\tsetValue( selectedColor || null );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableColorField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tplaceholder={ placeholder ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t...slotProps,\n\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\tanchorEl,\n\t\t\t\t\t\t\tanchorOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransformOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tslotProps: {\n\t\t\t\t\t\t\t\tcolorIndicator: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcolorBox: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { boxShadowPropTypeUtil, type PropKey, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { FormLabel, Grid, type SxProps, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SelectControl } from './select-control';\nimport { SizeControl } from './size-control';\n\nexport const BoxShadowRepeaterControl = createControl( () => {\n\tconst { propType, value, setValue, disabled } = useBoundProp( boxShadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue } isDisabled={ () => disabled }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ value ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Box shadow', 'elementor' ) }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: initialShadow,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<UnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color?.value } />\n);\n\nconst ItemContent = ( { anchorEl, bind }: { anchorEl: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst context = useBoundProp( shadowPropTypeUtil );\n\tconst rowRef: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Control bind=\"color\" label={ __( 'Color', 'elementor' ) }>\n\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"position\" label={ __( 'Position', 'elementor' ) } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t{ label: __( 'Inset', 'elementor' ), value: 'inset' },\n\t\t\t\t\t\t\t\t{ label: __( 'Outset', 'elementor' ), value: null },\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 0 ] }>\n\t\t\t\t\t<Control bind=\"hOffset\" label={ __( 'Horizontal', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"vOffset\" label={ __( 'Vertical', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 1 ] }>\n\t\t\t\t\t<Control bind=\"blur\" label={ __( 'Blur', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"spread\" label={ __( 'Spread', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PopoverContent>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tlabel,\n\tbind,\n\tchildren,\n\tsx,\n}: {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tsx?: SxProps< Theme >;\n} ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid item xs={ 6 } sx={ sx }>\n\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<FormLabel size=\"tiny\">{ label }</FormLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n);\n\nconst ItemLabel = ( { value }: { value: ShadowPropValue } ) => {\n\tconst { position, hOffset, vOffset, blur, spread } = value.value;\n\n\tconst { size: blurSize = '', unit: blurUnit = '' } = blur?.value || {};\n\tconst { size: spreadSize = '', unit: spreadUnit = '' } = spread?.value || {};\n\tconst { size: hOffsetSize = 'unset', unit: hOffsetUnit = '' } = hOffset?.value || {};\n\tconst { size: vOffsetSize = 'unset', unit: vOffsetUnit = '' } = vOffset?.value || {};\n\tconst positionLabel = position?.value || 'outset';\n\n\tconst sizes = [\n\t\thOffsetSize + hOffsetUnit,\n\t\tvOffsetSize + vOffsetUnit,\n\t\tblurSize + blurUnit,\n\t\tspreadSize + spreadUnit,\n\t].join( ' ' );\n\n\treturn (\n\t\t<span style={ { textTransform: 'capitalize' } }>\n\t\t\t{ positionLabel }: { sizes }\n\t\t</span>\n\t);\n};\n\nconst initialShadow: ShadowPropValue = {\n\t$$type: 'shadow',\n\tvalue: {\n\t\thOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tvOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tblur: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 10 },\n\t\t},\n\t\tspread: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: 'rgba(0, 0, 0, 1)',\n\t\t},\n\t\tposition: null,\n\t},\n};\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack, type StackProps } from '@elementor/ui';\n\nexport const PopoverContent: FC< PropsWithChildren< StackProps > > = ( { gap = 1.5, children, ...props } ) => (\n\t<Stack { ...props } gap={ gap }>\n\t\t{ children }\n\t</Stack>\n);\n","import { forwardRef, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\ntype PopoverGridContainerProps = PropsWithChildren< {\n\tgap?: number;\n\talignItems?: React.ComponentProps< typeof Grid >[ 'alignItems' ];\n\tflexWrap?: React.ComponentProps< typeof Grid >[ 'flexWrap' ];\n} >;\n\nexport const PopoverGridContainer = forwardRef(\n\t( { gap = 1.5, alignItems = 'center', flexWrap = 'nowrap', children }: PopoverGridContainerProps, ref ) => (\n\t\t<Grid container gap={ gap } alignItems={ alignItems } flexWrap={ flexWrap } ref={ ref }>\n\t\t\t{ children }\n\t\t</Grid>\n\t)\n);\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { type PropKey, type PropTypeUtil } from '@elementor/editor-props';\nimport { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tPopover,\n\tStack,\n\tTooltip,\n\tTypography,\n\tUnstableTag,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport { SectionContent } from './section-content';\nimport { SortableItem, SortableProvider } from './sortable';\nimport { RepeaterItemIconSlot, RepeaterItemLabelSlot } from './unstable-repeater/locations';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\ntype Item< T > = {\n\tdisabled?: boolean;\n} & T;\nexport type CollectionPropUtil< T > = PropTypeUtil< PropKey, T[] >;\n\ntype RepeaterItemContentProps< T > = {\n\tanchorEl: AnchorEl;\n\tbind: PropKey;\n\tvalue: T;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\ntype RepeaterItemContent< T > = React.ComponentType< RepeaterItemContentProps< T > >;\n\ntype RepeaterProps< T > = {\n\tlabel: string;\n\tvalues?: T[];\n\taddToBottom?: boolean;\n\topenOnAdd?: boolean;\n\tsetValues: ( newValue: T[] ) => void;\n\tdisabled?: boolean;\n\titemSettings: {\n\t\tinitialValues: T;\n\t\tLabel: React.ComponentType< { value: T } >;\n\t\tIcon: React.ComponentType< { value: T } >;\n\t\tContent: RepeaterItemContent< T >;\n\t};\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tisSortable?: boolean;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tdisabled = false,\n\topenOnAdd = false,\n\taddToBottom = false,\n\tvalues: repeaterValues = [],\n\tsetValues: setRepeaterValues,\n\tshowDuplicate = true,\n\tshowToggle = true,\n\tisSortable = true,\n\tcollectionPropUtil,\n}: RepeaterProps< Item< T > > ) => {\n\tconst [ openItem, setOpenItem ] = useState( EMPTY_OPEN_ITEM );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\t// @ts-expect-error - as long as persistWhen => true, value will never be null\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( items.map( ( _, index ) => index ) );\n\n\tconst generateNextKey = ( source: number[] ) => {\n\t\treturn 1 + Math.max( 0, ...source );\n\t};\n\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\t\tconst newKey = generateNextKey( uniqueKeys );\n\n\t\tif ( addToBottom ) {\n\t\t\tsetItems( [ ...items, newItem ] );\n\t\t\tsetUniqueKeys( [ ...uniqueKeys, newKey ] );\n\t\t} else {\n\t\t\tsetItems( [ newItem, ...items ] );\n\t\t\tsetUniqueKeys( [ newKey, ...uniqueKeys ] );\n\t\t}\n\n\t\tif ( openOnAdd ) {\n\t\t\tsetOpenItem( newKey );\n\t\t}\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\t\tconst newKey = generateNextKey( uniqueKeys );\n\n\t\t// Insert the new (cloned item) at the next spot (after the current index)\n\t\tconst atPosition = 1 + index;\n\n\t\tsetItems( [ ...items.slice( 0, atPosition ), newItem, ...items.slice( atPosition ) ] );\n\t\tsetUniqueKeys( [ ...uniqueKeys.slice( 0, atPosition ), newKey, ...uniqueKeys.slice( atPosition ) ] );\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tsetUniqueKeys(\n\t\t\tuniqueKeys.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} )\n\t\t);\n\n\t\tsetItems(\n\t\t\titems.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetItems(\n\t\t\titems.map( ( value, pos ) => {\n\t\t\t\tif ( pos === index ) {\n\t\t\t\t\tconst { disabled: propDisabled, ...rest } = value;\n\n\t\t\t\t\t// If the items should not be disabled, remove the disabled property.\n\t\t\t\t\treturn { ...rest, ...( propDisabled ? {} : { disabled: true } ) } as Item< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst onChangeOrder = ( reorderedKeys: number[] ) => {\n\t\tsetUniqueKeys( reorderedKeys );\n\t\tsetItems( ( prevItems ) => {\n\t\t\treturn reorderedKeys.map( ( keyValue ) => {\n\t\t\t\tconst index = uniqueKeys.indexOf( keyValue );\n\t\t\t\treturn prevItems[ index ];\n\t\t\t} );\n\t\t} );\n\t};\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tjustifyContent=\"start\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ 1 }\n\t\t\t\tsx={ { marginInlineEnd: -0.75 } }\n\t\t\t>\n\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t\t<ControlAdornments />\n\t\t\t\t<IconButton\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tsx={ { ml: 'auto' } }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ addRepeaterItem }\n\t\t\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\n\t\t\t{ 0 < uniqueKeys.length && (\n\t\t\t\t<SortableProvider value={ uniqueKeys } onChange={ onChangeOrder }>\n\t\t\t\t\t{ uniqueKeys.map( ( key, index ) => {\n\t\t\t\t\t\tconst value = items[ index ];\n\n\t\t\t\t\t\tif ( ! value ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\t\tpropDisabled={ value?.disabled }\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Label value={ value } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstartIcon={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Icon value={ value } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\topenOnMount={ openOnAdd && openItem === key }\n\t\t\t\t\t\t\t\t\tonOpen={ () => setOpenItem( EMPTY_OPEN_ITEM ) }\n\t\t\t\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t\t\t\t\tcollectionPropUtil={ collectionPropUtil }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<itemSettings.Content { ...props } value={ value } bind={ String( index ) } />\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</RepeaterItem>\n\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</SortableProvider>\n\t\t\t) }\n\t\t</SectionContent>\n\t);\n};\n\ntype RepeaterItemProps< T > = {\n\tlabel: React.ReactNode;\n\tpropDisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( props: Pick< RepeaterItemContentProps< T >, 'anchorEl' | 'collectionPropUtil' > ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tdisabled?: boolean;\n\tcollectionPropUtil?: CollectionPropUtil< T >;\n};\n\nconst RepeaterItem = < T, >( {\n\tlabel,\n\tpropDisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n\topenOnMount,\n\tonOpen,\n\tshowDuplicate,\n\tshowToggle,\n\tdisabled,\n\tcollectionPropUtil,\n}: RepeaterItemProps< T > ) => {\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\n\tconst { popoverState, popoverProps, ref, setRef } = usePopover( openOnMount, onOpen );\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ label }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tfullWidth\n\t\t\t\tref={ setRef }\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ showDuplicate && (\n\t\t\t\t\t\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ duplicateItem } aria-label={ duplicateLabel }>\n\t\t\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showToggle && (\n\t\t\t\t\t\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ toggleDisableItem } aria-label={ toggleLabel }>\n\t\t\t\t\t\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ removeItem } aria-label={ removeLabel }>\n\t\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: {\n\t\t\t\t\t\tref: setAnchorEl,\n\t\t\t\t\t\tsx: { mt: 0.5, width: ref?.getBoundingClientRect().width },\n\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...popoverProps }\n\t\t\t\tanchorEl={ ref }\n\t\t\t>\n\t\t\t\t<Box>{ children( { anchorEl, collectionPropUtil } ) }</Box>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n\nconst usePopover = ( openOnMount: boolean, onOpen: () => void ) => {\n\tconst [ ref, setRef ] = useState< HTMLElement | null >( null );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\tuseEffect( () => {\n\t\tif ( openOnMount && ref ) {\n\t\t\tpopoverState.open( ref );\n\t\t\tonOpen?.();\n\t\t}\n\t\t// eslint-disable-next-line react-compiler/react-compiler\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ ref ] );\n\n\treturn {\n\t\tpopoverState,\n\t\tref,\n\t\tsetRef,\n\t\tpopoverProps,\n\t};\n};\n","import * as React from 'react';\n\nimport { useControlAdornments } from './control-adornments-context';\n\nexport function ControlAdornments() {\n\tconst items = useControlAdornments();\n\n\tif ( items?.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ items.map( ( { Adornment, id } ) => (\n\t\t\t\t<Adornment key={ id } />\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\n\ntype ControlAdornmentsItems = Array< {\n\tid: string;\n\tAdornment: ComponentType;\n} >;\n\ntype ControlAdornmentsContext = {\n\titems?: ControlAdornmentsItems;\n};\n\nconst Context = createContext< ControlAdornmentsContext | null >( null );\n\ntype ControlAdornmentsProviderProps = PropsWithChildren< ControlAdornmentsContext >;\n\nexport const ControlAdornmentsProvider = ( { children, items }: ControlAdornmentsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlAdornments = () => {\n\tconst context = useContext( Context );\n\n\treturn context?.items ?? [];\n};\n","import * as React from 'react';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tDivider,\n\tList,\n\tListItem,\n\tstyled,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemProps,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n\ttype UnstableSortableProviderProps,\n} from '@elementor/ui';\n\nexport const SortableProvider = < T extends number >( props: UnstableSortableProviderProps< T > ) => {\n\treturn (\n\t\t<List sx={ { p: 0, my: -0.5, mx: 0 } }>\n\t\t\t<UnstableSortableProvider restrictAxis disableDragOverlay={ false } variant={ 'static' } { ...props } />\n\t\t</List>\n\t);\n};\n\ntype SortableItemProps = {\n\tid: UnstableSortableItemProps[ 'id' ];\n\tchildren: React.ReactNode;\n\tdisabled?: boolean;\n};\n\nexport const SortableItem = ( { id, children, disabled }: SortableItemProps ): React.ReactNode => {\n\treturn (\n\t\t<UnstableSortableItem\n\t\t\tid={ id }\n\t\t\tdisabled={ disabled }\n\t\t\trender={ ( {\n\t\t\t\titemProps,\n\t\t\t\ttriggerProps,\n\t\t\t\titemStyle,\n\t\t\t\ttriggerStyle,\n\t\t\t\tshowDropIndication,\n\t\t\t\tdropIndicationStyle,\n\t\t\t}: UnstableSortableItemRenderProps ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StyledListItem { ...itemProps } style={ itemStyle }>\n\t\t\t\t\t\t{ ! disabled && <SortableTrigger { ...triggerProps } style={ triggerStyle } /> }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t{ showDropIndication && <StyledDivider style={ dropIndicationStyle } /> }\n\t\t\t\t\t</StyledListItem>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst StyledListItem = styled( ListItem )`\n\tposition: relative;\n\tmargin-inline: 0px;\n\tpadding-inline: 0px;\n\tpadding-block: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\n\t& .class-item-sortable-trigger {\n\t\tcolor: ${ ( { theme } ) => theme.palette.action.active };\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tvisibility: hidden;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tpadding-inline-end: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\ttransform: translate( -75%, -50% );\n\t}\n\n\t&[aria-describedby=''] > .MuiTag-root {\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.background.paper };\n\t\tbox-shadow: ${ ( { theme } ) => theme.shadows[ 3 ] };\n\t}\n\n\t&:hover {\n\t\t& .class-item-sortable-trigger {\n\t\t\tvisibility: visible;\n\t\t}\n\t}\n`;\n\nconst SortableTrigger = ( props: React.HTMLAttributes< HTMLDivElement > ) => (\n\t<div { ...props } role=\"button\" className=\"class-item-sortable-trigger\">\n\t\t<GripVerticalIcon fontSize=\"tiny\" />\n\t</div>\n);\n\nconst StyledDivider = styled( Divider )`\n\theight: 0px;\n\tborder: none;\n\toverflow: visible;\n\n\t&:after {\n\t\t--height: 2px;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: var( --height );\n\t\tmargin-block: calc( -1 * var( --height ) / 2 );\n\t\tborder-radius: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.text.primary };\n\t}\n`;\n","import { type PropValue } from '@elementor/editor-props';\nimport { createLocation, createReplaceableLocation } from '@elementor/locations';\n\n// Repeaters\nexport const { Slot: RepeaterItemIconSlot, inject: injectIntoRepeaterItemIcon } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemLabelSlot, inject: injectIntoRepeaterItemLabel } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterHeaderActionsSlot, inject: injectIntoRepeaterHeaderActions } = createLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemActionsSlot, inject: injectIntoRepeaterItemActions } = createLocation< {\n\tindex: number;\n} >();\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport {\n\ttype CreateOptions,\n\tcssFilterFunctionPropUtil,\n\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\ttype PropKey,\n\ttype SizePropValue,\n} from '@elementor/editor-props';\nimport { backdropFilterPropTypeUtil } from '@elementor/editor-props';\nimport { Box, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { type CollectionPropUtil, Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport { type LengthUnit, lengthUnits, type Unit } from '../utils/size-control';\nimport { DropShadowItemContent } from './filter-control/drop-shadow-item-content';\nimport { DropShadowItemLabel } from './filter-control/drop-shadow-item-label';\nimport { SelectControl } from './select-control';\nimport { SizeControl, type SizeControlProps } from './size-control';\n\ntype FilterType = FilterItemPropValue[ 'value' ][ 'func' ];\n\nconst DEFAULT_FILTER = 'blur';\n\ntype FilterItemConfig = {\n\tdefaultValue: FilterItemPropValue;\n\tname: string;\n\tvalueName: string;\n\tunits?: Exclude< SizePropValue[ 'value' ][ 'unit' ], 'custom' | 'auto' >[];\n\tsizeVariant?: SizeControlProps[ 'variant' ];\n};\n\nconst filterConfig: Record< string, FilterItemConfig > = {\n\tblur: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'blur' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Blur', 'elementor' ),\n\t\tvalueName: __( 'Radius', 'elementor' ),\n\t\tunits: lengthUnits.filter( ( unit ) => unit !== '%' ),\n\t},\n\tbrightness: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'brightness' },\n\t\t\t\targs: { $$type: 'size', value: { size: 100, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Brightness', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\tcontrast: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'contrast' },\n\t\t\t\targs: { $$type: 'size', value: { size: 100, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Contrast', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\t'hue-rotate': {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'hue-rotate' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: 'deg' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Hue Rotate', 'elementor' ),\n\t\tvalueName: __( 'Angle', 'elementor' ),\n\t\tunits: [ 'deg', 'rad', 'grad', 'turn' ],\n\t},\n\tsaturate: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'saturate' },\n\t\t\t\targs: { $$type: 'size', value: { size: 100, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Saturate', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\tgrayscale: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'grayscale' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Grayscale', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\tinvert: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'invert' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Invert', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\tsepia: {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'sepia' },\n\t\t\t\targs: { $$type: 'size', value: { size: 0, unit: '%' } },\n\t\t\t},\n\t\t},\n\t\tname: __( 'Sepia', 'elementor' ),\n\t\tvalueName: __( 'Amount', 'elementor' ),\n\t\tunits: [ '%' ],\n\t},\n\t'drop-shadow': {\n\t\tdefaultValue: {\n\t\t\t$$type: 'css-filter-func',\n\t\t\tvalue: {\n\t\t\t\tfunc: { $$type: 'string', value: 'drop-shadow' },\n\t\t\t\targs: {\n\t\t\t\t\t$$type: 'drop-shadow',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\txAxis: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t\t\t\tyAxis: { $$type: 'size', value: { size: 0, unit: 'px' } },\n\t\t\t\t\t\tblur: { $$type: 'size', value: { size: 10, unit: 'px' } },\n\t\t\t\t\t\tcolor: { $$type: 'color', value: 'rgba(0, 0, 0, 1)' },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tname: __( 'Drop shadow', 'elementor' ),\n\t\tvalueName: __( 'Drop-shadow', 'elementor' ),\n\t\tunits: lengthUnits.filter( ( unit ) => unit !== '%' ),\n\t},\n};\n\nconst filterKeys = Object.keys( filterConfig );\n\nconst isSingleSize = ( key: string ): boolean => {\n\treturn ! [ 'drop-shadow' ].includes( key );\n};\n\nexport const FilterRepeaterControl = createControl( ( { filterPropName = 'filter' }: { filterPropName?: string } ) => {\n\tconst [ propUtil, label ] =\n\t\tfilterPropName === 'backdrop-filter'\n\t\t\t? [ backdropFilterPropTypeUtil, __( 'Backdrop Filters', 'elementor' ) ]\n\t\t\t: [ filterPropTypeUtil, __( 'Filters', 'elementor' ) ];\n\tconst { propType, value: filterValues, setValue, disabled } = useBoundProp( propUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ filterValues } setValue={ setValue }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ filterValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ label }\n\t\t\t\tcollectionPropUtil={ propUtil }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\tinitialValues: filterConfig[ DEFAULT_FILTER ].defaultValue,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ItemIcon = () => <></>;\n\nconst ItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\treturn isSingleSize( value.value.func.value ?? '' ) ? (\n\t\t<SingleSizeItemLabel value={ value } />\n\t) : (\n\t\t<DropShadowItemLabel value={ value } />\n\t);\n};\n\nconst SingleSizeItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { func, args } = value.value;\n\tconst defaultUnit =\n\t\t( filterConfig[ func.value ?? '' ].defaultValue.value.args as SizePropValue ).value.unit ?? lengthUnits[ 0 ];\n\tconst { unit, size } = ( args as SizePropValue ).value ?? { unit: defaultUnit, size: 0 };\n\n\tconst label = (\n\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t{ func.value ?? '' }:\n\t\t</Box>\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }\n\t\t\t{ unit !== 'custom' ? ` ${ size ?? 0 }${ unit ?? defaultUnit }` : size }\n\t\t</Box>\n\t);\n};\n\nconst ItemContent = ( {\n\tbind,\n\tcollectionPropUtil,\n\tanchorEl,\n}: {\n\tbind: PropKey;\n\tcollectionPropUtil?: CollectionPropUtil< FilterItemPropValue >;\n\tanchorEl?: HTMLElement | null;\n} ) => {\n\tconst { value: filterValues = [] } = useBoundProp( collectionPropUtil ?? filterPropTypeUtil );\n\tconst itemIndex = parseInt( bind, 10 );\n\tconst item = filterValues?.[ itemIndex ];\n\treturn item ? (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<PropContent item={ item } anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t) : null;\n};\n\nconst PropContent = ( { item, anchorEl }: { item: FilterItemPropValue; anchorEl?: HTMLElement | null } ) => {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil );\n\n\tconst handleValueChange = (\n\t\tchangedValue: FilterItemPropValue[ 'value' ],\n\t\toptions?: CreateOptions,\n\t\tmeta?: { bind?: PropKey }\n\t) => {\n\t\tlet newValue = structuredClone( changedValue );\n\t\tconst newFuncName = newValue?.func.value ?? '';\n\t\tif ( meta?.bind === 'func' ) {\n\t\t\tnewValue = structuredClone( filterConfig[ newFuncName ].defaultValue.value );\n\t\t}\n\n\t\tif ( ! newValue.args ) {\n\t\t\treturn;\n\t\t}\n\t\tpropContext.setValue( newValue );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } setValue={ handleValueChange }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Filter', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<PropKeyProvider bind=\"func\">\n\t\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t\toptions={ filterKeys.map( ( filterKey ) => ( {\n\t\t\t\t\t\t\t\t\tlabel: filterConfig[ filterKey ].name,\n\t\t\t\t\t\t\t\t\tvalue: filterKey,\n\t\t\t\t\t\t\t\t} ) ) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PropKeyProvider bind=\"args\">\n\t\t\t\t\t<Content filterType={ item?.value.func } anchorEl={ anchorEl } />\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PopoverContent>\n\t\t</PropProvider>\n\t);\n};\n\nconst Content = ( { filterType, anchorEl }: { filterType: FilterType; anchorEl?: HTMLElement | null } ) => {\n\tconst filterName = filterType?.value || DEFAULT_FILTER;\n\tconst filterItemConfig = filterConfig[ filterName ];\n\tconst { units = [] } = filterItemConfig;\n\n\treturn isSingleSize( filterName ) ? (\n\t\t<SingleSizeItemContent filterType={ filterName } />\n\t) : (\n\t\t<DropShadowItemContent units={ units as LengthUnit[] } anchorEl={ anchorEl } />\n\t);\n};\n\nconst SingleSizeItemContent = ( { filterType }: { filterType: string } ) => {\n\tconst { valueName, defaultValue, units } = filterConfig[ filterType ];\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst defaultUnit = ( defaultValue.value.args as SizePropValue ).value.unit;\n\treturn (\n\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ valueName }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } units={ units as LengthUnit[] } defaultUnit={ defaultUnit as Unit } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { dropShadowFilterPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlFormLabel } from '../../components/control-form-label';\nimport { PopoverGridContainer } from '../../components/popover-grid-container';\nimport { type LengthUnit } from '../../utils/size-control';\nimport { ColorControl } from '../color-control';\nimport { SizeControl } from '../size-control';\n\nconst items = [\n\t{\n\t\tbind: 'xAxis',\n\t\tlabel: __( 'X-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'yAxis',\n\t\tlabel: __( 'Y-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'blur',\n\t\tlabel: __( 'Blur', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n\t{\n\t\tbind: 'color',\n\t\tlabel: __( 'Color', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n];\n\nexport const DropShadowItemContent = ( {\n\tunits,\n\tanchorEl,\n}: {\n\tunits: LengthUnit[];\n\tanchorEl?: HTMLElement | null;\n} ) => {\n\tconst context = useBoundProp( dropShadowFilterPropTypeUtil );\n\tconst rowRefs = [ useRef< HTMLDivElement >( null ), useRef< HTMLDivElement >( null ) ];\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ items.map( ( item ) => (\n\t\t\t\t<PopoverGridContainer key={ item.bind } ref={ rowRefs[ item.rowIndex ] ?? null }>\n\t\t\t\t\t<PropKeyProvider bind={ item.bind }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ item.label }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t{ item.bind === 'color' ? (\n\t\t\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<SizeControl anchorRef={ rowRefs[ item.rowIndex ] } units={ units } defaultUnit=\"px\" />\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nexport const DropShadowItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { xAxis, yAxis, blur } = value.value.args.value as DropShadowFilterPropValue[ 'value' ];\n\n\tconst xValue = `${ xAxis?.value?.size ?? 0 }${ xAxis?.value?.unit ?? 'px' }`;\n\tconst yValue = `${ yAxis?.value?.size ?? 0 }${ yAxis?.value?.unit ?? 'px' }`;\n\tconst blurValue = `${ blur?.value?.size ?? 10 }${ blur?.value?.unit ?? 'px' }`;\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t\tDrop shadow:\n\t\t\t</Box>\n\t\t\t{ `${ xValue } ${ yValue } ${ blurValue }` }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { type PropValue, stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlToggleButtonGroup, type ToggleButtonGroupItem } from '../components/control-toggle-button-group';\nimport { createControl } from '../create-control';\n\nexport type ToggleControlProps< T extends PropValue > = {\n\toptions: Array< ToggleButtonGroupItem< T > & { exclusive?: boolean } >;\n\tfullWidth?: boolean;\n\tsize?: ToggleButtonProps[ 'size' ];\n\texclusive?: boolean;\n\tmaxItems?: number;\n};\n\nexport const ToggleControl = createControl(\n\t( {\n\t\toptions,\n\t\tfullWidth = false,\n\t\tsize = 'tiny',\n\t\texclusive = true,\n\t\tmaxItems,\n\t}: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst exclusiveValues = options.filter( ( option ) => option.exclusive ).map( ( option ) => option.value );\n\n\t\tconst handleNonExclusiveToggle = ( selectedValues: StringPropValue[ 'value' ][] ) => {\n\t\t\tconst newSelectedValue = selectedValues[ selectedValues.length - 1 ];\n\t\t\tconst isNewSelectedValueExclusive = exclusiveValues.includes( newSelectedValue );\n\n\t\t\tconst updatedValues = isNewSelectedValueExclusive\n\t\t\t\t? [ newSelectedValue ]\n\t\t\t\t: selectedValues?.filter( ( val ) => ! exclusiveValues.includes( val ) );\n\n\t\t\tsetValue( updatedValues?.join( ' ' ) || null );\n\t\t};\n\n\t\tconst toggleButtonGroupProps = {\n\t\t\titems: options,\n\t\t\tmaxItems,\n\t\t\tfullWidth,\n\t\t\tsize,\n\t\t\tplaceholder,\n\t\t};\n\n\t\treturn exclusive ? (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value ?? null }\n\t\t\t\tonChange={ setValue }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ true }\n\t\t\t/>\n\t\t) : (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value?.split( ' ' ) ?? [] }\n\t\t\t\tonChange={ handleNonExclusiveToggle }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ false }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport {\n\tListItemText,\n\tMenu,\n\tMenuItem,\n\ttype StackProps,\n\tstyled,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttype ToggleButtonProps,\n\tTypography,\n\tuseTheme,\n} from '@elementor/ui';\n\nimport ControlActions from '../control-actions/control-actions';\nimport { ConditionalTooltip } from './conditional-tooltip';\n\ntype RenderContentProps = { size: ToggleButtonProps[ 'size' ] };\n\nexport type ToggleButtonGroupItem< TValue > = {\n\tvalue: TValue;\n\tlabel: string;\n\trenderContent: ( { size }: RenderContentProps ) => React.ReactNode;\n\tshowTooltip?: boolean;\n};\n\nconst StyledToggleButtonGroup = styled( ToggleButtonGroup )`\n\t${ ( { justify } ) => `justify-content: ${ justify };` }\n\tbutton:not( :last-of-type ) {\n\t\tborder-start-end-radius: 0;\n\t\tborder-end-end-radius: 0;\n\t}\n\tbutton:not( :first-of-type ) {\n\t\tborder-start-start-radius: 0;\n\t\tborder-end-start-radius: 0;\n\t}\n\tbutton:last-of-type {\n\t\tborder-start-end-radius: 8px;\n\t\tborder-end-end-radius: 8px;\n\t}\n`;\n\nconst StyledToggleButton = styled( ToggleButton, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPlaceholder',\n} )< { isPlaceholder: boolean } >`\n\t${ ( { theme, isPlaceholder } ) =>\n\t\tisPlaceholder &&\n\t\t`\n\t\tcolor: ${ theme.palette.text.tertiary };\n\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.04)' : 'rgba(0,0,0,0.02)' };\n\t\t\n\t\t&:hover {\n\t\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.04)' };\n\t\t}\n\t` }\n`;\n\ntype ExclusiveValue< TValue > = TValue;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tdisabled?: boolean;\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tmaxItems?: number;\n\tfullWidth?: boolean;\n\tplaceholder?: TValue | TValue[];\n} & (\n\t| {\n\t\t\texclusive?: false;\n\t\t\tvalue: NonExclusiveValue< TValue >;\n\t\t\tonChange: ( value: NonExclusiveValue< TValue > ) => void;\n\t }\n\t| {\n\t\t\texclusive: true;\n\t\t\tvalue: ExclusiveValue< TValue >;\n\t\t\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n\t }\n);\n\nexport const ControlToggleButtonGroup = < TValue, >( {\n\tjustify = 'end',\n\tsize = 'tiny',\n\tvalue,\n\tonChange,\n\titems,\n\tmaxItems,\n\texclusive = false,\n\tfullWidth = false,\n\tdisabled,\n\tplaceholder,\n}: Props< TValue > ) => {\n\tconst shouldSliceItems = exclusive && maxItems !== undefined && items.length > maxItems;\n\tconst menuItems = shouldSliceItems ? items.slice( maxItems - 1 ) : [];\n\tconst fixedItems = shouldSliceItems ? items.slice( 0, maxItems - 1 ) : items;\n\n\tconst theme = useTheme();\n\tconst isRtl = 'rtl' === theme.direction;\n\n\tconst handleChange = (\n\t\t_: React.MouseEvent< HTMLElement >,\n\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t) => {\n\t\tonChange( newValue as never );\n\t};\n\n\tconst getGridTemplateColumns = useMemo( () => {\n\t\tconst isOffLimits = menuItems?.length;\n\t\tconst itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;\n\t\tconst templateColumnsSuffix = isOffLimits ? 'auto' : '';\n\t\treturn `repeat(${ itemsCount }, minmax(0, 25%)) ${ templateColumnsSuffix }`;\n\t}, [ menuItems?.length, fixedItems.length ] );\n\n\tconst shouldShowExclusivePlaceholder = exclusive && ( value === null || value === undefined || value === '' );\n\n\tconst nonExclusiveSelectedValues =\n\t\t! exclusive && Array.isArray( value )\n\t\t\t? value\n\t\t\t\t\t.map( ( v ) => ( typeof v === 'string' ? v : '' ) )\n\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t.trim()\n\t\t\t\t\t.split( /\\s+/ )\n\t\t\t\t\t.filter( Boolean )\n\t\t\t: [];\n\n\tconst shouldShowNonExclusivePlaceholder = ! exclusive && nonExclusiveSelectedValues.length === 0;\n\n\tconst getPlaceholderArray = ( placeholderValue: TValue | TValue[] | undefined ): string[] => {\n\t\tif ( Array.isArray( placeholderValue ) ) {\n\t\t\treturn placeholderValue.flatMap( ( p ) => {\n\t\t\t\tif ( typeof p === 'string' ) {\n\t\t\t\t\treturn p.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof placeholderValue === 'string' ) {\n\t\t\treturn placeholderValue.trim().split( /\\s+/ ).filter( Boolean );\n\t\t}\n\n\t\treturn [];\n\t};\n\n\tconst placeholderArray = getPlaceholderArray( placeholder );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<StyledToggleButtonGroup\n\t\t\t\tjustify={ justify }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\texclusive={ exclusive }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsx={ {\n\t\t\t\t\tdirection: isRtl ? 'rtl /* @noflip */' : 'ltr /* @noflip */',\n\t\t\t\t\tdisplay: 'grid',\n\t\t\t\t\tgridTemplateColumns: getGridTemplateColumns,\n\t\t\t\t\twidth: `100%`,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ fixedItems.map( ( { label, value: buttonValue, renderContent: Content, showTooltip } ) => {\n\t\t\t\t\tconst isPlaceholder =\n\t\t\t\t\t\tplaceholderArray.length > 0 &&\n\t\t\t\t\t\tplaceholderArray.includes( buttonValue as string ) &&\n\t\t\t\t\t\t( shouldShowExclusivePlaceholder || shouldShowNonExclusivePlaceholder );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ConditionalTooltip\n\t\t\t\t\t\t\tkey={ buttonValue as string }\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip={ showTooltip || false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\t\t\tvalue={ buttonValue }\n\t\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t\t\t\tisPlaceholder={ isPlaceholder }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t\t\t</ConditionalTooltip>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\n\t\t\t\t{ menuItems.length && exclusive && (\n\t\t\t\t\t<SplitButtonGroup\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\tvalue={ ( value as ExclusiveValue< TValue > ) || null }\n\t\t\t\t\t\tonChange={ onChange as ( v: ExclusiveValue< TValue > ) => void }\n\t\t\t\t\t\titems={ menuItems }\n\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</StyledToggleButtonGroup>\n\t\t</ControlActions>\n\t);\n};\n\ntype SplitButtonGroup< TValue > = {\n\tsize: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tfullWidth: boolean;\n\tvalue: ExclusiveValue< TValue > | null;\n\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n};\n\nconst SplitButtonGroup = < TValue, >( {\n\tsize = 'tiny',\n\tonChange,\n\titems,\n\tfullWidth,\n\tvalue,\n}: SplitButtonGroup< TValue > ) => {\n\tconst previewButton = usePreviewButton( items, value );\n\tconst [ isMenuOpen, setIsMenuOpen ] = useState( false );\n\tconst menuButtonRef = useRef( null );\n\n\tconst onMenuToggle = ( ev: React.MouseEvent ) => {\n\t\tsetIsMenuOpen( ( prev ) => ! prev );\n\t\tev.preventDefault();\n\t};\n\n\tconst onMenuItemClick = ( newValue: TValue | null ) => {\n\t\tsetIsMenuOpen( false );\n\t\tonToggleItem( newValue );\n\t};\n\n\tconst onToggleItem = ( newValue: TValue | null ) => {\n\t\tconst shouldRemove = newValue === value;\n\n\t\tonChange( ( shouldRemove ? null : newValue ) as never );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleButton\n\t\t\t\tvalue={ previewButton.value }\n\t\t\t\taria-label={ previewButton.label }\n\t\t\t\tsize={ size }\n\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\tonClick={ ( ev: React.MouseEvent ) => {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\tonMenuItemClick( previewButton.value );\n\t\t\t\t} }\n\t\t\t\tref={ menuButtonRef }\n\t\t\t>\n\t\t\t\t{ previewButton.renderContent( { size } ) }\n\t\t\t</ToggleButton>\n\t\t\t<ToggleButton\n\t\t\t\tsize={ size }\n\t\t\t\taria-expanded={ isMenuOpen ? 'true' : undefined }\n\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\taria-pressed={ undefined }\n\t\t\t\tonClick={ onMenuToggle }\n\t\t\t\tref={ menuButtonRef }\n\t\t\t\tvalue=\"__chevron-icon-button__\"\n\t\t\t>\n\t\t\t\t<ChevronDownIcon fontSize={ size } />\n\t\t\t</ToggleButton>\n\t\t\t<Menu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonClose={ () => setIsMenuOpen( false ) }\n\t\t\t\tanchorEl={ menuButtonRef.current }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tsx={ {\n\t\t\t\t\tmt: 0.5,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ items.map( ( { label, value: buttonValue } ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ buttonValue }\n\t\t\t\t\t\tselected={ buttonValue === value }\n\t\t\t\t\t\tonClick={ () => onMenuItemClick( buttonValue ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItemText>\n\t\t\t\t\t\t\t<Typography sx={ { fontSize: '14px' } }>{ label }</Typography>\n\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst usePreviewButton = < TValue, >( items: ToggleButtonGroupItem< TValue >[], value: TValue ) => {\n\tconst [ previewButton, setPreviewButton ] = useState(\n\t\titems.find( ( item ) => item.value === value ) ?? items[ 0 ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst selectedButton = items.find( ( item ) => item.value === value );\n\n\t\tif ( selectedButton ) {\n\t\t\tsetPreviewButton( selectedButton );\n\t\t}\n\t}, [ items, value ] );\n\n\treturn previewButton;\n};\n","import * as React from 'react';\nimport { Tooltip } from '@elementor/ui';\n\nexport const ConditionalTooltip = ( {\n\tshowTooltip,\n\tchildren,\n\tlabel,\n}: React.PropsWithChildren< { showTooltip: boolean; label: string } > ) => {\n\treturn showTooltip && label ? (\n\t\t<Tooltip title={ label } disableFocusListener={ true } placement=\"top\">\n\t\t\t{ children }\n\t\t</Tooltip>\n\t) : (\n\t\tchildren\n\t);\n};\n","import * as React from 'react';\nimport { numberPropTypeUtil } from '@elementor/editor-props';\nimport { InputAdornment, TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst isEmptyOrNaN = ( value?: string | number | null ) =>\n\tvalue === null || value === undefined || value === '' || Number.isNaN( Number( value ) );\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+', '-' ];\n\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder: labelPlaceholder,\n\t\tmax = Number.MAX_VALUE,\n\t\tmin = -Number.MAX_VALUE,\n\t\tstep = 1,\n\t\tshouldForceInt = false,\n\t\tstartIcon,\n\t}: {\n\t\tplaceholder?: string;\n\t\tmax?: number;\n\t\tmin?: number;\n\t\tstep?: number;\n\t\tshouldForceInt?: boolean;\n\t\tstartIcon?: React.ReactNode;\n\t} ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( numberPropTypeUtil );\n\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst eventValue: string = event.target.value;\n\n\t\t\tif ( isEmptyOrNaN( eventValue ) ) {\n\t\t\t\tsetValue( null );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst formattedValue = shouldForceInt ? +parseInt( eventValue ) : Number( eventValue );\n\n\t\t\tsetValue( Math.min( Math.max( formattedValue, min ), max ) );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ labelPlaceholder ?? ( placeholder ? String( placeholder ) : '' ) }\n\t\t\t\t\tinputProps={ { step } }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: startIcon ? (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t\t\t\t\t{ startIcon }\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t) : undefined,\n\t\t\t\t\t} }\n\t\t\t\t\tonKeyDown={ ( event: KeyboardEvent ) => {\n\t\t\t\t\t\tif ( RESTRICTED_INPUT_KEYS.includes( event.key ) ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type ReactNode, type RefObject, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { bindPopover, bindToggle, Grid, Popover, Stack, ToggleButton, Tooltip, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { SizeControl } from './size-control';\n\ntype MultiSizePropValue = Record< PropKey, SizePropValue >;\n\ntype Item = {\n\ticon: ReactNode;\n\tlabel: string;\n\tbind: PropKey;\n};\n\nexport type EqualUnequalItems = [ Item, Item, Item, Item ];\n\ntype Props< TMultiPropType extends string, TPropValue extends MultiSizePropValue > = {\n\tlabel: string;\n\ticon: ReactNode;\n\ttooltipLabel: string;\n\titems: EqualUnequalItems;\n\tmultiSizePropTypeUtil: PropTypeUtil< TMultiPropType, TPropValue >;\n};\n\nconst isEqualSizes = ( propValue: MultiSizePropValue, items: EqualUnequalItems ) => {\n\tconst values = Object.values( propValue );\n\n\tif ( values.length !== items.length ) {\n\t\treturn false;\n\t}\n\n\tconst [ firstValue, ...restValues ] = values;\n\n\treturn restValues.every(\n\t\t( value ) => value?.value?.size === firstValue?.value?.size && value?.value?.unit === firstValue?.value?.unit\n\t);\n};\n\nexport function EqualUnequalSizesControl< TMultiPropType extends string, TPropValue extends MultiSizePropValue >( {\n\tlabel,\n\ticon,\n\ttooltipLabel,\n\titems,\n\tmultiSizePropTypeUtil,\n}: Props< TMultiPropType, TPropValue > ) {\n\tconst popupId = useId();\n\tconst popupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst {\n\t\tpropType: multiSizePropType,\n\t\tvalue: multiSizeValue,\n\t\tsetValue: setMultiSizeValue,\n\t\tdisabled: multiSizeDisabled,\n\t} = useBoundProp( multiSizePropTypeUtil );\n\n\tconst { value: sizeValue, setValue: setSizeValue } = useBoundProp( sizePropTypeUtil );\n\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst splitEqualValue = () => {\n\t\tif ( ! sizeValue ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn items.reduce< TPropValue >(\n\t\t\t( acc, { bind } ) => ( { ...acc, [ bind ]: sizePropTypeUtil.create( sizeValue ) } ),\n\t\t\t{} as TPropValue\n\t\t);\n\t};\n\n\tconst setNestedProp = ( newValue: TPropValue ) => {\n\t\tconst newMappedValues = {\n\t\t\t...( multiSizeValue ?? splitEqualValue() ),\n\t\t\t...newValue,\n\t\t};\n\n\t\tconst isEqual = isEqualSizes( newMappedValues, items );\n\n\t\tif ( isEqual ) {\n\t\t\treturn setSizeValue( Object.values( newMappedValues )[ 0 ]?.value );\n\t\t}\n\n\t\tsetMultiSizeValue( newMappedValues );\n\t};\n\n\tconst getMultiSizeValues = () => {\n\t\tif ( multiSizeValue ) {\n\t\t\treturn multiSizeValue;\n\t\t}\n\n\t\treturn splitEqualValue() ?? null;\n\t};\n\n\tconst isShowingGeneralIndicator = ! popupState.isOpen;\n\n\tconst isMixed = !! multiSizeValue;\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ rowRefs[ 0 ] }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t{ ! isShowingGeneralIndicator ? (\n\t\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\tplaceholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ 0 ] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<Tooltip title={ tooltipLabel } placement=\"top\">\n\t\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t\t{ ...bindToggle( popupState ) }\n\t\t\t\t\t\t\t\tselected={ popupState.isOpen }\n\t\t\t\t\t\t\t\taria-label={ tooltipLabel }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: { sx: { mt: 0.5, width: rowRefs[ 0 ].current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<PropProvider\n\t\t\t\t\tpropType={ multiSizePropType }\n\t\t\t\t\tvalue={ getMultiSizeValues() }\n\t\t\t\t\tsetValue={ setNestedProp }\n\t\t\t\t\tisDisabled={ () => multiSizeDisabled }\n\t\t\t\t>\n\t\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 1 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 0 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 1 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 2 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 2 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 3 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t</PropProvider>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nconst MultiSizeValueControl = ( { item, rowRef }: { item: Item; rowRef: RefObject< HTMLDivElement > } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ item.bind }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ item.label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<SizeControl startIcon={ item.icon } anchorRef={ rowRef } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { Stack } from '@elementor/ui';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { ControlFormLabel } from './control-form-label';\n\nexport const ControlLabel = ( { children }: PropsWithChildren< object > ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { type ExtendedOption } from '../utils/size-control';\nimport { SizeControl } from './size-control';\n\nexport const LinkedDimensionsControl = createControl(\n\t( {\n\t\tlabel,\n\t\tisSiteRtl = false,\n\t\textendedOptions,\n\t}: {\n\t\tlabel: string;\n\t\tisSiteRtl?: boolean;\n\t\textendedOptions?: ExtendedOption[];\n\t} ) => {\n\t\tconst { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\t\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\t\tconst {\n\t\t\tvalue: dimensionsValue,\n\t\t\tsetValue: setDimensionsValue,\n\t\t\tpropType,\n\t\t\tdisabled: dimensionsDisabled,\n\t\t} = useBoundProp( dimensionsPropTypeUtil );\n\n\t\tconst isLinked = ! dimensionsValue && ! sizeValue ? true : !! sizeValue;\n\n\t\tconst onLinkToggle = () => {\n\t\t\tif ( ! isLinked ) {\n\t\t\t\tsetSizeValue( dimensionsValue[ 'block-start' ]?.value ?? null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\t\tsetDimensionsValue( {\n\t\t\t\t'block-start': value,\n\t\t\t\t'block-end': value,\n\t\t\t\t'inline-start': value,\n\t\t\t\t'inline-end': value,\n\t\t\t} );\n\t\t};\n\n\t\tconst tooltipLabel = label.toLowerCase();\n\n\t\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t\t// translators: %s: Tooltip title.\n\t\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t\t// translators: %s: Tooltip title.\n\t\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\t\tconst disabled = sizeDisabled || dimensionsDisabled;\n\n\t\treturn (\n\t\t\t<PropProvider\n\t\t\t\tpropType={ propType }\n\t\t\t\tvalue={ dimensionsValue }\n\t\t\t\tsetValue={ setDimensionsValue }\n\t\t\t\tisDisabled={ () => disabled }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t</Stack>\n\n\t\t\t\t{ getCssDimensionProps( isSiteRtl ).map( ( row, index ) => (\n\t\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" key={ index } ref={ gridRowRefs[ index ] }>\n\t\t\t\t\t\t{ row.map( ( { icon, ...props } ) => (\n\t\t\t\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\" key={ props.bind }>\n\t\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t\t<Label { ...props } />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\t\t\t\tbind={ props.bind }\n\t\t\t\t\t\t\t\t\t\tstartIcon={ icon }\n\t\t\t\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ gridRowRefs[ index ] }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t) ) }\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\nconst Control = ( {\n\tbind,\n\tstartIcon,\n\tisLinked,\n\textendedOptions,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tstartIcon: React.ReactNode;\n\tisLinked: boolean;\n\textendedOptions?: ExtendedOption[];\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl startIcon={ startIcon } extendedOptions={ extendedOptions } anchorRef={ anchorRef } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl startIcon={ startIcon } extendedOptions={ extendedOptions } anchorRef={ anchorRef } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Label = ( { label, bind }: { label: string; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t</PropKeyProvider>\n\t);\n};\n\nfunction getCssDimensionProps( isSiteRtl: boolean ) {\n\treturn [\n\t\t[\n\t\t\t{\n\t\t\t\tbind: 'block-start',\n\t\t\t\tlabel: __( 'Top', 'elementor' ),\n\t\t\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbind: 'inline-end',\n\t\t\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\t\t\ticon: isSiteRtl ? <SideLeftIcon fontSize={ 'tiny' } /> : <SideRightIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t],\n\t\t[\n\t\t\t{\n\t\t\t\tbind: 'block-end',\n\t\t\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\t\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t\t{\n\t\t\t\tbind: 'inline-start',\n\t\t\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\t\t\ticon: isSiteRtl ? <SideRightIcon fontSize={ 'tiny' } /> : <SideLeftIcon fontSize={ 'tiny' } />,\n\t\t\t},\n\t\t],\n\t];\n}\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { ChevronDownIcon, TextIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Popover, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { ItemSelector } from '../../components/item-selector';\nimport { type Category } from '../../components/item-selector';\nimport ControlActions from '../../control-actions/control-actions';\nimport { createControl } from '../../create-control';\nimport { enqueueFont } from './enqueue-font';\n\nexport type FontCategory = {\n\tlabel: string;\n\tfonts: string[];\n};\n\ntype FontFamilyControlProps = {\n\tfontFamilies: FontCategory[];\n\tsectionWidth: number;\n};\n\nexport const FontFamilyControl = createControl( ( { fontFamilies, sectionWidth }: FontFamilyControlProps ) => {\n\tconst { value: fontFamily, setValue: setFontFamily, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\tconst isShowingPlaceholder = ! fontFamily && placeholder;\n\n\tconst mapFontSubs = React.useMemo< Category[] >( () => {\n\t\treturn fontFamilies.map( ( { label, fonts } ) => ( {\n\t\t\tlabel,\n\t\t\titems: fonts,\n\t\t} ) );\n\t}, [ fontFamilies ] );\n\n\treturn (\n\t\t<>\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ fontFamily || placeholder }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tsx={\n\t\t\t\t\t\tisShowingPlaceholder\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t'& .MuiTag-label': {\n\t\t\t\t\t\t\t\t\t\tcolor: ( theme ) => theme.palette.text.tertiary,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\ttextTransform: 'capitalize',\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tsx={ { my: 1.5 } }\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\tonItemChange={ setFontFamily }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\ttitle={ __( 'Font Family', 'elementor' ) }\n\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n} );\n","import * as React from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { PopoverBody, PopoverHeader, PopoverMenuList, PopoverSearch } from '@elementor/editor-ui';\nimport { Box, Divider, Link, Stack, Typography } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SelectableItem, useFilteredItemsList } from '../hooks/use-filtered-items-list';\n\nexport type Category = {\n\tlabel: string;\n\titems: string[];\n};\n\ntype ItemSelectorProps = {\n\titemsList: Category[];\n\tselectedItem: string | null;\n\tonItemChange: ( item: string ) => void;\n\tonClose: () => void;\n\tsectionWidth: number;\n\ttitle: string;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\ticon: React.ElementType< { fontSize: string } >;\n};\n\nexport const ItemSelector = ( {\n\titemsList,\n\tselectedItem,\n\tonItemChange,\n\tonClose,\n\tsectionWidth,\n\ttitle,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n\ticon,\n}: ItemSelectorProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst filteredItemsList = useFilteredItemsList( itemsList, searchValue );\n\n\tconst IconComponent = icon;\n\n\tconst handleSearch = ( value: string ) => {\n\t\tsetSearchValue( value );\n\t};\n\n\tconst handleClose = () => {\n\t\tsetSearchValue( '' );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<PopoverBody width={ sectionWidth }>\n\t\t\t<PopoverHeader title={ title } onClose={ handleClose } icon={ <IconComponent fontSize=\"tiny\" /> } />\n\t\t\t<PopoverSearch\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tonSearch={ handleSearch }\n\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t{ filteredItemsList.length > 0 ? (\n\t\t\t\t<ItemList\n\t\t\t\t\titemListItems={ filteredItemsList }\n\t\t\t\t\tsetSelectedItem={ onItemChange }\n\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\tselectedItem={ selectedItem }\n\t\t\t\t\titemStyle={ itemStyle }\n\t\t\t\t\tonDebounce={ onDebounce }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Stack\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\theight=\"100%\"\n\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\toverflow=\"hidden\"\n\t\t\t\t>\n\t\t\t\t\t<IconComponent fontSize=\"large\" />\n\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ { display: 'flex', width: '100%', justifyContent: 'center' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>&ldquo;</span>\n\t\t\t\t\t\t\t<span style={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }>\n\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span>&rdquo;.</span>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n\ntype ItemListProps = {\n\titemListItems: SelectableItem[];\n\tsetSelectedItem: ( item: string ) => void;\n\thandleClose: () => void;\n\tselectedItem: string | null;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n};\n\nconst ItemList = ( {\n\titemListItems,\n\tsetSelectedItem,\n\thandleClose,\n\tselectedItem,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n}: ItemListProps ) => {\n\tconst selectedItemFound = itemListItems.find( ( item ) => item.value === selectedItem );\n\n\tconst debouncedVirtualizeChange = useDebounce( ( { getVirtualIndexes }: { getVirtualIndexes: () => number[] } ) => {\n\t\tgetVirtualIndexes().forEach( ( index ) => {\n\t\t\tconst item = itemListItems[ index ];\n\t\t\tif ( item && item.type === 'item' ) {\n\t\t\t\tonDebounce( item.value );\n\t\t\t}\n\t\t} );\n\t}, 100 );\n\n\tconst memoizedItemStyle = useCallback( ( item: SelectableItem ) => itemStyle( item ), [ itemStyle ] );\n\n\treturn (\n\t\t<PopoverMenuList\n\t\t\titems={ itemListItems }\n\t\t\tselectedValue={ selectedItemFound?.value }\n\t\t\tonChange={ debouncedVirtualizeChange }\n\t\t\tonSelect={ setSelectedItem }\n\t\t\tonClose={ handleClose }\n\t\t\titemStyle={ memoizedItemStyle }\n\t\t\tdata-testid=\"item-list\"\n\t\t/>\n\t);\n};\n\nconst useDebounce = < TArgs extends unknown[] >( fn: ( ...args: TArgs ) => void, delay: number ) => {\n\tconst [ debouncedFn ] = useState( () => debounce( fn, delay ) );\n\tuseEffect( () => () => debouncedFn.cancel(), [ debouncedFn ] );\n\treturn debouncedFn;\n};\n","import { type Category } from '../components/item-selector';\n\nexport type SelectableItem = {\n\ttype: 'item' | 'category';\n\tvalue: string;\n};\n\nexport const useFilteredItemsList = ( itemsList: Category[], searchValue: string ) => {\n\treturn itemsList.reduce< SelectableItem[] >( ( acc, category ) => {\n\t\tconst filteredItems = category.items.filter( ( item ) =>\n\t\t\titem.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t);\n\n\t\tif ( filteredItems.length ) {\n\t\t\tacc.push( { type: 'category', value: category.label } );\n\n\t\t\tfilteredItems.forEach( ( item ) => {\n\t\t\t\tacc.push( { type: 'item', value: item } );\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n};\n","type EnqueueFont = ( fontFamily: string, context?: 'preview' | 'editor' ) => void;\n\ntype ExtendedWindow = Window & {\n\telementor?: {\n\t\thelpers?: {\n\t\t\tenqueueFont?: EnqueueFont;\n\t\t};\n\t};\n};\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'editor' ) => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import * as React from 'react';\nimport { urlPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const UrlControl = createControl( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue, disabled } = useBoundProp( urlPropTypeUtil );\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { getLinkInLinkRestriction } from '@elementor/editor-elements';\nimport {\n\tlinkPropTypeUtil,\n\ttype LinkPropValue,\n\tnumberPropTypeUtil,\n\tstringPropTypeUtil,\n\turlPropTypeUtil,\n} from '@elementor/editor-props';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Collapse, Grid, IconButton, Stack } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport {\n\tAutocomplete,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from '../components/autocomplete';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { RestrictedLinkInfotip } from '../components/restricted-link-infotip';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { type ControlProps } from '../utils/types';\nimport { SwitchControl } from './switch-control';\n\ntype Props = ControlProps< {\n\tqueryOptions: {\n\t\trequestParams: Record< string, unknown >;\n\t\tendpoint: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tlabel?: string;\n} >;\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ] | null;\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\n\nconst SIZE = 'tiny';\n\nexport const LinkControl = createControl( ( props: Props ) => {\n\tconst { value, path, setValue, ...propContext } = useBoundProp( linkPropTypeUtil );\n\tconst [ linkSessionValue, setLinkSessionValue ] = useSessionStorage< LinkSessionValue >( path.join( '/' ) );\n\tconst [ isActive, setIsActive ] = useState( !! value );\n\n\tconst {\n\t\tallowCustomValues,\n\t\tqueryOptions: { endpoint = '', requestParams = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tcontext: { elementId },\n\t\tlabel = __( 'Link', 'elementor' ),\n\t} = props || {};\n\n\tconst [ linkInLinkRestriction, setLinkInLinkRestriction ] = useState( getLinkInLinkRestriction( elementId ) );\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value )\n\t);\n\tconst shouldDisableAddingLink = ! isActive && linkInLinkRestriction.shouldRestrict;\n\n\tconst onEnabledChange = () => {\n\t\tsetLinkInLinkRestriction( getLinkInLinkRestriction( elementId ) );\n\n\t\tif ( linkInLinkRestriction.shouldRestrict && ! isActive ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newState = ! isActive;\n\t\tsetIsActive( newState );\n\n\t\tif ( ! newState && value !== null ) {\n\t\t\tsetValue( null );\n\t\t}\n\n\t\tif ( newState && linkSessionValue?.value ) {\n\t\t\tsetValue( linkSessionValue.value );\n\t\t}\n\n\t\tsetLinkSessionValue( {\n\t\t\tvalue: linkSessionValue?.value,\n\t\t\tmeta: { isEnabled: newState },\n\t\t} );\n\t};\n\n\tconst onOptionChange = ( newValue: number | null ) => {\n\t\tconst valueToSave: LinkPropValue[ 'value' ] | null = newValue\n\t\t\t? {\n\t\t\t\t\t...value,\n\t\t\t\t\tdestination: numberPropTypeUtil.create( newValue ),\n\t\t\t\t\tlabel: stringPropTypeUtil.create( findMatchingOption( options, newValue )?.label || null ),\n\t\t\t }\n\t\t\t: null;\n\n\t\tonSaveNewValue( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tnewValue = newValue?.trim() || '';\n\n\t\tconst valueToSave: LinkPropValue[ 'value' ] | null = newValue\n\t\t\t? {\n\t\t\t\t\t...value,\n\t\t\t\t\tdestination: urlPropTypeUtil.create( newValue ),\n\t\t\t\t\tlabel: stringPropTypeUtil.create( '' ),\n\t\t\t }\n\t\t\t: null;\n\n\t\tonSaveNewValue( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst onSaveNewValue = ( newValue: LinkPropValue[ 'value' ] | null ) => {\n\t\tsetValue( newValue );\n\t\tsetLinkSessionValue( { ...linkSessionValue, value: newValue } );\n\t};\n\n\tconst updateOptions = ( newValue: string | null ) => {\n\t\tsetOptions( [] );\n\n\t\tif ( ! newValue || ! endpoint || newValue.length < minInputLength ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounceFetch( { ...requestParams, term: newValue } );\n\t};\n\n\tconst debounceFetch = useMemo(\n\t\t() =>\n\t\t\tdebounce(\n\t\t\t\t( params: FetchOptionsParams ) =>\n\t\t\t\t\tfetchOptions( endpoint, params ).then( ( newOptions ) => {\n\t\t\t\t\t\tsetOptions( formatOptions( newOptions ) );\n\t\t\t\t\t} ),\n\t\t\t\t400\n\t\t\t),\n\t\t[ endpoint ]\n\t);\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tmarginInlineEnd: -0.75,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t<RestrictedLinkInfotip isVisible={ ! isActive } linkInLinkRestriction={ linkInLinkRestriction }>\n\t\t\t\t\t\t<ToggleIconControl\n\t\t\t\t\t\t\tdisabled={ shouldDisableAddingLink }\n\t\t\t\t\t\t\tactive={ isActive }\n\t\t\t\t\t\t\tonIconClick={ onEnabledChange }\n\t\t\t\t\t\t\tlabel={ __( 'Toggle link', 'elementor' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</RestrictedLinkInfotip>\n\t\t\t\t</Stack>\n\t\t\t\t<Collapse in={ isActive } timeout=\"auto\" unmountOnExit>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'destination' }>\n\t\t\t\t\t\t\t<ControlActions>\n\t\t\t\t\t\t\t\t<Autocomplete\n\t\t\t\t\t\t\t\t\toptions={ options }\n\t\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\t\tvalue={ value?.destination?.value?.settings?.label || value?.destination?.value }\n\t\t\t\t\t\t\t\t\tonOptionChange={ onOptionChange }\n\t\t\t\t\t\t\t\t\tonTextChange={ onTextChange }\n\t\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</ControlActions>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'isTargetBlank' }>\n\t\t\t\t\t\t\t<Grid container alignItems=\"center\" flexWrap=\"nowrap\" justifyContent=\"space-between\">\n\t\t\t\t\t\t\t\t<Grid item>\n\t\t\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Open in a new tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item sx={ { marginInlineEnd: -1 } }>\n\t\t\t\t\t\t\t\t\t<SwitchControl />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Collapse>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\ntype ToggleIconControlProps = {\n\tdisabled: boolean;\n\tactive: boolean;\n\tonIconClick: () => void;\n\tlabel?: string;\n};\n\nconst ToggleIconControl = ( { disabled, active, onIconClick, label }: ToggleIconControlProps ) => {\n\treturn (\n\t\t<IconButton size={ SIZE } onClick={ onIconClick } aria-label={ label } disabled={ disabled }>\n\t\t\t{ active ? <MinusIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconButton>\n\t);\n};\n\ntype FetchOptionsParams = Record< string, unknown > & { term: string };\n\nasync function fetchOptions( ajaxUrl: string, params: FetchOptionsParams ) {\n\tif ( ! params || ! ajaxUrl ) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst { data: response } = await httpService().get< Response >( ajaxUrl, { params } );\n\n\t\treturn response.data.value;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction formatOptions( options: FlatOption[] | CategorizedOption[] ): FlatOption[] | CategorizedOption[] {\n\tconst compareKey = isCategorizedOptionPool( options ) ? 'groupLabel' : 'label';\n\n\treturn options.sort( ( a, b ) =>\n\t\ta[ compareKey ] && b[ compareKey ] ? a[ compareKey ].localeCompare( b[ compareKey ] ) : 0\n\t);\n}\n\nfunction generateFirstLoadedOption( unionValue: LinkPropValue[ 'value' ] | null ): FlatOption[] {\n\tconst value = unionValue?.destination?.value;\n\tconst label = unionValue?.label?.value;\n\tconst type = unionValue?.destination?.$$type || 'url';\n\n\treturn value && label && type === 'number'\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tid: value.toString(),\n\t\t\t\t\tlabel,\n\t\t\t\t},\n\t\t ]\n\t\t: [];\n}\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport {\n\tAutocomplete as AutocompleteBase,\n\ttype AutocompleteRenderInputParams,\n\tBox,\n\tIconButton,\n\tInputAdornment,\n\tTextField,\n} from '@elementor/ui';\n\nexport type FlatOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel?: never;\n};\n\nexport type CategorizedOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel: string;\n};\n\nexport type Props = {\n\toptions: FlatOption[] | CategorizedOption[];\n\tvalue?: number | string | null;\n\tonOptionChange: ( newValue: number | null ) => void;\n\tonTextChange?: ( newValue: string | null ) => void;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n\tminInputLength?: number;\n};\n\nexport const Autocomplete = forwardRef( ( props: Props, ref ) => {\n\tconst {\n\t\toptions,\n\t\tonOptionChange,\n\t\tonTextChange,\n\t\tallowCustomValues = false,\n\t\tplaceholder = '',\n\t\tminInputLength = 2,\n\t\tvalue = '',\n\t\t...restProps\n\t} = props;\n\n\tconst optionKeys = _factoryFilter( value, options, minInputLength ).map( ( { id } ) => id );\n\tconst allowClear = !! value;\n\n\t// Prevents MUI warning when freeSolo/allowCustomValues is false\n\tconst muiWarningPreventer = allowCustomValues || !! value?.toString()?.length;\n\n\tconst isOptionEqualToValue = muiWarningPreventer ? undefined : () => true;\n\n\tconst isValueFromOptions = typeof value === 'number' && !! findMatchingOption( options, value );\n\n\treturn (\n\t\t<AutocompleteBase\n\t\t\t{ ...restProps }\n\t\t\tref={ ref }\n\t\t\tforcePopupIcon={ false }\n\t\t\tdisableClearable={ true } // Disabled component's auto clear icon to use our custom one instead\n\t\t\tfreeSolo={ allowCustomValues }\n\t\t\tvalue={ value?.toString() || '' }\n\t\t\tsize={ 'tiny' }\n\t\t\tonChange={ ( _, newValue ) => onOptionChange( Number( newValue ) ) }\n\t\t\treadOnly={ isValueFromOptions }\n\t\t\toptions={ optionKeys }\n\t\t\tgetOptionKey={ ( optionId ) => findMatchingOption( options, optionId )?.id || optionId }\n\t\t\tgetOptionLabel={ ( optionId ) => findMatchingOption( options, optionId )?.label || optionId.toString() }\n\t\t\tgroupBy={\n\t\t\t\tisCategorizedOptionPool( options )\n\t\t\t\t\t? ( optionId: string ) => findMatchingOption( options, optionId )?.groupLabel || optionId\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tisOptionEqualToValue={ isOptionEqualToValue }\n\t\t\tfilterOptions={ () => optionKeys }\n\t\t\trenderOption={ ( optionProps, optionId ) => (\n\t\t\t\t<Box component=\"li\" { ...optionProps } key={ optionProps.id }>\n\t\t\t\t\t{ findMatchingOption( options, optionId )?.label ?? optionId }\n\t\t\t\t</Box>\n\t\t\t) }\n\t\t\trenderInput={ ( params ) => (\n\t\t\t\t<TextInput\n\t\t\t\t\tparams={ params }\n\t\t\t\t\thandleChange={ ( newValue ) => onTextChange?.( newValue ) }\n\t\t\t\t\tallowClear={ allowClear }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\thasSelectedValue={ isValueFromOptions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n} );\n\nconst TextInput = ( {\n\tparams,\n\tallowClear,\n\tplaceholder,\n\thandleChange,\n\thasSelectedValue,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n\tplaceholder: string;\n\thasSelectedValue: boolean;\n} ) => {\n\tconst onChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\thandleChange( event.target.value );\n\t};\n\n\treturn (\n\t\t<TextField\n\t\t\t{ ...params }\n\t\t\tplaceholder={ placeholder }\n\t\t\tonChange={ onChange }\n\t\t\tsx={ {\n\t\t\t\t'& .MuiInputBase-input': {\n\t\t\t\t\tcursor: hasSelectedValue ? 'default' : undefined,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tInputProps={ {\n\t\t\t\t...params.InputProps,\n\t\t\t\tendAdornment: <ClearButton params={ params } allowClear={ allowClear } handleChange={ handleChange } />,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ClearButton = ( {\n\tallowClear,\n\thandleChange,\n\tparams,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n} ) => (\n\t<InputAdornment position=\"end\">\n\t\t{ allowClear && (\n\t\t\t<IconButton size={ params.size } onClick={ () => handleChange( null ) } sx={ { cursor: 'pointer' } }>\n\t\t\t\t<XIcon fontSize={ params.size } />\n\t\t\t</IconButton>\n\t\t) }\n\t</InputAdornment>\n);\n\nexport function findMatchingOption(\n\toptions: FlatOption[] | CategorizedOption[],\n\toptionId: string | number | null = null\n) {\n\tconst formattedOption = ( optionId || '' ).toString();\n\n\treturn options.find( ( { id } ) => formattedOption === id.toString() );\n}\n\nexport function isCategorizedOptionPool( options: FlatOption[] | CategorizedOption[] ): options is CategorizedOption[] {\n\treturn options.every( ( option ) => 'groupLabel' in option );\n}\nfunction _factoryFilter< T extends FlatOption[] | CategorizedOption[] >(\n\tnewValue: string | number | null,\n\toptions: T,\n\tminInputLength: number\n): T {\n\tif ( null === newValue ) {\n\t\treturn options;\n\t}\n\n\tconst formattedValue = String( newValue || '' )?.toLowerCase();\n\n\tif ( formattedValue.length < minInputLength ) {\n\t\treturn new Array( 0 ) as T;\n\t}\n\n\treturn options.filter(\n\t\t( option ) =>\n\t\t\tString( option.id ).toLowerCase().includes( formattedValue ) ||\n\t\t\toption.label.toLowerCase().includes( formattedValue )\n\t) as T;\n}\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { type LinkInLinkRestriction, selectElement } from '@elementor/editor-elements';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertAction, AlertTitle, Box, Infotip, Link } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst learnMoreButton = {\n\tlabel: __( 'Learn More', 'elementor' ),\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n};\n\nconst INFOTIP_CONTENT = {\n\tdescendant: __(\n\t\t'To add a link to this element, first remove the link from the elements inside of it.',\n\t\t'elementor'\n\t),\n\tancestor: __( 'To add a link to this element, first remove the link from its parent container.', 'elementor' ),\n};\n\ntype RestrictedLinkInfotipProps = PropsWithChildren< {\n\tlinkInLinkRestriction: LinkInLinkRestriction;\n\tisVisible: boolean;\n} >;\n\nexport const RestrictedLinkInfotip: React.FC< RestrictedLinkInfotipProps > = ( {\n\tlinkInLinkRestriction,\n\tisVisible,\n\tchildren,\n} ) => {\n\tconst { shouldRestrict, reason, elementId } = linkInLinkRestriction;\n\n\tconst handleTakeMeClick = () => {\n\t\tif ( elementId ) {\n\t\t\tselectElement( elementId );\n\t\t}\n\t};\n\n\tconst content = (\n\t\t<Alert\n\t\t\tseverity=\"secondary\"\n\t\t\ticon={ <InfoCircleFilledIcon /> }\n\t\t\taction={\n\t\t\t\t<AlertAction\n\t\t\t\t\tsx={ { width: 'fit-content' } }\n\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tonClick={ handleTakeMeClick }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Take me there', 'elementor' ) }\n\t\t\t\t</AlertAction>\n\t\t\t}\n\t\t>\n\t\t\t<AlertTitle>{ __( 'Nested links', 'elementor' ) }</AlertTitle>\n\t\t\t<Box component=\"span\">\n\t\t\t\t{ INFOTIP_CONTENT[ reason ?? 'descendant' ] }{ ' ' }\n\t\t\t\t<Link href={ learnMoreButton.href } target=\"_blank\" color=\"info.main\">\n\t\t\t\t\t{ learnMoreButton.label }\n\t\t\t\t</Link>\n\t\t\t</Box>\n\t\t</Alert>\n\t);\n\n\treturn shouldRestrict && isVisible ? (\n\t\t<Infotip\n\t\t\tplacement=\"right\"\n\t\t\tcontent={ content }\n\t\t\tcolor=\"secondary\"\n\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Infotip>\n\t) : (\n\t\t<>{ children }</>\n\t);\n};\n","import * as React from 'react';\nimport { booleanPropTypeUtil } from '@elementor/editor-props';\nimport { Switch } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context/use-bound-prop';\nimport { createControl } from '../create-control';\n\nexport const SwitchControl = createControl( () => {\n\tconst { value, setValue, disabled } = useBoundProp( booleanPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.checked );\n\t};\n\n\treturn (\n\t\t<div style={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t<Switch\n\t\t\t\tchecked={ !! value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( disabled ? { style: { opacity: 0 } } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</div>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, ToggleButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { createControl } from '../create-control';\nimport { SizeControl } from './size-control';\n\nexport const GapControl = createControl( ( { label }: { label: string } ) => {\n\tconst {\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tpropType,\n\t\tdisabled: directionDisabled,\n\t} = useBoundProp( layoutDirectionPropTypeUtil );\n\n\tconst stackRef = useRef< HTMLDivElement >( null );\n\n\tconst { value: sizeValue, setValue: setSizeValue, disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst isLinked = ! directionValue && ! sizeValue ? true : !! sizeValue;\n\n\tconst onLinkToggle = () => {\n\t\tif ( ! isLinked ) {\n\t\t\tsetSizeValue( directionValue?.column?.value ?? null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst value = sizeValue ? sizePropTypeUtil.create( sizeValue ) : null;\n\n\t\tsetDirectionValue( {\n\t\t\trow: value,\n\t\t\tcolumn: value,\n\t\t} );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || directionDisabled;\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ directionValue } setValue={ setDirectionValue }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ stackRef }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Column', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control bind={ 'column' } isLinked={ isLinked } anchorRef={ stackRef } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Row', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control bind={ 'row' } isLinked={ isLinked } anchorRef={ stackRef } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = ( {\n\tbind,\n\tisLinked,\n\tanchorRef,\n}: {\n\tbind: PropKey;\n\tisLinked: boolean;\n\tanchorRef: RefObject< HTMLDivElement >;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn <SizeControl anchorRef={ anchorRef } />;\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl anchorRef={ anchorRef } />\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { ArrowsMoveHorizontalIcon, ArrowsMoveVerticalIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent, Stack, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlLabel } from '../components/control-label';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst RATIO_OPTIONS = [\n\t{ label: __( 'Auto', 'elementor' ), value: 'auto' },\n\t{ label: '1/1', value: '1/1' },\n\t{ label: '4/3', value: '4/3' },\n\t{ label: '3/4', value: '3/4' },\n\t{ label: '16/9', value: '16/9' },\n\t{ label: '9/16', value: '9/16' },\n\t{ label: '3/2', value: '3/2' },\n\t{ label: '2/3', value: '2/3' },\n];\n\nconst CUSTOM_RATIO = 'custom';\n\nexport const AspectRatioControl = createControl( ( { label }: { label: string } ) => {\n\tconst { value: aspectRatioValue, setValue: setAspectRatioValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustomSelected =\n\t\taspectRatioValue && ! RATIO_OPTIONS.some( ( option ) => option.value === aspectRatioValue );\n\tconst [ initialWidth, initialHeight ] = isCustomSelected ? aspectRatioValue.split( '/' ) : [ '', '' ];\n\n\tconst [ isCustom, setIsCustom ] = useState( isCustomSelected );\n\tconst [ customWidth, setCustomWidth ] = useState< string >( initialWidth );\n\tconst [ customHeight, setCustomHeight ] = useState< string >( initialHeight );\n\tconst [ selectedValue, setSelectedValue ] = useState< string >(\n\t\tisCustomSelected ? CUSTOM_RATIO : aspectRatioValue || ''\n\t);\n\n\tuseEffect( () => {\n\t\tconst isCustomValue =\n\t\t\taspectRatioValue && ! RATIO_OPTIONS.some( ( option ) => option.value === aspectRatioValue );\n\n\t\tif ( isCustomValue ) {\n\t\t\tconst [ width, height ] = aspectRatioValue.split( '/' );\n\t\t\tsetCustomWidth( width || '' );\n\t\t\tsetCustomHeight( height || '' );\n\t\t\tsetSelectedValue( CUSTOM_RATIO );\n\t\t\tsetIsCustom( true );\n\t\t} else {\n\t\t\tsetSelectedValue( aspectRatioValue || '' );\n\t\t\tsetIsCustom( false );\n\t\t\tsetCustomWidth( '' );\n\t\t\tsetCustomHeight( '' );\n\t\t}\n\t}, [ aspectRatioValue ] );\n\n\tconst handleSelectChange = ( event: SelectChangeEvent< string > ) => {\n\t\tconst newValue = event.target.value;\n\t\tconst isCustomRatio = newValue === CUSTOM_RATIO;\n\n\t\tsetIsCustom( isCustomRatio );\n\t\tsetSelectedValue( newValue );\n\n\t\tif ( isCustomRatio ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAspectRatioValue( newValue );\n\t};\n\tconst handleCustomWidthChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst newWidth = event.target.value;\n\t\tsetCustomWidth( newWidth );\n\n\t\tif ( newWidth && customHeight ) {\n\t\t\tsetAspectRatioValue( `${ newWidth }/${ customHeight }` );\n\t\t}\n\t};\n\n\tconst handleCustomHeightChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst newHeight = event.target.value;\n\t\tsetCustomHeight( newHeight );\n\n\t\tif ( customWidth && newHeight ) {\n\t\t\tsetAspectRatioValue( `${ customWidth }/${ newHeight }` );\n\t\t}\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Stack direction=\"column\" gap={ 2 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisplayEmpty\n\t\t\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\tvalue={ selectedValue }\n\t\t\t\t\t\t\tonChange={ handleSelectChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ [ ...RATIO_OPTIONS, { label: __( 'Custom', 'elementor' ), value: CUSTOM_RATIO } ].map(\n\t\t\t\t\t\t\t\t( { label: optionLabel, ...props } ) => (\n\t\t\t\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t\t\t\t{ optionLabel }\n\t\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t{ isCustom && (\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\tvalue={ customWidth }\n\t\t\t\t\t\t\t\tonChange={ handleCustomWidthChange }\n\t\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\t\tstartAdornment: <ArrowsMoveHorizontalIcon fontSize=\"tiny\" />,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<TextField\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\tvalue={ customHeight }\n\t\t\t\t\t\t\t\tonChange={ handleCustomHeightChange }\n\t\t\t\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\t\t\t\tstartAdornment: <ArrowsMoveVerticalIcon fontSize=\"tiny\" />,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack, styled } from '@elementor/ui';\nimport { type OpenOptions, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { EnableUnfilteredModal } from '../components/enable-unfiltered-modal';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\nconst TILE_SIZE = 8;\nconst TILE_WHITE = 'transparent';\nconst TILE_BLACK = '#c1c1c1';\nconst TILES_GRADIENT_FORMULA = `linear-gradient(45deg, ${ TILE_BLACK } 25%, ${ TILE_WHITE } 0, ${ TILE_WHITE } 75%, ${ TILE_BLACK } 0, ${ TILE_BLACK })`;\n\nconst StyledCard = styled( Card )`\n\tbackground-color: white;\n\tbackground-image: ${ TILES_GRADIENT_FORMULA }, ${ TILES_GRADIENT_FORMULA };\n\tbackground-size: ${ TILE_SIZE }px ${ TILE_SIZE }px;\n\tbackground-position:\n\t\t0 0,\n\t\t${ TILE_SIZE / 2 }px ${ TILE_SIZE / 2 }px;\n\tborder: none;\n`;\n\nconst StyledCardMediaContainer = styled( Stack )`\n\tposition: relative;\n\theight: 140px;\n\tobject-fit: contain;\n\tpadding: 5px;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground-color: rgba( 255, 255, 255, 0.37 );\n`;\n\nconst MODE_BROWSE: OpenOptions = { mode: 'browse' };\nconst MODE_UPLOAD: OpenOptions = { mode: 'upload' };\n\nexport const SvgMediaControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst [ unfilteredModalOpenState, setUnfilteredModalOpenState ] = useState( false );\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes: [ 'svg' ],\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\tconst onCloseUnfilteredModal = ( enabled: boolean ) => {\n\t\tsetUnfilteredModalOpenState( false );\n\n\t\tif ( enabled ) {\n\t\t\topen( MODE_UPLOAD );\n\t\t}\n\t};\n\n\tconst handleClick = ( openOptions?: OpenOptions ) => {\n\t\tif ( ! allowSvgUpload && openOptions === MODE_UPLOAD ) {\n\t\t\tsetUnfilteredModalOpenState( true );\n\t\t} else {\n\t\t\topen( openOptions );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1 }>\n\t\t\t<EnableUnfilteredModal open={ unfilteredModalOpenState } onClose={ onCloseUnfilteredModal } />\n\t\t\t<ControlActions>\n\t\t\t\t<StyledCard variant=\"outlined\">\n\t\t\t\t\t<StyledCardMediaContainer>\n\t\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t\t<CircularProgress role=\"progressbar\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<CardMedia\n\t\t\t\t\t\t\t\tcomponent=\"img\"\n\t\t\t\t\t\t\t\timage={ src }\n\t\t\t\t\t\t\t\talt={ __( 'Preview SVG', 'elementor' ) }\n\t\t\t\t\t\t\t\tsx={ { maxHeight: '140px', width: '50px' } }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</StyledCardMediaContainer>\n\t\t\t\t\t<CardOverlay\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba( 0, 0, 0, 0.75 )',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_BROWSE ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Select SVG', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_UPLOAD ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</CardOverlay>\n\t\t\t\t</StyledCard>\n\t\t\t</ControlActions>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useCurrentUserCapabilities } from '@elementor/editor-current-user';\nimport {\n\tButton,\n\tCircularProgress,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogHeader,\n\tDialogTitle,\n\tDivider,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useUpdateUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\ntype EnableUnfilteredModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n};\n\ntype LocalModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n\tisPending?: boolean;\n\tisError?: boolean;\n\thandleEnable: () => void;\n};\n\nconst ADMIN_TITLE_TEXT = __( 'Enable Unfiltered Uploads', 'elementor' );\nconst ADMIN_CONTENT_TEXT = __(\n\t'Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.',\n\t'elementor'\n);\nconst NON_ADMIN_TITLE_TEXT = __( \"Sorry, you can't upload that file yet\", 'elementor' );\nconst NON_ADMIN_CONTENT_TEXT = __(\n\t'This is because this file type may pose a security risk. To upload them anyway, ask the site administrator to enable unfiltered file uploads.',\n\t'elementor'\n);\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT1 = __( 'Failed to enable unfiltered files upload.', 'elementor' );\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT2 = __(\n\t'You can try again, if the problem persists, please contact support.',\n\t'elementor'\n);\n\nconst WAIT_FOR_CLOSE_TIMEOUT_MS = 300;\n\nexport const EnableUnfilteredModal = ( props: EnableUnfilteredModalProps ) => {\n\tconst { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();\n\tconst { canUser } = useCurrentUserCapabilities();\n\tconst [ isError, setIsError ] = useState( false );\n\tconst canManageOptions = canUser( 'manage_options' );\n\n\tconst onClose = ( enabled: boolean ) => {\n\t\tprops.onClose( enabled );\n\t\tsetTimeout( () => setIsError( false ), WAIT_FOR_CLOSE_TIMEOUT_MS );\n\t};\n\n\tconst handleEnable = async () => {\n\t\ttry {\n\t\t\tconst response = await mutateAsync( { allowUnfilteredFilesUpload: true } );\n\t\t\tif ( response?.data?.success === false ) {\n\t\t\t\tsetIsError( true );\n\t\t\t} else {\n\t\t\t\tprops.onClose( true );\n\t\t\t}\n\t\t} catch {\n\t\t\tsetIsError( true );\n\t\t}\n\t};\n\n\tconst dialogProps = { ...props, isPending, handleEnable, isError, onClose };\n\n\treturn canManageOptions ? <AdminDialog { ...dialogProps } /> : <NonAdminDialog { ...dialogProps } />;\n};\n\nconst AdminDialog = ( { open, onClose, handleEnable, isPending, isError }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>\n\t\t\t\t{ isError ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ADMIN_FAILED_CONTENT_TEXT_PT1 } <br /> { ADMIN_FAILED_CONTENT_TEXT_PT2 }\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tADMIN_CONTENT_TEXT\n\t\t\t\t) }\n\t\t\t</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } color=\"secondary\" onClick={ () => onClose( false ) }>\n\t\t\t\t{ __( 'Cancel', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tsize={ 'medium' }\n\t\t\t\tonClick={ () => handleEnable() }\n\t\t\t\tvariant=\"contained\"\n\t\t\t\tcolor=\"primary\"\n\t\t\t\tdisabled={ isPending }\n\t\t\t>\n\t\t\t\t{ isPending ? <CircularProgress size={ 24 } /> : __( 'Enable', 'elementor' ) }\n\t\t\t</Button>\n\t\t</DialogActions>\n\t</Dialog>\n);\n\nconst NonAdminDialog = ( { open, onClose }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ NON_ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>{ NON_ADMIN_CONTENT_TEXT }</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } onClick={ () => onClose( false ) } variant=\"contained\" color=\"primary\">\n\t\t\t\t{ __( 'Got it', 'elementor' ) }\n\t\t\t</Button>\n\t\t</DialogActions>\n\t</Dialog>\n);\n","import * as React from 'react';\nimport { backgroundPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\n\tconst colorLabel = __( 'Color', 'elementor' );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind=\"background-overlay\">\n\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind=\"color\">\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel>{ colorLabel }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ColorControl />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\tcolorPropTypeUtil,\n\ttype PropKey,\n} from '@elementor/editor-props';\nimport { Box, CardMedia, styled, Tab, TabPanel, Tabs, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { PopoverContent } from '../../../components/popover-content';\nimport { AddItemAction, Header, ItemsContainer, UnstableRepeater } from '../../../components/unstable-repeater';\nimport { DisableItemAction } from '../../../components/unstable-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../../components/unstable-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../../components/unstable-repeater/actions/remove-item-action';\nimport { Item } from '../../../components/unstable-repeater/items/item';\nimport { createControl } from '../../../create-control';\nimport { env } from '../../../env';\nimport { ColorControl } from '../../color-control';\nimport { ImageControl } from '../../image-control';\nimport {\n\tBackgroundGradientColorControl,\n\ttype ColorStop,\n\tinitialBackgroundGradientOverlay,\n} from '../background-gradient-color-control';\nimport { BackgroundImageOverlayAttachment } from './background-image-overlay/background-image-overlay-attachment';\nimport { BackgroundImageOverlayPosition } from './background-image-overlay/background-image-overlay-position';\nimport { BackgroundImageOverlayRepeat } from './background-image-overlay/background-image-overlay-repeat';\nimport { BackgroundImageOverlaySize } from './background-image-overlay/background-image-overlay-size';\nimport { type BackgroundImageOverlay } from './types';\nimport { useBackgroundTabsHistory } from './use-background-tabs-history';\n\nconst DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR = '#00000033';\n\nexport const initialBackgroundColorOverlay: BackgroundOverlayItemPropValue = backgroundColorOverlayPropTypeUtil.create(\n\t{\n\t\tcolor: colorPropTypeUtil.create( DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR ),\n\t}\n);\n\nexport const getInitialBackgroundOverlay = (): BackgroundOverlayItemPropValue => ( {\n\t$$type: 'background-image-overlay',\n\tvalue: {\n\t\timage: {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: {\n\t\t\t\t\t$$type: 'image-src',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\turl: {\n\t\t\t\t\t\t\t$$type: 'url',\n\t\t\t\t\t\t\tvalue: env.background_placeholder_image,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t\tvalue: 'large',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst backgroundResolutionOptions = [\n\t{ label: __( 'Thumbnail - 150 x 150', 'elementor' ), value: 'thumbnail' },\n\t{ label: __( 'Medium - 300 x 300', 'elementor' ), value: 'medium' },\n\t{ label: __( 'Large 1024 x 1024', 'elementor' ), value: 'large' },\n\t{ label: __( 'Full', 'elementor' ), value: 'full' },\n];\n\nexport const BackgroundOverlayRepeaterControl = createControl( () => {\n\tconst { propType, value: backgroundValues, setValue } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ backgroundValues } setValue={ setValue }>\n\t\t\t<UnstableRepeater initial={ getInitialBackgroundOverlay() } propTypeUtil={ backgroundOverlayPropTypeUtil }>\n\t\t\t\t<Header label={ __( 'Overlay', 'elementor' ) }>\n\t\t\t\t\t<AddItemAction newItemIndex={ 0 } />\n\t\t\t\t</Header>\n\t\t\t\t<ItemsContainer itemTemplate={ <Item Icon={ ItemIcon } Label={ ItemLabel } Content={ ItemContent } /> }>\n\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t</ItemsContainer>\n\t\t\t</UnstableRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nexport const ItemContent = ( { anchorEl = null, bind }: { anchorEl?: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content anchorEl={ anchorEl } />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory( {\n\t\timage: getInitialBackgroundOverlay().value,\n\t\tcolor: initialBackgroundColorOverlay.value,\n\t\tgradient: initialBackgroundGradientOverlay.value,\n\t} );\n\n\treturn (\n\t\t<Box sx={ { width: '100%' } }>\n\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t<Tabs\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\taria-label={ __( 'Background Overlay', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<Tab label={ __( 'Image', 'elementor' ) } { ...getTabProps( 'image' ) } />\n\t\t\t\t\t<Tab label={ __( 'Gradient', 'elementor' ) } { ...getTabProps( 'gradient' ) } />\n\t\t\t\t\t<Tab label={ __( 'Color', 'elementor' ) } { ...getTabProps( 'color' ) } />\n\t\t\t\t</Tabs>\n\t\t\t</Box>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'image' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ImageOverlayContent />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'gradient' ) }>\n\t\t\t\t<BackgroundGradientColorControl />\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'color' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ColorOverlayContent anchorEl={ anchorEl } />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemIconImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemIconColor value={ value } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemIconGradient value={ value } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst extractColorFrom = ( prop: BackgroundOverlayItemPropValue ) => {\n\tif ( prop?.value?.color?.value ) {\n\t\treturn prop.value.color.value;\n\t}\n\n\treturn '';\n};\n\nconst ItemIconColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ color } />;\n};\n\nconst ItemIconImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn (\n\t\t<CardMedia\n\t\t\timage={ imageUrl }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\theight: '1em',\n\t\t\t\twidth: '1em',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\t\t\t\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nconst ItemIconGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst gradient = getGradientValue( value );\n\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ gradient } />;\n};\n\nconst ItemLabel = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemLabelImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemLabelColor value={ value } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemLabelGradient value={ value } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst ItemLabelColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <span>{ color }</span>;\n};\n\nconst ItemLabelImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn <span>{ imageTitle }</span>;\n};\n\nconst ItemLabelGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tif ( value.value.type.value === 'linear' ) {\n\t\treturn <span>{ __( 'Linear Gradient', 'elementor' ) }</span>;\n\t}\n\n\treturn <span>{ __( 'Radial Gradient', 'elementor' ) }</span>;\n};\n\nconst ColorOverlayContent = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst propContext = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'color' }>\n\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst ImageOverlayContent = () => {\n\tconst propContext = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'image' }>\n\t\t\t\t<ImageControl sizes={ backgroundResolutionOptions } />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'position' }>\n\t\t\t\t<BackgroundImageOverlayPosition />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'repeat' }>\n\t\t\t\t<BackgroundImageOverlayRepeat />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t<BackgroundImageOverlaySize />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'attachment' }>\n\t\t\t\t<BackgroundImageOverlayAttachment />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst useImage = ( image: BackgroundImageOverlay ) => {\n\tlet imageTitle,\n\t\timageUrl: string | null = null;\n\n\tconst imageSrc = image?.value.image.value?.src.value;\n\tconst { data: attachment } = useWpMediaAttachment( imageSrc.id?.value || null );\n\n\tif ( imageSrc.id ) {\n\t\tconst imageFileTypeExtension = getFileExtensionFromFilename( attachment?.filename );\n\t\timageTitle = `${ attachment?.title }${ imageFileTypeExtension }` || null;\n\t\timageUrl = attachment?.url || null;\n\t} else if ( imageSrc.url ) {\n\t\timageUrl = imageSrc.url.value;\n\t\timageTitle = imageUrl?.substring( imageUrl.lastIndexOf( '/' ) + 1 ) || null;\n\t}\n\n\treturn { imageTitle, imageUrl };\n};\n\nconst getFileExtensionFromFilename = ( filename?: string ) => {\n\tif ( ! filename ) {\n\t\treturn '';\n\t}\n\n\t// get the substring after the last . in the filename\n\tconst extension = filename.substring( filename.lastIndexOf( '.' ) + 1 );\n\n\treturn `.${ extension }`;\n};\n\nconst getGradientValue = ( value: BackgroundOverlayItemPropValue ) => {\n\tconst gradient = value.value;\n\n\tconst stops = gradient.stops.value\n\t\t?.map( ( { value: { color, offset } }: ColorStop ) => `${ color.value } ${ offset.value ?? 0 }%` )\n\t\t?.join( ',' );\n\n\tif ( gradient.type.value === 'linear' ) {\n\t\treturn `linear-gradient(${ gradient.angle.value }deg, ${ stops })`;\n\t}\n\n\treturn `radial-gradient(circle at ${ gradient.positions.value }, ${ stops })`;\n};\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const AddItemAction = ( {\n\tdisabled = false,\n\ttooltip = false,\n\ttooltipContent = null,\n\tnewItemIndex,\n}: {\n\tdisabled?: boolean;\n\ttooltip?: boolean;\n\ttooltipContent?: React.ReactNode;\n\tnewItemIndex?: number;\n} ) => {\n\tconst { addItem } = useRepeaterContext();\n\tconst shouldShowTooltip = tooltip && tooltipContent;\n\n\tconst onClick = () => addItem( { index: newItemIndex } );\n\n\treturn (\n\t\t<ConditionalToolTip content={ tooltipContent } shouldShowTooltip={ !! shouldShowTooltip }>\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\tsx={ { ml: 'auto' } }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonClick={ onClick }\n\t\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</ConditionalToolTip>\n\t);\n};\n\nconst ConditionalToolTip = ( {\n\tchildren,\n\tcontent,\n\tshouldShowTooltip,\n}: React.PropsWithChildren< {\n\tcontent: React.ReactNode;\n\tshouldShowTooltip: boolean;\n} > ) => {\n\treturn shouldShowTooltip ? <Tooltip title={ content }>{ children }</Tooltip> : children;\n};\n","import * as React from 'react';\nimport { createContext, useState } from 'react';\nimport { type PropTypeUtil, type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from '../../../bound-prop-context/use-bound-prop';\nimport { useSyncExternalState } from '../../../hooks/use-sync-external-state';\nimport { type Item } from '../types';\n\ntype SetterFn< T extends PropValue > = ( prevItems: T[] ) => T[];\n\ntype AddItem< T > = { item?: T; index?: number };\n\ntype RepeaterContextType< T extends PropValue > = {\n\tisOpen: boolean;\n\topenItem: number;\n\tsetOpenItem: ( key: number ) => void;\n\titems: Item< T >[];\n\tsetItems: ( items: T[] | SetterFn< T > ) => void;\n\tinitial: T;\n\tuniqueKeys: number[];\n\tsetUniqueKeys: ( keys: number[] ) => void;\n\tisSortable: boolean;\n\tgenerateNextKey: ( source: number[] ) => number;\n\taddItem: ( config?: AddItem< T > ) => void;\n\tupdateItem: ( item: T, index: number ) => void;\n\tremoveItem: ( index: number ) => void;\n\tsortItemsByKeys: ( newKeysOrder: number[] ) => void;\n};\n\nconst RepeaterContext = createContext< RepeaterContextType< PropValue > | null >( null );\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const useRepeaterContext = () => {\n\tconst context = React.useContext( RepeaterContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeaterContext must be used within a RepeaterContextProvider' );\n\t}\n\n\treturn {\n\t\tisOpen: context.isOpen,\n\t\topenItem: context.openItem,\n\t\tsetOpenItem: context.setOpenItem,\n\t\titems: context.items,\n\t\tsetItems: context.setItems,\n\t\tuniqueKeys: context.uniqueKeys,\n\t\tsetUniqueKeys: context.setUniqueKeys,\n\t\tinitial: context.initial,\n\t\tisSortable: context.isSortable,\n\t\tgenerateNextKey: context.generateNextKey,\n\t\tsortItemsByKeys: context.sortItemsByKeys,\n\t\taddItem: context.addItem,\n\t\tupdateItem: context.updateItem,\n\t\tremoveItem: context.removeItem,\n\t};\n};\n\nexport const RepeaterContextProvider = < T extends PropValue = PropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisSortable = true,\n}: React.PropsWithChildren< { initial: T; propTypeUtil: PropTypeUtil< string, T[] >; isSortable?: boolean } > ) => {\n\tconst { value: repeaterValues, setValue: setRepeaterValues } = useBoundProp( propTypeUtil );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\tfallback: () => [] as T[],\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ openItem, setOpenItem ] = useState( EMPTY_OPEN_ITEM );\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( items?.map( ( _, index ) => index ) ?? [] );\n\n\tconst isOpen = openItem !== EMPTY_OPEN_ITEM;\n\n\tconst sortItemsByKeys = ( keysOrder: number[] ) => {\n\t\tsetUniqueKeys( keysOrder );\n\t\tsetItems( ( prevItems ) =>\n\t\t\tkeysOrder.map( ( key ) => {\n\t\t\t\tconst index = uniqueKeys.indexOf( key );\n\n\t\t\t\treturn prevItems[ index ];\n\t\t\t} )\n\t\t);\n\t};\n\n\tconst addItem = ( config?: AddItem< T > ) => {\n\t\tconst item = config?.item ?? initial;\n\t\tconst index = config?.index ?? items.length;\n\t\tconst newItems = [ ...items ];\n\n\t\tnewItems.splice( index, 0, item );\n\t\tsetItems( newItems );\n\t\tsetUniqueKeys( newItems.map( ( _, i ) => i ) );\n\n\t\tsetOpenItem( index );\n\t};\n\n\tconst removeItem = ( index: number ) => {\n\t\tsetItems( ( prevItems ) => prevItems.filter( ( _, pos ) => pos !== index ) );\n\t\tsetUniqueKeys( ( prevKeys ) => prevKeys.slice( 0, -1 ) );\n\t};\n\n\tconst updateItem = ( updatedItem: T, index: number ) => {\n\t\tsetItems( ( prevItems ) => prevItems.map( ( item, pos ) => ( pos === index ? updatedItem : item ) ) );\n\t};\n\n\treturn (\n\t\t<RepeaterContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tisOpen,\n\t\t\t\topenItem,\n\t\t\t\tsetOpenItem,\n\t\t\t\titems: ( items ?? [] ) as Item< T >[],\n\t\t\t\tsetItems: setItems as ( items: PropValue[] | SetterFn< PropValue > ) => void,\n\t\t\t\tinitial,\n\t\t\t\tuniqueKeys,\n\t\t\t\tsetUniqueKeys,\n\t\t\t\tisSortable,\n\t\t\t\tgenerateNextKey,\n\t\t\t\tsortItemsByKeys,\n\t\t\t\taddItem: addItem as ( config?: AddItem< PropValue > ) => void,\n\t\t\t\tupdateItem: updateItem as ( item: PropValue, index: number ) => void,\n\t\t\t\tremoveItem,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</RepeaterContext.Provider>\n\t);\n};\n\nconst generateNextKey = ( source: number[] ) => {\n\treturn 1 + Math.max( 0, ...source );\n};\n","import * as React from 'react';\nimport { Stack, Typography } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context/use-bound-prop';\nimport { ControlAdornments } from '../../../control-adornments/control-adornments';\nimport { SlotChildren } from '../../../control-replacements';\nimport { AddItemAction } from '../actions/add-item-action';\nimport { RepeaterHeaderActionsSlot } from '../locations';\n\nexport const Header = ( { label, children }: React.PropsWithChildren< { label: string } > ) => {\n\tconst { value } = useBoundProp();\n\n\treturn (\n\t\t<Stack direction=\"row\" justifyContent=\"start\" alignItems=\"center\" gap={ 1 } sx={ { marginInlineEnd: -0.75 } }>\n\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t{ label }\n\t\t\t</Typography>\n\t\t\t<RepeaterHeaderActionsSlot value={ value } />\n\t\t\t<SlotChildren whitelist={ [ AddItemAction ] as React.FC[] }>{ children }</SlotChildren>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { SortableItem, SortableProvider } from '../../sortable';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { type ItemProps } from '../types';\n\nexport const ItemsContainer = < T extends PropValue >( {\n\titemTemplate,\n\tchildren,\n}: React.PropsWithChildren< { itemTemplate: React.ReactNode } > ) => {\n\tconst { items, uniqueKeys, openItem, isSortable, sortItemsByKeys } = useRepeaterContext();\n\n\tif ( ! itemTemplate ) {\n\t\treturn null;\n\t}\n\n\tconst onChangeOrder = ( newOrder: number[] ) => {\n\t\tsortItemsByKeys( newOrder );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SortableProvider value={ uniqueKeys } onChange={ onChangeOrder }>\n\t\t\t\t{ uniqueKeys?.map( ( key: number, index: number ) => {\n\t\t\t\t\tconst value = items?.[ index ] as T;\n\n\t\t\t\t\tif ( ! value ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t{ React.isValidElement< React.PropsWithChildren< ItemProps< T > > >( itemTemplate )\n\t\t\t\t\t\t\t\t? React.cloneElement( itemTemplate, {\n\t\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t\t\topenOnMount: key === openItem,\n\t\t\t\t\t\t\t\t\t\tchildren,\n\t\t\t\t\t\t\t\t } )\n\t\t\t\t\t\t\t\t: null }\n\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</SortableProvider>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\nimport { bindTrigger, UnstableTag } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { SlotChildren } from '../../../control-replacements';\nimport { DisableItemAction } from '../actions/disable-item-action';\nimport { DuplicateItemAction } from '../actions/duplicate-item-action';\nimport { RemoveItemAction } from '../actions/remove-item-action';\nimport { RepeaterItemActionsSlot, RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../locations';\nimport { type ItemProps } from '../types';\nimport { EditItemPopover } from './edit-item-popover';\nimport { usePopover } from './use-popover';\n\ntype AnchorEl = HTMLElement | null;\n\nexport const Item = < T extends PropValue >( {\n\tLabel,\n\tIcon,\n\tContent,\n\tkey,\n\tvalue,\n\tindex,\n\topenOnMount,\n\tchildren,\n}: React.PropsWithChildren< ItemProps< T > > ) => {\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\n\tconst { popoverState, popoverProps, ref, setRef } = usePopover( openOnMount as boolean, () => {} );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tkey={ key }\n\t\t\t\tdisabled={ false }\n\t\t\t\tlabel={\n\t\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t\t<Label value={ value as T } />\n\t\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t\t}\n\t\t\t\tshowActionsOnHover\n\t\t\t\tfullWidth\n\t\t\t\tref={ setRef }\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={\n\t\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t\t<Icon value={ value as T } />\n\t\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t\t}\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<RepeaterItemActionsSlot index={ index ?? -1 } />\n\n\t\t\t\t\t\t<SlotChildren\n\t\t\t\t\t\t\twhitelist={ [ DuplicateItemAction, DisableItemAction, RemoveItemAction ] as React.FC[] }\n\t\t\t\t\t\t\tprops={ { index } }\n\t\t\t\t\t\t\tsorted\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</SlotChildren>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<EditItemPopover anchorRef={ ref } setAnchorEl={ setAnchorEl } popoverProps={ popoverProps }>\n\t\t\t\t<Content anchorEl={ anchorEl } bind={ String( index ) } value={ value as T } />\n\t\t\t</EditItemPopover>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\nconst SIZE = 'tiny';\n\nexport const DisableItemAction = ( { index = -1 }: { index?: number } ) => {\n\tconst { items, updateItem } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst propDisabled = items[ index ]?.disabled ?? false;\n\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\n\tconst onClick = () => {\n\t\tconst self = structuredClone( items[ index ] );\n\n\t\tself.disabled = ! self.disabled;\n\n\t\tif ( ! self.disabled ) {\n\t\t\tdelete self.disabled;\n\t\t}\n\n\t\tupdateItem( self, index );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ toggleLabel }>\n\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { CopyIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const DuplicateItemAction = ( { index = -1 }: { index?: number } ) => {\n\tconst { items, addItem } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\n\tconst onClick = () => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\n\t\taddItem( { item: newItem, index: index + 1 } );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ duplicateLabel }>\n\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { XIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const RemoveItemAction = ( { index = -1 }: { index?: number } ) => {\n\tconst { removeItem } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\tconst onClick = () => removeItem( index );\n\treturn (\n\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ removeLabel }>\n\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { Box, Popover, type PopoverProps } from '@elementor/ui';\n\ntype AddItemPopoverProps = {\n\tanchorRef: HTMLElement | null;\n\tsetAnchorEl: ( el: HTMLElement | null ) => void;\n\tpopoverProps: Partial< PopoverProps >;\n\tchildren?: React.ReactNode;\n};\n\nexport const EditItemPopover = ( { children, anchorRef, setAnchorEl, popoverProps }: AddItemPopoverProps ) => {\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tref: setAnchorEl,\n\t\t\t\t\tsx: { mt: 0.5, width: anchorRef?.offsetWidth },\n\t\t\t\t},\n\t\t\t} }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tanchorEl={ anchorRef }\n\t\t\t{ ...popoverProps }\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Popover>\n\t);\n};\n","import { useEffect, useState } from 'react';\nimport { bindPopover, type PopoverProps, usePopupState } from '@elementor/ui';\n\nexport const usePopover = ( openOnMount: boolean, onOpen: () => void ) => {\n\tconst [ ref, setRef ] = useState< HTMLElement | null >( null );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst popoverProps: Partial< PopoverProps > = bindPopover( popoverState );\n\n\tuseEffect( () => {\n\t\tif ( openOnMount && ref ) {\n\t\t\tpopoverState.open( ref );\n\t\t\tonOpen?.();\n\t\t}\n\t\t// eslint-disable-next-line react-compiler/react-compiler\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ ref ] );\n\n\treturn {\n\t\tpopoverState,\n\t\tref,\n\t\tsetRef,\n\t\tpopoverProps,\n\t};\n};\n","import * as React from 'react';\nimport { type PropTypeUtil, type PropValue } from '@elementor/editor-props';\n\nimport { SlotChildren } from '../../control-replacements';\nimport { SectionContent } from '../section-content';\nimport { RepeaterContextProvider } from './context/repeater-context';\nimport { Header } from './header/header';\nimport { ItemsContainer } from './items/items-container';\n\nexport const UnstableRepeater = < T extends PropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n}: React.PropsWithChildren< { initial: T; propTypeUtil: PropTypeUtil< string, T[] > } > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<RepeaterContextProvider initial={ initial } propTypeUtil={ propTypeUtil }>\n\t\t\t\t<SlotChildren whitelist={ [ Header, ItemsContainer ] as React.FC[] } sorted>\n\t\t\t\t\t{ children }\n\t\t\t\t</SlotChildren>\n\t\t\t</RepeaterContextProvider>\n\t\t</SectionContent>\n\t);\n};\n","import { parseEnv } from '@elementor/env';\n\nexport const { env } = parseEnv< {\n\tbackground_placeholder_image: string;\n} >( '@elementor/editor-controls' );\n","import * as React from 'react';\nimport {\n\tbackgroundGradientOverlayPropTypeUtil,\n\ttype BackgroundGradientOverlayPropValue,\n\ttype BackgroundOverlayItemPropValue,\n\tcolorPropTypeUtil,\n\ttype ColorPropValue,\n\tcolorStopPropTypeUtil,\n\tgradientColorStopPropTypeUtil,\n\tnumberPropTypeUtil,\n\ttype NumberPropValue,\n\tstringPropTypeUtil,\n\ttype TransformablePropValue,\n} from '@elementor/editor-props';\nimport { UnstableGradientBox } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport ControlActions from '../../control-actions/control-actions';\nimport { createControl } from '../../create-control';\n\nexport type ColorStop = TransformablePropValue<\n\t'color-stop',\n\t{\n\t\tcolor: ColorPropValue;\n\t\toffset: NumberPropValue;\n\t}\n>;\n\nexport const BackgroundGradientColorControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst handleChange = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => {\n\t\tconst transformedValue = createTransformableValue( newValue );\n\n\t\tif ( transformedValue.positions ) {\n\t\t\ttransformedValue.positions = stringPropTypeUtil.create( newValue.positions.join( ' ' ) );\n\t\t}\n\n\t\tsetValue( transformedValue );\n\t};\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst createTransformableValue = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => ( {\n\t\t...newValue,\n\t\ttype: stringPropTypeUtil.create( newValue.type ),\n\t\tangle: numberPropTypeUtil.create( newValue.angle ),\n\t\tstops: gradientColorStopPropTypeUtil.create(\n\t\t\tnewValue.stops.map( ( { color, offset }: { color: string; offset: number } ) =>\n\t\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\t\tcolor: colorPropTypeUtil.create( color ),\n\t\t\t\t\toffset: numberPropTypeUtil.create( offset ),\n\t\t\t\t} )\n\t\t\t)\n\t\t),\n\t} );\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst normalizeValue = () => {\n\t\tif ( ! value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { type, angle, stops, positions } = value;\n\n\t\treturn {\n\t\t\ttype: type.value,\n\t\t\tangle: angle.value,\n\t\t\tstops: stops.value.map( ( { value: { color, offset } }: ColorStop ) => ( {\n\t\t\t\tcolor: color.value,\n\t\t\t\toffset: offset.value,\n\t\t\t} ) ),\n\t\t\tpositions: positions?.value.split( ' ' ),\n\t\t};\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<UnstableGradientBox\n\t\t\t\tsx={ { width: 'auto', padding: 1.5 } }\n\t\t\t\tvalue={ normalizeValue() }\n\t\t\t\tonChange={ handleChange }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n\nexport const initialBackgroundGradientOverlay: BackgroundOverlayItemPropValue =\n\tbackgroundGradientOverlayPropTypeUtil.create( {\n\t\ttype: stringPropTypeUtil.create( 'linear' ),\n\t\tangle: numberPropTypeUtil.create( 180 ),\n\t\tstops: gradientColorStopPropTypeUtil.create( [\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(0,0,0)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 0 ),\n\t\t\t} ),\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(255,255,255)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 100 ),\n\t\t\t} ),\n\t\t] ),\n\t} );\n","import * as React from 'react';\nimport { PinIcon, PinnedOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Attachment = 'fixed' | 'scroll';\n\nconst attachmentControlOptions: ToggleButtonGroupItem< Attachment >[] = [\n\t{\n\t\tvalue: 'fixed',\n\t\tlabel: __( 'Fixed', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'scroll',\n\t\tlabel: __( 'Scroll', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinnedOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayAttachment = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Attachment', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleControl options={ attachmentControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { SizeControl } from '../../../size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst backgroundPositionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const BackgroundImageOverlayPosition = () => {\n\tconst backgroundImageOffsetContext = useBoundProp( backgroundImagePositionOffsetPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageOffsetContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tbackgroundImageOffsetContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( backgroundImageOffsetContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ backgroundPositionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageOffsetContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Repeaters = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';\n\nconst repeatControlOptions: ToggleButtonGroupItem< Repeaters >[] = [\n\t{\n\t\tvalue: 'repeat',\n\t\tlabel: __( 'Repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <GridDotsIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-x',\n\t\tlabel: __( 'Repeat-x', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsHorizontalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-y',\n\t\tlabel: __( 'Repeat-y', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsVerticalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'no-repeat',\n\t\tlabel: __( 'No-repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <XIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayRepeat = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Repeat', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t<ToggleControl options={ repeatControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tArrowBarBothIcon,\n\tArrowsMaximizeIcon,\n\tArrowsMoveHorizontalIcon,\n\tArrowsMoveVerticalIcon,\n\tLetterAIcon,\n\tPencilIcon,\n} from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport {\n\tControlToggleButtonGroup,\n\ttype ToggleButtonGroupItem,\n} from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { SizeControl } from '../../../size-control';\n\ntype Sizes = 'auto' | 'cover' | 'contain' | 'custom';\n\nconst sizeControlOptions: ToggleButtonGroupItem< Sizes >[] = [\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterAIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'cover',\n\t\tlabel: __( 'Cover', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowsMaximizeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: __( 'Contain', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBarBothIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'custom',\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlaySize = () => {\n\tconst backgroundImageScaleContext = useBoundProp( backgroundImageSizeScalePropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageScaleContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handleSizeChange = ( size: Sizes | null ) => {\n\t\tif ( size === 'custom' ) {\n\t\t\tbackgroundImageScaleContext.setValue( { width: null, height: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( size );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Size', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\texclusive\n\t\t\t\t\t\t\titems={ sizeControlOptions }\n\t\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t( backgroundImageScaleContext.value ? 'custom' : stringPropContext.value ) as Sizes\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageScaleContext }>\n\t\t\t\t\t<Grid item xs={ 12 } ref={ rowRef }>\n\t\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'width' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveHorizontalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'height' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveVerticalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundGradientOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type BackgroundImageOverlay } from './types';\n\ntype OverlayType = 'image' | 'gradient' | 'color';\n\ntype InitialBackgroundValues = {\n\tcolor: BackgroundOverlayItemPropValue[ 'value' ];\n\timage: BackgroundImageOverlay[ 'value' ];\n\tgradient: BackgroundOverlayItemPropValue[ 'value' ];\n};\n\nexport const useBackgroundTabsHistory = ( {\n\tcolor: initialBackgroundColorOverlay,\n\timage: initialBackgroundImageOverlay,\n\tgradient: initialBackgroundGradientOverlay,\n}: InitialBackgroundValues ) => {\n\tconst { value: imageValue, setValue: setImageValue } = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\tconst { value: colorValue, setValue: setColorValue } = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\tconst { value: gradientValue, setValue: setGradientValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst getCurrentOverlayType = (): OverlayType => {\n\t\tif ( colorValue ) {\n\t\t\treturn 'color';\n\t\t}\n\n\t\tif ( gradientValue ) {\n\t\t\treturn 'gradient';\n\t\t}\n\n\t\treturn 'image';\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< OverlayType >( getCurrentOverlayType() );\n\n\tconst valuesHistory = useRef< InitialBackgroundValues >( {\n\t\timage: initialBackgroundImageOverlay,\n\t\tcolor: initialBackgroundColorOverlay,\n\t\tgradient: initialBackgroundGradientOverlay,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialBackgroundValues, value: BackgroundOverlayItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: OverlayType ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase 'image':\n\t\t\t\tsetImageValue( valuesHistory.current.image );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'gradient':\n\t\t\t\tsetGradientValue( valuesHistory.current.gradient );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'color':\n\t\t\t\tsetColorValue( valuesHistory.current.color );\n\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\treturn {\n\t\tgetTabProps,\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { createArrayPropUtils, type PropKey } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { Repeater } from '../components/repeater';\nimport { createControl } from '../create-control';\nimport {\n\ttype ChildControlConfig,\n\tRepeatableControlContext,\n\tuseRepeatableControlContext,\n} from '../hooks/use-repeatable-control-context';\n\ntype RepeatableControlProps = {\n\tlabel: string;\n\trepeaterLabel: string;\n\tchildControlConfig: ChildControlConfig;\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tinitialValues?: object;\n\tpatternLabel?: string;\n\tplaceholder?: string;\n\tpropKey?: string;\n};\n\nconst PLACEHOLDER_REGEX = /\\$\\{([^}]+)\\}/g;\n\nexport const RepeatableControl = createControl(\n\t( {\n\t\trepeaterLabel,\n\t\tchildControlConfig,\n\t\tshowDuplicate,\n\t\tshowToggle,\n\t\tinitialValues,\n\t\tpatternLabel,\n\t\tplaceholder,\n\t\tpropKey,\n\t}: RepeatableControlProps ) => {\n\t\tconst { propTypeUtil: childPropTypeUtil } = childControlConfig;\n\n\t\tif ( ! childPropTypeUtil ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst childArrayPropTypeUtil = useMemo(\n\t\t\t() => createArrayPropUtils( childPropTypeUtil.key, childPropTypeUtil.schema, propKey ),\n\t\t\t[ childPropTypeUtil.key, childPropTypeUtil.schema, propKey ]\n\t\t);\n\n\t\tconst contextValue = useMemo(\n\t\t\t() => ( {\n\t\t\t\t...childControlConfig,\n\t\t\t\tplaceholder: placeholder || '',\n\t\t\t\tpatternLabel: patternLabel || '',\n\t\t\t} ),\n\t\t\t[ childControlConfig, placeholder, patternLabel ]\n\t\t);\n\n\t\tconst { propType, value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\n\t\treturn (\n\t\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t\t<RepeatableControlContext.Provider value={ contextValue }>\n\t\t\t\t\t<Repeater\n\t\t\t\t\t\topenOnAdd\n\t\t\t\t\t\tvalues={ value ?? [] }\n\t\t\t\t\t\tsetValues={ setValue }\n\t\t\t\t\t\tlabel={ repeaterLabel }\n\t\t\t\t\t\tisSortable={ false }\n\t\t\t\t\t\titemSettings={ {\n\t\t\t\t\t\t\tIcon: ItemIcon,\n\t\t\t\t\t\t\tLabel: ItemLabel,\n\t\t\t\t\t\t\tContent: ItemContent,\n\t\t\t\t\t\t\tinitialValues: childPropTypeUtil.create( initialValues || null ),\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t/>\n\t\t\t\t</RepeatableControlContext.Provider>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\nconst ItemContent = ( { bind }: { bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content />\n\t\t</PropKeyProvider>\n\t);\n};\n\n// TODO: Configurable icon probably can be somehow part of the injected control and bubbled up to the repeater\nconst ItemIcon = () => <></>;\n\nconst Content = () => {\n\tconst { component: ChildControl, props = {} } = useRepeatableControlContext();\n\n\treturn (\n\t\t<PopoverContent p={ 1.5 }>\n\t\t\t<PopoverGridContainer>\n\t\t\t\t<ChildControl { ...props } />\n\t\t\t</PopoverGridContainer>\n\t\t</PopoverContent>\n\t);\n};\n\nconst interpolate = ( template: string, data: Record< string, unknown > ) => {\n\tif ( ! data ) {\n\t\treturn template;\n\t}\n\n\treturn template.replace( PLACEHOLDER_REGEX, ( _, path ): string => {\n\t\tconst value = getNestedValue( data, path );\n\n\t\tif ( typeof value === 'object' && value !== null && ! Array.isArray( value ) ) {\n\t\t\tif ( value.name ) {\n\t\t\t\treturn value.name as string;\n\t\t\t}\n\n\t\t\treturn JSON.stringify( value );\n\t\t}\n\n\t\tif ( Array.isArray( value ) ) {\n\t\t\treturn value.join( ', ' );\n\t\t}\n\n\t\treturn String( value ?? '' );\n\t} );\n};\n\nconst getNestedValue = ( obj: Record< string, unknown >, path: string ) => {\n\treturn path.split( '.' ).reduce( ( current: Record< string, unknown >, key ) => {\n\t\tif ( current && typeof current === 'object' ) {\n\t\t\treturn current[ key ] as Record< string, unknown >;\n\t\t}\n\t\treturn {};\n\t}, obj );\n};\n\nconst isEmptyValue = ( val: unknown ) => {\n\tif ( typeof val === 'string' ) {\n\t\treturn val.trim() === '';\n\t}\n\n\tif ( Number.isNaN( val ) ) {\n\t\treturn true;\n\t}\n\n\tif ( Array.isArray( val ) ) {\n\t\treturn val.length === 0;\n\t}\n\n\tif ( typeof val === 'object' && val !== null ) {\n\t\treturn Object.keys( val ).length === 0;\n\t}\n\n\treturn false;\n};\n\nconst shouldShowPlaceholder = ( pattern: string, data: Record< string, unknown > ): boolean => {\n\tconst propertyPaths = getAllProperties( pattern );\n\n\tconst values = propertyPaths.map( ( path ) => getNestedValue( data, path ) );\n\n\tif ( values.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tif ( values.some( ( value ) => value === null || value === undefined ) ) {\n\t\treturn true;\n\t}\n\n\tif ( values.every( isEmptyValue ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nconst ItemLabel = ( { value }: { value: Record< string, unknown > } ) => {\n\tconst { placeholder, patternLabel } = useRepeatableControlContext();\n\tconst showPlaceholder = shouldShowPlaceholder( patternLabel, value );\n\tconst label = showPlaceholder ? placeholder : interpolate( patternLabel, value );\n\tconst color = showPlaceholder ? 'text.tertiary' : 'text.primary';\n\n\treturn (\n\t\t<Box component=\"span\" color={ color }>\n\t\t\t{ label }\n\t\t</Box>\n\t);\n};\n\nconst getAllProperties = ( pattern: string ) => {\n\tconst properties = pattern.match( PLACEHOLDER_REGEX )?.map( ( match ) => match.slice( 2, -1 ) ) || [];\n\n\treturn properties;\n};\n","import { createContext, useContext } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nexport type ChildControlConfig = {\n\tcomponent: React.ComponentType;\n\tprops?: Record< string, unknown >;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpropTypeUtil: PropTypeUtil< string, any >;\n\tlabel?: string;\n};\n\ntype RepeatableControlContextType = ChildControlConfig & {\n\tplaceholder: string;\n\tpatternLabel: string;\n};\n\nconst RepeatableControlContext = createContext< RepeatableControlContextType | undefined >( undefined );\n\nconst useRepeatableControlContext = () => {\n\tconst context = useContext( RepeatableControlContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeatableControlContext must be used within RepeatableControl' );\n\t}\n\n\treturn context;\n};\n\nexport { RepeatableControlContext, useRepeatableControlContext };\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport {\n\ttype CreateOptions,\n\tisTransformable,\n\tkeyValuePropTypeUtil,\n\ttype PropKey,\n\ttype Props,\n\tstringPropTypeUtil,\n} from '@elementor/editor-props';\nimport { FormHelperText, FormLabel, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\nimport { TextControl } from './text-control';\n\ntype KeyValueControlProps = {\n\tkeyName?: string;\n\tvalueName?: string;\n\tregexKey?: string;\n\tregexValue?: string;\n\tvalidationErrorMessage?: string;\n};\n\nexport const KeyValueControl = createControl( ( props: KeyValueControlProps = {} ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( keyValuePropTypeUtil );\n\tconst [ keyError, setKeyError ] = useState< string >( '' );\n\tconst [ valueError, setValueError ] = useState< string >( '' );\n\n\tconst [ sessionState, setSessionState ] = useState( {\n\t\tkey: value?.key?.value || '',\n\t\tvalue: value?.value?.value || '',\n\t} );\n\n\tconst keyLabel = props.keyName || __( 'Key', 'elementor' );\n\tconst valueLabel = props.valueName || __( 'Value', 'elementor' );\n\n\tconst [ keyRegex, valueRegex, errMsg ] = useMemo< [ RegExp | undefined, RegExp | undefined, string ] >(\n\t\t() => [\n\t\t\tprops.regexKey ? new RegExp( props.regexKey ) : undefined,\n\t\t\tprops.regexValue ? new RegExp( props.regexValue ) : undefined,\n\t\t\tprops.validationErrorMessage || __( 'Invalid Format', 'elementor' ),\n\t\t],\n\t\t[ props.regexKey, props.regexValue, props.validationErrorMessage ]\n\t);\n\n\tconst validate = ( newValue: string, fieldType: string ): boolean => {\n\t\tif ( fieldType === 'key' && keyRegex ) {\n\t\t\tconst isValid = keyRegex.test( newValue );\n\t\t\tsetKeyError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t} else if ( fieldType === 'value' && valueRegex ) {\n\t\t\tconst isValid = valueRegex.test( newValue );\n\t\t\tsetValueError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst handleChange = ( newValue: Props, options?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tconst fieldType = meta?.bind;\n\n\t\tif ( ! fieldType ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newChangedValue = newValue[ fieldType ];\n\n\t\tif ( isTransformable( newChangedValue ) && newChangedValue.$$type === 'dynamic' ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst extractedValue = stringPropTypeUtil.extract( newChangedValue );\n\n\t\tsetSessionState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ fieldType ]: extractedValue,\n\t\t} ) );\n\n\t\tif ( extractedValue && validate( extractedValue, fieldType ) ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\t\t} else {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: {\n\t\t\t\t\tvalue: '',\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ handleChange }>\n\t\t\t<Grid container gap={ 1.5 }>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ keyLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'key' }>\n\t\t\t\t\t\t<TextControl inputValue={ sessionState.key } error={ !! keyError } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! keyError && <FormHelperText error>{ keyError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ valueLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'value' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ sessionState.value }\n\t\t\t\t\t\t\terror={ !! valueError }\n\t\t\t\t\t\t\tinputDisabled={ !! keyError }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! valueError && <FormHelperText error>{ valueError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport { positionPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SizeControl } from './size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst positionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const PositionControl = () => {\n\tconst positionContext = useBoundProp( positionPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! positionContext.value;\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tpositionContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Object position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( positionContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ positionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t{ isCustom && (\n\t\t\t\t<PropProvider { ...positionContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl startIcon={ <LetterXIcon fontSize={ 'tiny' } /> } />\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl startIcon={ <LetterYIcon fontSize={ 'tiny' } /> } />\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { transformPropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { Repeater } from '../../components/repeater';\nimport { createControl } from '../../create-control';\nimport { TransformContent } from './transform-content';\nimport { TransformIcon } from './transform-icon';\nimport { TransformLabel } from './transform-label';\nimport { initialTransformValue } from './types';\n\nexport const TransformRepeaterControl = createControl( () => {\n\tconst { propType, value: transformValues, setValue, disabled } = useBoundProp( transformPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ transformValues } setValue={ setValue }>\n\t\t\t<Repeater\n\t\t\t\topenOnAdd\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalues={ transformValues ?? [] }\n\t\t\t\tsetValues={ setValue }\n\t\t\t\tlabel={ __( 'Transform', 'elementor' ) }\n\t\t\t\tshowDuplicate={ false }\n\t\t\t\titemSettings={ {\n\t\t\t\t\tIcon: TransformIcon,\n\t\t\t\t\tLabel: TransformLabel,\n\t\t\t\t\tContent: TransformContent,\n\t\t\t\t\tinitialValues: initialTransformValue,\n\t\t\t\t} }\n\t\t\t/>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropKey } from '@elementor/editor-props';\nimport { Box, Tab, TabPanel, Tabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider } from '../../bound-prop-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { Move } from './functions/move';\nimport { Rotate } from './functions/rotate';\nimport { Scale } from './functions/scale';\nimport { Skew } from './functions/skew';\nimport {\n\tinitialRotateValue,\n\tinitialScaleValue,\n\tinitialSkewValue,\n\tinitialTransformValue,\n\tTransformFunctionKeys,\n} from './types';\nimport { useTransformTabsHistory } from './use-transform-tabs-history';\n\nexport const TransformContent = ( { bind }: { anchorEl?: HTMLElement | null; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<Content />\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Content = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTransformTabsHistory( {\n\t\tmove: initialTransformValue.value,\n\t\tscale: initialScaleValue.value,\n\t\trotate: initialRotateValue.value,\n\t\tskew: initialSkewValue.value,\n\t} );\n\n\treturn (\n\t\t<PopoverContent>\n\t\t\t<Box sx={ { width: '100%' } }>\n\t\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t\t<Tabs\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'& .MuiTab-root': {\n\t\t\t\t\t\t\t\tminWidth: '62px',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\taria-label={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tab label={ __( 'Move', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.move ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Scale', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.scale ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Rotate', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.rotate ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Skew', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.skew ) } />\n\t\t\t\t\t</Tabs>\n\t\t\t\t</Box>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.move ) }>\n\t\t\t\t\t<Move />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.scale ) }>\n\t\t\t\t\t<Scale />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.rotate ) }>\n\t\t\t\t\t<Rotate />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.skew ) }>\n\t\t\t\t\t<Skew />\n\t\t\t\t</TabPanel>\n\t\t\t</Box>\n\t\t</PopoverContent>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { moveTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { TransformFunctionKeys } from '../types';\nimport { AxisRow } from './axis-row';\n\nconst moveAxisControls: { label: string; bindValue: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Move X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Move Y', 'elementor' ),\n\t\tbindValue: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Move Z', 'elementor' ),\n\t\tbindValue: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Move = () => {\n\tconst context = useBoundProp( moveTransformPropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.move }>\n\t\t\t\t\t{ moveAxisControls.map( ( control ) => (\n\t\t\t\t\t\t<AxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import {\n\tnumberPropTypeUtil,\n\trotateTransformPropTypeUtil,\n\tscaleTransformPropTypeUtil,\n\tskewTransformPropTypeUtil,\n\ttype TransformItemPropValue,\n} from '@elementor/editor-props';\n\nexport type TransformFunction = 'transform-move' | 'transform-scale' | 'transform-rotate' | 'transform-skew';\n\nexport const TransformFunctionKeys: Record< string, TransformFunction > = {\n\tmove: 'transform-move',\n\tscale: 'transform-scale',\n\trotate: 'transform-rotate',\n\tskew: 'transform-skew',\n};\n\nexport const defaultValues = {\n\tmove: {\n\t\tsize: 0,\n\t\tunit: 'px',\n\t},\n\tscale: 1,\n\trotate: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n\tskew: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n};\n\nexport const initialTransformValue: TransformItemPropValue = {\n\t$$type: TransformFunctionKeys.move,\n\tvalue: {\n\t\tx: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\ty: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\tz: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t},\n};\n\nexport const initialScaleValue = scaleTransformPropTypeUtil.create( {\n\tx: numberPropTypeUtil.create( defaultValues.scale ),\n\ty: numberPropTypeUtil.create( defaultValues.scale ),\n\tz: numberPropTypeUtil.create( defaultValues.scale ),\n} );\n\nexport const initialRotateValue = rotateTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\tz: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n} );\n\nexport const initialSkewValue = skewTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n} );\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { type AngleUnit } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { SizeControl } from '../../size-control';\n\ntype TransformAxisRowProps = {\n\tlabel: string;\n\tbindValue: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tunits?: AngleUnit[];\n};\n\nexport const AxisRow = ( { label, bindValue, startIcon, anchorRef, units }: TransformAxisRowProps ) => {\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bindValue }>\n\t\t\t\t\t\t<SizeControl anchorRef={ anchorRef } startIcon={ startIcon } units={ units } variant=\"angle\" />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { rotateTransformPropTypeUtil } from '@elementor/editor-props';\nimport { Arrow360Icon, RotateClockwiseIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../types';\nimport { AxisRow } from './axis-row';\n\nconst rotateAxisControls: { label: string; bindValue: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Rotate X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <Arrow360Icon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Y', 'elementor' ),\n\t\tbindValue: 'y',\n\t\tstartIcon: <Arrow360Icon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Z', 'elementor' ),\n\t\tbindValue: 'z',\n\t\tstartIcon: <RotateClockwiseIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nconst rotateUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Rotate = () => {\n\tconst context = useBoundProp( rotateTransformPropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.rotate }>\n\t\t\t\t\t{ rotateAxisControls.map( ( control ) => (\n\t\t\t\t\t\t<AxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } units={ rotateUnits } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { scaleTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { TransformFunctionKeys } from '../types';\nimport { ScaleAxisRow } from './scale-axis-row';\n\nconst scaleAxisControls: { label: string; bindValue: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Scale X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Y', 'elementor' ),\n\t\tbindValue: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Z', 'elementor' ),\n\t\tbindValue: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Scale = () => {\n\tconst context = useBoundProp( scaleTransformPropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.scale }>\n\t\t\t\t\t{ scaleAxisControls.map( ( control ) => (\n\t\t\t\t\t\t<ScaleAxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { NumberControl } from '../../number-control';\n\ntype ScaleAxisRowProps = {\n\tlabel: string;\n\tbindValue: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\nexport const ScaleAxisRow = ( { label, bindValue, startIcon, anchorRef }: ScaleAxisRowProps ) => {\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bindValue }>\n\t\t\t\t\t\t<NumberControl step={ 0.1 } placeholder=\"1\" startIcon={ startIcon } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { skewTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowLeftIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../types';\nimport { AxisRow } from './axis-row';\n\nconst skewAxisControls: { label: string; bindValue: 'x' | 'y'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Skew X', 'elementor' ),\n\t\tbindValue: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Skew Y', 'elementor' ),\n\t\tbindValue: 'y',\n\t\tstartIcon: <ArrowLeftIcon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n];\n\nconst skewUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Skew = () => {\n\tconst context = useBoundProp( skewTransformPropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.skew }>\n\t\t\t\t\t{ skewAxisControls.map( ( control ) => (\n\t\t\t\t\t\t<AxisRow key={ control.bindValue } { ...control } anchorRef={ rowRef } units={ skewUnits } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tmoveTransformPropTypeUtil,\n\ttype MoveTransformPropValue,\n\trotateTransformPropTypeUtil,\n\ttype RotateTransformPropValue,\n\tscaleTransformPropTypeUtil,\n\ttype ScaleTransformPropValue,\n\tskewTransformPropTypeUtil,\n\ttype SkewTransformPropValue,\n\ttype TransformItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { type TransformFunction, TransformFunctionKeys } from './types';\n\ntype InitialTransformValues = {\n\tmove: TransformItemPropValue[ 'value' ];\n\tscale: TransformItemPropValue[ 'value' ];\n\trotate: TransformItemPropValue[ 'value' ];\n\tskew: TransformItemPropValue[ 'value' ];\n};\n\nexport const useTransformTabsHistory = ( {\n\tmove: initialMove,\n\tscale: initialScale,\n\trotate: initialRotate,\n\tskew: initialSkew,\n}: InitialTransformValues ) => {\n\tconst { value: moveValue, setValue: setMoveValue } = useBoundProp( moveTransformPropTypeUtil );\n\tconst { value: scaleValue, setValue: setScaleValue } = useBoundProp( scaleTransformPropTypeUtil );\n\tconst { value: rotateValue, setValue: setRotateValue } = useBoundProp( rotateTransformPropTypeUtil );\n\tconst { value: skewValue, setValue: setSkewValue } = useBoundProp( skewTransformPropTypeUtil );\n\n\tconst getCurrentTransformType = (): TransformFunction => {\n\t\tswitch ( true ) {\n\t\t\tcase !! scaleValue:\n\t\t\t\treturn TransformFunctionKeys.scale;\n\t\t\tcase !! rotateValue:\n\t\t\t\treturn TransformFunctionKeys.rotate;\n\t\t\tcase !! skewValue:\n\t\t\t\treturn TransformFunctionKeys.skew;\n\t\t\tdefault:\n\t\t\t\treturn TransformFunctionKeys.move;\n\t\t}\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< TransformFunction >( getCurrentTransformType() );\n\n\tconst valuesHistory = useRef< InitialTransformValues >( {\n\t\tmove: initialMove,\n\t\tscale: initialScale,\n\t\trotate: initialRotate,\n\t\tskew: initialSkew,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialTransformValues, value: TransformItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: TransformFunction ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase TransformFunctionKeys.move:\n\t\t\t\tsetMoveValue( valuesHistory.current.move as MoveTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.scale:\n\t\t\t\tsetScaleValue( valuesHistory.current.scale as ScaleTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.rotate:\n\t\t\t\tsetRotateValue( valuesHistory.current.rotate as RotateTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.skew:\n\t\t\t\tsetSkewValue( valuesHistory.current.skew as SkewTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\treturn {\n\t\tgetTabProps,\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { type TransformItemPropValue } from '@elementor/editor-props';\nimport { ArrowsMaximizeIcon, ExpandIcon, RotateClockwise2Icon, SkewXIcon } from '@elementor/icons';\n\nimport { TransformFunctionKeys } from './types';\n\nexport const TransformIcon = ( { value }: { value: TransformItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <ArrowsMaximizeIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <ExpandIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <RotateClockwise2Icon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <SkewXIcon fontSize=\"tiny\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import * as React from 'react';\nimport type { TransformItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { defaultValues, TransformFunctionKeys } from './types';\n\nconst transformMoveValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => {\n\t\t\tconst size = axis?.value?.size ?? defaultValues.move.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaultValues.move.unit;\n\n\t\t\treturn `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\n\nconst transformScaleValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => axis?.value || defaultValues.scale )\n\t\t.join( ', ' );\n\nconst transformRotateValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => {\n\t\t\tconst size = axis?.value?.size ?? defaultValues.rotate.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaultValues.rotate.unit;\n\n\t\t\treturn `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\nconst transformSkewValue = ( value: TransformItemPropValue[ 'value' ] ) =>\n\tObject.values( value )\n\t\t.map( ( axis ) => {\n\t\t\tconst size = axis?.value?.size ?? defaultValues.skew.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaultValues.skew.unit;\n\n\t\t\treturn `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\n\nexport const TransformLabel = ( props: { value: TransformItemPropValue } ) => {\n\tconst { $$type, value } = props.value;\n\tswitch ( $$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <Label label={ __( 'Move', 'elementor' ) } value={ transformMoveValue( value ) } />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <Label label={ __( 'Scale', 'elementor' ) } value={ transformScaleValue( value ) } />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <Label label={ __( 'Rotate', 'elementor' ) } value={ transformRotateValue( value ) } />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <Label label={ __( 'Skew', 'elementor' ) } value={ transformSkewValue( value ) } />;\n\t\tdefault:\n\t\t\treturn '';\n\t}\n};\n\nconst Label = ( { label, value }: { label: string; value: string } ) => {\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }: { value }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { selectionSizePropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { createControl } from '../../create-control';\nimport { RepeatableControl } from '../repeatable-control';\nimport { SelectionSizeControl } from '../selection-size-control';\nimport { initialTransitionValue, transitionProperties } from './data';\nimport { TransitionSelector } from './transition-selector';\n\nconst DURATION_CONFIG = {\n\tvariant: 'time',\n\tunits: [ 's', 'ms' ],\n\tdefaultUnit: 'ms',\n};\n\n// this config needs to be loaded at runtime/render since it's the transitionProperties object will be mutated by the pro plugin.\n// See: https://elementor.atlassian.net/browse/ED-20285\nconst getSelectionSizeProps = () => {\n\treturn {\n\t\tselectionLabel: __( 'Type', 'elementor' ),\n\t\tsizeLabel: __( 'Duration', 'elementor' ),\n\t\tselectionConfig: {\n\t\t\tcomponent: TransitionSelector,\n\t\t\tprops: {},\n\t\t},\n\t\tsizeConfigMap: {\n\t\t\t...transitionProperties.reduce(\n\t\t\t\t( acc, category ) => {\n\t\t\t\t\tcategory.properties.forEach( ( property ) => {\n\t\t\t\t\t\tacc[ property.value ] = DURATION_CONFIG;\n\t\t\t\t\t} );\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{} as Record< string, typeof DURATION_CONFIG >\n\t\t\t),\n\t\t},\n\t};\n};\n\nfunction getChildControlConfig() {\n\treturn {\n\t\tpropTypeUtil: selectionSizePropTypeUtil,\n\t\tcomponent: SelectionSizeControl as unknown as React.ComponentType< Record< string, unknown > >,\n\t\tprops: getSelectionSizeProps(),\n\t};\n}\n\nexport const TransitionRepeaterControl = createControl( () => {\n\treturn (\n\t\t<RepeatableControl\n\t\t\tlabel={ __( 'Transitions', 'elementor' ) }\n\t\t\trepeaterLabel={ __( 'Transitions', 'elementor' ) }\n\t\t\tpatternLabel=\"${value.selection.value.key.value}: ${value.size.value.size}${value.size.value.unit}\"\n\t\t\tplaceholder={ __( 'Empty Transition', 'elementor' ) }\n\t\t\tshowDuplicate={ false }\n\t\t\tshowToggle={ true }\n\t\t\tinitialValues={ initialTransitionValue }\n\t\t\tchildControlConfig={ getChildControlConfig() }\n\t\t\tpropKey=\"transition\"\n\t\t/>\n\t);\n} );\n","import * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport { selectionSizePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { createControl } from '../create-control';\nimport { SizeControl, type SizeControlProps } from './size-control';\n\ntype SelectionComponentConfig = {\n\tcomponent: React.ComponentType< Record< string, unknown > >;\n\tprops: Record< string, unknown >;\n};\n\ntype SizeControlConfig = Pick< SizeControlProps, 'variant' | 'units' | 'defaultUnit' >;\n\ntype SelectionSizeControlProps = {\n\tselectionLabel: string;\n\tsizeLabel: string;\n\tselectionConfig: SelectionComponentConfig;\n\tsizeConfigMap: Record< string, SizeControlConfig >;\n};\n\nexport const SelectionSizeControl = createControl(\n\t( { selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }: SelectionSizeControlProps ) => {\n\t\tconst { value, setValue, propType } = useBoundProp( selectionSizePropTypeUtil );\n\t\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\t\tconst currentSizeConfig = useMemo( () => {\n\t\t\tswitch ( value.selection.$$type ) {\n\t\t\t\tcase 'key-value':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value.value.value || '' ];\n\t\t\t\tcase 'string':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value || '' ];\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}, [ value, sizeConfigMap ] );\n\t\tconst SelectionComponent = selectionConfig.component;\n\n\t\treturn (\n\t\t\t<PropProvider value={ value } setValue={ setValue } propType={ propType }>\n\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t<ControlFormLabel>{ selectionLabel }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<PropKeyProvider bind=\"selection\">\n\t\t\t\t\t\t\t<SelectionComponent { ...selectionConfig.props } />\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t{ currentSizeConfig && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t\t\t<ControlFormLabel>{ sizeLabel }</ControlFormLabel>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind=\"size\">\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tvariant={ currentSizeConfig.variant }\n\t\t\t\t\t\t\t\t\t\tunits={ currentSizeConfig.units }\n\t\t\t\t\t\t\t\t\t\tdefaultUnit={ currentSizeConfig.defaultUnit }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n","export type TransitionProperty = {\n\tlabel: string;\n\tvalue: string;\n};\n\nexport type TransitionCategory = {\n\tlabel: string;\n\ttype: 'category';\n\tproperties: TransitionProperty[];\n};\n\nexport const initialTransitionValue = {\n\tselection: {\n\t\t$$type: 'key-value',\n\t\tvalue: {\n\t\t\tkey: { value: 'All properties', $$type: 'string' },\n\t\t\tvalue: { value: 'all', $$type: 'string' },\n\t\t},\n\t},\n\tsize: { $$type: 'size', value: { size: 200, unit: 'ms' } },\n};\n\nexport const transitionProperties: TransitionCategory[] = [\n\t{\n\t\tlabel: 'Common',\n\t\ttype: 'category',\n\t\tproperties: [ { label: 'All properties', value: 'all' } ],\n\t},\n];\n\nexport const transitionsItemsList = transitionProperties.map( ( category ) => ( {\n\tlabel: category.label,\n\titems: category.properties.map( ( property ) => property.label ),\n} ) );\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { keyValuePropTypeUtil } from '@elementor/editor-props';\nimport { ChevronDownIcon, VariationsIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Box, Popover, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { ItemSelector } from '../../components/item-selector';\nimport { transitionProperties, transitionsItemsList } from './data';\n\nconst toTransitionSelectorValue = ( label: string ) => {\n\tfor ( const category of transitionProperties ) {\n\t\tconst property = category.properties.find( ( prop ) => prop.label === label );\n\t\tif ( property ) {\n\t\t\treturn {\n\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n};\n\nexport const TransitionSelector = () => {\n\tconst { value, setValue } = useBoundProp( keyValuePropTypeUtil );\n\tconst {\n\t\tvalue: { value: transitionValue },\n\t\tkey: { value: transitionLabel },\n\t} = value;\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst handleTransitionPropertyChange = ( newLabel: string ) => {\n\t\tconst newValue = toTransitionSelectorValue( newLabel );\n\n\t\tif ( ! newValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetValue( newValue );\n\t\tpopoverState.close();\n\t};\n\n\tconst getAnchorPosition = () => {\n\t\tif ( ! defaultRef.current ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rect = defaultRef.current.getBoundingClientRect();\n\t\treturn {\n\t\t\ttop: rect.top,\n\t\t\tleft: rect.right + 36,\n\t\t};\n\t};\n\n\treturn (\n\t\t<Box ref={ defaultRef }>\n\t\t\t<UnstableTag\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ transitionLabel }\n\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tfullWidth\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\tanchorPosition={ getAnchorPosition() }\n\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\titemsList={ transitionsItemsList }\n\t\t\t\t\tselectedItem={ transitionValue }\n\t\t\t\t\tonItemChange={ handleTransitionPropertyChange }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ 268 }\n\t\t\t\t\ttitle={ __( 'Transition Property', 'elementor' ) }\n\t\t\t\t\ticon={ VariationsIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { transformPropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { AddItemAction, Header, Item, ItemsContainer, UnstableRepeater } from '../../components/unstable-repeater';\nimport { DisableItemAction } from '../../components/unstable-repeater/actions/disable-item-action';\nimport { RemoveItemAction } from '../../components/unstable-repeater/actions/remove-item-action';\nimport { createControl } from '../../create-control';\nimport { TransformContent } from '../transform-control/transform-content';\nimport { TransformIcon } from '../transform-control/transform-icon';\nimport { TransformLabel } from '../transform-control/transform-label';\nimport { initialTransformValue } from '../transform-control/types';\n\nexport const UnstableTransformRepeaterControl = createControl( () => {\n\tconst { propType, value: transformValues, setValue } = useBoundProp( transformPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ transformValues } setValue={ setValue }>\n\t\t\t<UnstableRepeater initial={ initialTransformValue } propTypeUtil={ transformPropTypeUtil }>\n\t\t\t\t<Header label={ __( 'Transform', 'elementor' ) }>\n\t\t\t\t\t<AddItemAction />\n\t\t\t\t</Header>\n\t\t\t\t<ItemsContainer\n\t\t\t\t\titemTemplate={\n\t\t\t\t\t\t<Item Icon={ TransformIcon } Label={ TransformLabel } Content={ TransformContent } />\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t</ItemsContainer>\n\t\t\t</UnstableRepeater>\n\t\t</PropProvider>\n\t);\n} );\n"],"mappings":"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","names":["React","import_editor_props","import_ui","import_i18n","React","import_react","value","import_react","value","React","React","import_ui","React","import_react","Control","React","import_ui","React","React","import_react","import_ui","React","import_react","items","items","MenuItem","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_ui","React","import_react","import_icons","import_ui","React","import_react","import_editor_props","import_editor_ui","import_ui","units","React","import_react","import_editor_ui","import_icons","import_ui","import_i18n","import_react","import_react","units","React","import_react","import_editor_props","import_ui","import_i18n","React","import_ui","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_ui","import_i18n","React","import_ui","import_react","React","import_ui","React","import_react","import_icons","import_ui","import_i18n","React","React","import_react","Context","items","items","React","import_icons","import_ui","SIZE","items","generateNextKey","Control","React","import_react","import_editor_props","import_ui","import_i18n","React","import_react","import_editor_props","import_ui","import_i18n","units","React","import_ui","ItemIcon","ItemLabel","ItemContent","Content","units","React","import_editor_props","React","import_react","import_icons","import_ui","React","import_ui","items","Content","React","import_editor_props","import_ui","RESTRICTED_INPUT_KEYS","React","import_react","import_editor_props","import_ui","import_i18n","React","import_ui","items","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","Control","React","import_editor_props","import_icons","import_ui","import_i18n","React","import_react","import_editor_ui","import_ui","import_utils","import_i18n","React","import_editor_props","import_ui","React","import_react","import_editor_elements","import_editor_props","import_http_client","import_icons","import_ui","import_utils","import_i18n","React","import_react","import_icons","import_ui","AutocompleteBase","React","import_icons","import_ui","import_i18n","React","import_editor_props","import_ui","SIZE","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","Control","React","import_react","import_editor_props","import_editor_ui","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_wp_media","import_i18n","React","import_react","import_ui","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_react","EMPTY_OPEN_ITEM","items","SIZE","React","import_ui","React","items","React","import_react","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","SIZE","items","React","import_icons","import_ui","import_i18n","SIZE","items","React","import_icons","import_ui","import_i18n","SIZE","React","import_ui","import_react","import_ui","usePopover","Label","Content","usePopover","React","React","import_editor_props","import_ui","React","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_editor_ui","import_icons","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","import_react","import_editor_props","import_ui","initialBackgroundColorOverlay","initialBackgroundGradientOverlay","ItemIcon","ItemLabel","ItemContent","Content","React","import_react","import_editor_props","import_ui","import_react","ItemIcon","ItemLabel","ItemContent","Content","React","import_react","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_editor_ui","import_icons","import_ui","import_i18n","React","import_editor_props","import_i18n","React","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","import_editor_props","React","import_ui","units","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","React","import_ui","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","import_react","import_editor_props","import_ui","Content","React","import_icons","React","import_ui","import_i18n","Label","React","import_editor_props","import_i18n","React","import_react","import_editor_props","import_ui","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","React","import_editor_props","import_i18n"]}