@elementor/editor-controls 3.35.0-387 → 3.35.0-388
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +163 -169
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +89 -95
- package/dist/index.mjs.map +1 -1
- package/package.json +15 -15
- package/src/controls/equal-unequal-sizes-control.tsx +57 -58
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/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/number-input.tsx","../src/components/text-field-popover.tsx","../src/hooks/use-size-extended-options.ts","../src/hooks/use-sync-external-state.tsx","../src/controls/stroke-control.tsx","../src/components/section-content.tsx","../src/controls/color-control.tsx","../src/controls/box-shadow-repeater-control.tsx","../src/components/control-repeater/actions/tooltip-add-item-action.tsx","../src/components/control-repeater/context/repeater-context.tsx","../src/services/event-bus.ts","../src/components/control-repeater/context/item-context.tsx","../src/components/control-repeater/items/items-container.tsx","../src/components/repeater/sortable.tsx","../src/components/control-repeater/items/item.tsx","../src/hooks/use-repeatable-control-context.ts","../src/components/repeater/repeater-tag.tsx","../src/components/control-repeater/locations.ts","../src/components/control-repeater/control-repeater.tsx","../src/components/control-repeater/actions/disable-item-action.tsx","../src/components/control-repeater/actions/duplicate-item-action.tsx","../src/components/control-repeater/actions/remove-item-action.tsx","../src/components/control-repeater/items/edit-item-popover.tsx","../src/components/repeater/repeater-popover.tsx","../src/components/popover-content.tsx","../src/components/popover-grid-container.tsx","../src/components/repeater/repeater-header.tsx","../src/control-adornments/control-adornments.tsx","../src/control-adornments/control-adornments-context.tsx","../src/controls/filter-control/filter-repeater-control.tsx","../src/controls/filter-control/context/filter-config-context.tsx","../src/controls/filter-control/utils.ts","../src/controls/filter-control/configs.ts","../src/controls/filter-control/filter-content.tsx","../src/controls/filter-control/drop-shadow/drop-shadow-item-content.tsx","../src/controls/filter-control/single-size/single-size-item-content.tsx","../src/controls/filter-control/filter-icon.tsx","../src/controls/filter-control/filter-label.tsx","../src/controls/filter-control/drop-shadow/drop-shadow-item-label.tsx","../src/controls/filter-control/single-size/single-size-item-label.tsx","../src/controls/select-control-wrapper.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/components/conditional-tooltip.tsx","../src/utils/convert-toggle-options-to-atomic.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/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/restricted-link-infotip.tsx","../src/controls/query-control.tsx","../src/components/autocomplete.tsx","../src/controls/switch-control.tsx","../src/controls/html-tag-control.tsx","../src/components/conditional-control-infotip.tsx","../src/controls/gap-control.tsx","../src/controls/aspect-ratio-control.tsx","../src/controls/svg-media-control.tsx","../src/components/enable-unfiltered-modal.tsx","../src/controls/background-control/background-control.tsx","../src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx","../src/env.ts","../src/controls/background-control/background-gradient-color-control.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx","../src/controls/background-control/background-overlay/use-background-tabs-history.ts","../src/controls/repeatable-control.tsx","../src/controls/key-value-control.tsx","../src/utils/escape-html-attr.ts","../src/controls/position-control.tsx","../src/controls/transform-control/transform-repeater-control.tsx","../src/controls/transform-control/initial-values.ts","../src/controls/transform-control/transform-content.tsx","../src/controls/transform-control/functions/move.tsx","../src/controls/transform-control/functions/axis-row.tsx","../src/controls/transform-control/functions/rotate.tsx","../src/controls/transform-control/functions/scale.tsx","../src/controls/transform-control/functions/scale-axis-row.tsx","../src/controls/transform-control/functions/skew.tsx","../src/controls/transform-control/use-transform-tabs-history.tsx","../src/controls/transform-control/transform-icon.tsx","../src/controls/transform-control/transform-label.tsx","../src/controls/transform-control/transform-settings-control.tsx","../src/controls/transform-control/transform-base-controls/children-perspective-control.tsx","../src/controls/transform-control/transform-base-controls/transform-origin-control.tsx","../src/controls/transition-control/transition-repeater-control.tsx","../src/controls/selection-size-control.tsx","../src/controls/transition-control/data.ts","../src/controls/transition-control/trainsition-events.ts","../src/controls/transition-control/transition-selector.tsx","../src/controls/date-time-control.tsx","../src/controls/inline-editing-control.tsx","../src/components/inline-editor.tsx","../src/utils/inline-editing.ts","../src/components/inline-editor-toolbar.tsx","../src/components/url-popover.tsx","../src/components/icon-buttons/clear-icon-button.tsx","../src/components/repeater/repeater.tsx"],"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-control/filter-repeater-control';\nexport { SelectControl } from './controls/select-control';\nexport { SelectControlWrapper } from './controls/select-control-wrapper';\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 { HtmlTagControl } from './controls/html-tag-control';\nexport { QueryControl } from './controls/query-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 { TransformSettingsControl } from './controls/transform-control/transform-settings-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 { transitionProperties, transitionsItemsList } from './controls/transition-control/data';\nexport { DateTimeControl } from './controls/date-time-control';\nexport { InlineEditingControl } from './controls/inline-editing-control';\n\n// components\nexport { ControlFormLabel } from './components/control-form-label';\nexport { ControlToggleButtonGroup } from './components/control-toggle-button-group';\nexport { ToggleButtonGroupUi } from './components/control-toggle-button-group';\nexport { ClearIconButton } from './components/icon-buttons/clear-icon-button';\nexport {\n\tRepeater,\n\ttype SetRepeaterValuesMeta,\n\ttype ItemsActionPayload,\n\ttype RepeaterItem,\n} from './components/repeater/repeater';\nexport { FloatingActionsBar } from './components/floating-bar';\nexport { PopoverGridContainer } from './components/popover-grid-container';\nexport { InlineEditor } from './components/inline-editor';\nexport { InlineEditorToolbar } from './components/inline-editor-toolbar';\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 { AdornmentComponent } from './control-adornments/control-adornments-context';\nexport type { PropProviderProps } from './bound-prop-context';\nexport type { SetValue, SetValueMeta } 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';\nexport { createControl } from './create-control';\n\nexport {\n\tinjectIntoRepeaterItemIcon,\n\tinjectIntoRepeaterItemLabel,\n\tinjectIntoRepeaterItemActions,\n} from './components/control-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 Action = {\n\ttype: string;\n\tpayload?: object;\n};\n\nexport type SetValueMeta< TAction = Action > = {\n\tbind?: PropKey;\n\tvalidation?: ( value: PropValue ) => boolean;\n\taction?: TAction;\n\twithHistory?: boolean;\n};\n\nexport type SetValue< T > = ( value: T, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\ntype PropContext< T extends PropValue, P extends PropType > = {\n\tsetValue: SetValue< T >;\n\tvalue: T | null;\n\tpropType: P;\n\tplaceholder?: T;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n};\n\nconst PropContext = createContext< PropContext< PropValue, PropType > | null >( null );\n\nexport type PropProviderProps< T extends PropValue, P extends PropType > = React.PropsWithChildren<\n\tPropContext< T, P >\n>;\n\nexport const PropProvider = < T extends PropValue, P extends PropType >( {\n\tchildren,\n\tvalue,\n\tsetValue,\n\tpropType,\n\tplaceholder,\n\tisDisabled,\n}: PropProviderProps< T, P > ) => {\n\treturn (\n\t\t<PropContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tvalue,\n\t\t\t\tpropType,\n\t\t\t\tsetValue: setValue as SetValue< PropValue >,\n\t\t\t\tplaceholder,\n\t\t\t\tisDisabled,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</PropContext.Provider>\n\t);\n};\n\nexport const usePropContext = < T extends PropValue, P extends PropType >() => {\n\tconst context = useContext( PropContext ) as PropContext< T, P > | null;\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: {\n\t\t\t\thook: 'usePropContext',\n\t\t\t\tprovider: 'PropProvider',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { createError } from '@elementor/utils';\n\nexport const MissingPropTypeError = createError( {\n\tcode: 'missing_prop_provider_prop_type',\n\tmessage: 'Prop type is missing',\n} );\n\nexport const UnsupportedParentError = createError( {\n\tcode: 'unsupported_prop_provider_prop_type',\n\tmessage: 'Parent prop type is not supported',\n} );\n\nexport const HookOutsideProviderError = createError( {\n\tcode: 'hook_outside_provider',\n\tmessage: 'Hook used outside of provider',\n} );\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport {\n\ttype ArrayPropType,\n\ttype ArrayPropValue,\n\ttype CreateOptions,\n\ttype ObjectPropType,\n\ttype ObjectPropValue,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { HookOutsideProviderError, MissingPropTypeError, UnsupportedParentError } from './errors';\nimport { type SetValue, usePropContext } from './prop-context';\n\nexport type PropKeyContextValue< T, P > = {\n\tbind: PropKey;\n\tsetValue: SetValue< T >;\n\tvalue: T;\n\tpropType: P;\n\tplaceholder?: T;\n\tpath: PropKey[];\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nconst PropKeyContext = createContext< PropKeyContextValue< PropValue, PropType > | null >( null );\n\ntype PropKeyProviderProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const PropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst { propType } = usePropContext();\n\n\tif ( ! propType ) {\n\t\tthrow new MissingPropTypeError( { context: { bind } } );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\treturn <ArrayPropKeyProvider bind={ bind }>{ children }</ArrayPropKeyProvider>;\n\t}\n\n\tif ( propType.kind === 'object' ) {\n\t\treturn <ObjectPropKeyProvider bind={ bind }>{ children }</ObjectPropKeyProvider>;\n\t}\n\n\tthrow new UnsupportedParentError( { context: { propType } } );\n};\n\nconst ObjectPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ObjectPropValue[ 'value' ], ObjectPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue: SetValue< PropValue > = ( value, options, meta ) => {\n\t\tconst newValue = {\n\t\t\t...context.value,\n\t\t\t[ bind ]: value,\n\t\t};\n\n\t\treturn context?.setValue( newValue, options, { ...meta, bind } );\n\t};\n\n\tconst value = context.value?.[ bind ];\n\tconst placeholder = context.placeholder?.[ bind ];\n\n\tconst propType = context.propType.shape[ bind ];\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, placeholder, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nconst ArrayPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ArrayPropValue[ 'value' ], ArrayPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue = ( value: PropValue, options?: CreateOptions ) => {\n\t\tconst newValue = [ ...( context.value ?? [] ) ];\n\n\t\tnewValue[ Number( bind ) ] = value;\n\n\t\treturn context?.setValue( newValue, options, { bind } );\n\t};\n\n\tconst value = context.value?.[ Number( bind ) ];\n\n\tconst propType = context.propType.item_prop_type;\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nexport const usePropKeyContext = () => {\n\tconst context = useContext( PropKeyContext );\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: { hook: 'usePropKeyContext', provider: 'PropKeyProvider' },\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { useState } from 'react';\nimport {\n\ttype CreateOptions,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropTypeUtil,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { MissingPropTypeError } from './errors';\nimport { type SetValue, type SetValueMeta } from './prop-context';\nimport { type PropKeyContextValue, usePropKeyContext } from './prop-key-context';\n\ntype UseBoundProp< TValue extends PropValue > = {\n\tbind: PropKey;\n\tsetValue: SetValue< TValue | null >;\n\tvalue: TValue;\n\tpropType: PropType;\n\tplaceholder?: TValue;\n\tpath: PropKey[];\n\trestoreValue: () => void;\n\tresetValue: () => void;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\ntype EnhancedPropKeyContextValue< T, P > = PropKeyContextValue< T, P > & {\n\tresetValue: () => void;\n};\n\nexport function useBoundProp<\n\tT extends PropValue = PropValue,\n\tP extends PropType = PropType,\n>(): EnhancedPropKeyContextValue< T, P >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil: PropTypeUtil< TKey, TValue >\n): UseBoundProp< TValue >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil?: PropTypeUtil< TKey, TValue >\n) {\n\tconst propKeyContext = usePropKeyContext();\n\n\tconst { isValid, validate, restoreValue } = useValidation( propKeyContext.propType );\n\n\tconst disabled = propKeyContext.isDisabled?.( propKeyContext.propType );\n\n\tconst resetValue = () => {\n\t\tpropKeyContext.setValue( propKeyContext.propType.initial_value ?? null );\n\t};\n\n\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn {\n\t\t\t...propKeyContext,\n\t\t\tdisabled,\n\t\t\tresetValue,\n\t\t} as EnhancedPropKeyContextValue< PropValue, PropType >;\n\t}\n\n\tfunction setValue( value: TValue | null, options: CreateOptions, meta?: SetValueMeta ) {\n\t\tif ( ! validate( value, meta?.validation ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value === null ) {\n\t\t\treturn propKeyContext?.setValue( null, options, meta );\n\t\t}\n\n\t\treturn propKeyContext?.setValue( propTypeUtil?.create( value, options ), {}, meta );\n\t}\n\n\tconst propType = resolveUnionPropType( propKeyContext.propType, propTypeUtil.key );\n\n\tconst value = propTypeUtil.extract( propKeyContext.value ?? propType.default ?? null );\n\tconst placeholder = propTypeUtil.extract( propKeyContext.placeholder ?? null );\n\n\treturn {\n\t\t...propKeyContext,\n\t\tpropType,\n\t\tsetValue,\n\t\tvalue: isValid ? value : null,\n\t\trestoreValue,\n\t\tplaceholder,\n\t\tdisabled,\n\t\tresetValue,\n\t};\n}\n\nconst useValidation = ( propType: PropType ) => {\n\tconst [ isValid, setIsValid ] = useState( true );\n\n\t// If the value does not pass the prop type validation, set the isValid state to false.\n\t// This will prevent the value from being set in the model, and its fallback will be used instead.\n\tconst validate = ( value: PropValue | null, validation?: ( value: PropValue ) => boolean ) => {\n\t\tlet valid = true;\n\n\t\tif ( propType.settings.required && value === null ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tif ( validation && ! validation( value ) ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tsetIsValid( valid );\n\n\t\treturn valid;\n\t};\n\n\tconst restoreValue = () => setIsValid( true );\n\n\treturn {\n\t\tisValid,\n\t\tsetIsValid,\n\t\tvalidate,\n\t\trestoreValue,\n\t};\n};\n\n// utils\nconst resolveUnionPropType = ( propType: PropType, key: string ): PropType => {\n\tlet resolvedPropType = propType;\n\n\tif ( propType.kind === 'union' ) {\n\t\tresolvedPropType = propType.prop_types[ key ];\n\t}\n\n\tif ( ! resolvedPropType ) {\n\t\tthrow new MissingPropTypeError( { context: { key } } );\n\t}\n\n\treturn resolvedPropType;\n};\n","import * as React from 'react';\nimport { FormLabel, type FormLabelProps } from '@elementor/ui';\n\nexport const ControlFormLabel = ( props: FormLabelProps ) => {\n\treturn <FormLabel size=\"tiny\" { ...props } />;\n};\n","import * as React from 'react';\nimport { type ComponentProps, type ComponentType } from 'react';\nimport { ErrorBoundary } from '@elementor/ui';\n\nimport { useControlReplacement } from './control-replacements';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\nconst brandSymbol = Symbol( 'control' );\n\nexport type ControlComponent< TComponent extends AnyComponentType = AnyComponentType > = TComponent & {\n\t[ brandSymbol ]: true;\n};\n\nexport function createControl< T extends AnyComponentType >( Control: T ) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst { ControlToRender, OriginalControl, isReplaced } = useControlReplacement( Control );\n\t\tconst controlProps = isReplaced ? { ...props, OriginalControl } : props;\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<ControlToRender { ...controlProps } />\n\t\t\t</ErrorBoundary>\n\t\t);\n\t} ) as ControlComponent< T >;\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from './bound-prop-context';\n\ntype ControlComponent = ComponentType< object & { OriginalControl: ComponentType } >;\ntype ControlReplacement = {\n\tcomponent: ControlComponent;\n\tcondition: ( { value }: ConditionArgs ) => boolean;\n};\n\ntype ConditionArgs = {\n\tvalue: PropValue;\n\tplaceholder?: PropValue;\n};\n\ntype Props = PropsWithChildren< { replacements: ControlReplacement[] } >;\n\nconst ControlReplacementContext = createContext< ControlReplacement[] >( [] );\n\nexport const ControlReplacementsProvider = ( { replacements, children }: Props ) => {\n\treturn <ControlReplacementContext.Provider value={ replacements }>{ children }</ControlReplacementContext.Provider>;\n};\n\nexport const useControlReplacement = ( OriginalComponent: ControlComponent ) => {\n\tconst { value, placeholder } = useBoundProp();\n\tconst replacements = useContext( ControlReplacementContext );\n\n\ttry {\n\t\tconst replacement = replacements.find( ( r ) => r.condition( { value, placeholder } ) );\n\n\t\treturn {\n\t\t\tControlToRender: replacement?.component ?? OriginalComponent,\n\t\t\tOriginalControl: OriginalComponent,\n\t\t\tisReplaced: !! replacement,\n\t\t};\n\t} catch {\n\t\treturn { ControlToRender: OriginalComponent, OriginalControl: OriginalComponent };\n\t}\n};\n\nexport const createControlReplacementsRegistry = () => {\n\tconst controlReplacements: ControlReplacement[] = [];\n\n\tfunction registerControlReplacement( replacement: ControlReplacement ) {\n\t\tcontrolReplacements.push( replacement );\n\t}\n\n\tfunction getControlReplacements() {\n\t\treturn controlReplacements;\n\t}\n\n\treturn { registerControlReplacement, getControlReplacements };\n};\n","import { useMutation, useQuery, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\n\nexport const UNFILTERED_FILES_UPLOAD_KEY = 'elementor_unfiltered_files_upload';\n\nconst unfilteredFilesQueryKey = {\n\tqueryKey: [ UNFILTERED_FILES_UPLOAD_KEY ],\n};\n\ntype Value = '0' | '1';\n\nexport const useUnfilteredFilesUpload = () =>\n\tuseQuery( {\n\t\t...unfilteredFilesQueryKey,\n\t\tqueryFn: (): Promise< boolean > =>\n\t\t\tapiClient.getElementorSetting< Value >( UNFILTERED_FILES_UPLOAD_KEY ).then( ( res ) => {\n\t\t\t\treturn formatResponse( res );\n\t\t\t} ),\n\t\tstaleTime: Infinity,\n\t} );\n\nexport function useUpdateUnfilteredFilesUpload() {\n\tconst queryClient = useQueryClient();\n\n\tconst mutate = useMutation( {\n\t\tmutationFn: ( { allowUnfilteredFilesUpload }: { allowUnfilteredFilesUpload: boolean } ) =>\n\t\t\tapiClient.updateElementorSetting< Value >(\n\t\t\t\tUNFILTERED_FILES_UPLOAD_KEY,\n\t\t\t\tallowUnfilteredFilesUpload ? '1' : '0'\n\t\t\t),\n\t\tonSuccess: () => queryClient.invalidateQueries( unfilteredFilesQueryKey ),\n\t} );\n\n\treturn mutate;\n}\n\nconst formatResponse = ( response: Value ): boolean => {\n\treturn Boolean( response === '1' );\n};\n","import { httpService } from '@elementor/http-client';\n\nconst ELEMENTOR_SETTING_URL = 'elementor/v1/settings';\n\ntype Response< T > = { data: { value: T }; success: boolean };\n\nexport const apiClient = {\n\tgetElementorSetting: < T >( key: string ) =>\n\t\thttpService()\n\t\t\t.get< Response< T > >( `${ ELEMENTOR_SETTING_URL }/${ key }` )\n\t\t\t.then( ( res ) => formatSettingResponse( res.data ) ),\n\tupdateElementorSetting: < T >( key: string, value: T ) =>\n\t\thttpService().put( `${ ELEMENTOR_SETTING_URL }/${ key }`, { value } ),\n};\n\nconst formatSettingResponse = < T >( response: Response< T > ) => response.data.value;\n","import * as React from 'react';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from '@elementor/ui';\nimport { type MediaType, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype ImageMediaControlProps = {\n\tmediaTypes?: MediaType[];\n};\n\nexport const ImageMediaControl = createControl( ( { mediaTypes = [ 'image' ] }: ImageMediaControlProps ) => {\n\tconst { value, setValue, propType } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes,\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Card variant=\"outlined\">\n\t\t\t\t<CardMedia image={ src } sx={ { height: propType.meta.isDynamic ? 134 : 150 } }>\n\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t<Stack justifyContent=\"center\" alignItems=\"center\" width=\"100%\" height=\"100%\">\n\t\t\t\t\t\t\t<CircularProgress />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<></>\n\t\t\t\t\t) }\n\t\t\t\t</CardMedia>\n\t\t\t\t<CardOverlay>\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'browse' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Select image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t</CardOverlay>\n\t\t\t</Card>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\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, type SelectProps, Typography } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype SelectControlProps = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n\tMenuProps?: SelectProps[ 'MenuProps' ];\n\tariaLabel?: string;\n};\n\nconst DEFAULT_MENU_PROPS = {\n\tMenuListProps: {\n\t\tsx: {\n\t\t\tmaxHeight: '160px',\n\t\t},\n\t},\n};\n\nexport const SelectControl = createControl(\n\t( { options, onChange, MenuProps = DEFAULT_MENU_PROPS, ariaLabel }: SelectControlProps ) => {\n\t\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\t\tconst newValue = event.target.value || null;\n\n\t\t\tonChange?.( newValue, value );\n\t\t\tsetValue( newValue );\n\t\t};\n\t\tconst isDisabled = disabled || options.length === 0;\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Select\n\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tMenuProps={ MenuProps }\n\t\t\t\t\taria-label={ ariaLabel || placeholder }\n\t\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\t\tconst findOptionByValue = ( searchValue: string | null ) =>\n\t\t\t\t\t\t\toptions.find( ( opt ) => opt.value === searchValue );\n\n\t\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\t\tif ( placeholder ) {\n\t\t\t\t\t\t\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\t\t\t\t\t\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t\t\t\t\t\t\t{ displayText }\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst option = findOptionByValue( selectedValue );\n\t\t\t\t\t\treturn option?.label || selectedValue;\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\tfullWidth\n\t\t\t\t>\n\t\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) ) }\n\t\t\t\t</Select>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { type SxProps, TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const TextControl = createControl(\n\t( {\n\t\tplaceholder,\n\t\terror,\n\t\tinputValue,\n\t\tinputDisabled,\n\t\thelperText,\n\t\tsx,\n\t\tariaLabel,\n\t}: {\n\t\tplaceholder?: string;\n\t\terror?: boolean;\n\t\tinputValue?: string;\n\t\tinputDisabled?: boolean;\n\t\thelperText?: string;\n\t\tsx?: SxProps;\n\t\tariaLabel?: string;\n\t} ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ inputDisabled ?? disabled }\n\t\t\t\t\tvalue={ inputValue ?? value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\terror={ error }\n\t\t\t\t\thelperText={ helperText }\n\t\t\t\t\tsx={ sx }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\tplaceholder?: string;\n\tariaLabel?: string;\n};\n\nexport const TextAreaControl = createControl( ( { placeholder, ariaLabel }: Props ) => {\n\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.value );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tmultiline\n\t\t\t\tfullWidth\n\t\t\t\tminRows={ 5 }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useMemo } from 'react';\nimport { type PropType, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { SizeInput } from '../components/size-control/size-input';\nimport { TextFieldPopover } from '../components/text-field-popover';\nimport { createControl } from '../create-control';\nimport { useSizeExtendedOptions } from '../hooks/use-size-extended-options';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport {\n\ttype AngleUnit,\n\tangleUnits,\n\tDEFAULT_SIZE,\n\tDEFAULT_UNIT,\n\ttype ExtendedOption,\n\tisUnitExtendedOption,\n\ttype LengthUnit,\n\tlengthUnits,\n\ttype TimeUnit,\n\ttimeUnits,\n\ttype Unit,\n} from '../utils/size-control';\n\ntype SizeValue = SizePropValue[ 'value' ];\n\ntype SizeVariant = 'length' | 'angle' | 'time';\n\ntype UnitProps< T extends readonly Unit[] > = {\n\tunits?: T;\n\tdefaultUnit?: T[ number ];\n};\n\ntype BaseSizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\textendedOptions?: ExtendedOption[];\n\tdisableCustom?: boolean;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tmin?: number;\n\tenablePropTypeUnits?: boolean;\n\tid?: string;\n\tariaLabel?: string;\n};\n\ntype LengthSizeControlProps = BaseSizeControlProps &\n\tUnitProps< LengthUnit[] > & {\n\t\tvariant: 'length';\n\t};\n\ntype AngleSizeControlProps = BaseSizeControlProps &\n\tUnitProps< AngleUnit[] > & {\n\t\tvariant: 'angle';\n\t};\n\ntype TimeSizeControlProps = BaseSizeControlProps &\n\tUnitProps< TimeUnit[] > & {\n\t\tvariant: 'time';\n\t};\n\nexport type SizeControlProps = LengthSizeControlProps | AngleSizeControlProps | TimeSizeControlProps;\n\ntype State = {\n\tnumeric: number;\n\tcustom: string;\n\tunit: Unit | ExtendedOption;\n};\n\nconst defaultSelectedUnit: Record< SizeControlProps[ 'variant' ], Unit > = {\n\tlength: 'px',\n\tangle: 'deg',\n\ttime: 'ms',\n} as const;\n\nconst defaultUnits: Record< SizeControlProps[ 'variant' ], Unit[] > = {\n\tlength: [ ...lengthUnits ] as LengthUnit[],\n\tangle: [ ...angleUnits ] as AngleUnit[],\n\ttime: [ ...timeUnits ] as TimeUnit[],\n} as const;\n\nexport const CUSTOM_SIZE_LABEL = 'fx';\n\nexport const SizeControl = createControl(\n\t( {\n\t\tvariant = 'length' as SizeControlProps[ 'variant' ],\n\t\tdefaultUnit,\n\t\tunits,\n\t\tplaceholder,\n\t\tstartIcon,\n\t\tanchorRef,\n\t\textendedOptions,\n\t\tdisableCustom,\n\t\tmin = 0,\n\t\tenablePropTypeUnits = false,\n\t\tid,\n\t\tariaLabel,\n\t}: Omit< SizeControlProps, 'variant' > & { variant?: SizeVariant } ) => {\n\t\tconst {\n\t\t\tvalue: sizeValue,\n\t\t\tsetValue: setSizeValue,\n\t\t\tdisabled,\n\t\t\trestoreValue,\n\t\t\tplaceholder: externalPlaceholder,\n\t\t\tpropType,\n\t\t} = useBoundProp( sizePropTypeUtil );\n\n\t\tconst actualDefaultUnit = defaultUnit ?? externalPlaceholder?.unit ?? defaultSelectedUnit[ variant ];\n\t\tconst activeBreakpoint = useActiveBreakpoint();\n\t\tconst actualExtendedOptions = useSizeExtendedOptions( extendedOptions || [], disableCustom ?? false );\n\t\tconst actualUnits = resolveUnits( propType, enablePropTypeUnits, variant, units, actualExtendedOptions );\n\n\t\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\t\tconst memorizedExternalState = useMemo(\n\t\t\t() => createStateFromSizeProp( sizeValue, actualDefaultUnit ),\n\t\t\t[ sizeValue, actualDefaultUnit ]\n\t\t);\n\n\t\tconst [ state, setState ] = useSyncExternalState( {\n\t\t\texternal: memorizedExternalState,\n\t\t\tsetExternal: ( newState: State | null, options, meta ) =>\n\t\t\t\tsetSizeValue( extractValueFromState( newState ), options, meta ),\n\t\t\tpersistWhen: ( newState ) => !! extractValueFromState( newState ),\n\t\t\tfallback: ( newState ) => ( {\n\t\t\t\tunit: newState?.unit ?? actualDefaultUnit,\n\t\t\t\tnumeric: newState?.numeric ?? DEFAULT_SIZE,\n\t\t\t\tcustom: newState?.custom ?? '',\n\t\t\t} ),\n\t\t} );\n\n\t\tconst { size: controlSize = DEFAULT_SIZE, unit: controlUnit = actualDefaultUnit } =\n\t\t\textractValueFromState( state, true ) || {};\n\n\t\tconst handleUnitChange = ( newUnit: Unit | ExtendedOption ) => {\n\t\t\tif ( newUnit === 'custom' ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\n\t\t\tsetState( ( prev ) => ( { ...prev, unit: newUnit } ) );\n\t\t};\n\n\t\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst size = event.target.value;\n\t\t\tconst isInputValid = event.target.validity.valid;\n\n\t\t\tif ( controlUnit === 'auto' ) {\n\t\t\t\tsetState( ( prev ) => ( { ...prev, unit: controlUnit } ) );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetState(\n\t\t\t\t( prev ) => ( {\n\t\t\t\t\t...prev,\n\t\t\t\t\t[ controlUnit === 'custom' ? 'custom' : 'numeric' ]: formatSize( size, controlUnit ),\n\t\t\t\t\tunit: controlUnit,\n\t\t\t\t} ),\n\t\t\t\tundefined,\n\t\t\t\t{ validation: () => isInputValid }\n\t\t\t);\n\t\t};\n\n\t\tconst onInputClick = ( event: React.MouseEvent ) => {\n\t\t\tif ( ( event.target as HTMLElement ).closest( 'input' ) && 'custom' === state.unit ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\t\t};\n\n\t\tconst maybeClosePopup = React.useCallback( () => {\n\t\t\tif ( popupState && popupState.isOpen ) {\n\t\t\t\tpopupState.close();\n\t\t\t}\n\t\t}, [ popupState ] );\n\n\t\tuseEffect( () => {\n\t\t\tmaybeClosePopup();\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ activeBreakpoint ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SizeInput\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tsize={ controlSize }\n\t\t\t\t\tunit={ controlUnit }\n\t\t\t\t\tunits={ [ ...actualUnits ] }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\thandleSizeChange={ handleSizeChange }\n\t\t\t\t\thandleUnitChange={ handleUnitChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tonClick={ onInputClick }\n\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\tmin={ min }\n\t\t\t\t\tid={ id }\n\t\t\t\t\tariaLabel={ ariaLabel }\n\t\t\t\t/>\n\t\t\t\t{ anchorRef?.current && popupState.isOpen && (\n\t\t\t\t\t<TextFieldPopover\n\t\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\trestoreValue={ restoreValue }\n\t\t\t\t\t\tvalue={ controlSize as string }\n\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n\nfunction resolveUnits(\n\tpropType: PropType,\n\tenablePropTypeUnits: boolean,\n\tvariant: SizeVariant,\n\texternalUnits?: Unit[],\n\tactualExtendedOptions?: ExtendedOption[]\n) {\n\tconst fallback = [ ...defaultUnits[ variant ] ];\n\n\tif ( ! enablePropTypeUnits ) {\n\t\treturn [ ...( externalUnits ?? fallback ), ...( actualExtendedOptions || [] ) ];\n\t}\n\n\treturn ( propType.settings?.available_units as Unit[] ) ?? fallback;\n}\n\nfunction formatSize< TSize extends string | number >( size: TSize, unit: Unit | ExtendedOption ): TSize {\n\tif ( isUnitExtendedOption( unit ) ) {\n\t\treturn unit === 'auto' ? ( '' as TSize ) : ( String( size ?? '' ) as TSize );\n\t}\n\n\treturn size || size === 0 ? ( Number( size ) as TSize ) : ( NaN as TSize );\n}\n\nfunction createStateFromSizeProp(\n\tsizeValue: SizeValue | null,\n\tdefaultUnit: Unit | ExtendedOption,\n\tdefaultSize: string | number = '',\n\tcustomState: string = ''\n): State {\n\tconst unit = sizeValue?.unit ?? defaultUnit;\n\tconst size = sizeValue?.size ?? defaultSize;\n\n\treturn {\n\t\tnumeric:\n\t\t\t! isUnitExtendedOption( unit ) && ! isNaN( Number( size ) ) && ( size || size === 0 )\n\t\t\t\t? Number( size )\n\t\t\t\t: DEFAULT_SIZE,\n\t\tcustom: unit === 'custom' ? String( size ) : customState,\n\t\tunit,\n\t};\n}\n\nfunction extractValueFromState( state: State | null, allowEmpty: boolean = false ): SizeValue | null {\n\tif ( ! state ) {\n\t\treturn null;\n\t}\n\n\tif ( ! state?.unit ) {\n\t\treturn { size: DEFAULT_SIZE, unit: DEFAULT_UNIT };\n\t}\n\n\tconst { unit } = state;\n\n\tif ( unit === 'auto' ) {\n\t\treturn { size: '', unit };\n\t}\n\n\tif ( unit === 'custom' ) {\n\t\treturn { size: state.custom ?? '', unit: 'custom' };\n\t}\n\n\tconst numeric = state.numeric;\n\n\tif ( ! allowEmpty && ( numeric === undefined || numeric === null || Number.isNaN( numeric ) ) ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tsize: numeric,\n\t\tunit,\n\t};\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { Box, InputAdornment, type PopupState } from '@elementor/ui';\n\nimport ControlActions from '../../control-actions/control-actions';\nimport { type ExtendedOption, isUnitExtendedOption, type Unit } from '../../utils/size-control';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../size-control/text-field-inner-selection';\n\nconst RESTRICTED_KEYBOARD_SHORTCUT_UNITS = [ 'auto' ];\n\ntype SizeInputProps = {\n\tunit: Unit | ExtendedOption;\n\tsize: number | string;\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits: ( Unit | ExtendedOption )[];\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonFocus?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonClick?: ( event: React.MouseEvent< HTMLInputElement > ) => void;\n\thandleUnitChange: ( unit: Unit | ExtendedOption ) => void;\n\thandleSizeChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tpopupState: PopupState;\n\tdisabled?: boolean;\n\tmin?: number;\n\tid?: string;\n\tariaLabel?: string;\n};\n\nexport const SizeInput = ( {\n\tunits,\n\thandleUnitChange,\n\thandleSizeChange,\n\tplaceholder,\n\tstartIcon,\n\tonBlur,\n\tonFocus,\n\tonClick,\n\tsize,\n\tunit,\n\tpopupState,\n\tdisabled,\n\tmin,\n\tid,\n\tariaLabel,\n}: SizeInputProps ) => {\n\tconst unitInputBufferRef = useRef( '' );\n\tconst inputType = isUnitExtendedOption( unit ) ? 'text' : 'number';\n\tconst inputValue = ! isUnitExtendedOption( unit ) && Number.isNaN( size ) ? '' : size ?? '';\n\n\tconst handleKeyUp = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\n\t\tif ( ! /^[a-zA-Z%]$/.test( key ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst newChar = key.toLowerCase();\n\t\tconst updatedBuffer = ( unitInputBufferRef.current + newChar ).slice( -3 );\n\t\tunitInputBufferRef.current = updatedBuffer;\n\n\t\tconst matchedUnit =\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.includes( updatedBuffer ) ) ||\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.startsWith( newChar ) ) ||\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.includes( newChar ) );\n\n\t\tif ( matchedUnit ) {\n\t\t\thandleUnitChange( matchedUnit );\n\t\t}\n\t};\n\n\tconst popupAttributes = {\n\t\t'aria-controls': popupState.isOpen ? popupState.popupId : undefined,\n\t\t'aria-haspopup': true,\n\t};\n\n\tconst menuItemsAttributes = units.includes( 'custom' )\n\t\t? {\n\t\t\t\tcustom: popupAttributes,\n\t\t }\n\t\t: undefined;\n\n\tconst alternativeOptionLabels = {\n\t\tcustom: <MathFunctionIcon fontSize=\"tiny\" />,\n\t};\n\n\tconst InputProps = {\n\t\t...popupAttributes,\n\t\treadOnly: isUnitExtendedOption( unit ),\n\t\tautoComplete: 'off',\n\t\tonClick,\n\t\tonFocus,\n\t\tstartAdornment: startIcon ? (\n\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t{ startIcon }\n\t\t\t</InputAdornment>\n\t\t) : undefined,\n\t\tendAdornment: (\n\t\t\t<SelectionEndAdornment\n\t\t\t\tdisabled={ disabled }\n\t\t\t\toptions={ units }\n\t\t\t\tonClick={ handleUnitChange }\n\t\t\t\tvalue={ unit }\n\t\t\t\talternativeOptionLabels={ alternativeOptionLabels }\n\t\t\t\tmenuItemsAttributes={ menuItemsAttributes }\n\t\t\t/>\n\t\t),\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Box>\n\t\t\t\t<TextFieldInnerSelection\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\ttype={ inputType }\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\tonKeyUp={ handleKeyUp }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tInputProps={ InputProps }\n\t\t\t\t\tinputProps={ { min, step: 'any', 'aria-label': ariaLabel } }\n\t\t\t\t\tisPopoverOpen={ popupState.isOpen }\n\t\t\t\t\tid={ id }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</ControlActions>\n\t);\n};\n","export const lengthUnits = [ 'px', '%', 'em', 'rem', 'vw', 'vh', 'ch' ] as const;\nexport const angleUnits = [ 'deg', 'rad', 'grad', 'turn' ] as const;\nexport const timeUnits = [ 's', 'ms' ] as const;\nconst defaultExtendedOptions = [ 'auto', 'custom' ] as const;\n\nexport const DEFAULT_UNIT = 'px';\nexport const DEFAULT_SIZE = NaN;\n\nexport type LengthUnit = ( typeof lengthUnits )[ number ];\nexport type AngleUnit = ( typeof angleUnits )[ number ];\nexport type TimeUnit = ( typeof timeUnits )[ number ];\nexport type ExtendedOption = ( typeof defaultExtendedOptions )[ number ];\n\nexport type Unit = LengthUnit | AngleUnit | TimeUnit;\n\nexport function isUnitExtendedOption( unit: Unit | ExtendedOption ): unit is ExtendedOption {\n\treturn defaultExtendedOptions.includes( unit as ExtendedOption );\n}\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { type PropValue, sizePropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tButton,\n\tInputAdornment,\n\tMenu,\n\tstyled,\n\ttype TextFieldProps,\n\tusePopupState,\n} from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { DEFAULT_UNIT } from '../../utils/size-control';\nimport { NumberInput } from '../number-input';\n\ntype TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tInputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n\tinputProps?: TextFieldProps[ 'inputProps' ];\n\tdisabled?: boolean;\n\tisPopoverOpen?: boolean;\n\tid?: string;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t(\n\t\t{\n\t\t\tplaceholder,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tonBlur,\n\t\t\tonKeyDown,\n\t\t\tonKeyUp,\n\t\t\tInputProps,\n\t\t\tinputProps,\n\t\t\tdisabled,\n\t\t\tisPopoverOpen,\n\t\t\tid,\n\t\t}: TextFieldInnerSelectionProps,\n\t\tref\n\t) => {\n\t\tconst { placeholder: boundPropPlaceholder } = useBoundProp( sizePropTypeUtil );\n\n\t\tconst getCursorStyle = () => ( {\n\t\t\tinput: { cursor: InputProps.readOnly ? 'default !important' : undefined },\n\t\t} );\n\n\t\treturn (\n\t\t\t<NumberInput\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ getCursorStyle() }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonInput={ onChange }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonKeyUp={ onKeyUp }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tfocused={ isPopoverOpen ? true : undefined }\n\t\t\t\tplaceholder={ placeholder ?? ( String( boundPropPlaceholder?.size ?? '' ) || undefined ) }\n\t\t\t\tInputProps={ InputProps }\n\t\t\t\tinputProps={ inputProps }\n\t\t\t\tid={ id }\n\t\t\t/>\n\t\t);\n\t}\n);\n\ntype SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n\talternativeOptionLabels?: { [ key in T ]?: React.ReactNode };\n\tmenuItemsAttributes?: { [ key in T ]?: Record< string, unknown > };\n\tdisabled?: boolean;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\talternativeOptionLabels = {} as Record< T, React.ReactNode >,\n\tonClick,\n\tvalue,\n\tmenuItemsAttributes = {},\n\tdisabled,\n}: SelectionEndAdornmentProps< T > ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\t\tpopupState.close();\n\t};\n\n\tconst { placeholder, showPrimaryColor } = useUnitPlaceholder( value );\n\tconst itemStyles = {\n\t\tdisplay: 'flex',\n\t\tflexDirection: 'column',\n\t\tjustifyContent: 'center',\n\t};\n\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<StyledButton\n\t\t\t\tisPrimaryColor={ showPrimaryColor }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ placeholder ?? alternativeOptionLabels[ value ] ?? value }\n\t\t\t</StyledButton>\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\tkey={ option }\n\t\t\t\t\t\tonClick={ () => handleMenuItemClick( index ) }\n\t\t\t\t\t\t{ ...menuItemsAttributes?.[ option ] }\n\t\t\t\t\t\tprimaryTypographyProps={ {\n\t\t\t\t\t\t\tvariant: 'caption',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t...itemStyles,\n\t\t\t\t\t\t\t\tlineHeight: '1',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuItemTextProps={ {\n\t\t\t\t\t\t\tsx: itemStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ alternativeOptionLabels[ option ] ?? option.toUpperCase() }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\n};\n\nfunction useUnitPlaceholder( value: string ) {\n\tconst { value: externalValue, placeholder } = useBoundProp( sizePropTypeUtil );\n\tconst size = externalValue?.size;\n\tconst unit = externalValue?.unit;\n\n\tconst isCustomUnitWithSize = value === 'custom' && Boolean( size );\n\tconst isAutoUnit = value === 'auto';\n\tconst showPrimaryColor = isAutoUnit || isCustomUnitWithSize || Boolean( size );\n\n\tif ( ! placeholder ) {\n\t\treturn {\n\t\t\tplaceholder: null,\n\t\t\tshowPrimaryColor,\n\t\t};\n\t}\n\n\tconst isMissingUnit = ! unit;\n\tconst showPlaceholder = isMissingUnit && value === DEFAULT_UNIT;\n\n\treturn {\n\t\tplaceholder: showPlaceholder ? placeholder.unit : undefined,\n\t\tshowPrimaryColor,\n\t};\n}\n\nconst StyledButton = styled( Button, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPrimaryColor',\n} )( ( { isPrimaryColor, theme } ) => ( {\n\tcolor: isPrimaryColor ? theme.palette.text.primary : theme.palette.text.tertiary,\n\tfont: 'inherit',\n\tminWidth: 'initial',\n\ttextTransform: 'uppercase',\n} ) );\n","import * as React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { TextField, type TextFieldProps } from '@elementor/ui';\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+' ];\n\nexport const NumberInput = forwardRef( ( props: TextFieldProps, ref ) => {\n\tconst [ key, setKey ] = useState< number >( 0 );\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tblockRestrictedKeys( event, props.inputProps?.min );\n\n\t\tprops.onKeyDown?.( event );\n\t};\n\n\tconst handleBlur = ( event: React.FocusEvent< HTMLInputElement > ) => {\n\t\tprops.onBlur?.( event );\n\n\t\tconst { valid } = event.target.validity;\n\n\t\t// HTML number input quirk: invalid input (e.g. \"-9-\") returns value=\"\" but displays \"-9-\" to user,\n\t\t// so when we revert to last valid value we must re-mount the component to actually display it.\n\t\tif ( ! valid ) {\n\t\t\tsetKey( ( prev ) => prev + 1 );\n\t\t}\n\t};\n\n\treturn <TextField { ...props } ref={ ref } key={ key } onKeyDown={ handleKeyDown } onBlur={ handleBlur } />;\n} );\n\nfunction blockRestrictedKeys( event: React.KeyboardEvent< HTMLInputElement >, min: number ) {\n\tconst restrictedInputKeys = [ ...RESTRICTED_INPUT_KEYS ];\n\n\tif ( min >= 0 ) {\n\t\trestrictedInputKeys.push( '-' );\n\t}\n\n\tif ( restrictedInputKeys.includes( event.key ) ) {\n\t\tevent.preventDefault();\n\t}\n}\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n};\n\nconst SIZE = 'tiny';\n\nexport const TextFieldPopover = ( props: Props ) => {\n\tconst { popupState, restoreValue, anchorRef, value, onChange } = props;\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => {\n\t\t\t\tif ( inputRef.current ) {\n\t\t\t\t\tinputRef.current.focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\twidth: anchorRef.current?.offsetWidth + 'px',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'CSS function', 'elementor' ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t\ticon={ <MathFunctionIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<TextField\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tfullWidth\n\t\t\t\tinputProps={ {\n\t\t\t\t\tref: inputRef,\n\t\t\t\t} }\n\t\t\t\tsx={ { pt: 0, pr: 1.5, pb: 1.5, pl: 1.5 } }\n\t\t\t/>\n\t\t</Popover>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type ExtendedOption } from '@elementor/editor-controls';\n\nexport function useSizeExtendedOptions( options: ExtendedOption[], disableCustom: boolean ) {\n\treturn useMemo( () => {\n\t\tconst extendedOptions = [ ...options ];\n\n\t\tif ( ! disableCustom && ! extendedOptions.includes( 'custom' ) ) {\n\t\t\textendedOptions.push( 'custom' );\n\t\t} else if ( options.includes( 'custom' ) ) {\n\t\t\textendedOptions.splice( extendedOptions.indexOf( 'custom' ), 1 );\n\t\t}\n\n\t\treturn extendedOptions;\n\t}, [ options, disableCustom ] );\n}\n","import { useEffect, useState } from 'react';\nimport { type CreateOptions } from '@elementor/editor-props';\n\nimport { type SetValueMeta } from '../bound-prop-context';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | null;\n\tsetExternal: ( value: TValue | null, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\tpersistWhen: ( value: TValue | null ) => boolean;\n\tfallback: ( value: TValue | null ) => TValue;\n};\n\nexport const useSyncExternalState = < TValue, >( {\n\texternal,\n\tsetExternal,\n\tpersistWhen,\n\tfallback,\n}: UseInternalStateOptions< TValue > ) => {\n\tfunction toExternal( internalValue: TValue | null ) {\n\t\tif ( persistWhen( internalValue ) ) {\n\t\t\treturn internalValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction toInternal( externalValue: TValue | null, internalValue: TValue | null ) {\n\t\tif ( ! externalValue ) {\n\t\t\treturn fallback( internalValue );\n\t\t}\n\n\t\treturn externalValue;\n\t}\n\n\tconst [ internal, setInternal ] = useState< TValue >( toInternal( external, null ) );\n\n\tuseEffect( () => {\n\t\tsetInternal( ( prevInternal ) => toInternal( external, prevInternal ) );\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ external ] );\n\n\ttype SetterFunc = ( value: TValue ) => TValue;\n\n\tconst setInternalValue = ( setter: SetterFunc | TValue, options?: CreateOptions, meta?: SetValueMeta ) => {\n\t\tconst setterFn = ( typeof setter === 'function' ? setter : () => setter ) as SetterFunc;\n\t\tconst updated = setterFn( internal );\n\n\t\tsetInternal( updated );\n\t\tsetExternal( toExternal( updated ), options, meta );\n\t};\n\n\treturn [ internal, setInternalValue ] as const;\n};\n","import * as React from 'react';\nimport { forwardRef, useRef } from 'react';\nimport { strokePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SectionContent } from '../components/section-content';\nimport { createControl } from '../create-control';\nimport { type LengthUnit } from '../utils/size-control';\nimport { ColorControl } from './color-control';\nimport { SizeControl } from './size-control';\n\ntype StrokeProps = {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n};\n\nconst units: LengthUnit[] = [ 'px', 'em', 'rem' ];\n\nexport const StrokeControl = createControl( () => {\n\tconst propContext = useBoundProp( strokePropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<SectionContent>\n\t\t\t\t<Control bind=\"width\" label={ __( 'Stroke width', 'elementor' ) } ref={ rowRef }>\n\t\t\t\t\t<SizeControl units={ units } anchorRef={ rowRef } />\n\t\t\t\t</Control>\n\t\t\t\t<Control bind=\"color\" label={ __( 'Stroke color', 'elementor' ) }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Control>\n\t\t\t</SectionContent>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = forwardRef( ( { bind, label, children }: StrokeProps, ref ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ ref }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n) );\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\ntype SectionContentProps = PropsWithChildren< {\n\tgap?: number;\n\tsx?: {\n\t\tpt?: number;\n\t};\n} >;\n\nexport const SectionContent: FC< SectionContentProps > = ( { gap = 0.5, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { colorPropTypeUtil, type PropTypeUtil } from '@elementor/editor-props';\nimport { UnstableColorField, type UnstableColorFieldProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = Partial< Omit< UnstableColorFieldProps, 'value' | 'onChange' > > & {\n\tpropTypeUtil?: PropTypeUtil< string, string >;\n\tanchorEl?: HTMLElement | null;\n\tid?: string;\n};\n\nexport const ColorControl = createControl(\n\t( { propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, id, ...props }: Props ) => {\n\t\tconst { value, setValue, placeholder: boundPropPlaceholder, disabled } = useBoundProp( propTypeUtil );\n\n\t\tconst placeholder = props.placeholder ?? boundPropPlaceholder;\n\n\t\tconst handleChange = ( selectedColor: string ) => {\n\t\t\tsetValue( selectedColor || null );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableColorField\n\t\t\t\t\tid={ id }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tplaceholder={ placeholder ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t...slotProps,\n\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\tanchorEl,\n\t\t\t\t\t\t\tanchorOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransformOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tslotProps: {\n\t\t\t\t\t\t\t\tcolorIndicator: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcolorBox: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { boxShadowPropTypeUtil, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { FormLabel, Grid, styled, type SxProps, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../components/control-repeater';\nimport { DisableItemAction } from '../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../components/control-repeater/actions/remove-item-action';\nimport { useRepeaterContext } from '../components/control-repeater/context/repeater-context';\nimport { EditItemPopover } from '../components/control-repeater/items/edit-item-popover';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { RepeaterHeader } from '../components/repeater/repeater-header';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SelectControl } from './select-control';\nimport { CUSTOM_SIZE_LABEL, SizeControl } from './size-control';\n\nexport const BoxShadowRepeaterControl = createControl( () => {\n\tconst { propType, value, setValue, disabled } = useBoundProp( boxShadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue } isDisabled={ () => disabled }>\n\t\t\t<ControlRepeater initial={ initialShadow } propTypeUtil={ boxShadowPropTypeUtil }>\n\t\t\t\t<RepeaterHeader label={ __( 'Box shadow', 'elementor' ) }>\n\t\t\t\t\t<TooltipAddItemAction newItemIndex={ 0 } disabled={ disabled } ariaLabel={ 'Box shadow' } />\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<Content />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\theight: '1rem',\n\twidth: '1rem',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color?.value } />\n);\n\nconst Content = () => {\n\tconst context = useBoundProp( shadowPropTypeUtil );\n\tconst rowRef: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\tconst { rowRef: anchorEl } = useRepeaterContext();\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Control bind=\"color\" label={ __( 'Color', 'elementor' ) }>\n\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"position\" label={ __( 'Position', 'elementor' ) } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t{ label: __( 'Inset', 'elementor' ), value: 'inset' },\n\t\t\t\t\t\t\t\t{ label: __( 'Outset', 'elementor' ), value: null },\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 0 ] }>\n\t\t\t\t\t<Control bind=\"hOffset\" label={ __( 'Horizontal', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"vOffset\" label={ __( 'Vertical', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 1 ] }>\n\t\t\t\t\t<Control bind=\"blur\" label={ __( 'Blur', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"spread\" label={ __( 'Spread', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PopoverContent>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tlabel,\n\tbind,\n\tchildren,\n\tsx,\n}: {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tsx?: SxProps< Theme >;\n} ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid item xs={ 6 } sx={ sx }>\n\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<FormLabel size=\"tiny\">{ label }</FormLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n);\n\nconst ItemLabel = ( { value }: { value: ShadowPropValue } ) => {\n\tconst { position, hOffset, vOffset, blur, spread } = value.value;\n\n\tconst { size: blurSize = '', unit: blurUnit = '' } = blur?.value || {};\n\tconst { size: spreadSize = '', unit: spreadUnit = '' } = spread?.value || {};\n\tconst { size: hOffsetSize = 'unset', unit: hOffsetUnit = '' } = hOffset?.value || {};\n\tconst { size: vOffsetSize = 'unset', unit: vOffsetUnit = '' } = vOffset?.value || {};\n\tconst positionLabel = position?.value || 'outset';\n\n\tconst sizes = [\n\t\t[ hOffsetSize, hOffsetUnit ],\n\t\t[ vOffsetSize, vOffsetUnit ],\n\t\t[ blurSize, blurUnit ],\n\t\t[ spreadSize, spreadUnit ],\n\t]\n\t\t.map( ( [ size, unit ] ) => {\n\t\t\tif ( unit !== 'custom' ) {\n\t\t\t\treturn size + unit;\n\t\t\t}\n\n\t\t\treturn ! size ? CUSTOM_SIZE_LABEL : size;\n\t\t} )\n\t\t.join( ' ' );\n\n\treturn (\n\t\t<span style={ { textTransform: 'capitalize' } }>\n\t\t\t{ positionLabel }: { sizes }\n\t\t</span>\n\t);\n};\n\nconst initialShadow: ShadowPropValue = {\n\t$$type: 'shadow',\n\tvalue: {\n\t\thOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tvOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tblur: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 10 },\n\t\t},\n\t\tspread: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: 'rgba(0, 0, 0, 1)',\n\t\t},\n\t\tposition: null,\n\t},\n};\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { Box, IconButton, Infotip } from '@elementor/ui';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport type TooltipAddItemActionProps = {\n\tdisabled?: boolean;\n\tenableTooltip?: boolean;\n\ttooltipContent?: React.ReactNode;\n\tnewItemIndex?: number;\n\tariaLabel?: string;\n};\n\nexport const TooltipAddItemAction = ( {\n\tdisabled = false,\n\tenableTooltip = false,\n\ttooltipContent = null,\n\tnewItemIndex,\n\tariaLabel,\n}: TooltipAddItemActionProps ) => {\n\tconst { addItem } = useRepeaterContext();\n\n\tconst onClick = ( ev: React.MouseEvent ) => addItem( ev, { index: newItemIndex } );\n\n\treturn (\n\t\t<ConditionalToolTip content={ tooltipContent } enable={ enableTooltip }>\n\t\t\t<Box component=\"span\" sx={ { cursor: disabled ? 'not-allowed' : 'pointer' } }>\n\t\t\t\t<IconButton\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t/* Translators: %s: Aria label. */\n\t\t\t\t\taria-label={ sprintf( __( 'Add %s item', 'elementor' ), ariaLabel?.toLowerCase() ) }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Box>\n\t\t</ConditionalToolTip>\n\t);\n};\n\nconst ConditionalToolTip = ( {\n\tchildren,\n\tenable,\n\tcontent,\n}: React.PropsWithChildren< {\n\tcontent?: React.ReactNode;\n\tenable: boolean;\n} > ) =>\n\tenable && content ? (\n\t\t<Infotip placement=\"right\" color=\"secondary\" content={ content }>\n\t\t\t{ children }\n\t\t</Infotip>\n\t) : (\n\t\tchildren\n\t);\n","import * as React from 'react';\nimport { createContext, useMemo, useState } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\nimport { type PopupState, usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context/use-bound-prop';\nimport { useSyncExternalState } from '../../../hooks/use-sync-external-state';\nimport { eventBus } from '../../../services/event-bus';\nimport { type Item, type RepeatablePropValue } from '../types';\nimport { ItemContext } from './item-context';\n\ntype SetterFn< T > = ( prevItems: T ) => T;\n\ntype AddItem< T > = { item?: T; index?: number };\n\ntype ItemWithKey< T > = { key: number; item: T };\n\ntype RepeaterContextType< T extends RepeatablePropValue > = {\n\tisOpen: boolean;\n\topenItemIndex: number;\n\tsetOpenItemIndex: ( key: number ) => void;\n\titems: ItemWithKey< Item< T > >[];\n\tsetItems: ( items: ItemWithKey< T >[] ) => void;\n\tpopoverState: PopupState;\n\tinitial: T;\n\taddItem: ( ev: React.MouseEvent, config?: AddItem< T > ) => void;\n\tupdateItem: ( item: T, index: number ) => void;\n\tremoveItem: ( index: number ) => void;\n\trowRef: HTMLElement | null;\n\tsetRowRef: ( ref: HTMLElement | null | SetterFn< HTMLElement | null > ) => void;\n\tisItemDisabled: ( index: number ) => boolean;\n};\n\nconst RepeaterContext = createContext< RepeaterContextType< RepeatablePropValue > | null >( null );\n\nexport const EMPTY_OPEN_ITEM = -1;\n\nexport const useRepeaterContext = () => {\n\tconst context = React.useContext( RepeaterContext );\n\tconst itemContext = React.useContext( ItemContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeaterContext must be used within a RepeaterContextProvider' );\n\t}\n\n\treturn { ...context, ...itemContext };\n};\n\nexport const RepeaterContextProvider = < T extends RepeatablePropValue = RepeatablePropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisItemDisabled = () => false,\n}: React.PropsWithChildren< {\n\tinitial: T;\n\tpropTypeUtil: PropTypeUtil< string, T[] >;\n\tisSortable?: boolean;\n\tisItemDisabled?: ( item: Item< T > ) => boolean;\n} > ) => {\n\tconst { value: repeaterValues, setValue: setRepeaterValues } = useBoundProp( propTypeUtil );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\tfallback: () => [] as T[],\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( () => {\n\t\treturn items?.map( ( _, index ) => index ) ?? [];\n\t} );\n\n\tconst itemsWithKeys = useMemo(\n\t\t() =>\n\t\t\tuniqueKeys\n\t\t\t\t.map( ( key, index ) => ( {\n\t\t\t\t\tkey,\n\t\t\t\t\titem: items[ index ],\n\t\t\t\t} ) )\n\t\t\t\t.filter( ( { item } ) => item !== undefined ),\n\t\t[ uniqueKeys, items ]\n\t);\n\n\tconst handleSetItems = ( newItemsWithKeys: ItemWithKey< T >[] ) => {\n\t\tsetItems( newItemsWithKeys.map( ( { item } ) => item ) );\n\t};\n\n\tconst [ openItemIndex, setOpenItemIndex ] = useState( EMPTY_OPEN_ITEM );\n\tconst [ rowRef, setRowRef ] = useState< HTMLElement | null >( null );\n\n\tconst isOpen = openItemIndex !== EMPTY_OPEN_ITEM;\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst addItem = ( ev: React.MouseEvent, config?: AddItem< T > ) => {\n\t\tconst item = config?.item ?? { ...initial };\n\t\tconst newIndex = config?.index ?? items.length;\n\t\tconst newKey = generateUniqueKey();\n\t\tconst newItems = [ ...items ];\n\n\t\tnewItems.splice( newIndex, 0, item );\n\t\tsetItems( newItems );\n\n\t\tsetUniqueKeys( [ ...uniqueKeys.slice( 0, newIndex ), newKey, ...uniqueKeys.slice( newIndex ) ] );\n\n\t\tsetOpenItemIndex( newIndex );\n\t\tpopoverState.open( rowRef ?? ev );\n\n\t\teventBus.emit( `${ propTypeUtil.key }-item-added`, {\n\t\t\titemValue: initial.value,\n\t\t} );\n\t};\n\n\tconst removeItem = ( index: number ) => {\n\t\tconst itemToRemove = items[ index ];\n\n\t\tsetItems( items.filter( ( _, pos ) => pos !== index ) );\n\t\tsetUniqueKeys( uniqueKeys.filter( ( _, pos ) => pos !== index ) );\n\n\t\teventBus.emit( `${ propTypeUtil.key }-item-removed`, {\n\t\t\titemValue: itemToRemove?.value,\n\t\t} );\n\t};\n\n\tconst updateItem = ( updatedItem: T, index: number ) => {\n\t\tconst newItems = [ ...items.slice( 0, index ), updatedItem, ...items.slice( index + 1 ) ];\n\t\tsetItems( newItems );\n\t};\n\n\treturn (\n\t\t<RepeaterContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tisOpen,\n\t\t\t\topenItemIndex,\n\t\t\t\tsetOpenItemIndex,\n\t\t\t\titems: ( itemsWithKeys ?? [] ) as RepeaterContextType< T >[ 'items' ],\n\t\t\t\tsetItems: handleSetItems as RepeaterContextType< RepeatablePropValue >[ 'setItems' ],\n\t\t\t\tpopoverState,\n\t\t\t\tinitial,\n\t\t\t\tupdateItem: updateItem as RepeaterContextType< RepeatablePropValue >[ 'updateItem' ],\n\t\t\t\taddItem: addItem as RepeaterContextType< RepeatablePropValue >[ 'addItem' ],\n\t\t\t\tremoveItem,\n\t\t\t\trowRef,\n\t\t\t\tsetRowRef,\n\t\t\t\tisItemDisabled: ( index: number ) => isItemDisabled( itemsWithKeys[ index ].item ),\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</RepeaterContext.Provider>\n\t);\n};\n\nconst generateUniqueKey = () => {\n\treturn Date.now() + Math.floor( Math.random() * 1000000 );\n};\n","class EventBus {\n\tprivate listeners = new Map< string, Set< ( data?: unknown ) => void > >();\n\n\tsubscribe( eventName: string, callback: ( data?: unknown ) => void ) {\n\t\tif ( ! this.listeners.has( eventName ) ) {\n\t\t\tthis.listeners.set( eventName, new Set() );\n\t\t}\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( eventListeners ) {\n\t\t\teventListeners.add( callback );\n\t\t}\n\t}\n\n\tunsubscribe( eventName: string, callback: ( data?: unknown ) => void ) {\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( ! eventListeners ) {\n\t\t\treturn;\n\t\t}\n\n\t\teventListeners.delete( callback );\n\t\tif ( eventListeners.size === 0 ) {\n\t\t\tthis.listeners.delete( eventName );\n\t\t}\n\t}\n\n\temit( eventName: string, data?: unknown ) {\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( eventListeners ) {\n\t\t\teventListeners.forEach( ( callback ) => callback( data ) );\n\t\t}\n\t}\n\n\tclearAll(): void {\n\t\tthis.listeners.clear();\n\t}\n}\n\nexport const eventBus = new EventBus();\n","import { createContext } from 'react';\n\nimport { type Item, type RepeatablePropValue } from '../types';\n\nexport const ItemContext = createContext< { index: number; value: Item< RepeatablePropValue > } >( {\n\tindex: -1,\n\tvalue: {} as Item< RepeatablePropValue >,\n} );\n","import * as React from 'react';\n\nimport { SortableItem, SortableProvider } from '../../repeater/sortable';\nimport { ItemContext } from '../context/item-context';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { type Item, type RepeatablePropValue } from '../types';\n\nexport const ItemsContainer = < T extends RepeatablePropValue >( {\n\tisSortable = true,\n\tchildren,\n}: React.PropsWithChildren< {\n\tisSortable?: boolean;\n} > ) => {\n\tconst { items, setItems } = useRepeaterContext();\n\tconst keys = items.map( ( { key } ) => key );\n\n\tif ( ! children ) {\n\t\treturn null;\n\t}\n\n\tconst onChangeOrder = ( newKeys: number[] ) => {\n\t\tsetItems(\n\t\t\tnewKeys.map( ( key ) => {\n\t\t\t\tconst index = items.findIndex( ( item ) => item.key === key );\n\n\t\t\t\treturn items[ index ];\n\t\t\t} )\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SortableProvider value={ keys } onChange={ onChangeOrder }>\n\t\t\t\t{ keys.map( ( key: number, index: number ) => {\n\t\t\t\t\tconst value = items[ index ].item as Item< T >;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t<ItemContext.Provider value={ { index, value } }>{ children }</ItemContext.Provider>\n\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</SortableProvider>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tDivider,\n\tList,\n\tListItem,\n\tstyled,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemProps,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n\ttype UnstableSortableProviderProps,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const SortableProvider = < T extends string | number >( props: UnstableSortableProviderProps< T > ) => {\n\treturn (\n\t\t<List sx={ { p: 0, my: -0.5, mx: 0 } }>\n\t\t\t<UnstableSortableProvider restrictAxis disableDragOverlay={ false } variant={ 'static' } { ...props } />\n\t\t</List>\n\t);\n};\n\ntype SortableItemProps = {\n\tid: UnstableSortableItemProps[ 'id' ];\n\tchildren: React.ReactNode;\n\tdisabled?: boolean;\n};\n\nexport const SortableItem = ( { id, children, disabled }: SortableItemProps ): React.ReactNode => {\n\treturn (\n\t\t<UnstableSortableItem\n\t\t\tid={ id }\n\t\t\tdisabled={ disabled }\n\t\t\trender={ ( {\n\t\t\t\titemProps,\n\t\t\t\ttriggerProps,\n\t\t\t\titemStyle,\n\t\t\t\ttriggerStyle,\n\t\t\t\tshowDropIndication,\n\t\t\t\tdropIndicationStyle,\n\t\t\t}: UnstableSortableItemRenderProps ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StyledListItem { ...itemProps } style={ itemStyle } tabIndex={ -1 }>\n\t\t\t\t\t\t{ ! disabled && <SortableTrigger { ...triggerProps } style={ triggerStyle } /> }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t{ showDropIndication && <StyledDivider style={ dropIndicationStyle } /> }\n\t\t\t\t\t</StyledListItem>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst StyledListItem = styled( ListItem )`\n\tposition: relative;\n\tmargin-inline: 0px;\n\tpadding-inline: 0px;\n\tpadding-block: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\n\t& .class-item-sortable-trigger {\n\t\tcolor: ${ ( { theme } ) => theme.palette.action.active };\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tvisibility: hidden;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tpadding-inline-end: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\ttransform: translate( -75%, -50% );\n\t}\n\n\t&[aria-describedby=''] > .MuiTag-root {\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.background.paper };\n\t\tbox-shadow: ${ ( { theme } ) => theme.shadows[ 3 ] };\n\t}\n\n\t&:hover,\n\t&:focus-within {\n\t\t& .class-item-sortable-trigger {\n\t\t\tvisibility: visible;\n\t\t}\n\t}\n`;\n\nconst SortableTrigger = ( props: React.HTMLAttributes< HTMLDivElement > ) => (\n\t<div\n\t\t{ ...props }\n\t\trole=\"button\"\n\t\tclassName=\"class-item-sortable-trigger\"\n\t\ttabIndex={ 0 }\n\t\taria-label={ __( 'Drag item', 'elementor' ) }\n\t>\n\t\t<GripVerticalIcon fontSize=\"tiny\" />\n\t</div>\n);\n\nconst StyledDivider = styled( Divider )`\n\theight: 0px;\n\tborder: none;\n\toverflow: visible;\n\n\t&:after {\n\t\t--height: 2px;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: var( --height );\n\t\tmargin-block: calc( -1 * var( --height ) / 2 );\n\t\tborder-radius: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.text.primary };\n\t}\n`;\n","import * as React from 'react';\nimport { bindTrigger } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { RepeatableControlContext } from '../../../hooks/use-repeatable-control-context';\nimport { RepeaterTag } from '../../repeater/repeater-tag';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { RepeaterItemActionsSlot, RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../locations';\nimport { type ItemProps, type RepeatablePropValue } from '../types';\n\nexport const Item = < T extends RepeatablePropValue >( { Label, Icon, actions }: ItemProps< T > ) => {\n\tconst {\n\t\tpopoverState,\n\t\tsetRowRef,\n\t\topenItemIndex,\n\t\tsetOpenItemIndex,\n\t\tindex = -1,\n\t\tvalue,\n\t\tisItemDisabled,\n\t} = useRepeaterContext();\n\tconst repeatableContext = React.useContext( RepeatableControlContext );\n\tconst disableOpen = !! repeatableContext?.props?.readOnly;\n\tconst triggerProps = bindTrigger( popoverState );\n\n\tconst onClick = ( ev: React.MouseEvent ) => {\n\t\tif ( disableOpen || isItemDisabled( index ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttriggerProps.onClick( ev );\n\t\tsetOpenItemIndex( index );\n\t};\n\n\tconst setRef = ( ref: HTMLDivElement | null ) => {\n\t\tif ( ! ref || openItemIndex !== index || ref === popoverState.anchorEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetRowRef( ref );\n\t\tpopoverState.setAnchorEl( ref );\n\t};\n\n\treturn (\n\t\t<RepeaterTag\n\t\t\tref={ setRef }\n\t\t\tlabel={\n\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t<Label value={ value as T } />\n\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t}\n\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t{ ...triggerProps }\n\t\t\tonClick={ onClick }\n\t\t\tstartIcon={\n\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t<Icon value={ value as T } />\n\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t}\n\t\t\tsx={ {\n\t\t\t\tminHeight: ( theme ) => theme.spacing( 3.5 ),\n\t\t\t\t...( isItemDisabled( index ) && {\n\t\t\t\t\t'[role=\"button\"]': {\n\t\t\t\t\t\tcursor: 'not-allowed',\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t} }\n\t\t\tactions={\n\t\t\t\t<>\n\t\t\t\t\t<RepeaterItemActionsSlot index={ index ?? -1 } />\n\t\t\t\t\t{ actions }\n\t\t\t\t</>\n\t\t\t}\n\t\t/>\n\t);\n};\n","import { createContext, useContext } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nimport type { Item, RepeatablePropValue } from '../components/control-repeater/types';\n\nexport type ChildControlConfig = {\n\tcomponent: React.ComponentType;\n\tprops?: Record< string, unknown >;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpropTypeUtil: PropTypeUtil< string, any >;\n\tlabel?: string;\n\tisItemDisabled?: ( item: Item< RepeatablePropValue > ) => boolean;\n};\n\ntype RepeatableControlContextType = ChildControlConfig & {\n\tplaceholder: string;\n\tpatternLabel: string;\n};\n\nconst RepeatableControlContext = createContext< RepeatableControlContextType | undefined >( undefined );\n\nconst useRepeatableControlContext = () => {\n\tconst context = useContext( RepeatableControlContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeatableControlContext must be used within RepeatableControl' );\n\t}\n\n\treturn context;\n};\n\nexport { RepeatableControlContext, useRepeatableControlContext };\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { UnstableTag, type UnstableTagProps } from '@elementor/ui';\n\nexport const RepeaterTag = forwardRef< HTMLDivElement, UnstableTagProps >( ( props, ref ) => {\n\treturn (\n\t\t<UnstableTag\n\t\t\tref={ ref }\n\t\t\tfullWidth\n\t\t\tshowActionsOnHover\n\t\t\tvariant=\"outlined\"\n\t\t\tsx={ { minHeight: ( theme ) => theme.spacing( 3.5 ) } }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n","import { type PropValue } from '@elementor/editor-props';\nimport { createLocation, createReplaceableLocation } from '@elementor/locations';\n\n// Repeaters\nexport const { Slot: RepeaterItemIconSlot, inject: injectIntoRepeaterItemIcon } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemLabelSlot, inject: injectIntoRepeaterItemLabel } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemActionsSlot, inject: injectIntoRepeaterItemActions } = createLocation< {\n\tindex: number;\n} >();\n","import * as React from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nimport { SectionContent } from '../section-content';\nimport { RepeaterContextProvider } from './context/repeater-context';\nimport { type Item, type RepeatablePropValue } from './types';\n\nexport const ControlRepeater = < T extends RepeatablePropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisItemDisabled,\n}: React.PropsWithChildren< {\n\tinitial: T;\n\tpropTypeUtil: PropTypeUtil< string, T[] >;\n\tisItemDisabled?: ( item: Item< T > ) => boolean;\n} > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<RepeaterContextProvider\n\t\t\t\tinitial={ initial }\n\t\t\t\tpropTypeUtil={ propTypeUtil }\n\t\t\t\tisItemDisabled={ isItemDisabled }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</RepeaterContextProvider>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\nconst SIZE = 'tiny';\n\nexport const DisableItemAction = () => {\n\tconst { items, updateItem, index = -1 } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst propDisabled = items[ index ].item.disabled ?? false;\n\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\n\tconst onClick = () => {\n\t\tconst self = structuredClone( items[ index ].item );\n\n\t\tself.disabled = ! self.disabled;\n\n\t\tif ( ! self.disabled ) {\n\t\t\tdelete self.disabled;\n\t\t}\n\n\t\tupdateItem( self, index );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ toggleLabel }>\n\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { CopyIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const DuplicateItemAction = () => {\n\tconst { items, addItem, index = -1, isItemDisabled } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst item = items[ index ]?.item;\n\n\tconst onClick = ( ev: React.MouseEvent ) => {\n\t\tconst newItem = structuredClone( item );\n\n\t\taddItem( ev, { item: newItem, index: index + 1 } );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\tonClick={ onClick }\n\t\t\t\taria-label={ duplicateLabel }\n\t\t\t\tdisabled={ isItemDisabled( index ) }\n\t\t\t>\n\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { XIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const RemoveItemAction = () => {\n\tconst { removeItem, index = -1 } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\tconst onClick = () => removeItem( index );\n\treturn (\n\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ removeLabel }>\n\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { bindPopover, Box } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { RepeaterPopover } from '../../repeater/repeater-popover';\nimport { EMPTY_OPEN_ITEM, useRepeaterContext } from '../context/repeater-context';\n\nexport const EditItemPopover = ( { children }: { children: React.ReactNode } ) => {\n\tconst { popoverState, openItemIndex, isOpen, rowRef, setOpenItemIndex, setRowRef } = useRepeaterContext();\n\n\tif ( ! isOpen || ! rowRef ) {\n\t\treturn null;\n\t}\n\n\tconst onClose = () => {\n\t\tsetRowRef( null );\n\t\tpopoverState.setAnchorEl( null );\n\t\tsetOpenItemIndex( EMPTY_OPEN_ITEM );\n\t};\n\n\treturn (\n\t\t<RepeaterPopover width={ rowRef.offsetWidth } { ...bindPopover( popoverState ) } onClose={ onClose }>\n\t\t\t<PropKeyProvider bind={ String( openItemIndex ) }>\n\t\t\t\t<Box>{ children }</Box>\n\t\t\t</PropKeyProvider>\n\t\t</RepeaterPopover>\n\t);\n};\n","import * as React from 'react';\nimport { Popover, type PopoverProps } from '@elementor/ui';\n\nexport const RepeaterPopover = ( { children, width, ...props }: PopoverProps & { width?: number } ) => {\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: { marginBlockStart: 0.5, width, overflow: 'visible' },\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t</Popover>\n\t);\n};\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack, type StackProps } from '@elementor/ui';\n\nexport const PopoverContent: FC< PropsWithChildren< StackProps > > = ( { gap = 1.5, children, ...props } ) => (\n\t<Stack { ...props } gap={ gap }>\n\t\t{ children }\n\t</Stack>\n);\n","import { forwardRef, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\ntype PopoverGridContainerProps = PropsWithChildren< {\n\tgap?: number;\n\talignItems?: React.ComponentProps< typeof Grid >[ 'alignItems' ];\n\tflexWrap?: React.ComponentProps< typeof Grid >[ 'flexWrap' ];\n} >;\n\nexport const PopoverGridContainer = forwardRef(\n\t( { gap = 1.5, alignItems = 'center', flexWrap = 'nowrap', children }: PopoverGridContainerProps, ref ) => (\n\t\t<Grid container gap={ gap } alignItems={ alignItems } flexWrap={ flexWrap } ref={ ref }>\n\t\t\t{ children }\n\t\t</Grid>\n\t)\n);\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { Box, Stack, Typography } from '@elementor/ui';\n\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\n\nexport const RepeaterHeader = forwardRef(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tchildren,\n\t\t\tadornment: Adornment = ControlAdornments,\n\t\t}: React.PropsWithChildren< {\n\t\t\tlabel: string;\n\t\t\tadornment?: React.FC;\n\t\t} >,\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ 1 }\n\t\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t\t\tref={ ref }\n\t\t\t>\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap={ 1 } sx={ { flexGrow: 1 } }>\n\t\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Adornment />\n\t\t\t\t</Box>\n\t\t\t\t{ children }\n\t\t\t</Stack>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type PropType } from '@elementor/editor-props';\n\nimport { useControlAdornments } from './control-adornments-context';\n\nexport function ControlAdornments( {\n\tcustomContext,\n}: {\n\tcustomContext?: {\n\t\tpath: string[];\n\t\tpropType: PropType;\n\t};\n} ) {\n\tconst items = useControlAdornments();\n\n\tif ( items?.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ items.map( ( { Adornment, id } ) => (\n\t\t\t\t<Adornment key={ id } customContext={ customContext } />\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropType } from '@elementor/editor-props';\n\nexport type AdornmentComponent = ComponentType< { customContext?: { path: string[]; propType: PropType } } >;\ntype ControlAdornmentsItem = {\n\tid: string;\n\tAdornment: AdornmentComponent;\n};\n\ntype ControlAdornmentsContext = {\n\titems?: ControlAdornmentsItem[];\n};\n\nconst Context = createContext< ControlAdornmentsContext | null >( null );\n\ntype ControlAdornmentsProviderProps = PropsWithChildren< ControlAdornmentsContext >;\n\nexport const ControlAdornmentsProvider = ( { children, items }: ControlAdornmentsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlAdornments = () => {\n\tconst context = useContext( Context );\n\n\treturn context?.items ?? [];\n};\n","import * as React from 'react';\nimport {\n\tbackdropFilterPropTypeUtil,\n\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\ttype PropTypeUtil,\n} from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../../components/control-repeater';\nimport { DisableItemAction } from '../../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../components/control-repeater/actions/remove-item-action';\nimport { EditItemPopover } from '../../components/control-repeater/items/edit-item-popover';\nimport type { RepeatablePropValue } from '../../components/control-repeater/types';\nimport { RepeaterHeader } from '../../components/repeater/repeater-header';\nimport { createControl } from '../../create-control';\nimport { FilterConfigProvider, useFilterConfig } from './context/filter-config-context';\nimport { FilterContent } from './filter-content';\nimport { FilterIcon } from './filter-icon';\nimport { FilterLabel } from './filter-label';\n\ntype FilterPropName = {\n\tfilterPropName?: 'filter' | 'backdrop-filter';\n};\n\ntype Config = {\n\tpropTypeUtil: PropTypeUtil< string, FilterItemPropValue[] >;\n\tlabel: string;\n};\n\nconst FILTER_CONFIG: Record< string, Config > = {\n\tfilter: {\n\t\tpropTypeUtil: filterPropTypeUtil,\n\t\tlabel: __( 'Filters', 'elementor' ),\n\t},\n\t'backdrop-filter': {\n\t\tpropTypeUtil: backdropFilterPropTypeUtil,\n\t\tlabel: __( 'Backdrop filters', 'elementor' ),\n\t},\n} as const;\n\nexport const FilterRepeaterControl = createControl( ( { filterPropName = 'filter' }: FilterPropName ) => {\n\tconst { propTypeUtil, label } = ensureFilterConfig( filterPropName );\n\tconst { propType, value: filterValues, setValue } = useBoundProp( propTypeUtil );\n\n\treturn (\n\t\t<FilterConfigProvider>\n\t\t\t<PropProvider propType={ propType } value={ filterValues } setValue={ setValue }>\n\t\t\t\t<Repeater\n\t\t\t\t\tpropTypeUtil={ propTypeUtil as PropTypeUtil< string, RepeatablePropValue[] > }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tfilterPropName={ filterPropName }\n\t\t\t\t/>\n\t\t\t</PropProvider>\n\t\t</FilterConfigProvider>\n\t);\n} );\n\ntype RepeaterProps = {\n\tpropTypeUtil: PropTypeUtil< string, RepeatablePropValue[] >;\n\tlabel: string;\n\tfilterPropName: string;\n};\n\nconst Repeater = ( { propTypeUtil, label, filterPropName }: RepeaterProps ) => {\n\tconst { getInitialValue } = useFilterConfig();\n\n\treturn (\n\t\t<ControlRepeater initial={ getInitialValue() as RepeatablePropValue } propTypeUtil={ propTypeUtil }>\n\t\t\t<RepeaterHeader label={ label }>\n\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\tnewItemIndex={ 0 }\n\t\t\t\t\tariaLabel={ filterPropName === 'backdrop-filter' ? 'backdrop filter' : 'filter' }\n\t\t\t\t/>\n\t\t\t</RepeaterHeader>\n\t\t\t<ItemsContainer>\n\t\t\t\t<Item\n\t\t\t\t\tLabel={ FilterLabel }\n\t\t\t\t\tIcon={ FilterIcon }\n\t\t\t\t\tactions={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ItemsContainer>\n\t\t\t<EditItemPopover>\n\t\t\t\t<FilterContent />\n\t\t\t</EditItemPopover>\n\t\t</ControlRepeater>\n\t);\n};\n\nfunction ensureFilterConfig( name: string ): Config {\n\tif ( name && name in FILTER_CONFIG ) {\n\t\treturn FILTER_CONFIG[ name ];\n\t}\n\n\treturn FILTER_CONFIG.filter;\n}\n","import * as React from 'react';\nimport { createContext, useContext, useMemo } from 'react';\nimport { cssFilterFunctionPropUtil, type PropType } from '@elementor/editor-props';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type FilterFunction } from '../configs';\nimport { buildFilterConfig, type FilterConfigEntry } from '../utils';\n\ntype FilterConfigMap = Record< FilterFunction, FilterConfigEntry >;\n\ntype FilterConfigContextValue = {\n\tconfig: FilterConfigMap;\n\tfilterOptions: Array< { value: string; label: string } >;\n\tgetFilterFunctionConfig: ( filterFunction: FilterFunction ) => FilterConfigEntry;\n\tgetInitialValue: () => unknown;\n};\n\nconst FilterConfigContext = createContext< FilterConfigContextValue | null >( null );\n\nexport function FilterConfigProvider( { children }: React.PropsWithChildren ) {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil ) as { propType: { item_prop_type: PropType } };\n\n\tconst contextValue = useMemo( () => {\n\t\tconst config = buildFilterConfig( propContext.propType.item_prop_type );\n\t\tconst filterOptions = Object.entries( config ).map( ( [ key, conf ] ) => ( {\n\t\t\tvalue: key,\n\t\t\tlabel: conf.name,\n\t\t} ) );\n\n\t\treturn {\n\t\t\tconfig,\n\t\t\tfilterOptions,\n\t\t\tgetFilterFunctionConfig: ( filterFunction: FilterFunction ) => config[ filterFunction ],\n\t\t\tgetInitialValue: () => config.blur.defaultValue,\n\t\t};\n\t}, [ propContext.propType ] );\n\n\treturn <FilterConfigContext.Provider value={ contextValue }>{ children }</FilterConfigContext.Provider>;\n}\n\nexport function useFilterConfig(): FilterConfigContextValue {\n\tconst context = useContext( FilterConfigContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useFilterConfig must be used within FilterConfigProvider' );\n\t}\n\n\treturn context;\n}\n","import type { DropShadowFilterPropValue, PropType, SizePropValue, UnionPropType } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FilterFunction, type FilterFunctionGroup, FILTERS_BY_GROUP } from './configs';\n\nconst AMOUNT_VALUE_NAME = __( 'Amount', 'elementor' );\n\ntype SingleArgFilterFuncPropType = PropType & {\n\tshape: {\n\t\tsize?: PropType;\n\t};\n};\n\ntype DropShadowFuncPropType = PropType & {\n\tshape: {\n\t\tcolor: PropType;\n\t\txAxis: PropType;\n\t\tyAxis: PropType;\n\t\tblur: PropType;\n\t};\n};\n\ntype CssFilterFuncPropType = PropType & {\n\tshape: {\n\t\targs: {\n\t\t\tprop_types: {\n\t\t\t\t[ K in FilterFunctionGroup ]: SingleArgFilterFuncPropType | DropShadowFuncPropType;\n\t\t\t};\n\t\t};\n\t};\n};\n\nexport type DefaultValue = { size: SizePropValue } | DropShadowFilterPropValue[ 'value' ];\n\ntype CssFilterFuncValue = ReturnType< typeof createDefaultValue >;\n\nexport type FilterConfigEntry = {\n\tname: string;\n\tvalueName: string;\n\tfilterFunctionGroup: FilterFunctionGroup;\n\tdefaultValue: CssFilterFuncValue;\n};\n\ntype FilterConfigMap = Record< FilterFunction, FilterConfigEntry >;\n\nconst DEFAULT_FACTORIES: Partial< Record< FilterFunction, ( propType: PropType ) => DefaultValue > > = {\n\t'drop-shadow': ( propType: PropType ) => buildDropShadowDefault( propType as DropShadowFuncPropType ),\n};\n\nexport function buildFilterConfig( cssFilterPropType: PropType ): FilterConfigMap {\n\tfunction createEntry(\n\t\tfilterFunctionGroup: FilterFunctionGroup,\n\t\tfilterFunction: FilterFunction,\n\t\t{ name, valueName }: { name: string; valueName?: string }\n\t): [ FilterFunction, FilterConfigEntry ] {\n\t\tconst propType = extractPropType( cssFilterPropType as CssFilterFuncPropType, filterFunctionGroup );\n\n\t\tconst value =\n\t\t\tDEFAULT_FACTORIES[ filterFunction ]?.( propType ) ??\n\t\t\tbuildSizeDefault( propType as SingleArgFilterFuncPropType );\n\n\t\tconst defaultValue = createDefaultValue( {\n\t\t\tfilterFunction,\n\t\t\tfilterFunctionGroup,\n\t\t\tvalue,\n\t\t} );\n\n\t\treturn [\n\t\t\tfilterFunction,\n\t\t\t{\n\t\t\t\tname,\n\t\t\t\tvalueName: valueName ?? AMOUNT_VALUE_NAME,\n\t\t\t\tdefaultValue,\n\t\t\t\tfilterFunctionGroup,\n\t\t\t},\n\t\t];\n\t}\n\n\tconst entries = Object.entries( FILTERS_BY_GROUP ).flatMap( ( [ filterFunctionGroup, group ] ) =>\n\t\tObject.entries( group ).map( ( [ filterFunction, meta ] ) =>\n\t\t\tcreateEntry( filterFunctionGroup as FilterFunctionGroup, filterFunction as FilterFunction, meta )\n\t\t)\n\t);\n\n\treturn Object.fromEntries( entries ) as FilterConfigMap;\n}\n\ntype DefaultBuilderArgs = {\n\tfilterFunction: FilterFunction;\n\tfilterFunctionGroup: FilterFunctionGroup;\n\tvalue: DefaultValue;\n};\n\nfunction createDefaultValue( { filterFunction, filterFunctionGroup, value }: DefaultBuilderArgs ) {\n\treturn {\n\t\t$$type: 'css-filter-func',\n\t\tvalue: {\n\t\t\tfunc: { $$type: 'string', value: filterFunction },\n\t\t\targs: {\n\t\t\t\t$$type: filterFunctionGroup,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction buildSizeDefault( propType: SingleArgFilterFuncPropType ): DefaultValue {\n\tconst sizePropType = propType?.shape?.size;\n\n\treturn {\n\t\tsize: sizePropType?.default as SizePropValue,\n\t};\n}\n\nfunction buildDropShadowDefault( propType: DropShadowFuncPropType ): DefaultValue {\n\tconst dropShadowPropType = propType.shape;\n\n\treturn {\n\t\tblur: dropShadowPropType?.blur?.default,\n\t\txAxis: dropShadowPropType?.xAxis?.default,\n\t\tyAxis: dropShadowPropType?.yAxis?.default,\n\t\tcolor:\n\t\t\tdropShadowPropType?.color?.default ??\n\t\t\t( dropShadowPropType?.color as UnionPropType ).prop_types.color.default,\n\t};\n}\n\nfunction extractPropType( propType: CssFilterFuncPropType, filterFunctionGroup: FilterFunctionGroup ) {\n\treturn propType.shape?.args?.prop_types[ filterFunctionGroup ];\n}\n","import { __ } from '@wordpress/i18n';\n\nexport type FilterFunction =\n\t| 'blur'\n\t| 'brightness'\n\t| 'contrast'\n\t| 'hue-rotate'\n\t| 'saturate'\n\t| 'grayscale'\n\t| 'invert'\n\t| 'sepia'\n\t| 'drop-shadow';\n\nexport type FilterFunctionGroup = 'blur' | 'color-tone' | 'hue-rotate' | 'intensity' | 'drop-shadow';\n\nexport type FilterGroup = {\n\t[ filter in FilterFunction ]?: {\n\t\tname: string;\n\t\tvalueName?: string;\n\t};\n};\n\nexport const FILTERS_BY_GROUP: Record< FilterFunctionGroup, FilterGroup > = {\n\tblur: {\n\t\tblur: {\n\t\t\tname: __( 'Blur', 'elementor' ),\n\t\t\tvalueName: __( 'Radius', 'elementor' ),\n\t\t},\n\t},\n\tintensity: {\n\t\tbrightness: { name: __( 'Brightness', 'elementor' ) },\n\t\tcontrast: { name: __( 'Contrast', 'elementor' ) },\n\t\tsaturate: { name: __( 'Saturate', 'elementor' ) },\n\t},\n\t'hue-rotate': {\n\t\t'hue-rotate': {\n\t\t\tname: __( 'Hue Rotate', 'elementor' ),\n\t\t\tvalueName: __( 'Angle', 'elementor' ),\n\t\t},\n\t},\n\t'color-tone': {\n\t\tgrayscale: { name: __( 'Grayscale', 'elementor' ) },\n\t\tinvert: { name: __( 'Invert', 'elementor' ) },\n\t\tsepia: { name: __( 'Sepia', 'elementor' ) },\n\t},\n\t'drop-shadow': {\n\t\t'drop-shadow': { name: __( 'Drop shadow', 'elementor' ), valueName: __( 'Drop-shadow', 'elementor' ) },\n\t},\n};\n","import * as React from 'react';\nimport {\n\ttype CreateOptions,\n\tcssFilterFunctionPropUtil,\n\ttype FilterItemPropValue,\n\ttype PropKey,\n} from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlFormLabel } from '../../components/control-form-label';\nimport { useRepeaterContext } from '../../components/control-repeater/context/repeater-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { PopoverGridContainer } from '../../components/popover-grid-container';\nimport { SelectControl } from '../select-control';\nimport { type FilterFunction } from './configs';\nimport { useFilterConfig } from './context/filter-config-context';\nimport { DropShadowItemContent } from './drop-shadow/drop-shadow-item-content';\nimport { SingleSizeItemContent } from './single-size/single-size-item-content';\n\ntype Value = FilterItemPropValue[ 'value' ];\n\nexport const FilterContent = () => {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil );\n\tconst { filterOptions, getFilterFunctionConfig } = useFilterConfig();\n\n\tconst handleValueChange = ( value: Value, _?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tlet newValue = structuredClone( value );\n\t\tconst funcConfig = getFilterFunctionConfig( newValue?.func.value as FilterFunction );\n\n\t\tif ( meta?.bind === 'func' ) {\n\t\t\tnewValue = funcConfig.defaultValue.value as FilterItemPropValue[ 'value' ];\n\t\t}\n\n\t\tif ( ! newValue.args ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpropContext.setValue( newValue );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } setValue={ handleValueChange }>\n\t\t\t<PropKeyProvider bind=\"css-filter-func\">\n\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Filter', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<PropKeyProvider bind=\"func\">\n\t\t\t\t\t\t\t\t<SelectControl options={ filterOptions } />\n\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t<PropKeyProvider bind=\"args\">\n\t\t\t\t\t\t<FilterValueContent />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverContent>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst FilterValueContent = () => {\n\tconst { openItemIndex, items } = useRepeaterContext();\n\tconst currentItem = items[ openItemIndex ];\n\n\tconst filterFunc = ( currentItem.item.value as FilterItemPropValue[ 'value' ] ).func.value;\n\tconst isDropShadow = filterFunc === 'drop-shadow';\n\n\tif ( isDropShadow ) {\n\t\treturn <DropShadowItemContent />;\n\t}\n\n\treturn <SingleSizeItemContent filterFunc={ filterFunc as FilterFunction } />;\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { dropShadowFilterPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { ColorControl } from '../../color-control';\nimport { SizeControl } from '../../size-control';\n\nconst items = [\n\t{\n\t\tbind: 'xAxis',\n\t\tlabel: __( 'X-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'yAxis',\n\t\tlabel: __( 'Y-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'blur',\n\t\tlabel: __( 'Blur', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n\t{\n\t\tbind: 'color',\n\t\tlabel: __( 'Color', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n];\n\nexport const DropShadowItemContent = ( { anchorEl }: { anchorEl?: HTMLElement | null } ) => {\n\tconst context = useBoundProp( dropShadowFilterPropTypeUtil );\n\tconst rowRefs = [ useRef< HTMLDivElement >( null ), useRef< HTMLDivElement >( null ) ];\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ items.map( ( item ) => (\n\t\t\t\t<PopoverGridContainer key={ item.bind } ref={ rowRefs[ item.rowIndex ] ?? null }>\n\t\t\t\t\t<PropKeyProvider bind={ item.bind }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ item.label }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t{ item.bind === 'color' ? (\n\t\t\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\tanchorRef={ rowRefs[ item.rowIndex ] }\n\t\t\t\t\t\t\t\t\tenablePropTypeUnits\n\t\t\t\t\t\t\t\t\tdefaultUnit=\"px\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n","import { useRef } from 'react';\nimport * as React from 'react';\nimport {\n\tblurFilterPropTypeUtil,\n\tcolorToneFilterPropTypeUtil,\n\ttype createPropUtils,\n\thueRotateFilterPropTypeUtil,\n\tintensityFilterPropTypeUtil,\n} from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { SizeControl } from '../../size-control';\nimport { type FilterFunction } from '../configs';\nimport { useFilterConfig } from '../context/filter-config-context';\n\nexport const propTypeMap: Record< string, ReturnType< typeof createPropUtils > > = {\n\tblur: blurFilterPropTypeUtil,\n\tintensity: intensityFilterPropTypeUtil,\n\t'hue-rotate': hueRotateFilterPropTypeUtil,\n\t'color-tone': colorToneFilterPropTypeUtil,\n};\n\nexport const SingleSizeItemContent = ( { filterFunc }: { filterFunc: FilterFunction } ) => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst { getFilterFunctionConfig } = useFilterConfig();\n\tconst { valueName, filterFunctionGroup } = getFilterFunctionConfig( filterFunc );\n\tconst context = useBoundProp( propTypeMap[ filterFunctionGroup as string ] );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ filterFunctionGroup }>\n\t\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ valueName }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<SizeControl anchorRef={ rowRef } enablePropTypeUnits />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { styled, UnstableColorIndicator } from '@elementor/ui';\n\nexport const FilterIcon = ( { value }: { value: FilterItemPropValue } ) => {\n\tif ( value.value.func.value !== 'drop-shadow' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StyledUnstableColorIndicator\n\t\t\tsize=\"inherit\"\n\t\t\tcomponent=\"span\"\n\t\t\tvalue={ ( value.value.args as DropShadowFilterPropValue ).value?.color.value }\n\t\t/>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n","import * as React from 'react';\nimport type { FilterItemPropValue } from '@elementor/editor-props';\n\nimport { DropShadowItemLabel } from './drop-shadow/drop-shadow-item-label';\nimport { SingleSizeItemLabel } from './single-size/single-size-item-label';\n\nexport const FilterLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tif ( value.value.func.value === 'drop-shadow' ) {\n\t\treturn <DropShadowItemLabel value={ value } />;\n\t}\n\n\treturn <SingleSizeItemLabel value={ value } />;\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { CUSTOM_SIZE_LABEL } from '../../size-control';\n\nexport const DropShadowItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst values = value.value.args.value as DropShadowFilterPropValue[ 'value' ];\n\tconst keys = [ 'xAxis', 'yAxis', 'blur' ] as Array< keyof typeof values >;\n\tconst labels: string[] = keys.map( ( key ) =>\n\t\tvalues[ key ]?.value?.unit !== 'custom'\n\t\t\t? `${ values[ key ]?.value?.size ?? 0 }${ values[ key ]?.value?.unit ?? 'px' }`\n\t\t\t: values[ key ]?.value?.size || CUSTOM_SIZE_LABEL\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t\tDrop shadow:\n\t\t\t</Box>\n\t\t\t{ ` ${ labels.join( ' ' ) }` }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport type { FilterItemPropValue, SizePropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { lengthUnits } from '../../../utils/size-control';\nimport { CUSTOM_SIZE_LABEL } from '../../size-control';\nimport { type FilterFunction } from '../configs';\nimport { useFilterConfig } from '../context/filter-config-context';\n\nexport const SingleSizeItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { func, args } = value.value;\n\tconst { getFilterFunctionConfig } = useFilterConfig();\n\tconst { defaultValue } = getFilterFunctionConfig( ( func.value ?? '' ) as FilterFunction );\n\tconst defaultUnit =\n\t\t( defaultValue.value.args.value as { size: SizePropValue } )?.size?.value?.unit ?? lengthUnits[ 0 ];\n\n\tconst { unit, size } = ( args.value as { size: SizePropValue } ).size?.value ?? { unit: defaultUnit, size: 0 };\n\n\tconst label = (\n\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t{ func.value ?? '' }:\n\t\t</Box>\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }\n\t\t\t{ ' ' + ( unit !== 'custom' ? `${ size ?? 0 }${ unit ?? defaultUnit }` : size || CUSTOM_SIZE_LABEL ) }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { createControl } from '../create-control';\nimport { SelectControl, type SelectOption } from './select-control';\n\ntype ExtendedWindow = Window & {\n\telementor: { $previewContents: [ HTMLIFrameElement ]; config: { document: { id: string } } };\n};\n\nconst getOffCanvasElements = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst documentId = extendedWindow.elementor.config.document.id;\n\tconst offCanvasElements = extendedWindow.elementor.$previewContents[ 0 ].querySelectorAll(\n\t\t`[data-elementor-id=\"${ documentId }\"] .elementor-widget-off-canvas.elementor-element-edit-mode`\n\t);\n\n\treturn Array.from( offCanvasElements as unknown as HTMLElement[] ).map( ( offCanvasElement ) => {\n\t\treturn {\n\t\t\tlabel: offCanvasElement.querySelector( '.e-off-canvas' )?.getAttribute( 'aria-label' ) ?? '',\n\t\t\tvalue: offCanvasElement.dataset.id,\n\t\t} as SelectOption;\n\t} );\n};\n\nconst collectionMethods = {\n\t'off-canvas': getOffCanvasElements,\n} as const;\n\ntype SelectControlWrapperProps = Parameters< typeof SelectControl >[ 0 ] & {\n\tcollectionId?: keyof typeof collectionMethods;\n};\n\nconst useDynamicOptions = (\n\tcollectionId?: keyof typeof collectionMethods,\n\tinitialOptions?: SelectControlWrapperProps[ 'options' ]\n) => {\n\tconst [ options, setOptions ] = useState< SelectControlWrapperProps[ 'options' ] >( initialOptions ?? [] );\n\n\tuseEffect( () => {\n\t\tif ( ! collectionId || ! collectionMethods[ collectionId ] ) {\n\t\t\tsetOptions( initialOptions ?? [] );\n\t\t\treturn;\n\t\t}\n\t\tsetOptions( collectionMethods[ collectionId ]() );\n\t}, [ collectionId, initialOptions ] );\n\n\treturn options;\n};\n\nexport const SelectControlWrapper = createControl(\n\t( { collectionId, options, ...props }: SelectControlWrapperProps ) => {\n\t\tconst actualOptions = useDynamicOptions( collectionId, options );\n\n\t\treturn <SelectControl options={ actualOptions } { ...props } />;\n\t}\n);\n","import * as React from 'react';\nimport { type PropValue, stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlToggleButtonGroup, type ToggleButtonGroupItem } from '../components/control-toggle-button-group';\nimport { createControl } from '../create-control';\nimport { convertToggleOptionsToAtomic, type DynamicToggleOption } from '../utils/convert-toggle-options-to-atomic';\n\nexport type ToggleControlProps< T extends PropValue > = {\n\toptions: Array< ToggleButtonGroupItem< T > & { exclusive?: boolean } >;\n\tfullWidth?: boolean;\n\tsize?: ToggleButtonProps[ 'size' ];\n\texclusive?: boolean;\n\tmaxItems?: number;\n\tconvertOptions?: boolean;\n};\n\nexport const ToggleControl = createControl(\n\t( {\n\t\toptions,\n\t\tfullWidth = false,\n\t\tsize = 'tiny',\n\t\texclusive = true,\n\t\tmaxItems,\n\t\tconvertOptions = false,\n\t}: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst processedOptions = convertOptions\n\t\t\t? convertToggleOptionsToAtomic( options as DynamicToggleOption[] )\n\t\t\t: ( options as Array< ToggleButtonGroupItem< StringPropValue[ 'value' ] > & { exclusive?: boolean } > );\n\n\t\tconst exclusiveValues = processedOptions\n\t\t\t.filter( ( option ) => option.exclusive )\n\t\t\t.map( ( option ) => option.value );\n\n\t\tconst handleNonExclusiveToggle = ( selectedValues: StringPropValue[ 'value' ][] ) => {\n\t\t\tconst newSelectedValue = selectedValues[ selectedValues.length - 1 ];\n\t\t\tconst isNewSelectedValueExclusive = exclusiveValues.includes( newSelectedValue );\n\n\t\t\tconst updatedValues = isNewSelectedValueExclusive\n\t\t\t\t? [ newSelectedValue ]\n\t\t\t\t: selectedValues?.filter( ( val ) => ! exclusiveValues.includes( val ) );\n\n\t\t\tsetValue( updatedValues?.join( ' ' ) || null );\n\t\t};\n\n\t\tconst toggleButtonGroupProps = {\n\t\t\titems: processedOptions,\n\t\t\tmaxItems,\n\t\t\tfullWidth,\n\t\t\tsize,\n\t\t\tplaceholder,\n\t\t};\n\n\t\treturn exclusive ? (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value ?? null }\n\t\t\t\tonChange={ setValue }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ true }\n\t\t\t/>\n\t\t) : (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value?.split( ' ' ) ?? [] }\n\t\t\t\tonChange={ handleNonExclusiveToggle }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ false }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport {\n\tListItemText,\n\tMenu,\n\tMenuItem,\n\ttype StackProps,\n\tstyled,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttype ToggleButtonProps,\n\tTypography,\n\tuseTheme,\n} from '@elementor/ui';\n\nimport ControlActions from '../control-actions/control-actions';\nimport { ConditionalTooltip } from './conditional-tooltip';\n\ntype RenderContentProps = { size: ToggleButtonProps[ 'size' ] };\n\nexport type ToggleButtonGroupItem< TValue > = {\n\tvalue: TValue;\n\tlabel: string;\n\trenderContent: ( { size }: RenderContentProps ) => React.ReactNode;\n\tshowTooltip?: boolean;\n};\n\nconst StyledToggleButtonGroup = styled( ToggleButtonGroup )`\n\t${ ( { justify } ) => `justify-content: ${ justify };` }\n\tbutton:not( :last-of-type ) {\n\t\tborder-start-end-radius: 0;\n\t\tborder-end-end-radius: 0;\n\t}\n\tbutton:not( :first-of-type ) {\n\t\tborder-start-start-radius: 0;\n\t\tborder-end-start-radius: 0;\n\t}\n\tbutton:last-of-type {\n\t\tborder-start-end-radius: 8px;\n\t\tborder-end-end-radius: 8px;\n\t}\n`;\n\nexport const StyledToggleButton = styled( ToggleButton, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPlaceholder',\n} )< { isPlaceholder: boolean } >`\n\t${ ( { theme, isPlaceholder } ) =>\n\t\tisPlaceholder &&\n\t\t`\n\t\tcolor: ${ theme.palette.text.tertiary };\n\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.04)' : 'rgba(0,0,0,0.02)' };\n\n\t\t&:hover {\n\t\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.04)' };\n\t\t}\n\t` }\n`;\n\ntype ExclusiveValue< TValue > = TValue;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tdisabled?: boolean;\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tmaxItems?: number;\n\tfullWidth?: boolean;\n\tplaceholder?: TValue | TValue[];\n} & (\n\t| {\n\t\t\texclusive?: false;\n\t\t\tvalue: NonExclusiveValue< TValue >;\n\t\t\tonChange: ( value: NonExclusiveValue< TValue > ) => void;\n\t }\n\t| {\n\t\t\texclusive: true;\n\t\t\tvalue: ExclusiveValue< TValue >;\n\t\t\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n\t }\n);\nexport const ToggleButtonGroupUi = React.forwardRef(\n\t< TValue, >(\n\t\t{\n\t\t\tjustify = 'end',\n\t\t\tsize = 'tiny',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\titems,\n\t\t\tmaxItems,\n\t\t\texclusive = false,\n\t\t\tfullWidth = false,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t}: Props< TValue >,\n\t\tref: React.Ref< HTMLDivElement >\n\t) => {\n\t\tconst shouldSliceItems = exclusive && maxItems !== undefined && items.length > maxItems;\n\t\tconst menuItems = shouldSliceItems ? items.slice( maxItems - 1 ) : [];\n\t\tconst fixedItems = shouldSliceItems ? items.slice( 0, maxItems - 1 ) : items;\n\n\t\tconst theme = useTheme();\n\t\tconst isRtl = 'rtl' === theme.direction;\n\n\t\tconst handleChange = (\n\t\t\t_: React.MouseEvent< HTMLElement >,\n\t\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t\t) => {\n\t\t\tonChange( newValue as never );\n\t\t};\n\n\t\tconst getGridTemplateColumns = useMemo( () => {\n\t\t\tconst isOffLimits = menuItems?.length;\n\t\t\tconst itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;\n\t\t\tconst templateColumnsSuffix = isOffLimits ? 'auto' : '';\n\t\t\treturn `repeat(${ itemsCount }, minmax(0, 25%)) ${ templateColumnsSuffix }`;\n\t\t}, [ menuItems?.length, fixedItems.length ] );\n\n\t\tconst shouldShowExclusivePlaceholder = exclusive && ( value === null || value === undefined || value === '' );\n\n\t\tconst nonExclusiveSelectedValues =\n\t\t\t! exclusive && Array.isArray( value )\n\t\t\t\t? value\n\t\t\t\t\t\t.map( ( v ) => ( typeof v === 'string' ? v : '' ) )\n\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.split( /\\s+/ )\n\t\t\t\t\t\t.filter( Boolean )\n\t\t\t\t: [];\n\n\t\tconst shouldShowNonExclusivePlaceholder = ! exclusive && nonExclusiveSelectedValues.length === 0;\n\n\t\tconst getPlaceholderArray = ( placeholderValue: TValue | TValue[] | undefined ): string[] => {\n\t\t\tif ( Array.isArray( placeholderValue ) ) {\n\t\t\t\treturn placeholderValue.flatMap( ( p ) => {\n\t\t\t\t\tif ( typeof p === 'string' ) {\n\t\t\t\t\t\treturn p.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t\t\t}\n\t\t\t\t\treturn [];\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( typeof placeholderValue === 'string' ) {\n\t\t\t\treturn placeholderValue.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t}\n\n\t\t\treturn [];\n\t\t};\n\n\t\tconst placeholderArray = getPlaceholderArray( placeholder );\n\n\t\treturn (\n\t\t\t<StyledToggleButtonGroup\n\t\t\t\tref={ ref }\n\t\t\t\tjustify={ justify }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\texclusive={ exclusive }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsx={ {\n\t\t\t\t\tdirection: isRtl ? 'rtl /* @noflip */' : 'ltr /* @noflip */',\n\t\t\t\t\tdisplay: 'grid',\n\t\t\t\t\tgridTemplateColumns: getGridTemplateColumns,\n\t\t\t\t\twidth: `100%`,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ fixedItems.map( ( { label, value: buttonValue, renderContent: Content, showTooltip } ) => {\n\t\t\t\t\tconst isPlaceholder =\n\t\t\t\t\t\tplaceholderArray.length > 0 &&\n\t\t\t\t\t\tplaceholderArray.includes( buttonValue as string ) &&\n\t\t\t\t\t\t( shouldShowExclusivePlaceholder || shouldShowNonExclusivePlaceholder );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ConditionalTooltip\n\t\t\t\t\t\t\tkey={ buttonValue as string }\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip={ showTooltip || false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\t\t\tvalue={ buttonValue }\n\t\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t\t\t\tisPlaceholder={ isPlaceholder }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t\t\t</ConditionalTooltip>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\n\t\t\t\t{ menuItems.length && exclusive && (\n\t\t\t\t\t<SplitButtonGroup\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\tvalue={ ( value as ExclusiveValue< TValue > ) || null }\n\t\t\t\t\t\tonChange={ onChange as ( v: ExclusiveValue< TValue > ) => void }\n\t\t\t\t\t\titems={ menuItems }\n\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</StyledToggleButtonGroup>\n\t\t);\n\t}\n) as < TValue >( props: Props< TValue > & { ref?: React.Ref< HTMLDivElement > } ) => React.ReactElement;\n\nexport const ControlToggleButtonGroup = < TValue, >( props: Props< TValue > ) => {\n\treturn (\n\t\t<ControlActions>\n\t\t\t<ToggleButtonGroupUi { ...props } />\n\t\t</ControlActions>\n\t);\n};\n\ntype SplitButtonGroup< TValue > = {\n\tsize: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tfullWidth: boolean;\n\tvalue: ExclusiveValue< TValue > | null;\n\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n};\n\nconst SplitButtonGroup = < TValue, >( {\n\tsize = 'tiny',\n\tonChange,\n\titems,\n\tfullWidth,\n\tvalue,\n}: SplitButtonGroup< TValue > ) => {\n\tconst previewButton = usePreviewButton( items, value );\n\tconst [ isMenuOpen, setIsMenuOpen ] = useState( false );\n\tconst menuButtonRef = useRef( null );\n\n\tconst onMenuToggle = ( ev: React.MouseEvent ) => {\n\t\tsetIsMenuOpen( ( prev ) => ! prev );\n\t\tev.preventDefault();\n\t};\n\n\tconst onMenuItemClick = ( newValue: TValue | null ) => {\n\t\tsetIsMenuOpen( false );\n\t\tonToggleItem( newValue );\n\t};\n\n\tconst onToggleItem = ( newValue: TValue | null ) => {\n\t\tconst shouldRemove = newValue === value;\n\n\t\tonChange( ( shouldRemove ? null : newValue ) as never );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleButton\n\t\t\t\tvalue={ previewButton.value }\n\t\t\t\taria-label={ previewButton.label }\n\t\t\t\tsize={ size }\n\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\tonClick={ ( ev: React.MouseEvent ) => {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\tonMenuItemClick( previewButton.value );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ previewButton.renderContent( { size } ) }\n\t\t\t</ToggleButton>\n\t\t\t<ToggleButton\n\t\t\t\tsize={ size }\n\t\t\t\taria-expanded={ isMenuOpen ? 'true' : undefined }\n\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\taria-pressed={ undefined }\n\t\t\t\tonClick={ onMenuToggle }\n\t\t\t\tref={ menuButtonRef }\n\t\t\t\tvalue=\"__chevron-icon-button__\"\n\t\t\t>\n\t\t\t\t<ChevronDownIcon fontSize={ size } />\n\t\t\t</ToggleButton>\n\t\t\t<Menu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonClose={ () => setIsMenuOpen( false ) }\n\t\t\t\tanchorEl={ menuButtonRef.current }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tsx={ {\n\t\t\t\t\tmt: 0.5,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ items.map( ( { label, value: buttonValue } ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ buttonValue }\n\t\t\t\t\t\tselected={ buttonValue === value }\n\t\t\t\t\t\tonClick={ () => onMenuItemClick( buttonValue ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItemText>\n\t\t\t\t\t\t\t<Typography sx={ { fontSize: '14px' } }>{ label }</Typography>\n\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst usePreviewButton = < TValue, >( items: ToggleButtonGroupItem< TValue >[], value: TValue ) => {\n\tconst [ previewButton, setPreviewButton ] = useState(\n\t\titems.find( ( item ) => item.value === value ) ?? items[ 0 ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst selectedButton = items.find( ( item ) => item.value === value );\n\n\t\tif ( selectedButton ) {\n\t\t\tsetPreviewButton( selectedButton );\n\t\t}\n\t}, [ items, value ] );\n\n\treturn previewButton;\n};\n","import * as React from 'react';\nimport { Tooltip } from '@elementor/ui';\n\nexport const ConditionalTooltip = ( {\n\tshowTooltip,\n\tchildren,\n\tlabel,\n}: React.PropsWithChildren< { showTooltip: boolean; label: string } > ) => {\n\treturn showTooltip && label ? (\n\t\t<Tooltip title={ label } disableFocusListener={ true } placement=\"top\">\n\t\t\t{ children }\n\t\t</Tooltip>\n\t) : (\n\t\tchildren\n\t);\n};\n","import * as React from 'react';\nimport type { ToggleButtonGroupItem } from '@elementor/editor-controls';\nimport * as Icons from '@elementor/icons';\n\nexport type DynamicToggleOption = {\n\tvalue: string;\n\tlabel: string;\n\ticon?: string;\n\tshowTooltip?: boolean;\n\texclusive?: boolean;\n};\n\nexport const convertToggleOptionsToAtomic = (\n\toptions: DynamicToggleOption[]\n): Array< ToggleButtonGroupItem< string > & { exclusive?: boolean } > => {\n\treturn options.map( ( option ) => {\n\t\tconst iconName = option.icon;\n\t\tconst IconComponent = Icons[ iconName as keyof typeof Icons ];\n\n\t\treturn {\n\t\t\tvalue: option.value,\n\t\t\tlabel: option.label,\n\t\t\trenderContent: ( { size } ) => {\n\t\t\t\tif ( IconComponent ) {\n\t\t\t\t\treturn <IconComponent fontSize={ size } />;\n\t\t\t\t}\n\t\t\t\treturn option.label;\n\t\t\t},\n\t\t\tshowTooltip: option.showTooltip,\n\t\t\texclusive: option.exclusive,\n\t\t};\n\t} );\n};\n","import * as React from 'react';\nimport { numberPropTypeUtil } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { NumberInput } from '../components/number-input';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst isEmptyOrNaN = ( value?: string | number | null ) =>\n\tvalue === null || value === undefined || value === '' || Number.isNaN( Number( value ) );\n\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder: labelPlaceholder,\n\t\tmax = Number.MAX_SAFE_INTEGER,\n\t\tmin = -Number.MAX_SAFE_INTEGER,\n\t\tstep = 1,\n\t\tshouldForceInt = false,\n\t\tstartIcon,\n\t}: {\n\t\tplaceholder?: string;\n\t\tmax?: number;\n\t\tmin?: number;\n\t\tstep?: number;\n\t\tshouldForceInt?: boolean;\n\t\tstartIcon?: React.ReactNode;\n\t} ) => {\n\t\tconst { value, setValue, placeholder, disabled, restoreValue } = useBoundProp( numberPropTypeUtil );\n\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst {\n\t\t\t\tvalue: eventValue,\n\t\t\t\tvalidity: { valid: isInputValid },\n\t\t\t} = event.target;\n\n\t\t\tlet updatedValue;\n\n\t\t\tif ( isEmptyOrNaN( eventValue ) ) {\n\t\t\t\tupdatedValue = null;\n\t\t\t} else {\n\t\t\t\tconst formattedValue = shouldForceInt ? +parseInt( eventValue ) : Number( eventValue );\n\n\t\t\t\tupdatedValue = Math.min(\n\t\t\t\t\tMath.max( formattedValue, min ?? Number.MIN_SAFE_INTEGER ),\n\t\t\t\t\tmax ?? Number.MAX_SAFE_INTEGER\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetValue( updatedValue, undefined, { validation: () => isInputValid } );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<NumberInput\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\t\tonInput={ handleChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tplaceholder={ labelPlaceholder ?? ( isEmptyOrNaN( placeholder ) ? '' : String( placeholder ) ) }\n\t\t\t\t\tinputProps={ { step, min } }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: startIcon ? (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t\t\t\t\t{ startIcon }\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t) : undefined,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type ReactNode, type RefObject, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, 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 { type FormLabelProps, Stack } from '@elementor/ui';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { ControlFormLabel } from './control-form-label';\n\ntype ControlLabelProps = FormLabelProps & PropsWithChildren< object >;\n\nexport const ControlLabel = ( { children, ...props }: ControlLabelProps ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel { ...props }>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { type ExtendedOption } from '../utils/size-control';\nimport { SizeControl } from './size-control';\n\ntype Props = {\n\tlabel: string;\n\tisSiteRtl?: boolean;\n\textendedOptions?: ExtendedOption[];\n\tmin?: number;\n};\n\nexport const LinkedDimensionsControl = ( { label, isSiteRtl = false, extendedOptions, min }: Props ) => {\n\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst { disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst {\n\t\tvalue: dimensionsValue,\n\t\tsetValue: setDimensionsValue,\n\t\tpropType,\n\t\tplaceholder: dimensionsPlaceholder,\n\t\tdisabled: dimensionsDisabled,\n\t} = useBoundProp( dimensionsPropTypeUtil );\n\n\tconst { value: masterValue, placeholder: masterPlaceholder, setValue: setMasterValue } = useBoundProp();\n\n\tconst inferIsLinked = () => {\n\t\tif ( dimensionsPropTypeUtil.isValid( masterValue ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! masterValue && dimensionsPropTypeUtil.isValid( masterPlaceholder ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst [ isLinked, setIsLinked ] = useState( () => inferIsLinked() );\n\n\tconst activeBreakpoint = useActiveBreakpoint();\n\n\tuseLayoutEffect( () => {\n\t\tsetIsLinked( inferIsLinked );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\tconst onLinkToggle = () => {\n\t\tsetIsLinked( ( prev ) => ! prev );\n\n\t\tif ( ! dimensionsPropTypeUtil.isValid( masterValue ) ) {\n\t\t\tconst value = masterValue ? masterValue : null;\n\n\t\t\tif ( ! value ) {\n\t\t\t\tsetMasterValue( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetMasterValue(\n\t\t\t\tdimensionsPropTypeUtil.create( {\n\t\t\t\t\t'block-start': value,\n\t\t\t\t\t'block-end': value,\n\t\t\t\t\t'inline-start': value,\n\t\t\t\t\t'inline-end': value,\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tdimensionsValue?.[ 'block-start' ] ??\n\t\t\tdimensionsValue?.[ 'inline-end' ] ??\n\t\t\tdimensionsValue?.[ 'block-end' ] ??\n\t\t\tdimensionsValue?.[ 'inline-start' ] ??\n\t\t\tnull;\n\n\t\tif ( ! sizeValue ) {\n\t\t\tsetMasterValue( null );\n\t\t\treturn;\n\t\t}\n\n\t\tsetMasterValue( sizeValue );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || dimensionsDisabled;\n\n\tconst propProviderProps = {\n\t\tpropType,\n\t\tvalue: dimensionsValue,\n\t\tplaceholder: dimensionsPlaceholder,\n\t\tsetValue: setDimensionsValue,\n\t\tisDisabled: () => dimensionsDisabled,\n\t};\n\n\tconst hasPlaceholders = ! masterValue && ( dimensionsPlaceholder || masterPlaceholder );\n\n\treturn (\n\t\t<PropProvider { ...propProviderProps }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tisPlaceholder={ hasPlaceholders }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\n\t\t\t{ getCssDimensionProps( isSiteRtl ).map( ( row, index ) => (\n\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" key={ index } ref={ gridRowRefs[ index ] }>\n\t\t\t\t\t{ row.map( ( { icon, ...props } ) => (\n\t\t\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\" key={ props.bind }>\n\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t<Label { ...props } />\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\t\t\tbind={ props.bind }\n\t\t\t\t\t\t\t\t\tstartIcon={ icon }\n\t\t\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\t\t\t\t\t\tanchorRef={ gridRowRefs[ index ] }\n\t\t\t\t\t\t\t\t\tmin={ min }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t) ) }\n\t\t\t\t</Stack>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tbind,\n\tstartIcon,\n\tisLinked,\n\textendedOptions,\n\tanchorRef,\n\tmin,\n}: {\n\tbind: PropKey;\n\tstartIcon: React.ReactNode;\n\tisLinked: boolean;\n\textendedOptions?: ExtendedOption[];\n\tanchorRef: RefObject< HTMLDivElement >;\n\tmin?: number;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn (\n\t\t\t<SizeControl\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tmin={ min }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tmin={ min }\n\t\t\t/>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Label = ( { label, bind }: { label: string; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t</PropKeyProvider>\n\t);\n};\n\nfunction getCssDimensionProps( 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\tariaLabel?: string;\n};\n\nexport const FontFamilyControl = createControl(\n\t( { fontFamilies, sectionWidth, ariaLabel }: FontFamilyControlProps ) => {\n\t\tconst {\n\t\t\tvalue: fontFamily,\n\t\t\tsetValue: setFontFamily,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t} = useBoundProp( stringPropTypeUtil );\n\n\t\tconst popoverState = usePopupState( { variant: 'popover' } );\n\t\tconst isShowingPlaceholder = ! fontFamily && placeholder;\n\n\t\tconst mapFontSubs = React.useMemo< Category[] >( () => {\n\t\t\treturn fontFamilies.map( ( { label, fonts } ) => ( {\n\t\t\t\tlabel,\n\t\t\t\titems: fonts,\n\t\t\t} ) );\n\t\t}, [ fontFamilies ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<ControlActions>\n\t\t\t\t\t<UnstableTag\n\t\t\t\t\t\tid=\"font-family-control\"\n\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\tlabel={ fontFamily || placeholder }\n\t\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\t\tsx={\n\t\t\t\t\t\t\tisShowingPlaceholder\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t'& .MuiTag-label': {\n\t\t\t\t\t\t\t\t\t\t\tcolor: ( theme ) => theme.palette.text.tertiary,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttextTransform: 'capitalize',\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ControlActions>\n\n\t\t\t\t<Popover\n\t\t\t\t\tdisablePortal\n\t\t\t\t\tdisableScrollLock\n\t\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\t\tsx={ { my: 1.5 } }\n\t\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\t>\n\t\t\t\t\t<ItemSelector\n\t\t\t\t\t\tid=\"font-family-selector\"\n\t\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\t\tonItemChange={ setFontFamily }\n\t\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\t\ttitle={ __( 'Font family', 'elementor' ) }\n\t\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\t/>\n\t\t\t\t</Popover>\n\t\t\t</>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { PopoverBody, PopoverHeader, PopoverMenuList, SearchField } from '@elementor/editor-ui';\nimport { Box, Divider, Link, Stack, Typography } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SelectableItem, useFilteredItemsList } from '../hooks/use-filtered-items-list';\n\nexport type Category = {\n\tlabel: string;\n\titems: string[];\n};\n\ntype ItemSelectorProps = {\n\titemsList: Category[];\n\tselectedItem: string | null;\n\tonItemChange: ( item: string ) => void;\n\tonClose: () => void;\n\tsectionWidth: number;\n\ttitle: string;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\ticon: React.ElementType< { fontSize: string } >;\n\tdisabledItems?: string[];\n\tid?: string;\n};\n\nexport const ItemSelector = ( {\n\titemsList,\n\tselectedItem,\n\tonItemChange,\n\tonClose,\n\tsectionWidth,\n\ttitle,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n\ticon,\n\tdisabledItems,\n\tid = 'item-selector',\n}: ItemSelectorProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst filteredItemsList = useFilteredItemsList( itemsList, searchValue, disabledItems );\n\n\tconst IconComponent = icon;\n\n\tconst handleSearch = ( value: string ) => {\n\t\tsetSearchValue( value );\n\t};\n\n\tconst handleClose = () => {\n\t\tsetSearchValue( '' );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<PopoverBody width={ sectionWidth } id={ id }>\n\t\t\t<PopoverHeader title={ title } onClose={ handleClose } icon={ <IconComponent fontSize=\"tiny\" /> } />\n\t\t\t<SearchField\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tonSearch={ handleSearch }\n\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\tid={ id + '-search' }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t{ filteredItemsList.length > 0 ? (\n\t\t\t\t<ItemList\n\t\t\t\t\titemListItems={ filteredItemsList }\n\t\t\t\t\tsetSelectedItem={ onItemChange }\n\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\tselectedItem={ selectedItem }\n\t\t\t\t\titemStyle={ itemStyle }\n\t\t\t\t\tonDebounce={ onDebounce }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Stack\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\theight=\"100%\"\n\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\toverflow=\"hidden\"\n\t\t\t\t>\n\t\t\t\t\t<IconComponent fontSize=\"large\" />\n\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ { display: 'flex', width: '100%', justifyContent: 'center' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>“</span>\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\t\t\tsx={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t<span>”.</span>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n\ntype ItemListProps = {\n\titemListItems: SelectableItem[];\n\tsetSelectedItem: ( item: string ) => void;\n\thandleClose: () => void;\n\tselectedItem: string | null;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\tdisabledItems?: string[];\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\tdisabled?: boolean;\n};\n\nexport const useFilteredItemsList = ( itemsList: Category[], searchValue: string, disabledItems?: string[] ) => {\n\treturn itemsList.reduce< SelectableItem[] >( ( acc, category ) => {\n\t\tconst filteredItems = category.items.filter( ( item ) =>\n\t\t\titem.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t);\n\n\t\tif ( filteredItems.length ) {\n\t\t\tacc.push( { type: 'category', value: category.label } );\n\n\t\t\tfilteredItems.forEach( ( item ) => {\n\t\t\t\tacc.push( { type: 'item', value: item, disabled: disabledItems?.includes( item ) ?? false } );\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n};\n","type EnqueueFont = ( fontFamily: string, context?: 'preview' | 'editor' ) => void;\n\ntype ExtendedWindow = Window & {\n\telementor?: {\n\t\thelpers?: {\n\t\t\tenqueueFont?: EnqueueFont;\n\t\t};\n\t};\n};\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'editor' ) => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import * as React from 'react';\nimport { urlPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const UrlControl = createControl(\n\t( { placeholder, ariaLabel }: { placeholder?: string; ariaLabel?: string } ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( urlPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { getLinkInLinkRestriction } from '@elementor/editor-elements';\nimport { linkPropTypeUtil, type LinkPropValue } from '@elementor/editor-props';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Collapse, Grid, IconButton, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { RestrictedLinkInfotip } from '../components/restricted-link-infotip';\nimport { createControl } from '../create-control';\nimport { type ControlProps } from '../utils/types';\nimport { QueryControl } from './query-control';\nimport { SwitchControl } from './switch-control';\n\ntype Props = ControlProps< {\n\tqueryOptions: {\n\t\tparams: Record< string, unknown >;\n\t\turl: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tlabel?: string;\n\tariaLabel?: string;\n} >;\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ] | null;\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\nexport type DestinationProp = LinkPropValue[ 'value' ][ 'destination' ];\n\nconst SIZE = 'tiny';\n\nexport const LinkControl = createControl( ( props: Props ) => {\n\tconst { value, path, setValue, ...propContext } = useBoundProp( linkPropTypeUtil );\n\tconst [ linkSessionValue, setLinkSessionValue ] = useSessionStorage< LinkSessionValue >( path.join( '/' ) );\n\tconst [ isActive, setIsActive ] = useState( !! value );\n\n\tconst {\n\t\tallowCustomValues = true,\n\t\tqueryOptions,\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tcontext: { elementId },\n\t\tlabel = __( 'Link', 'elementor' ),\n\t\tariaLabel,\n\t} = props || {};\n\n\tconst [ linkInLinkRestriction, setLinkInLinkRestriction ] = useState( getLinkInLinkRestriction( elementId ) );\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 onSaveValueToSession = ( newValue: DestinationProp[ 'value' ] | null ) => {\n\t\tconst valueToSave: LinkPropValue[ 'value' ] | null = newValue\n\t\t\t? {\n\t\t\t\t\t...value,\n\t\t\t\t\tdestination: newValue,\n\t\t\t }\n\t\t\t: null;\n\n\t\tsetLinkSessionValue( { ...linkSessionValue, value: valueToSave } );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tmarginInlineEnd: -0.75,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t<RestrictedLinkInfotip isVisible={ ! isActive } linkInLinkRestriction={ linkInLinkRestriction }>\n\t\t\t\t\t\t<ToggleIconControl\n\t\t\t\t\t\t\tdisabled={ shouldDisableAddingLink }\n\t\t\t\t\t\t\tactive={ isActive }\n\t\t\t\t\t\t\tonIconClick={ onEnabledChange }\n\t\t\t\t\t\t\tlabel={ __( 'Toggle link', 'elementor' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</RestrictedLinkInfotip>\n\t\t\t\t</Stack>\n\t\t\t\t<Collapse in={ isActive } timeout=\"auto\" unmountOnExit>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'destination' }>\n\t\t\t\t\t\t\t<QueryControl\n\t\t\t\t\t\t\t\tqueryOptions={ queryOptions }\n\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\tonSetValue={ onSaveValueToSession }\n\t\t\t\t\t\t\t\tariaLabel={ ariaLabel || label }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'isTargetBlank' }>\n\t\t\t\t\t\t\t<Grid container alignItems=\"center\" flexWrap=\"nowrap\" justifyContent=\"space-between\">\n\t\t\t\t\t\t\t\t<Grid item>\n\t\t\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Open in a new tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item sx={ { marginInlineEnd: -1 } }>\n\t\t\t\t\t\t\t\t\t<SwitchControl />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Collapse>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\ntype ToggleIconControlProps = {\n\tdisabled: boolean;\n\tactive: boolean;\n\tonIconClick: () => void;\n\tlabel?: string;\n};\n\nconst ToggleIconControl = ( { disabled, active, onIconClick, label }: ToggleIconControlProps ) => {\n\treturn (\n\t\t<IconButton size={ SIZE } onClick={ onIconClick } aria-label={ label } disabled={ disabled }>\n\t\t\t{ active ? <MinusIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconButton>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { type LinkInLinkRestriction, selectElement } from '@elementor/editor-elements';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertAction, AlertTitle, Box, Infotip, Link } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst learnMoreButton = {\n\tlabel: __( 'Learn More', 'elementor' ),\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n};\n\nconst INFOTIP_CONTENT = {\n\tdescendant: __(\n\t\t'To add a link 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\tcolor=\"secondary\"\n\t\t\ticon={ <InfoCircleFilledIcon /> }\n\t\t\taction={\n\t\t\t\t<AlertAction\n\t\t\t\t\tsx={ { width: 'fit-content' } }\n\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tonClick={ handleTakeMeClick }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Take me there', 'elementor' ) }\n\t\t\t\t</AlertAction>\n\t\t\t}\n\t\t>\n\t\t\t<AlertTitle>{ __( 'Nested links', 'elementor' ) }</AlertTitle>\n\t\t\t<Box component=\"span\">\n\t\t\t\t{ INFOTIP_CONTENT[ reason ?? 'descendant' ] }{ ' ' }\n\t\t\t\t<Link href={ learnMoreButton.href } target=\"_blank\" color=\"info.main\">\n\t\t\t\t\t{ learnMoreButton.label }\n\t\t\t\t</Link>\n\t\t\t</Box>\n\t\t</Alert>\n\t);\n\n\treturn shouldRestrict && isVisible ? (\n\t\t<Infotip\n\t\t\tplacement=\"right\"\n\t\t\tcontent={ content }\n\t\t\tcolor=\"secondary\"\n\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Infotip>\n\t) : (\n\t\t<>{ children }</>\n\t);\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { numberPropTypeUtil, stringPropTypeUtil, urlPropTypeUtil } from '@elementor/editor-props';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\nimport { SearchIcon } from '@elementor/icons';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport {\n\tAutocomplete,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from '../components/autocomplete';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { type DestinationProp } from './link-control';\n\ntype Props = {\n\tqueryOptions: {\n\t\tparams: Record< string, unknown >;\n\t\turl: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tonSetValue?: ( value: DestinationProp | null ) => void;\n\tariaLabel?: string;\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\n\ntype FetchOptionsParams = Record< string, unknown > & { term: string };\n\nexport const QueryControl = createControl( ( props: Props ) => {\n\tconst { value, setValue } = useBoundProp< DestinationProp >();\n\n\tconst {\n\t\tallowCustomValues = true,\n\t\tqueryOptions: { url, params = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tonSetValue,\n\t\tariaLabel,\n\t} = props || {};\n\n\tconst normalizedPlaceholder = placeholder || __( 'Search', 'elementor' );\n\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value?.value )\n\t);\n\n\tconst onOptionChange = ( newValue: number | null ) => {\n\t\tif ( newValue === null ) {\n\t\t\tsetValue( null );\n\t\t\tonSetValue?.( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst valueToSave = {\n\t\t\t$$type: 'query',\n\t\t\tvalue: {\n\t\t\t\tid: numberPropTypeUtil.create( newValue ),\n\t\t\t\tlabel: stringPropTypeUtil.create( findMatchingOption( options, newValue )?.label || null ),\n\t\t\t},\n\t\t};\n\n\t\tsetValue( valueToSave );\n\t\tonSetValue?.( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tif ( ! newValue ) {\n\t\t\tsetValue( null );\n\t\t\tonSetValue?.( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst newLinkValue = newValue?.trim() || '';\n\t\tconst valueToSave = newLinkValue ? urlPropTypeUtil.create( newLinkValue ) : null;\n\n\t\tsetValue( valueToSave );\n\t\tonSetValue?.( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst updateOptions = ( newValue: string | null ) => {\n\t\tsetOptions( [] );\n\n\t\tif ( ! newValue || ! url || newValue.length < minInputLength ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounceFetch( { ...params, term: newValue } );\n\t};\n\n\tconst debounceFetch = useMemo(\n\t\t() =>\n\t\t\tdebounce(\n\t\t\t\t( queryParams: FetchOptionsParams ) =>\n\t\t\t\t\tfetchOptions( url, queryParams ).then( ( newOptions ) => {\n\t\t\t\t\t\tsetOptions( formatOptions( newOptions ) );\n\t\t\t\t\t} ),\n\t\t\t\t400\n\t\t\t),\n\t\t[ url ]\n\t);\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Autocomplete\n\t\t\t\toptions={ options }\n\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\tplaceholder={ normalizedPlaceholder }\n\t\t\t\tstartAdornment={ <SearchIcon fontSize=\"tiny\" /> }\n\t\t\t\tvalue={ value?.value?.id?.value || value?.value }\n\t\t\t\tonOptionChange={ onOptionChange }\n\t\t\t\tonTextChange={ onTextChange }\n\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\tdisablePortal={ false }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n\nasync function fetchOptions( ajaxUrl: string, params: FetchOptionsParams ) {\n\tif ( ! params || ! ajaxUrl ) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst { data: response } = await httpService().get< Response >( ajaxUrl, { params } );\n\n\t\treturn response.data.value;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction formatOptions( options: FlatOption[] | CategorizedOption[] ): FlatOption[] | CategorizedOption[] {\n\tconst compareKey = isCategorizedOptionPool( options ) ? 'groupLabel' : 'label';\n\n\treturn options.sort( ( a, b ) =>\n\t\ta[ compareKey ] && b[ compareKey ] ? a[ compareKey ].localeCompare( b[ compareKey ] ) : 0\n\t);\n}\n\nfunction generateFirstLoadedOption( unionValue: DestinationProp | null ): FlatOption[] {\n\tconst value = unionValue?.id?.value;\n\tconst label = unionValue?.label?.value;\n\tconst type = unionValue?.id?.$$type || 'url';\n\n\treturn value && label && type === 'number'\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tid: value.toString(),\n\t\t\t\t\tlabel,\n\t\t\t\t},\n\t\t ]\n\t\t: [];\n}\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport {\n\tAutocomplete as AutocompleteBase,\n\ttype AutocompleteRenderInputParams,\n\tBox,\n\tIconButton,\n\tInputAdornment,\n\tTextField,\n} from '@elementor/ui';\n\nexport type FlatOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel?: never;\n};\n\nexport type CategorizedOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel: string;\n};\n\nexport type Props = {\n\toptions: FlatOption[] | CategorizedOption[];\n\tvalue?: number | string | null;\n\tonOptionChange: ( newValue: number | null ) => void;\n\tonTextChange?: ( newValue: string | null ) => void;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n\tminInputLength?: number;\n\tstartAdornment?: React.ReactNode;\n\tinputProps?: Record< string, unknown >;\n\tdisablePortal?: boolean;\n};\n\nexport const Autocomplete = forwardRef( ( props: Props, ref ) => {\n\tconst {\n\t\toptions,\n\t\tonOptionChange,\n\t\tonTextChange,\n\t\tallowCustomValues = false,\n\t\tplaceholder = '',\n\t\tminInputLength = 2,\n\t\tvalue = '',\n\t\tstartAdornment,\n\t\tdisablePortal = true,\n\t\t...restProps\n\t} = props;\n\n\tconst optionKeys = factoryFilter( value, options, minInputLength ).map( ( { id } ) => id );\n\tconst allowClear = !! value;\n\n\t// Prevents MUI warning when freeSolo/allowCustomValues is false\n\tconst muiWarningPreventer = allowCustomValues || !! value?.toString()?.length;\n\n\tconst isOptionEqualToValue = muiWarningPreventer ? undefined : () => true;\n\n\tconst isValueFromOptions = typeof value === 'number' && !! findMatchingOption( options, value );\n\n\tconst valueLength = value?.toString()?.length ?? 0;\n\tconst meetsMinLength = valueLength >= minInputLength;\n\tconst shouldOpen = meetsMinLength && ( allowCustomValues ? optionKeys.length > 0 : true );\n\n\treturn (\n\t\t<AutocompleteBase\n\t\t\t{ ...restProps }\n\t\t\tref={ ref }\n\t\t\tforcePopupIcon={ false }\n\t\t\tdisablePortal={ disablePortal }\n\t\t\tdisableClearable={ true } // Disabled component's auto clear icon to use our custom one instead\n\t\t\tfreeSolo={ allowCustomValues }\n\t\t\topenOnFocus={ false }\n\t\t\topen={ shouldOpen }\n\t\t\tvalue={ value?.toString() || '' }\n\t\t\tsize={ 'tiny' }\n\t\t\tonChange={ ( _, newValue ) => onOptionChange( Number( newValue ) ) }\n\t\t\treadOnly={ isValueFromOptions }\n\t\t\toptions={ optionKeys }\n\t\t\tgetOptionKey={ ( optionId ) => findMatchingOption( options, optionId )?.id || optionId }\n\t\t\tgetOptionLabel={ ( optionId ) => findMatchingOption( options, optionId )?.label || optionId.toString() }\n\t\t\tgroupBy={\n\t\t\t\tisCategorizedOptionPool( options )\n\t\t\t\t\t? ( optionId: string ) => findMatchingOption( options, optionId )?.groupLabel || optionId\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tisOptionEqualToValue={ isOptionEqualToValue }\n\t\t\tfilterOptions={ () => optionKeys }\n\t\t\trenderOption={ ( optionProps, optionId ) => (\n\t\t\t\t<Box component=\"li\" { ...optionProps } key={ optionProps.id }>\n\t\t\t\t\t{ findMatchingOption( options, optionId )?.label ?? optionId }\n\t\t\t\t</Box>\n\t\t\t) }\n\t\t\trenderInput={ ( params ) => (\n\t\t\t\t<TextInput\n\t\t\t\t\tparams={ params }\n\t\t\t\t\thandleChange={ ( newValue ) => onTextChange?.( newValue ) }\n\t\t\t\t\tallowClear={ allowClear }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\thasSelectedValue={ isValueFromOptions }\n\t\t\t\t\tstartAdornment={ startAdornment }\n\t\t\t\t\textraInputProps={ restProps.inputProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n} );\n\nconst TextInput = ( {\n\tparams,\n\tallowClear,\n\tplaceholder,\n\thandleChange,\n\thasSelectedValue,\n\tstartAdornment,\n\textraInputProps,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n\tplaceholder: string;\n\thasSelectedValue: boolean;\n\tstartAdornment?: React.ReactNode;\n\textraInputProps?: Record< string, unknown >;\n} ) => {\n\tconst onChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\thandleChange( event.target.value );\n\t};\n\n\treturn (\n\t\t<TextField\n\t\t\t{ ...params }\n\t\t\tplaceholder={ placeholder }\n\t\t\tonChange={ onChange }\n\t\t\tinputProps={ { ...( params.inputProps ?? {} ), ...( extraInputProps ?? {} ) } }\n\t\t\tsx={ {\n\t\t\t\t'& .MuiInputBase-input': {\n\t\t\t\t\tcursor: hasSelectedValue ? 'default' : undefined,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tInputProps={ {\n\t\t\t\t...params.InputProps,\n\t\t\t\tstartAdornment: startAdornment ? (\n\t\t\t\t\t<InputAdornment position=\"start\">{ startAdornment }</InputAdornment>\n\t\t\t\t) : (\n\t\t\t\t\tparams.InputProps.startAdornment\n\t\t\t\t),\n\t\t\t\tendAdornment: <ClearButton params={ params } allowClear={ allowClear } handleChange={ handleChange } />,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ClearButton = ( {\n\tallowClear,\n\thandleChange,\n\tparams,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n} ) => (\n\t<InputAdornment position=\"end\">\n\t\t{ allowClear && (\n\t\t\t<IconButton size={ params.size } onClick={ () => handleChange( null ) } sx={ { cursor: 'pointer' } }>\n\t\t\t\t<XIcon fontSize={ params.size } />\n\t\t\t</IconButton>\n\t\t) }\n\t</InputAdornment>\n);\n\nexport function findMatchingOption(\n\toptions: FlatOption[] | CategorizedOption[],\n\toptionId: string | number | null = null\n) {\n\tconst formattedOption = ( optionId || '' ).toString();\n\n\treturn options.find( ( { id } ) => formattedOption === id.toString() );\n}\n\nexport function isCategorizedOptionPool( options: FlatOption[] | CategorizedOption[] ): options is CategorizedOption[] {\n\tif ( options.length <= 1 ) {\n\t\treturn false;\n\t}\n\n\tconst uniqueGroupLabels = new Set( options.map( ( option ) => option.groupLabel ) );\n\n\treturn uniqueGroupLabels.size > 1; // should not categorize options if there is only one group\n}\n\nfunction factoryFilter< T extends FlatOption[] | CategorizedOption[] >(\n\tnewValue: string | number | null,\n\toptions: T,\n\tminInputLength: number\n): T {\n\tif ( null === newValue ) {\n\t\treturn options;\n\t}\n\n\tconst formattedValue = String( newValue || '' )?.toLowerCase();\n\n\tif ( formattedValue.length < minInputLength ) {\n\t\treturn new Array( 0 ) as T;\n\t}\n\n\treturn options.filter(\n\t\t( option ) =>\n\t\t\tString( option.id ).toLowerCase().includes( formattedValue ) ||\n\t\t\toption.label.toLowerCase().includes( formattedValue )\n\t) as T;\n}\n","import * as React from 'react';\nimport { booleanPropTypeUtil } from '@elementor/editor-props';\nimport { Box, Switch } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context/use-bound-prop';\nimport { createControl } from '../create-control';\n\nexport const SwitchControl = createControl( () => {\n\tconst { value, setValue, disabled } = useBoundProp( booleanPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.checked );\n\t};\n\n\treturn (\n\t\t<Box sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t<Switch\n\t\t\t\tchecked={ !! value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( disabled ? { style: { opacity: 0 } } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Box>\n\t);\n} );\n","import * as React from 'react';\nimport { getElementLabel } from '@elementor/editor-elements';\nimport { stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Select, type SelectChangeEvent, styled, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ConditionalControlInfotip } from '../components/conditional-control-infotip';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype Props = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n\tfallbackLabels?: Record< string, string >;\n};\n\nconst StyledSelect = styled( Select )( () => ( { '.MuiSelect-select.Mui-disabled': { cursor: 'not-allowed' } } ) );\n\nexport const HtmlTagControl = createControl( ( { options, onChange, fallbackLabels = {} }: Props ) => {\n\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\tconst newValue = event.target.value || null;\n\n\t\tonChange?.( newValue, value );\n\t\tsetValue( newValue );\n\t};\n\n\tconst elementLabel = getElementLabel() ?? 'element';\n\tconst infoTipProps = {\n\t\ttitle: __( 'HTML Tag', 'elementor' ),\n\t\t/* translators: %s is the element name. */\n\t\tdescription: __(\n\t\t\t`The tag is locked to 'a' tag because this %s has a link. To pick a different tag, remove the link first.`,\n\t\t\t'elementor'\n\t\t).replace( '%s', elementLabel ),\n\t\tisEnabled: !! disabled,\n\t};\n\n\tconst renderValue = ( selectedValue: string | null ) => {\n\t\tif ( selectedValue ) {\n\t\t\treturn findOptionByValue( selectedValue )?.label || fallbackLabels[ selectedValue ] || selectedValue;\n\t\t}\n\n\t\tif ( ! placeholder ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\treturn (\n\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t{ displayText }\n\t\t\t</Typography>\n\t\t);\n\t};\n\n\tconst findOptionByValue = ( searchValue: string | null ) => options.find( ( opt ) => opt.value === searchValue );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<ConditionalControlInfotip { ...infoTipProps }>\n\t\t\t\t<StyledSelect\n\t\t\t\t\tsx={ { overflow: 'hidden', cursor: disabled ? 'not-allowed' : undefined } }\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\trenderValue={ renderValue }\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tfullWidth\n\t\t\t\t>\n\t\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) ) }\n\t\t\t\t</StyledSelect>\n\t\t\t</ConditionalControlInfotip>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { InfoAlert } from '@elementor/editor-ui';\nimport { type AlertProps, AlertTitle, Box, Infotip, type InfotipProps, useTheme } from '@elementor/ui';\nimport { DirectionProvider } from '@elementor/ui';\n\ntype Props = {\n\tinfotipProps?: Partial< InfotipProps >;\n\talertProps?: Partial< AlertProps >;\n\ttitle?: string;\n\tdescription?: React.ReactNode | string;\n\tisEnabled?: boolean;\n};\n\nconst DEFAULT_COLOR = 'secondary';\n\nexport const ConditionalControlInfotip = React.forwardRef(\n\t( { children, title, description, alertProps, infotipProps, ...props }: React.PropsWithChildren< Props >, ref ) => {\n\t\tconst theme = useTheme();\n\t\tconst isUiRtl = 'rtl' === theme.direction;\n\t\tconst isEnabled = props.isEnabled && ( title || description );\n\n\t\treturn (\n\t\t\t<Box ref={ ref }>\n\t\t\t\t{ isEnabled ? (\n\t\t\t\t\t<DirectionProvider rtl={ isUiRtl }>\n\t\t\t\t\t\t<Infotip\n\t\t\t\t\t\t\tplacement={ 'right' }\n\t\t\t\t\t\t\tcolor={ DEFAULT_COLOR }\n\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\t\t\toffset: [ 0, 10 ],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t{ ...infotipProps }\n\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t<InfoAlert\n\t\t\t\t\t\t\t\t\tcolor={ DEFAULT_COLOR }\n\t\t\t\t\t\t\t\t\tsx={ { width: 300, px: 1.5, py: 2 } }\n\t\t\t\t\t\t\t\t\t{ ...alertProps }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Box sx={ { flexDirection: 'column', display: 'flex', gap: 0.5 } }>\n\t\t\t\t\t\t\t\t\t\t<AlertTitle>{ title }</AlertTitle>\n\t\t\t\t\t\t\t\t\t\t<Box>{ description }</Box>\n\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t</InfoAlert>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</Infotip>\n\t\t\t\t\t</DirectionProvider>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { SizeControl } from './size-control';\n\nexport const GapControl = ( { label }: { label: string } ) => {\n\tconst stackRef = useRef< HTMLDivElement >( null );\n\n\tconst { disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst {\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tpropType,\n\t\tplaceholder: directionPlaceholder,\n\t\tdisabled: directionDisabled,\n\t} = useBoundProp( layoutDirectionPropTypeUtil );\n\n\tconst { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();\n\n\tconst inferIsLinked = () => {\n\t\tif ( layoutDirectionPropTypeUtil.isValid( masterValue ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! masterValue && layoutDirectionPropTypeUtil.isValid( masterPlaceholder ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst [ isLinked, setIsLinked ] = useState( () => inferIsLinked() );\n\n\tconst activeBreakpoint = useActiveBreakpoint();\n\tuseLayoutEffect( () => {\n\t\tsetIsLinked( inferIsLinked() );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\tconst onLinkToggle = () => {\n\t\tsetIsLinked( ( prev ) => ! prev );\n\n\t\tif ( ! layoutDirectionPropTypeUtil.isValid( masterValue ) ) {\n\t\t\tconst currentValue = masterValue ? masterValue : null;\n\n\t\t\tif ( ! currentValue ) {\n\t\t\t\tsetMasterValue( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetMasterValue(\n\t\t\t\tlayoutDirectionPropTypeUtil.create( {\n\t\t\t\t\trow: currentValue,\n\t\t\t\t\tcolumn: currentValue,\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentValue = directionValue?.column ?? directionValue?.row ?? null;\n\n\t\tsetMasterValue( currentValue );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || directionDisabled;\n\n\tconst propProviderProps = {\n\t\tpropType,\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tplaceholder: directionPlaceholder,\n\t};\n\n\tconst hasPlaceholders = ! masterValue && ( directionPlaceholder || masterPlaceholder );\n\n\treturn (\n\t\t<PropProvider { ...propProviderProps }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tisPlaceholder={ hasPlaceholders }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ stackRef }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Column', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control 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 { useCurrentUserCapabilities } from '@elementor/editor-current-user';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack, styled, ThemeProvider } from '@elementor/ui';\nimport { type OpenOptions, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ConditionalControlInfotip } from '../components/conditional-control-infotip';\nimport { EnableUnfilteredModal } from '../components/enable-unfiltered-modal';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\nconst TILE_SIZE = 8;\nconst TILE_WHITE = 'transparent';\nconst TILE_BLACK = '#c1c1c1';\nconst TILES_GRADIENT_FORMULA = `linear-gradient(45deg, ${ TILE_BLACK } 25%, ${ TILE_WHITE } 0, ${ TILE_WHITE } 75%, ${ TILE_BLACK } 0, ${ TILE_BLACK })`;\n\nconst StyledCard = styled( Card )`\n\tbackground-color: white;\n\tbackground-image: ${ TILES_GRADIENT_FORMULA }, ${ TILES_GRADIENT_FORMULA };\n\tbackground-size: ${ TILE_SIZE }px ${ TILE_SIZE }px;\n\tbackground-position:\n\t\t0 0,\n\t\t${ TILE_SIZE / 2 }px ${ TILE_SIZE / 2 }px;\n\tborder: none;\n`;\n\nconst StyledCardMediaContainer = styled( Stack )`\n\tposition: relative;\n\theight: 140px;\n\tobject-fit: contain;\n\tpadding: 5px;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground-color: rgba( 255, 255, 255, 0.37 );\n`;\n\nconst MODE_BROWSE: OpenOptions = { mode: 'browse' };\nconst MODE_UPLOAD: OpenOptions = { mode: 'upload' };\n\nexport const SvgMediaControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst [ unfilteredModalOpenState, setUnfilteredModalOpenState ] = useState( false );\n\tconst { canUser } = useCurrentUserCapabilities();\n\tconst canManageOptions = canUser( 'manage_options' );\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes: [ 'svg' ],\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\tconst onCloseUnfilteredModal = ( enabled: boolean ) => {\n\t\tsetUnfilteredModalOpenState( false );\n\n\t\tif ( enabled ) {\n\t\t\topen( MODE_UPLOAD );\n\t\t}\n\t};\n\n\tconst handleClick = ( openOptions?: OpenOptions ) => {\n\t\tif ( ! allowSvgUpload && openOptions === MODE_UPLOAD ) {\n\t\t\tsetUnfilteredModalOpenState( true );\n\t\t} else {\n\t\t\topen( openOptions );\n\t\t}\n\t};\n\n\tconst infotipProps = {\n\t\ttitle: __( \"Sorry, you can't upload that file yet.\", 'elementor' ),\n\t\tdescription: (\n\t\t\t<>\n\t\t\t\t{ __( 'To upload them anyway, ask the site administrator to enable unfiltered', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t{ __( 'file uploads.', 'elementor' ) }\n\t\t\t</>\n\t\t),\n\t\tisEnabled: ! canManageOptions,\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1 } aria-label=\"SVG Control\">\n\t\t\t<EnableUnfilteredModal open={ unfilteredModalOpenState } onClose={ onCloseUnfilteredModal } />\n\t\t\t<ControlActions>\n\t\t\t\t<StyledCard variant=\"outlined\">\n\t\t\t\t\t<StyledCardMediaContainer>\n\t\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t\t<CircularProgress role=\"progressbar\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<CardMedia\n\t\t\t\t\t\t\t\tcomponent=\"img\"\n\t\t\t\t\t\t\t\timage={ src }\n\t\t\t\t\t\t\t\talt={ __( 'Preview SVG', 'elementor' ) }\n\t\t\t\t\t\t\t\tsx={ { maxHeight: '140px', width: '50px' } }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</StyledCardMediaContainer>\n\t\t\t\t\t<CardOverlay\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba( 0, 0, 0, 0.75 )',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_BROWSE ) }\n\t\t\t\t\t\t\t\taria-label=\"Select SVG\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Select SVG', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<ConditionalControlInfotip { ...infotipProps }>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ThemeProvider colorScheme={ canManageOptions ? 'light' : 'dark' }>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ canManageOptions ? false : true }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => canManageOptions && handleClick( MODE_UPLOAD ) }\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Upload SVG\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</ThemeProvider>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</ConditionalControlInfotip>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</CardOverlay>\n\t\t\t\t</StyledCard>\n\t\t\t</ControlActions>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport {\n\tButton,\n\tCircularProgress,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogHeader,\n\tDialogTitle,\n\tDivider,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useUpdateUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\ntype EnableUnfilteredModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n};\n\ntype LocalModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n\tisPending?: boolean;\n\tisError?: boolean;\n\thandleEnable: () => void;\n};\n\nconst ADMIN_TITLE_TEXT = __( 'Enable Unfiltered Uploads', 'elementor' );\nconst ADMIN_CONTENT_TEXT = __(\n\t'Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.',\n\t'elementor'\n);\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT1 = __( 'Failed to enable unfiltered files upload.', 'elementor' );\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT2 = __(\n\t'You can try again, if the problem persists, please contact support.',\n\t'elementor'\n);\n\nconst WAIT_FOR_CLOSE_TIMEOUT_MS = 300;\n\nexport const EnableUnfilteredModal = ( props: EnableUnfilteredModalProps ) => {\n\tconst { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();\n\tconst [ isError, setIsError ] = useState( false );\n\n\tconst onClose = ( enabled: boolean ) => {\n\t\tprops.onClose( enabled );\n\t\tsetTimeout( () => setIsError( false ), WAIT_FOR_CLOSE_TIMEOUT_MS );\n\t};\n\n\tconst handleEnable = async () => {\n\t\ttry {\n\t\t\tconst response = await mutateAsync( { allowUnfilteredFilesUpload: true } );\n\t\t\tif ( response?.data?.success === false ) {\n\t\t\t\tsetIsError( true );\n\t\t\t} else {\n\t\t\t\tprops.onClose( true );\n\t\t\t}\n\t\t} catch {\n\t\t\tsetIsError( true );\n\t\t}\n\t};\n\n\tconst dialogProps = { ...props, isPending, handleEnable, isError, onClose };\n\n\treturn <AdminDialog { ...dialogProps } />;\n};\n\nconst AdminDialog = ( { open, onClose, handleEnable, isPending, isError }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>\n\t\t\t\t{ isError ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ADMIN_FAILED_CONTENT_TEXT_PT1 } <br /> { ADMIN_FAILED_CONTENT_TEXT_PT2 }\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tADMIN_CONTENT_TEXT\n\t\t\t\t) }\n\t\t\t</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } color=\"secondary\" onClick={ () => onClose( false ) }>\n\t\t\t\t{ __( 'Cancel', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tsize={ 'medium' }\n\t\t\t\tonClick={ () => handleEnable() }\n\t\t\t\tvariant=\"contained\"\n\t\t\t\tcolor=\"primary\"\n\t\t\t\tdisabled={ isPending }\n\t\t\t>\n\t\t\t\t{ isPending ? <CircularProgress size={ 24 } /> : __( 'Enable', 'elementor' ) }\n\t\t\t</Button>\n\t\t</DialogActions>\n\t</Dialog>\n);\n","import * as React from 'react';\nimport { backgroundPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { SelectControl } from '../select-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nconst clipOptions = [\n\t{ label: __( 'Full element', 'elementor' ), value: 'border-box' },\n\t{ label: __( 'Padding edges', 'elementor' ), value: 'padding-box' },\n\t{ label: __( 'Content edges', 'elementor' ), value: 'content-box' },\n\t{ label: __( 'Text', 'elementor' ), value: 'text' },\n];\n\nconst colorLabel = __( 'Color', 'elementor' );\nconst clipLabel = __( 'Clipping', 'elementor' );\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind=\"background-overlay\">\n\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t</PropKeyProvider>\n\t\t\t<BackgroundColorField />\n\t\t\t<BackgroundClipField />\n\t\t</PropProvider>\n\t);\n} );\n\nconst BackgroundColorField = () => {\n\treturn (\n\t\t<PropKeyProvider bind=\"color\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ colorLabel }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst BackgroundClipField = () => {\n\treturn (\n\t\t<PropKeyProvider bind=\"clip\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ clipLabel }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SelectControl options={ clipOptions } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\tcolorPropTypeUtil,\n} from '@elementor/editor-props';\nimport { Box, CardMedia, styled, Tab, TabPanel, Tabs, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlRepeater, ItemsContainer, TooltipAddItemAction } from '../../../components/control-repeater';\nimport { DisableItemAction } from '../../../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../../components/control-repeater/actions/remove-item-action';\nimport { useRepeaterContext } from '../../../components/control-repeater/context/repeater-context';\nimport { EditItemPopover } from '../../../components/control-repeater/items/edit-item-popover';\nimport { Item } from '../../../components/control-repeater/items/item';\nimport { type CollectionPropUtil, type RepeatablePropValue } from '../../../components/control-repeater/types';\nimport { PopoverContent } from '../../../components/popover-content';\nimport { RepeaterHeader } from '../../../components/repeater/repeater-header';\nimport { createControl } from '../../../create-control';\nimport { env } from '../../../env';\nimport { ColorControl } from '../../color-control';\nimport { ImageControl } from '../../image-control';\nimport {\n\tBackgroundGradientColorControl,\n\ttype ColorStop,\n\tinitialBackgroundGradientOverlay,\n} from '../background-gradient-color-control';\nimport { BackgroundImageOverlayAttachment } from './background-image-overlay/background-image-overlay-attachment';\nimport { BackgroundImageOverlayPosition } from './background-image-overlay/background-image-overlay-position';\nimport { BackgroundImageOverlayRepeat } from './background-image-overlay/background-image-overlay-repeat';\nimport { BackgroundImageOverlaySize } from './background-image-overlay/background-image-overlay-size';\nimport { type BackgroundImageOverlay } from './types';\nimport { useBackgroundTabsHistory } from './use-background-tabs-history';\n\nconst DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR = '#00000033';\n\nexport const initialBackgroundColorOverlay: BackgroundOverlayItemPropValue = backgroundColorOverlayPropTypeUtil.create(\n\t{\n\t\tcolor: colorPropTypeUtil.create( DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR ),\n\t}\n);\n\nexport const getInitialBackgroundOverlay = (): BackgroundOverlayItemPropValue => ( {\n\t$$type: 'background-image-overlay',\n\tvalue: {\n\t\timage: {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: {\n\t\t\t\t\t$$type: 'image-src',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\turl: {\n\t\t\t\t\t\t\t$$type: 'url',\n\t\t\t\t\t\t\tvalue: env.background_placeholder_image,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t\tvalue: 'large',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst backgroundResolutionOptions = [\n\t{ label: __( 'Thumbnail - 150 x 150', 'elementor' ), value: 'thumbnail' },\n\t{ label: __( 'Medium - 300 x 300', 'elementor' ), value: 'medium' },\n\t{ label: __( 'Large 1024 x 1024', 'elementor' ), value: 'large' },\n\t{ label: __( 'Full', 'elementor' ), value: 'full' },\n];\n\nexport const BackgroundOverlayRepeaterControl = createControl( () => {\n\tconst { propType, value: overlayValues, setValue } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ overlayValues } setValue={ setValue }>\n\t\t\t<ControlRepeater\n\t\t\t\tinitial={ getInitialBackgroundOverlay() as RepeatablePropValue }\n\t\t\t\tpropTypeUtil={ backgroundOverlayPropTypeUtil as CollectionPropUtil< RepeatablePropValue > }\n\t\t\t>\n\t\t\t\t<RepeaterHeader label={ __( 'Overlay', 'elementor' ) }>\n\t\t\t\t\t<TooltipAddItemAction newItemIndex={ 0 } />\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<ItemContent />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nexport const ItemContent = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory( {\n\t\timage: getInitialBackgroundOverlay().value,\n\t\tcolor: initialBackgroundColorOverlay.value,\n\t\tgradient: initialBackgroundGradientOverlay.value,\n\t} );\n\n\tconst { rowRef } = useRepeaterContext();\n\n\treturn (\n\t\t<Box sx={ { width: '100%' } }>\n\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t<Tabs\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\taria-label={ __( 'Background Overlay', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<Tab label={ __( 'Image', 'elementor' ) } { ...getTabProps( 'image' ) } />\n\t\t\t\t\t<Tab label={ __( 'Gradient', 'elementor' ) } { ...getTabProps( 'gradient' ) } />\n\t\t\t\t\t<Tab label={ __( 'Color', 'elementor' ) } { ...getTabProps( 'color' ) } />\n\t\t\t\t</Tabs>\n\t\t\t</Box>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'image' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ImageOverlayContent />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'gradient' ) }>\n\t\t\t\t<BackgroundGradientColorControl />\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'color' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ColorOverlayContent anchorEl={ rowRef } />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: RepeatablePropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemIconImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemIconColor value={ value as BackgroundOverlayItemPropValue } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemIconGradient value={ value as BackgroundOverlayItemPropValue } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst extractColorFrom = ( prop: BackgroundOverlayItemPropValue ) => {\n\tif ( prop?.value?.color?.value ) {\n\t\treturn prop.value.color.value;\n\t}\n\n\treturn '';\n};\n\nconst ItemIconColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ color } />;\n};\n\nconst ItemIconImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn (\n\t\t<CardMedia\n\t\t\timage={ imageUrl }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\theight: '1rem',\n\t\t\t\twidth: '1rem',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\t\t\t\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nconst ItemIconGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst gradient = getGradientValue( value );\n\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ gradient } />;\n};\n\nexport const ItemLabel = ( { value }: { value: RepeatablePropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemLabelImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemLabelColor value={ value as BackgroundOverlayItemPropValue } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemLabelGradient value={ value as BackgroundOverlayItemPropValue } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst ItemLabelColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <span>{ color }</span>;\n};\n\nconst ItemLabelImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn <span>{ imageTitle }</span>;\n};\n\nconst ItemLabelGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tif ( value.value.type.value === 'linear' ) {\n\t\treturn <span>{ __( 'Linear Gradient', 'elementor' ) }</span>;\n\t}\n\n\treturn <span>{ __( 'Radial Gradient', 'elementor' ) }</span>;\n};\n\nconst ColorOverlayContent = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst propContext = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'color' }>\n\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst ImageOverlayContent = () => {\n\tconst propContext = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'image' }>\n\t\t\t\t<ImageControl sizes={ backgroundResolutionOptions } />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'position' }>\n\t\t\t\t<BackgroundImageOverlayPosition />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'repeat' }>\n\t\t\t\t<BackgroundImageOverlayRepeat />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t<BackgroundImageOverlaySize />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'attachment' }>\n\t\t\t\t<BackgroundImageOverlayAttachment />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\theight: '1rem',\n\twidth: '1rem',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst useImage = ( image: BackgroundImageOverlay ) => {\n\tlet imageTitle,\n\t\timageUrl: string | null = null;\n\n\tconst imageSrc = image?.value.image.value?.src.value;\n\tconst { data: attachment } = useWpMediaAttachment( imageSrc.id?.value || null );\n\n\tif ( imageSrc.id ) {\n\t\tconst imageFileTypeExtension = getFileExtensionFromFilename( attachment?.filename );\n\t\timageTitle = `${ attachment?.title }${ imageFileTypeExtension }` || null;\n\t\timageUrl = attachment?.url || null;\n\t} else if ( imageSrc.url ) {\n\t\timageUrl = imageSrc.url.value;\n\t\timageTitle = imageUrl?.substring( imageUrl.lastIndexOf( '/' ) + 1 ) || null;\n\t}\n\n\treturn { imageTitle, imageUrl };\n};\n\nconst getFileExtensionFromFilename = ( filename?: string ) => {\n\tif ( ! filename ) {\n\t\treturn '';\n\t}\n\n\t// get the substring after the last . in the filename\n\tconst extension = filename.substring( filename.lastIndexOf( '.' ) + 1 );\n\n\treturn `.${ extension }`;\n};\n\nconst getGradientValue = ( value: BackgroundOverlayItemPropValue ) => {\n\tconst gradient = value.value;\n\n\tconst stops = gradient.stops.value\n\t\t?.map( ( { value: { color, offset } }: ColorStop ) => `${ color.value } ${ offset.value ?? 0 }%` )\n\t\t?.join( ',' );\n\n\tif ( gradient.type.value === 'linear' ) {\n\t\treturn `linear-gradient(${ gradient.angle.value }deg, ${ stops })`;\n\t}\n\n\treturn `radial-gradient(circle at ${ gradient.positions.value }, ${ stops })`;\n};\n","import { parseEnv } from '@elementor/env';\n\nexport const { env } = parseEnv< {\n\tbackground_placeholder_image: string;\n} >( '@elementor/editor-controls' );\n","import * as React from 'react';\nimport {\n\tbackgroundGradientOverlayPropTypeUtil,\n\ttype BackgroundGradientOverlayPropValue,\n\ttype BackgroundOverlayItemPropValue,\n\tcolorPropTypeUtil,\n\ttype ColorPropValue,\n\tcolorStopPropTypeUtil,\n\tgradientColorStopPropTypeUtil,\n\tnumberPropTypeUtil,\n\ttype NumberPropValue,\n\tstringPropTypeUtil,\n\ttype TransformablePropValue,\n} from '@elementor/editor-props';\nimport { UnstableGradientBox } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { createControl } from '../../create-control';\n\nexport type ColorStop = TransformablePropValue<\n\t'color-stop',\n\t{\n\t\tcolor: ColorPropValue;\n\t\toffset: NumberPropValue;\n\t}\n>;\n\nexport const BackgroundGradientColorControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst handleChange = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => {\n\t\tconst transformedValue = createTransformableValue( newValue );\n\n\t\tif ( transformedValue.positions ) {\n\t\t\ttransformedValue.positions = stringPropTypeUtil.create( newValue.positions.join( ' ' ) );\n\t\t}\n\n\t\tsetValue( transformedValue );\n\t};\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst createTransformableValue = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => ( {\n\t\t...newValue,\n\t\ttype: stringPropTypeUtil.create( newValue.type ),\n\t\tangle: numberPropTypeUtil.create( newValue.angle ),\n\t\tstops: gradientColorStopPropTypeUtil.create(\n\t\t\tnewValue.stops.map( ( { color, offset }: { color: string; offset: number } ) =>\n\t\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\t\tcolor: colorPropTypeUtil.create( color ),\n\t\t\t\t\toffset: numberPropTypeUtil.create( offset ),\n\t\t\t\t} )\n\t\t\t)\n\t\t),\n\t} );\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst normalizeValue = () => {\n\t\tif ( ! value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { type, angle, stops, positions } = value;\n\n\t\treturn {\n\t\t\ttype: type.value,\n\t\t\tangle: angle.value,\n\t\t\tstops: stops.value.map( ( { value: { color, offset } }: ColorStop ) => ( {\n\t\t\t\tcolor: color.value,\n\t\t\t\toffset: offset.value,\n\t\t\t} ) ),\n\t\t\tpositions: positions?.value.split( ' ' ),\n\t\t};\n\t};\n\n\treturn (\n\t\t<UnstableGradientBox\n\t\t\tsx={ { width: 'auto', padding: 1.5 } }\n\t\t\tvalue={ normalizeValue() }\n\t\t\tonChange={ handleChange }\n\t\t/>\n\t);\n} );\n\nexport const initialBackgroundGradientOverlay: BackgroundOverlayItemPropValue =\n\tbackgroundGradientOverlayPropTypeUtil.create( {\n\t\ttype: stringPropTypeUtil.create( 'linear' ),\n\t\tangle: numberPropTypeUtil.create( 180 ),\n\t\tstops: gradientColorStopPropTypeUtil.create( [\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(0,0,0)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 0 ),\n\t\t\t} ),\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(255,255,255)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 100 ),\n\t\t\t} ),\n\t\t] ),\n\t} );\n","import * as React from 'react';\nimport { PinIcon, PinnedOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Attachment = 'fixed' | 'scroll';\n\nconst attachmentControlOptions: ToggleButtonGroupItem< Attachment >[] = [\n\t{\n\t\tvalue: 'fixed',\n\t\tlabel: __( 'Fixed', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'scroll',\n\t\tlabel: __( 'Scroll', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinnedOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayAttachment = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Attachment', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleControl options={ attachmentControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport ControlActions from '../../../../control-actions/control-actions';\nimport { SizeControl } from '../../../size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst backgroundPositionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const BackgroundImageOverlayPosition = () => {\n\tconst backgroundImageOffsetContext = useBoundProp( backgroundImagePositionOffsetPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageOffsetContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tbackgroundImageOffsetContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t\t\t<ControlActions>\n\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t( backgroundImageOffsetContext.value ? 'custom' : stringPropContext.value ) ?? ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ backgroundPositionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t</ControlActions>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageOffsetContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Repeaters = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';\n\nconst repeatControlOptions: ToggleButtonGroupItem< Repeaters >[] = [\n\t{\n\t\tvalue: 'repeat',\n\t\tlabel: __( 'Repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <GridDotsIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-x',\n\t\tlabel: __( 'Repeat-x', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsHorizontalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-y',\n\t\tlabel: __( 'Repeat-y', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsVerticalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'no-repeat',\n\t\tlabel: __( 'No-repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <XIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayRepeat = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Repeat', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t<ToggleControl options={ repeatControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tArrowBarBothIcon,\n\tArrowsMaximizeIcon,\n\tArrowsMoveHorizontalIcon,\n\tArrowsMoveVerticalIcon,\n\tLetterAIcon,\n\tPencilIcon,\n} from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport {\n\tControlToggleButtonGroup,\n\ttype ToggleButtonGroupItem,\n} from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { SizeControl } from '../../../size-control';\n\ntype Sizes = 'auto' | 'cover' | 'contain' | 'custom';\n\nconst sizeControlOptions: ToggleButtonGroupItem< Sizes >[] = [\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterAIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'cover',\n\t\tlabel: __( 'Cover', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowsMaximizeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: __( 'Contain', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBarBothIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'custom',\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlaySize = () => {\n\tconst backgroundImageScaleContext = useBoundProp( backgroundImageSizeScalePropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageScaleContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handleSizeChange = ( size: Sizes | null ) => {\n\t\tif ( size === 'custom' ) {\n\t\t\tbackgroundImageScaleContext.setValue( { width: null, height: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( size );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Size', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\texclusive\n\t\t\t\t\t\t\titems={ sizeControlOptions }\n\t\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t( backgroundImageScaleContext.value ? 'custom' : stringPropContext.value ) as Sizes\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageScaleContext }>\n\t\t\t\t\t<Grid item xs={ 12 } ref={ rowRef }>\n\t\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'width' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveHorizontalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'height' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveVerticalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundGradientOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type BackgroundImageOverlay } from './types';\n\ntype OverlayType = 'image' | 'gradient' | 'color';\n\ntype InitialBackgroundValues = {\n\tcolor: BackgroundOverlayItemPropValue[ 'value' ];\n\timage: BackgroundImageOverlay[ 'value' ];\n\tgradient: BackgroundOverlayItemPropValue[ 'value' ];\n};\n\nexport const useBackgroundTabsHistory = ( {\n\tcolor: initialBackgroundColorOverlay,\n\timage: initialBackgroundImageOverlay,\n\tgradient: initialBackgroundGradientOverlay,\n}: InitialBackgroundValues ) => {\n\tconst { value: imageValue, setValue: setImageValue } = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\tconst { value: colorValue, setValue: setColorValue } = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\tconst { value: gradientValue, setValue: setGradientValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst getCurrentOverlayType = (): OverlayType => {\n\t\tif ( colorValue ) {\n\t\t\treturn 'color';\n\t\t}\n\n\t\tif ( gradientValue ) {\n\t\t\treturn 'gradient';\n\t\t}\n\n\t\treturn 'image';\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< OverlayType >( getCurrentOverlayType() );\n\n\tconst valuesHistory = useRef< InitialBackgroundValues >( {\n\t\timage: initialBackgroundImageOverlay,\n\t\tcolor: initialBackgroundColorOverlay,\n\t\tgradient: initialBackgroundGradientOverlay,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialBackgroundValues, value: BackgroundOverlayItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: OverlayType ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase 'image':\n\t\t\t\tsetImageValue( valuesHistory.current.image );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'gradient':\n\t\t\t\tsetGradientValue( valuesHistory.current.gradient );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'color':\n\t\t\t\tsetColorValue( valuesHistory.current.color );\n\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\treturn {\n\t\tgetTabProps,\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { createArrayPropUtils, type SizePropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlRepeater, Item, TooltipAddItemAction } from '../components/control-repeater';\nimport { DisableItemAction } from '../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../components/control-repeater/actions/remove-item-action';\nimport { type TooltipAddItemActionProps } from '../components/control-repeater/actions/tooltip-add-item-action';\nimport { EditItemPopover } from '../components/control-repeater/items/edit-item-popover';\nimport { ItemsContainer } from '../components/control-repeater/items/items-container';\nimport { type CollectionPropUtil, type RepeatablePropValue } from '../components/control-repeater/types';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { RepeaterHeader } from '../components/repeater/repeater-header';\nimport { createControl } from '../create-control';\nimport {\n\ttype ChildControlConfig,\n\tRepeatableControlContext,\n\tuseRepeatableControlContext,\n} from '../hooks/use-repeatable-control-context';\nimport { CUSTOM_SIZE_LABEL } from './size-control';\n\ntype RepeatableControlProps = {\n\tlabel: string;\n\trepeaterLabel: string;\n\tchildControlConfig: ChildControlConfig;\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tinitialValues?: object;\n\tpatternLabel?: string;\n\tplaceholder?: string;\n\tpropKey?: string;\n\taddItemTooltipProps?: TooltipAddItemActionProps;\n};\n\nconst PLACEHOLDER_REGEX = /\\$\\{([^}]+)\\}/g;\n\nexport const RepeatableControl = createControl(\n\t( {\n\t\trepeaterLabel,\n\t\tchildControlConfig,\n\t\tshowDuplicate,\n\t\tshowToggle,\n\t\tinitialValues,\n\t\tpatternLabel,\n\t\tplaceholder,\n\t\tpropKey,\n\t\taddItemTooltipProps,\n\t}: RepeatableControlProps ) => {\n\t\tconst { propTypeUtil: childPropTypeUtil, isItemDisabled } = childControlConfig;\n\n\t\tif ( ! childPropTypeUtil ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst childArrayPropTypeUtil = useMemo(\n\t\t\t() => createArrayPropUtils( childPropTypeUtil.key, childPropTypeUtil.schema, propKey ),\n\t\t\t[ childPropTypeUtil.key, childPropTypeUtil.schema, propKey ]\n\t\t);\n\n\t\tconst contextValue = useMemo(\n\t\t\t() => ( {\n\t\t\t\t...childControlConfig,\n\t\t\t\tplaceholder: placeholder || '',\n\t\t\t\tpatternLabel: patternLabel || '',\n\t\t\t} ),\n\t\t\t[ childControlConfig, placeholder, patternLabel ]\n\t\t);\n\n\t\tconst { propType, value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\n\t\treturn (\n\t\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t\t<RepeatableControlContext.Provider value={ contextValue }>\n\t\t\t\t\t<ControlRepeater\n\t\t\t\t\t\tinitial={ childPropTypeUtil.create( initialValues || null ) }\n\t\t\t\t\t\tpropTypeUtil={ childArrayPropTypeUtil as CollectionPropUtil< RepeatablePropValue > }\n\t\t\t\t\t\tisItemDisabled={ isItemDisabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t<RepeaterHeader label={ repeaterLabel }>\n\t\t\t\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\t\t\t\t{ ...addItemTooltipProps }\n\t\t\t\t\t\t\t\tnewItemIndex={ 0 }\n\t\t\t\t\t\t\t\tariaLabel={ repeaterLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RepeaterHeader>\n\t\t\t\t\t\t<ItemsContainer isSortable={ false }>\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ showDuplicate && <DuplicateItemAction /> }\n\t\t\t\t\t\t\t\t\t\t{ showToggle && <DisableItemAction /> }\n\t\t\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ItemsContainer>\n\t\t\t\t\t\t<EditItemPopover>\n\t\t\t\t\t\t\t<Content />\n\t\t\t\t\t\t</EditItemPopover>\n\t\t\t\t\t</ControlRepeater>\n\t\t\t\t</RepeatableControlContext.Provider>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\n// TODO: Configurable icon probably can be somehow part of the injected control and bubbled up to the repeater\nconst ItemIcon = () => <></>;\n\nconst Content = () => {\n\tconst { component: ChildControl, props = {} } = useRepeatableControlContext();\n\treturn (\n\t\t<PopoverContent p={ 1.5 }>\n\t\t\t<PopoverGridContainer>\n\t\t\t\t<ChildControl { ...props } />\n\t\t\t</PopoverGridContainer>\n\t\t</PopoverContent>\n\t);\n};\n\nconst interpolate = ( template: string, data: Record< string, unknown > ) => {\n\tif ( ! data ) {\n\t\treturn template;\n\t}\n\n\treturn template.replace( PLACEHOLDER_REGEX, ( _, path ): string => {\n\t\tconst value = getNestedValue( data, path );\n\n\t\tif ( typeof value === 'object' && value !== null && ! Array.isArray( value ) ) {\n\t\t\tif ( 'name' in value && value.name ) {\n\t\t\t\treturn value.name as string;\n\t\t\t}\n\n\t\t\treturn JSON.stringify( value );\n\t\t}\n\n\t\tif ( Array.isArray( value ) ) {\n\t\t\treturn value.join( ', ' );\n\t\t}\n\n\t\treturn String( value ?? '' );\n\t} );\n};\n\nconst getNestedValue = ( obj: Record< string, unknown >, path: string ) => {\n\tlet parentObj: Record< string, unknown > = {};\n\tconst pathKeys = path.split( '.' );\n\tconst key = pathKeys.slice( -1 )[ 0 ];\n\n\tlet value: unknown = pathKeys.reduce( ( current: Record< string, unknown >, currentKey, currentIndex ) => {\n\t\tif ( currentIndex === pathKeys.length - 2 ) {\n\t\t\tparentObj = current;\n\t\t}\n\n\t\tif ( current && typeof current === 'object' ) {\n\t\t\treturn current[ currentKey ] as Record< string, unknown >;\n\t\t}\n\n\t\treturn {};\n\t}, obj );\n\n\tvalue = !! value ? value : '';\n\tconst propType = parentObj?.$$type;\n\tconst propValue = parentObj?.value as SizePropValue[ 'value' ];\n\tconst doesValueRepresentCustomSize = key === 'unit' && propType === 'size' && propValue?.unit === 'custom';\n\n\tif ( ! doesValueRepresentCustomSize ) {\n\t\treturn value;\n\t}\n\n\treturn propValue?.size ? '' : CUSTOM_SIZE_LABEL;\n};\n\nconst isEmptyValue = ( val: unknown ) => {\n\tif ( typeof val === 'string' ) {\n\t\treturn val.trim() === '';\n\t}\n\n\tif ( Number.isNaN( val ) ) {\n\t\treturn true;\n\t}\n\n\tif ( Array.isArray( val ) ) {\n\t\treturn val.length === 0;\n\t}\n\n\tif ( typeof val === 'object' && val !== null ) {\n\t\treturn Object.keys( val ).length === 0;\n\t}\n\n\treturn false;\n};\n\nconst shouldShowPlaceholder = ( pattern: string, data: Record< string, unknown > ): boolean => {\n\tconst propertyPaths = getAllProperties( pattern );\n\n\tconst values = propertyPaths.map( ( path ) => getNestedValue( data, path ) );\n\n\tif ( values.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tif ( values.some( ( value ) => value === null || value === undefined ) ) {\n\t\treturn true;\n\t}\n\n\tif ( values.every( isEmptyValue ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nconst getTextColor = ( isReadOnly: boolean, showPlaceholder: boolean ): string => {\n\tif ( isReadOnly ) {\n\t\treturn 'text.disabled';\n\t}\n\treturn showPlaceholder ? 'text.tertiary' : 'text.primary';\n};\n\nconst ItemLabel = ( { value }: { value: Record< string, unknown > } ) => {\n\tconst { placeholder, patternLabel, props: childProps } = useRepeatableControlContext();\n\tconst showPlaceholder = shouldShowPlaceholder( patternLabel, value );\n\tconst label = showPlaceholder ? placeholder : interpolate( patternLabel, value );\n\tconst isReadOnly = !! childProps?.readOnly;\n\tconst color = getTextColor( isReadOnly, showPlaceholder );\n\n\treturn (\n\t\t<Box component=\"span\" color={ color }>\n\t\t\t{ label }\n\t\t</Box>\n\t);\n};\n\nconst getAllProperties = ( pattern: string ) => {\n\tconst properties = pattern.match( PLACEHOLDER_REGEX )?.map( ( match ) => match.slice( 2, -1 ) ) || [];\n\n\treturn properties;\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport {\n\ttype CreateOptions,\n\tisTransformable,\n\tkeyValuePropTypeUtil,\n\ttype PropKey,\n\ttype Props,\n\tstringPropTypeUtil,\n} from '@elementor/editor-props';\nimport { FormHelperText, FormLabel, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\nimport { escapeHtmlAttr } from '../utils/escape-html-attr';\nimport { TextControl } from './text-control';\n\ntype KeyValueControlProps = {\n\tkeyName?: string;\n\tvalueName?: string;\n\tregexKey?: string;\n\tregexValue?: string;\n\tvalidationErrorMessage?: string;\n\tescapeHtml?: boolean;\n\tgetHelperText?: ( key: string, value: string ) => { keyHelper?: string; valueHelper?: string };\n};\n\nconst getInitialFieldValue = ( fieldValue: unknown ): string => {\n\tconst transformableValue = fieldValue as { $$type?: string; value?: string };\n\n\tif ( ! fieldValue || typeof fieldValue !== 'object' || transformableValue.$$type === 'dynamic' ) {\n\t\treturn '';\n\t}\n\n\treturn transformableValue.value || '';\n};\n\nexport const KeyValueControl = createControl( ( props: KeyValueControlProps = {} ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( keyValuePropTypeUtil );\n\tconst [ keyError, setKeyError ] = useState< string >( '' );\n\tconst [ valueError, setValueError ] = useState< string >( '' );\n\n\tconst [ sessionState, setSessionState ] = useState( {\n\t\tkey: getInitialFieldValue( value?.key ),\n\t\tvalue: getInitialFieldValue( value?.value ),\n\t} );\n\n\tconst keyLabel = props.keyName || __( 'Key', 'elementor' );\n\tconst valueLabel = props.valueName || __( 'Value', 'elementor' );\n\tconst { keyHelper, valueHelper } = props.getHelperText?.( sessionState.key, sessionState.value ) || {\n\t\tkeyHelper: undefined,\n\t\tvalueHelper: undefined,\n\t};\n\n\tconst [ keyRegex, valueRegex, errMsg ] = useMemo< [ RegExp | undefined, RegExp | undefined, string ] >(\n\t\t() => [\n\t\t\tprops.regexKey ? new RegExp( props.regexKey ) : undefined,\n\t\t\tprops.regexValue ? new RegExp( props.regexValue ) : undefined,\n\t\t\tprops.validationErrorMessage || __( 'Invalid Format', 'elementor' ),\n\t\t],\n\t\t[ props.regexKey, props.regexValue, props.validationErrorMessage ]\n\t);\n\n\tconst validate = ( newValue: string, fieldType: string ): boolean => {\n\t\tif ( fieldType === 'key' && keyRegex ) {\n\t\t\tconst isValid = keyRegex.test( newValue );\n\t\t\tsetKeyError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t} else if ( fieldType === 'value' && valueRegex ) {\n\t\t\tconst isValid = valueRegex.test( newValue );\n\t\t\tsetValueError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst handleChange = ( newValue: Props, options?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tconst fieldType = meta?.bind;\n\n\t\tif ( ! fieldType ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newChangedValue = newValue[ fieldType ];\n\n\t\tif ( isTransformable( newChangedValue ) && newChangedValue.$$type === 'dynamic' ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst extractedValue = stringPropTypeUtil.extract( newChangedValue );\n\n\t\tsetSessionState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ fieldType ]: extractedValue,\n\t\t} ) );\n\n\t\tif ( extractedValue && validate( extractedValue, fieldType ) ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\t\t} else {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: {\n\t\t\t\t\tvalue: '',\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ handleChange }>\n\t\t\t<Grid container gap={ 1.5 }>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ keyLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'key' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ props.escapeHtml ? escapeHtmlAttr( sessionState.key ) : sessionState.key }\n\t\t\t\t\t\t\terror={ !! keyError }\n\t\t\t\t\t\t\thelperText={ keyHelper }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! keyError && <FormHelperText error>{ keyError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ valueLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'value' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ props.escapeHtml ? escapeHtmlAttr( sessionState.value ) : sessionState.value }\n\t\t\t\t\t\t\terror={ !! valueError }\n\t\t\t\t\t\t\tinputDisabled={ !! keyError }\n\t\t\t\t\t\t\thelperText={ valueHelper }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! valueError && <FormHelperText error>{ valueError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropProvider>\n\t);\n} );\n","export const escapeHtmlAttr = ( value: string ): string => {\n\tconst specialChars: Record< string, string > = {\n\t\t'&': '&',\n\t\t'<': '<',\n\t\t'>': '>',\n\t\t\"'\": ''',\n\t\t'\"': '"',\n\t};\n\n\treturn value.replace( /[&<>'\"]/g, ( char ) => specialChars[ char ] || char );\n};\n","import * as React from 'react';\nimport { positionPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SizeControl } from './size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst positionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const PositionControl = () => {\n\tconst positionContext = useBoundProp( positionPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! positionContext.value;\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tpositionContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Object position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( positionContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ positionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t{ isCustom && (\n\t\t\t\t<PropProvider { ...positionContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type PropType, transformFunctionsPropTypeUtil, transformPropTypeUtil } from '@elementor/editor-props';\nimport { AdjustmentsIcon, InfoCircleFilledIcon } from '@elementor/icons';\nimport { bindTrigger, Box, IconButton, type PopupState, Tooltip, Typography, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../../components/control-repeater';\nimport { DisableItemAction } from '../../components/control-repeater/actions/disable-item-action';\nimport { RemoveItemAction } from '../../components/control-repeater/actions/remove-item-action';\nimport { EditItemPopover } from '../../components/control-repeater/items/edit-item-popover';\nimport { RepeaterHeader } from '../../components/repeater/repeater-header';\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\nimport { createControl } from '../../create-control';\nimport { initialRotateValue, initialScaleValue, initialSkewValue, initialTransformValue } from './initial-values';\nimport { TransformContent } from './transform-content';\nimport { TransformIcon } from './transform-icon';\nimport { TransformLabel } from './transform-label';\nimport { TransformSettingsControl } from './transform-settings-control';\n\nconst SIZE = 'tiny';\n\nexport const TransformRepeaterControl = createControl( () => {\n\tconst context = useBoundProp( transformPropTypeUtil );\n\tconst headerRef = useRef< HTMLDivElement >( null );\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<TransformSettingsControl popupState={ popupState } anchorRef={ headerRef } />\n\t\t\t<PropKeyProvider bind={ 'transform-functions' }>\n\t\t\t\t<Repeater headerRef={ headerRef } propType={ context.propType } popupState={ popupState } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ToolTip = (\n\t<Box\n\t\tcomponent=\"span\"\n\t\taria-label={ undefined }\n\t\tsx={ { display: 'flex', gap: 0.5, p: 2, width: 320, borderRadius: 1 } }\n\t>\n\t\t<InfoCircleFilledIcon sx={ { color: 'secondary.main' } } />\n\t\t<Typography variant=\"body2\" color=\"text.secondary\" fontSize=\"14px\">\n\t\t\t{ __( 'You can use each kind of transform only once per element.', 'elementor' ) }\n\t\t</Typography>\n\t</Box>\n);\n\nconst Repeater = ( {\n\theaderRef,\n\tpropType,\n\tpopupState,\n}: {\n\theaderRef: React.RefObject< HTMLDivElement >;\n\tpropType: PropType;\n\tpopupState: PopupState;\n} ) => {\n\tconst transformFunctionsContext = useBoundProp( transformFunctionsPropTypeUtil );\n\tconst availableValues = [ initialTransformValue, initialScaleValue, initialRotateValue, initialSkewValue ];\n\tconst { value: transformValues, bind } = transformFunctionsContext;\n\n\tconst getInitialValue = () => {\n\t\treturn availableValues.find( ( value ) => ! transformValues?.some( ( item ) => item.$$type === value.$$type ) );\n\t};\n\n\tconst shouldDisableAddItem = ! getInitialValue();\n\n\treturn (\n\t\t<PropProvider { ...transformFunctionsContext }>\n\t\t\t<ControlRepeater\n\t\t\t\tinitial={ getInitialValue() ?? initialTransformValue }\n\t\t\t\tpropTypeUtil={ transformFunctionsPropTypeUtil }\n\t\t\t>\n\t\t\t\t<RepeaterHeader\n\t\t\t\t\tlabel={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\tadornment={ () => <ControlAdornments customContext={ { path: [ 'transform' ], propType } } /> }\n\t\t\t\t\tref={ headerRef }\n\t\t\t\t>\n\t\t\t\t\t<TransformBasePopoverTrigger popupState={ popupState } repeaterBindKey={ bind } />\n\t\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\t\tdisabled={ shouldDisableAddItem }\n\t\t\t\t\t\ttooltipContent={ ToolTip }\n\t\t\t\t\t\tenableTooltip={ shouldDisableAddItem }\n\t\t\t\t\t\tariaLabel={ 'transform' }\n\t\t\t\t\t/>\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ TransformIcon }\n\t\t\t\t\t\tLabel={ TransformLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<TransformContent />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n};\n\nconst TransformBasePopoverTrigger = ( {\n\tpopupState,\n\trepeaterBindKey,\n}: {\n\tpopupState: PopupState;\n\trepeaterBindKey: string;\n} ) => {\n\tconst { bind } = useBoundProp();\n\tconst titleLabel = __( 'Transform settings', 'elementor' );\n\n\treturn bind !== repeaterBindKey ? null : (\n\t\t<Tooltip title={ titleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } aria-label={ titleLabel } { ...bindTrigger( popupState ) }>\n\t\t\t\t<AdjustmentsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import {\n\tnumberPropTypeUtil,\n\trotateTransformPropTypeUtil,\n\tscaleTransformPropTypeUtil,\n\tskewTransformPropTypeUtil,\n\ttype TransformFunctionsItemPropValue,\n} from '@elementor/editor-props';\n\nexport type TransformFunction = 'transform-move' | 'transform-scale' | 'transform-rotate' | 'transform-skew';\n\nexport const TransformFunctionKeys: Record< string, TransformFunction > = {\n\tmove: 'transform-move',\n\tscale: 'transform-scale',\n\trotate: 'transform-rotate',\n\tskew: 'transform-skew',\n};\n\nexport const defaultValues = {\n\tmove: {\n\t\tsize: 0,\n\t\tunit: 'px',\n\t},\n\tscale: 1,\n\trotate: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n\tskew: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n};\n\nexport const initialTransformValue: TransformFunctionsItemPropValue = {\n\t$$type: TransformFunctionKeys.move,\n\tvalue: {\n\t\tx: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\ty: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\tz: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t},\n};\n\nexport const initialScaleValue = scaleTransformPropTypeUtil.create( {\n\tx: numberPropTypeUtil.create( defaultValues.scale ),\n\ty: numberPropTypeUtil.create( defaultValues.scale ),\n\tz: numberPropTypeUtil.create( defaultValues.scale ),\n} );\n\nexport const initialRotateValue = rotateTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\tz: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n} );\n\nexport const initialSkewValue = skewTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n} );\n","import * as React from 'react';\nimport { Box, Tab, TabPanel, Tabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverContent } from '../../components/popover-content';\nimport { Move } from './functions/move';\nimport { Rotate } from './functions/rotate';\nimport { Scale } from './functions/scale';\nimport { Skew } from './functions/skew';\nimport {\n\tinitialRotateValue,\n\tinitialScaleValue,\n\tinitialSkewValue,\n\tinitialTransformValue,\n\tTransformFunctionKeys,\n} from './initial-values';\nimport { useTransformTabsHistory } from './use-transform-tabs-history';\n\nexport const TransformContent = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTransformTabsHistory( {\n\t\tmove: initialTransformValue.value,\n\t\tscale: initialScaleValue.value,\n\t\trotate: initialRotateValue.value,\n\t\tskew: initialSkewValue.value,\n\t} );\n\n\treturn (\n\t\t<PopoverContent>\n\t\t\t<Box sx={ { width: '100%' } }>\n\t\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t\t<Tabs\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'& .MuiTab-root': {\n\t\t\t\t\t\t\t\tminWidth: '62px',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\taria-label={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tab label={ __( 'Move', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.move ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Scale', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.scale ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Rotate', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.rotate ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Skew', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.skew ) } />\n\t\t\t\t\t</Tabs>\n\t\t\t\t</Box>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.move ) }>\n\t\t\t\t\t<Move />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.scale ) }>\n\t\t\t\t\t<Scale />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.rotate ) }>\n\t\t\t\t\t<Rotate />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.skew ) }>\n\t\t\t\t\t<Skew />\n\t\t\t\t</TabPanel>\n\t\t\t</Box>\n\t\t</PopoverContent>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { moveTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\ntype Control = { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode; units: LengthUnit[] };\n\nconst moveAxisControls: Control[] = [\n\t{\n\t\tlabel: __( 'Move X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vw' ],\n\t},\n\t{\n\t\tlabel: __( 'Move Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vh' ],\n\t},\n\t{\n\t\tlabel: __( 'Move Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vw', 'vh' ],\n\t},\n];\n\nexport const Move = () => {\n\tconst context = useBoundProp( moveTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.move }>\n\t\t\t\t\t{ moveAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ control.units }\n\t\t\t\t\t\t\tvariant=\"length\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type AngleUnit, type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\ntype TransformAxisRowProps = {\n\tlabel: string;\n\tbind: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tunits?: AngleUnit[] | LengthUnit[];\n\tvariant?: 'length' | 'angle';\n};\n\nexport const AxisRow = ( { label, bind, startIcon, anchorRef, units, variant = 'angle' }: TransformAxisRowProps ) => {\n\tconst safeId = label.replace( /\\s+/g, '-' ).toLowerCase();\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel htmlFor={ safeId }>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tvariant={ variant }\n\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\tid={ safeId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { rotateTransformPropTypeUtil } from '@elementor/editor-props';\nimport { Arrow360Icon, RotateClockwiseIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\nconst rotateAxisControls: { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Rotate X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <Arrow360Icon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <Arrow360Icon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <RotateClockwiseIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nconst rotateUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Rotate = () => {\n\tconst context = useBoundProp( rotateTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.rotate }>\n\t\t\t\t\t{ rotateAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ rotateUnits }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { scaleTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { ScaleAxisRow } from './scale-axis-row';\n\nconst scaleAxisControls: { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Scale X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Scale = () => {\n\tconst context = useBoundProp( scaleTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.scale }>\n\t\t\t\t\t{ scaleAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<ScaleAxisRow key={ control.bind } { ...control } anchorRef={ rowRefs[ index ] } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { NumberControl } from '../../number-control';\n\ntype ScaleAxisRowProps = {\n\tlabel: string;\n\tbind: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\nexport const ScaleAxisRow = ( { label, bind, startIcon, anchorRef }: ScaleAxisRowProps ) => {\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t\t<NumberControl step={ 0.1 } placeholder=\"1\" startIcon={ startIcon } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { skewTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowLeftIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\nconst skewAxisControls: { label: string; bind: 'x' | 'y'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Skew X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Skew Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowLeftIcon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n];\n\nconst skewUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Skew = () => {\n\tconst context = useBoundProp( skewTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.skew }>\n\t\t\t\t\t{ skewAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ skewUnits }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tmoveTransformPropTypeUtil,\n\ttype MoveTransformPropValue,\n\trotateTransformPropTypeUtil,\n\ttype RotateTransformPropValue,\n\tscaleTransformPropTypeUtil,\n\ttype ScaleTransformPropValue,\n\tskewTransformPropTypeUtil,\n\ttype SkewTransformPropValue,\n\ttype TransformFunctionsItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { useRepeaterContext } from '../../components/control-repeater/context/repeater-context';\nimport { type TransformFunction, TransformFunctionKeys } from './initial-values';\n\ntype InitialTransformValues = {\n\tmove: TransformFunctionsItemPropValue[ 'value' ];\n\tscale: TransformFunctionsItemPropValue[ 'value' ];\n\trotate: TransformFunctionsItemPropValue[ 'value' ];\n\tskew: TransformFunctionsItemPropValue[ 'value' ];\n};\n\nexport const useTransformTabsHistory = ( {\n\tmove: initialMove,\n\tscale: initialScale,\n\trotate: initialRotate,\n\tskew: initialSkew,\n}: InitialTransformValues ) => {\n\tconst { value: moveValue, setValue: setMoveValue } = useBoundProp( moveTransformPropTypeUtil );\n\tconst { value: scaleValue, setValue: setScaleValue } = useBoundProp( scaleTransformPropTypeUtil );\n\tconst { value: rotateValue, setValue: setRotateValue } = useBoundProp( rotateTransformPropTypeUtil );\n\tconst { value: skewValue, setValue: setSkewValue } = useBoundProp( skewTransformPropTypeUtil );\n\n\tconst { openItemIndex, items } = useRepeaterContext();\n\n\tconst getCurrentTransformType = (): TransformFunction => {\n\t\tswitch ( true ) {\n\t\t\tcase !! scaleValue:\n\t\t\t\treturn TransformFunctionKeys.scale;\n\t\t\tcase !! rotateValue:\n\t\t\t\treturn TransformFunctionKeys.rotate;\n\t\t\tcase !! skewValue:\n\t\t\t\treturn TransformFunctionKeys.skew;\n\t\t\tdefault:\n\t\t\t\treturn TransformFunctionKeys.move;\n\t\t}\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< TransformFunction >( getCurrentTransformType() );\n\n\tconst valuesHistory = useRef< InitialTransformValues >( {\n\t\tmove: initialMove,\n\t\tscale: initialScale,\n\t\trotate: initialRotate,\n\t\tskew: initialSkew,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialTransformValues, value: TransformFunctionsItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: TransformFunction ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase TransformFunctionKeys.move:\n\t\t\t\tsetMoveValue( valuesHistory.current.move as MoveTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.scale:\n\t\t\t\tsetScaleValue( valuesHistory.current.scale as ScaleTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.rotate:\n\t\t\t\tsetRotateValue( valuesHistory.current.rotate as RotateTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.skew:\n\t\t\t\tsetSkewValue( valuesHistory.current.skew as SkewTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\tconst isTabDisabled = ( tabKey: TransformFunction ) => {\n\t\treturn !! items.find( ( { item: { $$type: key } }, pos ) => tabKey === key && pos !== openItemIndex );\n\t};\n\n\treturn {\n\t\tgetTabProps: ( value: TransformFunction ) => ( {\n\t\t\t...getTabProps( value ),\n\t\t\tdisabled: isTabDisabled( value ),\n\t\t} ),\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { type TransformFunctionsItemPropValue } from '@elementor/editor-props';\nimport { ArrowAutofitHeightIcon, ArrowsMaximizeIcon, RotateClockwise2Icon, SkewXIcon } from '@elementor/icons';\n\nimport { TransformFunctionKeys } from './initial-values';\n\nexport const TransformIcon = ( { value }: { value: TransformFunctionsItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <ArrowsMaximizeIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <ArrowAutofitHeightIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <RotateClockwise2Icon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <SkewXIcon fontSize=\"tiny\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import * as React from 'react';\nimport type { TransformFunctionsItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CUSTOM_SIZE_LABEL } from '../size-control';\nimport { defaultValues, TransformFunctionKeys } from './initial-values';\n\nconst formatLabel = ( value: TransformFunctionsItemPropValue[ 'value' ], functionType: keyof typeof defaultValues ) => {\n\treturn Object.values( value )\n\t\t.map( ( axis ) => {\n\t\t\tif ( functionType === 'scale' ) {\n\t\t\t\treturn axis?.value || defaultValues[ functionType ];\n\t\t\t}\n\n\t\t\tconst defaults = defaultValues[ functionType ];\n\t\t\tconst size = axis?.value?.size ?? defaults.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaults.unit;\n\n\t\t\treturn unit === 'custom' ? size || CUSTOM_SIZE_LABEL : `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\n};\n\nexport const TransformLabel = ( props: { value: TransformFunctionsItemPropValue } ) => {\n\tconst { $$type, value } = props.value;\n\tswitch ( $$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <Label label={ __( 'Move', 'elementor' ) } value={ formatLabel( value, 'move' ) } />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <Label label={ __( 'Scale', 'elementor' ) } value={ formatLabel( value, 'scale' ) } />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <Label label={ __( 'Rotate', 'elementor' ) } value={ formatLabel( value, 'rotate' ) } />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <Label label={ __( 'Skew', 'elementor' ) } value={ formatLabel( value, 'skew' ) } />;\n\t\tdefault:\n\t\t\treturn '';\n\t}\n};\n\nconst Label = ( { label, value }: { label: string; value: string } ) => {\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }: { value }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { AdjustmentsIcon } from '@elementor/icons';\nimport { bindPopover, Box, Divider, Popover, type PopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider } from '../../bound-prop-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { ChildrenPerspectiveControl } from './transform-base-controls/children-perspective-control';\nimport { TransformOriginControl } from './transform-base-controls/transform-origin-control';\n\nconst SIZE = 'tiny';\n\nexport const TransformSettingsControl = ( {\n\tpopupState,\n\tanchorRef,\n}: {\n\tpopupState: PopupState;\n\tanchorRef: React.RefObject< HTMLDivElement | null >;\n} ) => {\n\tconst popupProps = bindPopover( {\n\t\t...popupState,\n\t\tanchorEl: anchorRef.current ?? undefined,\n\t} );\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\twidth: ( anchorRef.current?.offsetWidth || 0 ) - 6 + 'px',\n\t\t\t\t\t\tmt: 0.5,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...popupProps }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Transform settings', 'elementor' ) }\n\t\t\t\tonClose={ popupState.close }\n\t\t\t\ticon={ <AdjustmentsIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<Divider />\n\t\t\t<PopoverContent sx={ { px: 2, py: 1.5 } }>\n\t\t\t\t<PropKeyProvider bind={ 'transform-origin' }>\n\t\t\t\t\t<TransformOriginControl />\n\t\t\t\t</PropKeyProvider>\n\t\t\t\t<Box sx={ { my: 0.5 } }>\n\t\t\t\t\t<Divider />\n\t\t\t\t</Box>\n\t\t\t\t<ChildrenPerspectiveControl />\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { perspectiveOriginPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\ntype FieldProps = {\n\tlabel: string;\n\tbind: string;\n\tunits: LengthUnit[];\n};\n\nconst ORIGIN_UNITS: LengthUnit[] = [ 'px', '%', 'em', 'rem' ];\n\nconst PERSPECTIVE_CONTROL_FIELD: FieldProps = {\n\tlabel: __( 'Perspective', 'elementor' ),\n\tbind: 'perspective',\n\tunits: [ 'px', 'em', 'rem', 'vw', 'vh' ],\n};\n\nconst CHILDREN_PERSPECTIVE_FIELDS: FieldProps[] = [\n\t{\n\t\tlabel: __( 'Origin X', 'elementor' ),\n\t\tbind: 'x',\n\t\tunits: ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tunits: ORIGIN_UNITS,\n\t},\n] as const;\n\nexport const ChildrenPerspectiveControl = () => {\n\treturn (\n\t\t<Stack direction=\"column\" spacing={ 1.5 }>\n\t\t\t<ControlFormLabel>{ __( 'Children perspective', 'elementor' ) }</ControlFormLabel>\n\t\t\t<PerspectiveControl />\n\t\t\t<PerspectiveOriginControl />\n\t\t</Stack>\n\t);\n};\n\nconst PerspectiveControl = () => (\n\t<PropKeyProvider bind={ 'perspective' }>\n\t\t<ControlFields control={ PERSPECTIVE_CONTROL_FIELD } key={ PERSPECTIVE_CONTROL_FIELD.bind } />\n\t</PropKeyProvider>\n);\n\nconst PerspectiveOriginControl = () => (\n\t<PropKeyProvider bind={ 'perspective-origin' }>\n\t\t<PerspectiveOriginControlProvider />\n\t</PropKeyProvider>\n);\n\nconst PerspectiveOriginControlProvider = () => {\n\tconst context = useBoundProp( perspectiveOriginPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ CHILDREN_PERSPECTIVE_FIELDS.map( ( control ) => (\n\t\t\t\t<PropKeyProvider bind={ control.bind } key={ control.bind }>\n\t\t\t\t\t<ControlFields control={ control } />\n\t\t\t\t</PropKeyProvider>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n\nconst ControlFields = ( { control }: { control: FieldProps } ) => {\n\tconst rowRef = React.useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<SizeControl variant=\"length\" units={ control.units } anchorRef={ rowRef } disableCustom />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { transformOriginPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\nconst TRANSFORM_ORIGIN_UNITS: LengthUnit[] = [ 'px', '%', 'em', 'rem' ];\nconst TRANSFORM_ORIGIN_UNITS_Z_AXIS = TRANSFORM_ORIGIN_UNITS.filter( ( unit ) => unit !== '%' );\n\nconst TRANSFORM_ORIGIN_FIELDS = [\n\t{\n\t\tlabel: __( 'Origin X', 'elementor' ),\n\t\tbind: 'x',\n\t\tunits: TRANSFORM_ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tunits: TRANSFORM_ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tunits: TRANSFORM_ORIGIN_UNITS_Z_AXIS,\n\t},\n];\n\nexport const TransformOriginControl = () => {\n\treturn (\n\t\t<Stack direction=\"column\" spacing={ 1.5 }>\n\t\t\t<ControlFormLabel>{ __( 'Transform', 'elementor' ) }</ControlFormLabel>\n\t\t\t{ TRANSFORM_ORIGIN_FIELDS.map( ( control ) => (\n\t\t\t\t<ControlFields control={ control } key={ control.bind } />\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n};\n\nconst ControlFields = ( { control }: { control: ( typeof TRANSFORM_ORIGIN_FIELDS )[ number ] } ) => {\n\tconst context = useBoundProp( transformOriginPropTypeUtil );\n\tconst rowRef = React.useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ control.bind }>\n\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<SizeControl variant=\"length\" units={ control.units } anchorRef={ rowRef } disableCustom />\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n\tcreateArrayPropUtils,\n\ttype KeyValuePropValue,\n\tselectionSizePropTypeUtil,\n\ttype SelectionSizePropValue,\n} from '@elementor/editor-props';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertTitle, Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { type Item, type RepeatablePropValue } from '../../components/control-repeater/types';\nimport { createControl } from '../../create-control';\nimport { RepeatableControl } from '../repeatable-control';\nimport { SelectionSizeControl } from '../selection-size-control';\nimport {\n\tinitialTransitionValue,\n\ttype TransitionItem,\n\ttransitionProperties,\n\ttype TransitionProperty,\n\ttype TransitionValue,\n} from './data';\nimport { subscribeToTransitionEvent } from './trainsition-events';\nimport { getTransitionPropertyByValue, TransitionSelector } from './transition-selector';\n\nconst DURATION_CONFIG = {\n\tvariant: 'time',\n\tunits: [ 's', 'ms' ],\n\tdefaultUnit: 'ms',\n};\n\nconst childArrayPropTypeUtil = createArrayPropUtils(\n\tselectionSizePropTypeUtil.key,\n\tselectionSizePropTypeUtil.schema,\n\t'transition'\n);\n\nsubscribeToTransitionEvent();\n\nconst areAllPropertiesUsed = ( value: SelectionSizePropValue[] = [] ) => {\n\treturn value?.length\n\t\t? transitionProperties.every( ( category ) => {\n\t\t\t\treturn category.properties.every( ( property ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tproperty.isDisabled ||\n\t\t\t\t\t\t!! value?.find( ( item ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t( item.value?.selection?.value as KeyValuePropValue )?.value?.value === property.value\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t } )\n\t\t: false;\n};\n\n// this config needs to be loaded at runtime/render since it's the transitionProperties object will be mutated by the pro plugin.\n// See: https://elementor.atlassian.net/browse/ED-20285\nconst getSelectionSizeProps = ( recentlyUsedList: string[], disabledItems?: string[] ) => {\n\treturn {\n\t\tselectionLabel: __( 'Type', 'elementor' ),\n\t\tsizeLabel: __( 'Duration', 'elementor' ),\n\t\tselectionConfig: {\n\t\t\tcomponent: TransitionSelector,\n\t\t\tprops: {\n\t\t\t\trecentlyUsedList,\n\t\t\t\tdisabledItems,\n\t\t\t},\n\t\t},\n\t\tsizeConfigMap: {\n\t\t\t...transitionProperties.reduce(\n\t\t\t\t( acc, category ) => {\n\t\t\t\t\tcategory.properties.forEach( ( property ) => {\n\t\t\t\t\t\tacc[ property.value ] = DURATION_CONFIG;\n\t\t\t\t\t} );\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{} as Record< string, typeof DURATION_CONFIG >\n\t\t\t),\n\t\t},\n\t};\n};\n\nconst isItemDisabled = ( item: TransitionItem[ 'value' ] ) => {\n\tconst property = getTransitionPropertyByValue( item.value.selection.value?.value );\n\n\treturn ! property ? false : !! property.isDisabled;\n};\n\nconst getChildControlConfig = ( recentlyUsedList: string[], disabledItems?: string[] ) => {\n\treturn {\n\t\tpropTypeUtil: selectionSizePropTypeUtil,\n\t\tcomponent: SelectionSizeControl as unknown as React.ComponentType< Record< string, unknown > >,\n\t\tprops: getSelectionSizeProps( recentlyUsedList, disabledItems ),\n\t\tisItemDisabled: isItemDisabled as ( item: Item< RepeatablePropValue > ) => boolean,\n\t};\n};\n\nconst isPropertyUsed = ( value: SelectionSizePropValue[], property: TransitionProperty ) => {\n\treturn ( value ?? [] ).some( ( item ) => {\n\t\treturn ( item?.value?.selection?.value as KeyValuePropValue )?.value?.value === property.value;\n\t} );\n};\n\nconst getDisabledItemLabels = ( values: SelectionSizePropValue[] = [] ) => {\n\tconst disabledLabels: string[] = ( values || [] ).map(\n\t\t( item ) => ( item.value?.selection as KeyValuePropValue )?.value?.key?.value\n\t);\n\n\ttransitionProperties.forEach( ( category ) => {\n\t\tconst disabledProperties = category.properties\n\t\t\t.filter( ( property ) => property.isDisabled && ! disabledLabels.includes( property.label ) )\n\t\t\t.map( ( property ) => property.label );\n\n\t\tdisabledLabels.push( ...disabledProperties );\n\t} );\n\n\treturn disabledLabels;\n};\n\nconst getInitialValue = ( values: SelectionSizePropValue[] = [] ): TransitionValue => {\n\tif ( ! values?.length ) {\n\t\treturn initialTransitionValue;\n\t}\n\n\tfor ( const category of transitionProperties ) {\n\t\tfor ( const property of category.properties ) {\n\t\t\tif ( isPropertyUsed( values, property ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...initialTransitionValue,\n\t\t\t\tselection: {\n\t\t\t\t\t$$type: 'key-value',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\treturn initialTransitionValue;\n};\n\nconst disableAddItemTooltipContent = (\n\t<Alert\n\t\tsx={ {\n\t\t\twidth: 280,\n\t\t\tgap: 0.5,\n\t\t} }\n\t\tcolor=\"secondary\"\n\t\ticon={ <InfoCircleFilledIcon /> }\n\t>\n\t\t<AlertTitle>{ __( 'Transitions', 'elementor' ) }</AlertTitle>\n\t\t<Box component=\"span\">\n\t\t\t<Typography variant=\"body2\">\n\t\t\t\t{ __( \"Switch to 'Normal' state to add a transition.\", 'elementor' ) }\n\t\t\t</Typography>\n\t\t</Box>\n\t</Alert>\n);\n\nexport const TransitionRepeaterControl = createControl(\n\t( {\n\t\trecentlyUsedListGetter,\n\t\tcurrentStyleState,\n\t}: {\n\t\trecentlyUsedListGetter: () => Promise< string[] >;\n\t\tcurrentStyleState: StyleDefinitionState;\n\t} ) => {\n\t\tconst currentStyleIsNormal = currentStyleState === null;\n\t\tconst [ recentlyUsedList, setRecentlyUsedList ] = useState< string[] >( [] );\n\n\t\tconst { value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\t\tconst disabledItems = useMemo( () => getDisabledItemLabels( value ), [ value ] );\n\n\t\tconst allowedTransitionSet = useMemo( () => {\n\t\t\tconst set = new Set< string >();\n\t\t\ttransitionProperties.forEach( ( category ) => {\n\t\t\t\tcategory.properties.forEach( ( prop ) => set.add( prop.value ) );\n\t\t\t} );\n\t\t\treturn set;\n\t\t}, [] );\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! value || value.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sanitized = value.filter( ( item ) => {\n\t\t\t\tconst selectionValue = ( item?.value?.selection?.value as KeyValuePropValue )?.value?.value ?? '';\n\t\t\t\treturn allowedTransitionSet.has( selectionValue );\n\t\t\t} );\n\n\t\t\tif ( sanitized.length !== value.length ) {\n\t\t\t\tsetValue( sanitized );\n\t\t\t}\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ allowedTransitionSet ] );\n\n\t\tuseEffect( () => {\n\t\t\trecentlyUsedListGetter().then( setRecentlyUsedList );\n\t\t}, [ recentlyUsedListGetter ] );\n\n\t\tconst allPropertiesUsed = useMemo( () => areAllPropertiesUsed( value ), [ value ] );\n\t\tconst isAddItemDisabled = ! currentStyleIsNormal || allPropertiesUsed;\n\n\t\treturn (\n\t\t\t<RepeatableControl\n\t\t\t\tlabel={ __( 'Transitions', 'elementor' ) }\n\t\t\t\trepeaterLabel={ __( 'Transitions', 'elementor' ) }\n\t\t\t\tpatternLabel=\"${value.selection.value.key.value}: ${value.size.value.size}${value.size.value.unit}\"\n\t\t\t\tplaceholder={ __( 'Empty Transition', 'elementor' ) }\n\t\t\t\tshowDuplicate={ false }\n\t\t\t\tshowToggle={ true }\n\t\t\t\tinitialValues={ getInitialValue( value ) }\n\t\t\t\tchildControlConfig={ getChildControlConfig( recentlyUsedList, disabledItems ) }\n\t\t\t\tpropKey=\"transition\"\n\t\t\t\taddItemTooltipProps={ {\n\t\t\t\t\tdisabled: isAddItemDisabled,\n\t\t\t\t\tenableTooltip: ! currentStyleIsNormal,\n\t\t\t\t\ttooltipContent: disableAddItemTooltipContent,\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport { selectionSizePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { createControl } from '../create-control';\nimport { SizeControl, type SizeControlProps } from './size-control';\n\ntype SelectionComponentConfig = {\n\tcomponent: React.ComponentType< Record< string, unknown > >;\n\tprops: Record< string, unknown >;\n};\n\ntype SizeControlConfig = Pick< SizeControlProps, 'variant' | 'units' | 'defaultUnit' >;\n\ntype SelectionSizeControlProps = {\n\tselectionLabel: string;\n\tsizeLabel: string;\n\tselectionConfig: SelectionComponentConfig;\n\tsizeConfigMap: Record< string, SizeControlConfig >;\n};\n\nexport const SelectionSizeControl = createControl(\n\t( { selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }: SelectionSizeControlProps ) => {\n\t\tconst { value, setValue, propType } = useBoundProp( selectionSizePropTypeUtil );\n\t\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\t\tconst sizeFieldId = sizeLabel.replace( /\\s+/g, '-' ).toLowerCase();\n\n\t\tconst currentSizeConfig = useMemo( () => {\n\t\t\tswitch ( value.selection.$$type ) {\n\t\t\t\tcase 'key-value':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value.value.value || '' ];\n\t\t\t\tcase 'string':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value || '' ];\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}, [ value, sizeConfigMap ] );\n\t\tconst SelectionComponent = selectionConfig.component;\n\n\t\treturn (\n\t\t\t<PropProvider value={ value } setValue={ setValue } propType={ propType }>\n\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t<ControlFormLabel>{ selectionLabel }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<PropKeyProvider bind=\"selection\">\n\t\t\t\t\t\t\t<SelectionComponent { ...selectionConfig.props } />\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t{ currentSizeConfig && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t\t\t<ControlFormLabel htmlFor={ sizeFieldId }>{ sizeLabel }</ControlFormLabel>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind=\"size\">\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tvariant={ currentSizeConfig.variant }\n\t\t\t\t\t\t\t\t\t\tunits={ currentSizeConfig.units }\n\t\t\t\t\t\t\t\t\t\tdefaultUnit={ currentSizeConfig.defaultUnit }\n\t\t\t\t\t\t\t\t\t\tid={ sizeFieldId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n","import { type KeyValuePropValue, type SizePropValue } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type TransitionProperty = {\n\tlabel: string;\n\tvalue: string;\n\tunavailable?: boolean;\n\tisDisabled?: boolean;\n};\n\nexport type TransitionCategory = {\n\tlabel: string;\n\ttype: 'category';\n\tproperties: TransitionProperty[];\n};\n\nexport type TransitionValue = {\n\tselection: KeyValuePropValue;\n\tsize: SizePropValue;\n};\n\nexport type TransitionItem = {\n\t$$type: 'selection-size';\n\tvalue: {\n\t\t$$type: 'key-value';\n\t\tvalue: TransitionValue;\n\t};\n};\n\nexport const initialTransitionValue: TransitionValue = {\n\tselection: {\n\t\t$$type: 'key-value',\n\t\tvalue: {\n\t\t\tkey: { value: __( 'All properties', 'elementor' ), $$type: 'string' },\n\t\t\tvalue: { value: 'all', $$type: 'string' },\n\t\t},\n\t},\n\tsize: { $$type: 'size', value: { size: 200, unit: 'ms' } },\n};\n\nexport const transitionProperties: TransitionCategory[] = [\n\t{\n\t\tlabel: __( 'Default', 'elementor' ),\n\t\ttype: 'category',\n\t\tproperties: [ { label: __( 'All properties', 'elementor' ), 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 { getSelectedElements } from '@elementor/editor-elements';\nimport { trackEvent } from '@elementor/mixpanel';\n\nimport { eventBus } from '../../services/event-bus';\nimport { type initialTransitionValue } from './data';\n\ntype TransitionItemValue = typeof initialTransitionValue;\n\nconst transitionRepeaterMixpanelEvent = {\n\teventName: 'click_added_transition',\n\tlocation: 'V4 Style Tab',\n\tsecondaryLocation: 'Transition control',\n\ttrigger: 'click',\n};\n\nexport function subscribeToTransitionEvent() {\n\teventBus.subscribe( 'transition-item-added', ( data ) => {\n\t\tconst payload = data as { itemValue?: TransitionItemValue };\n\t\tconst value = payload?.itemValue?.selection?.value?.value?.value;\n\t\tconst selectedElements = getSelectedElements();\n\t\tconst widgetType = selectedElements[ 0 ]?.type ?? null;\n\t\ttrackEvent( {\n\t\t\ttransition_type: value ?? 'unknown',\n\t\t\t...transitionRepeaterMixpanelEvent,\n\t\t\twidget_type: widgetType,\n\t\t} );\n\t} );\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { keyValuePropTypeUtil, type KeyValuePropValue, type StringPropValue } 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 ControlActions from '../../control-actions/control-actions';\nimport { transitionProperties, transitionsItemsList } from './data';\n\nconst toTransitionSelectorValue = ( label: string ) => {\n\tfor ( const category of transitionProperties ) {\n\t\tconst property = category.properties.find( ( prop ) => prop.label === label );\n\t\tif ( property ) {\n\t\t\treturn {\n\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n};\n\nexport function getTransitionPropertyByValue( item?: StringPropValue | null ) {\n\tif ( ! item?.value ) {\n\t\treturn null;\n\t}\n\n\tfor ( const category of transitionProperties ) {\n\t\tfor ( const property of category.properties ) {\n\t\t\tif ( property.value === item.value ) {\n\t\t\t\treturn property;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nconst includeCurrentValueInOptions = ( value: KeyValuePropValue[ 'value' ], disabledItems: string[] ) => {\n\treturn disabledItems.filter( ( item ) => {\n\t\treturn item !== value.key.value;\n\t} );\n};\n\nexport const TransitionSelector = ( {\n\trecentlyUsedList = [],\n\tdisabledItems = [],\n}: {\n\trecentlyUsedList: string[];\n\tdisabledItems?: string[];\n} ) => {\n\tconst { value, setValue } = useBoundProp( keyValuePropTypeUtil );\n\tconst {\n\t\tkey: { value: transitionLabel },\n\t} = value;\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst getItemList = () => {\n\t\tconst recentItems = recentlyUsedList\n\t\t\t.map( ( item ) => getTransitionPropertyByValue( { value: item, $$type: 'string' } )?.label )\n\t\t\t.filter( ( item ) => !! item ) as string[];\n\t\tconst filteredItems = transitionsItemsList.map( ( category ) => {\n\t\t\treturn {\n\t\t\t\t...category,\n\t\t\t\titems: category.items.filter( ( item ) => ! recentItems.includes( item ) ),\n\t\t\t};\n\t\t} );\n\t\tif ( recentItems.length === 0 ) {\n\t\t\treturn filteredItems;\n\t\t}\n\t\tconst [ first, ...rest ] = filteredItems;\n\t\treturn [\n\t\t\tfirst,\n\t\t\t{\n\t\t\t\tlabel: __( 'Recently Used', 'elementor' ),\n\t\t\t\titems: recentItems,\n\t\t\t},\n\t\t\t...rest,\n\t\t];\n\t};\n\n\tconst handleTransitionPropertyChange = ( newLabel: string ) => {\n\t\tconst newValue = toTransitionSelectorValue( newLabel );\n\n\t\tif ( ! newValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetValue( newValue );\n\t\tpopoverState.close();\n\t};\n\n\tconst getAnchorPosition = () => {\n\t\tif ( ! defaultRef.current ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rect = defaultRef.current.getBoundingClientRect();\n\t\treturn {\n\t\t\ttop: rect.top,\n\t\t\tleft: rect.right + 36,\n\t\t};\n\t};\n\n\treturn (\n\t\t<Box ref={ defaultRef }>\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ transitionLabel }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\tanchorPosition={ getAnchorPosition() }\n\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\titemsList={ getItemList() }\n\t\t\t\t\tselectedItem={ transitionLabel }\n\t\t\t\t\tonItemChange={ handleTransitionPropertyChange }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ 268 }\n\t\t\t\t\ttitle={ __( 'Transition Property', 'elementor' ) }\n\t\t\t\t\ticon={ VariationsIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\tdisabledItems={ includeCurrentValueInOptions( value, disabledItems ) }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport type { Dayjs } from 'dayjs';\nimport * as dayjs from 'dayjs';\nimport { isTransformable, type Props, stringPropTypeUtil } from '@elementor/editor-props';\nimport { DateTimePropTypeUtil } from '@elementor/editor-props';\nimport { Box, DatePicker, LocalizationProvider, TimePicker } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst DATE_FORMAT = 'YYYY-MM-DD';\nconst TIME_FORMAT = 'HH:mm';\n\nexport const DateTimeControl = createControl( ( { inputDisabled }: { inputDisabled?: boolean } ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( DateTimePropTypeUtil );\n\n\tconst handleChange = ( newValue: Props, meta: { bind: 'date' | 'time' } ) => {\n\t\tconst field = meta.bind;\n\t\tconst fieldValue = newValue[ field as 'date' | 'time' ];\n\n\t\tif ( isTransformable( fieldValue ) ) {\n\t\t\treturn setValue( { ...value, [ field ]: fieldValue } );\n\t\t}\n\n\t\tlet formattedValue = '';\n\n\t\tif ( fieldValue ) {\n\t\t\tconst dayjsValue = fieldValue as Dayjs;\n\t\t\tformattedValue = field === 'date' ? dayjsValue.format( DATE_FORMAT ) : dayjsValue.format( TIME_FORMAT );\n\t\t}\n\n\t\tsetValue( {\n\t\t\t...value,\n\t\t\t[ field ]: {\n\t\t\t\t$$type: 'string',\n\t\t\t\tvalue: formattedValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst parseDateValue = ( dateStr?: string | null ): Dayjs | null => {\n\t\tif ( ! dateStr ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst d = ( dayjs as unknown as { default: ( s?: string | number | Date ) => Dayjs } ).default( dateStr );\n\n\t\treturn d && typeof d.isValid === 'function' && d.isValid() ? d : null;\n\t};\n\n\tconst parseTimeValue = ( timeStr?: string | null ): Dayjs | null => {\n\t\tif ( ! timeStr ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst [ hours, minutes ] = timeStr.split( ':' );\n\t\tconst h = Number.parseInt( hours ?? '', 10 );\n\t\tconst m = Number.parseInt( minutes ?? '', 10 );\n\n\t\tif ( Number.isNaN( h ) || Number.isNaN( m ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst base = ( dayjs as unknown as { default: () => Dayjs } ).default();\n\t\treturn base.hour( h ).minute( m ).second( 0 ).millisecond( 0 );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<ControlActions>\n\t\t\t\t<LocalizationProvider>\n\t\t\t\t\t<Box display=\"flex\" gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t\t<PropKeyProvider bind=\"date\">\n\t\t\t\t\t\t\t<DatePicker\n\t\t\t\t\t\t\t\tvalue={ parseDateValue( stringPropTypeUtil.extract( value?.date ) ) }\n\t\t\t\t\t\t\t\tonChange={ ( v: Dayjs | null ) =>\n\t\t\t\t\t\t\t\t\thandleChange( { date: v } as Props, { bind: 'date' } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ inputDisabled }\n\t\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\t\ttextField: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerButton: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerIcon: { fontSize: 'tiny' },\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\n\t\t\t\t\t\t<PropKeyProvider bind=\"time\">\n\t\t\t\t\t\t\t<TimePicker\n\t\t\t\t\t\t\t\tvalue={ parseTimeValue( stringPropTypeUtil.extract( value?.time ) ) }\n\t\t\t\t\t\t\t\tonChange={ ( v: Dayjs | null ) =>\n\t\t\t\t\t\t\t\t\thandleChange( { time: v } as Props, { bind: 'time' } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ inputDisabled }\n\t\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\t\ttextField: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerButton: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerIcon: { fontSize: 'tiny' },\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Box>\n\t\t\t\t</LocalizationProvider>\n\t\t\t</ControlActions>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport { type ComponentProps } from 'react';\nimport { htmlPropTypeUtil } from '@elementor/editor-props';\nimport { Box, type SxProps, type Theme } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { InlineEditor } from '../components/inline-editor';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const InlineEditingControl = createControl(\n\t( {\n\t\tsx,\n\t\tattributes,\n\t\tprops,\n\t}: {\n\t\tsx?: SxProps< Theme >;\n\t\tattributes?: Record< string, string >;\n\t\tprops?: ComponentProps< 'div' >;\n\t} ) => {\n\t\tconst { value, setValue } = useBoundProp( htmlPropTypeUtil );\n\t\tconst handleChange = ( newValue: unknown ) => setValue( newValue as string );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Box\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tp: 0.8,\n\t\t\t\t\t\tborder: '1px solid',\n\t\t\t\t\t\tborderColor: 'grey.200',\n\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\ttransition: 'border-color .2s ease, box-shadow .2s ease',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tborderColor: 'black',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'&:focus-within': {\n\t\t\t\t\t\t\tborderColor: 'black',\n\t\t\t\t\t\t\tboxShadow: '0 0 0 1px black',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .ProseMirror:focus': {\n\t\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .ProseMirror': {\n\t\t\t\t\t\t\tminHeight: '70px',\n\t\t\t\t\t\t\tfontSize: '12px',\n\t\t\t\t\t\t\t'& a': {\n\t\t\t\t\t\t\t\tcolor: 'inherit',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'.strip-styles *': {\n\t\t\t\t\t\t\tall: 'unset',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...sx,\n\t\t\t\t\t} }\n\t\t\t\t\t{ ...attributes }\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t<InlineEditor value={ value || '' } setValue={ handleChange } />\n\t\t\t\t</Box>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport {\n\ttype DependencyList,\n\tforwardRef,\n\ttype PropsWithChildren,\n\ttype RefObject,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { bindPopover, Box, ClickAwayListener, Popover, type SxProps, type Theme, usePopupState } from '@elementor/ui';\nimport Bold from '@tiptap/extension-bold';\nimport Document from '@tiptap/extension-document';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Heading from '@tiptap/extension-heading';\nimport Italic from '@tiptap/extension-italic';\nimport Link from '@tiptap/extension-link';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Strike from '@tiptap/extension-strike';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport Text from '@tiptap/extension-text';\nimport Underline from '@tiptap/extension-underline';\nimport { type EditorView } from '@tiptap/pm/view';\nimport { type Editor, EditorContent, useEditor } from '@tiptap/react';\n\nimport { isEmpty } from '../utils/inline-editing';\nimport { InlineEditorToolbar } from './inline-editor-toolbar';\n\ntype InlineEditorProps = {\n\tvalue: string | null;\n\tsetValue: ( value: string | null ) => void;\n\tattributes?: Record< string, string >;\n\telementClasses?: string;\n\tsx?: SxProps< Theme >;\n\tonBlur?: ( event: Event ) => void;\n\tshowToolbar?: boolean;\n\tautofocus?: boolean;\n\tgetInitialPopoverPosition?: () => { left: number; top: number };\n\texpectedTag?: string | null;\n};\n\nconst INITIAL_STYLE = 'margin:0;padding:0;';\n\nconst useOnUpdate = ( callback: () => void, dependencies: DependencyList ): void => {\n\tconst hasMounted = useRef( false );\n\n\tuseEffect( () => {\n\t\tif ( hasMounted.current ) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\thasMounted.current = true;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, dependencies );\n};\n\nconst calcSelectionCenter = (\n\tview: EditorView,\n\tcontainer: { left: number; top: number } | undefined\n): { left: number; top: number } | null => {\n\tif ( ! container ) {\n\t\treturn null;\n\t}\n\n\tconst { from, to } = view.state.selection;\n\tconst start = view.coordsAtPos( from );\n\tconst end = view.coordsAtPos( to );\n\n\tconst left = ( start.left + end.left ) / 2 - container.left;\n\tconst top = Math.min( start.top, end.top ) - container.top;\n\n\treturn { left, top };\n};\n\ntype WrapperProps = PropsWithChildren< {\n\tcontainerRef: RefObject< HTMLDivElement >;\n\teditor: ReturnType< typeof useEditor >;\n\tsx: SxProps< Theme >;\n\tonBlur?: ( event: Event ) => void;\n} >;\n\nconst Wrapper = ( { children, containerRef, editor, sx, onBlur }: WrapperProps ) => {\n\tconst wrappedChildren = (\n\t\t<Box ref={ containerRef } { ...sx }>\n\t\t\t{ children }\n\t\t</Box>\n\t);\n\n\treturn onBlur ? (\n\t\t<ClickAwayListener\n\t\t\tonClickAway={ ( event: PointerEvent ) => {\n\t\t\t\tif (\n\t\t\t\t\tcontainerRef.current?.contains( event.target as Node ) ||\n\t\t\t\t\teditor.view.dom.contains( event.target as Node )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonBlur?.( event );\n\t\t\t} }\n\t\t>\n\t\t\t{ wrappedChildren }\n\t\t</ClickAwayListener>\n\t) : (\n\t\t<>{ wrappedChildren }</>\n\t);\n};\n\nexport const InlineEditor = forwardRef(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tsetValue,\n\t\t\tattributes = {},\n\t\t\telementClasses = '',\n\t\t\tshowToolbar = false,\n\t\t\tautofocus = false,\n\t\t\tsx = {},\n\t\t\tonBlur = undefined,\n\t\t\tgetInitialPopoverPosition = undefined,\n\t\t\texpectedTag = null,\n\t\t}: InlineEditorProps,\n\t\tref\n\t) => {\n\t\tconst containerRef = useRef< HTMLDivElement >( null );\n\t\tconst popupState = usePopupState( { variant: 'popover', disableAutoFocus: true } );\n\t\tconst [ hasSelectedContent, setHasSelectedContent ] = useState( false );\n\t\tconst documentContentSettings = !! expectedTag ? 'block+' : 'inline*';\n\t\tconst [ selectionRect, setSelectionRect ] = useState< { left: number; top: number } | null >( null );\n\n\t\tconst onSelectionEnd = ( view: EditorView ) => {\n\t\t\tconst hasSelection = ! view.state.selection.empty;\n\t\t\tsetHasSelectedContent( hasSelection );\n\n\t\t\tif ( hasSelection ) {\n\t\t\t\tconst container = containerRef.current?.getBoundingClientRect();\n\t\t\t\tsetSelectionRect( calcSelectionCenter( view, container ) );\n\t\t\t} else {\n\t\t\t\tsetSelectionRect( null );\n\t\t\t}\n\n\t\t\tqueueMicrotask( () => view.focus() );\n\t\t};\n\n\t\tconst onKeyDown = ( _: EditorView, event: KeyboardEvent ) => {\n\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\tonBlur?.( event );\n\t\t\t}\n\t\t};\n\n\t\tconst toolbarRelatedListeners = showToolbar\n\t\t\t? {\n\t\t\t\t\tmouseup: onSelectionEnd,\n\t\t\t\t\tkeyup: onSelectionEnd,\n\t\t\t\t\tkeydown: onKeyDown,\n\t\t\t }\n\t\t\t: undefined;\n\n\t\tconst onUpdate = ( { editor: updatedEditor }: { editor: Editor } ) => {\n\t\t\tconst newValue: string | null = updatedEditor.getHTML();\n\n\t\t\tsetValue( isEmpty( newValue ) ? null : newValue );\n\t\t};\n\n\t\tconst editor = useEditor( {\n\t\t\textensions: [\n\t\t\t\tDocument.extend( {\n\t\t\t\t\tcontent: documentContentSettings,\n\t\t\t\t} ),\n\t\t\t\tParagraph.extend( {\n\t\t\t\t\trenderHTML( { HTMLAttributes } ) {\n\t\t\t\t\t\tconst tag = expectedTag ?? 'p';\n\t\t\t\t\t\treturn [ tag, { ...HTMLAttributes, style: INITIAL_STYLE, class: elementClasses }, 0 ];\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t\tHeading.extend( {\n\t\t\t\t\trenderHTML( { node, HTMLAttributes } ) {\n\t\t\t\t\t\tif ( expectedTag ) {\n\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\texpectedTag,\n\t\t\t\t\t\t\t\t{ ...HTMLAttributes, style: INITIAL_STYLE, class: elementClasses },\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst level = this.options.levels.includes( node.attrs.level )\n\t\t\t\t\t\t\t? node.attrs.level\n\t\t\t\t\t\t\t: this.options.levels[ 0 ];\n\n\t\t\t\t\t\treturn [ `h${ level }`, { ...HTMLAttributes, style: INITIAL_STYLE, class: elementClasses }, 0 ];\n\t\t\t\t\t},\n\t\t\t\t} ).configure( {\n\t\t\t\t\tlevels: [ 1, 2, 3, 4, 5, 6 ],\n\t\t\t\t} ),\n\t\t\t\tLink.configure( {\n\t\t\t\t\topenOnClick: false,\n\t\t\t\t} ),\n\t\t\t\tText,\n\t\t\t\tBold,\n\t\t\t\tItalic,\n\t\t\t\tStrike,\n\t\t\t\tSuperscript,\n\t\t\t\tSubscript,\n\t\t\t\tUnderline,\n\t\t\t\tHardBreak.extend( {\n\t\t\t\t\taddKeyboardShortcuts() {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tEnter: () => this.editor.commands.setHardBreak(),\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t],\n\t\t\tcontent: value,\n\t\t\tonUpdate,\n\t\t\tautofocus,\n\t\t\teditorProps: {\n\t\t\t\tattributes: {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tclass: attributes.class ?? '',\n\t\t\t\t\trole: 'textbox',\n\t\t\t\t},\n\t\t\t\thandleDOMEvents: toolbarRelatedListeners,\n\t\t\t},\n\t\t} );\n\n\t\tuseOnUpdate( () => {\n\t\t\tif ( ! editor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentContent = editor.getHTML();\n\n\t\t\tif ( currentContent !== value ) {\n\t\t\t\teditor.commands.setContent( value, { emitUpdate: false } );\n\t\t\t}\n\t\t}, [ editor, value ] );\n\n\t\tconst computePopupPosition = () => {\n\t\t\tif ( ! selectionRect ) {\n\t\t\t\treturn { left: 0, top: 0 };\n\t\t\t}\n\n\t\t\tconst container = containerRef.current?.getBoundingClientRect();\n\t\t\tif ( ! container ) {\n\t\t\t\treturn { left: 0, top: 0 };\n\t\t\t}\n\n\t\t\tconst initial = getInitialPopoverPosition?.() ?? { left: 0, top: 0 };\n\n\t\t\treturn {\n\t\t\t\tleft: container.left + selectionRect.left + initial.left,\n\t\t\t\ttop: container.top + selectionRect.top + initial.top,\n\t\t\t};\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Wrapper containerRef={ containerRef } editor={ editor } sx={ sx } onBlur={ onBlur }>\n\t\t\t\t\t<EditorContent ref={ ref } editor={ editor } />\n\t\t\t\t</Wrapper>\n\t\t\t\t{ showToolbar && containerRef.current && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\troot: {\n\t\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\t\t\topen={ hasSelectedContent && selectionRect !== null }\n\t\t\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\t\t\tanchorPosition={ computePopupPosition() }\n\t\t\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\t\t\t\ttransformOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InlineEditorToolbar editor={ editor } />\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n","export function isEmpty( value: string | null = '' ) {\n\tif ( ! value ) {\n\t\treturn true;\n\t}\n\n\tconst pseudoElement = document.createElement( 'div' );\n\n\tpseudoElement.innerHTML = value;\n\n\treturn ! pseudoElement.textContent?.length;\n}\n","import * as React from 'react';\nimport { useMemo, useRef, useState } from 'react';\nimport {\n\tBoldIcon,\n\tItalicIcon,\n\tLinkIcon,\n\tMinusIcon,\n\tStrikethroughIcon,\n\tSubscriptIcon,\n\tSuperscriptIcon,\n\tUnderlineIcon,\n} from '@elementor/icons';\nimport {\n\tBox,\n\tIconButton,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttoggleButtonGroupClasses,\n\tTooltip,\n\tusePopupState,\n} from '@elementor/ui';\nimport { type Editor, useEditorState } from '@tiptap/react';\nimport { __ } from '@wordpress/i18n';\n\nimport { UrlPopover } from './url-popover';\n\ntype InlineEditorToolbarProps = {\n\teditor: Editor;\n};\n\nconst toolbarButtons = {\n\tclear: {\n\t\tlabel: __( 'Clear', 'elementor' ),\n\t\ticon: <MinusIcon fontSize=\"tiny\" />,\n\t\taction: 'clear',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().clearNodes().unsetAllMarks().run();\n\t\t},\n\t},\n\tbold: {\n\t\tlabel: __( 'Bold', 'elementor' ),\n\t\ticon: <BoldIcon fontSize=\"tiny\" />,\n\t\taction: 'bold',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleBold().run();\n\t\t},\n\t},\n\titalic: {\n\t\tlabel: __( 'Italic', 'elementor' ),\n\t\ticon: <ItalicIcon fontSize=\"tiny\" />,\n\t\taction: 'italic',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleItalic().run();\n\t\t},\n\t},\n\tunderline: {\n\t\tlabel: __( 'Underline', 'elementor' ),\n\t\ticon: <UnderlineIcon fontSize=\"tiny\" />,\n\t\taction: 'underline',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleUnderline().run();\n\t\t},\n\t},\n\tstrike: {\n\t\tlabel: __( 'Strikethrough', 'elementor' ),\n\t\ticon: <StrikethroughIcon fontSize=\"tiny\" />,\n\t\taction: 'strike',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleStrike().run();\n\t\t},\n\t},\n\tsuperscript: {\n\t\tlabel: __( 'Superscript', 'elementor' ),\n\t\ticon: <SuperscriptIcon fontSize=\"tiny\" />,\n\t\taction: 'superscript',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleSuperscript().run();\n\t\t},\n\t},\n\tsubscript: {\n\t\tlabel: __( 'Subscript', 'elementor' ),\n\t\ticon: <SubscriptIcon fontSize=\"tiny\" />,\n\t\taction: 'subscript',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleSubscript().run();\n\t\t},\n\t},\n\tlink: {\n\t\tlabel: __( 'Link', 'elementor' ),\n\t\ticon: <LinkIcon fontSize=\"tiny\" />,\n\t\taction: 'link',\n\t\tmethod: null,\n\t},\n} as const;\n\ntype ToolbarButtonKeys = keyof typeof toolbarButtons;\n\ntype FormatAction = Omit< ToolbarButtonKeys, 'clear' >;\n\nconst { clear: clearButton, ...formatButtons } = toolbarButtons;\n\nconst possibleFormats: FormatAction[] = Object.keys( formatButtons ) as FormatAction[];\n\nexport const InlineEditorToolbar = ( { editor }: InlineEditorToolbarProps ) => {\n\tconst [ urlValue, setUrlValue ] = useState( '' );\n\tconst [ openInNewTab, setOpenInNewTab ] = useState( false );\n\tconst toolbarRef = useRef< HTMLDivElement >( null );\n\tconst linkPopupState = usePopupState( { variant: 'popover' } );\n\n\tconst editorState = useEditorState( {\n\t\teditor,\n\t\tselector: ( ctx ) => possibleFormats.filter( ( format ) => ctx.editor.isActive( format ) ),\n\t} );\n\n\tconst formatButtonsList = useMemo( () => Object.values( formatButtons ), [] );\n\n\tconst handleLinkClick = () => {\n\t\tconst linkAttrs = editor.getAttributes( 'link' );\n\t\tsetUrlValue( linkAttrs.href || '' );\n\t\tsetOpenInNewTab( linkAttrs.target === '_blank' );\n\t\tlinkPopupState.open( toolbarRef.current );\n\t};\n\n\tconst handleUrlChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetUrlValue( event.target.value );\n\t};\n\n\tconst handleToggleNewTab = () => {\n\t\tsetOpenInNewTab( ! openInNewTab );\n\t};\n\n\tconst handleUrlSubmit = () => {\n\t\tif ( urlValue ) {\n\t\t\teditor\n\t\t\t\t.chain()\n\t\t\t\t.focus()\n\t\t\t\t.setLink( {\n\t\t\t\t\thref: urlValue,\n\t\t\t\t\ttarget: openInNewTab ? '_blank' : '_self',\n\t\t\t\t} )\n\t\t\t\t.run();\n\t\t} else {\n\t\t\teditor.chain().focus().unsetLink().run();\n\t\t}\n\t\tlinkPopupState.close();\n\t};\n\n\tReact.useEffect( () => {\n\t\teditor?.commands?.focus();\n\t}, [ editor ] );\n\n\treturn (\n\t\t<Box\n\t\t\tref={ toolbarRef }\n\t\t\tsx={ {\n\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\tgap: 0.5,\n\t\t\t\tpadding: 0.5,\n\t\t\t\tborderRadius: '8px',\n\t\t\t\tbackgroundColor: 'background.paper',\n\t\t\t\tboxShadow: '0 2px 8px rgba(0, 0, 0, 0.2)',\n\t\t\t\talignItems: 'center',\n\t\t\t\tvisibility: linkPopupState.isOpen ? 'hidden' : 'visible',\n\t\t\t\tpointerEvents: linkPopupState.isOpen ? 'none' : 'all',\n\t\t\t} }\n\t\t>\n\t\t\t<Tooltip title={ clearButton.label } placement=\"top\" sx={ { borderRadius: '8px' } }>\n\t\t\t\t<IconButton aria-label={ clearButton.label } onClick={ () => clearButton.method( editor ) } size=\"tiny\">\n\t\t\t\t\t{ clearButton.icon }\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t\t<ToggleButtonGroup\n\t\t\t\tvalue={ editorState }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tsx={ {\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tgap: 0.5,\n\t\t\t\t\tborder: 'none',\n\t\t\t\t\t[ `& .${ toggleButtonGroupClasses.firstButton }, & .${ toggleButtonGroupClasses.middleButton }, & .${ toggleButtonGroupClasses.lastButton }` ]:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t'&.Mui-selected': {\n\t\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'& + &.Mui-selected': {\n\t\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ formatButtonsList.map( ( button ) => (\n\t\t\t\t\t<Tooltip title={ button.label } key={ button.action } placement=\"top\">\n\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\tvalue={ button.action }\n\t\t\t\t\t\t\taria-label={ button.label }\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( button.action === 'link' ) {\n\t\t\t\t\t\t\t\t\thandleLinkClick();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbutton.method?.( editor );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\teditor?.commands?.focus();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ button.icon }\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) ) }\n\t\t\t</ToggleButtonGroup>\n\t\t\t<UrlPopover\n\t\t\t\tpopupState={ linkPopupState }\n\t\t\t\tanchorRef={ toolbarRef }\n\t\t\t\trestoreValue={ handleUrlSubmit }\n\t\t\t\tvalue={ urlValue }\n\t\t\t\tonChange={ handleUrlChange }\n\t\t\t\topenInNewTab={ openInNewTab }\n\t\t\t\tonToggleNewTab={ handleToggleNewTab }\n\t\t\t/>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { ExternalLinkIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, Stack, TextField, ToggleButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\topenInNewTab: boolean;\n\tonToggleNewTab: () => void;\n};\n\nexport const UrlPopover = ( {\n\tpopupState,\n\trestoreValue,\n\tanchorRef,\n\tvalue,\n\tonChange,\n\topenInNewTab,\n\tonToggleNewTab,\n}: Props ) => {\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => inputRef.current?.focus() );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tslotProps={ {\n\t\t\t\tpaper: { sx: { borderRadius: '16px', width: anchorRef.current?.offsetWidth + 'px', marginTop: -1 } },\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 } sx={ { p: 1.5 } }>\n\t\t\t\t<TextField\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tplaceholder={ __( 'Type a URL', 'elementor' ) }\n\t\t\t\t\tinputProps={ { ref: inputRef } }\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tInputProps={ { sx: { borderRadius: '8px' } } }\n\t\t\t\t/>\n\t\t\t\t<ToggleButton\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue=\"newTab\"\n\t\t\t\t\tselected={ openInNewTab }\n\t\t\t\t\tonClick={ onToggleNewTab }\n\t\t\t\t\taria-label={ __( 'Open in a new tab', 'elementor' ) }\n\t\t\t\t\tsx={ { borderRadius: '8px' } }\n\t\t\t\t>\n\t\t\t\t\t<ExternalLinkIcon fontSize=\"tiny\" />\n\t\t\t\t</ToggleButton>\n\t\t\t</Stack>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { BrushBigIcon } from '@elementor/icons';\nimport { IconButton, styled, Tooltip } from '@elementor/ui';\n\ntype ClearIconButtonProps = {\n\tonClick?: () => void;\n\ttooltipText: React.ReactNode;\n\tdisabled?: boolean;\n\tsize?: 'tiny' | 'small' | 'medium' | 'large';\n};\n\nconst CustomIconButton = styled( IconButton )( ( { theme } ) => ( {\n\twidth: theme.spacing( 2.5 ),\n\theight: theme.spacing( 2.5 ),\n} ) );\n\nexport const ClearIconButton = ( { tooltipText, onClick, disabled, size = 'tiny' }: ClearIconButtonProps ) => (\n\t<Tooltip title={ tooltipText } placement=\"top\" disableInteractive>\n\t\t<CustomIconButton aria-label={ tooltipText } size={ size } onClick={ onClick } disabled={ disabled }>\n\t\t\t<BrushBigIcon fontSize={ size } />\n\t\t</CustomIconButton>\n\t</Tooltip>\n);\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { type CreateOptions, type PropKey } from '@elementor/editor-props';\nimport { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tInfotip,\n\tTooltip,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SetValueMeta } from '../../bound-prop-context';\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\nimport { RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../control-repeater/locations';\nimport { SectionContent } from '../section-content';\nimport { RepeaterHeader } from './repeater-header';\nimport { RepeaterPopover } from './repeater-popover';\nimport { RepeaterTag } from './repeater-tag';\nimport { SortableItem, SortableProvider } from './sortable';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\nexport type RepeaterItem< T > = {\n\tdisabled?: boolean;\n} & T;\n\ntype RepeaterItemContentProps< T > = {\n\tanchorEl: AnchorEl;\n\tbind: PropKey;\n\tvalue: T;\n\tindex: number;\n};\n\ntype RepeaterItemContent< T > = React.ComponentType< RepeaterItemContentProps< T > >;\n\nexport type ItemsActionPayload< T > = Array< { index: number; item: T } >;\n\ntype AddItemMeta< T > = {\n\ttype: 'add';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype RemoveItemMeta< T > = {\n\ttype: 'remove';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype DuplicateItemMeta< T > = {\n\ttype: 'duplicate';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype ReorderItemMeta = {\n\ttype: 'reorder';\n\tpayload: { from: number; to: number };\n};\n\ntype ToggleDisableItemMeta = {\n\ttype: 'toggle-disable';\n};\n\nexport type SetRepeaterValuesMeta< T > =\n\t| SetValueMeta< AddItemMeta< T > >\n\t| SetValueMeta< RemoveItemMeta< T > >\n\t| SetValueMeta< DuplicateItemMeta< T > >\n\t| SetValueMeta< ReorderItemMeta >\n\t| SetValueMeta< ToggleDisableItemMeta >;\n\ntype BaseItemSettings< T > = {\n\tinitialValues: T;\n\tLabel: React.ComponentType< { value: T; index: number } >;\n\tIcon: React.ComponentType< { value: T } >;\n\tContent: RepeaterItemContent< T >;\n\tactions?: ( value: T ) => React.ReactNode;\n};\n\ntype SortableItemSettings< T > = BaseItemSettings< T > & {\n\tgetId: ( { item, index }: { item: T; index: number } ) => string;\n};\n\ntype RepeaterProps< T > =\n\t| {\n\t\t\tlabel: string;\n\t\t\tvalues?: T[];\n\t\t\topenOnAdd?: boolean;\n\t\t\tsetValues: ( newValue: T[], _: CreateOptions, meta?: SetRepeaterValuesMeta< T > ) => void;\n\t\t\tdisabled?: boolean;\n\t\t\tdisableAddItemButton?: boolean;\n\t\t\taddButtonInfotipContent?: React.ReactNode;\n\t\t\tshowDuplicate?: boolean;\n\t\t\tshowToggle?: boolean;\n\t\t\tshowRemove?: boolean;\n\t\t\topenItem?: number;\n\t\t\tisSortable: false;\n\t\t\titemSettings: BaseItemSettings< T >;\n\t }\n\t| {\n\t\t\tlabel: string;\n\t\t\tvalues?: T[];\n\t\t\topenOnAdd?: boolean;\n\t\t\tsetValues: ( newValue: T[], _: CreateOptions, meta?: SetRepeaterValuesMeta< T > ) => void;\n\t\t\tdisabled?: boolean;\n\t\t\tdisableAddItemButton?: boolean;\n\t\t\taddButtonInfotipContent?: React.ReactNode;\n\t\t\tshowDuplicate?: boolean;\n\t\t\tshowToggle?: boolean;\n\t\t\tshowRemove?: boolean;\n\t\t\topenItem?: number;\n\t\t\tisSortable?: true;\n\t\t\titemSettings: SortableItemSettings< T >;\n\t };\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tdisabled = false,\n\topenOnAdd = false,\n\tvalues: items = [],\n\tsetValues: setItems,\n\tshowDuplicate = true,\n\tshowToggle = true,\n\tshowRemove = true,\n\tdisableAddItemButton = false,\n\taddButtonInfotipContent,\n\topenItem: initialOpenItem = EMPTY_OPEN_ITEM,\n\tisSortable = true,\n}: RepeaterProps< RepeaterItem< T > > ) => {\n\tconst [ openItem, setOpenItem ] = useState( initialOpenItem );\n\n\tconst uniqueKeys = items.map( ( item, index ) =>\n\t\tisSortable && 'getId' in itemSettings ? itemSettings.getId( { item, index } ) : String( index )\n\t);\n\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\t\tconst newIndex = items.length;\n\t\tsetItems(\n\t\t\t[ ...items, newItem ],\n\t\t\t{},\n\t\t\t{\n\t\t\t\taction: { type: 'add', payload: [ { index: newIndex, item: newItem } ] },\n\t\t\t}\n\t\t);\n\n\t\tif ( openOnAdd ) {\n\t\t\tsetOpenItem( newIndex );\n\t\t}\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\n\t\t// Insert the new (cloned item) at the next spot (after the current index)\n\t\tconst atPosition = 1 + index;\n\n\t\tsetItems(\n\t\t\t[ ...items.slice( 0, atPosition ), newItem, ...items.slice( atPosition ) ],\n\t\t\t{},\n\t\t\t{\n\t\t\t\taction: { type: 'duplicate', payload: [ { index, item: newItem } ] },\n\t\t\t}\n\t\t);\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tconst removedItem = items[ index ];\n\n\t\tsetItems(\n\t\t\titems.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'remove', payload: [ { index, item: removedItem } ] } }\n\t\t);\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetItems(\n\t\t\titems.map( ( value, pos ) => {\n\t\t\t\tif ( pos === index ) {\n\t\t\t\t\tconst { disabled: propDisabled, ...rest } = value;\n\n\t\t\t\t\t// If the items should not be disabled, remove the disabled property.\n\t\t\t\t\treturn { ...rest, ...( propDisabled ? {} : { disabled: true } ) } as RepeaterItem< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'toggle-disable' } }\n\t\t);\n\t};\n\n\tconst onChangeOrder = ( reorderedKeys: string[], meta: { from: number; to: number } ) => {\n\t\tsetItems(\n\t\t\treorderedKeys.map( ( id ) => {\n\t\t\t\treturn items[ uniqueKeys.indexOf( id ) ];\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'reorder', payload: { ...meta } } }\n\t\t);\n\t};\n\n\tconst isButtonDisabled = disabled || disableAddItemButton;\n\tconst shouldShowInfotip = isButtonDisabled && addButtonInfotipContent;\n\n\tconst addButton = (\n\t\t<IconButton\n\t\t\tsize={ SIZE }\n\t\t\tsx={ {\n\t\t\t\tml: 'auto',\n\t\t\t} }\n\t\t\tdisabled={ isButtonDisabled }\n\t\t\tonClick={ addRepeaterItem }\n\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t>\n\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t</IconButton>\n\t);\n\n\treturn (\n\t\t<SectionContent gap={ 2 }>\n\t\t\t<RepeaterHeader label={ label } adornment={ ControlAdornments }>\n\t\t\t\t{ shouldShowInfotip ? (\n\t\t\t\t\t<Infotip\n\t\t\t\t\t\tplacement=\"right\"\n\t\t\t\t\t\tcontent={ addButtonInfotipContent }\n\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Box sx={ { ...( isButtonDisabled ? { cursor: 'not-allowed' } : {} ) } }>{ addButton }</Box>\n\t\t\t\t\t</Infotip>\n\t\t\t\t) : (\n\t\t\t\t\taddButton\n\t\t\t\t) }\n\t\t\t</RepeaterHeader>\n\t\t\t{ 0 < uniqueKeys.length && (\n\t\t\t\t<SortableProvider value={ uniqueKeys } onChange={ onChangeOrder }>\n\t\t\t\t\t{ uniqueKeys.map( ( key ) => {\n\t\t\t\t\t\tconst index = uniqueKeys.indexOf( key );\n\t\t\t\t\t\tconst value = items[ index ];\n\n\t\t\t\t\t\tif ( ! value ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\t\tpropDisabled={ value?.disabled }\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Label value={ value } index={ index } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstartIcon={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Icon value={ value } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\topenOnMount={ openOnAdd && openItem === index }\n\t\t\t\t\t\t\t\t\tonOpen={ () => setOpenItem( EMPTY_OPEN_ITEM ) }\n\t\t\t\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t\t\t\t\tshowRemove={ showRemove }\n\t\t\t\t\t\t\t\t\tactions={ itemSettings.actions }\n\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<itemSettings.Content\n\t\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\tbind={ String( index ) }\n\t\t\t\t\t\t\t\t\t\t\tindex={ index }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</RepeaterItem>\n\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</SortableProvider>\n\t\t\t) }\n\t\t</SectionContent>\n\t);\n};\n\ntype RepeaterItemProps< T > = {\n\tlabel: React.ReactNode;\n\tpropDisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( props: Pick< RepeaterItemContentProps< T >, 'anchorEl' > ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tshowRemove: boolean;\n\tdisabled?: boolean;\n\tactions?: ( value: T ) => React.ReactNode;\n\tvalue: T;\n};\n\nconst RepeaterItem = < T, >( {\n\tlabel,\n\tpropDisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n\topenOnMount,\n\tonOpen,\n\tshowDuplicate,\n\tshowToggle,\n\tshowRemove,\n\tdisabled,\n\tactions,\n\tvalue,\n}: RepeaterItemProps< T > ) => {\n\tconst { popoverState, popoverProps, ref, setRef } = usePopover( openOnMount, onOpen );\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\treturn (\n\t\t<>\n\t\t\t<RepeaterTag\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ label }\n\t\t\t\tref={ setRef }\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ showDuplicate && (\n\t\t\t\t\t\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ duplicateItem } aria-label={ duplicateLabel }>\n\t\t\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showToggle && (\n\t\t\t\t\t\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ toggleDisableItem } aria-label={ toggleLabel }>\n\t\t\t\t\t\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ actions?.( value ) }\n\t\t\t\t\t\t{ showRemove && (\n\t\t\t\t\t\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ removeItem } aria-label={ removeLabel }>\n\t\t\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<RepeaterPopover width={ ref?.getBoundingClientRect().width } { ...popoverProps } anchorEl={ ref }>\n\t\t\t\t<Box>{ children( { anchorEl: ref } ) }</Box>\n\t\t\t</RepeaterPopover>\n\t\t</>\n\t);\n};\n\nconst usePopover = ( openOnMount: boolean, onOpen: () => void ) => {\n\tconst [ ref, setRef ] = useState< HTMLElement | null >( null );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\tuseEffect( () => {\n\t\tif ( openOnMount && ref ) {\n\t\t\tpopoverState.open( ref );\n\t\t\tonOpen?.();\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ ref ] );\n\n\treturn {\n\t\tpopoverState,\n\t\tref,\n\t\tsetRef,\n\t\tpopoverProps,\n\t};\n};\n"],"mappings":"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","names":["Repeater","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","React","import_react","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_icons","import_ui","import_i18n","React","import_react","import_ui","import_react","isItemDisabled","items","SIZE","React","React","import_icons","import_ui","import_i18n","items","React","import_ui","import_i18n","import_react","React","import_react","import_ui","Label","isItemDisabled","React","isItemDisabled","React","import_icons","import_ui","import_i18n","SIZE","items","React","import_icons","import_ui","import_i18n","SIZE","items","isItemDisabled","React","import_icons","import_ui","import_i18n","SIZE","React","import_ui","React","import_ui","React","import_ui","import_react","React","import_ui","React","import_react","import_ui","React","React","import_react","Context","items","items","Control","React","import_editor_props","import_i18n","React","import_react","import_editor_props","import_i18n","import_i18n","React","import_editor_props","import_ui","import_i18n","React","import_react","import_editor_props","import_ui","import_i18n","import_react","React","import_editor_props","import_ui","items","React","import_ui","StyledUnstableColorIndicator","React","React","import_ui","React","import_ui","getInitialValue","React","import_react","React","import_editor_props","React","import_react","import_icons","import_ui","React","import_ui","items","Content","React","React","import_editor_props","import_ui","React","import_react","import_editor_props","import_ui","import_i18n","React","import_ui","items","React","import_react","import_editor_props","import_editor_responsive","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_icons","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_http_client","import_icons","import_utils","import_i18n","React","import_react","import_icons","import_ui","AutocompleteBase","React","import_editor_props","import_ui","SIZE","React","import_editor_elements","import_editor_props","import_editor_ui","import_ui","import_i18n","React","import_editor_ui","import_ui","React","import_react","import_editor_props","import_editor_responsive","import_icons","import_ui","import_i18n","currentValue","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_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","StyledUnstableColorIndicator","React","import_react","import_editor_props","import_ui","isItemDisabled","childArrayPropTypeUtil","ItemIcon","ItemLabel","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_react","import_editor_props","import_icons","import_ui","import_i18n","import_editor_props","React","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","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","items","React","import_icons","React","import_ui","import_i18n","Label","React","import_editor_ui","import_icons","import_ui","import_i18n","React","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_ui","import_i18n","ControlFields","SIZE","SIZE","Repeater","getInitialValue","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_ui","import_i18n","import_editor_elements","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_react","import_ui","React","import_react","import_icons","import_ui","import_i18n","React","import_react","import_icons","import_ui","import_i18n","Document","Paragraph","Heading","Link","Text","Bold","Italic","Strike","Superscript","Subscript","Underline","HardBreak","React","import_icons","import_ui","React","import_react","import_icons","import_ui","import_i18n","SIZE","EMPTY_OPEN_ITEM","Repeater","items"]}
|
|
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/number-input.tsx","../src/components/text-field-popover.tsx","../src/hooks/use-size-extended-options.ts","../src/hooks/use-sync-external-state.tsx","../src/controls/stroke-control.tsx","../src/components/section-content.tsx","../src/controls/color-control.tsx","../src/controls/box-shadow-repeater-control.tsx","../src/components/control-repeater/actions/tooltip-add-item-action.tsx","../src/components/control-repeater/context/repeater-context.tsx","../src/services/event-bus.ts","../src/components/control-repeater/context/item-context.tsx","../src/components/control-repeater/items/items-container.tsx","../src/components/repeater/sortable.tsx","../src/components/control-repeater/items/item.tsx","../src/hooks/use-repeatable-control-context.ts","../src/components/repeater/repeater-tag.tsx","../src/components/control-repeater/locations.ts","../src/components/control-repeater/control-repeater.tsx","../src/components/control-repeater/actions/disable-item-action.tsx","../src/components/control-repeater/actions/duplicate-item-action.tsx","../src/components/control-repeater/actions/remove-item-action.tsx","../src/components/control-repeater/items/edit-item-popover.tsx","../src/components/repeater/repeater-popover.tsx","../src/components/popover-content.tsx","../src/components/popover-grid-container.tsx","../src/components/repeater/repeater-header.tsx","../src/control-adornments/control-adornments.tsx","../src/control-adornments/control-adornments-context.tsx","../src/controls/filter-control/filter-repeater-control.tsx","../src/controls/filter-control/context/filter-config-context.tsx","../src/controls/filter-control/utils.ts","../src/controls/filter-control/configs.ts","../src/controls/filter-control/filter-content.tsx","../src/controls/filter-control/drop-shadow/drop-shadow-item-content.tsx","../src/controls/filter-control/single-size/single-size-item-content.tsx","../src/controls/filter-control/filter-icon.tsx","../src/controls/filter-control/filter-label.tsx","../src/controls/filter-control/drop-shadow/drop-shadow-item-label.tsx","../src/controls/filter-control/single-size/single-size-item-label.tsx","../src/controls/select-control-wrapper.tsx","../src/controls/toggle-control.tsx","../src/components/control-toggle-button-group.tsx","../src/components/conditional-tooltip.tsx","../src/utils/convert-toggle-options-to-atomic.tsx","../src/controls/number-control.tsx","../src/controls/equal-unequal-sizes-control.tsx","../src/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/restricted-link-infotip.tsx","../src/controls/query-control.tsx","../src/components/autocomplete.tsx","../src/controls/switch-control.tsx","../src/controls/html-tag-control.tsx","../src/components/conditional-control-infotip.tsx","../src/controls/gap-control.tsx","../src/controls/aspect-ratio-control.tsx","../src/controls/svg-media-control.tsx","../src/components/enable-unfiltered-modal.tsx","../src/controls/background-control/background-control.tsx","../src/controls/background-control/background-overlay/background-overlay-repeater-control.tsx","../src/env.ts","../src/controls/background-control/background-gradient-color-control.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-attachment.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-position.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-repeat.tsx","../src/controls/background-control/background-overlay/background-image-overlay/background-image-overlay-size.tsx","../src/controls/background-control/background-overlay/use-background-tabs-history.ts","../src/controls/repeatable-control.tsx","../src/controls/key-value-control.tsx","../src/utils/escape-html-attr.ts","../src/controls/position-control.tsx","../src/controls/transform-control/transform-repeater-control.tsx","../src/controls/transform-control/initial-values.ts","../src/controls/transform-control/transform-content.tsx","../src/controls/transform-control/functions/move.tsx","../src/controls/transform-control/functions/axis-row.tsx","../src/controls/transform-control/functions/rotate.tsx","../src/controls/transform-control/functions/scale.tsx","../src/controls/transform-control/functions/scale-axis-row.tsx","../src/controls/transform-control/functions/skew.tsx","../src/controls/transform-control/use-transform-tabs-history.tsx","../src/controls/transform-control/transform-icon.tsx","../src/controls/transform-control/transform-label.tsx","../src/controls/transform-control/transform-settings-control.tsx","../src/controls/transform-control/transform-base-controls/children-perspective-control.tsx","../src/controls/transform-control/transform-base-controls/transform-origin-control.tsx","../src/controls/transition-control/transition-repeater-control.tsx","../src/controls/selection-size-control.tsx","../src/controls/transition-control/data.ts","../src/controls/transition-control/trainsition-events.ts","../src/controls/transition-control/transition-selector.tsx","../src/controls/date-time-control.tsx","../src/controls/inline-editing-control.tsx","../src/components/inline-editor.tsx","../src/utils/inline-editing.ts","../src/components/inline-editor-toolbar.tsx","../src/components/url-popover.tsx","../src/components/icon-buttons/clear-icon-button.tsx","../src/components/repeater/repeater.tsx"],"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-control/filter-repeater-control';\nexport { SelectControl } from './controls/select-control';\nexport { SelectControlWrapper } from './controls/select-control-wrapper';\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 { HtmlTagControl } from './controls/html-tag-control';\nexport { QueryControl } from './controls/query-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 { TransformSettingsControl } from './controls/transform-control/transform-settings-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 { transitionProperties, transitionsItemsList } from './controls/transition-control/data';\nexport { DateTimeControl } from './controls/date-time-control';\nexport { InlineEditingControl } from './controls/inline-editing-control';\n\n// components\nexport { ControlFormLabel } from './components/control-form-label';\nexport { ControlToggleButtonGroup } from './components/control-toggle-button-group';\nexport { ToggleButtonGroupUi } from './components/control-toggle-button-group';\nexport { ClearIconButton } from './components/icon-buttons/clear-icon-button';\nexport {\n\tRepeater,\n\ttype SetRepeaterValuesMeta,\n\ttype ItemsActionPayload,\n\ttype RepeaterItem,\n} from './components/repeater/repeater';\nexport { FloatingActionsBar } from './components/floating-bar';\nexport { PopoverGridContainer } from './components/popover-grid-container';\nexport { InlineEditor } from './components/inline-editor';\nexport { InlineEditorToolbar } from './components/inline-editor-toolbar';\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 { AdornmentComponent } from './control-adornments/control-adornments-context';\nexport type { PropProviderProps } from './bound-prop-context';\nexport type { SetValue, SetValueMeta } 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';\nexport { createControl } from './create-control';\n\nexport {\n\tinjectIntoRepeaterItemIcon,\n\tinjectIntoRepeaterItemLabel,\n\tinjectIntoRepeaterItemActions,\n} from './components/control-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 Action = {\n\ttype: string;\n\tpayload?: object;\n};\n\nexport type SetValueMeta< TAction = Action > = {\n\tbind?: PropKey;\n\tvalidation?: ( value: PropValue ) => boolean;\n\taction?: TAction;\n\twithHistory?: boolean;\n};\n\nexport type SetValue< T > = ( value: T, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\ntype PropContext< T extends PropValue, P extends PropType > = {\n\tsetValue: SetValue< T >;\n\tvalue: T | null;\n\tpropType: P;\n\tplaceholder?: T;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n};\n\nconst PropContext = createContext< PropContext< PropValue, PropType > | null >( null );\n\nexport type PropProviderProps< T extends PropValue, P extends PropType > = React.PropsWithChildren<\n\tPropContext< T, P >\n>;\n\nexport const PropProvider = < T extends PropValue, P extends PropType >( {\n\tchildren,\n\tvalue,\n\tsetValue,\n\tpropType,\n\tplaceholder,\n\tisDisabled,\n}: PropProviderProps< T, P > ) => {\n\treturn (\n\t\t<PropContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tvalue,\n\t\t\t\tpropType,\n\t\t\t\tsetValue: setValue as SetValue< PropValue >,\n\t\t\t\tplaceholder,\n\t\t\t\tisDisabled,\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</PropContext.Provider>\n\t);\n};\n\nexport const usePropContext = < T extends PropValue, P extends PropType >() => {\n\tconst context = useContext( PropContext ) as PropContext< T, P > | null;\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: {\n\t\t\t\thook: 'usePropContext',\n\t\t\t\tprovider: 'PropProvider',\n\t\t\t},\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { createError } from '@elementor/utils';\n\nexport const MissingPropTypeError = createError( {\n\tcode: 'missing_prop_provider_prop_type',\n\tmessage: 'Prop type is missing',\n} );\n\nexport const UnsupportedParentError = createError( {\n\tcode: 'unsupported_prop_provider_prop_type',\n\tmessage: 'Parent prop type is not supported',\n} );\n\nexport const HookOutsideProviderError = createError( {\n\tcode: 'hook_outside_provider',\n\tmessage: 'Hook used outside of provider',\n} );\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\nimport {\n\ttype ArrayPropType,\n\ttype ArrayPropValue,\n\ttype CreateOptions,\n\ttype ObjectPropType,\n\ttype ObjectPropValue,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { HookOutsideProviderError, MissingPropTypeError, UnsupportedParentError } from './errors';\nimport { type SetValue, usePropContext } from './prop-context';\n\nexport type PropKeyContextValue< T, P > = {\n\tbind: PropKey;\n\tsetValue: SetValue< T >;\n\tvalue: T;\n\tpropType: P;\n\tplaceholder?: T;\n\tpath: PropKey[];\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\nconst PropKeyContext = createContext< PropKeyContextValue< PropValue, PropType > | null >( null );\n\ntype PropKeyProviderProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const PropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst { propType } = usePropContext();\n\n\tif ( ! propType ) {\n\t\tthrow new MissingPropTypeError( { context: { bind } } );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\treturn <ArrayPropKeyProvider bind={ bind }>{ children }</ArrayPropKeyProvider>;\n\t}\n\n\tif ( propType.kind === 'object' ) {\n\t\treturn <ObjectPropKeyProvider bind={ bind }>{ children }</ObjectPropKeyProvider>;\n\t}\n\n\tthrow new UnsupportedParentError( { context: { propType } } );\n};\n\nconst ObjectPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ObjectPropValue[ 'value' ], ObjectPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue: SetValue< PropValue > = ( value, options, meta ) => {\n\t\tconst newValue = {\n\t\t\t...context.value,\n\t\t\t[ bind ]: value,\n\t\t};\n\n\t\treturn context?.setValue( newValue, options, { ...meta, bind } );\n\t};\n\n\tconst value = context.value?.[ bind ];\n\tconst placeholder = context.placeholder?.[ bind ];\n\n\tconst propType = context.propType.shape[ bind ];\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, placeholder, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nconst ArrayPropKeyProvider = ( { children, bind }: PropKeyProviderProps ) => {\n\tconst context = usePropContext< ArrayPropValue[ 'value' ], ArrayPropType >();\n\tconst { path } = useContext( PropKeyContext ) ?? {};\n\n\tconst setValue = ( value: PropValue, options?: CreateOptions ) => {\n\t\tconst newValue = [ ...( context.value ?? [] ) ];\n\n\t\tnewValue[ Number( bind ) ] = value;\n\n\t\treturn context?.setValue( newValue, options, { bind } );\n\t};\n\n\tconst value = context.value?.[ Number( bind ) ];\n\n\tconst propType = context.propType.item_prop_type;\n\n\treturn (\n\t\t<PropKeyContext.Provider\n\t\t\tvalue={ { ...context, value, setValue, bind, propType, path: [ ...( path ?? [] ), bind ] } }\n\t\t>\n\t\t\t{ children }\n\t\t</PropKeyContext.Provider>\n\t);\n};\n\nexport const usePropKeyContext = () => {\n\tconst context = useContext( PropKeyContext );\n\n\tif ( ! context ) {\n\t\tthrow new HookOutsideProviderError( {\n\t\t\tcontext: { hook: 'usePropKeyContext', provider: 'PropKeyProvider' },\n\t\t} );\n\t}\n\n\treturn context;\n};\n","import { useState } from 'react';\nimport {\n\ttype CreateOptions,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropTypeUtil,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { MissingPropTypeError } from './errors';\nimport { type SetValue, type SetValueMeta } from './prop-context';\nimport { type PropKeyContextValue, usePropKeyContext } from './prop-key-context';\n\ntype UseBoundProp< TValue extends PropValue > = {\n\tbind: PropKey;\n\tsetValue: SetValue< TValue | null >;\n\tvalue: TValue;\n\tpropType: PropType;\n\tplaceholder?: TValue;\n\tpath: PropKey[];\n\trestoreValue: () => void;\n\tresetValue: () => void;\n\tisDisabled?: ( propType: PropType ) => boolean | undefined;\n\tdisabled?: boolean;\n};\n\ntype EnhancedPropKeyContextValue< T, P > = PropKeyContextValue< T, P > & {\n\tresetValue: () => void;\n};\n\nexport function useBoundProp<\n\tT extends PropValue = PropValue,\n\tP extends PropType = PropType,\n>(): EnhancedPropKeyContextValue< T, P >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil: PropTypeUtil< TKey, TValue >\n): UseBoundProp< TValue >;\n\nexport function useBoundProp< TKey extends string, TValue extends PropValue >(\n\tpropTypeUtil?: PropTypeUtil< TKey, TValue >\n) {\n\tconst propKeyContext = usePropKeyContext();\n\n\tconst { isValid, validate, restoreValue } = useValidation( propKeyContext.propType );\n\n\tconst disabled = propKeyContext.isDisabled?.( propKeyContext.propType );\n\n\tconst resetValue = () => {\n\t\tpropKeyContext.setValue( propKeyContext.propType.initial_value ?? null );\n\t};\n\n\t// allow using the hook without a propTypeUtil, with no modifications or validations.\n\tif ( ! propTypeUtil ) {\n\t\treturn {\n\t\t\t...propKeyContext,\n\t\t\tdisabled,\n\t\t\tresetValue,\n\t\t} as EnhancedPropKeyContextValue< PropValue, PropType >;\n\t}\n\n\tfunction setValue( value: TValue | null, options: CreateOptions, meta?: SetValueMeta ) {\n\t\tif ( ! validate( value, meta?.validation ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( value === null ) {\n\t\t\treturn propKeyContext?.setValue( null, options, meta );\n\t\t}\n\n\t\treturn propKeyContext?.setValue( propTypeUtil?.create( value, options ), {}, meta );\n\t}\n\n\tconst propType = resolveUnionPropType( propKeyContext.propType, propTypeUtil.key );\n\n\tconst value = propTypeUtil.extract( propKeyContext.value ?? propType.default ?? null );\n\tconst placeholder = propTypeUtil.extract( propKeyContext.placeholder ?? null );\n\n\treturn {\n\t\t...propKeyContext,\n\t\tpropType,\n\t\tsetValue,\n\t\tvalue: isValid ? value : null,\n\t\trestoreValue,\n\t\tplaceholder,\n\t\tdisabled,\n\t\tresetValue,\n\t};\n}\n\nconst useValidation = ( propType: PropType ) => {\n\tconst [ isValid, setIsValid ] = useState( true );\n\n\t// If the value does not pass the prop type validation, set the isValid state to false.\n\t// This will prevent the value from being set in the model, and its fallback will be used instead.\n\tconst validate = ( value: PropValue | null, validation?: ( value: PropValue ) => boolean ) => {\n\t\tlet valid = true;\n\n\t\tif ( propType.settings.required && value === null ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tif ( validation && ! validation( value ) ) {\n\t\t\tvalid = false;\n\t\t}\n\n\t\tsetIsValid( valid );\n\n\t\treturn valid;\n\t};\n\n\tconst restoreValue = () => setIsValid( true );\n\n\treturn {\n\t\tisValid,\n\t\tsetIsValid,\n\t\tvalidate,\n\t\trestoreValue,\n\t};\n};\n\n// utils\nconst resolveUnionPropType = ( propType: PropType, key: string ): PropType => {\n\tlet resolvedPropType = propType;\n\n\tif ( propType.kind === 'union' ) {\n\t\tresolvedPropType = propType.prop_types[ key ];\n\t}\n\n\tif ( ! resolvedPropType ) {\n\t\tthrow new MissingPropTypeError( { context: { key } } );\n\t}\n\n\treturn resolvedPropType;\n};\n","import * as React from 'react';\nimport { FormLabel, type FormLabelProps } from '@elementor/ui';\n\nexport const ControlFormLabel = ( props: FormLabelProps ) => {\n\treturn <FormLabel size=\"tiny\" { ...props } />;\n};\n","import * as React from 'react';\nimport { type ComponentProps, type ComponentType } from 'react';\nimport { ErrorBoundary } from '@elementor/ui';\n\nimport { useControlReplacement } from './control-replacements';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\nconst brandSymbol = Symbol( 'control' );\n\nexport type ControlComponent< TComponent extends AnyComponentType = AnyComponentType > = TComponent & {\n\t[ brandSymbol ]: true;\n};\n\nexport function createControl< T extends AnyComponentType >( Control: T ) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst { ControlToRender, OriginalControl, isReplaced } = useControlReplacement( Control );\n\t\tconst controlProps = isReplaced ? { ...props, OriginalControl } : props;\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<ControlToRender { ...controlProps } />\n\t\t\t</ErrorBoundary>\n\t\t);\n\t} ) as ControlComponent< T >;\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropValue } from '@elementor/editor-props';\n\nimport { useBoundProp } from './bound-prop-context';\n\ntype ControlComponent = ComponentType< object & { OriginalControl: ComponentType } >;\ntype ControlReplacement = {\n\tcomponent: ControlComponent;\n\tcondition: ( { value }: ConditionArgs ) => boolean;\n};\n\ntype ConditionArgs = {\n\tvalue: PropValue;\n\tplaceholder?: PropValue;\n};\n\ntype Props = PropsWithChildren< { replacements: ControlReplacement[] } >;\n\nconst ControlReplacementContext = createContext< ControlReplacement[] >( [] );\n\nexport const ControlReplacementsProvider = ( { replacements, children }: Props ) => {\n\treturn <ControlReplacementContext.Provider value={ replacements }>{ children }</ControlReplacementContext.Provider>;\n};\n\nexport const useControlReplacement = ( OriginalComponent: ControlComponent ) => {\n\tconst { value, placeholder } = useBoundProp();\n\tconst replacements = useContext( ControlReplacementContext );\n\n\ttry {\n\t\tconst replacement = replacements.find( ( r ) => r.condition( { value, placeholder } ) );\n\n\t\treturn {\n\t\t\tControlToRender: replacement?.component ?? OriginalComponent,\n\t\t\tOriginalControl: OriginalComponent,\n\t\t\tisReplaced: !! replacement,\n\t\t};\n\t} catch {\n\t\treturn { ControlToRender: OriginalComponent, OriginalControl: OriginalComponent };\n\t}\n};\n\nexport const createControlReplacementsRegistry = () => {\n\tconst controlReplacements: ControlReplacement[] = [];\n\n\tfunction registerControlReplacement( replacement: ControlReplacement ) {\n\t\tcontrolReplacements.push( replacement );\n\t}\n\n\tfunction getControlReplacements() {\n\t\treturn controlReplacements;\n\t}\n\n\treturn { registerControlReplacement, getControlReplacements };\n};\n","import { useMutation, useQuery, useQueryClient } from '@elementor/query';\n\nimport { apiClient } from '../api';\n\nexport const UNFILTERED_FILES_UPLOAD_KEY = 'elementor_unfiltered_files_upload';\n\nconst unfilteredFilesQueryKey = {\n\tqueryKey: [ UNFILTERED_FILES_UPLOAD_KEY ],\n};\n\ntype Value = '0' | '1';\n\nexport const useUnfilteredFilesUpload = () =>\n\tuseQuery( {\n\t\t...unfilteredFilesQueryKey,\n\t\tqueryFn: (): Promise< boolean > =>\n\t\t\tapiClient.getElementorSetting< Value >( UNFILTERED_FILES_UPLOAD_KEY ).then( ( res ) => {\n\t\t\t\treturn formatResponse( res );\n\t\t\t} ),\n\t\tstaleTime: Infinity,\n\t} );\n\nexport function useUpdateUnfilteredFilesUpload() {\n\tconst queryClient = useQueryClient();\n\n\tconst mutate = useMutation( {\n\t\tmutationFn: ( { allowUnfilteredFilesUpload }: { allowUnfilteredFilesUpload: boolean } ) =>\n\t\t\tapiClient.updateElementorSetting< Value >(\n\t\t\t\tUNFILTERED_FILES_UPLOAD_KEY,\n\t\t\t\tallowUnfilteredFilesUpload ? '1' : '0'\n\t\t\t),\n\t\tonSuccess: () => queryClient.invalidateQueries( unfilteredFilesQueryKey ),\n\t} );\n\n\treturn mutate;\n}\n\nconst formatResponse = ( response: Value ): boolean => {\n\treturn Boolean( response === '1' );\n};\n","import { httpService } from '@elementor/http-client';\n\nconst ELEMENTOR_SETTING_URL = 'elementor/v1/settings';\n\ntype Response< T > = { data: { value: T }; success: boolean };\n\nexport const apiClient = {\n\tgetElementorSetting: < T >( key: string ) =>\n\t\thttpService()\n\t\t\t.get< Response< T > >( `${ ELEMENTOR_SETTING_URL }/${ key }` )\n\t\t\t.then( ( res ) => formatSettingResponse( res.data ) ),\n\tupdateElementorSetting: < T >( key: string, value: T ) =>\n\t\thttpService().put( `${ ELEMENTOR_SETTING_URL }/${ key }`, { value } ),\n};\n\nconst formatSettingResponse = < T >( response: Response< T > ) => response.data.value;\n","import * as React from 'react';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack } from '@elementor/ui';\nimport { type MediaType, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype ImageMediaControlProps = {\n\tmediaTypes?: MediaType[];\n};\n\nexport const ImageMediaControl = createControl( ( { mediaTypes = [ 'image' ] }: ImageMediaControlProps ) => {\n\tconst { value, setValue, propType } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes,\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Card variant=\"outlined\">\n\t\t\t\t<CardMedia image={ src } sx={ { height: propType.meta.isDynamic ? 134 : 150 } }>\n\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t<Stack justifyContent=\"center\" alignItems=\"center\" width=\"100%\" height=\"100%\">\n\t\t\t\t\t\t\t<CircularProgress />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<></>\n\t\t\t\t\t) }\n\t\t\t\t</CardMedia>\n\t\t\t\t<CardOverlay>\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'browse' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Select image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t</CardOverlay>\n\t\t\t</Card>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\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, type SelectProps, Typography } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype SelectControlProps = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n\tMenuProps?: SelectProps[ 'MenuProps' ];\n\tariaLabel?: string;\n};\n\nconst DEFAULT_MENU_PROPS = {\n\tMenuListProps: {\n\t\tsx: {\n\t\t\tmaxHeight: '160px',\n\t\t},\n\t},\n};\n\nexport const SelectControl = createControl(\n\t( { options, onChange, MenuProps = DEFAULT_MENU_PROPS, ariaLabel }: SelectControlProps ) => {\n\t\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\t\tconst newValue = event.target.value || null;\n\n\t\t\tonChange?.( newValue, value );\n\t\t\tsetValue( newValue );\n\t\t};\n\t\tconst isDisabled = disabled || options.length === 0;\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Select\n\t\t\t\t\tsx={ { overflow: 'hidden' } }\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tMenuProps={ MenuProps }\n\t\t\t\t\taria-label={ ariaLabel || placeholder }\n\t\t\t\t\trenderValue={ ( selectedValue: string | null ) => {\n\t\t\t\t\t\tconst findOptionByValue = ( searchValue: string | null ) =>\n\t\t\t\t\t\t\toptions.find( ( opt ) => opt.value === searchValue );\n\n\t\t\t\t\t\tif ( ! selectedValue || selectedValue === '' ) {\n\t\t\t\t\t\t\tif ( placeholder ) {\n\t\t\t\t\t\t\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\t\t\t\t\t\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t\t\t\t\t\t\t{ displayText }\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn '';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst option = findOptionByValue( selectedValue );\n\t\t\t\t\t\treturn option?.label || selectedValue;\n\t\t\t\t\t} }\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\tfullWidth\n\t\t\t\t>\n\t\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) ) }\n\t\t\t\t</Select>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { type SxProps, TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const TextControl = createControl(\n\t( {\n\t\tplaceholder,\n\t\terror,\n\t\tinputValue,\n\t\tinputDisabled,\n\t\thelperText,\n\t\tsx,\n\t\tariaLabel,\n\t}: {\n\t\tplaceholder?: string;\n\t\terror?: boolean;\n\t\tinputValue?: string;\n\t\tinputDisabled?: boolean;\n\t\thelperText?: string;\n\t\tsx?: SxProps;\n\t\tariaLabel?: string;\n\t} ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ inputDisabled ?? disabled }\n\t\t\t\t\tvalue={ inputValue ?? value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\terror={ error }\n\t\t\t\t\thelperText={ helperText }\n\t\t\t\t\tsx={ sx }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\tplaceholder?: string;\n\tariaLabel?: string;\n};\n\nexport const TextAreaControl = createControl( ( { placeholder, ariaLabel }: Props ) => {\n\tconst { value, setValue, disabled } = useBoundProp( stringPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.value );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tmultiline\n\t\t\t\tfullWidth\n\t\t\t\tminRows={ 5 }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tvalue={ value ?? '' }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { type RefObject, useEffect, useMemo } from 'react';\nimport { type PropType, sizePropTypeUtil, type SizePropValue } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { SizeInput } from '../components/size-control/size-input';\nimport { TextFieldPopover } from '../components/text-field-popover';\nimport { createControl } from '../create-control';\nimport { useSizeExtendedOptions } from '../hooks/use-size-extended-options';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport {\n\ttype AngleUnit,\n\tangleUnits,\n\tDEFAULT_SIZE,\n\tDEFAULT_UNIT,\n\ttype ExtendedOption,\n\tisUnitExtendedOption,\n\ttype LengthUnit,\n\tlengthUnits,\n\ttype TimeUnit,\n\ttimeUnits,\n\ttype Unit,\n} from '../utils/size-control';\n\ntype SizeValue = SizePropValue[ 'value' ];\n\ntype SizeVariant = 'length' | 'angle' | 'time';\n\ntype UnitProps< T extends readonly Unit[] > = {\n\tunits?: T;\n\tdefaultUnit?: T[ number ];\n};\n\ntype BaseSizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\textendedOptions?: ExtendedOption[];\n\tdisableCustom?: boolean;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tmin?: number;\n\tenablePropTypeUnits?: boolean;\n\tid?: string;\n\tariaLabel?: string;\n};\n\ntype LengthSizeControlProps = BaseSizeControlProps &\n\tUnitProps< LengthUnit[] > & {\n\t\tvariant: 'length';\n\t};\n\ntype AngleSizeControlProps = BaseSizeControlProps &\n\tUnitProps< AngleUnit[] > & {\n\t\tvariant: 'angle';\n\t};\n\ntype TimeSizeControlProps = BaseSizeControlProps &\n\tUnitProps< TimeUnit[] > & {\n\t\tvariant: 'time';\n\t};\n\nexport type SizeControlProps = LengthSizeControlProps | AngleSizeControlProps | TimeSizeControlProps;\n\ntype State = {\n\tnumeric: number;\n\tcustom: string;\n\tunit: Unit | ExtendedOption;\n};\n\nconst defaultSelectedUnit: Record< SizeControlProps[ 'variant' ], Unit > = {\n\tlength: 'px',\n\tangle: 'deg',\n\ttime: 'ms',\n} as const;\n\nconst defaultUnits: Record< SizeControlProps[ 'variant' ], Unit[] > = {\n\tlength: [ ...lengthUnits ] as LengthUnit[],\n\tangle: [ ...angleUnits ] as AngleUnit[],\n\ttime: [ ...timeUnits ] as TimeUnit[],\n} as const;\n\nexport const CUSTOM_SIZE_LABEL = 'fx';\n\nexport const SizeControl = createControl(\n\t( {\n\t\tvariant = 'length' as SizeControlProps[ 'variant' ],\n\t\tdefaultUnit,\n\t\tunits,\n\t\tplaceholder,\n\t\tstartIcon,\n\t\tanchorRef,\n\t\textendedOptions,\n\t\tdisableCustom,\n\t\tmin = 0,\n\t\tenablePropTypeUnits = false,\n\t\tid,\n\t\tariaLabel,\n\t}: Omit< SizeControlProps, 'variant' > & { variant?: SizeVariant } ) => {\n\t\tconst {\n\t\t\tvalue: sizeValue,\n\t\t\tsetValue: setSizeValue,\n\t\t\tdisabled,\n\t\t\trestoreValue,\n\t\t\tplaceholder: externalPlaceholder,\n\t\t\tpropType,\n\t\t} = useBoundProp( sizePropTypeUtil );\n\n\t\tconst actualDefaultUnit = defaultUnit ?? externalPlaceholder?.unit ?? defaultSelectedUnit[ variant ];\n\t\tconst activeBreakpoint = useActiveBreakpoint();\n\t\tconst actualExtendedOptions = useSizeExtendedOptions( extendedOptions || [], disableCustom ?? false );\n\t\tconst actualUnits = resolveUnits( propType, enablePropTypeUnits, variant, units, actualExtendedOptions );\n\n\t\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\t\tconst memorizedExternalState = useMemo(\n\t\t\t() => createStateFromSizeProp( sizeValue, actualDefaultUnit ),\n\t\t\t[ sizeValue, actualDefaultUnit ]\n\t\t);\n\n\t\tconst [ state, setState ] = useSyncExternalState( {\n\t\t\texternal: memorizedExternalState,\n\t\t\tsetExternal: ( newState: State | null, options, meta ) =>\n\t\t\t\tsetSizeValue( extractValueFromState( newState ), options, meta ),\n\t\t\tpersistWhen: ( newState ) => !! extractValueFromState( newState ),\n\t\t\tfallback: ( newState ) => ( {\n\t\t\t\tunit: newState?.unit ?? actualDefaultUnit,\n\t\t\t\tnumeric: newState?.numeric ?? DEFAULT_SIZE,\n\t\t\t\tcustom: newState?.custom ?? '',\n\t\t\t} ),\n\t\t} );\n\n\t\tconst { size: controlSize = DEFAULT_SIZE, unit: controlUnit = actualDefaultUnit } =\n\t\t\textractValueFromState( state, true ) || {};\n\n\t\tconst handleUnitChange = ( newUnit: Unit | ExtendedOption ) => {\n\t\t\tif ( newUnit === 'custom' ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\n\t\t\tsetState( ( prev ) => ( { ...prev, unit: newUnit } ) );\n\t\t};\n\n\t\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst size = event.target.value;\n\t\t\tconst isInputValid = event.target.validity.valid;\n\n\t\t\tif ( controlUnit === 'auto' ) {\n\t\t\t\tsetState( ( prev ) => ( { ...prev, unit: controlUnit } ) );\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetState(\n\t\t\t\t( prev ) => ( {\n\t\t\t\t\t...prev,\n\t\t\t\t\t[ controlUnit === 'custom' ? 'custom' : 'numeric' ]: formatSize( size, controlUnit ),\n\t\t\t\t\tunit: controlUnit,\n\t\t\t\t} ),\n\t\t\t\tundefined,\n\t\t\t\t{ validation: () => isInputValid }\n\t\t\t);\n\t\t};\n\n\t\tconst onInputClick = ( event: React.MouseEvent ) => {\n\t\t\tif ( ( event.target as HTMLElement ).closest( 'input' ) && 'custom' === state.unit ) {\n\t\t\t\tpopupState.open( anchorRef?.current );\n\t\t\t}\n\t\t};\n\n\t\tconst maybeClosePopup = React.useCallback( () => {\n\t\t\tif ( popupState && popupState.isOpen ) {\n\t\t\t\tpopupState.close();\n\t\t\t}\n\t\t}, [ popupState ] );\n\n\t\tuseEffect( () => {\n\t\t\tmaybeClosePopup();\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ activeBreakpoint ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<SizeInput\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tsize={ controlSize }\n\t\t\t\t\tunit={ controlUnit }\n\t\t\t\t\tunits={ [ ...actualUnits ] }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\thandleSizeChange={ handleSizeChange }\n\t\t\t\t\thandleUnitChange={ handleUnitChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tonClick={ onInputClick }\n\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\tmin={ min }\n\t\t\t\t\tid={ id }\n\t\t\t\t\tariaLabel={ ariaLabel }\n\t\t\t\t/>\n\t\t\t\t{ anchorRef?.current && popupState.isOpen && (\n\t\t\t\t\t<TextFieldPopover\n\t\t\t\t\t\tpopupState={ popupState }\n\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\trestoreValue={ restoreValue }\n\t\t\t\t\t\tvalue={ controlSize as string }\n\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n\nfunction resolveUnits(\n\tpropType: PropType,\n\tenablePropTypeUnits: boolean,\n\tvariant: SizeVariant,\n\texternalUnits?: Unit[],\n\tactualExtendedOptions?: ExtendedOption[]\n) {\n\tconst fallback = [ ...defaultUnits[ variant ] ];\n\n\tif ( ! enablePropTypeUnits ) {\n\t\treturn [ ...( externalUnits ?? fallback ), ...( actualExtendedOptions || [] ) ];\n\t}\n\n\treturn ( propType.settings?.available_units as Unit[] ) ?? fallback;\n}\n\nfunction formatSize< TSize extends string | number >( size: TSize, unit: Unit | ExtendedOption ): TSize {\n\tif ( isUnitExtendedOption( unit ) ) {\n\t\treturn unit === 'auto' ? ( '' as TSize ) : ( String( size ?? '' ) as TSize );\n\t}\n\n\treturn size || size === 0 ? ( Number( size ) as TSize ) : ( NaN as TSize );\n}\n\nfunction createStateFromSizeProp(\n\tsizeValue: SizeValue | null,\n\tdefaultUnit: Unit | ExtendedOption,\n\tdefaultSize: string | number = '',\n\tcustomState: string = ''\n): State {\n\tconst unit = sizeValue?.unit ?? defaultUnit;\n\tconst size = sizeValue?.size ?? defaultSize;\n\n\treturn {\n\t\tnumeric:\n\t\t\t! isUnitExtendedOption( unit ) && ! isNaN( Number( size ) ) && ( size || size === 0 )\n\t\t\t\t? Number( size )\n\t\t\t\t: DEFAULT_SIZE,\n\t\tcustom: unit === 'custom' ? String( size ) : customState,\n\t\tunit,\n\t};\n}\n\nfunction extractValueFromState( state: State | null, allowEmpty: boolean = false ): SizeValue | null {\n\tif ( ! state ) {\n\t\treturn null;\n\t}\n\n\tif ( ! state?.unit ) {\n\t\treturn { size: DEFAULT_SIZE, unit: DEFAULT_UNIT };\n\t}\n\n\tconst { unit } = state;\n\n\tif ( unit === 'auto' ) {\n\t\treturn { size: '', unit };\n\t}\n\n\tif ( unit === 'custom' ) {\n\t\treturn { size: state.custom ?? '', unit: 'custom' };\n\t}\n\n\tconst numeric = state.numeric;\n\n\tif ( ! allowEmpty && ( numeric === undefined || numeric === null || Number.isNaN( numeric ) ) ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\tsize: numeric,\n\t\tunit,\n\t};\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { Box, InputAdornment, type PopupState } from '@elementor/ui';\n\nimport ControlActions from '../../control-actions/control-actions';\nimport { type ExtendedOption, isUnitExtendedOption, type Unit } from '../../utils/size-control';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../size-control/text-field-inner-selection';\n\nconst RESTRICTED_KEYBOARD_SHORTCUT_UNITS = [ 'auto' ];\n\ntype SizeInputProps = {\n\tunit: Unit | ExtendedOption;\n\tsize: number | string;\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits: ( Unit | ExtendedOption )[];\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonFocus?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonClick?: ( event: React.MouseEvent< HTMLInputElement > ) => void;\n\thandleUnitChange: ( unit: Unit | ExtendedOption ) => void;\n\thandleSizeChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tpopupState: PopupState;\n\tdisabled?: boolean;\n\tmin?: number;\n\tid?: string;\n\tariaLabel?: string;\n};\n\nexport const SizeInput = ( {\n\tunits,\n\thandleUnitChange,\n\thandleSizeChange,\n\tplaceholder,\n\tstartIcon,\n\tonBlur,\n\tonFocus,\n\tonClick,\n\tsize,\n\tunit,\n\tpopupState,\n\tdisabled,\n\tmin,\n\tid,\n\tariaLabel,\n}: SizeInputProps ) => {\n\tconst unitInputBufferRef = useRef( '' );\n\tconst inputType = isUnitExtendedOption( unit ) ? 'text' : 'number';\n\tconst inputValue = ! isUnitExtendedOption( unit ) && Number.isNaN( size ) ? '' : size ?? '';\n\n\tconst handleKeyUp = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\n\t\tif ( ! /^[a-zA-Z%]$/.test( key ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst newChar = key.toLowerCase();\n\t\tconst updatedBuffer = ( unitInputBufferRef.current + newChar ).slice( -3 );\n\t\tunitInputBufferRef.current = updatedBuffer;\n\n\t\tconst matchedUnit =\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.includes( updatedBuffer ) ) ||\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.startsWith( newChar ) ) ||\n\t\t\tunits.find( ( u ) => ! RESTRICTED_KEYBOARD_SHORTCUT_UNITS.includes( u ) && u.includes( newChar ) );\n\n\t\tif ( matchedUnit ) {\n\t\t\thandleUnitChange( matchedUnit );\n\t\t}\n\t};\n\n\tconst popupAttributes = {\n\t\t'aria-controls': popupState.isOpen ? popupState.popupId : undefined,\n\t\t'aria-haspopup': true,\n\t};\n\n\tconst menuItemsAttributes = units.includes( 'custom' )\n\t\t? {\n\t\t\t\tcustom: popupAttributes,\n\t\t }\n\t\t: undefined;\n\n\tconst alternativeOptionLabels = {\n\t\tcustom: <MathFunctionIcon fontSize=\"tiny\" />,\n\t};\n\n\tconst InputProps = {\n\t\t...popupAttributes,\n\t\treadOnly: isUnitExtendedOption( unit ),\n\t\tautoComplete: 'off',\n\t\tonClick,\n\t\tonFocus,\n\t\tstartAdornment: startIcon ? (\n\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t{ startIcon }\n\t\t\t</InputAdornment>\n\t\t) : undefined,\n\t\tendAdornment: (\n\t\t\t<SelectionEndAdornment\n\t\t\t\tdisabled={ disabled }\n\t\t\t\toptions={ units }\n\t\t\t\tonClick={ handleUnitChange }\n\t\t\t\tvalue={ unit }\n\t\t\t\talternativeOptionLabels={ alternativeOptionLabels }\n\t\t\t\tmenuItemsAttributes={ menuItemsAttributes }\n\t\t\t/>\n\t\t),\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Box>\n\t\t\t\t<TextFieldInnerSelection\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\ttype={ inputType }\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\tonKeyUp={ handleKeyUp }\n\t\t\t\t\tonBlur={ onBlur }\n\t\t\t\t\tInputProps={ InputProps }\n\t\t\t\t\tinputProps={ { min, step: 'any', 'aria-label': ariaLabel } }\n\t\t\t\t\tisPopoverOpen={ popupState.isOpen }\n\t\t\t\t\tid={ id }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t</ControlActions>\n\t);\n};\n","export const lengthUnits = [ 'px', '%', 'em', 'rem', 'vw', 'vh', 'ch' ] as const;\nexport const angleUnits = [ 'deg', 'rad', 'grad', 'turn' ] as const;\nexport const timeUnits = [ 's', 'ms' ] as const;\nconst defaultExtendedOptions = [ 'auto', 'custom' ] as const;\n\nexport const DEFAULT_UNIT = 'px';\nexport const DEFAULT_SIZE = NaN;\n\nexport type LengthUnit = ( typeof lengthUnits )[ number ];\nexport type AngleUnit = ( typeof angleUnits )[ number ];\nexport type TimeUnit = ( typeof timeUnits )[ number ];\nexport type ExtendedOption = ( typeof defaultExtendedOptions )[ number ];\n\nexport type Unit = LengthUnit | AngleUnit | TimeUnit;\n\nexport function isUnitExtendedOption( unit: Unit | ExtendedOption ): unit is ExtendedOption {\n\treturn defaultExtendedOptions.includes( unit as ExtendedOption );\n}\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { type PropValue, sizePropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport {\n\tbindMenu,\n\tbindTrigger,\n\tButton,\n\tInputAdornment,\n\tMenu,\n\tstyled,\n\ttype TextFieldProps,\n\tusePopupState,\n} from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { DEFAULT_UNIT } from '../../utils/size-control';\nimport { NumberInput } from '../number-input';\n\ntype TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tonBlur?: ( event: React.FocusEvent< HTMLInputElement > ) => void;\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tonKeyUp?: ( event: React.KeyboardEvent< HTMLInputElement > ) => void;\n\tInputProps: TextFieldProps[ 'InputProps' ] & {\n\t\tendAdornment: React.JSX.Element;\n\t};\n\tinputProps?: TextFieldProps[ 'inputProps' ];\n\tdisabled?: boolean;\n\tisPopoverOpen?: boolean;\n\tid?: string;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t(\n\t\t{\n\t\t\tplaceholder,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tonBlur,\n\t\t\tonKeyDown,\n\t\t\tonKeyUp,\n\t\t\tInputProps,\n\t\t\tinputProps,\n\t\t\tdisabled,\n\t\t\tisPopoverOpen,\n\t\t\tid,\n\t\t}: TextFieldInnerSelectionProps,\n\t\tref\n\t) => {\n\t\tconst { placeholder: boundPropPlaceholder } = useBoundProp( sizePropTypeUtil );\n\n\t\tconst getCursorStyle = () => ( {\n\t\t\tinput: { cursor: InputProps.readOnly ? 'default !important' : undefined },\n\t\t} );\n\n\t\treturn (\n\t\t\t<NumberInput\n\t\t\t\tref={ ref }\n\t\t\t\tsx={ getCursorStyle() }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tfullWidth\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonInput={ onChange }\n\t\t\t\tonKeyDown={ onKeyDown }\n\t\t\t\tonKeyUp={ onKeyUp }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tonBlur={ onBlur }\n\t\t\t\tfocused={ isPopoverOpen ? true : undefined }\n\t\t\t\tplaceholder={ placeholder ?? ( String( boundPropPlaceholder?.size ?? '' ) || undefined ) }\n\t\t\t\tInputProps={ InputProps }\n\t\t\t\tinputProps={ inputProps }\n\t\t\t\tid={ id }\n\t\t\t/>\n\t\t);\n\t}\n);\n\ntype SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n\talternativeOptionLabels?: { [ key in T ]?: React.ReactNode };\n\tmenuItemsAttributes?: { [ key in T ]?: Record< string, unknown > };\n\tdisabled?: boolean;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\talternativeOptionLabels = {} as Record< T, React.ReactNode >,\n\tonClick,\n\tvalue,\n\tmenuItemsAttributes = {},\n\tdisabled,\n}: SelectionEndAdornmentProps< T > ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\t\tpopupState.close();\n\t};\n\n\tconst { placeholder, showPrimaryColor } = useUnitPlaceholder( value );\n\tconst itemStyles = {\n\t\tdisplay: 'flex',\n\t\tflexDirection: 'column',\n\t\tjustifyContent: 'center',\n\t};\n\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<StyledButton\n\t\t\t\tisPrimaryColor={ showPrimaryColor }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ placeholder ?? alternativeOptionLabels[ value ] ?? value }\n\t\t\t</StyledButton>\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuListItem\n\t\t\t\t\t\tkey={ option }\n\t\t\t\t\t\tonClick={ () => handleMenuItemClick( index ) }\n\t\t\t\t\t\t{ ...menuItemsAttributes?.[ option ] }\n\t\t\t\t\t\tprimaryTypographyProps={ {\n\t\t\t\t\t\t\tvariant: 'caption',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t...itemStyles,\n\t\t\t\t\t\t\t\tlineHeight: '1',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tmenuItemTextProps={ {\n\t\t\t\t\t\t\tsx: itemStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ alternativeOptionLabels[ option ] ?? option.toUpperCase() }\n\t\t\t\t\t</MenuListItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\n};\n\nfunction useUnitPlaceholder( value: string ) {\n\tconst { value: externalValue, placeholder } = useBoundProp( sizePropTypeUtil );\n\tconst size = externalValue?.size;\n\tconst unit = externalValue?.unit;\n\n\tconst isCustomUnitWithSize = value === 'custom' && Boolean( size );\n\tconst isAutoUnit = value === 'auto';\n\tconst showPrimaryColor = isAutoUnit || isCustomUnitWithSize || Boolean( size );\n\n\tif ( ! placeholder ) {\n\t\treturn {\n\t\t\tplaceholder: null,\n\t\t\tshowPrimaryColor,\n\t\t};\n\t}\n\n\tconst isMissingUnit = ! unit;\n\tconst showPlaceholder = isMissingUnit && value === DEFAULT_UNIT;\n\n\treturn {\n\t\tplaceholder: showPlaceholder ? placeholder.unit : undefined,\n\t\tshowPrimaryColor,\n\t};\n}\n\nconst StyledButton = styled( Button, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPrimaryColor',\n} )( ( { isPrimaryColor, theme } ) => ( {\n\tcolor: isPrimaryColor ? theme.palette.text.primary : theme.palette.text.tertiary,\n\tfont: 'inherit',\n\tminWidth: 'initial',\n\ttextTransform: 'uppercase',\n} ) );\n","import * as React from 'react';\nimport { forwardRef, useState } from 'react';\nimport { TextField, type TextFieldProps } from '@elementor/ui';\n\nconst RESTRICTED_INPUT_KEYS = [ 'e', 'E', '+' ];\n\nexport const NumberInput = forwardRef( ( props: TextFieldProps, ref ) => {\n\tconst [ key, setKey ] = useState< number >( 0 );\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent< HTMLInputElement > ) => {\n\t\tblockRestrictedKeys( event, props.inputProps?.min );\n\n\t\tprops.onKeyDown?.( event );\n\t};\n\n\tconst handleBlur = ( event: React.FocusEvent< HTMLInputElement > ) => {\n\t\tprops.onBlur?.( event );\n\n\t\tconst { valid } = event.target.validity;\n\n\t\t// HTML number input quirk: invalid input (e.g. \"-9-\") returns value=\"\" but displays \"-9-\" to user,\n\t\t// so when we revert to last valid value we must re-mount the component to actually display it.\n\t\tif ( ! valid ) {\n\t\t\tsetKey( ( prev ) => prev + 1 );\n\t\t}\n\t};\n\n\treturn <TextField { ...props } ref={ ref } key={ key } onKeyDown={ handleKeyDown } onBlur={ handleBlur } />;\n} );\n\nfunction blockRestrictedKeys( event: React.KeyboardEvent< HTMLInputElement >, min: number ) {\n\tconst restrictedInputKeys = [ ...RESTRICTED_INPUT_KEYS ];\n\n\tif ( min >= 0 ) {\n\t\trestrictedInputKeys.push( '-' );\n\t}\n\n\tif ( restrictedInputKeys.includes( event.key ) ) {\n\t\tevent.preventDefault();\n\t}\n}\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { MathFunctionIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n};\n\nconst SIZE = 'tiny';\n\nexport const TextFieldPopover = ( props: Props ) => {\n\tconst { popupState, restoreValue, anchorRef, value, onChange } = props;\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => {\n\t\t\t\tif ( inputRef.current ) {\n\t\t\t\t\tinputRef.current.focus();\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\tborderRadius: 2,\n\t\t\t\t\t\twidth: anchorRef.current?.offsetWidth + 'px',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'CSS function', 'elementor' ) }\n\t\t\t\tonClose={ handleClose }\n\t\t\t\ticon={ <MathFunctionIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<TextField\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tfullWidth\n\t\t\t\tinputProps={ {\n\t\t\t\t\tref: inputRef,\n\t\t\t\t} }\n\t\t\t\tsx={ { pt: 0, pr: 1.5, pb: 1.5, pl: 1.5 } }\n\t\t\t/>\n\t\t</Popover>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type ExtendedOption } from '@elementor/editor-controls';\n\nexport function useSizeExtendedOptions( options: ExtendedOption[], disableCustom: boolean ) {\n\treturn useMemo( () => {\n\t\tconst extendedOptions = [ ...options ];\n\n\t\tif ( ! disableCustom && ! extendedOptions.includes( 'custom' ) ) {\n\t\t\textendedOptions.push( 'custom' );\n\t\t} else if ( options.includes( 'custom' ) ) {\n\t\t\textendedOptions.splice( extendedOptions.indexOf( 'custom' ), 1 );\n\t\t}\n\n\t\treturn extendedOptions;\n\t}, [ options, disableCustom ] );\n}\n","import { useEffect, useState } from 'react';\nimport { type CreateOptions } from '@elementor/editor-props';\n\nimport { type SetValueMeta } from '../bound-prop-context';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | null;\n\tsetExternal: ( value: TValue | null, options?: CreateOptions, meta?: SetValueMeta ) => void;\n\tpersistWhen: ( value: TValue | null ) => boolean;\n\tfallback: ( value: TValue | null ) => TValue;\n};\n\nexport const useSyncExternalState = < TValue, >( {\n\texternal,\n\tsetExternal,\n\tpersistWhen,\n\tfallback,\n}: UseInternalStateOptions< TValue > ) => {\n\tfunction toExternal( internalValue: TValue | null ) {\n\t\tif ( persistWhen( internalValue ) ) {\n\t\t\treturn internalValue;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction toInternal( externalValue: TValue | null, internalValue: TValue | null ) {\n\t\tif ( ! externalValue ) {\n\t\t\treturn fallback( internalValue );\n\t\t}\n\n\t\treturn externalValue;\n\t}\n\n\tconst [ internal, setInternal ] = useState< TValue >( toInternal( external, null ) );\n\n\tuseEffect( () => {\n\t\tsetInternal( ( prevInternal ) => toInternal( external, prevInternal ) );\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ external ] );\n\n\ttype SetterFunc = ( value: TValue ) => TValue;\n\n\tconst setInternalValue = ( setter: SetterFunc | TValue, options?: CreateOptions, meta?: SetValueMeta ) => {\n\t\tconst setterFn = ( typeof setter === 'function' ? setter : () => setter ) as SetterFunc;\n\t\tconst updated = setterFn( internal );\n\n\t\tsetInternal( updated );\n\t\tsetExternal( toExternal( updated ), options, meta );\n\t};\n\n\treturn [ internal, setInternalValue ] as const;\n};\n","import * as React from 'react';\nimport { forwardRef, useRef } from 'react';\nimport { strokePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SectionContent } from '../components/section-content';\nimport { createControl } from '../create-control';\nimport { type LengthUnit } from '../utils/size-control';\nimport { ColorControl } from './color-control';\nimport { SizeControl } from './size-control';\n\ntype StrokeProps = {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n};\n\nconst units: LengthUnit[] = [ 'px', 'em', 'rem' ];\n\nexport const StrokeControl = createControl( () => {\n\tconst propContext = useBoundProp( strokePropTypeUtil );\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<SectionContent>\n\t\t\t\t<Control bind=\"width\" label={ __( 'Stroke width', 'elementor' ) } ref={ rowRef }>\n\t\t\t\t\t<SizeControl units={ units } anchorRef={ rowRef } />\n\t\t\t\t</Control>\n\t\t\t\t<Control bind=\"color\" label={ __( 'Stroke color', 'elementor' ) }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Control>\n\t\t\t</SectionContent>\n\t\t</PropProvider>\n\t);\n} );\n\nconst Control = forwardRef( ( { bind, label, children }: StrokeProps, ref ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ ref }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n) );\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\ntype SectionContentProps = PropsWithChildren< {\n\tgap?: number;\n\tsx?: {\n\t\tpt?: number;\n\t};\n} >;\n\nexport const SectionContent: FC< SectionContentProps > = ( { gap = 0.5, sx, children } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\nimport { colorPropTypeUtil, type PropTypeUtil } from '@elementor/editor-props';\nimport { UnstableColorField, type UnstableColorFieldProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = Partial< Omit< UnstableColorFieldProps, 'value' | 'onChange' > > & {\n\tpropTypeUtil?: PropTypeUtil< string, string >;\n\tanchorEl?: HTMLElement | null;\n\tid?: string;\n};\n\nexport const ColorControl = createControl(\n\t( { propTypeUtil = colorPropTypeUtil, anchorEl, slotProps = {}, id, ...props }: Props ) => {\n\t\tconst { value, setValue, placeholder: boundPropPlaceholder, disabled } = useBoundProp( propTypeUtil );\n\n\t\tconst placeholder = props.placeholder ?? boundPropPlaceholder;\n\n\t\tconst handleChange = ( selectedColor: string ) => {\n\t\t\tsetValue( selectedColor || null );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableColorField\n\t\t\t\t\tid={ id }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tplaceholder={ placeholder ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t...slotProps,\n\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\tanchorEl,\n\t\t\t\t\t\t\tanchorOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttransformOrigin: {\n\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tslotProps: {\n\t\t\t\t\t\t\t\tcolorIndicator: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcolorBox: {\n\t\t\t\t\t\t\t\t\tvalue: value ?? placeholder ?? '',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { boxShadowPropTypeUtil, shadowPropTypeUtil, type ShadowPropValue } from '@elementor/editor-props';\nimport { FormLabel, Grid, styled, type SxProps, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../components/control-repeater';\nimport { DisableItemAction } from '../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../components/control-repeater/actions/remove-item-action';\nimport { useRepeaterContext } from '../components/control-repeater/context/repeater-context';\nimport { EditItemPopover } from '../components/control-repeater/items/edit-item-popover';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { RepeaterHeader } from '../components/repeater/repeater-header';\nimport { createControl } from '../create-control';\nimport { ColorControl } from './color-control';\nimport { SelectControl } from './select-control';\nimport { CUSTOM_SIZE_LABEL, SizeControl } from './size-control';\n\nexport const BoxShadowRepeaterControl = createControl( () => {\n\tconst { propType, value, setValue, disabled } = useBoundProp( boxShadowPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue } isDisabled={ () => disabled }>\n\t\t\t<ControlRepeater initial={ initialShadow } propTypeUtil={ boxShadowPropTypeUtil }>\n\t\t\t\t<RepeaterHeader label={ __( 'Box shadow', 'elementor' ) }>\n\t\t\t\t\t<TooltipAddItemAction newItemIndex={ 0 } disabled={ disabled } ariaLabel={ 'Box shadow' } />\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<Content />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\theight: '1rem',\n\twidth: '1rem',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color?.value } />\n);\n\nconst Content = () => {\n\tconst context = useBoundProp( shadowPropTypeUtil );\n\tconst rowRef: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\tconst { rowRef: anchorEl } = useRepeaterContext();\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Control bind=\"color\" label={ __( 'Color', 'elementor' ) }>\n\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"position\" label={ __( 'Position', 'elementor' ) } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t\t{ label: __( 'Inset', 'elementor' ), value: 'inset' },\n\t\t\t\t\t\t\t\t{ label: __( 'Outset', 'elementor' ), value: null },\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 0 ] }>\n\t\t\t\t\t<Control bind=\"hOffset\" label={ __( 'Horizontal', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"vOffset\" label={ __( 'Vertical', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 0 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t\t<PopoverGridContainer ref={ rowRef[ 1 ] }>\n\t\t\t\t\t<Control bind=\"blur\" label={ __( 'Blur', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t\t<Control bind=\"spread\" label={ __( 'Spread', 'elementor' ) }>\n\t\t\t\t\t\t<SizeControl anchorRef={ rowRef[ 1 ] } />\n\t\t\t\t\t</Control>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PopoverContent>\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tlabel,\n\tbind,\n\tchildren,\n\tsx,\n}: {\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tsx?: SxProps< Theme >;\n} ) => (\n\t<PropKeyProvider bind={ bind }>\n\t\t<Grid item xs={ 6 } sx={ sx }>\n\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<FormLabel size=\"tiny\">{ label }</FormLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</PropKeyProvider>\n);\n\nconst ItemLabel = ( { value }: { value: ShadowPropValue } ) => {\n\tconst { position, hOffset, vOffset, blur, spread } = value.value;\n\n\tconst { size: blurSize = '', unit: blurUnit = '' } = blur?.value || {};\n\tconst { size: spreadSize = '', unit: spreadUnit = '' } = spread?.value || {};\n\tconst { size: hOffsetSize = 'unset', unit: hOffsetUnit = '' } = hOffset?.value || {};\n\tconst { size: vOffsetSize = 'unset', unit: vOffsetUnit = '' } = vOffset?.value || {};\n\tconst positionLabel = position?.value || 'outset';\n\n\tconst sizes = [\n\t\t[ hOffsetSize, hOffsetUnit ],\n\t\t[ vOffsetSize, vOffsetUnit ],\n\t\t[ blurSize, blurUnit ],\n\t\t[ spreadSize, spreadUnit ],\n\t]\n\t\t.map( ( [ size, unit ] ) => {\n\t\t\tif ( unit !== 'custom' ) {\n\t\t\t\treturn size + unit;\n\t\t\t}\n\n\t\t\treturn ! size ? CUSTOM_SIZE_LABEL : size;\n\t\t} )\n\t\t.join( ' ' );\n\n\treturn (\n\t\t<span style={ { textTransform: 'capitalize' } }>\n\t\t\t{ positionLabel }: { sizes }\n\t\t</span>\n\t);\n};\n\nconst initialShadow: ShadowPropValue = {\n\t$$type: 'shadow',\n\tvalue: {\n\t\thOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tvOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tblur: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 10 },\n\t\t},\n\t\tspread: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: 'rgba(0, 0, 0, 1)',\n\t\t},\n\t\tposition: null,\n\t},\n};\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { Box, IconButton, Infotip } from '@elementor/ui';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport type TooltipAddItemActionProps = {\n\tdisabled?: boolean;\n\tenableTooltip?: boolean;\n\ttooltipContent?: React.ReactNode;\n\tnewItemIndex?: number;\n\tariaLabel?: string;\n};\n\nexport const TooltipAddItemAction = ( {\n\tdisabled = false,\n\tenableTooltip = false,\n\ttooltipContent = null,\n\tnewItemIndex,\n\tariaLabel,\n}: TooltipAddItemActionProps ) => {\n\tconst { addItem } = useRepeaterContext();\n\n\tconst onClick = ( ev: React.MouseEvent ) => addItem( ev, { index: newItemIndex } );\n\n\treturn (\n\t\t<ConditionalToolTip content={ tooltipContent } enable={ enableTooltip }>\n\t\t\t<Box component=\"span\" sx={ { cursor: disabled ? 'not-allowed' : 'pointer' } }>\n\t\t\t\t<IconButton\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\t/* Translators: %s: Aria label. */\n\t\t\t\t\taria-label={ sprintf( __( 'Add %s item', 'elementor' ), ariaLabel?.toLowerCase() ) }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Box>\n\t\t</ConditionalToolTip>\n\t);\n};\n\nconst ConditionalToolTip = ( {\n\tchildren,\n\tenable,\n\tcontent,\n}: React.PropsWithChildren< {\n\tcontent?: React.ReactNode;\n\tenable: boolean;\n} > ) =>\n\tenable && content ? (\n\t\t<Infotip placement=\"right\" color=\"secondary\" content={ content }>\n\t\t\t{ children }\n\t\t</Infotip>\n\t) : (\n\t\tchildren\n\t);\n","import * as React from 'react';\nimport { createContext, useMemo, useState } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\nimport { type PopupState, usePopupState } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context/use-bound-prop';\nimport { useSyncExternalState } from '../../../hooks/use-sync-external-state';\nimport { eventBus } from '../../../services/event-bus';\nimport { type Item, type RepeatablePropValue } from '../types';\nimport { ItemContext } from './item-context';\n\ntype SetterFn< T > = ( prevItems: T ) => T;\n\ntype AddItem< T > = { item?: T; index?: number };\n\ntype ItemWithKey< T > = { key: number; item: T };\n\ntype RepeaterContextType< T extends RepeatablePropValue > = {\n\tisOpen: boolean;\n\topenItemIndex: number;\n\tsetOpenItemIndex: ( key: number ) => void;\n\titems: ItemWithKey< Item< T > >[];\n\tsetItems: ( items: ItemWithKey< T >[] ) => void;\n\tpopoverState: PopupState;\n\tinitial: T;\n\taddItem: ( ev: React.MouseEvent, config?: AddItem< T > ) => void;\n\tupdateItem: ( item: T, index: number ) => void;\n\tremoveItem: ( index: number ) => void;\n\trowRef: HTMLElement | null;\n\tsetRowRef: ( ref: HTMLElement | null | SetterFn< HTMLElement | null > ) => void;\n\tisItemDisabled: ( index: number ) => boolean;\n};\n\nconst RepeaterContext = createContext< RepeaterContextType< RepeatablePropValue > | null >( null );\n\nexport const EMPTY_OPEN_ITEM = -1;\n\nexport const useRepeaterContext = () => {\n\tconst context = React.useContext( RepeaterContext );\n\tconst itemContext = React.useContext( ItemContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeaterContext must be used within a RepeaterContextProvider' );\n\t}\n\n\treturn { ...context, ...itemContext };\n};\n\nexport const RepeaterContextProvider = < T extends RepeatablePropValue = RepeatablePropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisItemDisabled = () => false,\n}: React.PropsWithChildren< {\n\tinitial: T;\n\tpropTypeUtil: PropTypeUtil< string, T[] >;\n\tisSortable?: boolean;\n\tisItemDisabled?: ( item: Item< T > ) => boolean;\n} > ) => {\n\tconst { value: repeaterValues, setValue: setRepeaterValues } = useBoundProp( propTypeUtil );\n\n\tconst [ items, setItems ] = useSyncExternalState( {\n\t\texternal: repeaterValues,\n\t\tfallback: () => [] as T[],\n\t\tsetExternal: setRepeaterValues,\n\t\tpersistWhen: () => true,\n\t} );\n\n\tconst [ uniqueKeys, setUniqueKeys ] = useState( () => {\n\t\treturn items?.map( ( _, index ) => index ) ?? [];\n\t} );\n\n\tconst itemsWithKeys = useMemo(\n\t\t() =>\n\t\t\tuniqueKeys\n\t\t\t\t.map( ( key, index ) => ( {\n\t\t\t\t\tkey,\n\t\t\t\t\titem: items[ index ],\n\t\t\t\t} ) )\n\t\t\t\t.filter( ( { item } ) => item !== undefined ),\n\t\t[ uniqueKeys, items ]\n\t);\n\n\tconst handleSetItems = ( newItemsWithKeys: ItemWithKey< T >[] ) => {\n\t\tsetItems( newItemsWithKeys.map( ( { item } ) => item ) );\n\t};\n\n\tconst [ openItemIndex, setOpenItemIndex ] = useState( EMPTY_OPEN_ITEM );\n\tconst [ rowRef, setRowRef ] = useState< HTMLElement | null >( null );\n\n\tconst isOpen = openItemIndex !== EMPTY_OPEN_ITEM;\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst addItem = ( ev: React.MouseEvent, config?: AddItem< T > ) => {\n\t\tconst item = config?.item ?? { ...initial };\n\t\tconst newIndex = config?.index ?? items.length;\n\t\tconst newKey = generateUniqueKey();\n\t\tconst newItems = [ ...items ];\n\n\t\tnewItems.splice( newIndex, 0, item );\n\t\tsetItems( newItems );\n\n\t\tsetUniqueKeys( [ ...uniqueKeys.slice( 0, newIndex ), newKey, ...uniqueKeys.slice( newIndex ) ] );\n\n\t\tsetOpenItemIndex( newIndex );\n\t\tpopoverState.open( rowRef ?? ev );\n\n\t\teventBus.emit( `${ propTypeUtil.key }-item-added`, {\n\t\t\titemValue: initial.value,\n\t\t} );\n\t};\n\n\tconst removeItem = ( index: number ) => {\n\t\tconst itemToRemove = items[ index ];\n\n\t\tsetItems( items.filter( ( _, pos ) => pos !== index ) );\n\t\tsetUniqueKeys( uniqueKeys.filter( ( _, pos ) => pos !== index ) );\n\n\t\teventBus.emit( `${ propTypeUtil.key }-item-removed`, {\n\t\t\titemValue: itemToRemove?.value,\n\t\t} );\n\t};\n\n\tconst updateItem = ( updatedItem: T, index: number ) => {\n\t\tconst newItems = [ ...items.slice( 0, index ), updatedItem, ...items.slice( index + 1 ) ];\n\t\tsetItems( newItems );\n\t};\n\n\treturn (\n\t\t<RepeaterContext.Provider\n\t\t\tvalue={ {\n\t\t\t\tisOpen,\n\t\t\t\topenItemIndex,\n\t\t\t\tsetOpenItemIndex,\n\t\t\t\titems: ( itemsWithKeys ?? [] ) as RepeaterContextType< T >[ 'items' ],\n\t\t\t\tsetItems: handleSetItems as RepeaterContextType< RepeatablePropValue >[ 'setItems' ],\n\t\t\t\tpopoverState,\n\t\t\t\tinitial,\n\t\t\t\tupdateItem: updateItem as RepeaterContextType< RepeatablePropValue >[ 'updateItem' ],\n\t\t\t\taddItem: addItem as RepeaterContextType< RepeatablePropValue >[ 'addItem' ],\n\t\t\t\tremoveItem,\n\t\t\t\trowRef,\n\t\t\t\tsetRowRef,\n\t\t\t\tisItemDisabled: ( index: number ) => isItemDisabled( itemsWithKeys[ index ].item ),\n\t\t\t} }\n\t\t>\n\t\t\t{ children }\n\t\t</RepeaterContext.Provider>\n\t);\n};\n\nconst generateUniqueKey = () => {\n\treturn Date.now() + Math.floor( Math.random() * 1000000 );\n};\n","class EventBus {\n\tprivate listeners = new Map< string, Set< ( data?: unknown ) => void > >();\n\n\tsubscribe( eventName: string, callback: ( data?: unknown ) => void ) {\n\t\tif ( ! this.listeners.has( eventName ) ) {\n\t\t\tthis.listeners.set( eventName, new Set() );\n\t\t}\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( eventListeners ) {\n\t\t\teventListeners.add( callback );\n\t\t}\n\t}\n\n\tunsubscribe( eventName: string, callback: ( data?: unknown ) => void ) {\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( ! eventListeners ) {\n\t\t\treturn;\n\t\t}\n\n\t\teventListeners.delete( callback );\n\t\tif ( eventListeners.size === 0 ) {\n\t\t\tthis.listeners.delete( eventName );\n\t\t}\n\t}\n\n\temit( eventName: string, data?: unknown ) {\n\t\tconst eventListeners = this.listeners.get( eventName );\n\t\tif ( eventListeners ) {\n\t\t\teventListeners.forEach( ( callback ) => callback( data ) );\n\t\t}\n\t}\n\n\tclearAll(): void {\n\t\tthis.listeners.clear();\n\t}\n}\n\nexport const eventBus = new EventBus();\n","import { createContext } from 'react';\n\nimport { type Item, type RepeatablePropValue } from '../types';\n\nexport const ItemContext = createContext< { index: number; value: Item< RepeatablePropValue > } >( {\n\tindex: -1,\n\tvalue: {} as Item< RepeatablePropValue >,\n} );\n","import * as React from 'react';\n\nimport { SortableItem, SortableProvider } from '../../repeater/sortable';\nimport { ItemContext } from '../context/item-context';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { type Item, type RepeatablePropValue } from '../types';\n\nexport const ItemsContainer = < T extends RepeatablePropValue >( {\n\tisSortable = true,\n\tchildren,\n}: React.PropsWithChildren< {\n\tisSortable?: boolean;\n} > ) => {\n\tconst { items, setItems } = useRepeaterContext();\n\tconst keys = items.map( ( { key } ) => key );\n\n\tif ( ! children ) {\n\t\treturn null;\n\t}\n\n\tconst onChangeOrder = ( newKeys: number[] ) => {\n\t\tsetItems(\n\t\t\tnewKeys.map( ( key ) => {\n\t\t\t\tconst index = items.findIndex( ( item ) => item.key === key );\n\n\t\t\t\treturn items[ index ];\n\t\t\t} )\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<SortableProvider value={ keys } onChange={ onChangeOrder }>\n\t\t\t\t{ keys.map( ( key: number, index: number ) => {\n\t\t\t\t\tconst value = items[ index ].item as Item< T >;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t<ItemContext.Provider value={ { index, value } }>{ children }</ItemContext.Provider>\n\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</SortableProvider>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tDivider,\n\tList,\n\tListItem,\n\tstyled,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemProps,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n\ttype UnstableSortableProviderProps,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const SortableProvider = < T extends string | number >( props: UnstableSortableProviderProps< T > ) => {\n\treturn (\n\t\t<List sx={ { p: 0, my: -0.5, mx: 0 } }>\n\t\t\t<UnstableSortableProvider restrictAxis disableDragOverlay={ false } variant={ 'static' } { ...props } />\n\t\t</List>\n\t);\n};\n\ntype SortableItemProps = {\n\tid: UnstableSortableItemProps[ 'id' ];\n\tchildren: React.ReactNode;\n\tdisabled?: boolean;\n};\n\nexport const SortableItem = ( { id, children, disabled }: SortableItemProps ): React.ReactNode => {\n\treturn (\n\t\t<UnstableSortableItem\n\t\t\tid={ id }\n\t\t\tdisabled={ disabled }\n\t\t\trender={ ( {\n\t\t\t\titemProps,\n\t\t\t\ttriggerProps,\n\t\t\t\titemStyle,\n\t\t\t\ttriggerStyle,\n\t\t\t\tshowDropIndication,\n\t\t\t\tdropIndicationStyle,\n\t\t\t}: UnstableSortableItemRenderProps ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StyledListItem { ...itemProps } style={ itemStyle } tabIndex={ -1 }>\n\t\t\t\t\t\t{ ! disabled && <SortableTrigger { ...triggerProps } style={ triggerStyle } /> }\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t{ showDropIndication && <StyledDivider style={ dropIndicationStyle } /> }\n\t\t\t\t\t</StyledListItem>\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst StyledListItem = styled( ListItem )`\n\tposition: relative;\n\tmargin-inline: 0px;\n\tpadding-inline: 0px;\n\tpadding-block: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\n\t& .class-item-sortable-trigger {\n\t\tcolor: ${ ( { theme } ) => theme.palette.action.active };\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tvisibility: hidden;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tpadding-inline-end: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\ttransform: translate( -75%, -50% );\n\t}\n\n\t&[aria-describedby=''] > .MuiTag-root {\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.background.paper };\n\t\tbox-shadow: ${ ( { theme } ) => theme.shadows[ 3 ] };\n\t}\n\n\t&:hover,\n\t&:focus-within {\n\t\t& .class-item-sortable-trigger {\n\t\t\tvisibility: visible;\n\t\t}\n\t}\n`;\n\nconst SortableTrigger = ( props: React.HTMLAttributes< HTMLDivElement > ) => (\n\t<div\n\t\t{ ...props }\n\t\trole=\"button\"\n\t\tclassName=\"class-item-sortable-trigger\"\n\t\ttabIndex={ 0 }\n\t\taria-label={ __( 'Drag item', 'elementor' ) }\n\t>\n\t\t<GripVerticalIcon fontSize=\"tiny\" />\n\t</div>\n);\n\nconst StyledDivider = styled( Divider )`\n\theight: 0px;\n\tborder: none;\n\toverflow: visible;\n\n\t&:after {\n\t\t--height: 2px;\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: var( --height );\n\t\tmargin-block: calc( -1 * var( --height ) / 2 );\n\t\tborder-radius: ${ ( { theme } ) => theme.spacing( 0.5 ) };\n\t\tbackground-color: ${ ( { theme } ) => theme.palette.text.primary };\n\t}\n`;\n","import * as React from 'react';\nimport { bindTrigger } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { RepeatableControlContext } from '../../../hooks/use-repeatable-control-context';\nimport { RepeaterTag } from '../../repeater/repeater-tag';\nimport { useRepeaterContext } from '../context/repeater-context';\nimport { RepeaterItemActionsSlot, RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../locations';\nimport { type ItemProps, type RepeatablePropValue } from '../types';\n\nexport const Item = < T extends RepeatablePropValue >( { Label, Icon, actions }: ItemProps< T > ) => {\n\tconst {\n\t\tpopoverState,\n\t\tsetRowRef,\n\t\topenItemIndex,\n\t\tsetOpenItemIndex,\n\t\tindex = -1,\n\t\tvalue,\n\t\tisItemDisabled,\n\t} = useRepeaterContext();\n\tconst repeatableContext = React.useContext( RepeatableControlContext );\n\tconst disableOpen = !! repeatableContext?.props?.readOnly;\n\tconst triggerProps = bindTrigger( popoverState );\n\n\tconst onClick = ( ev: React.MouseEvent ) => {\n\t\tif ( disableOpen || isItemDisabled( index ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttriggerProps.onClick( ev );\n\t\tsetOpenItemIndex( index );\n\t};\n\n\tconst setRef = ( ref: HTMLDivElement | null ) => {\n\t\tif ( ! ref || openItemIndex !== index || ref === popoverState.anchorEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetRowRef( ref );\n\t\tpopoverState.setAnchorEl( ref );\n\t};\n\n\treturn (\n\t\t<RepeaterTag\n\t\t\tref={ setRef }\n\t\t\tlabel={\n\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t<Label value={ value as T } />\n\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t}\n\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t{ ...triggerProps }\n\t\t\tonClick={ onClick }\n\t\t\tstartIcon={\n\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t<Icon value={ value as T } />\n\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t}\n\t\t\tsx={ {\n\t\t\t\tminHeight: ( theme ) => theme.spacing( 3.5 ),\n\t\t\t\t...( isItemDisabled( index ) && {\n\t\t\t\t\t'[role=\"button\"]': {\n\t\t\t\t\t\tcursor: 'not-allowed',\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t} }\n\t\t\tactions={\n\t\t\t\t<>\n\t\t\t\t\t<RepeaterItemActionsSlot index={ index ?? -1 } />\n\t\t\t\t\t{ actions }\n\t\t\t\t</>\n\t\t\t}\n\t\t/>\n\t);\n};\n","import { createContext, useContext } from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nimport type { Item, RepeatablePropValue } from '../components/control-repeater/types';\n\nexport type ChildControlConfig = {\n\tcomponent: React.ComponentType;\n\tprops?: Record< string, unknown >;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tpropTypeUtil: PropTypeUtil< string, any >;\n\tlabel?: string;\n\tisItemDisabled?: ( item: Item< RepeatablePropValue > ) => boolean;\n};\n\ntype RepeatableControlContextType = ChildControlConfig & {\n\tplaceholder: string;\n\tpatternLabel: string;\n};\n\nconst RepeatableControlContext = createContext< RepeatableControlContextType | undefined >( undefined );\n\nconst useRepeatableControlContext = () => {\n\tconst context = useContext( RepeatableControlContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useRepeatableControlContext must be used within RepeatableControl' );\n\t}\n\n\treturn context;\n};\n\nexport { RepeatableControlContext, useRepeatableControlContext };\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { UnstableTag, type UnstableTagProps } from '@elementor/ui';\n\nexport const RepeaterTag = forwardRef< HTMLDivElement, UnstableTagProps >( ( props, ref ) => {\n\treturn (\n\t\t<UnstableTag\n\t\t\tref={ ref }\n\t\t\tfullWidth\n\t\t\tshowActionsOnHover\n\t\t\tvariant=\"outlined\"\n\t\t\tsx={ { minHeight: ( theme ) => theme.spacing( 3.5 ) } }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n","import { type PropValue } from '@elementor/editor-props';\nimport { createLocation, createReplaceableLocation } from '@elementor/locations';\n\n// Repeaters\nexport const { Slot: RepeaterItemIconSlot, inject: injectIntoRepeaterItemIcon } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemLabelSlot, inject: injectIntoRepeaterItemLabel } = createReplaceableLocation< {\n\tvalue: PropValue;\n} >();\n\nexport const { Slot: RepeaterItemActionsSlot, inject: injectIntoRepeaterItemActions } = createLocation< {\n\tindex: number;\n} >();\n","import * as React from 'react';\nimport { type PropTypeUtil } from '@elementor/editor-props';\n\nimport { SectionContent } from '../section-content';\nimport { RepeaterContextProvider } from './context/repeater-context';\nimport { type Item, type RepeatablePropValue } from './types';\n\nexport const ControlRepeater = < T extends RepeatablePropValue >( {\n\tchildren,\n\tinitial,\n\tpropTypeUtil,\n\tisItemDisabled,\n}: React.PropsWithChildren< {\n\tinitial: T;\n\tpropTypeUtil: PropTypeUtil< string, T[] >;\n\tisItemDisabled?: ( item: Item< T > ) => boolean;\n} > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<RepeaterContextProvider\n\t\t\t\tinitial={ initial }\n\t\t\t\tpropTypeUtil={ propTypeUtil }\n\t\t\t\tisItemDisabled={ isItemDisabled }\n\t\t\t>\n\t\t\t\t{ children }\n\t\t\t</RepeaterContextProvider>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\nconst SIZE = 'tiny';\n\nexport const DisableItemAction = () => {\n\tconst { items, updateItem, index = -1 } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst propDisabled = items[ index ].item.disabled ?? false;\n\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\n\tconst onClick = () => {\n\t\tconst self = structuredClone( items[ index ].item );\n\n\t\tself.disabled = ! self.disabled;\n\n\t\tif ( ! self.disabled ) {\n\t\t\tdelete self.disabled;\n\t\t}\n\n\t\tupdateItem( self, index );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ toggleLabel }>\n\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { CopyIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const DuplicateItemAction = () => {\n\tconst { items, addItem, index = -1, isItemDisabled } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst item = items[ index ]?.item;\n\n\tconst onClick = ( ev: React.MouseEvent ) => {\n\t\tconst newItem = structuredClone( item );\n\n\t\taddItem( ev, { item: newItem, index: index + 1 } );\n\t};\n\n\treturn (\n\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\tonClick={ onClick }\n\t\t\t\taria-label={ duplicateLabel }\n\t\t\t\tdisabled={ isItemDisabled( index ) }\n\t\t\t>\n\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { XIcon } from '@elementor/icons';\nimport { IconButton, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useRepeaterContext } from '../context/repeater-context';\n\nconst SIZE = 'tiny';\n\nexport const RemoveItemAction = () => {\n\tconst { removeItem, index = -1 } = useRepeaterContext();\n\n\tif ( index === -1 ) {\n\t\treturn null;\n\t}\n\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\tconst onClick = () => removeItem( index );\n\treturn (\n\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } onClick={ onClick } aria-label={ removeLabel }>\n\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { bindPopover, Box } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { RepeaterPopover } from '../../repeater/repeater-popover';\nimport { EMPTY_OPEN_ITEM, useRepeaterContext } from '../context/repeater-context';\n\nexport const EditItemPopover = ( { children }: { children: React.ReactNode } ) => {\n\tconst { popoverState, openItemIndex, isOpen, rowRef, setOpenItemIndex, setRowRef } = useRepeaterContext();\n\n\tif ( ! isOpen || ! rowRef ) {\n\t\treturn null;\n\t}\n\n\tconst onClose = () => {\n\t\tsetRowRef( null );\n\t\tpopoverState.setAnchorEl( null );\n\t\tsetOpenItemIndex( EMPTY_OPEN_ITEM );\n\t};\n\n\treturn (\n\t\t<RepeaterPopover width={ rowRef.offsetWidth } { ...bindPopover( popoverState ) } onClose={ onClose }>\n\t\t\t<PropKeyProvider bind={ String( openItemIndex ) }>\n\t\t\t\t<Box>{ children }</Box>\n\t\t\t</PropKeyProvider>\n\t\t</RepeaterPopover>\n\t);\n};\n","import * as React from 'react';\nimport { Popover, type PopoverProps } from '@elementor/ui';\n\nexport const RepeaterPopover = ( { children, width, ...props }: PopoverProps & { width?: number } ) => {\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: { marginBlockStart: 0.5, width, overflow: 'visible' },\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t>\n\t\t\t{ children }\n\t\t</Popover>\n\t);\n};\n","import { type FC, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Stack, type StackProps } from '@elementor/ui';\n\nexport const PopoverContent: FC< PropsWithChildren< StackProps > > = ( { gap = 1.5, children, ...props } ) => (\n\t<Stack { ...props } gap={ gap }>\n\t\t{ children }\n\t</Stack>\n);\n","import { forwardRef, type PropsWithChildren } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\ntype PopoverGridContainerProps = PropsWithChildren< {\n\tgap?: number;\n\talignItems?: React.ComponentProps< typeof Grid >[ 'alignItems' ];\n\tflexWrap?: React.ComponentProps< typeof Grid >[ 'flexWrap' ];\n} >;\n\nexport const PopoverGridContainer = forwardRef(\n\t( { gap = 1.5, alignItems = 'center', flexWrap = 'nowrap', children }: PopoverGridContainerProps, ref ) => (\n\t\t<Grid container gap={ gap } alignItems={ alignItems } flexWrap={ flexWrap } ref={ ref }>\n\t\t\t{ children }\n\t\t</Grid>\n\t)\n);\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { Box, Stack, Typography } from '@elementor/ui';\n\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\n\nexport const RepeaterHeader = forwardRef(\n\t(\n\t\t{\n\t\t\tlabel,\n\t\t\tchildren,\n\t\t\tadornment: Adornment = ControlAdornments,\n\t\t}: React.PropsWithChildren< {\n\t\t\tlabel: string;\n\t\t\tadornment?: React.FC;\n\t\t} >,\n\t\tref\n\t) => {\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ 1 }\n\t\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t\t\tref={ ref }\n\t\t\t>\n\t\t\t\t<Box display=\"flex\" alignItems=\"center\" gap={ 1 } sx={ { flexGrow: 1 } }>\n\t\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t<Adornment />\n\t\t\t\t</Box>\n\t\t\t\t{ children }\n\t\t\t</Stack>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type PropType } from '@elementor/editor-props';\n\nimport { useControlAdornments } from './control-adornments-context';\n\nexport function ControlAdornments( {\n\tcustomContext,\n}: {\n\tcustomContext?: {\n\t\tpath: string[];\n\t\tpropType: PropType;\n\t};\n} ) {\n\tconst items = useControlAdornments();\n\n\tif ( items?.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ items.map( ( { Adornment, id } ) => (\n\t\t\t\t<Adornment key={ id } customContext={ customContext } />\n\t\t\t) ) }\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { type ComponentType, createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropType } from '@elementor/editor-props';\n\nexport type AdornmentComponent = ComponentType< { customContext?: { path: string[]; propType: PropType } } >;\ntype ControlAdornmentsItem = {\n\tid: string;\n\tAdornment: AdornmentComponent;\n};\n\ntype ControlAdornmentsContext = {\n\titems?: ControlAdornmentsItem[];\n};\n\nconst Context = createContext< ControlAdornmentsContext | null >( null );\n\ntype ControlAdornmentsProviderProps = PropsWithChildren< ControlAdornmentsContext >;\n\nexport const ControlAdornmentsProvider = ( { children, items }: ControlAdornmentsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlAdornments = () => {\n\tconst context = useContext( Context );\n\n\treturn context?.items ?? [];\n};\n","import * as React from 'react';\nimport {\n\tbackdropFilterPropTypeUtil,\n\ttype FilterItemPropValue,\n\tfilterPropTypeUtil,\n\ttype PropTypeUtil,\n} from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../../components/control-repeater';\nimport { DisableItemAction } from '../../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../components/control-repeater/actions/remove-item-action';\nimport { EditItemPopover } from '../../components/control-repeater/items/edit-item-popover';\nimport type { RepeatablePropValue } from '../../components/control-repeater/types';\nimport { RepeaterHeader } from '../../components/repeater/repeater-header';\nimport { createControl } from '../../create-control';\nimport { FilterConfigProvider, useFilterConfig } from './context/filter-config-context';\nimport { FilterContent } from './filter-content';\nimport { FilterIcon } from './filter-icon';\nimport { FilterLabel } from './filter-label';\n\ntype FilterPropName = {\n\tfilterPropName?: 'filter' | 'backdrop-filter';\n};\n\ntype Config = {\n\tpropTypeUtil: PropTypeUtil< string, FilterItemPropValue[] >;\n\tlabel: string;\n};\n\nconst FILTER_CONFIG: Record< string, Config > = {\n\tfilter: {\n\t\tpropTypeUtil: filterPropTypeUtil,\n\t\tlabel: __( 'Filters', 'elementor' ),\n\t},\n\t'backdrop-filter': {\n\t\tpropTypeUtil: backdropFilterPropTypeUtil,\n\t\tlabel: __( 'Backdrop filters', 'elementor' ),\n\t},\n} as const;\n\nexport const FilterRepeaterControl = createControl( ( { filterPropName = 'filter' }: FilterPropName ) => {\n\tconst { propTypeUtil, label } = ensureFilterConfig( filterPropName );\n\tconst { propType, value: filterValues, setValue } = useBoundProp( propTypeUtil );\n\n\treturn (\n\t\t<FilterConfigProvider>\n\t\t\t<PropProvider propType={ propType } value={ filterValues } setValue={ setValue }>\n\t\t\t\t<Repeater\n\t\t\t\t\tpropTypeUtil={ propTypeUtil as PropTypeUtil< string, RepeatablePropValue[] > }\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tfilterPropName={ filterPropName }\n\t\t\t\t/>\n\t\t\t</PropProvider>\n\t\t</FilterConfigProvider>\n\t);\n} );\n\ntype RepeaterProps = {\n\tpropTypeUtil: PropTypeUtil< string, RepeatablePropValue[] >;\n\tlabel: string;\n\tfilterPropName: string;\n};\n\nconst Repeater = ( { propTypeUtil, label, filterPropName }: RepeaterProps ) => {\n\tconst { getInitialValue } = useFilterConfig();\n\n\treturn (\n\t\t<ControlRepeater initial={ getInitialValue() as RepeatablePropValue } propTypeUtil={ propTypeUtil }>\n\t\t\t<RepeaterHeader label={ label }>\n\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\tnewItemIndex={ 0 }\n\t\t\t\t\tariaLabel={ filterPropName === 'backdrop-filter' ? 'backdrop filter' : 'filter' }\n\t\t\t\t/>\n\t\t\t</RepeaterHeader>\n\t\t\t<ItemsContainer>\n\t\t\t\t<Item\n\t\t\t\t\tLabel={ FilterLabel }\n\t\t\t\t\tIcon={ FilterIcon }\n\t\t\t\t\tactions={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t</ItemsContainer>\n\t\t\t<EditItemPopover>\n\t\t\t\t<FilterContent />\n\t\t\t</EditItemPopover>\n\t\t</ControlRepeater>\n\t);\n};\n\nfunction ensureFilterConfig( name: string ): Config {\n\tif ( name && name in FILTER_CONFIG ) {\n\t\treturn FILTER_CONFIG[ name ];\n\t}\n\n\treturn FILTER_CONFIG.filter;\n}\n","import * as React from 'react';\nimport { createContext, useContext, useMemo } from 'react';\nimport { cssFilterFunctionPropUtil, type PropType } from '@elementor/editor-props';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type FilterFunction } from '../configs';\nimport { buildFilterConfig, type FilterConfigEntry } from '../utils';\n\ntype FilterConfigMap = Record< FilterFunction, FilterConfigEntry >;\n\ntype FilterConfigContextValue = {\n\tconfig: FilterConfigMap;\n\tfilterOptions: Array< { value: string; label: string } >;\n\tgetFilterFunctionConfig: ( filterFunction: FilterFunction ) => FilterConfigEntry;\n\tgetInitialValue: () => unknown;\n};\n\nconst FilterConfigContext = createContext< FilterConfigContextValue | null >( null );\n\nexport function FilterConfigProvider( { children }: React.PropsWithChildren ) {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil ) as { propType: { item_prop_type: PropType } };\n\n\tconst contextValue = useMemo( () => {\n\t\tconst config = buildFilterConfig( propContext.propType.item_prop_type );\n\t\tconst filterOptions = Object.entries( config ).map( ( [ key, conf ] ) => ( {\n\t\t\tvalue: key,\n\t\t\tlabel: conf.name,\n\t\t} ) );\n\n\t\treturn {\n\t\t\tconfig,\n\t\t\tfilterOptions,\n\t\t\tgetFilterFunctionConfig: ( filterFunction: FilterFunction ) => config[ filterFunction ],\n\t\t\tgetInitialValue: () => config.blur.defaultValue,\n\t\t};\n\t}, [ propContext.propType ] );\n\n\treturn <FilterConfigContext.Provider value={ contextValue }>{ children }</FilterConfigContext.Provider>;\n}\n\nexport function useFilterConfig(): FilterConfigContextValue {\n\tconst context = useContext( FilterConfigContext );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useFilterConfig must be used within FilterConfigProvider' );\n\t}\n\n\treturn context;\n}\n","import type { DropShadowFilterPropValue, PropType, SizePropValue, UnionPropType } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FilterFunction, type FilterFunctionGroup, FILTERS_BY_GROUP } from './configs';\n\nconst AMOUNT_VALUE_NAME = __( 'Amount', 'elementor' );\n\ntype SingleArgFilterFuncPropType = PropType & {\n\tshape: {\n\t\tsize?: PropType;\n\t};\n};\n\ntype DropShadowFuncPropType = PropType & {\n\tshape: {\n\t\tcolor: PropType;\n\t\txAxis: PropType;\n\t\tyAxis: PropType;\n\t\tblur: PropType;\n\t};\n};\n\ntype CssFilterFuncPropType = PropType & {\n\tshape: {\n\t\targs: {\n\t\t\tprop_types: {\n\t\t\t\t[ K in FilterFunctionGroup ]: SingleArgFilterFuncPropType | DropShadowFuncPropType;\n\t\t\t};\n\t\t};\n\t};\n};\n\nexport type DefaultValue = { size: SizePropValue } | DropShadowFilterPropValue[ 'value' ];\n\ntype CssFilterFuncValue = ReturnType< typeof createDefaultValue >;\n\nexport type FilterConfigEntry = {\n\tname: string;\n\tvalueName: string;\n\tfilterFunctionGroup: FilterFunctionGroup;\n\tdefaultValue: CssFilterFuncValue;\n};\n\ntype FilterConfigMap = Record< FilterFunction, FilterConfigEntry >;\n\nconst DEFAULT_FACTORIES: Partial< Record< FilterFunction, ( propType: PropType ) => DefaultValue > > = {\n\t'drop-shadow': ( propType: PropType ) => buildDropShadowDefault( propType as DropShadowFuncPropType ),\n};\n\nexport function buildFilterConfig( cssFilterPropType: PropType ): FilterConfigMap {\n\tfunction createEntry(\n\t\tfilterFunctionGroup: FilterFunctionGroup,\n\t\tfilterFunction: FilterFunction,\n\t\t{ name, valueName }: { name: string; valueName?: string }\n\t): [ FilterFunction, FilterConfigEntry ] {\n\t\tconst propType = extractPropType( cssFilterPropType as CssFilterFuncPropType, filterFunctionGroup );\n\n\t\tconst value =\n\t\t\tDEFAULT_FACTORIES[ filterFunction ]?.( propType ) ??\n\t\t\tbuildSizeDefault( propType as SingleArgFilterFuncPropType );\n\n\t\tconst defaultValue = createDefaultValue( {\n\t\t\tfilterFunction,\n\t\t\tfilterFunctionGroup,\n\t\t\tvalue,\n\t\t} );\n\n\t\treturn [\n\t\t\tfilterFunction,\n\t\t\t{\n\t\t\t\tname,\n\t\t\t\tvalueName: valueName ?? AMOUNT_VALUE_NAME,\n\t\t\t\tdefaultValue,\n\t\t\t\tfilterFunctionGroup,\n\t\t\t},\n\t\t];\n\t}\n\n\tconst entries = Object.entries( FILTERS_BY_GROUP ).flatMap( ( [ filterFunctionGroup, group ] ) =>\n\t\tObject.entries( group ).map( ( [ filterFunction, meta ] ) =>\n\t\t\tcreateEntry( filterFunctionGroup as FilterFunctionGroup, filterFunction as FilterFunction, meta )\n\t\t)\n\t);\n\n\treturn Object.fromEntries( entries ) as FilterConfigMap;\n}\n\ntype DefaultBuilderArgs = {\n\tfilterFunction: FilterFunction;\n\tfilterFunctionGroup: FilterFunctionGroup;\n\tvalue: DefaultValue;\n};\n\nfunction createDefaultValue( { filterFunction, filterFunctionGroup, value }: DefaultBuilderArgs ) {\n\treturn {\n\t\t$$type: 'css-filter-func',\n\t\tvalue: {\n\t\t\tfunc: { $$type: 'string', value: filterFunction },\n\t\t\targs: {\n\t\t\t\t$$type: filterFunctionGroup,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction buildSizeDefault( propType: SingleArgFilterFuncPropType ): DefaultValue {\n\tconst sizePropType = propType?.shape?.size;\n\n\treturn {\n\t\tsize: sizePropType?.default as SizePropValue,\n\t};\n}\n\nfunction buildDropShadowDefault( propType: DropShadowFuncPropType ): DefaultValue {\n\tconst dropShadowPropType = propType.shape;\n\n\treturn {\n\t\tblur: dropShadowPropType?.blur?.default,\n\t\txAxis: dropShadowPropType?.xAxis?.default,\n\t\tyAxis: dropShadowPropType?.yAxis?.default,\n\t\tcolor:\n\t\t\tdropShadowPropType?.color?.default ??\n\t\t\t( dropShadowPropType?.color as UnionPropType ).prop_types.color.default,\n\t};\n}\n\nfunction extractPropType( propType: CssFilterFuncPropType, filterFunctionGroup: FilterFunctionGroup ) {\n\treturn propType.shape?.args?.prop_types[ filterFunctionGroup ];\n}\n","import { __ } from '@wordpress/i18n';\n\nexport type FilterFunction =\n\t| 'blur'\n\t| 'brightness'\n\t| 'contrast'\n\t| 'hue-rotate'\n\t| 'saturate'\n\t| 'grayscale'\n\t| 'invert'\n\t| 'sepia'\n\t| 'drop-shadow';\n\nexport type FilterFunctionGroup = 'blur' | 'color-tone' | 'hue-rotate' | 'intensity' | 'drop-shadow';\n\nexport type FilterGroup = {\n\t[ filter in FilterFunction ]?: {\n\t\tname: string;\n\t\tvalueName?: string;\n\t};\n};\n\nexport const FILTERS_BY_GROUP: Record< FilterFunctionGroup, FilterGroup > = {\n\tblur: {\n\t\tblur: {\n\t\t\tname: __( 'Blur', 'elementor' ),\n\t\t\tvalueName: __( 'Radius', 'elementor' ),\n\t\t},\n\t},\n\tintensity: {\n\t\tbrightness: { name: __( 'Brightness', 'elementor' ) },\n\t\tcontrast: { name: __( 'Contrast', 'elementor' ) },\n\t\tsaturate: { name: __( 'Saturate', 'elementor' ) },\n\t},\n\t'hue-rotate': {\n\t\t'hue-rotate': {\n\t\t\tname: __( 'Hue Rotate', 'elementor' ),\n\t\t\tvalueName: __( 'Angle', 'elementor' ),\n\t\t},\n\t},\n\t'color-tone': {\n\t\tgrayscale: { name: __( 'Grayscale', 'elementor' ) },\n\t\tinvert: { name: __( 'Invert', 'elementor' ) },\n\t\tsepia: { name: __( 'Sepia', 'elementor' ) },\n\t},\n\t'drop-shadow': {\n\t\t'drop-shadow': { name: __( 'Drop shadow', 'elementor' ), valueName: __( 'Drop-shadow', 'elementor' ) },\n\t},\n};\n","import * as React from 'react';\nimport {\n\ttype CreateOptions,\n\tcssFilterFunctionPropUtil,\n\ttype FilterItemPropValue,\n\ttype PropKey,\n} from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlFormLabel } from '../../components/control-form-label';\nimport { useRepeaterContext } from '../../components/control-repeater/context/repeater-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { PopoverGridContainer } from '../../components/popover-grid-container';\nimport { SelectControl } from '../select-control';\nimport { type FilterFunction } from './configs';\nimport { useFilterConfig } from './context/filter-config-context';\nimport { DropShadowItemContent } from './drop-shadow/drop-shadow-item-content';\nimport { SingleSizeItemContent } from './single-size/single-size-item-content';\n\ntype Value = FilterItemPropValue[ 'value' ];\n\nexport const FilterContent = () => {\n\tconst propContext = useBoundProp( cssFilterFunctionPropUtil );\n\tconst { filterOptions, getFilterFunctionConfig } = useFilterConfig();\n\n\tconst handleValueChange = ( value: Value, _?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tlet newValue = structuredClone( value );\n\t\tconst funcConfig = getFilterFunctionConfig( newValue?.func.value as FilterFunction );\n\n\t\tif ( meta?.bind === 'func' ) {\n\t\t\tnewValue = funcConfig.defaultValue.value as FilterItemPropValue[ 'value' ];\n\t\t}\n\n\t\tif ( ! newValue.args ) {\n\t\t\treturn;\n\t\t}\n\n\t\tpropContext.setValue( newValue );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } setValue={ handleValueChange }>\n\t\t\t<PropKeyProvider bind=\"css-filter-func\">\n\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Filter', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<PropKeyProvider bind=\"func\">\n\t\t\t\t\t\t\t\t<SelectControl options={ filterOptions } />\n\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t<PropKeyProvider bind=\"args\">\n\t\t\t\t\t\t<FilterValueContent />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverContent>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst FilterValueContent = () => {\n\tconst { openItemIndex, items } = useRepeaterContext();\n\tconst currentItem = items[ openItemIndex ];\n\n\tconst filterFunc = ( currentItem.item.value as FilterItemPropValue[ 'value' ] ).func.value;\n\tconst isDropShadow = filterFunc === 'drop-shadow';\n\n\tif ( isDropShadow ) {\n\t\treturn <DropShadowItemContent />;\n\t}\n\n\treturn <SingleSizeItemContent filterFunc={ filterFunc as FilterFunction } />;\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { dropShadowFilterPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { ColorControl } from '../../color-control';\nimport { SizeControl } from '../../size-control';\n\nconst items = [\n\t{\n\t\tbind: 'xAxis',\n\t\tlabel: __( 'X-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'yAxis',\n\t\tlabel: __( 'Y-axis', 'elementor' ),\n\t\trowIndex: 0,\n\t},\n\t{\n\t\tbind: 'blur',\n\t\tlabel: __( 'Blur', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n\t{\n\t\tbind: 'color',\n\t\tlabel: __( 'Color', 'elementor' ),\n\t\trowIndex: 1,\n\t},\n];\n\nexport const DropShadowItemContent = ( { anchorEl }: { anchorEl?: HTMLElement | null } ) => {\n\tconst context = useBoundProp( dropShadowFilterPropTypeUtil );\n\tconst rowRefs = [ useRef< HTMLDivElement >( null ), useRef< HTMLDivElement >( null ) ];\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ items.map( ( item ) => (\n\t\t\t\t<PopoverGridContainer key={ item.bind } ref={ rowRefs[ item.rowIndex ] ?? null }>\n\t\t\t\t\t<PropKeyProvider bind={ item.bind }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ item.label }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t{ item.bind === 'color' ? (\n\t\t\t\t\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\tanchorRef={ rowRefs[ item.rowIndex ] }\n\t\t\t\t\t\t\t\t\tenablePropTypeUnits\n\t\t\t\t\t\t\t\t\tdefaultUnit=\"px\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n","import { useRef } from 'react';\nimport * as React from 'react';\nimport {\n\tblurFilterPropTypeUtil,\n\tcolorToneFilterPropTypeUtil,\n\ttype createPropUtils,\n\thueRotateFilterPropTypeUtil,\n\tintensityFilterPropTypeUtil,\n} from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { SizeControl } from '../../size-control';\nimport { type FilterFunction } from '../configs';\nimport { useFilterConfig } from '../context/filter-config-context';\n\nexport const propTypeMap: Record< string, ReturnType< typeof createPropUtils > > = {\n\tblur: blurFilterPropTypeUtil,\n\tintensity: intensityFilterPropTypeUtil,\n\t'hue-rotate': hueRotateFilterPropTypeUtil,\n\t'color-tone': colorToneFilterPropTypeUtil,\n};\n\nexport const SingleSizeItemContent = ( { filterFunc }: { filterFunc: FilterFunction } ) => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\tconst { getFilterFunctionConfig } = useFilterConfig();\n\tconst { valueName, filterFunctionGroup } = getFilterFunctionConfig( filterFunc );\n\tconst context = useBoundProp( propTypeMap[ filterFunctionGroup as string ] );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ filterFunctionGroup }>\n\t\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlFormLabel>{ valueName }</ControlFormLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<SizeControl anchorRef={ rowRef } enablePropTypeUnits />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { styled, UnstableColorIndicator } from '@elementor/ui';\n\nexport const FilterIcon = ( { value }: { value: FilterItemPropValue } ) => {\n\tif ( value.value.func.value !== 'drop-shadow' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StyledUnstableColorIndicator\n\t\t\tsize=\"inherit\"\n\t\t\tcomponent=\"span\"\n\t\t\tvalue={ ( value.value.args as DropShadowFilterPropValue ).value?.color.value }\n\t\t/>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n","import * as React from 'react';\nimport type { FilterItemPropValue } from '@elementor/editor-props';\n\nimport { DropShadowItemLabel } from './drop-shadow/drop-shadow-item-label';\nimport { SingleSizeItemLabel } from './single-size/single-size-item-label';\n\nexport const FilterLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tif ( value.value.func.value === 'drop-shadow' ) {\n\t\treturn <DropShadowItemLabel value={ value } />;\n\t}\n\n\treturn <SingleSizeItemLabel value={ value } />;\n};\n","import * as React from 'react';\nimport { type DropShadowFilterPropValue, type FilterItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { CUSTOM_SIZE_LABEL } from '../../size-control';\n\nexport const DropShadowItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst values = value.value.args.value as DropShadowFilterPropValue[ 'value' ];\n\tconst keys = [ 'xAxis', 'yAxis', 'blur' ] as Array< keyof typeof values >;\n\tconst labels: string[] = keys.map( ( key ) =>\n\t\tvalues[ key ]?.value?.unit !== 'custom'\n\t\t\t? `${ values[ key ]?.value?.size ?? 0 }${ values[ key ]?.value?.unit ?? 'px' }`\n\t\t\t: values[ key ]?.value?.size || CUSTOM_SIZE_LABEL\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t\tDrop shadow:\n\t\t\t</Box>\n\t\t\t{ ` ${ labels.join( ' ' ) }` }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport type { FilterItemPropValue, SizePropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { lengthUnits } from '../../../utils/size-control';\nimport { CUSTOM_SIZE_LABEL } from '../../size-control';\nimport { type FilterFunction } from '../configs';\nimport { useFilterConfig } from '../context/filter-config-context';\n\nexport const SingleSizeItemLabel = ( { value }: { value: FilterItemPropValue } ) => {\n\tconst { func, args } = value.value;\n\tconst { getFilterFunctionConfig } = useFilterConfig();\n\tconst { defaultValue } = getFilterFunctionConfig( ( func.value ?? '' ) as FilterFunction );\n\tconst defaultUnit =\n\t\t( defaultValue.value.args.value as { size: SizePropValue } )?.size?.value?.unit ?? lengthUnits[ 0 ];\n\n\tconst { unit, size } = ( args.value as { size: SizePropValue } ).size?.value ?? { unit: defaultUnit, size: 0 };\n\n\tconst label = (\n\t\t<Box component=\"span\" style={ { textTransform: 'capitalize' } }>\n\t\t\t{ func.value ?? '' }:\n\t\t</Box>\n\t);\n\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }\n\t\t\t{ ' ' + ( unit !== 'custom' ? `${ size ?? 0 }${ unit ?? defaultUnit }` : size || CUSTOM_SIZE_LABEL ) }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\n\nimport { createControl } from '../create-control';\nimport { SelectControl, type SelectOption } from './select-control';\n\ntype ExtendedWindow = Window & {\n\telementor: { $previewContents: [ HTMLIFrameElement ]; config: { document: { id: string } } };\n};\n\nconst getOffCanvasElements = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst documentId = extendedWindow.elementor.config.document.id;\n\tconst offCanvasElements = extendedWindow.elementor.$previewContents[ 0 ].querySelectorAll(\n\t\t`[data-elementor-id=\"${ documentId }\"] .elementor-widget-off-canvas.elementor-element-edit-mode`\n\t);\n\n\treturn Array.from( offCanvasElements as unknown as HTMLElement[] ).map( ( offCanvasElement ) => {\n\t\treturn {\n\t\t\tlabel: offCanvasElement.querySelector( '.e-off-canvas' )?.getAttribute( 'aria-label' ) ?? '',\n\t\t\tvalue: offCanvasElement.dataset.id,\n\t\t} as SelectOption;\n\t} );\n};\n\nconst collectionMethods = {\n\t'off-canvas': getOffCanvasElements,\n} as const;\n\ntype SelectControlWrapperProps = Parameters< typeof SelectControl >[ 0 ] & {\n\tcollectionId?: keyof typeof collectionMethods;\n};\n\nconst useDynamicOptions = (\n\tcollectionId?: keyof typeof collectionMethods,\n\tinitialOptions?: SelectControlWrapperProps[ 'options' ]\n) => {\n\tconst [ options, setOptions ] = useState< SelectControlWrapperProps[ 'options' ] >( initialOptions ?? [] );\n\n\tuseEffect( () => {\n\t\tif ( ! collectionId || ! collectionMethods[ collectionId ] ) {\n\t\t\tsetOptions( initialOptions ?? [] );\n\t\t\treturn;\n\t\t}\n\t\tsetOptions( collectionMethods[ collectionId ]() );\n\t}, [ collectionId, initialOptions ] );\n\n\treturn options;\n};\n\nexport const SelectControlWrapper = createControl(\n\t( { collectionId, options, ...props }: SelectControlWrapperProps ) => {\n\t\tconst actualOptions = useDynamicOptions( collectionId, options );\n\n\t\treturn <SelectControl options={ actualOptions } { ...props } />;\n\t}\n);\n","import * as React from 'react';\nimport { type PropValue, stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlToggleButtonGroup, type ToggleButtonGroupItem } from '../components/control-toggle-button-group';\nimport { createControl } from '../create-control';\nimport { convertToggleOptionsToAtomic, type DynamicToggleOption } from '../utils/convert-toggle-options-to-atomic';\n\nexport type ToggleControlProps< T extends PropValue > = {\n\toptions: Array< ToggleButtonGroupItem< T > & { exclusive?: boolean } >;\n\tfullWidth?: boolean;\n\tsize?: ToggleButtonProps[ 'size' ];\n\texclusive?: boolean;\n\tmaxItems?: number;\n\tconvertOptions?: boolean;\n};\n\nexport const ToggleControl = createControl(\n\t( {\n\t\toptions,\n\t\tfullWidth = false,\n\t\tsize = 'tiny',\n\t\texclusive = true,\n\t\tmaxItems,\n\t\tconvertOptions = false,\n\t}: ToggleControlProps< StringPropValue[ 'value' ] > ) => {\n\t\tconst { value, setValue, placeholder, disabled } = useBoundProp( stringPropTypeUtil );\n\n\t\tconst processedOptions = convertOptions\n\t\t\t? convertToggleOptionsToAtomic( options as DynamicToggleOption[] )\n\t\t\t: ( options as Array< ToggleButtonGroupItem< StringPropValue[ 'value' ] > & { exclusive?: boolean } > );\n\n\t\tconst exclusiveValues = processedOptions\n\t\t\t.filter( ( option ) => option.exclusive )\n\t\t\t.map( ( option ) => option.value );\n\n\t\tconst handleNonExclusiveToggle = ( selectedValues: StringPropValue[ 'value' ][] ) => {\n\t\t\tconst newSelectedValue = selectedValues[ selectedValues.length - 1 ];\n\t\t\tconst isNewSelectedValueExclusive = exclusiveValues.includes( newSelectedValue );\n\n\t\t\tconst updatedValues = isNewSelectedValueExclusive\n\t\t\t\t? [ newSelectedValue ]\n\t\t\t\t: selectedValues?.filter( ( val ) => ! exclusiveValues.includes( val ) );\n\n\t\t\tsetValue( updatedValues?.join( ' ' ) || null );\n\t\t};\n\n\t\tconst toggleButtonGroupProps = {\n\t\t\titems: processedOptions,\n\t\t\tmaxItems,\n\t\t\tfullWidth,\n\t\t\tsize,\n\t\t\tplaceholder,\n\t\t};\n\n\t\treturn exclusive ? (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value ?? null }\n\t\t\t\tonChange={ setValue }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ true }\n\t\t\t/>\n\t\t) : (\n\t\t\t<ControlToggleButtonGroup\n\t\t\t\t{ ...toggleButtonGroupProps }\n\t\t\t\tvalue={ value?.split( ' ' ) ?? [] }\n\t\t\t\tonChange={ handleNonExclusiveToggle }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\texclusive={ false }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport {\n\tListItemText,\n\tMenu,\n\tMenuItem,\n\ttype StackProps,\n\tstyled,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttype ToggleButtonProps,\n\tTypography,\n\tuseTheme,\n} from '@elementor/ui';\n\nimport ControlActions from '../control-actions/control-actions';\nimport { ConditionalTooltip } from './conditional-tooltip';\n\ntype RenderContentProps = { size: ToggleButtonProps[ 'size' ] };\n\nexport type ToggleButtonGroupItem< TValue > = {\n\tvalue: TValue;\n\tlabel: string;\n\trenderContent: ( { size }: RenderContentProps ) => React.ReactNode;\n\tshowTooltip?: boolean;\n};\n\nconst StyledToggleButtonGroup = styled( ToggleButtonGroup )`\n\t${ ( { justify } ) => `justify-content: ${ justify };` }\n\tbutton:not( :last-of-type ) {\n\t\tborder-start-end-radius: 0;\n\t\tborder-end-end-radius: 0;\n\t}\n\tbutton:not( :first-of-type ) {\n\t\tborder-start-start-radius: 0;\n\t\tborder-end-start-radius: 0;\n\t}\n\tbutton:last-of-type {\n\t\tborder-start-end-radius: 8px;\n\t\tborder-end-end-radius: 8px;\n\t}\n`;\n\nexport const StyledToggleButton = styled( ToggleButton, {\n\tshouldForwardProp: ( prop ) => prop !== 'isPlaceholder',\n} )< { isPlaceholder: boolean } >`\n\t${ ( { theme, isPlaceholder } ) =>\n\t\tisPlaceholder &&\n\t\t`\n\t\tcolor: ${ theme.palette.text.tertiary };\n\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.04)' : 'rgba(0,0,0,0.02)' };\n\n\t\t&:hover {\n\t\t\tbackground-color: ${ theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.08)' : 'rgba(0,0,0,0.04)' };\n\t\t}\n\t` }\n`;\n\ntype ExclusiveValue< TValue > = TValue;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tdisabled?: boolean;\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tmaxItems?: number;\n\tfullWidth?: boolean;\n\tplaceholder?: TValue | TValue[];\n} & (\n\t| {\n\t\t\texclusive?: false;\n\t\t\tvalue: NonExclusiveValue< TValue >;\n\t\t\tonChange: ( value: NonExclusiveValue< TValue > ) => void;\n\t }\n\t| {\n\t\t\texclusive: true;\n\t\t\tvalue: ExclusiveValue< TValue >;\n\t\t\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n\t }\n);\nexport const ToggleButtonGroupUi = React.forwardRef(\n\t< TValue, >(\n\t\t{\n\t\t\tjustify = 'end',\n\t\t\tsize = 'tiny',\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\titems,\n\t\t\tmaxItems,\n\t\t\texclusive = false,\n\t\t\tfullWidth = false,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t}: Props< TValue >,\n\t\tref: React.Ref< HTMLDivElement >\n\t) => {\n\t\tconst shouldSliceItems = exclusive && maxItems !== undefined && items.length > maxItems;\n\t\tconst menuItems = shouldSliceItems ? items.slice( maxItems - 1 ) : [];\n\t\tconst fixedItems = shouldSliceItems ? items.slice( 0, maxItems - 1 ) : items;\n\n\t\tconst theme = useTheme();\n\t\tconst isRtl = 'rtl' === theme.direction;\n\n\t\tconst handleChange = (\n\t\t\t_: React.MouseEvent< HTMLElement >,\n\t\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t\t) => {\n\t\t\tonChange( newValue as never );\n\t\t};\n\n\t\tconst getGridTemplateColumns = useMemo( () => {\n\t\t\tconst isOffLimits = menuItems?.length;\n\t\t\tconst itemsCount = isOffLimits ? fixedItems.length + 1 : fixedItems.length;\n\t\t\tconst templateColumnsSuffix = isOffLimits ? 'auto' : '';\n\t\t\treturn `repeat(${ itemsCount }, minmax(0, 25%)) ${ templateColumnsSuffix }`;\n\t\t}, [ menuItems?.length, fixedItems.length ] );\n\n\t\tconst shouldShowExclusivePlaceholder = exclusive && ( value === null || value === undefined || value === '' );\n\n\t\tconst nonExclusiveSelectedValues =\n\t\t\t! exclusive && Array.isArray( value )\n\t\t\t\t? value\n\t\t\t\t\t\t.map( ( v ) => ( typeof v === 'string' ? v : '' ) )\n\t\t\t\t\t\t.join( ' ' )\n\t\t\t\t\t\t.trim()\n\t\t\t\t\t\t.split( /\\s+/ )\n\t\t\t\t\t\t.filter( Boolean )\n\t\t\t\t: [];\n\n\t\tconst shouldShowNonExclusivePlaceholder = ! exclusive && nonExclusiveSelectedValues.length === 0;\n\n\t\tconst getPlaceholderArray = ( placeholderValue: TValue | TValue[] | undefined ): string[] => {\n\t\t\tif ( Array.isArray( placeholderValue ) ) {\n\t\t\t\treturn placeholderValue.flatMap( ( p ) => {\n\t\t\t\t\tif ( typeof p === 'string' ) {\n\t\t\t\t\t\treturn p.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t\t\t}\n\t\t\t\t\treturn [];\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( typeof placeholderValue === 'string' ) {\n\t\t\t\treturn placeholderValue.trim().split( /\\s+/ ).filter( Boolean );\n\t\t\t}\n\n\t\t\treturn [];\n\t\t};\n\n\t\tconst placeholderArray = getPlaceholderArray( placeholder );\n\n\t\treturn (\n\t\t\t<StyledToggleButtonGroup\n\t\t\t\tref={ ref }\n\t\t\t\tjustify={ justify }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\texclusive={ exclusive }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsx={ {\n\t\t\t\t\tdirection: isRtl ? 'rtl /* @noflip */' : 'ltr /* @noflip */',\n\t\t\t\t\tdisplay: 'grid',\n\t\t\t\t\tgridTemplateColumns: getGridTemplateColumns,\n\t\t\t\t\twidth: `100%`,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ fixedItems.map( ( { label, value: buttonValue, renderContent: Content, showTooltip } ) => {\n\t\t\t\t\tconst isPlaceholder =\n\t\t\t\t\t\tplaceholderArray.length > 0 &&\n\t\t\t\t\t\tplaceholderArray.includes( buttonValue as string ) &&\n\t\t\t\t\t\t( shouldShowExclusivePlaceholder || shouldShowNonExclusivePlaceholder );\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ConditionalTooltip\n\t\t\t\t\t\t\tkey={ buttonValue as string }\n\t\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\t\tshowTooltip={ showTooltip || false }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\t\t\tvalue={ buttonValue }\n\t\t\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t\t\t\tisPlaceholder={ isPlaceholder }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Content size={ size } />\n\t\t\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t\t\t</ConditionalTooltip>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\n\t\t\t\t{ menuItems.length && exclusive && (\n\t\t\t\t\t<SplitButtonGroup\n\t\t\t\t\t\tsize={ size }\n\t\t\t\t\t\tvalue={ ( value as ExclusiveValue< TValue > ) || null }\n\t\t\t\t\t\tonChange={ onChange as ( v: ExclusiveValue< TValue > ) => void }\n\t\t\t\t\t\titems={ menuItems }\n\t\t\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</StyledToggleButtonGroup>\n\t\t);\n\t}\n) as < TValue >( props: Props< TValue > & { ref?: React.Ref< HTMLDivElement > } ) => React.ReactElement;\n\nexport const ControlToggleButtonGroup = < TValue, >( props: Props< TValue > ) => {\n\treturn (\n\t\t<ControlActions>\n\t\t\t<ToggleButtonGroupUi { ...props } />\n\t\t</ControlActions>\n\t);\n};\n\ntype SplitButtonGroup< TValue > = {\n\tsize: ToggleButtonProps[ 'size' ];\n\titems: ToggleButtonGroupItem< TValue | null >[];\n\tfullWidth: boolean;\n\tvalue: ExclusiveValue< TValue > | null;\n\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n};\n\nconst SplitButtonGroup = < TValue, >( {\n\tsize = 'tiny',\n\tonChange,\n\titems,\n\tfullWidth,\n\tvalue,\n}: SplitButtonGroup< TValue > ) => {\n\tconst previewButton = usePreviewButton( items, value );\n\tconst [ isMenuOpen, setIsMenuOpen ] = useState( false );\n\tconst menuButtonRef = useRef( null );\n\n\tconst onMenuToggle = ( ev: React.MouseEvent ) => {\n\t\tsetIsMenuOpen( ( prev ) => ! prev );\n\t\tev.preventDefault();\n\t};\n\n\tconst onMenuItemClick = ( newValue: TValue | null ) => {\n\t\tsetIsMenuOpen( false );\n\t\tonToggleItem( newValue );\n\t};\n\n\tconst onToggleItem = ( newValue: TValue | null ) => {\n\t\tconst shouldRemove = newValue === value;\n\n\t\tonChange( ( shouldRemove ? null : newValue ) as never );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<ToggleButton\n\t\t\t\tvalue={ previewButton.value }\n\t\t\t\taria-label={ previewButton.label }\n\t\t\t\tsize={ size }\n\t\t\t\tfullWidth={ fullWidth }\n\t\t\t\tonClick={ ( ev: React.MouseEvent ) => {\n\t\t\t\t\tev.preventDefault();\n\t\t\t\t\tonMenuItemClick( previewButton.value );\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ previewButton.renderContent( { size } ) }\n\t\t\t</ToggleButton>\n\t\t\t<ToggleButton\n\t\t\t\tsize={ size }\n\t\t\t\taria-expanded={ isMenuOpen ? 'true' : undefined }\n\t\t\t\taria-haspopup=\"menu\"\n\t\t\t\taria-pressed={ undefined }\n\t\t\t\tonClick={ onMenuToggle }\n\t\t\t\tref={ menuButtonRef }\n\t\t\t\tvalue=\"__chevron-icon-button__\"\n\t\t\t>\n\t\t\t\t<ChevronDownIcon fontSize={ size } />\n\t\t\t</ToggleButton>\n\t\t\t<Menu\n\t\t\t\topen={ isMenuOpen }\n\t\t\t\tonClose={ () => setIsMenuOpen( false ) }\n\t\t\t\tanchorEl={ menuButtonRef.current }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tsx={ {\n\t\t\t\t\tmt: 0.5,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ items.map( ( { label, value: buttonValue } ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ buttonValue }\n\t\t\t\t\t\tselected={ buttonValue === value }\n\t\t\t\t\t\tonClick={ () => onMenuItemClick( buttonValue ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItemText>\n\t\t\t\t\t\t\t<Typography sx={ { fontSize: '14px' } }>{ label }</Typography>\n\t\t\t\t\t\t</ListItemText>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst usePreviewButton = < TValue, >( items: ToggleButtonGroupItem< TValue >[], value: TValue ) => {\n\tconst [ previewButton, setPreviewButton ] = useState(\n\t\titems.find( ( item ) => item.value === value ) ?? items[ 0 ]\n\t);\n\n\tuseEffect( () => {\n\t\tconst selectedButton = items.find( ( item ) => item.value === value );\n\n\t\tif ( selectedButton ) {\n\t\t\tsetPreviewButton( selectedButton );\n\t\t}\n\t}, [ items, value ] );\n\n\treturn previewButton;\n};\n","import * as React from 'react';\nimport { Tooltip } from '@elementor/ui';\n\nexport const ConditionalTooltip = ( {\n\tshowTooltip,\n\tchildren,\n\tlabel,\n}: React.PropsWithChildren< { showTooltip: boolean; label: string } > ) => {\n\treturn showTooltip && label ? (\n\t\t<Tooltip title={ label } disableFocusListener={ true } placement=\"top\">\n\t\t\t{ children }\n\t\t</Tooltip>\n\t) : (\n\t\tchildren\n\t);\n};\n","import * as React from 'react';\nimport type { ToggleButtonGroupItem } from '@elementor/editor-controls';\nimport * as Icons from '@elementor/icons';\n\nexport type DynamicToggleOption = {\n\tvalue: string;\n\tlabel: string;\n\ticon?: string;\n\tshowTooltip?: boolean;\n\texclusive?: boolean;\n};\n\nexport const convertToggleOptionsToAtomic = (\n\toptions: DynamicToggleOption[]\n): Array< ToggleButtonGroupItem< string > & { exclusive?: boolean } > => {\n\treturn options.map( ( option ) => {\n\t\tconst iconName = option.icon;\n\t\tconst IconComponent = Icons[ iconName as keyof typeof Icons ];\n\n\t\treturn {\n\t\t\tvalue: option.value,\n\t\t\tlabel: option.label,\n\t\t\trenderContent: ( { size } ) => {\n\t\t\t\tif ( IconComponent ) {\n\t\t\t\t\treturn <IconComponent fontSize={ size } />;\n\t\t\t\t}\n\t\t\t\treturn option.label;\n\t\t\t},\n\t\t\tshowTooltip: option.showTooltip,\n\t\t\texclusive: option.exclusive,\n\t\t};\n\t} );\n};\n","import * as React from 'react';\nimport { numberPropTypeUtil } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { NumberInput } from '../components/number-input';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst isEmptyOrNaN = ( value?: string | number | null ) =>\n\tvalue === null || value === undefined || value === '' || Number.isNaN( Number( value ) );\n\nexport const NumberControl = createControl(\n\t( {\n\t\tplaceholder: labelPlaceholder,\n\t\tmax = Number.MAX_SAFE_INTEGER,\n\t\tmin = -Number.MAX_SAFE_INTEGER,\n\t\tstep = 1,\n\t\tshouldForceInt = false,\n\t\tstartIcon,\n\t}: {\n\t\tplaceholder?: string;\n\t\tmax?: number;\n\t\tmin?: number;\n\t\tstep?: number;\n\t\tshouldForceInt?: boolean;\n\t\tstartIcon?: React.ReactNode;\n\t} ) => {\n\t\tconst { value, setValue, placeholder, disabled, restoreValue } = useBoundProp( numberPropTypeUtil );\n\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst {\n\t\t\t\tvalue: eventValue,\n\t\t\t\tvalidity: { valid: isInputValid },\n\t\t\t} = event.target;\n\n\t\t\tlet updatedValue;\n\n\t\t\tif ( isEmptyOrNaN( eventValue ) ) {\n\t\t\t\tupdatedValue = null;\n\t\t\t} else {\n\t\t\t\tconst formattedValue = shouldForceInt ? +parseInt( eventValue ) : Number( eventValue );\n\n\t\t\t\tupdatedValue = Math.min(\n\t\t\t\t\tMath.max( formattedValue, min ?? Number.MIN_SAFE_INTEGER ),\n\t\t\t\t\tmax ?? Number.MAX_SAFE_INTEGER\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsetValue( updatedValue, undefined, { validation: () => isInputValid } );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<NumberInput\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\ttype=\"number\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\t\tonInput={ handleChange }\n\t\t\t\t\tonBlur={ restoreValue }\n\t\t\t\t\tplaceholder={ labelPlaceholder ?? ( isEmptyOrNaN( placeholder ) ? '' : String( placeholder ) ) }\n\t\t\t\t\tinputProps={ { step, min } }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: startIcon ? (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\" disabled={ disabled }>\n\t\t\t\t\t\t\t\t{ startIcon }\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t) : undefined,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type ReactNode, type RefObject, useId, useRef } from 'react';\nimport { type PropKey, type PropTypeUtil, type PropValue } from '@elementor/editor-props';\nimport { bindPopover, bindToggle, Box, Grid, Popover, Stack, Tooltip, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { SizeControl } from './size-control';\n\ntype MultiSizePropValue = Record< PropKey, PropValue >;\n\ntype Item = {\n\ticon: ReactNode;\n\tlabel: string;\n\tbind: PropKey;\n};\n\nexport type EqualUnequalItems = [ Item, Item, Item, Item ];\n\ntype Props< TMultiPropType extends string, TPropValue extends MultiSizePropValue > = {\n\tlabel: string;\n\ticon: ReactNode;\n\ttooltipLabel: string;\n\titems: EqualUnequalItems;\n\tmultiSizePropTypeUtil: PropTypeUtil< TMultiPropType, TPropValue >;\n};\n\nexport function EqualUnequalSizesControl< TMultiPropType extends string, TPropValue extends MultiSizePropValue >( {\n\tlabel,\n\ticon,\n\ttooltipLabel,\n\titems,\n\tmultiSizePropTypeUtil,\n}: Props< TMultiPropType, TPropValue > ) {\n\tconst popupId = useId();\n\tconst popupState = usePopupState( { variant: 'popover', popupId } );\n\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst { propType: multiSizePropType, disabled: multiSizeDisabled } = useBoundProp( multiSizePropTypeUtil );\n\tconst { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();\n\n\tconst getMultiSizeValues = ( sourceValue: PropValue ) => {\n\t\tif ( multiSizePropTypeUtil.isValid( sourceValue ) ) {\n\t\t\treturn sourceValue.value;\n\t\t}\n\n\t\tconst propValue: MultiSizePropValue = {};\n\n\t\titems.forEach( ( item ) => {\n\t\t\tpropValue[ item.bind ] = sourceValue;\n\t\t} );\n\n\t\tconst derived = multiSizePropTypeUtil.create( propValue as unknown as TPropValue );\n\t\treturn derived?.value;\n\t};\n\n\tconst isShowingGeneralIndicator = ! popupState.isOpen;\n\n\tconst derivedValue = getMultiSizeValues( masterValue ) as unknown as TPropValue;\n\tconst derivedPlaceholder = getMultiSizeValues( masterPlaceholder ) as unknown as TPropValue;\n\n\tconst isEqualValues = ( values: ReturnType< typeof multiSizePropTypeUtil.create > ) => {\n\t\tif ( ! values ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst propValue: MultiSizePropValue = {};\n\n\t\titems.forEach( ( item ) => {\n\t\t\tpropValue[ item.bind ] = values?.value?.[ item.bind ] ?? null;\n\t\t} );\n\n\t\tconst allValues = Object.values( propValue ).map( ( value ) => JSON.stringify( value ) );\n\t\treturn allValues.every( ( value ) => value === allValues[ 0 ] );\n\t};\n\n\tconst isMixedPlaceholder = ! masterValue && ! isEqualValues( multiSizePropTypeUtil.create( derivedPlaceholder ) );\n\tconst isMixed = isMixedPlaceholder || ! isEqualValues( multiSizePropTypeUtil.create( derivedValue ) );\n\n\tconst applyMultiSizeValue = ( newValue: TPropValue ) => {\n\t\tconst newPropValue = multiSizePropTypeUtil.create( newValue );\n\n\t\tif ( isEqualValues( newPropValue ) ) {\n\t\t\tsetMasterValue( Object.values( newValue )?.pop() ?? null );\n\t\t\treturn;\n\t\t}\n\n\t\tsetMasterValue( newPropValue );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\" ref={ rowRefs[ 0 ] }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t{ ! isShowingGeneralIndicator ? (\n\t\t\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t\t\t<Box flexGrow={ 1 }>\n\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\tplaceholder={ isMixed ? __( 'Mixed', 'elementor' ) : undefined }\n\t\t\t\t\t\t\t\tenablePropTypeUnits={ ! isMixed || ! isMixedPlaceholder }\n\t\t\t\t\t\t\t\tanchorRef={ rowRefs[ 0 ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t<Tooltip title={ tooltipLabel } placement=\"top\">\n\t\t\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t\t{ ...bindToggle( popupState ) }\n\t\t\t\t\t\t\t\tselected={ popupState.isOpen }\n\t\t\t\t\t\t\t\tisPlaceholder={ isMixedPlaceholder }\n\t\t\t\t\t\t\t\taria-label={ tooltipLabel }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: { sx: { mt: 0.5, width: rowRefs[ 0 ].current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<PropProvider\n\t\t\t\t\tpropType={ multiSizePropType }\n\t\t\t\t\tvalue={ derivedValue }\n\t\t\t\t\tplaceholder={ derivedPlaceholder }\n\t\t\t\t\tsetValue={ applyMultiSizeValue }\n\t\t\t\t\tisDisabled={ () => multiSizeDisabled }\n\t\t\t\t>\n\t\t\t\t\t<PopoverContent p={ 1.5 }>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 1 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 0 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 1 ] } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t\t<PopoverGridContainer ref={ rowRefs[ 2 ] }>\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 2 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t\t<MultiSizeValueControl item={ items[ 3 ] } rowRef={ rowRefs[ 2 ] } />\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</PopoverContent>\n\t\t\t\t</PropProvider>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nconst MultiSizeValueControl = ( { item, rowRef }: { item: Item; rowRef: RefObject< HTMLDivElement > } ) => {\n\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 { type FormLabelProps, Stack } from '@elementor/ui';\n\nimport { ControlAdornments } from '../control-adornments/control-adornments';\nimport { ControlFormLabel } from './control-form-label';\n\ntype ControlLabelProps = FormLabelProps & PropsWithChildren< object >;\n\nexport const ControlLabel = ( { children, ...props }: ControlLabelProps ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel { ...props }>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\nimport { dimensionsPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { type ExtendedOption } from '../utils/size-control';\nimport { SizeControl } from './size-control';\n\ntype Props = {\n\tlabel: string;\n\tisSiteRtl?: boolean;\n\textendedOptions?: ExtendedOption[];\n\tmin?: number;\n};\n\nexport const LinkedDimensionsControl = ( { label, isSiteRtl = false, extendedOptions, min }: Props ) => {\n\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ) ];\n\n\tconst { disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst {\n\t\tvalue: dimensionsValue,\n\t\tsetValue: setDimensionsValue,\n\t\tpropType,\n\t\tplaceholder: dimensionsPlaceholder,\n\t\tdisabled: dimensionsDisabled,\n\t} = useBoundProp( dimensionsPropTypeUtil );\n\n\tconst { value: masterValue, placeholder: masterPlaceholder, setValue: setMasterValue } = useBoundProp();\n\n\tconst inferIsLinked = () => {\n\t\tif ( dimensionsPropTypeUtil.isValid( masterValue ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! masterValue && dimensionsPropTypeUtil.isValid( masterPlaceholder ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst [ isLinked, setIsLinked ] = useState( () => inferIsLinked() );\n\n\tconst activeBreakpoint = useActiveBreakpoint();\n\n\tuseLayoutEffect( () => {\n\t\tsetIsLinked( inferIsLinked );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\tconst onLinkToggle = () => {\n\t\tsetIsLinked( ( prev ) => ! prev );\n\n\t\tif ( ! dimensionsPropTypeUtil.isValid( masterValue ) ) {\n\t\t\tconst value = masterValue ? masterValue : null;\n\n\t\t\tif ( ! value ) {\n\t\t\t\tsetMasterValue( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetMasterValue(\n\t\t\t\tdimensionsPropTypeUtil.create( {\n\t\t\t\t\t'block-start': value,\n\t\t\t\t\t'block-end': value,\n\t\t\t\t\t'inline-start': value,\n\t\t\t\t\t'inline-end': value,\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst sizeValue =\n\t\t\tdimensionsValue?.[ 'block-start' ] ??\n\t\t\tdimensionsValue?.[ 'inline-end' ] ??\n\t\t\tdimensionsValue?.[ 'block-end' ] ??\n\t\t\tdimensionsValue?.[ 'inline-start' ] ??\n\t\t\tnull;\n\n\t\tif ( ! sizeValue ) {\n\t\t\tsetMasterValue( null );\n\t\t\treturn;\n\t\t}\n\n\t\tsetMasterValue( sizeValue );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || dimensionsDisabled;\n\n\tconst propProviderProps = {\n\t\tpropType,\n\t\tvalue: dimensionsValue,\n\t\tplaceholder: dimensionsPlaceholder,\n\t\tsetValue: setDimensionsValue,\n\t\tisDisabled: () => dimensionsDisabled,\n\t};\n\n\tconst hasPlaceholders = ! masterValue && ( dimensionsPlaceholder || masterPlaceholder );\n\n\treturn (\n\t\t<PropProvider { ...propProviderProps }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlFormLabel>{ label }</ControlFormLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tisPlaceholder={ hasPlaceholders }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\n\t\t\t{ getCssDimensionProps( isSiteRtl ).map( ( row, index ) => (\n\t\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" key={ index } ref={ gridRowRefs[ index ] }>\n\t\t\t\t\t{ row.map( ( { icon, ...props } ) => (\n\t\t\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\" key={ props.bind }>\n\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t<Label { ...props } />\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\t\t\tbind={ props.bind }\n\t\t\t\t\t\t\t\t\tstartIcon={ icon }\n\t\t\t\t\t\t\t\t\tisLinked={ isLinked }\n\t\t\t\t\t\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\t\t\t\t\t\tanchorRef={ gridRowRefs[ index ] }\n\t\t\t\t\t\t\t\t\tmin={ min }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t) ) }\n\t\t\t\t</Stack>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n\nconst Control = ( {\n\tbind,\n\tstartIcon,\n\tisLinked,\n\textendedOptions,\n\tanchorRef,\n\tmin,\n}: {\n\tbind: PropKey;\n\tstartIcon: React.ReactNode;\n\tisLinked: boolean;\n\textendedOptions?: ExtendedOption[];\n\tanchorRef: RefObject< HTMLDivElement >;\n\tmin?: number;\n} ) => {\n\tif ( isLinked ) {\n\t\treturn (\n\t\t\t<SizeControl\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tmin={ min }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<SizeControl\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\textendedOptions={ extendedOptions }\n\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\tmin={ min }\n\t\t\t/>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst Label = ( { label, bind }: { label: string; bind: PropKey } ) => {\n\treturn (\n\t\t<PropKeyProvider bind={ bind }>\n\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t</PropKeyProvider>\n\t);\n};\n\nfunction getCssDimensionProps( 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\tariaLabel?: string;\n};\n\nexport const FontFamilyControl = createControl(\n\t( { fontFamilies, sectionWidth, ariaLabel }: FontFamilyControlProps ) => {\n\t\tconst {\n\t\t\tvalue: fontFamily,\n\t\t\tsetValue: setFontFamily,\n\t\t\tdisabled,\n\t\t\tplaceholder,\n\t\t} = useBoundProp( stringPropTypeUtil );\n\n\t\tconst popoverState = usePopupState( { variant: 'popover' } );\n\t\tconst isShowingPlaceholder = ! fontFamily && placeholder;\n\n\t\tconst mapFontSubs = React.useMemo< Category[] >( () => {\n\t\t\treturn fontFamilies.map( ( { label, fonts } ) => ( {\n\t\t\t\tlabel,\n\t\t\t\titems: fonts,\n\t\t\t} ) );\n\t\t}, [ fontFamilies ] );\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<ControlActions>\n\t\t\t\t\t<UnstableTag\n\t\t\t\t\t\tid=\"font-family-control\"\n\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\tlabel={ fontFamily || placeholder }\n\t\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\t\tsx={\n\t\t\t\t\t\t\tisShowingPlaceholder\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t'& .MuiTag-label': {\n\t\t\t\t\t\t\t\t\t\t\tcolor: ( theme ) => theme.palette.text.tertiary,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\ttextTransform: 'capitalize',\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ControlActions>\n\n\t\t\t\t<Popover\n\t\t\t\t\tdisablePortal\n\t\t\t\t\tdisableScrollLock\n\t\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\t\tsx={ { my: 1.5 } }\n\t\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\t>\n\t\t\t\t\t<ItemSelector\n\t\t\t\t\t\tid=\"font-family-selector\"\n\t\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\t\tonItemChange={ setFontFamily }\n\t\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\t\ttitle={ __( 'Font family', 'elementor' ) }\n\t\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\t/>\n\t\t\t\t</Popover>\n\t\t\t</>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport { PopoverBody, PopoverHeader, PopoverMenuList, SearchField } from '@elementor/editor-ui';\nimport { Box, Divider, Link, Stack, Typography } from '@elementor/ui';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SelectableItem, useFilteredItemsList } from '../hooks/use-filtered-items-list';\n\nexport type Category = {\n\tlabel: string;\n\titems: string[];\n};\n\ntype ItemSelectorProps = {\n\titemsList: Category[];\n\tselectedItem: string | null;\n\tonItemChange: ( item: string ) => void;\n\tonClose: () => void;\n\tsectionWidth: number;\n\ttitle: string;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\ticon: React.ElementType< { fontSize: string } >;\n\tdisabledItems?: string[];\n\tid?: string;\n};\n\nexport const ItemSelector = ( {\n\titemsList,\n\tselectedItem,\n\tonItemChange,\n\tonClose,\n\tsectionWidth,\n\ttitle,\n\titemStyle = () => ( {} ),\n\tonDebounce = () => {},\n\ticon,\n\tdisabledItems,\n\tid = 'item-selector',\n}: ItemSelectorProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst filteredItemsList = useFilteredItemsList( itemsList, searchValue, disabledItems );\n\n\tconst IconComponent = icon;\n\n\tconst handleSearch = ( value: string ) => {\n\t\tsetSearchValue( value );\n\t};\n\n\tconst handleClose = () => {\n\t\tsetSearchValue( '' );\n\t\tonClose();\n\t};\n\n\treturn (\n\t\t<PopoverBody width={ sectionWidth } id={ id }>\n\t\t\t<PopoverHeader title={ title } onClose={ handleClose } icon={ <IconComponent fontSize=\"tiny\" /> } />\n\t\t\t<SearchField\n\t\t\t\tvalue={ searchValue }\n\t\t\t\tonSearch={ handleSearch }\n\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\tid={ id + '-search' }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t{ filteredItemsList.length > 0 ? (\n\t\t\t\t<ItemList\n\t\t\t\t\titemListItems={ filteredItemsList }\n\t\t\t\t\tsetSelectedItem={ onItemChange }\n\t\t\t\t\thandleClose={ handleClose }\n\t\t\t\t\tselectedItem={ selectedItem }\n\t\t\t\t\titemStyle={ itemStyle }\n\t\t\t\t\tonDebounce={ onDebounce }\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<Stack\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tjustifyContent=\"center\"\n\t\t\t\t\theight=\"100%\"\n\t\t\t\t\tp={ 2.5 }\n\t\t\t\t\tgap={ 1.5 }\n\t\t\t\t\toverflow=\"hidden\"\n\t\t\t\t>\n\t\t\t\t\t<IconComponent fontSize=\"large\" />\n\t\t\t\t\t<Box sx={ { maxWidth: 160, overflow: 'hidden' } }>\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"subtitle2\" color=\"text.secondary\">\n\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography\n\t\t\t\t\t\t\tvariant=\"subtitle2\"\n\t\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\t\tsx={ { display: 'flex', width: '100%', justifyContent: 'center' } }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>“</span>\n\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\tcomponent=\"span\"\n\t\t\t\t\t\t\t\tsx={ { maxWidth: '80%', overflow: 'hidden', textOverflow: 'ellipsis' } }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ searchValue }\n\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t<span>”.</span>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Typography\n\t\t\t\t\t\talign=\"center\"\n\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\tcolor=\"text.secondary\"\n\t\t\t\t\t\tsx={ { display: 'flex', flexDirection: 'column' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t\t\t</Link>\n\t\t\t\t\t</Typography>\n\t\t\t\t</Stack>\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n\ntype ItemListProps = {\n\titemListItems: SelectableItem[];\n\tsetSelectedItem: ( item: string ) => void;\n\thandleClose: () => void;\n\tselectedItem: string | null;\n\titemStyle?: ( item: SelectableItem ) => React.CSSProperties;\n\tonDebounce?: ( name: string ) => void;\n\tdisabledItems?: string[];\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\tdisabled?: boolean;\n};\n\nexport const useFilteredItemsList = ( itemsList: Category[], searchValue: string, disabledItems?: string[] ) => {\n\treturn itemsList.reduce< SelectableItem[] >( ( acc, category ) => {\n\t\tconst filteredItems = category.items.filter( ( item ) =>\n\t\t\titem.toLowerCase().includes( searchValue.toLowerCase() )\n\t\t);\n\n\t\tif ( filteredItems.length ) {\n\t\t\tacc.push( { type: 'category', value: category.label } );\n\n\t\t\tfilteredItems.forEach( ( item ) => {\n\t\t\t\tacc.push( { type: 'item', value: item, disabled: disabledItems?.includes( item ) ?? false } );\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n};\n","type EnqueueFont = ( fontFamily: string, context?: 'preview' | 'editor' ) => void;\n\ntype ExtendedWindow = Window & {\n\telementor?: {\n\t\thelpers?: {\n\t\t\tenqueueFont?: EnqueueFont;\n\t\t};\n\t};\n};\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'editor' ) => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import * as React from 'react';\nimport { urlPropTypeUtil } from '@elementor/editor-props';\nimport { TextField } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const UrlControl = createControl(\n\t( { placeholder, ariaLabel }: { placeholder?: string; ariaLabel?: string } ) => {\n\t\tconst { value, setValue, disabled } = useBoundProp( urlPropTypeUtil );\n\t\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<TextField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { getLinkInLinkRestriction } from '@elementor/editor-elements';\nimport { linkPropTypeUtil, type LinkPropValue } from '@elementor/editor-props';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport { Collapse, Grid, IconButton, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { RestrictedLinkInfotip } from '../components/restricted-link-infotip';\nimport { createControl } from '../create-control';\nimport { type ControlProps } from '../utils/types';\nimport { QueryControl } from './query-control';\nimport { SwitchControl } from './switch-control';\n\ntype Props = ControlProps< {\n\tqueryOptions: {\n\t\tparams: Record< string, unknown >;\n\t\turl: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tlabel?: string;\n\tariaLabel?: string;\n} >;\n\ntype LinkSessionValue = {\n\tvalue?: LinkPropValue[ 'value' ] | null;\n\tmeta?: {\n\t\tisEnabled?: boolean;\n\t};\n};\n\nexport type DestinationProp = LinkPropValue[ 'value' ][ 'destination' ];\n\nconst SIZE = 'tiny';\n\nexport const LinkControl = createControl( ( props: Props ) => {\n\tconst { value, path, setValue, ...propContext } = useBoundProp( linkPropTypeUtil );\n\tconst [ linkSessionValue, setLinkSessionValue ] = useSessionStorage< LinkSessionValue >( path.join( '/' ) );\n\tconst [ isActive, setIsActive ] = useState( !! value );\n\n\tconst {\n\t\tallowCustomValues = true,\n\t\tqueryOptions,\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tcontext: { elementId },\n\t\tlabel = __( 'Link', 'elementor' ),\n\t\tariaLabel,\n\t} = props || {};\n\n\tconst [ linkInLinkRestriction, setLinkInLinkRestriction ] = useState( getLinkInLinkRestriction( elementId ) );\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 onSaveValueToSession = ( newValue: DestinationProp[ 'value' ] | null ) => {\n\t\tconst valueToSave: LinkPropValue[ 'value' ] | null = newValue\n\t\t\t? {\n\t\t\t\t\t...value,\n\t\t\t\t\tdestination: newValue,\n\t\t\t }\n\t\t\t: null;\n\n\t\tsetLinkSessionValue( { ...linkSessionValue, value: valueToSave } );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tmarginInlineEnd: -0.75,\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t<RestrictedLinkInfotip isVisible={ ! isActive } linkInLinkRestriction={ linkInLinkRestriction }>\n\t\t\t\t\t\t<ToggleIconControl\n\t\t\t\t\t\t\tdisabled={ shouldDisableAddingLink }\n\t\t\t\t\t\t\tactive={ isActive }\n\t\t\t\t\t\t\tonIconClick={ onEnabledChange }\n\t\t\t\t\t\t\tlabel={ __( 'Toggle link', 'elementor' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</RestrictedLinkInfotip>\n\t\t\t\t</Stack>\n\t\t\t\t<Collapse in={ isActive } timeout=\"auto\" unmountOnExit>\n\t\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'destination' }>\n\t\t\t\t\t\t\t<QueryControl\n\t\t\t\t\t\t\t\tqueryOptions={ queryOptions }\n\t\t\t\t\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\t\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t\t\tonSetValue={ onSaveValueToSession }\n\t\t\t\t\t\t\t\tariaLabel={ ariaLabel || label }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t<PropKeyProvider bind={ 'isTargetBlank' }>\n\t\t\t\t\t\t\t<Grid container alignItems=\"center\" flexWrap=\"nowrap\" justifyContent=\"space-between\">\n\t\t\t\t\t\t\t\t<Grid item>\n\t\t\t\t\t\t\t\t\t<ControlFormLabel>{ __( 'Open in a new tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item sx={ { marginInlineEnd: -1 } }>\n\t\t\t\t\t\t\t\t\t<SwitchControl />\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Stack>\n\t\t\t\t</Collapse>\n\t\t\t</Stack>\n\t\t</PropProvider>\n\t);\n} );\n\ntype ToggleIconControlProps = {\n\tdisabled: boolean;\n\tactive: boolean;\n\tonIconClick: () => void;\n\tlabel?: string;\n};\n\nconst ToggleIconControl = ( { disabled, active, onIconClick, label }: ToggleIconControlProps ) => {\n\treturn (\n\t\t<IconButton size={ SIZE } onClick={ onIconClick } aria-label={ label } disabled={ disabled }>\n\t\t\t{ active ? <MinusIcon fontSize={ SIZE } /> : <PlusIcon fontSize={ SIZE } /> }\n\t\t</IconButton>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { type LinkInLinkRestriction, selectElement } from '@elementor/editor-elements';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertAction, AlertTitle, Box, Infotip, Link } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst learnMoreButton = {\n\tlabel: __( 'Learn More', 'elementor' ),\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n};\n\nconst INFOTIP_CONTENT = {\n\tdescendant: __(\n\t\t'To add a link 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\tcolor=\"secondary\"\n\t\t\ticon={ <InfoCircleFilledIcon /> }\n\t\t\taction={\n\t\t\t\t<AlertAction\n\t\t\t\t\tsx={ { width: 'fit-content' } }\n\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tonClick={ handleTakeMeClick }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Take me there', 'elementor' ) }\n\t\t\t\t</AlertAction>\n\t\t\t}\n\t\t>\n\t\t\t<AlertTitle>{ __( 'Nested links', 'elementor' ) }</AlertTitle>\n\t\t\t<Box component=\"span\">\n\t\t\t\t{ INFOTIP_CONTENT[ reason ?? 'descendant' ] }{ ' ' }\n\t\t\t\t<Link href={ learnMoreButton.href } target=\"_blank\" color=\"info.main\">\n\t\t\t\t\t{ learnMoreButton.label }\n\t\t\t\t</Link>\n\t\t\t</Box>\n\t\t</Alert>\n\t);\n\n\treturn shouldRestrict && isVisible ? (\n\t\t<Infotip\n\t\t\tplacement=\"right\"\n\t\t\tcontent={ content }\n\t\t\tcolor=\"secondary\"\n\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t>\n\t\t\t<Box>{ children }</Box>\n\t\t</Infotip>\n\t) : (\n\t\t<>{ children }</>\n\t);\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { numberPropTypeUtil, stringPropTypeUtil, urlPropTypeUtil } from '@elementor/editor-props';\nimport { type HttpResponse, httpService } from '@elementor/http-client';\nimport { SearchIcon } from '@elementor/icons';\nimport { debounce } from '@elementor/utils';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport {\n\tAutocomplete,\n\ttype CategorizedOption,\n\tfindMatchingOption,\n\ttype FlatOption,\n\tisCategorizedOptionPool,\n} from '../components/autocomplete';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { type DestinationProp } from './link-control';\n\ntype Props = {\n\tqueryOptions: {\n\t\tparams: Record< string, unknown >;\n\t\turl: string;\n\t};\n\tallowCustomValues?: boolean;\n\tminInputLength?: number;\n\tplaceholder?: string;\n\tonSetValue?: ( value: DestinationProp | null ) => void;\n\tariaLabel?: string;\n};\n\ntype Response = HttpResponse< { value: FlatOption[] | CategorizedOption[] } >;\n\ntype FetchOptionsParams = Record< string, unknown > & { term: string };\n\nexport const QueryControl = createControl( ( props: Props ) => {\n\tconst { value, setValue } = useBoundProp< DestinationProp >();\n\n\tconst {\n\t\tallowCustomValues = true,\n\t\tqueryOptions: { url, params = {} },\n\t\tplaceholder,\n\t\tminInputLength = 2,\n\t\tonSetValue,\n\t\tariaLabel,\n\t} = props || {};\n\n\tconst normalizedPlaceholder = placeholder || __( 'Search', 'elementor' );\n\n\tconst [ options, setOptions ] = useState< FlatOption[] | CategorizedOption[] >(\n\t\tgenerateFirstLoadedOption( value?.value )\n\t);\n\n\tconst onOptionChange = ( newValue: number | null ) => {\n\t\tif ( newValue === null ) {\n\t\t\tsetValue( null );\n\t\t\tonSetValue?.( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst valueToSave = {\n\t\t\t$$type: 'query',\n\t\t\tvalue: {\n\t\t\t\tid: numberPropTypeUtil.create( newValue ),\n\t\t\t\tlabel: stringPropTypeUtil.create( findMatchingOption( options, newValue )?.label || null ),\n\t\t\t},\n\t\t};\n\n\t\tsetValue( valueToSave );\n\t\tonSetValue?.( valueToSave );\n\t};\n\n\tconst onTextChange = ( newValue: string | null ) => {\n\t\tif ( ! newValue ) {\n\t\t\tsetValue( null );\n\t\t\tonSetValue?.( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst newLinkValue = newValue?.trim() || '';\n\t\tconst valueToSave = newLinkValue ? urlPropTypeUtil.create( newLinkValue ) : null;\n\n\t\tsetValue( valueToSave );\n\t\tonSetValue?.( valueToSave );\n\t\tupdateOptions( newValue );\n\t};\n\n\tconst updateOptions = ( newValue: string | null ) => {\n\t\tsetOptions( [] );\n\n\t\tif ( ! newValue || ! url || newValue.length < minInputLength ) {\n\t\t\treturn;\n\t\t}\n\n\t\tdebounceFetch( { ...params, term: newValue } );\n\t};\n\n\tconst debounceFetch = useMemo(\n\t\t() =>\n\t\t\tdebounce(\n\t\t\t\t( queryParams: FetchOptionsParams ) =>\n\t\t\t\t\tfetchOptions( url, queryParams ).then( ( newOptions ) => {\n\t\t\t\t\t\tsetOptions( formatOptions( newOptions ) );\n\t\t\t\t\t} ),\n\t\t\t\t400\n\t\t\t),\n\t\t[ url ]\n\t);\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Autocomplete\n\t\t\t\toptions={ options }\n\t\t\t\tallowCustomValues={ allowCustomValues }\n\t\t\t\tplaceholder={ normalizedPlaceholder }\n\t\t\t\tstartAdornment={ <SearchIcon fontSize=\"tiny\" /> }\n\t\t\t\tvalue={ value?.value?.id?.value || value?.value }\n\t\t\t\tonOptionChange={ onOptionChange }\n\t\t\t\tonTextChange={ onTextChange }\n\t\t\t\tminInputLength={ minInputLength }\n\t\t\t\tdisablePortal={ false }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( ariaLabel ? { 'aria-label': ariaLabel } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n\nasync function fetchOptions( ajaxUrl: string, params: FetchOptionsParams ) {\n\tif ( ! params || ! ajaxUrl ) {\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst { data: response } = await httpService().get< Response >( ajaxUrl, { params } );\n\n\t\treturn response.data.value;\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction formatOptions( options: FlatOption[] | CategorizedOption[] ): FlatOption[] | CategorizedOption[] {\n\tconst compareKey = isCategorizedOptionPool( options ) ? 'groupLabel' : 'label';\n\n\treturn options.sort( ( a, b ) =>\n\t\ta[ compareKey ] && b[ compareKey ] ? a[ compareKey ].localeCompare( b[ compareKey ] ) : 0\n\t);\n}\n\nfunction generateFirstLoadedOption( unionValue: DestinationProp | null ): FlatOption[] {\n\tconst value = unionValue?.id?.value;\n\tconst label = unionValue?.label?.value;\n\tconst type = unionValue?.id?.$$type || 'url';\n\n\treturn value && label && type === 'number'\n\t\t? [\n\t\t\t\t{\n\t\t\t\t\tid: value.toString(),\n\t\t\t\t\tlabel,\n\t\t\t\t},\n\t\t ]\n\t\t: [];\n}\n","import * as React from 'react';\nimport { forwardRef } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport {\n\tAutocomplete as AutocompleteBase,\n\ttype AutocompleteRenderInputParams,\n\tBox,\n\tIconButton,\n\tInputAdornment,\n\tTextField,\n} from '@elementor/ui';\n\nexport type FlatOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel?: never;\n};\n\nexport type CategorizedOption = {\n\tid: string;\n\tlabel: string;\n\tgroupLabel: string;\n};\n\nexport type Props = {\n\toptions: FlatOption[] | CategorizedOption[];\n\tvalue?: number | string | null;\n\tonOptionChange: ( newValue: number | null ) => void;\n\tonTextChange?: ( newValue: string | null ) => void;\n\tallowCustomValues?: boolean;\n\tplaceholder?: string;\n\tminInputLength?: number;\n\tstartAdornment?: React.ReactNode;\n\tinputProps?: Record< string, unknown >;\n\tdisablePortal?: boolean;\n};\n\nexport const Autocomplete = forwardRef( ( props: Props, ref ) => {\n\tconst {\n\t\toptions,\n\t\tonOptionChange,\n\t\tonTextChange,\n\t\tallowCustomValues = false,\n\t\tplaceholder = '',\n\t\tminInputLength = 2,\n\t\tvalue = '',\n\t\tstartAdornment,\n\t\tdisablePortal = true,\n\t\t...restProps\n\t} = props;\n\n\tconst optionKeys = factoryFilter( value, options, minInputLength ).map( ( { id } ) => id );\n\tconst allowClear = !! value;\n\n\t// Prevents MUI warning when freeSolo/allowCustomValues is false\n\tconst muiWarningPreventer = allowCustomValues || !! value?.toString()?.length;\n\n\tconst isOptionEqualToValue = muiWarningPreventer ? undefined : () => true;\n\n\tconst isValueFromOptions = typeof value === 'number' && !! findMatchingOption( options, value );\n\n\tconst valueLength = value?.toString()?.length ?? 0;\n\tconst meetsMinLength = valueLength >= minInputLength;\n\tconst shouldOpen = meetsMinLength && ( allowCustomValues ? optionKeys.length > 0 : true );\n\n\treturn (\n\t\t<AutocompleteBase\n\t\t\t{ ...restProps }\n\t\t\tref={ ref }\n\t\t\tforcePopupIcon={ false }\n\t\t\tdisablePortal={ disablePortal }\n\t\t\tdisableClearable={ true } // Disabled component's auto clear icon to use our custom one instead\n\t\t\tfreeSolo={ allowCustomValues }\n\t\t\topenOnFocus={ false }\n\t\t\topen={ shouldOpen }\n\t\t\tvalue={ value?.toString() || '' }\n\t\t\tsize={ 'tiny' }\n\t\t\tonChange={ ( _, newValue ) => onOptionChange( Number( newValue ) ) }\n\t\t\treadOnly={ isValueFromOptions }\n\t\t\toptions={ optionKeys }\n\t\t\tgetOptionKey={ ( optionId ) => findMatchingOption( options, optionId )?.id || optionId }\n\t\t\tgetOptionLabel={ ( optionId ) => findMatchingOption( options, optionId )?.label || optionId.toString() }\n\t\t\tgroupBy={\n\t\t\t\tisCategorizedOptionPool( options )\n\t\t\t\t\t? ( optionId: string ) => findMatchingOption( options, optionId )?.groupLabel || optionId\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\tisOptionEqualToValue={ isOptionEqualToValue }\n\t\t\tfilterOptions={ () => optionKeys }\n\t\t\trenderOption={ ( optionProps, optionId ) => (\n\t\t\t\t<Box component=\"li\" { ...optionProps } key={ optionProps.id }>\n\t\t\t\t\t{ findMatchingOption( options, optionId )?.label ?? optionId }\n\t\t\t\t</Box>\n\t\t\t) }\n\t\t\trenderInput={ ( params ) => (\n\t\t\t\t<TextInput\n\t\t\t\t\tparams={ params }\n\t\t\t\t\thandleChange={ ( newValue ) => onTextChange?.( newValue ) }\n\t\t\t\t\tallowClear={ allowClear }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\thasSelectedValue={ isValueFromOptions }\n\t\t\t\t\tstartAdornment={ startAdornment }\n\t\t\t\t\textraInputProps={ restProps.inputProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t/>\n\t);\n} );\n\nconst TextInput = ( {\n\tparams,\n\tallowClear,\n\tplaceholder,\n\thandleChange,\n\thasSelectedValue,\n\tstartAdornment,\n\textraInputProps,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n\tplaceholder: string;\n\thasSelectedValue: boolean;\n\tstartAdornment?: React.ReactNode;\n\textraInputProps?: Record< string, unknown >;\n} ) => {\n\tconst onChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\thandleChange( event.target.value );\n\t};\n\n\treturn (\n\t\t<TextField\n\t\t\t{ ...params }\n\t\t\tplaceholder={ placeholder }\n\t\t\tonChange={ onChange }\n\t\t\tinputProps={ { ...( params.inputProps ?? {} ), ...( extraInputProps ?? {} ) } }\n\t\t\tsx={ {\n\t\t\t\t'& .MuiInputBase-input': {\n\t\t\t\t\tcursor: hasSelectedValue ? 'default' : undefined,\n\t\t\t\t},\n\t\t\t} }\n\t\t\tInputProps={ {\n\t\t\t\t...params.InputProps,\n\t\t\t\tstartAdornment: startAdornment ? (\n\t\t\t\t\t<InputAdornment position=\"start\">{ startAdornment }</InputAdornment>\n\t\t\t\t) : (\n\t\t\t\t\tparams.InputProps.startAdornment\n\t\t\t\t),\n\t\t\t\tendAdornment: <ClearButton params={ params } allowClear={ allowClear } handleChange={ handleChange } />,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ClearButton = ( {\n\tallowClear,\n\thandleChange,\n\tparams,\n}: {\n\tparams: AutocompleteRenderInputParams;\n\tallowClear: boolean;\n\thandleChange: ( newValue: string | null ) => void;\n} ) => (\n\t<InputAdornment position=\"end\">\n\t\t{ allowClear && (\n\t\t\t<IconButton size={ params.size } onClick={ () => handleChange( null ) } sx={ { cursor: 'pointer' } }>\n\t\t\t\t<XIcon fontSize={ params.size } />\n\t\t\t</IconButton>\n\t\t) }\n\t</InputAdornment>\n);\n\nexport function findMatchingOption(\n\toptions: FlatOption[] | CategorizedOption[],\n\toptionId: string | number | null = null\n) {\n\tconst formattedOption = ( optionId || '' ).toString();\n\n\treturn options.find( ( { id } ) => formattedOption === id.toString() );\n}\n\nexport function isCategorizedOptionPool( options: FlatOption[] | CategorizedOption[] ): options is CategorizedOption[] {\n\tif ( options.length <= 1 ) {\n\t\treturn false;\n\t}\n\n\tconst uniqueGroupLabels = new Set( options.map( ( option ) => option.groupLabel ) );\n\n\treturn uniqueGroupLabels.size > 1; // should not categorize options if there is only one group\n}\n\nfunction factoryFilter< T extends FlatOption[] | CategorizedOption[] >(\n\tnewValue: string | number | null,\n\toptions: T,\n\tminInputLength: number\n): T {\n\tif ( null === newValue ) {\n\t\treturn options;\n\t}\n\n\tconst formattedValue = String( newValue || '' )?.toLowerCase();\n\n\tif ( formattedValue.length < minInputLength ) {\n\t\treturn new Array( 0 ) as T;\n\t}\n\n\treturn options.filter(\n\t\t( option ) =>\n\t\t\tString( option.id ).toLowerCase().includes( formattedValue ) ||\n\t\t\toption.label.toLowerCase().includes( formattedValue )\n\t) as T;\n}\n","import * as React from 'react';\nimport { booleanPropTypeUtil } from '@elementor/editor-props';\nimport { Box, Switch } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context/use-bound-prop';\nimport { createControl } from '../create-control';\n\nexport const SwitchControl = createControl( () => {\n\tconst { value, setValue, disabled } = useBoundProp( booleanPropTypeUtil );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.checked );\n\t};\n\n\treturn (\n\t\t<Box sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t<Switch\n\t\t\t\tchecked={ !! value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tsize=\"small\"\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tinputProps={ {\n\t\t\t\t\t...( disabled ? { style: { opacity: 0 } } : {} ),\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Box>\n\t);\n} );\n","import * as React from 'react';\nimport { getElementLabel } from '@elementor/editor-elements';\nimport { stringPropTypeUtil, type StringPropValue } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Select, type SelectChangeEvent, styled, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ConditionalControlInfotip } from '../components/conditional-control-infotip';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type SelectOption = {\n\tlabel: string;\n\tvalue: StringPropValue[ 'value' ];\n\tdisabled?: boolean;\n};\n\ntype Props = {\n\toptions: SelectOption[];\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n\tfallbackLabels?: Record< string, string >;\n};\n\nconst StyledSelect = styled( Select )( () => ( { '.MuiSelect-select.Mui-disabled': { cursor: 'not-allowed' } } ) );\n\nexport const HtmlTagControl = createControl( ( { options, onChange, fallbackLabels = {} }: Props ) => {\n\tconst { value, setValue, disabled, placeholder } = useBoundProp( stringPropTypeUtil );\n\tconst handleChange = ( event: SelectChangeEvent< StringPropValue[ 'value' ] > ) => {\n\t\tconst newValue = event.target.value || null;\n\n\t\tonChange?.( newValue, value );\n\t\tsetValue( newValue );\n\t};\n\n\tconst elementLabel = getElementLabel() ?? 'element';\n\tconst infoTipProps = {\n\t\ttitle: __( 'HTML Tag', 'elementor' ),\n\t\t/* translators: %s is the element name. */\n\t\tdescription: __(\n\t\t\t`The tag is locked to 'a' tag because this %s has a link. To pick a different tag, remove the link first.`,\n\t\t\t'elementor'\n\t\t).replace( '%s', elementLabel ),\n\t\tisEnabled: !! disabled,\n\t};\n\n\tconst renderValue = ( selectedValue: string | null ) => {\n\t\tif ( selectedValue ) {\n\t\t\treturn findOptionByValue( selectedValue )?.label || fallbackLabels[ selectedValue ] || selectedValue;\n\t\t}\n\n\t\tif ( ! placeholder ) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst placeholderOption = findOptionByValue( placeholder );\n\t\tconst displayText = placeholderOption?.label || placeholder;\n\n\t\treturn (\n\t\t\t<Typography component=\"span\" variant=\"caption\" color=\"text.tertiary\">\n\t\t\t\t{ displayText }\n\t\t\t</Typography>\n\t\t);\n\t};\n\n\tconst findOptionByValue = ( searchValue: string | null ) => options.find( ( opt ) => opt.value === searchValue );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<ConditionalControlInfotip { ...infoTipProps }>\n\t\t\t\t<StyledSelect\n\t\t\t\t\tsx={ { overflow: 'hidden', cursor: disabled ? 'not-allowed' : undefined } }\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\trenderValue={ renderValue }\n\t\t\t\t\tvalue={ value ?? '' }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\tfullWidth\n\t\t\t\t>\n\t\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t\t<MenuListItem key={ props.value } { ...props } value={ props.value ?? '' }>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t) ) }\n\t\t\t\t</StyledSelect>\n\t\t\t</ConditionalControlInfotip>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { InfoAlert } from '@elementor/editor-ui';\nimport { type AlertProps, AlertTitle, Box, Infotip, type InfotipProps, useTheme } from '@elementor/ui';\nimport { DirectionProvider } from '@elementor/ui';\n\ntype Props = {\n\tinfotipProps?: Partial< InfotipProps >;\n\talertProps?: Partial< AlertProps >;\n\ttitle?: string;\n\tdescription?: React.ReactNode | string;\n\tisEnabled?: boolean;\n};\n\nconst DEFAULT_COLOR = 'secondary';\n\nexport const ConditionalControlInfotip = React.forwardRef(\n\t( { children, title, description, alertProps, infotipProps, ...props }: React.PropsWithChildren< Props >, ref ) => {\n\t\tconst theme = useTheme();\n\t\tconst isUiRtl = 'rtl' === theme.direction;\n\t\tconst isEnabled = props.isEnabled && ( title || description );\n\n\t\treturn (\n\t\t\t<Box ref={ ref }>\n\t\t\t\t{ isEnabled ? (\n\t\t\t\t\t<DirectionProvider rtl={ isUiRtl }>\n\t\t\t\t\t\t<Infotip\n\t\t\t\t\t\t\tplacement={ 'right' }\n\t\t\t\t\t\t\tcolor={ DEFAULT_COLOR }\n\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\t\t\t\toffset: [ 0, 10 ],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t{ ...infotipProps }\n\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t<InfoAlert\n\t\t\t\t\t\t\t\t\tcolor={ DEFAULT_COLOR }\n\t\t\t\t\t\t\t\t\tsx={ { width: 300, px: 1.5, py: 2 } }\n\t\t\t\t\t\t\t\t\t{ ...alertProps }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Box sx={ { flexDirection: 'column', display: 'flex', gap: 0.5 } }>\n\t\t\t\t\t\t\t\t\t\t<AlertTitle>{ title }</AlertTitle>\n\t\t\t\t\t\t\t\t\t\t<Box>{ description }</Box>\n\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t</InfoAlert>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ children }\n\t\t\t\t\t\t</Infotip>\n\t\t\t\t\t</DirectionProvider>\n\t\t\t\t) : (\n\t\t\t\t\tchildren\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { type RefObject, useLayoutEffect, useRef, useState } from 'react';\nimport { layoutDirectionPropTypeUtil, type PropKey, sizePropTypeUtil } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { DetachIcon, LinkIcon } from '@elementor/icons';\nimport { Grid, Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { ControlLabel } from '../components/control-label';\nimport { StyledToggleButton } from '../components/control-toggle-button-group';\nimport { SizeControl } from './size-control';\n\nexport const GapControl = ( { label }: { label: string } ) => {\n\tconst stackRef = useRef< HTMLDivElement >( null );\n\n\tconst { disabled: sizeDisabled } = useBoundProp( sizePropTypeUtil );\n\n\tconst {\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tpropType,\n\t\tplaceholder: directionPlaceholder,\n\t\tdisabled: directionDisabled,\n\t} = useBoundProp( layoutDirectionPropTypeUtil );\n\n\tconst { value: masterValue, setValue: setMasterValue, placeholder: masterPlaceholder } = useBoundProp();\n\n\tconst inferIsLinked = () => {\n\t\tif ( layoutDirectionPropTypeUtil.isValid( masterValue ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( ! masterValue && layoutDirectionPropTypeUtil.isValid( masterPlaceholder ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst [ isLinked, setIsLinked ] = useState( () => inferIsLinked() );\n\n\tconst activeBreakpoint = useActiveBreakpoint();\n\tuseLayoutEffect( () => {\n\t\tsetIsLinked( inferIsLinked() );\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ activeBreakpoint ] );\n\n\tconst onLinkToggle = () => {\n\t\tsetIsLinked( ( prev ) => ! prev );\n\n\t\tif ( ! layoutDirectionPropTypeUtil.isValid( masterValue ) ) {\n\t\t\tconst currentValue = masterValue ? masterValue : null;\n\n\t\t\tif ( ! currentValue ) {\n\t\t\t\tsetMasterValue( null );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetMasterValue(\n\t\t\t\tlayoutDirectionPropTypeUtil.create( {\n\t\t\t\t\trow: currentValue,\n\t\t\t\t\tcolumn: currentValue,\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentValue = directionValue?.column ?? directionValue?.row ?? null;\n\n\t\tsetMasterValue( currentValue );\n\t};\n\n\tconst tooltipLabel = label.toLowerCase();\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\t// translators: %s: Tooltip title.\n\tconst linkedLabel = __( 'Link %s', 'elementor' ).replace( '%s', tooltipLabel );\n\t// translators: %s: Tooltip title.\n\tconst unlinkedLabel = __( 'Unlink %s', 'elementor' ).replace( '%s', tooltipLabel );\n\n\tconst disabled = sizeDisabled || directionDisabled;\n\n\tconst propProviderProps = {\n\t\tpropType,\n\t\tvalue: directionValue,\n\t\tsetValue: setDirectionValue,\n\t\tplaceholder: directionPlaceholder,\n\t};\n\n\tconst hasPlaceholders = ! masterValue && ( directionPlaceholder || masterPlaceholder );\n\n\treturn (\n\t\t<PropProvider { ...propProviderProps }>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<Tooltip title={ isLinked ? unlinkedLabel : linkedLabel } placement=\"top\">\n\t\t\t\t\t<StyledToggleButton\n\t\t\t\t\t\taria-label={ isLinked ? unlinkedLabel : linkedLabel }\n\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\tonChange={ onLinkToggle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tisPlaceholder={ hasPlaceholders }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t\t</StyledToggleButton>\n\t\t\t\t</Tooltip>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ stackRef }>\n\t\t\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Column', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control 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 { useCurrentUserCapabilities } from '@elementor/editor-current-user';\nimport { imageSrcPropTypeUtil } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, CircularProgress, Stack, styled, ThemeProvider } from '@elementor/ui';\nimport { type OpenOptions, useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { ConditionalControlInfotip } from '../components/conditional-control-infotip';\nimport { EnableUnfilteredModal } from '../components/enable-unfiltered-modal';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { useUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\nconst TILE_SIZE = 8;\nconst TILE_WHITE = 'transparent';\nconst TILE_BLACK = '#c1c1c1';\nconst TILES_GRADIENT_FORMULA = `linear-gradient(45deg, ${ TILE_BLACK } 25%, ${ TILE_WHITE } 0, ${ TILE_WHITE } 75%, ${ TILE_BLACK } 0, ${ TILE_BLACK })`;\n\nconst StyledCard = styled( Card )`\n\tbackground-color: white;\n\tbackground-image: ${ TILES_GRADIENT_FORMULA }, ${ TILES_GRADIENT_FORMULA };\n\tbackground-size: ${ TILE_SIZE }px ${ TILE_SIZE }px;\n\tbackground-position:\n\t\t0 0,\n\t\t${ TILE_SIZE / 2 }px ${ TILE_SIZE / 2 }px;\n\tborder: none;\n`;\n\nconst StyledCardMediaContainer = styled( Stack )`\n\tposition: relative;\n\theight: 140px;\n\tobject-fit: contain;\n\tpadding: 5px;\n\tjustify-content: center;\n\talign-items: center;\n\tbackground-color: rgba( 255, 255, 255, 0.37 );\n`;\n\nconst MODE_BROWSE: OpenOptions = { mode: 'browse' };\nconst MODE_UPLOAD: OpenOptions = { mode: 'upload' };\n\nexport const SvgMediaControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( imageSrcPropTypeUtil );\n\tconst { id, url } = value ?? {};\n\tconst { data: attachment, isFetching } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url?.value ?? null;\n\tconst { data: allowSvgUpload } = useUnfilteredFilesUpload();\n\tconst [ unfilteredModalOpenState, setUnfilteredModalOpenState ] = useState( false );\n\tconst { canUser } = useCurrentUserCapabilities();\n\tconst canManageOptions = canUser( 'manage_options' );\n\n\tconst { open } = useWpMediaFrame( {\n\t\tmediaTypes: [ 'svg' ],\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\tid: {\n\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t},\n\t\t\t\turl: null,\n\t\t\t} );\n\t\t},\n\t} );\n\n\tconst onCloseUnfilteredModal = ( enabled: boolean ) => {\n\t\tsetUnfilteredModalOpenState( false );\n\n\t\tif ( enabled ) {\n\t\t\topen( MODE_UPLOAD );\n\t\t}\n\t};\n\n\tconst handleClick = ( openOptions?: OpenOptions ) => {\n\t\tif ( ! allowSvgUpload && openOptions === MODE_UPLOAD ) {\n\t\t\tsetUnfilteredModalOpenState( true );\n\t\t} else {\n\t\t\topen( openOptions );\n\t\t}\n\t};\n\n\tconst infotipProps = {\n\t\ttitle: __( \"Sorry, you can't upload that file yet.\", 'elementor' ),\n\t\tdescription: (\n\t\t\t<>\n\t\t\t\t{ __( 'To upload them anyway, ask the site administrator to enable unfiltered', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t{ __( 'file uploads.', 'elementor' ) }\n\t\t\t</>\n\t\t),\n\t\tisEnabled: ! canManageOptions,\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1 } aria-label=\"SVG Control\">\n\t\t\t<EnableUnfilteredModal open={ unfilteredModalOpenState } onClose={ onCloseUnfilteredModal } />\n\t\t\t<ControlActions>\n\t\t\t\t<StyledCard variant=\"outlined\">\n\t\t\t\t\t<StyledCardMediaContainer>\n\t\t\t\t\t\t{ isFetching ? (\n\t\t\t\t\t\t\t<CircularProgress role=\"progressbar\" />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<CardMedia\n\t\t\t\t\t\t\t\tcomponent=\"img\"\n\t\t\t\t\t\t\t\timage={ src }\n\t\t\t\t\t\t\t\talt={ __( 'Preview SVG', 'elementor' ) }\n\t\t\t\t\t\t\t\tsx={ { maxHeight: '140px', width: '50px' } }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</StyledCardMediaContainer>\n\t\t\t\t\t<CardOverlay\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba( 0, 0, 0, 0.75 )',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\t\tonClick={ () => handleClick( MODE_BROWSE ) }\n\t\t\t\t\t\t\t\taria-label=\"Select SVG\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Select SVG', 'elementor' ) }\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<ConditionalControlInfotip { ...infotipProps }>\n\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t<ThemeProvider colorScheme={ canManageOptions ? 'light' : 'dark' }>\n\t\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\t\t\t\t\tdisabled={ canManageOptions ? false : true }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => canManageOptions && handleClick( MODE_UPLOAD ) }\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Upload SVG\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ __( 'Upload', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t\t</ThemeProvider>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</ConditionalControlInfotip>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</CardOverlay>\n\t\t\t\t</StyledCard>\n\t\t\t</ControlActions>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport {\n\tButton,\n\tCircularProgress,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogHeader,\n\tDialogTitle,\n\tDivider,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useUpdateUnfilteredFilesUpload } from '../hooks/use-unfiltered-files-upload';\n\ntype EnableUnfilteredModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n};\n\ntype LocalModalProps = {\n\topen: boolean;\n\tonClose: ( enabled: boolean ) => void;\n\tisPending?: boolean;\n\tisError?: boolean;\n\thandleEnable: () => void;\n};\n\nconst ADMIN_TITLE_TEXT = __( 'Enable Unfiltered Uploads', 'elementor' );\nconst ADMIN_CONTENT_TEXT = __(\n\t'Before you enable unfiltered files upload, note that such files include a security risk. Elementor does run a process to remove possible malicious code, but there is still risk involved when using such files.',\n\t'elementor'\n);\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT1 = __( 'Failed to enable unfiltered files upload.', 'elementor' );\n\nconst ADMIN_FAILED_CONTENT_TEXT_PT2 = __(\n\t'You can try again, if the problem persists, please contact support.',\n\t'elementor'\n);\n\nconst WAIT_FOR_CLOSE_TIMEOUT_MS = 300;\n\nexport const EnableUnfilteredModal = ( props: EnableUnfilteredModalProps ) => {\n\tconst { mutateAsync, isPending } = useUpdateUnfilteredFilesUpload();\n\tconst [ isError, setIsError ] = useState( false );\n\n\tconst onClose = ( enabled: boolean ) => {\n\t\tprops.onClose( enabled );\n\t\tsetTimeout( () => setIsError( false ), WAIT_FOR_CLOSE_TIMEOUT_MS );\n\t};\n\n\tconst handleEnable = async () => {\n\t\ttry {\n\t\t\tconst response = await mutateAsync( { allowUnfilteredFilesUpload: true } );\n\t\t\tif ( response?.data?.success === false ) {\n\t\t\t\tsetIsError( true );\n\t\t\t} else {\n\t\t\t\tprops.onClose( true );\n\t\t\t}\n\t\t} catch {\n\t\t\tsetIsError( true );\n\t\t}\n\t};\n\n\tconst dialogProps = { ...props, isPending, handleEnable, isError, onClose };\n\n\treturn <AdminDialog { ...dialogProps } />;\n};\n\nconst AdminDialog = ( { open, onClose, handleEnable, isPending, isError }: LocalModalProps ) => (\n\t<Dialog open={ open } maxWidth={ 'sm' } onClose={ () => onClose( false ) }>\n\t\t<DialogHeader logo={ false }>\n\t\t\t<DialogTitle>{ ADMIN_TITLE_TEXT }</DialogTitle>\n\t\t</DialogHeader>\n\t\t<Divider />\n\t\t<DialogContent>\n\t\t\t<DialogContentText>\n\t\t\t\t{ isError ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ ADMIN_FAILED_CONTENT_TEXT_PT1 } <br /> { ADMIN_FAILED_CONTENT_TEXT_PT2 }\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tADMIN_CONTENT_TEXT\n\t\t\t\t) }\n\t\t\t</DialogContentText>\n\t\t</DialogContent>\n\t\t<DialogActions>\n\t\t\t<Button size={ 'medium' } color=\"secondary\" onClick={ () => onClose( false ) }>\n\t\t\t\t{ __( 'Cancel', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Button\n\t\t\t\tsize={ 'medium' }\n\t\t\t\tonClick={ () => handleEnable() }\n\t\t\t\tvariant=\"contained\"\n\t\t\t\tcolor=\"primary\"\n\t\t\t\tdisabled={ isPending }\n\t\t\t>\n\t\t\t\t{ isPending ? <CircularProgress size={ 24 } /> : __( 'Enable', 'elementor' ) }\n\t\t\t</Button>\n\t\t</DialogActions>\n\t</Dialog>\n);\n","import * as React from 'react';\nimport { backgroundPropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlLabel } from '../../components/control-label';\nimport { createControl } from '../../create-control';\nimport { ColorControl } from '../color-control';\nimport { SelectControl } from '../select-control';\nimport { BackgroundOverlayRepeaterControl } from './background-overlay/background-overlay-repeater-control';\n\nconst clipOptions = [\n\t{ label: __( 'Full element', 'elementor' ), value: 'border-box' },\n\t{ label: __( 'Padding edges', 'elementor' ), value: 'padding-box' },\n\t{ label: __( 'Content edges', 'elementor' ), value: 'content-box' },\n\t{ label: __( 'Text', 'elementor' ), value: 'text' },\n];\n\nconst colorLabel = __( 'Color', 'elementor' );\nconst clipLabel = __( 'Clipping', 'elementor' );\n\nexport const BackgroundControl = createControl( () => {\n\tconst propContext = useBoundProp( backgroundPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind=\"background-overlay\">\n\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t</PropKeyProvider>\n\t\t\t<BackgroundColorField />\n\t\t\t<BackgroundClipField />\n\t\t</PropProvider>\n\t);\n} );\n\nconst BackgroundColorField = () => {\n\treturn (\n\t\t<PropKeyProvider bind=\"color\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ colorLabel }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n\nconst BackgroundClipField = () => {\n\treturn (\n\t\t<PropKeyProvider bind=\"clip\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ clipLabel }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SelectControl options={ clipOptions } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropKeyProvider>\n\t);\n};\n","import * as React from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n\tbackgroundOverlayPropTypeUtil,\n\tcolorPropTypeUtil,\n} from '@elementor/editor-props';\nimport { Box, CardMedia, styled, Tab, TabPanel, Tabs, type Theme, UnstableColorIndicator } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlRepeater, ItemsContainer, TooltipAddItemAction } from '../../../components/control-repeater';\nimport { DisableItemAction } from '../../../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../../../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../../../components/control-repeater/actions/remove-item-action';\nimport { useRepeaterContext } from '../../../components/control-repeater/context/repeater-context';\nimport { EditItemPopover } from '../../../components/control-repeater/items/edit-item-popover';\nimport { Item } from '../../../components/control-repeater/items/item';\nimport { type CollectionPropUtil, type RepeatablePropValue } from '../../../components/control-repeater/types';\nimport { PopoverContent } from '../../../components/popover-content';\nimport { RepeaterHeader } from '../../../components/repeater/repeater-header';\nimport { createControl } from '../../../create-control';\nimport { env } from '../../../env';\nimport { ColorControl } from '../../color-control';\nimport { ImageControl } from '../../image-control';\nimport {\n\tBackgroundGradientColorControl,\n\ttype ColorStop,\n\tinitialBackgroundGradientOverlay,\n} from '../background-gradient-color-control';\nimport { BackgroundImageOverlayAttachment } from './background-image-overlay/background-image-overlay-attachment';\nimport { BackgroundImageOverlayPosition } from './background-image-overlay/background-image-overlay-position';\nimport { BackgroundImageOverlayRepeat } from './background-image-overlay/background-image-overlay-repeat';\nimport { BackgroundImageOverlaySize } from './background-image-overlay/background-image-overlay-size';\nimport { type BackgroundImageOverlay } from './types';\nimport { useBackgroundTabsHistory } from './use-background-tabs-history';\n\nconst DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR = '#00000033';\n\nexport const initialBackgroundColorOverlay: BackgroundOverlayItemPropValue = backgroundColorOverlayPropTypeUtil.create(\n\t{\n\t\tcolor: colorPropTypeUtil.create( DEFAULT_BACKGROUND_COLOR_OVERLAY_COLOR ),\n\t}\n);\n\nexport const getInitialBackgroundOverlay = (): BackgroundOverlayItemPropValue => ( {\n\t$$type: 'background-image-overlay',\n\tvalue: {\n\t\timage: {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: {\n\t\t\t\t\t$$type: 'image-src',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\turl: {\n\t\t\t\t\t\t\t$$type: 'url',\n\t\t\t\t\t\t\tvalue: env.background_placeholder_image,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tid: null,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsize: {\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t\tvalue: 'large',\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n} );\n\nconst backgroundResolutionOptions = [\n\t{ label: __( 'Thumbnail - 150 x 150', 'elementor' ), value: 'thumbnail' },\n\t{ label: __( 'Medium - 300 x 300', 'elementor' ), value: 'medium' },\n\t{ label: __( 'Large 1024 x 1024', 'elementor' ), value: 'large' },\n\t{ label: __( 'Full', 'elementor' ), value: 'full' },\n];\n\nexport const BackgroundOverlayRepeaterControl = createControl( () => {\n\tconst { propType, value: overlayValues, setValue } = useBoundProp( backgroundOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ overlayValues } setValue={ setValue }>\n\t\t\t<ControlRepeater\n\t\t\t\tinitial={ getInitialBackgroundOverlay() as RepeatablePropValue }\n\t\t\t\tpropTypeUtil={ backgroundOverlayPropTypeUtil as CollectionPropUtil< RepeatablePropValue > }\n\t\t\t>\n\t\t\t\t<RepeaterHeader label={ __( 'Overlay', 'elementor' ) }>\n\t\t\t\t\t<TooltipAddItemAction newItemIndex={ 0 } />\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DuplicateItemAction />\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<ItemContent />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n} );\n\nexport const ItemContent = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useBackgroundTabsHistory( {\n\t\timage: getInitialBackgroundOverlay().value,\n\t\tcolor: initialBackgroundColorOverlay.value,\n\t\tgradient: initialBackgroundGradientOverlay.value,\n\t} );\n\n\tconst { rowRef } = useRepeaterContext();\n\n\treturn (\n\t\t<Box sx={ { width: '100%' } }>\n\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t<Tabs\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\taria-label={ __( 'Background Overlay', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<Tab label={ __( 'Image', 'elementor' ) } { ...getTabProps( 'image' ) } />\n\t\t\t\t\t<Tab label={ __( 'Gradient', 'elementor' ) } { ...getTabProps( 'gradient' ) } />\n\t\t\t\t\t<Tab label={ __( 'Color', 'elementor' ) } { ...getTabProps( 'color' ) } />\n\t\t\t\t</Tabs>\n\t\t\t</Box>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'image' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ImageOverlayContent />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'gradient' ) }>\n\t\t\t\t<BackgroundGradientColorControl />\n\t\t\t</TabPanel>\n\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( 'color' ) }>\n\t\t\t\t<PopoverContent>\n\t\t\t\t\t<ColorOverlayContent anchorEl={ rowRef } />\n\t\t\t\t</PopoverContent>\n\t\t\t</TabPanel>\n\t\t</Box>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: RepeatablePropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemIconImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemIconColor value={ value as BackgroundOverlayItemPropValue } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemIconGradient value={ value as BackgroundOverlayItemPropValue } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst extractColorFrom = ( prop: BackgroundOverlayItemPropValue ) => {\n\tif ( prop?.value?.color?.value ) {\n\t\treturn prop.value.color.value;\n\t}\n\n\treturn '';\n};\n\nconst ItemIconColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ color } />;\n};\n\nconst ItemIconImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn (\n\t\t<CardMedia\n\t\t\timage={ imageUrl }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\theight: '1rem',\n\t\t\t\twidth: '1rem',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\t\t\t\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nconst ItemIconGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst gradient = getGradientValue( value );\n\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ gradient } />;\n};\n\nexport const ItemLabel = ( { value }: { value: RepeatablePropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase 'background-image-overlay':\n\t\t\treturn <ItemLabelImage value={ value as BackgroundImageOverlay } />;\n\t\tcase 'background-color-overlay':\n\t\t\treturn <ItemLabelColor value={ value as BackgroundOverlayItemPropValue } />;\n\t\tcase 'background-gradient-overlay':\n\t\t\treturn <ItemLabelGradient value={ value as BackgroundOverlayItemPropValue } />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nconst ItemLabelColor = ( { value: prop }: { value: BackgroundOverlayItemPropValue } ) => {\n\tconst color = extractColorFrom( prop );\n\treturn <span>{ color }</span>;\n};\n\nconst ItemLabelImage = ( { value }: { value: BackgroundImageOverlay } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn <span>{ imageTitle }</span>;\n};\n\nconst ItemLabelGradient = ( { value }: { value: BackgroundOverlayItemPropValue } ) => {\n\tif ( value.value.type.value === 'linear' ) {\n\t\treturn <span>{ __( 'Linear Gradient', 'elementor' ) }</span>;\n\t}\n\n\treturn <span>{ __( 'Radial Gradient', 'elementor' ) }</span>;\n};\n\nconst ColorOverlayContent = ( { anchorEl }: { anchorEl: HTMLElement | null } ) => {\n\tconst propContext = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'color' }>\n\t\t\t\t<ColorControl anchorEl={ anchorEl } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst ImageOverlayContent = () => {\n\tconst propContext = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...propContext }>\n\t\t\t<PropKeyProvider bind={ 'image' }>\n\t\t\t\t<ImageControl sizes={ backgroundResolutionOptions } />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'position' }>\n\t\t\t\t<BackgroundImageOverlayPosition />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'repeat' }>\n\t\t\t\t<BackgroundImageOverlayRepeat />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'size' }>\n\t\t\t\t<BackgroundImageOverlaySize />\n\t\t\t</PropKeyProvider>\n\t\t\t<PropKeyProvider bind={ 'attachment' }>\n\t\t\t\t<BackgroundImageOverlayAttachment />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\theight: '1rem',\n\twidth: '1rem',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n} ) );\n\nconst useImage = ( image: BackgroundImageOverlay ) => {\n\tlet imageTitle,\n\t\timageUrl: string | null = null;\n\n\tconst imageSrc = image?.value.image.value?.src.value;\n\tconst { data: attachment } = useWpMediaAttachment( imageSrc.id?.value || null );\n\n\tif ( imageSrc.id ) {\n\t\tconst imageFileTypeExtension = getFileExtensionFromFilename( attachment?.filename );\n\t\timageTitle = `${ attachment?.title }${ imageFileTypeExtension }` || null;\n\t\timageUrl = attachment?.url || null;\n\t} else if ( imageSrc.url ) {\n\t\timageUrl = imageSrc.url.value;\n\t\timageTitle = imageUrl?.substring( imageUrl.lastIndexOf( '/' ) + 1 ) || null;\n\t}\n\n\treturn { imageTitle, imageUrl };\n};\n\nconst getFileExtensionFromFilename = ( filename?: string ) => {\n\tif ( ! filename ) {\n\t\treturn '';\n\t}\n\n\t// get the substring after the last . in the filename\n\tconst extension = filename.substring( filename.lastIndexOf( '.' ) + 1 );\n\n\treturn `.${ extension }`;\n};\n\nconst getGradientValue = ( value: BackgroundOverlayItemPropValue ) => {\n\tconst gradient = value.value;\n\n\tconst stops = gradient.stops.value\n\t\t?.map( ( { value: { color, offset } }: ColorStop ) => `${ color.value } ${ offset.value ?? 0 }%` )\n\t\t?.join( ',' );\n\n\tif ( gradient.type.value === 'linear' ) {\n\t\treturn `linear-gradient(${ gradient.angle.value }deg, ${ stops })`;\n\t}\n\n\treturn `radial-gradient(circle at ${ gradient.positions.value }, ${ stops })`;\n};\n","import { parseEnv } from '@elementor/env';\n\nexport const { env } = parseEnv< {\n\tbackground_placeholder_image: string;\n} >( '@elementor/editor-controls' );\n","import * as React from 'react';\nimport {\n\tbackgroundGradientOverlayPropTypeUtil,\n\ttype BackgroundGradientOverlayPropValue,\n\ttype BackgroundOverlayItemPropValue,\n\tcolorPropTypeUtil,\n\ttype ColorPropValue,\n\tcolorStopPropTypeUtil,\n\tgradientColorStopPropTypeUtil,\n\tnumberPropTypeUtil,\n\ttype NumberPropValue,\n\tstringPropTypeUtil,\n\ttype TransformablePropValue,\n} from '@elementor/editor-props';\nimport { UnstableGradientBox } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { createControl } from '../../create-control';\n\nexport type ColorStop = TransformablePropValue<\n\t'color-stop',\n\t{\n\t\tcolor: ColorPropValue;\n\t\toffset: NumberPropValue;\n\t}\n>;\n\nexport const BackgroundGradientColorControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst handleChange = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => {\n\t\tconst transformedValue = createTransformableValue( newValue );\n\n\t\tif ( transformedValue.positions ) {\n\t\t\ttransformedValue.positions = stringPropTypeUtil.create( newValue.positions.join( ' ' ) );\n\t\t}\n\n\t\tsetValue( transformedValue );\n\t};\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst createTransformableValue = ( newValue: BackgroundGradientOverlayPropValue[ 'value' ] ) => ( {\n\t\t...newValue,\n\t\ttype: stringPropTypeUtil.create( newValue.type ),\n\t\tangle: numberPropTypeUtil.create( newValue.angle ),\n\t\tstops: gradientColorStopPropTypeUtil.create(\n\t\t\tnewValue.stops.map( ( { color, offset }: { color: string; offset: number } ) =>\n\t\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\t\tcolor: colorPropTypeUtil.create( color ),\n\t\t\t\t\toffset: numberPropTypeUtil.create( offset ),\n\t\t\t\t} )\n\t\t\t)\n\t\t),\n\t} );\n\n\t// TODO: To support Global variables this won't be needed when we have a flexible Gradient Box\n\tconst normalizeValue = () => {\n\t\tif ( ! value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { type, angle, stops, positions } = value;\n\n\t\treturn {\n\t\t\ttype: type.value,\n\t\t\tangle: angle.value,\n\t\t\tstops: stops.value.map( ( { value: { color, offset } }: ColorStop ) => ( {\n\t\t\t\tcolor: color.value,\n\t\t\t\toffset: offset.value,\n\t\t\t} ) ),\n\t\t\tpositions: positions?.value.split( ' ' ),\n\t\t};\n\t};\n\n\treturn (\n\t\t<UnstableGradientBox\n\t\t\tsx={ { width: 'auto', padding: 1.5 } }\n\t\t\tvalue={ normalizeValue() }\n\t\t\tonChange={ handleChange }\n\t\t/>\n\t);\n} );\n\nexport const initialBackgroundGradientOverlay: BackgroundOverlayItemPropValue =\n\tbackgroundGradientOverlayPropTypeUtil.create( {\n\t\ttype: stringPropTypeUtil.create( 'linear' ),\n\t\tangle: numberPropTypeUtil.create( 180 ),\n\t\tstops: gradientColorStopPropTypeUtil.create( [\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(0,0,0)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 0 ),\n\t\t\t} ),\n\t\t\tcolorStopPropTypeUtil.create( {\n\t\t\t\tcolor: colorPropTypeUtil.create( 'rgb(255,255,255)' ),\n\t\t\t\toffset: numberPropTypeUtil.create( 100 ),\n\t\t\t} ),\n\t\t] ),\n\t} );\n","import * as React from 'react';\nimport { PinIcon, PinnedOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Attachment = 'fixed' | 'scroll';\n\nconst attachmentControlOptions: ToggleButtonGroupItem< Attachment >[] = [\n\t{\n\t\tvalue: 'fixed',\n\t\tlabel: __( 'Fixed', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'scroll',\n\t\tlabel: __( 'Scroll', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PinnedOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayAttachment = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Attachment', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t<ToggleControl options={ attachmentControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImagePositionOffsetPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport ControlActions from '../../../../control-actions/control-actions';\nimport { SizeControl } from '../../../size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst backgroundPositionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const BackgroundImageOverlayPosition = () => {\n\tconst backgroundImageOffsetContext = useBoundProp( backgroundImagePositionOffsetPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageOffsetContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tbackgroundImageOffsetContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end', overflow: 'hidden' } }>\n\t\t\t\t\t\t<ControlActions>\n\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t\t( backgroundImageOffsetContext.value ? 'custom' : stringPropContext.value ) ?? ''\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ backgroundPositionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t</ControlActions>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageOffsetContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { DotsHorizontalIcon, DotsVerticalIcon, GridDotsIcon, XIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport { type ToggleButtonGroupItem } from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { ToggleControl } from '../../../toggle-control';\n\ntype Repeaters = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';\n\nconst repeatControlOptions: ToggleButtonGroupItem< Repeaters >[] = [\n\t{\n\t\tvalue: 'repeat',\n\t\tlabel: __( 'Repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <GridDotsIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-x',\n\t\tlabel: __( 'Repeat-x', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsHorizontalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'repeat-y',\n\t\tlabel: __( 'Repeat-y', 'elementor' ),\n\t\trenderContent: ( { size } ) => <DotsVerticalIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'no-repeat',\n\t\tlabel: __( 'No-repeat', 'elementor' ),\n\t\trenderContent: ( { size } ) => <XIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlayRepeat = () => {\n\treturn (\n\t\t<PopoverGridContainer>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ __( 'Repeat', 'elementor' ) }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t<ToggleControl options={ repeatControlOptions } />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { backgroundImageSizeScalePropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tArrowBarBothIcon,\n\tArrowsMaximizeIcon,\n\tArrowsMoveHorizontalIcon,\n\tArrowsMoveVerticalIcon,\n\tLetterAIcon,\n\tPencilIcon,\n} from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../../components/control-form-label';\nimport {\n\tControlToggleButtonGroup,\n\ttype ToggleButtonGroupItem,\n} from '../../../../components/control-toggle-button-group';\nimport { PopoverGridContainer } from '../../../../components/popover-grid-container';\nimport { SizeControl } from '../../../size-control';\n\ntype Sizes = 'auto' | 'cover' | 'contain' | 'custom';\n\nconst sizeControlOptions: ToggleButtonGroupItem< Sizes >[] = [\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterAIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'cover',\n\t\tlabel: __( 'Cover', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowsMaximizeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'contain',\n\t\tlabel: __( 'Contain', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBarBothIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'custom',\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const BackgroundImageOverlaySize = () => {\n\tconst backgroundImageScaleContext = useBoundProp( backgroundImageSizeScalePropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! backgroundImageScaleContext.value;\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\tconst handleSizeChange = ( size: Sizes | null ) => {\n\t\tif ( size === 'custom' ) {\n\t\t\tbackgroundImageScaleContext.setValue( { width: null, height: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( size );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Size', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\texclusive\n\t\t\t\t\t\t\titems={ sizeControlOptions }\n\t\t\t\t\t\t\tonChange={ handleSizeChange }\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\t( backgroundImageScaleContext.value ? 'custom' : stringPropContext.value ) as Sizes\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</Grid>\n\t\t\t{ isCustom ? (\n\t\t\t\t<PropProvider { ...backgroundImageScaleContext }>\n\t\t\t\t\t<Grid item xs={ 12 } ref={ rowRef }>\n\t\t\t\t\t\t<PopoverGridContainer>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'width' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveHorizontalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'height' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <ArrowsMoveVerticalIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</PopoverGridContainer>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) : null }\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tbackgroundColorOverlayPropTypeUtil,\n\tbackgroundGradientOverlayPropTypeUtil,\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../../bound-prop-context';\nimport { type BackgroundImageOverlay } from './types';\n\ntype OverlayType = 'image' | 'gradient' | 'color';\n\ntype InitialBackgroundValues = {\n\tcolor: BackgroundOverlayItemPropValue[ 'value' ];\n\timage: BackgroundImageOverlay[ 'value' ];\n\tgradient: BackgroundOverlayItemPropValue[ 'value' ];\n};\n\nexport const useBackgroundTabsHistory = ( {\n\tcolor: initialBackgroundColorOverlay,\n\timage: initialBackgroundImageOverlay,\n\tgradient: initialBackgroundGradientOverlay,\n}: InitialBackgroundValues ) => {\n\tconst { value: imageValue, setValue: setImageValue } = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\tconst { value: colorValue, setValue: setColorValue } = useBoundProp( backgroundColorOverlayPropTypeUtil );\n\tconst { value: gradientValue, setValue: setGradientValue } = useBoundProp( backgroundGradientOverlayPropTypeUtil );\n\n\tconst getCurrentOverlayType = (): OverlayType => {\n\t\tif ( colorValue ) {\n\t\t\treturn 'color';\n\t\t}\n\n\t\tif ( gradientValue ) {\n\t\t\treturn 'gradient';\n\t\t}\n\n\t\treturn 'image';\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< OverlayType >( getCurrentOverlayType() );\n\n\tconst valuesHistory = useRef< InitialBackgroundValues >( {\n\t\timage: initialBackgroundImageOverlay,\n\t\tcolor: initialBackgroundColorOverlay,\n\t\tgradient: initialBackgroundGradientOverlay,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialBackgroundValues, value: BackgroundOverlayItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: OverlayType ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase 'image':\n\t\t\t\tsetImageValue( valuesHistory.current.image );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'gradient':\n\t\t\t\tsetGradientValue( valuesHistory.current.gradient );\n\n\t\t\t\tsaveToHistory( 'color', colorValue );\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'color':\n\t\t\t\tsetColorValue( valuesHistory.current.color );\n\n\t\t\t\tsaveToHistory( 'image', imageValue );\n\t\t\t\tsaveToHistory( 'gradient', gradientValue );\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\treturn {\n\t\tgetTabProps,\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { createArrayPropUtils, type SizePropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\n\nimport { PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlRepeater, Item, TooltipAddItemAction } from '../components/control-repeater';\nimport { DisableItemAction } from '../components/control-repeater/actions/disable-item-action';\nimport { DuplicateItemAction } from '../components/control-repeater/actions/duplicate-item-action';\nimport { RemoveItemAction } from '../components/control-repeater/actions/remove-item-action';\nimport { type TooltipAddItemActionProps } from '../components/control-repeater/actions/tooltip-add-item-action';\nimport { EditItemPopover } from '../components/control-repeater/items/edit-item-popover';\nimport { ItemsContainer } from '../components/control-repeater/items/items-container';\nimport { type CollectionPropUtil, type RepeatablePropValue } from '../components/control-repeater/types';\nimport { PopoverContent } from '../components/popover-content';\nimport { PopoverGridContainer } from '../components/popover-grid-container';\nimport { RepeaterHeader } from '../components/repeater/repeater-header';\nimport { createControl } from '../create-control';\nimport {\n\ttype ChildControlConfig,\n\tRepeatableControlContext,\n\tuseRepeatableControlContext,\n} from '../hooks/use-repeatable-control-context';\nimport { CUSTOM_SIZE_LABEL } from './size-control';\n\ntype RepeatableControlProps = {\n\tlabel: string;\n\trepeaterLabel: string;\n\tchildControlConfig: ChildControlConfig;\n\tshowDuplicate?: boolean;\n\tshowToggle?: boolean;\n\tinitialValues?: object;\n\tpatternLabel?: string;\n\tplaceholder?: string;\n\tpropKey?: string;\n\taddItemTooltipProps?: TooltipAddItemActionProps;\n};\n\nconst PLACEHOLDER_REGEX = /\\$\\{([^}]+)\\}/g;\n\nexport const RepeatableControl = createControl(\n\t( {\n\t\trepeaterLabel,\n\t\tchildControlConfig,\n\t\tshowDuplicate,\n\t\tshowToggle,\n\t\tinitialValues,\n\t\tpatternLabel,\n\t\tplaceholder,\n\t\tpropKey,\n\t\taddItemTooltipProps,\n\t}: RepeatableControlProps ) => {\n\t\tconst { propTypeUtil: childPropTypeUtil, isItemDisabled } = childControlConfig;\n\n\t\tif ( ! childPropTypeUtil ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst childArrayPropTypeUtil = useMemo(\n\t\t\t() => createArrayPropUtils( childPropTypeUtil.key, childPropTypeUtil.schema, propKey ),\n\t\t\t[ childPropTypeUtil.key, childPropTypeUtil.schema, propKey ]\n\t\t);\n\n\t\tconst contextValue = useMemo(\n\t\t\t() => ( {\n\t\t\t\t...childControlConfig,\n\t\t\t\tplaceholder: placeholder || '',\n\t\t\t\tpatternLabel: patternLabel || '',\n\t\t\t} ),\n\t\t\t[ childControlConfig, placeholder, patternLabel ]\n\t\t);\n\n\t\tconst { propType, value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\n\t\treturn (\n\t\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue }>\n\t\t\t\t<RepeatableControlContext.Provider value={ contextValue }>\n\t\t\t\t\t<ControlRepeater\n\t\t\t\t\t\tinitial={ childPropTypeUtil.create( initialValues || null ) }\n\t\t\t\t\t\tpropTypeUtil={ childArrayPropTypeUtil as CollectionPropUtil< RepeatablePropValue > }\n\t\t\t\t\t\tisItemDisabled={ isItemDisabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t<RepeaterHeader label={ repeaterLabel }>\n\t\t\t\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\t\t\t\t{ ...addItemTooltipProps }\n\t\t\t\t\t\t\t\tnewItemIndex={ 0 }\n\t\t\t\t\t\t\t\tariaLabel={ repeaterLabel }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RepeaterHeader>\n\t\t\t\t\t\t<ItemsContainer isSortable={ false }>\n\t\t\t\t\t\t\t<Item\n\t\t\t\t\t\t\t\tIcon={ ItemIcon }\n\t\t\t\t\t\t\t\tLabel={ ItemLabel }\n\t\t\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t{ showDuplicate && <DuplicateItemAction /> }\n\t\t\t\t\t\t\t\t\t\t{ showToggle && <DisableItemAction /> }\n\t\t\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ItemsContainer>\n\t\t\t\t\t\t<EditItemPopover>\n\t\t\t\t\t\t\t<Content />\n\t\t\t\t\t\t</EditItemPopover>\n\t\t\t\t\t</ControlRepeater>\n\t\t\t\t</RepeatableControlContext.Provider>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n\n// TODO: Configurable icon probably can be somehow part of the injected control and bubbled up to the repeater\nconst ItemIcon = () => <></>;\n\nconst Content = () => {\n\tconst { component: ChildControl, props = {} } = useRepeatableControlContext();\n\treturn (\n\t\t<PopoverContent p={ 1.5 }>\n\t\t\t<PopoverGridContainer>\n\t\t\t\t<ChildControl { ...props } />\n\t\t\t</PopoverGridContainer>\n\t\t</PopoverContent>\n\t);\n};\n\nconst interpolate = ( template: string, data: Record< string, unknown > ) => {\n\tif ( ! data ) {\n\t\treturn template;\n\t}\n\n\treturn template.replace( PLACEHOLDER_REGEX, ( _, path ): string => {\n\t\tconst value = getNestedValue( data, path );\n\n\t\tif ( typeof value === 'object' && value !== null && ! Array.isArray( value ) ) {\n\t\t\tif ( 'name' in value && value.name ) {\n\t\t\t\treturn value.name as string;\n\t\t\t}\n\n\t\t\treturn JSON.stringify( value );\n\t\t}\n\n\t\tif ( Array.isArray( value ) ) {\n\t\t\treturn value.join( ', ' );\n\t\t}\n\n\t\treturn String( value ?? '' );\n\t} );\n};\n\nconst getNestedValue = ( obj: Record< string, unknown >, path: string ) => {\n\tlet parentObj: Record< string, unknown > = {};\n\tconst pathKeys = path.split( '.' );\n\tconst key = pathKeys.slice( -1 )[ 0 ];\n\n\tlet value: unknown = pathKeys.reduce( ( current: Record< string, unknown >, currentKey, currentIndex ) => {\n\t\tif ( currentIndex === pathKeys.length - 2 ) {\n\t\t\tparentObj = current;\n\t\t}\n\n\t\tif ( current && typeof current === 'object' ) {\n\t\t\treturn current[ currentKey ] as Record< string, unknown >;\n\t\t}\n\n\t\treturn {};\n\t}, obj );\n\n\tvalue = !! value ? value : '';\n\tconst propType = parentObj?.$$type;\n\tconst propValue = parentObj?.value as SizePropValue[ 'value' ];\n\tconst doesValueRepresentCustomSize = key === 'unit' && propType === 'size' && propValue?.unit === 'custom';\n\n\tif ( ! doesValueRepresentCustomSize ) {\n\t\treturn value;\n\t}\n\n\treturn propValue?.size ? '' : CUSTOM_SIZE_LABEL;\n};\n\nconst isEmptyValue = ( val: unknown ) => {\n\tif ( typeof val === 'string' ) {\n\t\treturn val.trim() === '';\n\t}\n\n\tif ( Number.isNaN( val ) ) {\n\t\treturn true;\n\t}\n\n\tif ( Array.isArray( val ) ) {\n\t\treturn val.length === 0;\n\t}\n\n\tif ( typeof val === 'object' && val !== null ) {\n\t\treturn Object.keys( val ).length === 0;\n\t}\n\n\treturn false;\n};\n\nconst shouldShowPlaceholder = ( pattern: string, data: Record< string, unknown > ): boolean => {\n\tconst propertyPaths = getAllProperties( pattern );\n\n\tconst values = propertyPaths.map( ( path ) => getNestedValue( data, path ) );\n\n\tif ( values.length === 0 ) {\n\t\treturn false;\n\t}\n\n\tif ( values.some( ( value ) => value === null || value === undefined ) ) {\n\t\treturn true;\n\t}\n\n\tif ( values.every( isEmptyValue ) ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nconst getTextColor = ( isReadOnly: boolean, showPlaceholder: boolean ): string => {\n\tif ( isReadOnly ) {\n\t\treturn 'text.disabled';\n\t}\n\treturn showPlaceholder ? 'text.tertiary' : 'text.primary';\n};\n\nconst ItemLabel = ( { value }: { value: Record< string, unknown > } ) => {\n\tconst { placeholder, patternLabel, props: childProps } = useRepeatableControlContext();\n\tconst showPlaceholder = shouldShowPlaceholder( patternLabel, value );\n\tconst label = showPlaceholder ? placeholder : interpolate( patternLabel, value );\n\tconst isReadOnly = !! childProps?.readOnly;\n\tconst color = getTextColor( isReadOnly, showPlaceholder );\n\n\treturn (\n\t\t<Box component=\"span\" color={ color }>\n\t\t\t{ label }\n\t\t</Box>\n\t);\n};\n\nconst getAllProperties = ( pattern: string ) => {\n\tconst properties = pattern.match( PLACEHOLDER_REGEX )?.map( ( match ) => match.slice( 2, -1 ) ) || [];\n\n\treturn properties;\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport {\n\ttype CreateOptions,\n\tisTransformable,\n\tkeyValuePropTypeUtil,\n\ttype PropKey,\n\ttype Props,\n\tstringPropTypeUtil,\n} from '@elementor/editor-props';\nimport { FormHelperText, FormLabel, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { createControl } from '../create-control';\nimport { escapeHtmlAttr } from '../utils/escape-html-attr';\nimport { TextControl } from './text-control';\n\ntype KeyValueControlProps = {\n\tkeyName?: string;\n\tvalueName?: string;\n\tregexKey?: string;\n\tregexValue?: string;\n\tvalidationErrorMessage?: string;\n\tescapeHtml?: boolean;\n\tgetHelperText?: ( key: string, value: string ) => { keyHelper?: string; valueHelper?: string };\n};\n\nconst getInitialFieldValue = ( fieldValue: unknown ): string => {\n\tconst transformableValue = fieldValue as { $$type?: string; value?: string };\n\n\tif ( ! fieldValue || typeof fieldValue !== 'object' || transformableValue.$$type === 'dynamic' ) {\n\t\treturn '';\n\t}\n\n\treturn transformableValue.value || '';\n};\n\nexport const KeyValueControl = createControl( ( props: KeyValueControlProps = {} ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( keyValuePropTypeUtil );\n\tconst [ keyError, setKeyError ] = useState< string >( '' );\n\tconst [ valueError, setValueError ] = useState< string >( '' );\n\n\tconst [ sessionState, setSessionState ] = useState( {\n\t\tkey: getInitialFieldValue( value?.key ),\n\t\tvalue: getInitialFieldValue( value?.value ),\n\t} );\n\n\tconst keyLabel = props.keyName || __( 'Key', 'elementor' );\n\tconst valueLabel = props.valueName || __( 'Value', 'elementor' );\n\tconst { keyHelper, valueHelper } = props.getHelperText?.( sessionState.key, sessionState.value ) || {\n\t\tkeyHelper: undefined,\n\t\tvalueHelper: undefined,\n\t};\n\n\tconst [ keyRegex, valueRegex, errMsg ] = useMemo< [ RegExp | undefined, RegExp | undefined, string ] >(\n\t\t() => [\n\t\t\tprops.regexKey ? new RegExp( props.regexKey ) : undefined,\n\t\t\tprops.regexValue ? new RegExp( props.regexValue ) : undefined,\n\t\t\tprops.validationErrorMessage || __( 'Invalid Format', 'elementor' ),\n\t\t],\n\t\t[ props.regexKey, props.regexValue, props.validationErrorMessage ]\n\t);\n\n\tconst validate = ( newValue: string, fieldType: string ): boolean => {\n\t\tif ( fieldType === 'key' && keyRegex ) {\n\t\t\tconst isValid = keyRegex.test( newValue );\n\t\t\tsetKeyError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t} else if ( fieldType === 'value' && valueRegex ) {\n\t\t\tconst isValid = valueRegex.test( newValue );\n\t\t\tsetValueError( isValid ? '' : errMsg );\n\n\t\t\treturn isValid;\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst handleChange = ( newValue: Props, options?: CreateOptions, meta?: { bind?: PropKey } ) => {\n\t\tconst fieldType = meta?.bind;\n\n\t\tif ( ! fieldType ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst newChangedValue = newValue[ fieldType ];\n\n\t\tif ( isTransformable( newChangedValue ) && newChangedValue.$$type === 'dynamic' ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst extractedValue = stringPropTypeUtil.extract( newChangedValue );\n\n\t\tsetSessionState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\t[ fieldType ]: extractedValue,\n\t\t} ) );\n\n\t\tif ( extractedValue && validate( extractedValue, fieldType ) ) {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: newChangedValue,\n\t\t\t} );\n\t\t} else {\n\t\t\tsetValue( {\n\t\t\t\t...value,\n\t\t\t\t[ fieldType ]: {\n\t\t\t\t\tvalue: '',\n\t\t\t\t\t$$type: 'string',\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ handleChange }>\n\t\t\t<Grid container gap={ 1.5 }>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ keyLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'key' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ props.escapeHtml ? escapeHtmlAttr( sessionState.key ) : sessionState.key }\n\t\t\t\t\t\t\terror={ !! keyError }\n\t\t\t\t\t\t\thelperText={ keyHelper }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! keyError && <FormHelperText error>{ keyError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 } display=\"flex\" flexDirection=\"column\">\n\t\t\t\t\t<FormLabel size=\"tiny\" sx={ { pb: 1 } }>\n\t\t\t\t\t\t{ valueLabel }\n\t\t\t\t\t</FormLabel>\n\t\t\t\t\t<PropKeyProvider bind={ 'value' }>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tinputValue={ props.escapeHtml ? escapeHtmlAttr( sessionState.value ) : sessionState.value }\n\t\t\t\t\t\t\terror={ !! valueError }\n\t\t\t\t\t\t\tinputDisabled={ !! keyError }\n\t\t\t\t\t\t\thelperText={ valueHelper }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t{ !! valueError && <FormHelperText error>{ valueError }</FormHelperText> }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</PropProvider>\n\t);\n} );\n","export const escapeHtmlAttr = ( value: string ): string => {\n\tconst specialChars: Record< string, string > = {\n\t\t'&': '&',\n\t\t'<': '<',\n\t\t'>': '>',\n\t\t\"'\": ''',\n\t\t'\"': '"',\n\t};\n\n\treturn value.replace( /[&<>'\"]/g, ( char ) => specialChars[ char ] || char );\n};\n","import * as React from 'react';\nimport { positionPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { LetterXIcon, LetterYIcon } from '@elementor/icons';\nimport { Grid, Select, type SelectChangeEvent } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { SizeControl } from './size-control';\n\ntype Positions =\n\t| 'center center'\n\t| 'center left'\n\t| 'center right'\n\t| 'top center'\n\t| 'top left'\n\t| 'top right'\n\t| 'bottom center'\n\t| 'bottom left'\n\t| 'bottom right'\n\t| 'custom';\n\nconst positionOptions = [\n\t{ label: __( 'Center center', 'elementor' ), value: 'center center' },\n\t{ label: __( 'Center left', 'elementor' ), value: 'center left' },\n\t{ label: __( 'Center right', 'elementor' ), value: 'center right' },\n\t{ label: __( 'Top center', 'elementor' ), value: 'top center' },\n\t{ label: __( 'Top left', 'elementor' ), value: 'top left' },\n\t{ label: __( 'Top right', 'elementor' ), value: 'top right' },\n\t{ label: __( 'Bottom center', 'elementor' ), value: 'bottom center' },\n\t{ label: __( 'Bottom left', 'elementor' ), value: 'bottom left' },\n\t{ label: __( 'Bottom right', 'elementor' ), value: 'bottom right' },\n\t{ label: __( 'Custom', 'elementor' ), value: 'custom' },\n];\n\nexport const PositionControl = () => {\n\tconst positionContext = useBoundProp( positionPropTypeUtil );\n\tconst stringPropContext = useBoundProp( stringPropTypeUtil );\n\n\tconst isCustom = !! positionContext.value;\n\n\tconst handlePositionChange = ( event: SelectChangeEvent< Positions > ) => {\n\t\tconst value = event.target.value || null;\n\n\t\tif ( value === 'custom' ) {\n\t\t\tpositionContext.setValue( { x: null, y: null } );\n\t\t} else {\n\t\t\tstringPropContext.setValue( value );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ __( 'Object position', 'elementor' ) }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { overflow: 'hidden' } }>\n\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tdisabled={ stringPropContext.disabled }\n\t\t\t\t\t\t\tvalue={ ( positionContext.value ? 'custom' : stringPropContext.value ) ?? '' }\n\t\t\t\t\t\t\tonChange={ handlePositionChange }\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ positionOptions.map( ( { label, value } ) => (\n\t\t\t\t\t\t\t\t<MenuListItem key={ value } value={ value ?? '' }>\n\t\t\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t\t) ) }\n\t\t\t\t\t\t</Select>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t{ isCustom && (\n\t\t\t\t<PropProvider { ...positionContext }>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Grid container spacing={ 1.5 }>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'x' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterXIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind={ 'y' }>\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tstartIcon={ <LetterYIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</PropProvider>\n\t\t\t) }\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type PropType, transformFunctionsPropTypeUtil, transformPropTypeUtil } from '@elementor/editor-props';\nimport { AdjustmentsIcon, InfoCircleFilledIcon } from '@elementor/icons';\nimport { bindTrigger, Box, IconButton, type PopupState, Tooltip, Typography, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../bound-prop-context';\nimport { ControlRepeater, Item, ItemsContainer, TooltipAddItemAction } from '../../components/control-repeater';\nimport { DisableItemAction } from '../../components/control-repeater/actions/disable-item-action';\nimport { RemoveItemAction } from '../../components/control-repeater/actions/remove-item-action';\nimport { EditItemPopover } from '../../components/control-repeater/items/edit-item-popover';\nimport { RepeaterHeader } from '../../components/repeater/repeater-header';\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\nimport { createControl } from '../../create-control';\nimport { initialRotateValue, initialScaleValue, initialSkewValue, initialTransformValue } from './initial-values';\nimport { TransformContent } from './transform-content';\nimport { TransformIcon } from './transform-icon';\nimport { TransformLabel } from './transform-label';\nimport { TransformSettingsControl } from './transform-settings-control';\n\nconst SIZE = 'tiny';\n\nexport const TransformRepeaterControl = createControl( () => {\n\tconst context = useBoundProp( transformPropTypeUtil );\n\tconst headerRef = useRef< HTMLDivElement >( null );\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<TransformSettingsControl popupState={ popupState } anchorRef={ headerRef } />\n\t\t\t<PropKeyProvider bind={ 'transform-functions' }>\n\t\t\t\t<Repeater headerRef={ headerRef } propType={ context.propType } popupState={ popupState } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n} );\n\nconst ToolTip = (\n\t<Box\n\t\tcomponent=\"span\"\n\t\taria-label={ undefined }\n\t\tsx={ { display: 'flex', gap: 0.5, p: 2, width: 320, borderRadius: 1 } }\n\t>\n\t\t<InfoCircleFilledIcon sx={ { color: 'secondary.main' } } />\n\t\t<Typography variant=\"body2\" color=\"text.secondary\" fontSize=\"14px\">\n\t\t\t{ __( 'You can use each kind of transform only once per element.', 'elementor' ) }\n\t\t</Typography>\n\t</Box>\n);\n\nconst Repeater = ( {\n\theaderRef,\n\tpropType,\n\tpopupState,\n}: {\n\theaderRef: React.RefObject< HTMLDivElement >;\n\tpropType: PropType;\n\tpopupState: PopupState;\n} ) => {\n\tconst transformFunctionsContext = useBoundProp( transformFunctionsPropTypeUtil );\n\tconst availableValues = [ initialTransformValue, initialScaleValue, initialRotateValue, initialSkewValue ];\n\tconst { value: transformValues, bind } = transformFunctionsContext;\n\n\tconst getInitialValue = () => {\n\t\treturn availableValues.find( ( value ) => ! transformValues?.some( ( item ) => item.$$type === value.$$type ) );\n\t};\n\n\tconst shouldDisableAddItem = ! getInitialValue();\n\n\treturn (\n\t\t<PropProvider { ...transformFunctionsContext }>\n\t\t\t<ControlRepeater\n\t\t\t\tinitial={ getInitialValue() ?? initialTransformValue }\n\t\t\t\tpropTypeUtil={ transformFunctionsPropTypeUtil }\n\t\t\t>\n\t\t\t\t<RepeaterHeader\n\t\t\t\t\tlabel={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\tadornment={ () => <ControlAdornments customContext={ { path: [ 'transform' ], propType } } /> }\n\t\t\t\t\tref={ headerRef }\n\t\t\t\t>\n\t\t\t\t\t<TransformBasePopoverTrigger popupState={ popupState } repeaterBindKey={ bind } />\n\t\t\t\t\t<TooltipAddItemAction\n\t\t\t\t\t\tdisabled={ shouldDisableAddItem }\n\t\t\t\t\t\ttooltipContent={ ToolTip }\n\t\t\t\t\t\tenableTooltip={ shouldDisableAddItem }\n\t\t\t\t\t\tariaLabel={ 'transform' }\n\t\t\t\t\t/>\n\t\t\t\t</RepeaterHeader>\n\t\t\t\t<ItemsContainer>\n\t\t\t\t\t<Item\n\t\t\t\t\t\tIcon={ TransformIcon }\n\t\t\t\t\t\tLabel={ TransformLabel }\n\t\t\t\t\t\tactions={\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<DisableItemAction />\n\t\t\t\t\t\t\t\t<RemoveItemAction />\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ItemsContainer>\n\t\t\t\t<EditItemPopover>\n\t\t\t\t\t<TransformContent />\n\t\t\t\t</EditItemPopover>\n\t\t\t</ControlRepeater>\n\t\t</PropProvider>\n\t);\n};\n\nconst TransformBasePopoverTrigger = ( {\n\tpopupState,\n\trepeaterBindKey,\n}: {\n\tpopupState: PopupState;\n\trepeaterBindKey: string;\n} ) => {\n\tconst { bind } = useBoundProp();\n\tconst titleLabel = __( 'Transform settings', 'elementor' );\n\n\treturn bind !== repeaterBindKey ? null : (\n\t\t<Tooltip title={ titleLabel } placement=\"top\">\n\t\t\t<IconButton size={ SIZE } aria-label={ titleLabel } { ...bindTrigger( popupState ) }>\n\t\t\t\t<AdjustmentsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n};\n","import {\n\tnumberPropTypeUtil,\n\trotateTransformPropTypeUtil,\n\tscaleTransformPropTypeUtil,\n\tskewTransformPropTypeUtil,\n\ttype TransformFunctionsItemPropValue,\n} from '@elementor/editor-props';\n\nexport type TransformFunction = 'transform-move' | 'transform-scale' | 'transform-rotate' | 'transform-skew';\n\nexport const TransformFunctionKeys: Record< string, TransformFunction > = {\n\tmove: 'transform-move',\n\tscale: 'transform-scale',\n\trotate: 'transform-rotate',\n\tskew: 'transform-skew',\n};\n\nexport const defaultValues = {\n\tmove: {\n\t\tsize: 0,\n\t\tunit: 'px',\n\t},\n\tscale: 1,\n\trotate: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n\tskew: {\n\t\tsize: 0,\n\t\tunit: 'deg',\n\t},\n};\n\nexport const initialTransformValue: TransformFunctionsItemPropValue = {\n\t$$type: TransformFunctionKeys.move,\n\tvalue: {\n\t\tx: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\ty: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t\tz: { $$type: 'size', value: { size: defaultValues.move.size, unit: defaultValues.move.unit as 'px' } },\n\t},\n};\n\nexport const initialScaleValue = scaleTransformPropTypeUtil.create( {\n\tx: numberPropTypeUtil.create( defaultValues.scale ),\n\ty: numberPropTypeUtil.create( defaultValues.scale ),\n\tz: numberPropTypeUtil.create( defaultValues.scale ),\n} );\n\nexport const initialRotateValue = rotateTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n\tz: { $$type: 'size', value: { size: defaultValues.rotate.size, unit: defaultValues.rotate.unit as 'deg' } },\n} );\n\nexport const initialSkewValue = skewTransformPropTypeUtil.create( {\n\tx: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n\ty: { $$type: 'size', value: { size: defaultValues.skew.size, unit: defaultValues.skew.unit as 'deg' } },\n} );\n","import * as React from 'react';\nimport { Box, Tab, TabPanel, Tabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverContent } from '../../components/popover-content';\nimport { Move } from './functions/move';\nimport { Rotate } from './functions/rotate';\nimport { Scale } from './functions/scale';\nimport { Skew } from './functions/skew';\nimport {\n\tinitialRotateValue,\n\tinitialScaleValue,\n\tinitialSkewValue,\n\tinitialTransformValue,\n\tTransformFunctionKeys,\n} from './initial-values';\nimport { useTransformTabsHistory } from './use-transform-tabs-history';\n\nexport const TransformContent = () => {\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTransformTabsHistory( {\n\t\tmove: initialTransformValue.value,\n\t\tscale: initialScaleValue.value,\n\t\trotate: initialRotateValue.value,\n\t\tskew: initialSkewValue.value,\n\t} );\n\n\treturn (\n\t\t<PopoverContent>\n\t\t\t<Box sx={ { width: '100%' } }>\n\t\t\t\t<Box sx={ { borderBottom: 1, borderColor: 'divider' } }>\n\t\t\t\t\t<Tabs\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t'& .MuiTab-root': {\n\t\t\t\t\t\t\t\tminWidth: '62px',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\taria-label={ __( 'Transform', 'elementor' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tab label={ __( 'Move', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.move ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Scale', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.scale ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Rotate', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.rotate ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Skew', 'elementor' ) } { ...getTabProps( TransformFunctionKeys.skew ) } />\n\t\t\t\t\t</Tabs>\n\t\t\t\t</Box>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.move ) }>\n\t\t\t\t\t<Move />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.scale ) }>\n\t\t\t\t\t<Scale />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.rotate ) }>\n\t\t\t\t\t<Rotate />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel sx={ { p: 1.5 } } { ...getTabPanelProps( TransformFunctionKeys.skew ) }>\n\t\t\t\t\t<Skew />\n\t\t\t\t</TabPanel>\n\t\t\t</Box>\n\t\t</PopoverContent>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { moveTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\ntype Control = { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode; units: LengthUnit[] };\n\nconst moveAxisControls: Control[] = [\n\t{\n\t\tlabel: __( 'Move X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vw' ],\n\t},\n\t{\n\t\tlabel: __( 'Move Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vh' ],\n\t},\n\t{\n\t\tlabel: __( 'Move Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t\tunits: [ 'px', '%', 'em', 'rem', 'vw', 'vh' ],\n\t},\n];\n\nexport const Move = () => {\n\tconst context = useBoundProp( moveTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.move }>\n\t\t\t\t\t{ moveAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ control.units }\n\t\t\t\t\t\t\tvariant=\"length\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type AngleUnit, type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\ntype TransformAxisRowProps = {\n\tlabel: string;\n\tbind: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n\tunits?: AngleUnit[] | LengthUnit[];\n\tvariant?: 'length' | 'angle';\n};\n\nexport const AxisRow = ( { label, bind, startIcon, anchorRef, units, variant = 'angle' }: TransformAxisRowProps ) => {\n\tconst safeId = label.replace( /\\s+/g, '-' ).toLowerCase();\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel htmlFor={ safeId }>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\tanchorRef={ anchorRef }\n\t\t\t\t\t\t\tstartIcon={ startIcon }\n\t\t\t\t\t\t\tunits={ units }\n\t\t\t\t\t\t\tvariant={ variant }\n\t\t\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t\t\t\tid={ safeId }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { rotateTransformPropTypeUtil } from '@elementor/editor-props';\nimport { Arrow360Icon, RotateClockwiseIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\nconst rotateAxisControls: { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Rotate X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <Arrow360Icon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <Arrow360Icon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n\t{\n\t\tlabel: __( 'Rotate Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <RotateClockwiseIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nconst rotateUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Rotate = () => {\n\tconst context = useBoundProp( rotateTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.rotate }>\n\t\t\t\t\t{ rotateAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ rotateUnits }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { scaleTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowDownLeftIcon, ArrowDownSmallIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { ScaleAxisRow } from './scale-axis-row';\n\nconst scaleAxisControls: { label: string; bind: 'x' | 'y' | 'z'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Scale X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowDownSmallIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Scale Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tstartIcon: <ArrowDownLeftIcon fontSize={ 'tiny' } />,\n\t},\n];\n\nexport const Scale = () => {\n\tconst context = useBoundProp( scaleTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.scale }>\n\t\t\t\t\t{ scaleAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<ScaleAxisRow key={ control.bind } { ...control } anchorRef={ rowRefs[ index ] } />\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { type RefObject } from 'react';\nimport * as React from 'react';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider } from '../../../bound-prop-context';\nimport { ControlLabel } from '../../../components/control-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { NumberControl } from '../../number-control';\n\ntype ScaleAxisRowProps = {\n\tlabel: string;\n\tbind: 'x' | 'y' | 'z';\n\tstartIcon: React.ReactNode;\n\tanchorRef?: RefObject< HTMLDivElement | null >;\n};\n\nexport const ScaleAxisRow = ( { label, bind, startIcon, anchorRef }: ScaleAxisRowProps ) => {\n\treturn (\n\t\t<Grid item xs={ 12 }>\n\t\t\t<PopoverGridContainer ref={ anchorRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t\t<NumberControl step={ 0.1 } placeholder=\"1\" startIcon={ startIcon } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</Grid>\n\t\t\t</PopoverGridContainer>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { skewTransformPropTypeUtil } from '@elementor/editor-props';\nimport { ArrowLeftIcon, ArrowRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { type AngleUnit } from '../../../utils/size-control';\nimport { TransformFunctionKeys } from '../initial-values';\nimport { AxisRow } from './axis-row';\n\nconst skewAxisControls: { label: string; bind: 'x' | 'y'; startIcon: React.ReactNode }[] = [\n\t{\n\t\tlabel: __( 'Skew X', 'elementor' ),\n\t\tbind: 'x',\n\t\tstartIcon: <ArrowRightIcon fontSize={ 'tiny' } />,\n\t},\n\t{\n\t\tlabel: __( 'Skew Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tstartIcon: <ArrowLeftIcon fontSize=\"tiny\" style={ { transform: 'scaleX(-1) rotate(-90deg)' } } />,\n\t},\n];\n\nconst skewUnits: AngleUnit[] = [ 'deg', 'rad', 'grad', 'turn' ];\n\nexport const Skew = () => {\n\tconst context = useBoundProp( skewTransformPropTypeUtil );\n\tconst rowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1.5 }>\n\t\t\t<PropProvider { ...context }>\n\t\t\t\t<PropKeyProvider bind={ TransformFunctionKeys.skew }>\n\t\t\t\t\t{ skewAxisControls.map( ( control, index ) => (\n\t\t\t\t\t\t<AxisRow\n\t\t\t\t\t\t\tkey={ control.bind }\n\t\t\t\t\t\t\t{ ...control }\n\t\t\t\t\t\t\tanchorRef={ rowRefs[ index ] }\n\t\t\t\t\t\t\tunits={ skewUnits }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</Grid>\n\t);\n};\n","import { useRef } from 'react';\nimport {\n\tmoveTransformPropTypeUtil,\n\ttype MoveTransformPropValue,\n\trotateTransformPropTypeUtil,\n\ttype RotateTransformPropValue,\n\tscaleTransformPropTypeUtil,\n\ttype ScaleTransformPropValue,\n\tskewTransformPropTypeUtil,\n\ttype SkewTransformPropValue,\n\ttype TransformFunctionsItemPropValue,\n} from '@elementor/editor-props';\nimport { useTabs } from '@elementor/ui';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { useRepeaterContext } from '../../components/control-repeater/context/repeater-context';\nimport { type TransformFunction, TransformFunctionKeys } from './initial-values';\n\ntype InitialTransformValues = {\n\tmove: TransformFunctionsItemPropValue[ 'value' ];\n\tscale: TransformFunctionsItemPropValue[ 'value' ];\n\trotate: TransformFunctionsItemPropValue[ 'value' ];\n\tskew: TransformFunctionsItemPropValue[ 'value' ];\n};\n\nexport const useTransformTabsHistory = ( {\n\tmove: initialMove,\n\tscale: initialScale,\n\trotate: initialRotate,\n\tskew: initialSkew,\n}: InitialTransformValues ) => {\n\tconst { value: moveValue, setValue: setMoveValue } = useBoundProp( moveTransformPropTypeUtil );\n\tconst { value: scaleValue, setValue: setScaleValue } = useBoundProp( scaleTransformPropTypeUtil );\n\tconst { value: rotateValue, setValue: setRotateValue } = useBoundProp( rotateTransformPropTypeUtil );\n\tconst { value: skewValue, setValue: setSkewValue } = useBoundProp( skewTransformPropTypeUtil );\n\n\tconst { openItemIndex, items } = useRepeaterContext();\n\n\tconst getCurrentTransformType = (): TransformFunction => {\n\t\tswitch ( true ) {\n\t\t\tcase !! scaleValue:\n\t\t\t\treturn TransformFunctionKeys.scale;\n\t\t\tcase !! rotateValue:\n\t\t\t\treturn TransformFunctionKeys.rotate;\n\t\t\tcase !! skewValue:\n\t\t\t\treturn TransformFunctionKeys.skew;\n\t\t\tdefault:\n\t\t\t\treturn TransformFunctionKeys.move;\n\t\t}\n\t};\n\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< TransformFunction >( getCurrentTransformType() );\n\n\tconst valuesHistory = useRef< InitialTransformValues >( {\n\t\tmove: initialMove,\n\t\tscale: initialScale,\n\t\trotate: initialRotate,\n\t\tskew: initialSkew,\n\t} );\n\n\tconst saveToHistory = ( key: keyof InitialTransformValues, value: TransformFunctionsItemPropValue[ 'value' ] ) => {\n\t\tif ( value ) {\n\t\t\tvaluesHistory.current[ key ] = value;\n\t\t}\n\t};\n\n\tconst onTabChange = ( e: React.SyntheticEvent, tabName: TransformFunction ) => {\n\t\tswitch ( tabName ) {\n\t\t\tcase TransformFunctionKeys.move:\n\t\t\t\tsetMoveValue( valuesHistory.current.move as MoveTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.scale:\n\t\t\t\tsetScaleValue( valuesHistory.current.scale as ScaleTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.rotate:\n\t\t\t\tsetRotateValue( valuesHistory.current.rotate as RotateTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'skew', skewValue );\n\n\t\t\t\tbreak;\n\n\t\t\tcase TransformFunctionKeys.skew:\n\t\t\t\tsetSkewValue( valuesHistory.current.skew as SkewTransformPropValue[ 'value' ] );\n\t\t\t\tsaveToHistory( 'move', moveValue );\n\t\t\t\tsaveToHistory( 'scale', scaleValue );\n\t\t\t\tsaveToHistory( 'rotate', rotateValue );\n\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn getTabsProps().onChange( e, tabName );\n\t};\n\n\tconst isTabDisabled = ( tabKey: TransformFunction ) => {\n\t\treturn !! items.find( ( { item: { $$type: key } }, pos ) => tabKey === key && pos !== openItemIndex );\n\t};\n\n\treturn {\n\t\tgetTabProps: ( value: TransformFunction ) => ( {\n\t\t\t...getTabProps( value ),\n\t\t\tdisabled: isTabDisabled( value ),\n\t\t} ),\n\t\tgetTabPanelProps,\n\t\tgetTabsProps: () => ( { ...getTabsProps(), onChange: onTabChange } ),\n\t};\n};\n","import * as React from 'react';\nimport { type TransformFunctionsItemPropValue } from '@elementor/editor-props';\nimport { ArrowAutofitHeightIcon, ArrowsMaximizeIcon, RotateClockwise2Icon, SkewXIcon } from '@elementor/icons';\n\nimport { TransformFunctionKeys } from './initial-values';\n\nexport const TransformIcon = ( { value }: { value: TransformFunctionsItemPropValue } ) => {\n\tswitch ( value.$$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <ArrowsMaximizeIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <ArrowAutofitHeightIcon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <RotateClockwise2Icon fontSize=\"tiny\" />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <SkewXIcon fontSize=\"tiny\" />;\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n","import * as React from 'react';\nimport type { TransformFunctionsItemPropValue } from '@elementor/editor-props';\nimport { Box } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CUSTOM_SIZE_LABEL } from '../size-control';\nimport { defaultValues, TransformFunctionKeys } from './initial-values';\n\nconst formatLabel = ( value: TransformFunctionsItemPropValue[ 'value' ], functionType: keyof typeof defaultValues ) => {\n\treturn Object.values( value )\n\t\t.map( ( axis ) => {\n\t\t\tif ( functionType === 'scale' ) {\n\t\t\t\treturn axis?.value || defaultValues[ functionType ];\n\t\t\t}\n\n\t\t\tconst defaults = defaultValues[ functionType ];\n\t\t\tconst size = axis?.value?.size ?? defaults.size;\n\t\t\tconst unit = axis?.value?.unit ?? defaults.unit;\n\n\t\t\treturn unit === 'custom' ? size || CUSTOM_SIZE_LABEL : `${ size }${ unit }`;\n\t\t} )\n\t\t.join( ', ' );\n};\n\nexport const TransformLabel = ( props: { value: TransformFunctionsItemPropValue } ) => {\n\tconst { $$type, value } = props.value;\n\tswitch ( $$type ) {\n\t\tcase TransformFunctionKeys.move:\n\t\t\treturn <Label label={ __( 'Move', 'elementor' ) } value={ formatLabel( value, 'move' ) } />;\n\t\tcase TransformFunctionKeys.scale:\n\t\t\treturn <Label label={ __( 'Scale', 'elementor' ) } value={ formatLabel( value, 'scale' ) } />;\n\t\tcase TransformFunctionKeys.rotate:\n\t\t\treturn <Label label={ __( 'Rotate', 'elementor' ) } value={ formatLabel( value, 'rotate' ) } />;\n\t\tcase TransformFunctionKeys.skew:\n\t\t\treturn <Label label={ __( 'Skew', 'elementor' ) } value={ formatLabel( value, 'skew' ) } />;\n\t\tdefault:\n\t\t\treturn '';\n\t}\n};\n\nconst Label = ( { label, value }: { label: string; value: string } ) => {\n\treturn (\n\t\t<Box component=\"span\">\n\t\t\t{ label }: { value }\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { AdjustmentsIcon } from '@elementor/icons';\nimport { bindPopover, Box, Divider, Popover, type PopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider } from '../../bound-prop-context';\nimport { PopoverContent } from '../../components/popover-content';\nimport { ChildrenPerspectiveControl } from './transform-base-controls/children-perspective-control';\nimport { TransformOriginControl } from './transform-base-controls/transform-origin-control';\n\nconst SIZE = 'tiny';\n\nexport const TransformSettingsControl = ( {\n\tpopupState,\n\tanchorRef,\n}: {\n\tpopupState: PopupState;\n\tanchorRef: React.RefObject< HTMLDivElement | null >;\n} ) => {\n\tconst popupProps = bindPopover( {\n\t\t...popupState,\n\t\tanchorEl: anchorRef.current ?? undefined,\n\t} );\n\n\treturn (\n\t\t<Popover\n\t\t\tdisablePortal\n\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\tslotProps={ {\n\t\t\t\tpaper: {\n\t\t\t\t\tsx: {\n\t\t\t\t\t\twidth: ( anchorRef.current?.offsetWidth || 0 ) - 6 + 'px',\n\t\t\t\t\t\tmt: 0.5,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t} }\n\t\t\t{ ...popupProps }\n\t\t>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Transform settings', 'elementor' ) }\n\t\t\t\tonClose={ popupState.close }\n\t\t\t\ticon={ <AdjustmentsIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t<Divider />\n\t\t\t<PopoverContent sx={ { px: 2, py: 1.5 } }>\n\t\t\t\t<PropKeyProvider bind={ 'transform-origin' }>\n\t\t\t\t\t<TransformOriginControl />\n\t\t\t\t</PropKeyProvider>\n\t\t\t\t<Box sx={ { my: 0.5 } }>\n\t\t\t\t\t<Divider />\n\t\t\t\t</Box>\n\t\t\t\t<ChildrenPerspectiveControl />\n\t\t\t</PopoverContent>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { perspectiveOriginPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\ntype FieldProps = {\n\tlabel: string;\n\tbind: string;\n\tunits: LengthUnit[];\n};\n\nconst ORIGIN_UNITS: LengthUnit[] = [ 'px', '%', 'em', 'rem' ];\n\nconst PERSPECTIVE_CONTROL_FIELD: FieldProps = {\n\tlabel: __( 'Perspective', 'elementor' ),\n\tbind: 'perspective',\n\tunits: [ 'px', 'em', 'rem', 'vw', 'vh' ],\n};\n\nconst CHILDREN_PERSPECTIVE_FIELDS: FieldProps[] = [\n\t{\n\t\tlabel: __( 'Origin X', 'elementor' ),\n\t\tbind: 'x',\n\t\tunits: ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tunits: ORIGIN_UNITS,\n\t},\n] as const;\n\nexport const ChildrenPerspectiveControl = () => {\n\treturn (\n\t\t<Stack direction=\"column\" spacing={ 1.5 }>\n\t\t\t<ControlFormLabel>{ __( 'Children perspective', 'elementor' ) }</ControlFormLabel>\n\t\t\t<PerspectiveControl />\n\t\t\t<PerspectiveOriginControl />\n\t\t</Stack>\n\t);\n};\n\nconst PerspectiveControl = () => (\n\t<PropKeyProvider bind={ 'perspective' }>\n\t\t<ControlFields control={ PERSPECTIVE_CONTROL_FIELD } key={ PERSPECTIVE_CONTROL_FIELD.bind } />\n\t</PropKeyProvider>\n);\n\nconst PerspectiveOriginControl = () => (\n\t<PropKeyProvider bind={ 'perspective-origin' }>\n\t\t<PerspectiveOriginControlProvider />\n\t</PropKeyProvider>\n);\n\nconst PerspectiveOriginControlProvider = () => {\n\tconst context = useBoundProp( perspectiveOriginPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t{ CHILDREN_PERSPECTIVE_FIELDS.map( ( control ) => (\n\t\t\t\t<PropKeyProvider bind={ control.bind } key={ control.bind }>\n\t\t\t\t\t<ControlFields control={ control } />\n\t\t\t\t</PropKeyProvider>\n\t\t\t) ) }\n\t\t</PropProvider>\n\t);\n};\n\nconst ControlFields = ( { control }: { control: FieldProps } ) => {\n\tconst rowRef = React.useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<SizeControl variant=\"length\" units={ control.units } anchorRef={ rowRef } disableCustom />\n\t\t\t</Grid>\n\t\t</PopoverGridContainer>\n\t);\n};\n","import * as React from 'react';\nimport { transformOriginPropTypeUtil } from '@elementor/editor-props';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../../../bound-prop-context';\nimport { ControlFormLabel } from '../../../components/control-form-label';\nimport { PopoverGridContainer } from '../../../components/popover-grid-container';\nimport { type LengthUnit } from '../../../utils/size-control';\nimport { SizeControl } from '../../size-control';\n\nconst TRANSFORM_ORIGIN_UNITS: LengthUnit[] = [ 'px', '%', 'em', 'rem' ];\nconst TRANSFORM_ORIGIN_UNITS_Z_AXIS = TRANSFORM_ORIGIN_UNITS.filter( ( unit ) => unit !== '%' );\n\nconst TRANSFORM_ORIGIN_FIELDS = [\n\t{\n\t\tlabel: __( 'Origin X', 'elementor' ),\n\t\tbind: 'x',\n\t\tunits: TRANSFORM_ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Y', 'elementor' ),\n\t\tbind: 'y',\n\t\tunits: TRANSFORM_ORIGIN_UNITS,\n\t},\n\t{\n\t\tlabel: __( 'Origin Z', 'elementor' ),\n\t\tbind: 'z',\n\t\tunits: TRANSFORM_ORIGIN_UNITS_Z_AXIS,\n\t},\n];\n\nexport const TransformOriginControl = () => {\n\treturn (\n\t\t<Stack direction=\"column\" spacing={ 1.5 }>\n\t\t\t<ControlFormLabel>{ __( 'Transform', 'elementor' ) }</ControlFormLabel>\n\t\t\t{ TRANSFORM_ORIGIN_FIELDS.map( ( control ) => (\n\t\t\t\t<ControlFields control={ control } key={ control.bind } />\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n};\n\nconst ControlFields = ( { control }: { control: ( typeof TRANSFORM_ORIGIN_FIELDS )[ number ] } ) => {\n\tconst context = useBoundProp( transformOriginPropTypeUtil );\n\tconst rowRef = React.useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<PropKeyProvider bind={ control.bind }>\n\t\t\t\t<PopoverGridContainer ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<SizeControl variant=\"length\" units={ control.units } anchorRef={ rowRef } disableCustom />\n\t\t\t\t\t</Grid>\n\t\t\t\t</PopoverGridContainer>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n\tcreateArrayPropUtils,\n\ttype KeyValuePropValue,\n\tselectionSizePropTypeUtil,\n\ttype SelectionSizePropValue,\n} from '@elementor/editor-props';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, AlertTitle, Box, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useBoundProp } from '../../bound-prop-context';\nimport { type Item, type RepeatablePropValue } from '../../components/control-repeater/types';\nimport { createControl } from '../../create-control';\nimport { RepeatableControl } from '../repeatable-control';\nimport { SelectionSizeControl } from '../selection-size-control';\nimport {\n\tinitialTransitionValue,\n\ttype TransitionItem,\n\ttransitionProperties,\n\ttype TransitionProperty,\n\ttype TransitionValue,\n} from './data';\nimport { subscribeToTransitionEvent } from './trainsition-events';\nimport { getTransitionPropertyByValue, TransitionSelector } from './transition-selector';\n\nconst DURATION_CONFIG = {\n\tvariant: 'time',\n\tunits: [ 's', 'ms' ],\n\tdefaultUnit: 'ms',\n};\n\nconst childArrayPropTypeUtil = createArrayPropUtils(\n\tselectionSizePropTypeUtil.key,\n\tselectionSizePropTypeUtil.schema,\n\t'transition'\n);\n\nsubscribeToTransitionEvent();\n\nconst areAllPropertiesUsed = ( value: SelectionSizePropValue[] = [] ) => {\n\treturn value?.length\n\t\t? transitionProperties.every( ( category ) => {\n\t\t\t\treturn category.properties.every( ( property ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tproperty.isDisabled ||\n\t\t\t\t\t\t!! value?.find( ( item ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t( item.value?.selection?.value as KeyValuePropValue )?.value?.value === property.value\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} )\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t } )\n\t\t: false;\n};\n\n// this config needs to be loaded at runtime/render since it's the transitionProperties object will be mutated by the pro plugin.\n// See: https://elementor.atlassian.net/browse/ED-20285\nconst getSelectionSizeProps = ( recentlyUsedList: string[], disabledItems?: string[] ) => {\n\treturn {\n\t\tselectionLabel: __( 'Type', 'elementor' ),\n\t\tsizeLabel: __( 'Duration', 'elementor' ),\n\t\tselectionConfig: {\n\t\t\tcomponent: TransitionSelector,\n\t\t\tprops: {\n\t\t\t\trecentlyUsedList,\n\t\t\t\tdisabledItems,\n\t\t\t},\n\t\t},\n\t\tsizeConfigMap: {\n\t\t\t...transitionProperties.reduce(\n\t\t\t\t( acc, category ) => {\n\t\t\t\t\tcategory.properties.forEach( ( property ) => {\n\t\t\t\t\t\tacc[ property.value ] = DURATION_CONFIG;\n\t\t\t\t\t} );\n\t\t\t\t\treturn acc;\n\t\t\t\t},\n\t\t\t\t{} as Record< string, typeof DURATION_CONFIG >\n\t\t\t),\n\t\t},\n\t};\n};\n\nconst isItemDisabled = ( item: TransitionItem[ 'value' ] ) => {\n\tconst property = getTransitionPropertyByValue( item.value.selection.value?.value );\n\n\treturn ! property ? false : !! property.isDisabled;\n};\n\nconst getChildControlConfig = ( recentlyUsedList: string[], disabledItems?: string[] ) => {\n\treturn {\n\t\tpropTypeUtil: selectionSizePropTypeUtil,\n\t\tcomponent: SelectionSizeControl as unknown as React.ComponentType< Record< string, unknown > >,\n\t\tprops: getSelectionSizeProps( recentlyUsedList, disabledItems ),\n\t\tisItemDisabled: isItemDisabled as ( item: Item< RepeatablePropValue > ) => boolean,\n\t};\n};\n\nconst isPropertyUsed = ( value: SelectionSizePropValue[], property: TransitionProperty ) => {\n\treturn ( value ?? [] ).some( ( item ) => {\n\t\treturn ( item?.value?.selection?.value as KeyValuePropValue )?.value?.value === property.value;\n\t} );\n};\n\nconst getDisabledItemLabels = ( values: SelectionSizePropValue[] = [] ) => {\n\tconst disabledLabels: string[] = ( values || [] ).map(\n\t\t( item ) => ( item.value?.selection as KeyValuePropValue )?.value?.key?.value\n\t);\n\n\ttransitionProperties.forEach( ( category ) => {\n\t\tconst disabledProperties = category.properties\n\t\t\t.filter( ( property ) => property.isDisabled && ! disabledLabels.includes( property.label ) )\n\t\t\t.map( ( property ) => property.label );\n\n\t\tdisabledLabels.push( ...disabledProperties );\n\t} );\n\n\treturn disabledLabels;\n};\n\nconst getInitialValue = ( values: SelectionSizePropValue[] = [] ): TransitionValue => {\n\tif ( ! values?.length ) {\n\t\treturn initialTransitionValue;\n\t}\n\n\tfor ( const category of transitionProperties ) {\n\t\tfor ( const property of category.properties ) {\n\t\t\tif ( isPropertyUsed( values, property ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...initialTransitionValue,\n\t\t\t\tselection: {\n\t\t\t\t\t$$type: 'key-value',\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\treturn initialTransitionValue;\n};\n\nconst disableAddItemTooltipContent = (\n\t<Alert\n\t\tsx={ {\n\t\t\twidth: 280,\n\t\t\tgap: 0.5,\n\t\t} }\n\t\tcolor=\"secondary\"\n\t\ticon={ <InfoCircleFilledIcon /> }\n\t>\n\t\t<AlertTitle>{ __( 'Transitions', 'elementor' ) }</AlertTitle>\n\t\t<Box component=\"span\">\n\t\t\t<Typography variant=\"body2\">\n\t\t\t\t{ __( \"Switch to 'Normal' state to add a transition.\", 'elementor' ) }\n\t\t\t</Typography>\n\t\t</Box>\n\t</Alert>\n);\n\nexport const TransitionRepeaterControl = createControl(\n\t( {\n\t\trecentlyUsedListGetter,\n\t\tcurrentStyleState,\n\t}: {\n\t\trecentlyUsedListGetter: () => Promise< string[] >;\n\t\tcurrentStyleState: StyleDefinitionState;\n\t} ) => {\n\t\tconst currentStyleIsNormal = currentStyleState === null;\n\t\tconst [ recentlyUsedList, setRecentlyUsedList ] = useState< string[] >( [] );\n\n\t\tconst { value, setValue } = useBoundProp( childArrayPropTypeUtil );\n\t\tconst disabledItems = useMemo( () => getDisabledItemLabels( value ), [ value ] );\n\n\t\tconst allowedTransitionSet = useMemo( () => {\n\t\t\tconst set = new Set< string >();\n\t\t\ttransitionProperties.forEach( ( category ) => {\n\t\t\t\tcategory.properties.forEach( ( prop ) => set.add( prop.value ) );\n\t\t\t} );\n\t\t\treturn set;\n\t\t}, [] );\n\n\t\tuseEffect( () => {\n\t\t\tif ( ! value || value.length === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst sanitized = value.filter( ( item ) => {\n\t\t\t\tconst selectionValue = ( item?.value?.selection?.value as KeyValuePropValue )?.value?.value ?? '';\n\t\t\t\treturn allowedTransitionSet.has( selectionValue );\n\t\t\t} );\n\n\t\t\tif ( sanitized.length !== value.length ) {\n\t\t\t\tsetValue( sanitized );\n\t\t\t}\n\t\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t}, [ allowedTransitionSet ] );\n\n\t\tuseEffect( () => {\n\t\t\trecentlyUsedListGetter().then( setRecentlyUsedList );\n\t\t}, [ recentlyUsedListGetter ] );\n\n\t\tconst allPropertiesUsed = useMemo( () => areAllPropertiesUsed( value ), [ value ] );\n\t\tconst isAddItemDisabled = ! currentStyleIsNormal || allPropertiesUsed;\n\n\t\treturn (\n\t\t\t<RepeatableControl\n\t\t\t\tlabel={ __( 'Transitions', 'elementor' ) }\n\t\t\t\trepeaterLabel={ __( 'Transitions', 'elementor' ) }\n\t\t\t\tpatternLabel=\"${value.selection.value.key.value}: ${value.size.value.size}${value.size.value.unit}\"\n\t\t\t\tplaceholder={ __( 'Empty Transition', 'elementor' ) }\n\t\t\t\tshowDuplicate={ false }\n\t\t\t\tshowToggle={ true }\n\t\t\t\tinitialValues={ getInitialValue( value ) }\n\t\t\t\tchildControlConfig={ getChildControlConfig( recentlyUsedList, disabledItems ) }\n\t\t\t\tpropKey=\"transition\"\n\t\t\t\taddItemTooltipProps={ {\n\t\t\t\t\tdisabled: isAddItemDisabled,\n\t\t\t\t\tenableTooltip: ! currentStyleIsNormal,\n\t\t\t\t\ttooltipContent: disableAddItemTooltipContent,\n\t\t\t\t} }\n\t\t\t/>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useMemo, useRef } from 'react';\nimport { selectionSizePropTypeUtil } from '@elementor/editor-props';\nimport { Grid } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport { ControlFormLabel } from '../components/control-form-label';\nimport { createControl } from '../create-control';\nimport { SizeControl, type SizeControlProps } from './size-control';\n\ntype SelectionComponentConfig = {\n\tcomponent: React.ComponentType< Record< string, unknown > >;\n\tprops: Record< string, unknown >;\n};\n\ntype SizeControlConfig = Pick< SizeControlProps, 'variant' | 'units' | 'defaultUnit' >;\n\ntype SelectionSizeControlProps = {\n\tselectionLabel: string;\n\tsizeLabel: string;\n\tselectionConfig: SelectionComponentConfig;\n\tsizeConfigMap: Record< string, SizeControlConfig >;\n};\n\nexport const SelectionSizeControl = createControl(\n\t( { selectionLabel, sizeLabel, selectionConfig, sizeConfigMap }: SelectionSizeControlProps ) => {\n\t\tconst { value, setValue, propType } = useBoundProp( selectionSizePropTypeUtil );\n\t\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\t\tconst sizeFieldId = sizeLabel.replace( /\\s+/g, '-' ).toLowerCase();\n\n\t\tconst currentSizeConfig = useMemo( () => {\n\t\t\tswitch ( value.selection.$$type ) {\n\t\t\t\tcase 'key-value':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value.value.value || '' ];\n\t\t\t\tcase 'string':\n\t\t\t\t\treturn sizeConfigMap[ value?.selection?.value || '' ];\n\t\t\t\tdefault:\n\t\t\t\t\treturn null;\n\t\t\t}\n\t\t}, [ value, sizeConfigMap ] );\n\t\tconst SelectionComponent = selectionConfig.component;\n\n\t\treturn (\n\t\t\t<PropProvider value={ value } setValue={ setValue } propType={ propType }>\n\t\t\t\t<Grid container spacing={ 1.5 } ref={ rowRef }>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t<ControlFormLabel>{ selectionLabel }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<PropKeyProvider bind=\"selection\">\n\t\t\t\t\t\t\t<SelectionComponent { ...selectionConfig.props } />\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t{ currentSizeConfig && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', alignItems: 'center' } }>\n\t\t\t\t\t\t\t\t<ControlFormLabel htmlFor={ sizeFieldId }>{ sizeLabel }</ControlFormLabel>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t<PropKeyProvider bind=\"size\">\n\t\t\t\t\t\t\t\t\t<SizeControl\n\t\t\t\t\t\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\t\t\t\t\t\tvariant={ currentSizeConfig.variant }\n\t\t\t\t\t\t\t\t\t\tunits={ currentSizeConfig.units }\n\t\t\t\t\t\t\t\t\t\tdefaultUnit={ currentSizeConfig.defaultUnit }\n\t\t\t\t\t\t\t\t\t\tid={ sizeFieldId }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</>\n\t\t\t\t\t) }\n\t\t\t\t</Grid>\n\t\t\t</PropProvider>\n\t\t);\n\t}\n);\n","import { type KeyValuePropValue, type SizePropValue } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type TransitionProperty = {\n\tlabel: string;\n\tvalue: string;\n\tunavailable?: boolean;\n\tisDisabled?: boolean;\n};\n\nexport type TransitionCategory = {\n\tlabel: string;\n\ttype: 'category';\n\tproperties: TransitionProperty[];\n};\n\nexport type TransitionValue = {\n\tselection: KeyValuePropValue;\n\tsize: SizePropValue;\n};\n\nexport type TransitionItem = {\n\t$$type: 'selection-size';\n\tvalue: {\n\t\t$$type: 'key-value';\n\t\tvalue: TransitionValue;\n\t};\n};\n\nexport const initialTransitionValue: TransitionValue = {\n\tselection: {\n\t\t$$type: 'key-value',\n\t\tvalue: {\n\t\t\tkey: { value: __( 'All properties', 'elementor' ), $$type: 'string' },\n\t\t\tvalue: { value: 'all', $$type: 'string' },\n\t\t},\n\t},\n\tsize: { $$type: 'size', value: { size: 200, unit: 'ms' } },\n};\n\nexport const transitionProperties: TransitionCategory[] = [\n\t{\n\t\tlabel: __( 'Default', 'elementor' ),\n\t\ttype: 'category',\n\t\tproperties: [ { label: __( 'All properties', 'elementor' ), 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 { getSelectedElements } from '@elementor/editor-elements';\nimport { trackEvent } from '@elementor/mixpanel';\n\nimport { eventBus } from '../../services/event-bus';\nimport { type initialTransitionValue } from './data';\n\ntype TransitionItemValue = typeof initialTransitionValue;\n\nconst transitionRepeaterMixpanelEvent = {\n\teventName: 'click_added_transition',\n\tlocation: 'V4 Style Tab',\n\tsecondaryLocation: 'Transition control',\n\ttrigger: 'click',\n};\n\nexport function subscribeToTransitionEvent() {\n\teventBus.subscribe( 'transition-item-added', ( data ) => {\n\t\tconst payload = data as { itemValue?: TransitionItemValue };\n\t\tconst value = payload?.itemValue?.selection?.value?.value?.value;\n\t\tconst selectedElements = getSelectedElements();\n\t\tconst widgetType = selectedElements[ 0 ]?.type ?? null;\n\t\ttrackEvent( {\n\t\t\ttransition_type: value ?? 'unknown',\n\t\t\t...transitionRepeaterMixpanelEvent,\n\t\t\twidget_type: widgetType,\n\t\t} );\n\t} );\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { keyValuePropTypeUtil, type KeyValuePropValue, type StringPropValue } 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 ControlActions from '../../control-actions/control-actions';\nimport { transitionProperties, transitionsItemsList } from './data';\n\nconst toTransitionSelectorValue = ( label: string ) => {\n\tfor ( const category of transitionProperties ) {\n\t\tconst property = category.properties.find( ( prop ) => prop.label === label );\n\t\tif ( property ) {\n\t\t\treturn {\n\t\t\t\tkey: { value: property.label, $$type: 'string' },\n\t\t\t\tvalue: { value: property.value, $$type: 'string' },\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n};\n\nexport function getTransitionPropertyByValue( item?: StringPropValue | null ) {\n\tif ( ! item?.value ) {\n\t\treturn null;\n\t}\n\n\tfor ( const category of transitionProperties ) {\n\t\tfor ( const property of category.properties ) {\n\t\t\tif ( property.value === item.value ) {\n\t\t\t\treturn property;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\nconst includeCurrentValueInOptions = ( value: KeyValuePropValue[ 'value' ], disabledItems: string[] ) => {\n\treturn disabledItems.filter( ( item ) => {\n\t\treturn item !== value.key.value;\n\t} );\n};\n\nexport const TransitionSelector = ( {\n\trecentlyUsedList = [],\n\tdisabledItems = [],\n}: {\n\trecentlyUsedList: string[];\n\tdisabledItems?: string[];\n} ) => {\n\tconst { value, setValue } = useBoundProp( keyValuePropTypeUtil );\n\tconst {\n\t\tkey: { value: transitionLabel },\n\t} = value;\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst getItemList = () => {\n\t\tconst recentItems = recentlyUsedList\n\t\t\t.map( ( item ) => getTransitionPropertyByValue( { value: item, $$type: 'string' } )?.label )\n\t\t\t.filter( ( item ) => !! item ) as string[];\n\t\tconst filteredItems = transitionsItemsList.map( ( category ) => {\n\t\t\treturn {\n\t\t\t\t...category,\n\t\t\t\titems: category.items.filter( ( item ) => ! recentItems.includes( item ) ),\n\t\t\t};\n\t\t} );\n\t\tif ( recentItems.length === 0 ) {\n\t\t\treturn filteredItems;\n\t\t}\n\t\tconst [ first, ...rest ] = filteredItems;\n\t\treturn [\n\t\t\tfirst,\n\t\t\t{\n\t\t\t\tlabel: __( 'Recently Used', 'elementor' ),\n\t\t\t\titems: recentItems,\n\t\t\t},\n\t\t\t...rest,\n\t\t];\n\t};\n\n\tconst handleTransitionPropertyChange = ( newLabel: string ) => {\n\t\tconst newValue = toTransitionSelectorValue( newLabel );\n\n\t\tif ( ! newValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetValue( newValue );\n\t\tpopoverState.close();\n\t};\n\n\tconst getAnchorPosition = () => {\n\t\tif ( ! defaultRef.current ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rect = defaultRef.current.getBoundingClientRect();\n\t\treturn {\n\t\t\ttop: rect.top,\n\t\t\tleft: rect.right + 36,\n\t\t};\n\t};\n\n\treturn (\n\t\t<Box ref={ defaultRef }>\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ transitionLabel }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t/>\n\t\t\t</ControlActions>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\t{ ...bindPopover( popoverState ) }\n\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\tanchorPosition={ getAnchorPosition() }\n\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\titemsList={ getItemList() }\n\t\t\t\t\tselectedItem={ transitionLabel }\n\t\t\t\t\tonItemChange={ handleTransitionPropertyChange }\n\t\t\t\t\tonClose={ popoverState.close }\n\t\t\t\t\tsectionWidth={ 268 }\n\t\t\t\t\ttitle={ __( 'Transition Property', 'elementor' ) }\n\t\t\t\t\ticon={ VariationsIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\tdisabledItems={ includeCurrentValueInOptions( value, disabledItems ) }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport type { Dayjs } from 'dayjs';\nimport * as dayjs from 'dayjs';\nimport { isTransformable, type Props, stringPropTypeUtil } from '@elementor/editor-props';\nimport { DateTimePropTypeUtil } from '@elementor/editor-props';\nimport { Box, DatePicker, LocalizationProvider, TimePicker } from '@elementor/ui';\n\nimport { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst DATE_FORMAT = 'YYYY-MM-DD';\nconst TIME_FORMAT = 'HH:mm';\n\nexport const DateTimeControl = createControl( ( { inputDisabled }: { inputDisabled?: boolean } ) => {\n\tconst { value, setValue, ...propContext } = useBoundProp( DateTimePropTypeUtil );\n\n\tconst handleChange = ( newValue: Props, meta: { bind: 'date' | 'time' } ) => {\n\t\tconst field = meta.bind;\n\t\tconst fieldValue = newValue[ field as 'date' | 'time' ];\n\n\t\tif ( isTransformable( fieldValue ) ) {\n\t\t\treturn setValue( { ...value, [ field ]: fieldValue } );\n\t\t}\n\n\t\tlet formattedValue = '';\n\n\t\tif ( fieldValue ) {\n\t\t\tconst dayjsValue = fieldValue as Dayjs;\n\t\t\tformattedValue = field === 'date' ? dayjsValue.format( DATE_FORMAT ) : dayjsValue.format( TIME_FORMAT );\n\t\t}\n\n\t\tsetValue( {\n\t\t\t...value,\n\t\t\t[ field ]: {\n\t\t\t\t$$type: 'string',\n\t\t\t\tvalue: formattedValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst parseDateValue = ( dateStr?: string | null ): Dayjs | null => {\n\t\tif ( ! dateStr ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst d = ( dayjs as unknown as { default: ( s?: string | number | Date ) => Dayjs } ).default( dateStr );\n\n\t\treturn d && typeof d.isValid === 'function' && d.isValid() ? d : null;\n\t};\n\n\tconst parseTimeValue = ( timeStr?: string | null ): Dayjs | null => {\n\t\tif ( ! timeStr ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst [ hours, minutes ] = timeStr.split( ':' );\n\t\tconst h = Number.parseInt( hours ?? '', 10 );\n\t\tconst m = Number.parseInt( minutes ?? '', 10 );\n\n\t\tif ( Number.isNaN( h ) || Number.isNaN( m ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst base = ( dayjs as unknown as { default: () => Dayjs } ).default();\n\t\treturn base.hour( h ).minute( m ).second( 0 ).millisecond( 0 );\n\t};\n\n\treturn (\n\t\t<PropProvider { ...propContext } value={ value } setValue={ setValue }>\n\t\t\t<ControlActions>\n\t\t\t\t<LocalizationProvider>\n\t\t\t\t\t<Box display=\"flex\" gap={ 1 } alignItems=\"center\">\n\t\t\t\t\t\t<PropKeyProvider bind=\"date\">\n\t\t\t\t\t\t\t<DatePicker\n\t\t\t\t\t\t\t\tvalue={ parseDateValue( stringPropTypeUtil.extract( value?.date ) ) }\n\t\t\t\t\t\t\t\tonChange={ ( v: Dayjs | null ) =>\n\t\t\t\t\t\t\t\t\thandleChange( { date: v } as Props, { bind: 'date' } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ inputDisabled }\n\t\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\t\ttextField: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerButton: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerIcon: { fontSize: 'tiny' },\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\n\t\t\t\t\t\t<PropKeyProvider bind=\"time\">\n\t\t\t\t\t\t\t<TimePicker\n\t\t\t\t\t\t\t\tvalue={ parseTimeValue( stringPropTypeUtil.extract( value?.time ) ) }\n\t\t\t\t\t\t\t\tonChange={ ( v: Dayjs | null ) =>\n\t\t\t\t\t\t\t\t\thandleChange( { time: v } as Props, { bind: 'time' } )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdisabled={ inputDisabled }\n\t\t\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\t\t\ttextField: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerButton: { size: 'tiny' },\n\t\t\t\t\t\t\t\t\topenPickerIcon: { fontSize: 'tiny' },\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t\t</Box>\n\t\t\t\t</LocalizationProvider>\n\t\t\t</ControlActions>\n\t\t</PropProvider>\n\t);\n} );\n","import * as React from 'react';\nimport { type ComponentProps } from 'react';\nimport { htmlPropTypeUtil } from '@elementor/editor-props';\nimport { Box, type SxProps, type Theme } from '@elementor/ui';\n\nimport { useBoundProp } from '../bound-prop-context';\nimport { InlineEditor } from '../components/inline-editor';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const InlineEditingControl = createControl(\n\t( {\n\t\tsx,\n\t\tattributes,\n\t\tprops,\n\t}: {\n\t\tsx?: SxProps< Theme >;\n\t\tattributes?: Record< string, string >;\n\t\tprops?: ComponentProps< 'div' >;\n\t} ) => {\n\t\tconst { value, setValue } = useBoundProp( htmlPropTypeUtil );\n\t\tconst handleChange = ( newValue: unknown ) => setValue( newValue as string );\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<Box\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tp: 0.8,\n\t\t\t\t\t\tborder: '1px solid',\n\t\t\t\t\t\tborderColor: 'grey.200',\n\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\ttransition: 'border-color .2s ease, box-shadow .2s ease',\n\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\tborderColor: 'black',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'&:focus-within': {\n\t\t\t\t\t\t\tborderColor: 'black',\n\t\t\t\t\t\t\tboxShadow: '0 0 0 1px black',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .ProseMirror:focus': {\n\t\t\t\t\t\t\toutline: 'none',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'& .ProseMirror': {\n\t\t\t\t\t\t\tminHeight: '70px',\n\t\t\t\t\t\t\tfontSize: '12px',\n\t\t\t\t\t\t\t'& a': {\n\t\t\t\t\t\t\t\tcolor: 'inherit',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'.strip-styles *': {\n\t\t\t\t\t\t\tall: 'unset',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...sx,\n\t\t\t\t\t} }\n\t\t\t\t\t{ ...attributes }\n\t\t\t\t\t{ ...props }\n\t\t\t\t>\n\t\t\t\t\t<InlineEditor value={ value || '' } setValue={ handleChange } />\n\t\t\t\t</Box>\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport {\n\ttype DependencyList,\n\tforwardRef,\n\ttype PropsWithChildren,\n\ttype RefObject,\n\tuseEffect,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { bindPopover, Box, ClickAwayListener, Popover, type SxProps, type Theme, usePopupState } from '@elementor/ui';\nimport Bold from '@tiptap/extension-bold';\nimport Document from '@tiptap/extension-document';\nimport HardBreak from '@tiptap/extension-hard-break';\nimport Heading from '@tiptap/extension-heading';\nimport Italic from '@tiptap/extension-italic';\nimport Link from '@tiptap/extension-link';\nimport Paragraph from '@tiptap/extension-paragraph';\nimport Strike from '@tiptap/extension-strike';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport Text from '@tiptap/extension-text';\nimport Underline from '@tiptap/extension-underline';\nimport { type EditorView } from '@tiptap/pm/view';\nimport { type Editor, EditorContent, useEditor } from '@tiptap/react';\n\nimport { isEmpty } from '../utils/inline-editing';\nimport { InlineEditorToolbar } from './inline-editor-toolbar';\n\ntype InlineEditorProps = {\n\tvalue: string | null;\n\tsetValue: ( value: string | null ) => void;\n\tattributes?: Record< string, string >;\n\telementClasses?: string;\n\tsx?: SxProps< Theme >;\n\tonBlur?: ( event: Event ) => void;\n\tshowToolbar?: boolean;\n\tautofocus?: boolean;\n\tgetInitialPopoverPosition?: () => { left: number; top: number };\n\texpectedTag?: string | null;\n};\n\nconst INITIAL_STYLE = 'margin:0;padding:0;';\n\nconst useOnUpdate = ( callback: () => void, dependencies: DependencyList ): void => {\n\tconst hasMounted = useRef( false );\n\n\tuseEffect( () => {\n\t\tif ( hasMounted.current ) {\n\t\t\tcallback();\n\t\t} else {\n\t\t\thasMounted.current = true;\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, dependencies );\n};\n\nconst calcSelectionCenter = (\n\tview: EditorView,\n\tcontainer: { left: number; top: number } | undefined\n): { left: number; top: number } | null => {\n\tif ( ! container ) {\n\t\treturn null;\n\t}\n\n\tconst { from, to } = view.state.selection;\n\tconst start = view.coordsAtPos( from );\n\tconst end = view.coordsAtPos( to );\n\n\tconst left = ( start.left + end.left ) / 2 - container.left;\n\tconst top = Math.min( start.top, end.top ) - container.top;\n\n\treturn { left, top };\n};\n\ntype WrapperProps = PropsWithChildren< {\n\tcontainerRef: RefObject< HTMLDivElement >;\n\teditor: ReturnType< typeof useEditor >;\n\tsx: SxProps< Theme >;\n\tonBlur?: ( event: Event ) => void;\n} >;\n\nconst Wrapper = ( { children, containerRef, editor, sx, onBlur }: WrapperProps ) => {\n\tconst wrappedChildren = (\n\t\t<Box ref={ containerRef } { ...sx }>\n\t\t\t{ children }\n\t\t</Box>\n\t);\n\n\treturn onBlur ? (\n\t\t<ClickAwayListener\n\t\t\tonClickAway={ ( event: PointerEvent ) => {\n\t\t\t\tif (\n\t\t\t\t\tcontainerRef.current?.contains( event.target as Node ) ||\n\t\t\t\t\teditor.view.dom.contains( event.target as Node )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonBlur?.( event );\n\t\t\t} }\n\t\t>\n\t\t\t{ wrappedChildren }\n\t\t</ClickAwayListener>\n\t) : (\n\t\t<>{ wrappedChildren }</>\n\t);\n};\n\nexport const InlineEditor = forwardRef(\n\t(\n\t\t{\n\t\t\tvalue,\n\t\t\tsetValue,\n\t\t\tattributes = {},\n\t\t\telementClasses = '',\n\t\t\tshowToolbar = false,\n\t\t\tautofocus = false,\n\t\t\tsx = {},\n\t\t\tonBlur = undefined,\n\t\t\tgetInitialPopoverPosition = undefined,\n\t\t\texpectedTag = null,\n\t\t}: InlineEditorProps,\n\t\tref\n\t) => {\n\t\tconst containerRef = useRef< HTMLDivElement >( null );\n\t\tconst popupState = usePopupState( { variant: 'popover', disableAutoFocus: true } );\n\t\tconst [ hasSelectedContent, setHasSelectedContent ] = useState( false );\n\t\tconst documentContentSettings = !! expectedTag ? 'block+' : 'inline*';\n\t\tconst [ selectionRect, setSelectionRect ] = useState< { left: number; top: number } | null >( null );\n\n\t\tconst onSelectionEnd = ( view: EditorView ) => {\n\t\t\tconst hasSelection = ! view.state.selection.empty;\n\t\t\tsetHasSelectedContent( hasSelection );\n\n\t\t\tif ( hasSelection ) {\n\t\t\t\tconst container = containerRef.current?.getBoundingClientRect();\n\t\t\t\tsetSelectionRect( calcSelectionCenter( view, container ) );\n\t\t\t} else {\n\t\t\t\tsetSelectionRect( null );\n\t\t\t}\n\n\t\t\tqueueMicrotask( () => view.focus() );\n\t\t};\n\n\t\tconst onKeyDown = ( _: EditorView, event: KeyboardEvent ) => {\n\t\t\tif ( event.key === 'Escape' ) {\n\t\t\t\tonBlur?.( event );\n\t\t\t}\n\t\t};\n\n\t\tconst toolbarRelatedListeners = showToolbar\n\t\t\t? {\n\t\t\t\t\tmouseup: onSelectionEnd,\n\t\t\t\t\tkeyup: onSelectionEnd,\n\t\t\t\t\tkeydown: onKeyDown,\n\t\t\t }\n\t\t\t: undefined;\n\n\t\tconst onUpdate = ( { editor: updatedEditor }: { editor: Editor } ) => {\n\t\t\tconst newValue: string | null = updatedEditor.getHTML();\n\n\t\t\tsetValue( isEmpty( newValue ) ? null : newValue );\n\t\t};\n\n\t\tconst editor = useEditor( {\n\t\t\textensions: [\n\t\t\t\tDocument.extend( {\n\t\t\t\t\tcontent: documentContentSettings,\n\t\t\t\t} ),\n\t\t\t\tParagraph.extend( {\n\t\t\t\t\trenderHTML( { HTMLAttributes } ) {\n\t\t\t\t\t\tconst tag = expectedTag ?? 'p';\n\t\t\t\t\t\treturn [ tag, { ...HTMLAttributes, style: INITIAL_STYLE, class: elementClasses }, 0 ];\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t\tHeading.extend( {\n\t\t\t\t\trenderHTML( { node, HTMLAttributes } ) {\n\t\t\t\t\t\tif ( expectedTag ) {\n\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\texpectedTag,\n\t\t\t\t\t\t\t\t{ ...HTMLAttributes, style: INITIAL_STYLE, class: elementClasses },\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst level = this.options.levels.includes( node.attrs.level )\n\t\t\t\t\t\t\t? node.attrs.level\n\t\t\t\t\t\t\t: this.options.levels[ 0 ];\n\n\t\t\t\t\t\treturn [ `h${ level }`, { ...HTMLAttributes, style: INITIAL_STYLE, class: elementClasses }, 0 ];\n\t\t\t\t\t},\n\t\t\t\t} ).configure( {\n\t\t\t\t\tlevels: [ 1, 2, 3, 4, 5, 6 ],\n\t\t\t\t} ),\n\t\t\t\tLink.configure( {\n\t\t\t\t\topenOnClick: false,\n\t\t\t\t} ),\n\t\t\t\tText,\n\t\t\t\tBold,\n\t\t\t\tItalic,\n\t\t\t\tStrike,\n\t\t\t\tSuperscript,\n\t\t\t\tSubscript,\n\t\t\t\tUnderline,\n\t\t\t\tHardBreak.extend( {\n\t\t\t\t\taddKeyboardShortcuts() {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tEnter: () => this.editor.commands.setHardBreak(),\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t} ),\n\t\t\t],\n\t\t\tcontent: value,\n\t\t\tonUpdate,\n\t\t\tautofocus,\n\t\t\teditorProps: {\n\t\t\t\tattributes: {\n\t\t\t\t\t...attributes,\n\t\t\t\t\tclass: attributes.class ?? '',\n\t\t\t\t\trole: 'textbox',\n\t\t\t\t},\n\t\t\t\thandleDOMEvents: toolbarRelatedListeners,\n\t\t\t},\n\t\t} );\n\n\t\tuseOnUpdate( () => {\n\t\t\tif ( ! editor ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentContent = editor.getHTML();\n\n\t\t\tif ( currentContent !== value ) {\n\t\t\t\teditor.commands.setContent( value, { emitUpdate: false } );\n\t\t\t}\n\t\t}, [ editor, value ] );\n\n\t\tconst computePopupPosition = () => {\n\t\t\tif ( ! selectionRect ) {\n\t\t\t\treturn { left: 0, top: 0 };\n\t\t\t}\n\n\t\t\tconst container = containerRef.current?.getBoundingClientRect();\n\t\t\tif ( ! container ) {\n\t\t\t\treturn { left: 0, top: 0 };\n\t\t\t}\n\n\t\t\tconst initial = getInitialPopoverPosition?.() ?? { left: 0, top: 0 };\n\n\t\t\treturn {\n\t\t\t\tleft: container.left + selectionRect.left + initial.left,\n\t\t\t\ttop: container.top + selectionRect.top + initial.top,\n\t\t\t};\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Wrapper containerRef={ containerRef } editor={ editor } sx={ sx } onBlur={ onBlur }>\n\t\t\t\t\t<EditorContent ref={ ref } editor={ editor } />\n\t\t\t\t</Wrapper>\n\t\t\t\t{ showToolbar && containerRef.current && (\n\t\t\t\t\t<Popover\n\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\troot: {\n\t\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\t\tpointerEvents: 'none',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\t\t\topen={ hasSelectedContent && selectionRect !== null }\n\t\t\t\t\t\tanchorReference=\"anchorPosition\"\n\t\t\t\t\t\tanchorPosition={ computePopupPosition() }\n\t\t\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'center' } }\n\t\t\t\t\t\ttransformOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<InlineEditorToolbar editor={ editor } />\n\t\t\t\t\t</Popover>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}\n);\n","export function isEmpty( value: string | null = '' ) {\n\tif ( ! value ) {\n\t\treturn true;\n\t}\n\n\tconst pseudoElement = document.createElement( 'div' );\n\n\tpseudoElement.innerHTML = value;\n\n\treturn ! pseudoElement.textContent?.length;\n}\n","import * as React from 'react';\nimport { useMemo, useRef, useState } from 'react';\nimport {\n\tBoldIcon,\n\tItalicIcon,\n\tLinkIcon,\n\tMinusIcon,\n\tStrikethroughIcon,\n\tSubscriptIcon,\n\tSuperscriptIcon,\n\tUnderlineIcon,\n} from '@elementor/icons';\nimport {\n\tBox,\n\tIconButton,\n\tToggleButton,\n\tToggleButtonGroup,\n\ttoggleButtonGroupClasses,\n\tTooltip,\n\tusePopupState,\n} from '@elementor/ui';\nimport { type Editor, useEditorState } from '@tiptap/react';\nimport { __ } from '@wordpress/i18n';\n\nimport { UrlPopover } from './url-popover';\n\ntype InlineEditorToolbarProps = {\n\teditor: Editor;\n};\n\nconst toolbarButtons = {\n\tclear: {\n\t\tlabel: __( 'Clear', 'elementor' ),\n\t\ticon: <MinusIcon fontSize=\"tiny\" />,\n\t\taction: 'clear',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().clearNodes().unsetAllMarks().run();\n\t\t},\n\t},\n\tbold: {\n\t\tlabel: __( 'Bold', 'elementor' ),\n\t\ticon: <BoldIcon fontSize=\"tiny\" />,\n\t\taction: 'bold',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleBold().run();\n\t\t},\n\t},\n\titalic: {\n\t\tlabel: __( 'Italic', 'elementor' ),\n\t\ticon: <ItalicIcon fontSize=\"tiny\" />,\n\t\taction: 'italic',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleItalic().run();\n\t\t},\n\t},\n\tunderline: {\n\t\tlabel: __( 'Underline', 'elementor' ),\n\t\ticon: <UnderlineIcon fontSize=\"tiny\" />,\n\t\taction: 'underline',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleUnderline().run();\n\t\t},\n\t},\n\tstrike: {\n\t\tlabel: __( 'Strikethrough', 'elementor' ),\n\t\ticon: <StrikethroughIcon fontSize=\"tiny\" />,\n\t\taction: 'strike',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleStrike().run();\n\t\t},\n\t},\n\tsuperscript: {\n\t\tlabel: __( 'Superscript', 'elementor' ),\n\t\ticon: <SuperscriptIcon fontSize=\"tiny\" />,\n\t\taction: 'superscript',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleSuperscript().run();\n\t\t},\n\t},\n\tsubscript: {\n\t\tlabel: __( 'Subscript', 'elementor' ),\n\t\ticon: <SubscriptIcon fontSize=\"tiny\" />,\n\t\taction: 'subscript',\n\t\tmethod: ( editor: Editor ) => {\n\t\t\teditor.chain().focus().toggleSubscript().run();\n\t\t},\n\t},\n\tlink: {\n\t\tlabel: __( 'Link', 'elementor' ),\n\t\ticon: <LinkIcon fontSize=\"tiny\" />,\n\t\taction: 'link',\n\t\tmethod: null,\n\t},\n} as const;\n\ntype ToolbarButtonKeys = keyof typeof toolbarButtons;\n\ntype FormatAction = Omit< ToolbarButtonKeys, 'clear' >;\n\nconst { clear: clearButton, ...formatButtons } = toolbarButtons;\n\nconst possibleFormats: FormatAction[] = Object.keys( formatButtons ) as FormatAction[];\n\nexport const InlineEditorToolbar = ( { editor }: InlineEditorToolbarProps ) => {\n\tconst [ urlValue, setUrlValue ] = useState( '' );\n\tconst [ openInNewTab, setOpenInNewTab ] = useState( false );\n\tconst toolbarRef = useRef< HTMLDivElement >( null );\n\tconst linkPopupState = usePopupState( { variant: 'popover' } );\n\n\tconst editorState = useEditorState( {\n\t\teditor,\n\t\tselector: ( ctx ) => possibleFormats.filter( ( format ) => ctx.editor.isActive( format ) ),\n\t} );\n\n\tconst formatButtonsList = useMemo( () => Object.values( formatButtons ), [] );\n\n\tconst handleLinkClick = () => {\n\t\tconst linkAttrs = editor.getAttributes( 'link' );\n\t\tsetUrlValue( linkAttrs.href || '' );\n\t\tsetOpenInNewTab( linkAttrs.target === '_blank' );\n\t\tlinkPopupState.open( toolbarRef.current );\n\t};\n\n\tconst handleUrlChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetUrlValue( event.target.value );\n\t};\n\n\tconst handleToggleNewTab = () => {\n\t\tsetOpenInNewTab( ! openInNewTab );\n\t};\n\n\tconst handleUrlSubmit = () => {\n\t\tif ( urlValue ) {\n\t\t\teditor\n\t\t\t\t.chain()\n\t\t\t\t.focus()\n\t\t\t\t.setLink( {\n\t\t\t\t\thref: urlValue,\n\t\t\t\t\ttarget: openInNewTab ? '_blank' : '_self',\n\t\t\t\t} )\n\t\t\t\t.run();\n\t\t} else {\n\t\t\teditor.chain().focus().unsetLink().run();\n\t\t}\n\t\tlinkPopupState.close();\n\t};\n\n\tReact.useEffect( () => {\n\t\teditor?.commands?.focus();\n\t}, [ editor ] );\n\n\treturn (\n\t\t<Box\n\t\t\tref={ toolbarRef }\n\t\t\tsx={ {\n\t\t\t\tdisplay: 'inline-flex',\n\t\t\t\tgap: 0.5,\n\t\t\t\tpadding: 0.5,\n\t\t\t\tborderRadius: '8px',\n\t\t\t\tbackgroundColor: 'background.paper',\n\t\t\t\tboxShadow: '0 2px 8px rgba(0, 0, 0, 0.2)',\n\t\t\t\talignItems: 'center',\n\t\t\t\tvisibility: linkPopupState.isOpen ? 'hidden' : 'visible',\n\t\t\t\tpointerEvents: linkPopupState.isOpen ? 'none' : 'all',\n\t\t\t} }\n\t\t>\n\t\t\t<Tooltip title={ clearButton.label } placement=\"top\" sx={ { borderRadius: '8px' } }>\n\t\t\t\t<IconButton aria-label={ clearButton.label } onClick={ () => clearButton.method( editor ) } size=\"tiny\">\n\t\t\t\t\t{ clearButton.icon }\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t\t<ToggleButtonGroup\n\t\t\t\tvalue={ editorState }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tsx={ {\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tgap: 0.5,\n\t\t\t\t\tborder: 'none',\n\t\t\t\t\t[ `& .${ toggleButtonGroupClasses.firstButton }, & .${ toggleButtonGroupClasses.middleButton }, & .${ toggleButtonGroupClasses.lastButton }` ]:\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tborderRadius: '8px',\n\t\t\t\t\t\t\tborder: 'none',\n\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t'&.Mui-selected': {\n\t\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t'& + &.Mui-selected': {\n\t\t\t\t\t\t\t\tmarginLeft: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ formatButtonsList.map( ( button ) => (\n\t\t\t\t\t<Tooltip title={ button.label } key={ button.action } placement=\"top\">\n\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\tvalue={ button.action }\n\t\t\t\t\t\t\taria-label={ button.label }\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\tif ( button.action === 'link' ) {\n\t\t\t\t\t\t\t\t\thandleLinkClick();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbutton.method?.( editor );\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\teditor?.commands?.focus();\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ button.icon }\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) ) }\n\t\t\t</ToggleButtonGroup>\n\t\t\t<UrlPopover\n\t\t\t\tpopupState={ linkPopupState }\n\t\t\t\tanchorRef={ toolbarRef }\n\t\t\t\trestoreValue={ handleUrlSubmit }\n\t\t\t\tvalue={ urlValue }\n\t\t\t\tonChange={ handleUrlChange }\n\t\t\t\topenInNewTab={ openInNewTab }\n\t\t\t\tonToggleNewTab={ handleToggleNewTab }\n\t\t\t/>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useEffect, useRef } from 'react';\nimport { ExternalLinkIcon } from '@elementor/icons';\nimport { bindPopover, Popover, type PopupState, Stack, TextField, ToggleButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tpopupState: PopupState;\n\tanchorRef: RefObject< HTMLDivElement | null >;\n\trestoreValue: () => void;\n\tvalue: string;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\topenInNewTab: boolean;\n\tonToggleNewTab: () => void;\n};\n\nexport const UrlPopover = ( {\n\tpopupState,\n\trestoreValue,\n\tanchorRef,\n\tvalue,\n\tonChange,\n\topenInNewTab,\n\tonToggleNewTab,\n}: Props ) => {\n\tconst inputRef = useRef< HTMLInputElement >( null );\n\n\tuseEffect( () => {\n\t\tif ( popupState.isOpen ) {\n\t\t\trequestAnimationFrame( () => inputRef.current?.focus() );\n\t\t}\n\t}, [ popupState.isOpen ] );\n\n\tconst handleClose = () => {\n\t\trestoreValue();\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<Popover\n\t\t\tslotProps={ {\n\t\t\t\tpaper: { sx: { borderRadius: '16px', width: anchorRef.current?.offsetWidth + 'px', marginTop: -1 } },\n\t\t\t} }\n\t\t\t{ ...bindPopover( popupState ) }\n\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\tonClose={ handleClose }\n\t\t>\n\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 } sx={ { p: 1.5 } }>\n\t\t\t\t<TextField\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tplaceholder={ __( 'Type a URL', 'elementor' ) }\n\t\t\t\t\tinputProps={ { ref: inputRef } }\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tInputProps={ { sx: { borderRadius: '8px' } } }\n\t\t\t\t/>\n\t\t\t\t<ToggleButton\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue=\"newTab\"\n\t\t\t\t\tselected={ openInNewTab }\n\t\t\t\t\tonClick={ onToggleNewTab }\n\t\t\t\t\taria-label={ __( 'Open in a new tab', 'elementor' ) }\n\t\t\t\t\tsx={ { borderRadius: '8px' } }\n\t\t\t\t>\n\t\t\t\t\t<ExternalLinkIcon fontSize=\"tiny\" />\n\t\t\t\t</ToggleButton>\n\t\t\t</Stack>\n\t\t</Popover>\n\t);\n};\n","import * as React from 'react';\nimport { BrushBigIcon } from '@elementor/icons';\nimport { IconButton, styled, Tooltip } from '@elementor/ui';\n\ntype ClearIconButtonProps = {\n\tonClick?: () => void;\n\ttooltipText: React.ReactNode;\n\tdisabled?: boolean;\n\tsize?: 'tiny' | 'small' | 'medium' | 'large';\n};\n\nconst CustomIconButton = styled( IconButton )( ( { theme } ) => ( {\n\twidth: theme.spacing( 2.5 ),\n\theight: theme.spacing( 2.5 ),\n} ) );\n\nexport const ClearIconButton = ( { tooltipText, onClick, disabled, size = 'tiny' }: ClearIconButtonProps ) => (\n\t<Tooltip title={ tooltipText } placement=\"top\" disableInteractive>\n\t\t<CustomIconButton aria-label={ tooltipText } size={ size } onClick={ onClick } disabled={ disabled }>\n\t\t\t<BrushBigIcon fontSize={ size } />\n\t\t</CustomIconButton>\n\t</Tooltip>\n);\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { type CreateOptions, type PropKey } from '@elementor/editor-props';\nimport { CopyIcon, EyeIcon, EyeOffIcon, PlusIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tInfotip,\n\tTooltip,\n\ttype UnstableTagProps,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SetValueMeta } from '../../bound-prop-context';\nimport { ControlAdornments } from '../../control-adornments/control-adornments';\nimport { RepeaterItemIconSlot, RepeaterItemLabelSlot } from '../control-repeater/locations';\nimport { SectionContent } from '../section-content';\nimport { RepeaterHeader } from './repeater-header';\nimport { RepeaterPopover } from './repeater-popover';\nimport { RepeaterTag } from './repeater-tag';\nimport { SortableItem, SortableProvider } from './sortable';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\nexport type RepeaterItem< T > = {\n\tdisabled?: boolean;\n} & T;\n\ntype RepeaterItemContentProps< T > = {\n\tanchorEl: AnchorEl;\n\tbind: PropKey;\n\tvalue: T;\n\tindex: number;\n};\n\ntype RepeaterItemContent< T > = React.ComponentType< RepeaterItemContentProps< T > >;\n\nexport type ItemsActionPayload< T > = Array< { index: number; item: T } >;\n\ntype AddItemMeta< T > = {\n\ttype: 'add';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype RemoveItemMeta< T > = {\n\ttype: 'remove';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype DuplicateItemMeta< T > = {\n\ttype: 'duplicate';\n\tpayload: ItemsActionPayload< T >;\n};\n\ntype ReorderItemMeta = {\n\ttype: 'reorder';\n\tpayload: { from: number; to: number };\n};\n\ntype ToggleDisableItemMeta = {\n\ttype: 'toggle-disable';\n};\n\nexport type SetRepeaterValuesMeta< T > =\n\t| SetValueMeta< AddItemMeta< T > >\n\t| SetValueMeta< RemoveItemMeta< T > >\n\t| SetValueMeta< DuplicateItemMeta< T > >\n\t| SetValueMeta< ReorderItemMeta >\n\t| SetValueMeta< ToggleDisableItemMeta >;\n\ntype BaseItemSettings< T > = {\n\tinitialValues: T;\n\tLabel: React.ComponentType< { value: T; index: number } >;\n\tIcon: React.ComponentType< { value: T } >;\n\tContent: RepeaterItemContent< T >;\n\tactions?: ( value: T ) => React.ReactNode;\n};\n\ntype SortableItemSettings< T > = BaseItemSettings< T > & {\n\tgetId: ( { item, index }: { item: T; index: number } ) => string;\n};\n\ntype RepeaterProps< T > =\n\t| {\n\t\t\tlabel: string;\n\t\t\tvalues?: T[];\n\t\t\topenOnAdd?: boolean;\n\t\t\tsetValues: ( newValue: T[], _: CreateOptions, meta?: SetRepeaterValuesMeta< T > ) => void;\n\t\t\tdisabled?: boolean;\n\t\t\tdisableAddItemButton?: boolean;\n\t\t\taddButtonInfotipContent?: React.ReactNode;\n\t\t\tshowDuplicate?: boolean;\n\t\t\tshowToggle?: boolean;\n\t\t\tshowRemove?: boolean;\n\t\t\topenItem?: number;\n\t\t\tisSortable: false;\n\t\t\titemSettings: BaseItemSettings< T >;\n\t }\n\t| {\n\t\t\tlabel: string;\n\t\t\tvalues?: T[];\n\t\t\topenOnAdd?: boolean;\n\t\t\tsetValues: ( newValue: T[], _: CreateOptions, meta?: SetRepeaterValuesMeta< T > ) => void;\n\t\t\tdisabled?: boolean;\n\t\t\tdisableAddItemButton?: boolean;\n\t\t\taddButtonInfotipContent?: React.ReactNode;\n\t\t\tshowDuplicate?: boolean;\n\t\t\tshowToggle?: boolean;\n\t\t\tshowRemove?: boolean;\n\t\t\topenItem?: number;\n\t\t\tisSortable?: true;\n\t\t\titemSettings: SortableItemSettings< T >;\n\t };\n\nconst EMPTY_OPEN_ITEM = -1;\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tdisabled = false,\n\topenOnAdd = false,\n\tvalues: items = [],\n\tsetValues: setItems,\n\tshowDuplicate = true,\n\tshowToggle = true,\n\tshowRemove = true,\n\tdisableAddItemButton = false,\n\taddButtonInfotipContent,\n\topenItem: initialOpenItem = EMPTY_OPEN_ITEM,\n\tisSortable = true,\n}: RepeaterProps< RepeaterItem< T > > ) => {\n\tconst [ openItem, setOpenItem ] = useState( initialOpenItem );\n\n\tconst uniqueKeys = items.map( ( item, index ) =>\n\t\tisSortable && 'getId' in itemSettings ? itemSettings.getId( { item, index } ) : String( index )\n\t);\n\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\t\tconst newIndex = items.length;\n\t\tsetItems(\n\t\t\t[ ...items, newItem ],\n\t\t\t{},\n\t\t\t{\n\t\t\t\taction: { type: 'add', payload: [ { index: newIndex, item: newItem } ] },\n\t\t\t}\n\t\t);\n\n\t\tif ( openOnAdd ) {\n\t\t\tsetOpenItem( newIndex );\n\t\t}\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tconst newItem = structuredClone( items[ index ] );\n\n\t\t// Insert the new (cloned item) at the next spot (after the current index)\n\t\tconst atPosition = 1 + index;\n\n\t\tsetItems(\n\t\t\t[ ...items.slice( 0, atPosition ), newItem, ...items.slice( atPosition ) ],\n\t\t\t{},\n\t\t\t{\n\t\t\t\taction: { type: 'duplicate', payload: [ { index, item: newItem } ] },\n\t\t\t}\n\t\t);\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tconst removedItem = items[ index ];\n\n\t\tsetItems(\n\t\t\titems.filter( ( _, pos ) => {\n\t\t\t\treturn pos !== index;\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'remove', payload: [ { index, item: removedItem } ] } }\n\t\t);\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetItems(\n\t\t\titems.map( ( value, pos ) => {\n\t\t\t\tif ( pos === index ) {\n\t\t\t\t\tconst { disabled: propDisabled, ...rest } = value;\n\n\t\t\t\t\t// If the items should not be disabled, remove the disabled property.\n\t\t\t\t\treturn { ...rest, ...( propDisabled ? {} : { disabled: true } ) } as RepeaterItem< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'toggle-disable' } }\n\t\t);\n\t};\n\n\tconst onChangeOrder = ( reorderedKeys: string[], meta: { from: number; to: number } ) => {\n\t\tsetItems(\n\t\t\treorderedKeys.map( ( id ) => {\n\t\t\t\treturn items[ uniqueKeys.indexOf( id ) ];\n\t\t\t} ),\n\t\t\t{},\n\t\t\t{ action: { type: 'reorder', payload: { ...meta } } }\n\t\t);\n\t};\n\n\tconst isButtonDisabled = disabled || disableAddItemButton;\n\tconst shouldShowInfotip = isButtonDisabled && addButtonInfotipContent;\n\n\tconst addButton = (\n\t\t<IconButton\n\t\t\tsize={ SIZE }\n\t\t\tsx={ {\n\t\t\t\tml: 'auto',\n\t\t\t} }\n\t\t\tdisabled={ isButtonDisabled }\n\t\t\tonClick={ addRepeaterItem }\n\t\t\taria-label={ __( 'Add item', 'elementor' ) }\n\t\t>\n\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t</IconButton>\n\t);\n\n\treturn (\n\t\t<SectionContent gap={ 2 }>\n\t\t\t<RepeaterHeader label={ label } adornment={ ControlAdornments }>\n\t\t\t\t{ shouldShowInfotip ? (\n\t\t\t\t\t<Infotip\n\t\t\t\t\t\tplacement=\"right\"\n\t\t\t\t\t\tcontent={ addButtonInfotipContent }\n\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\tslotProps={ { popper: { sx: { width: 300 } } } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Box sx={ { ...( isButtonDisabled ? { cursor: 'not-allowed' } : {} ) } }>{ addButton }</Box>\n\t\t\t\t\t</Infotip>\n\t\t\t\t) : (\n\t\t\t\t\taddButton\n\t\t\t\t) }\n\t\t\t</RepeaterHeader>\n\t\t\t{ 0 < uniqueKeys.length && (\n\t\t\t\t<SortableProvider value={ uniqueKeys } onChange={ onChangeOrder }>\n\t\t\t\t\t{ uniqueKeys.map( ( key ) => {\n\t\t\t\t\t\tconst index = uniqueKeys.indexOf( key );\n\t\t\t\t\t\tconst value = items[ index ];\n\n\t\t\t\t\t\tif ( ! value ) {\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<SortableItem id={ key } key={ `sortable-${ key }` } disabled={ ! isSortable }>\n\t\t\t\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\t\t\tpropDisabled={ value?.disabled }\n\t\t\t\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemLabelSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Label value={ value } index={ index } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemLabelSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tstartIcon={\n\t\t\t\t\t\t\t\t\t\t<RepeaterItemIconSlot value={ value }>\n\t\t\t\t\t\t\t\t\t\t\t<itemSettings.Icon value={ value } />\n\t\t\t\t\t\t\t\t\t\t</RepeaterItemIconSlot>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t\t\t\t\topenOnMount={ openOnAdd && openItem === index }\n\t\t\t\t\t\t\t\t\tonOpen={ () => setOpenItem( EMPTY_OPEN_ITEM ) }\n\t\t\t\t\t\t\t\t\tshowDuplicate={ showDuplicate }\n\t\t\t\t\t\t\t\t\tshowToggle={ showToggle }\n\t\t\t\t\t\t\t\t\tshowRemove={ showRemove }\n\t\t\t\t\t\t\t\t\tactions={ itemSettings.actions }\n\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ ( props ) => (\n\t\t\t\t\t\t\t\t\t\t<itemSettings.Content\n\t\t\t\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\tbind={ String( index ) }\n\t\t\t\t\t\t\t\t\t\t\tindex={ index }\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</RepeaterItem>\n\t\t\t\t\t\t\t</SortableItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</SortableProvider>\n\t\t\t) }\n\t\t</SectionContent>\n\t);\n};\n\ntype RepeaterItemProps< T > = {\n\tlabel: React.ReactNode;\n\tpropDisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( props: Pick< RepeaterItemContentProps< T >, 'anchorEl' > ) => React.ReactNode;\n\topenOnMount: boolean;\n\tonOpen: () => void;\n\tshowDuplicate: boolean;\n\tshowToggle: boolean;\n\tshowRemove: boolean;\n\tdisabled?: boolean;\n\tactions?: ( value: T ) => React.ReactNode;\n\tvalue: T;\n};\n\nconst RepeaterItem = < T, >( {\n\tlabel,\n\tpropDisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n\topenOnMount,\n\tonOpen,\n\tshowDuplicate,\n\tshowToggle,\n\tshowRemove,\n\tdisabled,\n\tactions,\n\tvalue,\n}: RepeaterItemProps< T > ) => {\n\tconst { popoverState, popoverProps, ref, setRef } = usePopover( openOnMount, onOpen );\n\n\tconst duplicateLabel = __( 'Duplicate', 'elementor' );\n\tconst toggleLabel = propDisabled ? __( 'Show', 'elementor' ) : __( 'Hide', 'elementor' );\n\tconst removeLabel = __( 'Remove', 'elementor' );\n\n\treturn (\n\t\t<>\n\t\t\t<RepeaterTag\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tlabel={ label }\n\t\t\t\tref={ setRef }\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ showDuplicate && (\n\t\t\t\t\t\t\t<Tooltip title={ duplicateLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ duplicateItem } aria-label={ duplicateLabel }>\n\t\t\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ showToggle && (\n\t\t\t\t\t\t\t<Tooltip title={ toggleLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ toggleDisableItem } aria-label={ toggleLabel }>\n\t\t\t\t\t\t\t\t\t{ propDisabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ actions?.( value ) }\n\t\t\t\t\t\t{ showRemove && (\n\t\t\t\t\t\t\t<Tooltip title={ removeLabel } placement=\"top\">\n\t\t\t\t\t\t\t\t<IconButton size={ SIZE } onClick={ removeItem } aria-label={ removeLabel }>\n\t\t\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<RepeaterPopover width={ ref?.getBoundingClientRect().width } { ...popoverProps } anchorEl={ ref }>\n\t\t\t\t<Box>{ children( { anchorEl: ref } ) }</Box>\n\t\t\t</RepeaterPopover>\n\t\t</>\n\t);\n};\n\nconst usePopover = ( openOnMount: boolean, onOpen: () => void ) => {\n\tconst [ ref, setRef ] = useState< HTMLElement | null >( null );\n\n\tconst popoverState = usePopupState( { variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\tuseEffect( () => {\n\t\tif ( openOnMount && ref ) {\n\t\t\tpopoverState.open( ref );\n\t\t\tonOpen?.();\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ ref ] );\n\n\treturn {\n\t\tpopoverState,\n\t\tref,\n\t\tsetRef,\n\t\tpopoverProps,\n\t};\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAA;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,UAAuB;AACvB,IAAAC,uBAAkC;AAClC,IAAAC,aAA4B;AAE5B,IAAAC,eAAmB;;;ACJnB,YAAuB;AACvB,mBAA0C;;;ACD1C,mBAA4B;AAErB,IAAM,2BAAuB,0BAAa;AAAA,EAChD,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,6BAAyB,0BAAa;AAAA,EAClD,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,+BAA2B,0BAAa;AAAA,EACpD,MAAM;AAAA,EACN,SAAS;AACV,CAAE;;;ADaF,IAAM,kBAAc,4BAA4D,IAAK;AAM9E,IAAM,eAAe,CAA6C;AAAA,EACxE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAkC;AACjC,SACC;AAAA,IAAC,YAAY;AAAA,IAAZ;AAAA,MACA,OAAQ;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA;AAAA,IAEE;AAAA,EACH;AAEF;AAEO,IAAM,iBAAiB,MAAiD;AAC9E,QAAM,cAAU,yBAAY,WAAY;AAExC,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,yBAA0B;AAAA,MACnC,SAAS;AAAA,QACR,MAAM;AAAA,QACN,UAAU;AAAA,MACX;AAAA,IACD,CAAE;AAAA,EACH;AAEA,SAAO;AACR;;;AEtEA,IAAAC,SAAuB;AACvB,IAAAC,gBAA0C;AA0B1C,IAAM,qBAAiB,6BAAoE,IAAK;AAMzF,IAAM,kBAAkB,CAAE,EAAE,UAAU,KAAK,MAA6B;AAC9E,QAAM,EAAE,SAAS,IAAI,eAAe;AAEpC,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,qBAAsB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAE;AAAA,EACvD;AAEA,MAAK,SAAS,SAAS,SAAU;AAChC,WAAO,qCAAC,wBAAqB,QAAgB,QAAU;AAAA,EACxD;AAEA,MAAK,SAAS,SAAS,UAAW;AACjC,WAAO,qCAAC,yBAAsB,QAAgB,QAAU;AAAA,EACzD;AAEA,QAAM,IAAI,uBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,CAAE;AAC7D;AAEA,IAAM,wBAAwB,CAAE,EAAE,UAAU,KAAK,MAA6B;AAC7E,QAAM,UAAU,eAA6D;AAC7E,QAAM,EAAE,KAAK,QAAI,0BAAY,cAAe,KAAK,CAAC;AAElD,QAAM,WAAkC,CAAEC,QAAO,SAAS,SAAU;AACnE,UAAM,WAAW;AAAA,MAChB,GAAG,QAAQ;AAAA,MACX,CAAE,IAAK,GAAGA;AAAA,IACX;AAEA,WAAO,SAAS,SAAU,UAAU,SAAS,EAAE,GAAG,MAAM,KAAK,CAAE;AAAA,EAChE;AAEA,QAAM,QAAQ,QAAQ,QAAS,IAAK;AACpC,QAAM,cAAc,QAAQ,cAAe,IAAK;AAEhD,QAAM,WAAW,QAAQ,SAAS,MAAO,IAAK;AAE9C,SACC;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACA,OAAQ,EAAE,GAAG,SAAS,OAAO,UAAU,aAAa,MAAM,UAAU,MAAM,CAAE,GAAK,QAAQ,CAAC,GAAK,IAAK,EAAE;AAAA;AAAA,IAEpG;AAAA,EACH;AAEF;AAEA,IAAM,uBAAuB,CAAE,EAAE,UAAU,KAAK,MAA6B;AAC5E,QAAM,UAAU,eAA2D;AAC3E,QAAM,EAAE,KAAK,QAAI,0BAAY,cAAe,KAAK,CAAC;AAElD,QAAM,WAAW,CAAEA,QAAkB,YAA6B;AACjE,UAAM,WAAW,CAAE,GAAK,QAAQ,SAAS,CAAC,CAAI;AAE9C,aAAU,OAAQ,IAAK,CAAE,IAAIA;AAE7B,WAAO,SAAS,SAAU,UAAU,SAAS,EAAE,KAAK,CAAE;AAAA,EACvD;AAEA,QAAM,QAAQ,QAAQ,QAAS,OAAQ,IAAK,CAAE;AAE9C,QAAM,WAAW,QAAQ,SAAS;AAElC,SACC;AAAA,IAAC,eAAe;AAAA,IAAf;AAAA,MACA,OAAQ,EAAE,GAAG,SAAS,OAAO,UAAU,MAAM,UAAU,MAAM,CAAE,GAAK,QAAQ,CAAC,GAAK,IAAK,EAAE;AAAA;AAAA,IAEvF;AAAA,EACH;AAEF;AAEO,IAAM,oBAAoB,MAAM;AACtC,QAAM,cAAU,0BAAY,cAAe;AAE3C,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,yBAA0B;AAAA,MACnC,SAAS,EAAE,MAAM,qBAAqB,UAAU,kBAAkB;AAAA,IACnE,CAAE;AAAA,EACH;AAEA,SAAO;AACR;;;ACjHA,IAAAC,gBAAyB;AAuClB,SAAS,aACf,cACC;AACD,QAAM,iBAAiB,kBAAkB;AAEzC,QAAM,EAAE,SAAS,UAAU,aAAa,IAAI,cAAe,eAAe,QAAS;AAEnF,QAAM,WAAW,eAAe,aAAc,eAAe,QAAS;AAEtE,QAAM,aAAa,MAAM;AACxB,mBAAe,SAAU,eAAe,SAAS,iBAAiB,IAAK;AAAA,EACxE;AAGA,MAAK,CAAE,cAAe;AACrB,WAAO;AAAA,MACN,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAEA,WAAS,SAAUC,QAAsB,SAAwB,MAAsB;AACtF,QAAK,CAAE,SAAUA,QAAO,MAAM,UAAW,GAAI;AAC5C;AAAA,IACD;AAEA,QAAKA,WAAU,MAAO;AACrB,aAAO,gBAAgB,SAAU,MAAM,SAAS,IAAK;AAAA,IACtD;AAEA,WAAO,gBAAgB,SAAU,cAAc,OAAQA,QAAO,OAAQ,GAAG,CAAC,GAAG,IAAK;AAAA,EACnF;AAEA,QAAM,WAAW,qBAAsB,eAAe,UAAU,aAAa,GAAI;AAEjF,QAAM,QAAQ,aAAa,QAAS,eAAe,SAAS,SAAS,WAAW,IAAK;AACrF,QAAM,cAAc,aAAa,QAAS,eAAe,eAAe,IAAK;AAE7E,SAAO;AAAA,IACN,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA,OAAO,UAAU,QAAQ;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEA,IAAM,gBAAgB,CAAE,aAAwB;AAC/C,QAAM,CAAE,SAAS,UAAW,QAAI,wBAAU,IAAK;AAI/C,QAAM,WAAW,CAAE,OAAyB,eAAkD;AAC7F,QAAI,QAAQ;AAEZ,QAAK,SAAS,SAAS,YAAY,UAAU,MAAO;AACnD,cAAQ;AAAA,IACT;AAEA,QAAK,cAAc,CAAE,WAAY,KAAM,GAAI;AAC1C,cAAQ;AAAA,IACT;AAEA,eAAY,KAAM;AAElB,WAAO;AAAA,EACR;AAEA,QAAM,eAAe,MAAM,WAAY,IAAK;AAE5C,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAGA,IAAM,uBAAuB,CAAE,UAAoB,QAA2B;AAC7E,MAAI,mBAAmB;AAEvB,MAAK,SAAS,SAAS,SAAU;AAChC,uBAAmB,SAAS,WAAY,GAAI;AAAA,EAC7C;AAEA,MAAK,CAAE,kBAAmB;AACzB,UAAM,IAAI,qBAAsB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAE;AAAA,EACtD;AAEA,SAAO;AACR;;;ACtIA,IAAAC,SAAuB;AACvB,gBAA+C;AAExC,IAAM,mBAAmB,CAAE,UAA2B;AAC5D,SAAO,qCAAC,uBAAU,MAAK,QAAS,GAAG,OAAQ;AAC5C;;;ACLA,IAAAC,SAAuB;AAEvB,IAAAC,aAA8B;;;ACF9B,IAAAC,SAAuB;AACvB,IAAAC,gBAAsF;AAkBtF,IAAM,gCAA4B,6BAAuC,CAAC,CAAE;AAErE,IAAM,8BAA8B,CAAE,EAAE,cAAc,SAAS,MAAc;AACnF,SAAO,qCAAC,0BAA0B,UAA1B,EAAmC,OAAQ,gBAAiB,QAAU;AAC/E;AAEO,IAAM,wBAAwB,CAAE,sBAAyC;AAC/E,QAAM,EAAE,OAAO,YAAY,IAAI,aAAa;AAC5C,QAAM,mBAAe,0BAAY,yBAA0B;AAE3D,MAAI;AACH,UAAM,cAAc,aAAa,KAAM,CAAE,MAAO,EAAE,UAAW,EAAE,OAAO,YAAY,CAAE,CAAE;AAEtF,WAAO;AAAA,MACN,iBAAiB,aAAa,aAAa;AAAA,MAC3C,iBAAiB;AAAA,MACjB,YAAY,CAAC,CAAE;AAAA,IAChB;AAAA,EACD,QAAQ;AACP,WAAO,EAAE,iBAAiB,mBAAmB,iBAAiB,kBAAkB;AAAA,EACjF;AACD;AAEO,IAAM,oCAAoC,MAAM;AACtD,QAAM,sBAA4C,CAAC;AAEnD,WAAS,2BAA4B,aAAkC;AACtE,wBAAoB,KAAM,WAAY;AAAA,EACvC;AAEA,WAAS,yBAAyB;AACjC,WAAO;AAAA,EACR;AAEA,SAAO,EAAE,4BAA4B,uBAAuB;AAC7D;;;AD7CA,IAAM,cAAc,OAAQ,SAAU;AAM/B,SAAS,cAA6CC,UAAa;AACzE,UAAS,CAAE,UAAgC;AAC1C,UAAM,EAAE,iBAAiB,iBAAiB,WAAW,IAAI,sBAAuBA,QAAQ;AACxF,UAAM,eAAe,aAAa,EAAE,GAAG,OAAO,gBAAgB,IAAI;AAElE,WACC,qCAAC,4BAAc,UAAW,QACzB,qCAAC,mBAAkB,GAAG,cAAe,CACtC;AAAA,EAEF;AACD;;;AE1BA,mBAAsD;;;ACAtD,yBAA4B;AAE5B,IAAM,wBAAwB;AAIvB,IAAM,YAAY;AAAA,EACxB,qBAAqB,CAAO,YAC3B,gCAAY,EACV,IAAsB,GAAI,qBAAsB,IAAK,GAAI,EAAG,EAC5D,KAAM,CAAE,QAAS,sBAAuB,IAAI,IAAK,CAAE;AAAA,EACtD,wBAAwB,CAAO,KAAa,cAC3C,gCAAY,EAAE,IAAK,GAAI,qBAAsB,IAAK,GAAI,IAAI,EAAE,MAAM,CAAE;AACtE;AAEA,IAAM,wBAAwB,CAAO,aAA6B,SAAS,KAAK;;;ADXzE,IAAM,8BAA8B;AAE3C,IAAM,0BAA0B;AAAA,EAC/B,UAAU,CAAE,2BAA4B;AACzC;AAIO,IAAM,2BAA2B,UACvC,uBAAU;AAAA,EACT,GAAG;AAAA,EACH,SAAS,MACR,UAAU,oBAA8B,2BAA4B,EAAE,KAAM,CAAE,QAAS;AACtF,WAAO,eAAgB,GAAI;AAAA,EAC5B,CAAE;AAAA,EACH,WAAW;AACZ,CAAE;AAEI,SAAS,iCAAiC;AAChD,QAAM,kBAAc,6BAAe;AAEnC,QAAM,aAAS,0BAAa;AAAA,IAC3B,YAAY,CAAE,EAAE,2BAA2B,MAC1C,UAAU;AAAA,MACT;AAAA,MACA,6BAA6B,MAAM;AAAA,IACpC;AAAA,IACD,WAAW,MAAM,YAAY,kBAAmB,uBAAwB;AAAA,EACzE,CAAE;AAEF,SAAO;AACR;AAEA,IAAM,iBAAiB,CAAE,aAA8B;AACtD,SAAO,QAAS,aAAa,GAAI;AAClC;;;AEvCA,IAAAC,SAAuB;AACvB,0BAAqC;AACrC,mBAA2B;AAC3B,IAAAC,aAA8E;AAC9E,sBAAsE;AACtE,kBAAmB;;;ACLnB,IAAAC,SAAuB;;;ACAvB,IAAAC,SAAuB;AACvB,IAAAC,gBAA+F;AAC/F,IAAAC,aAAkD;AAGlD,IAAM,2BAAuB,mBAAQ,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAY5C,IAAM,6BAAyB,6BAG1B,IAAK;AAEH,SAAS,mBAAoB,EAAE,SAAS,SAAS,GAAsD;AAC7G,QAAM,CAAE,MAAM,OAAQ,QAAI,wBAAqB,KAAM;AAErD,SACC,qCAAC,uBAAuB,UAAvB,EAAgC,OAAQ,EAAE,MAAM,QAAQ,KACxD,qCAAC,4BACA,qCAAC,wCAA0B,SAAoB,MAAO,QAAQ,UAC3D,QACH,CACD,CACD;AAEF;AAEO,SAAS,wBAAwB;AACvC,QAAM,cAAU,0BAAY,sBAAuB;AAEnD,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,6DAA8D;AAAA,EAChF;AAEA,SAAO;AACR;;;AC5CA,IAAAC,SAAuB;AACvB,IAAAC,gBAAkE;AAWlE,IAAM,cAAU,6BAA+C,IAAK;AAI7D,IAAM,yBAAyB,CAAE,EAAE,UAAU,OAAAC,OAAM,MACzD,qCAAC,QAAQ,UAAR,EAAiB,OAAQ,EAAE,OAAAA,OAAM,KAAM,QAAU;AAG5C,IAAM,oBAAoB,MAAM;AACtC,QAAM,cAAU,0BAAY,OAAQ;AAEpC,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,gEAAiE;AAAA,EACnF;AAEA,SAAO;AACR;;;AFnBe,SAAR,eAAiC,EAAE,SAAS,GAAyB;AAC3E,QAAM,EAAE,OAAAC,OAAM,IAAI,kBAAkB;AACpC,QAAM,EAAE,SAAS,IAAI,aAAa;AAElC,MAAKA,OAAM,WAAW,KAAK,UAAW;AACrC,WAAO;AAAA,EACR;AAEA,QAAM,YAAYA,OAAM,IAAK,CAAE,EAAE,UAAAC,WAAU,GAAG,MAAO,qCAACA,WAAA,EAAS,KAAM,IAAK,CAAG;AAE7E,SAAO,qCAAC,sBAAmB,SAAU,aAAc,QAAU;AAC9D;;;ADLO,IAAM,oBAAoB,cAAe,CAAE,EAAE,aAAa,CAAE,OAAQ,EAAE,MAA+B;AAC3G,QAAM,EAAE,OAAO,UAAU,SAAS,IAAI,aAAc,wCAAqB;AACzE,QAAM,EAAE,IAAI,IAAI,IAAI,SAAS,CAAC;AAE9B,QAAM,EAAE,MAAM,YAAY,WAAW,QAAI,sCAAsB,IAAI,SAAS,IAAK;AACjF,QAAM,MAAM,YAAY,OAAO,KAAK,SAAS;AAE7C,QAAM,EAAE,KAAK,QAAI,iCAAiB;AAAA,IACjC;AAAA,IACA,UAAU;AAAA,IACV,UAAU,IAAI,SAAS;AAAA,IACvB,UAAU,CAAE,uBAAwB;AACnC,eAAU;AAAA,QACT,IAAI;AAAA,UACH,QAAQ;AAAA,UACR,OAAO,mBAAmB;AAAA,QAC3B;AAAA,QACA,KAAK;AAAA,MACN,CAAE;AAAA,IACH;AAAA,EACD,CAAE;AAEF,SACC,qCAAC,sBACA,qCAAC,mBAAK,SAAQ,cACb,qCAAC,wBAAU,OAAQ,KAAM,IAAK,EAAE,QAAQ,SAAS,KAAK,YAAY,MAAM,IAAI,KACzE,aACD,qCAAC,oBAAM,gBAAe,UAAS,YAAW,UAAS,OAAM,QAAO,QAAO,UACtE,qCAAC,iCAAiB,CACnB,IAEA,0DAAE,CAEJ,GACA,qCAAC,8BACA,qCAAC,oBAAM,KAAM,KACZ;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,SAAU,MAAM,KAAM,EAAE,MAAM,SAAS,CAAE;AAAA;AAAA,QAEvC,gBAAI,gBAAgB,WAAY;AAAA,EACnC,GACA;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,WAAY,qCAAC,6BAAW;AAAA,MACxB,SAAU,MAAM,KAAM,EAAE,MAAM,SAAS,CAAE;AAAA;AAAA,QAEvC,gBAAI,UAAU,WAAY;AAAA,EAC7B,CACD,CACD,CACD,CACD;AAEF,CAAE;;;AIzEF,IAAAC,UAAuB;AACvB,IAAAC,uBAAyD;AACzD,uBAA6B;AAC7B,IAAAC,aAA6E;AAmB7E,IAAM,qBAAqB;AAAA,EAC1B,eAAe;AAAA,IACd,IAAI;AAAA,MACH,WAAW;AAAA,IACZ;AAAA,EACD;AACD;AAEO,IAAM,gBAAgB;AAAA,EAC5B,CAAE,EAAE,SAAS,UAAU,YAAY,oBAAoB,UAAU,MAA2B;AAC3F,UAAM,EAAE,OAAO,UAAU,UAAU,YAAY,IAAI,aAAc,uCAAmB;AACpF,UAAM,eAAe,CAAE,UAA4D;AAClF,YAAM,WAAW,MAAM,OAAO,SAAS;AAEvC,iBAAY,UAAU,KAAM;AAC5B,eAAU,QAAS;AAAA,IACpB;AACA,UAAM,aAAa,YAAY,QAAQ,WAAW;AAElD,WACC,sCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA,IAAK,EAAE,UAAU,SAAS;AAAA,QAC1B,cAAY;AAAA,QACZ,MAAK;AAAA,QACL;AAAA,QACA,cAAa,aAAa;AAAA,QAC1B,aAAc,CAAE,kBAAkC;AACjD,gBAAM,oBAAoB,CAAE,gBAC3B,QAAQ,KAAM,CAAE,QAAS,IAAI,UAAU,WAAY;AAEpD,cAAK,CAAE,iBAAiB,kBAAkB,IAAK;AAC9C,gBAAK,aAAc;AAClB,oBAAM,oBAAoB,kBAAmB,WAAY;AACzD,oBAAM,cAAc,mBAAmB,SAAS;AAEhD,qBACC,sCAAC,yBAAW,WAAU,QAAO,SAAQ,WAAU,OAAM,mBAClD,WACH;AAAA,YAEF;AACA,mBAAO;AAAA,UACR;AACA,gBAAM,SAAS,kBAAmB,aAAc;AAChD,iBAAO,QAAQ,SAAS;AAAA,QACzB;AAAA,QACA,OAAQ,SAAS;AAAA,QACjB,UAAW;AAAA,QACX,UAAW;AAAA,QACX,WAAS;AAAA;AAAA,MAEP,QAAQ,IAAK,CAAE,EAAE,OAAO,GAAG,MAAM,MAClC,sCAAC,iCAAa,KAAM,MAAM,OAAU,GAAG,OAAQ,OAAQ,MAAM,SAAS,MACnE,KACH,CACC;AAAA,IACH,CACD;AAAA,EAEF;AACD;;;AdjEO,IAAM,eAAe,cAAe,CAAE,EAAE,OAAO,WAAW,MAAM,MAA0B;AAChG,QAAM,cAAc,aAAc,sCAAkB;AAEpD,MAAI;AACJ,UAAS,UAAW;AAAA,IACnB,KAAK;AACJ,0BAAoB,sCAAC,qBAAgB;AACrC;AAAA,IACD,KAAK;AACJ,0BAAoB,sCAAC,oBAAiB,OAAgB;AACtD;AAAA,IACD,KAAK;AAAA,IACL;AACC,0BACC,sCAAC,oBAAM,KAAM,OACZ,sCAAC,4BAAmB,iBAAI,SAAS,WAAY,CAAG,GAChD,sCAAC,qBAAgB,GACjB,sCAAC,mBAAK,WAAS,MAAC,KAAM,KAAM,YAAW,UAAS,UAAS,YACxD,sCAAC,mBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,4BAAmB,iBAAI,cAAc,WAAY,CAAG,CACtD,GACA,sCAAC,mBAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,UAAU,SAAS,KAC7C,sCAAC,oBAAiB,OAAgB,CACnC,CACD,CACD;AAAA,EAEH;AAEA,SAAO,sCAAC,gBAAe,GAAG,eAAgB,iBAAmB;AAC9D,CAAE;AAEF,IAAM,kBAAkB,MAAM;AAC7B,QAAM,EAAE,MAAM,eAAe,IAAI,yBAAyB;AAC1D,QAAM,aAA0B,iBAAiB,CAAE,SAAS,KAAM,IAAI,CAAE,OAAQ;AAEhF,SACC,sCAAC,mBAAgB,MAAO,SACvB,sCAAC,qBAAkB,YAA0B,CAC9C;AAEF;AAEA,IAAM,mBAAmB,CAAE,EAAE,MAAM,MAAgD;AAClF,SACC,sCAAC,mBAAgB,MAAO,UACvB,sCAAC,iBAAc,SAAU,OAAQ,CAClC;AAEF;;;AenEA,IAAAC,UAAuB;AACvB,IAAAC,uBAAmC;AACnC,IAAAC,aAAwC;AAMjC,IAAM,cAAc;AAAA,EAC1B,CAAE;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,MAQO;AACN,UAAM,EAAE,OAAO,UAAU,SAAS,IAAI,aAAc,uCAAmB;AACvE,UAAM,eAAe,CAAE,UAAkD,SAAU,MAAM,OAAO,KAAM;AAEtG,WACC,sCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA,MAAK;AAAA,QACL,WAAS;AAAA,QACT,UAAW,iBAAiB;AAAA,QAC5B,OAAQ,cAAc,SAAS;AAAA,QAC/B,UAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAa;AAAA,UACZ,GAAK,YAAY,EAAE,cAAc,UAAU,IAAI,CAAC;AAAA,QACjD;AAAA;AAAA,IACD,CACD;AAAA,EAEF;AACD;;;AChDA,IAAAC,UAAuB;AACvB,IAAAC,uBAAmC;AACnC,IAAAC,aAA0B;AAWnB,IAAM,kBAAkB,cAAe,CAAE,EAAE,aAAa,UAAU,MAAc;AACtF,QAAM,EAAE,OAAO,UAAU,SAAS,IAAI,aAAc,uCAAmB;AAEvE,QAAM,eAAe,CAAE,UAAkD;AACxE,aAAU,MAAM,OAAO,KAAM;AAAA,EAC9B;AAEA,SACC,sCAAC,sBACA;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,WAAS;AAAA,MACT,WAAS;AAAA,MACT,SAAU;AAAA,MACV;AAAA,MACA,OAAQ,SAAS;AAAA,MACjB,UAAW;AAAA,MACX;AAAA,MACA,YAAa;AAAA,QACZ,GAAK,YAAY,EAAE,cAAc,UAAU,IAAI,CAAC;AAAA,MACjD;AAAA;AAAA,EACD,CACD;AAEF,CAAE;;;ACrCF,IAAAC,UAAuB;AACvB,IAAAC,iBAAmD;AACnD,IAAAC,uBAAoE;AACpE,+BAAoC;AACpC,IAAAC,cAA8B;;;ACJ9B,IAAAC,UAAuB;AACvB,IAAAC,gBAAuB;AACvB,IAAAC,gBAAiC;AACjC,IAAAC,cAAqD;;;ACH9C,IAAM,cAAc,CAAE,MAAM,KAAK,MAAM,OAAO,MAAM,MAAM,IAAK;AAC/D,IAAM,aAAa,CAAE,OAAO,OAAO,QAAQ,MAAO;AAClD,IAAM,YAAY,CAAE,KAAK,IAAK;AACrC,IAAM,yBAAyB,CAAE,QAAQ,QAAS;AAE3C,IAAM,eAAe;AACrB,IAAM,eAAe;AASrB,SAAS,qBAAsB,MAAsD;AAC3F,SAAO,uBAAuB,SAAU,IAAuB;AAChE;;;ACjBA,IAAAC,UAAuB;AACvB,IAAAC,gBAAkC;AAClC,IAAAC,uBAAiD;AACjD,IAAAC,oBAA6B;AAC7B,IAAAC,cASO;;;ACbP,IAAAC,UAAuB;AACvB,IAAAC,gBAAqC;AACrC,IAAAC,aAA+C;AAE/C,IAAM,wBAAwB,CAAE,KAAK,KAAK,GAAI;AAEvC,IAAM,kBAAc,0BAAY,CAAE,OAAuB,QAAS;AACxE,QAAM,CAAE,KAAK,MAAO,QAAI,wBAAoB,CAAE;AAE9C,QAAM,gBAAgB,CAAE,UAAoD;AAC3E,wBAAqB,OAAO,MAAM,YAAY,GAAI;AAElD,UAAM,YAAa,KAAM;AAAA,EAC1B;AAEA,QAAM,aAAa,CAAE,UAAiD;AACrE,UAAM,SAAU,KAAM;AAEtB,UAAM,EAAE,MAAM,IAAI,MAAM,OAAO;AAI/B,QAAK,CAAE,OAAQ;AACd,aAAQ,CAAE,SAAU,OAAO,CAAE;AAAA,IAC9B;AAAA,EACD;AAEA,SAAO,sCAAC,wBAAY,GAAG,OAAQ,KAAY,KAAY,WAAY,eAAgB,QAAS,YAAa;AAC1G,CAAE;AAEF,SAAS,oBAAqB,OAAgD,KAAc;AAC3F,QAAM,sBAAsB,CAAE,GAAG,qBAAsB;AAEvD,MAAK,OAAO,GAAI;AACf,wBAAoB,KAAM,GAAI;AAAA,EAC/B;AAEA,MAAK,oBAAoB,SAAU,MAAM,GAAI,GAAI;AAChD,UAAM,eAAe;AAAA,EACtB;AACD;;;ADJO,IAAM,8BAA0B;AAAA,EACtC,CACC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,GACA,QACI;AACJ,UAAM,EAAE,aAAa,qBAAqB,IAAI,aAAc,qCAAiB;AAE7E,UAAM,iBAAiB,OAAQ;AAAA,MAC9B,OAAO,EAAE,QAAQ,WAAW,WAAW,uBAAuB,OAAU;AAAA,IACzE;AAEA,WACC;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,IAAK,eAAe;AAAA,QACpB,MAAK;AAAA,QACL,WAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,SAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAU,gBAAgB,OAAO;AAAA,QACjC,aAAc,gBAAiB,OAAQ,sBAAsB,QAAQ,EAAG,KAAK;AAAA,QAC7E;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,EAEF;AACD;AAWO,IAAM,wBAAwB,CAAsB;AAAA,EAC1D;AAAA,EACA,0BAA0B,CAAC;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,sBAAsB,CAAC;AAAA,EACvB;AACD,MAAwC;AACvC,QAAM,iBAAa,2BAAe;AAAA,IACjC,SAAS;AAAA,IACT,aAAS,qBAAM;AAAA,EAChB,CAAE;AAEF,QAAM,sBAAsB,CAAE,UAAmB;AAChD,YAAS,QAAS,KAAM,CAAE;AAC1B,eAAW,MAAM;AAAA,EAClB;AAEA,QAAM,EAAE,aAAa,iBAAiB,IAAI,mBAAoB,KAAM;AACpE,QAAM,aAAa;AAAA,IAClB,SAAS;AAAA,IACT,eAAe;AAAA,IACf,gBAAgB;AAAA,EACjB;AACA,SACC,sCAAC,8BAAe,UAAS,SACxB;AAAA,IAAC;AAAA;AAAA,MACA,gBAAiB;AAAA,MACjB,MAAK;AAAA,MACL;AAAA,MACE,OAAG,yBAAa,UAAW;AAAA;AAAA,IAE3B,eAAe,wBAAyB,KAAM,KAAK;AAAA,EACtD,GACA,sCAAC,oBAAK,eAAgB,EAAE,OAAO,KAAK,GAAM,OAAG,sBAAU,UAAW,KAC/D,QAAQ,IAAK,CAAE,QAAQ,UACxB;AAAA,IAAC;AAAA;AAAA,MACA,KAAM;AAAA,MACN,SAAU,MAAM,oBAAqB,KAAM;AAAA,MACzC,GAAG,sBAAuB,MAAO;AAAA,MACnC,wBAAyB;AAAA,QACxB,SAAS;AAAA,QACT,IAAI;AAAA,UACH,GAAG;AAAA,UACH,YAAY;AAAA,QACb;AAAA,MACD;AAAA,MACA,mBAAoB;AAAA,QACnB,IAAI;AAAA,MACL;AAAA;AAAA,IAEE,wBAAyB,MAAO,KAAK,OAAO,YAAY;AAAA,EAC3D,CACC,CACH,CACD;AAEF;AAEA,SAAS,mBAAoB,OAAgB;AAC5C,QAAM,EAAE,OAAO,eAAe,YAAY,IAAI,aAAc,qCAAiB;AAC7E,QAAM,OAAO,eAAe;AAC5B,QAAM,OAAO,eAAe;AAE5B,QAAM,uBAAuB,UAAU,YAAY,QAAS,IAAK;AACjE,QAAM,aAAa,UAAU;AAC7B,QAAM,mBAAmB,cAAc,wBAAwB,QAAS,IAAK;AAE7E,MAAK,CAAE,aAAc;AACpB,WAAO;AAAA,MACN,aAAa;AAAA,MACb;AAAA,IACD;AAAA,EACD;AAEA,QAAM,gBAAgB,CAAE;AACxB,QAAM,kBAAkB,iBAAiB,UAAU;AAEnD,SAAO;AAAA,IACN,aAAa,kBAAkB,YAAY,OAAO;AAAA,IAClD;AAAA,EACD;AACD;AAEA,IAAM,mBAAe,oBAAQ,oBAAQ;AAAA,EACpC,mBAAmB,CAAE,SAAU,SAAS;AACzC,CAAE,EAAG,CAAE,EAAE,gBAAgB,MAAM,OAAS;AAAA,EACvC,OAAO,iBAAiB,MAAM,QAAQ,KAAK,UAAU,MAAM,QAAQ,KAAK;AAAA,EACxE,MAAM;AAAA,EACN,UAAU;AAAA,EACV,eAAe;AAChB,EAAI;;;AF9KJ,IAAM,qCAAqC,CAAE,MAAO;AAoB7C,IAAM,YAAY,CAAE;AAAA,EAC1B,OAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAuB;AACtB,QAAM,yBAAqB,sBAAQ,EAAG;AACtC,QAAM,YAAY,qBAAsB,IAAK,IAAI,SAAS;AAC1D,QAAM,aAAa,CAAE,qBAAsB,IAAK,KAAK,OAAO,MAAO,IAAK,IAAI,KAAK,QAAQ;AAEzF,QAAM,cAAc,CAAE,UAAoD;AACzE,UAAM,EAAE,IAAI,IAAI;AAEhB,QAAK,CAAE,cAAc,KAAM,GAAI,GAAI;AAClC;AAAA,IACD;AAEA,UAAM,eAAe;AAErB,UAAM,UAAU,IAAI,YAAY;AAChC,UAAM,iBAAkB,mBAAmB,UAAU,SAAU,MAAO,EAAG;AACzE,uBAAmB,UAAU;AAE7B,UAAM,cACLA,OAAM,KAAM,CAAE,MAAO,CAAE,mCAAmC,SAAU,CAAE,KAAK,EAAE,SAAU,aAAc,CAAE,KACvGA,OAAM,KAAM,CAAE,MAAO,CAAE,mCAAmC,SAAU,CAAE,KAAK,EAAE,WAAY,OAAQ,CAAE,KACnGA,OAAM,KAAM,CAAE,MAAO,CAAE,mCAAmC,SAAU,CAAE,KAAK,EAAE,SAAU,OAAQ,CAAE;AAElG,QAAK,aAAc;AAClB,uBAAkB,WAAY;AAAA,IAC/B;AAAA,EACD;AAEA,QAAM,kBAAkB;AAAA,IACvB,iBAAiB,WAAW,SAAS,WAAW,UAAU;AAAA,IAC1D,iBAAiB;AAAA,EAClB;AAEA,QAAM,sBAAsBA,OAAM,SAAU,QAAS,IAClD;AAAA,IACA,QAAQ;AAAA,EACR,IACA;AAEH,QAAM,0BAA0B;AAAA,IAC/B,QAAQ,sCAAC,kCAAiB,UAAS,QAAO;AAAA,EAC3C;AAEA,QAAM,aAAa;AAAA,IAClB,GAAG;AAAA,IACH,UAAU,qBAAsB,IAAK;AAAA,IACrC,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,gBAAgB,YACf,sCAAC,8BAAe,UAAS,SAAQ,YAC9B,SACH,IACG;AAAA,IACJ,cACC;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,SAAUA;AAAA,QACV,SAAU;AAAA,QACV,OAAQ;AAAA,QACR;AAAA,QACA;AAAA;AAAA,IACD;AAAA,EAEF;AAEA,SACC,sCAAC,sBACA,sCAAC,uBACA;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAO;AAAA,MACP,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,SAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,YAAa,EAAE,KAAK,MAAM,OAAO,cAAc,UAAU;AAAA,MACzD,eAAgB,WAAW;AAAA,MAC3B;AAAA;AAAA,EACD,CACD,CACD;AAEF;;;AIlIA,IAAAC,UAAuB;AACvB,IAAAC,iBAAkD;AAClD,IAAAC,oBAA8B;AAC9B,IAAAC,gBAAiC;AACjC,IAAAC,cAAiE;AACjE,IAAAC,eAAmB;AAUnB,IAAM,OAAO;AAEN,IAAM,mBAAmB,CAAE,UAAkB;AACnD,QAAM,EAAE,YAAY,cAAc,WAAW,OAAO,SAAS,IAAI;AACjE,QAAM,eAAW,uBAA4B,IAAK;AAElD,gCAAW,MAAM;AAChB,QAAK,WAAW,QAAS;AACxB,4BAAuB,MAAM;AAC5B,YAAK,SAAS,SAAU;AACvB,mBAAS,QAAQ,MAAM;AAAA,QACxB;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD,GAAG,CAAE,WAAW,MAAO,CAAE;AAEzB,QAAM,cAAc,MAAM;AACzB,iBAAa;AACb,eAAW,MAAM;AAAA,EAClB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,eAAa;AAAA,MACb,WAAY;AAAA,QACX,OAAO;AAAA,UACN,IAAI;AAAA,YACH,cAAc;AAAA,YACd,OAAO,UAAU,SAAS,cAAc;AAAA,UACzC;AAAA,QACD;AAAA,MACD;AAAA,MACE,OAAG,yBAAa,UAAW;AAAA,MAC7B,cAAe,EAAE,UAAU,UAAU,YAAY,SAAS;AAAA,MAC1D,iBAAkB,EAAE,UAAU,OAAO,YAAY,SAAS;AAAA,MAC1D,SAAU;AAAA;AAAA,IAEV;AAAA,MAAC;AAAA;AAAA,QACA,WAAQ,iBAAI,gBAAgB,WAAY;AAAA,QACxC,SAAU;AAAA,QACV,MAAO,sCAAC,kCAAiB,UAAW,MAAO;AAAA;AAAA,IAC5C;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAK;AAAA,QACL,MAAK;AAAA,QACL,WAAS;AAAA,QACT,YAAa;AAAA,UACZ,KAAK;AAAA,QACN;AAAA,QACA,IAAK,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI;AAAA;AAAA,IACzC;AAAA,EACD;AAEF;;;ACtEA,IAAAC,iBAAwB;AAGjB,SAAS,uBAAwB,SAA2B,eAAyB;AAC3F,aAAO,wBAAS,MAAM;AACrB,UAAM,kBAAkB,CAAE,GAAG,OAAQ;AAErC,QAAK,CAAE,iBAAiB,CAAE,gBAAgB,SAAU,QAAS,GAAI;AAChE,sBAAgB,KAAM,QAAS;AAAA,IAChC,WAAY,QAAQ,SAAU,QAAS,GAAI;AAC1C,sBAAgB,OAAQ,gBAAgB,QAAS,QAAS,GAAG,CAAE;AAAA,IAChE;AAEA,WAAO;AAAA,EACR,GAAG,CAAE,SAAS,aAAc,CAAE;AAC/B;;;ACfA,IAAAC,iBAAoC;AAY7B,IAAM,uBAAuB,CAAa;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAA0C;AACzC,WAAS,WAAY,eAA+B;AACnD,QAAK,YAAa,aAAc,GAAI;AACnC,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR;AAEA,WAAS,WAAY,eAA8B,eAA+B;AACjF,QAAK,CAAE,eAAgB;AACtB,aAAO,SAAU,aAAc;AAAA,IAChC;AAEA,WAAO;AAAA,EACR;AAEA,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAoB,WAAY,UAAU,IAAK,CAAE;AAEnF,gCAAW,MAAM;AAChB,gBAAa,CAAE,iBAAkB,WAAY,UAAU,YAAa,CAAE;AAAA,EAGvE,GAAG,CAAE,QAAS,CAAE;AAIhB,QAAM,mBAAmB,CAAE,QAA6B,SAAyB,SAAyB;AACzG,UAAM,WAAa,OAAO,WAAW,aAAa,SAAS,MAAM;AACjE,UAAM,UAAU,SAAU,QAAS;AAEnC,gBAAa,OAAQ;AACrB,gBAAa,WAAY,OAAQ,GAAG,SAAS,IAAK;AAAA,EACnD;AAEA,SAAO,CAAE,UAAU,gBAAiB;AACrC;;;APiBA,IAAM,sBAAqE;AAAA,EAC1E,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AACP;AAEA,IAAM,eAAgE;AAAA,EACrE,QAAQ,CAAE,GAAG,WAAY;AAAA,EACzB,OAAO,CAAE,GAAG,UAAW;AAAA,EACvB,MAAM,CAAE,GAAG,SAAU;AACtB;AAEO,IAAM,oBAAoB;AAE1B,IAAM,cAAc;AAAA,EAC1B,CAAE;AAAA,IACD,UAAU;AAAA,IACV;AAAA,IACA,OAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,sBAAsB;AAAA,IACtB;AAAA,IACA;AAAA,EACD,MAAwE;AACvE,UAAM;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb;AAAA,IACD,IAAI,aAAc,qCAAiB;AAEnC,UAAM,oBAAoB,eAAe,qBAAqB,QAAQ,oBAAqB,OAAQ;AACnG,UAAM,uBAAmB,8CAAoB;AAC7C,UAAM,wBAAwB,uBAAwB,mBAAmB,CAAC,GAAG,iBAAiB,KAAM;AACpG,UAAM,cAAc,aAAc,UAAU,qBAAqB,SAASA,QAAO,qBAAsB;AAEvG,UAAM,iBAAa,2BAAe,EAAE,SAAS,UAAU,CAAE;AAEzD,UAAM,6BAAyB;AAAA,MAC9B,MAAM,wBAAyB,WAAW,iBAAkB;AAAA,MAC5D,CAAE,WAAW,iBAAkB;AAAA,IAChC;AAEA,UAAM,CAAE,OAAO,QAAS,IAAI,qBAAsB;AAAA,MACjD,UAAU;AAAA,MACV,aAAa,CAAE,UAAwB,SAAS,SAC/C,aAAc,sBAAuB,QAAS,GAAG,SAAS,IAAK;AAAA,MAChE,aAAa,CAAE,aAAc,CAAC,CAAE,sBAAuB,QAAS;AAAA,MAChE,UAAU,CAAE,cAAgB;AAAA,QAC3B,MAAM,UAAU,QAAQ;AAAA,QACxB,SAAS,UAAU,WAAW;AAAA,QAC9B,QAAQ,UAAU,UAAU;AAAA,MAC7B;AAAA,IACD,CAAE;AAEF,UAAM,EAAE,MAAM,cAAc,cAAc,MAAM,cAAc,kBAAkB,IAC/E,sBAAuB,OAAO,IAAK,KAAK,CAAC;AAE1C,UAAM,mBAAmB,CAAE,YAAoC;AAC9D,UAAK,YAAY,UAAW;AAC3B,mBAAW,KAAM,WAAW,OAAQ;AAAA,MACrC;AAEA,eAAU,CAAE,UAAY,EAAE,GAAG,MAAM,MAAM,QAAQ,EAAI;AAAA,IACtD;AAEA,UAAM,mBAAmB,CAAE,UAAkD;AAC5E,YAAM,OAAO,MAAM,OAAO;AAC1B,YAAM,eAAe,MAAM,OAAO,SAAS;AAE3C,UAAK,gBAAgB,QAAS;AAC7B,iBAAU,CAAE,UAAY,EAAE,GAAG,MAAM,MAAM,YAAY,EAAI;AAEzD;AAAA,MACD;AAEA;AAAA,QACC,CAAE,UAAY;AAAA,UACb,GAAG;AAAA,UACH,CAAE,gBAAgB,WAAW,WAAW,SAAU,GAAG,WAAY,MAAM,WAAY;AAAA,UACnF,MAAM;AAAA,QACP;AAAA,QACA;AAAA,QACA,EAAE,YAAY,MAAM,aAAa;AAAA,MAClC;AAAA,IACD;AAEA,UAAM,eAAe,CAAE,UAA6B;AACnD,UAAO,MAAM,OAAwB,QAAS,OAAQ,KAAK,aAAa,MAAM,MAAO;AACpF,mBAAW,KAAM,WAAW,OAAQ;AAAA,MACrC;AAAA,IACD;AAEA,UAAM,kBAAwB,oBAAa,MAAM;AAChD,UAAK,cAAc,WAAW,QAAS;AACtC,mBAAW,MAAM;AAAA,MAClB;AAAA,IACD,GAAG,CAAE,UAAW,CAAE;AAElB,kCAAW,MAAM;AAChB,sBAAgB;AAAA,IAEjB,GAAG,CAAE,gBAAiB,CAAE;AAExB,WACC,8DACC;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,MAAO;AAAA,QACP,MAAO;AAAA,QACP,OAAQ,CAAE,GAAG,WAAY;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAS;AAAA,QACT,SAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD,GACE,WAAW,WAAW,WAAW,UAClC;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAQ;AAAA,QACR,UAAW;AAAA;AAAA,IACZ,CAEF;AAAA,EAEF;AACD;AAEA,SAAS,aACR,UACA,qBACA,SACA,eACA,uBACC;AACD,QAAM,WAAW,CAAE,GAAG,aAAc,OAAQ,CAAE;AAE9C,MAAK,CAAE,qBAAsB;AAC5B,WAAO,CAAE,GAAK,iBAAiB,UAAY,GAAK,yBAAyB,CAAC,CAAI;AAAA,EAC/E;AAEA,SAAS,SAAS,UAAU,mBAA+B;AAC5D;AAEA,SAAS,WAA6C,MAAa,MAAqC;AACvG,MAAK,qBAAsB,IAAK,GAAI;AACnC,WAAO,SAAS,SAAW,KAAkB,OAAQ,QAAQ,EAAG;AAAA,EACjE;AAEA,SAAO,QAAQ,SAAS,IAAM,OAAQ,IAAK,IAAiB;AAC7D;AAEA,SAAS,wBACR,WACA,aACA,cAA+B,IAC/B,cAAsB,IACd;AACR,QAAM,OAAO,WAAW,QAAQ;AAChC,QAAM,OAAO,WAAW,QAAQ;AAEhC,SAAO;AAAA,IACN,SACC,CAAE,qBAAsB,IAAK,KAAK,CAAE,MAAO,OAAQ,IAAK,CAAE,MAAO,QAAQ,SAAS,KAC/E,OAAQ,IAAK,IACb;AAAA,IACJ,QAAQ,SAAS,WAAW,OAAQ,IAAK,IAAI;AAAA,IAC7C;AAAA,EACD;AACD;AAEA,SAAS,sBAAuB,OAAqB,aAAsB,OAA0B;AACpG,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,MAAK,CAAE,OAAO,MAAO;AACpB,WAAO,EAAE,MAAM,cAAc,MAAM,aAAa;AAAA,EACjD;AAEA,QAAM,EAAE,KAAK,IAAI;AAEjB,MAAK,SAAS,QAAS;AACtB,WAAO,EAAE,MAAM,IAAI,KAAK;AAAA,EACzB;AAEA,MAAK,SAAS,UAAW;AACxB,WAAO,EAAE,MAAM,MAAM,UAAU,IAAI,MAAM,SAAS;AAAA,EACnD;AAEA,QAAM,UAAU,MAAM;AAEtB,MAAK,CAAE,eAAgB,YAAY,UAAa,YAAY,QAAQ,OAAO,MAAO,OAAQ,IAAM;AAC/F,WAAO;AAAA,EACR;AAEA,SAAO;AAAA,IACN,MAAM;AAAA,IACN;AAAA,EACD;AACD;;;AQ7RA,IAAAC,UAAuB;AACvB,IAAAC,iBAAmC;AACnC,IAAAC,uBAAmC;AACnC,IAAAC,cAAqB;AACrB,IAAAC,eAAmB;;;ACHnB,IAAAC,UAAuB;AACvB,IAAAC,cAAsB;AASf,IAAM,iBAA4C,CAAE,EAAE,MAAM,KAAK,IAAI,SAAS,MACpF,sCAAC,qBAAM,KAAY,IAAK,EAAE,GAAG,GAAG,KAC7B,QACH;;;ACdD,IAAAC,UAAuB;AACvB,IAAAC,uBAAqD;AACrD,IAAAC,cAAiE;AAY1D,IAAM,eAAe;AAAA,EAC3B,CAAE,EAAE,eAAe,wCAAmB,UAAU,YAAY,CAAC,GAAG,IAAI,GAAG,MAAM,MAAc;AAC1F,UAAM,EAAE,OAAO,UAAU,aAAa,sBAAsB,SAAS,IAAI,aAAc,YAAa;AAEpG,UAAM,cAAc,MAAM,eAAe;AAEzC,UAAM,eAAe,CAAE,kBAA2B;AACjD,eAAU,iBAAiB,IAAK;AAAA,IACjC;AAEA,WACC,sCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,MAAK;AAAA,QACL,WAAS;AAAA,QACT,OAAQ,SAAS;AAAA,QACjB,aAAc,eAAe;AAAA,QAC7B,UAAW;AAAA,QACT,GAAG;AAAA,QACL;AAAA,QACA,WAAY;AAAA,UACX,GAAG;AAAA,UACH,aAAa;AAAA,YACZ;AAAA,YACA,cAAc;AAAA,cACb,UAAU;AAAA,cACV,YAAY;AAAA,YACb;AAAA,YACA,iBAAiB;AAAA,cAChB,UAAU;AAAA,cACV,YAAY;AAAA,YACb;AAAA,YACA,WAAW;AAAA,cACV,gBAAgB;AAAA,gBACf,OAAO,SAAS,eAAe;AAAA,cAChC;AAAA,cACA,UAAU;AAAA,gBACT,OAAO,SAAS,eAAe;AAAA,cAChC;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA;AAAA,IACD,CACD;AAAA,EAEF;AACD;;;AFzCA,IAAM,QAAsB,CAAE,MAAM,MAAM,KAAM;AAEzC,IAAM,gBAAgB,cAAe,MAAM;AACjD,QAAM,cAAc,aAAc,uCAAmB;AACrD,QAAM,aAAS,uBAA0B,IAAK;AAE9C,SACC,sCAAC,gBAAe,GAAG,eAClB,sCAAC,sBACA,sCAAC,WAAQ,MAAK,SAAQ,WAAQ,iBAAI,gBAAgB,WAAY,GAAI,KAAM,UACvE,sCAAC,eAAY,OAAgB,WAAY,QAAS,CACnD,GACA,sCAAC,WAAQ,MAAK,SAAQ,WAAQ,iBAAI,gBAAgB,WAAY,KAC7D,sCAAC,kBAAa,CACf,CACD,CACD;AAEF,CAAE;AAEF,IAAM,cAAU,2BAAY,CAAE,EAAE,MAAM,OAAO,SAAS,GAAgB,QACrE,sCAAC,mBAAgB,QAChB,sCAAC,oBAAK,WAAS,MAAC,KAAM,GAAI,YAAW,UAAS,UAAS,UAAS,OAC/D,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,wBAAmB,KAAO,CAC5B,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACb,QACH,CACD,CACD,CACC;;;AGnDF,IAAAC,UAAuB;AACvB,IAAAC,iBAAuC;AACvC,IAAAC,wBAAgF;AAChF,IAAAC,cAA0F;AAC1F,IAAAC,gBAAmB;;;ACJnB,IAAAC,UAAuB;AACvB,IAAAC,gBAAyB;AACzB,IAAAC,cAAyC;AACzC,IAAAC,eAA4B;;;ACH5B,IAAAC,UAAuB;AACvB,IAAAC,iBAAiD;AAEjD,IAAAC,cAA+C;;;ACH/C,IAAM,WAAN,MAAe;AAAA,EACN,YAAY,oBAAI,IAAiD;AAAA,EAEzE,UAAW,WAAmB,UAAuC;AACpE,QAAK,CAAE,KAAK,UAAU,IAAK,SAAU,GAAI;AACxC,WAAK,UAAU,IAAK,WAAW,oBAAI,IAAI,CAAE;AAAA,IAC1C;AACA,UAAM,iBAAiB,KAAK,UAAU,IAAK,SAAU;AACrD,QAAK,gBAAiB;AACrB,qBAAe,IAAK,QAAS;AAAA,IAC9B;AAAA,EACD;AAAA,EAEA,YAAa,WAAmB,UAAuC;AACtE,UAAM,iBAAiB,KAAK,UAAU,IAAK,SAAU;AACrD,QAAK,CAAE,gBAAiB;AACvB;AAAA,IACD;AAEA,mBAAe,OAAQ,QAAS;AAChC,QAAK,eAAe,SAAS,GAAI;AAChC,WAAK,UAAU,OAAQ,SAAU;AAAA,IAClC;AAAA,EACD;AAAA,EAEA,KAAM,WAAmB,MAAiB;AACzC,UAAM,iBAAiB,KAAK,UAAU,IAAK,SAAU;AACrD,QAAK,gBAAiB;AACrB,qBAAe,QAAS,CAAE,aAAc,SAAU,IAAK,CAAE;AAAA,IAC1D;AAAA,EACD;AAAA,EAEA,WAAiB;AAChB,SAAK,UAAU,MAAM;AAAA,EACtB;AACD;AAEO,IAAM,WAAW,IAAI,SAAS;;;ACrCrC,IAAAC,iBAA8B;AAIvB,IAAM,kBAAc,8BAAwE;AAAA,EAClG,OAAO;AAAA,EACP,OAAO,CAAC;AACT,CAAE;;;AF0BF,IAAM,sBAAkB,8BAAoE,IAAK;AAE1F,IAAM,kBAAkB;AAExB,IAAM,qBAAqB,MAAM;AACvC,QAAM,UAAgB,mBAAY,eAAgB;AAClD,QAAM,cAAoB,mBAAY,WAAY;AAElD,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,kEAAmE;AAAA,EACrF;AAEA,SAAO,EAAE,GAAG,SAAS,GAAG,YAAY;AACrC;AAEO,IAAM,0BAA0B,CAAyD;AAAA,EAC/F;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAAC,kBAAiB,MAAM;AACxB,MAKS;AACR,QAAM,EAAE,OAAO,gBAAgB,UAAU,kBAAkB,IAAI,aAAc,YAAa;AAE1F,QAAM,CAAEC,QAAO,QAAS,IAAI,qBAAsB;AAAA,IACjD,UAAU;AAAA,IACV,UAAU,MAAM,CAAC;AAAA,IACjB,aAAa;AAAA,IACb,aAAa,MAAM;AAAA,EACpB,CAAE;AAEF,QAAM,CAAE,YAAY,aAAc,QAAI,yBAAU,MAAM;AACrD,WAAOA,QAAO,IAAK,CAAE,GAAG,UAAW,KAAM,KAAK,CAAC;AAAA,EAChD,CAAE;AAEF,QAAM,oBAAgB;AAAA,IACrB,MACC,WACE,IAAK,CAAE,KAAK,WAAa;AAAA,MACzB;AAAA,MACA,MAAMA,OAAO,KAAM;AAAA,IACpB,EAAI,EACH,OAAQ,CAAE,EAAE,KAAK,MAAO,SAAS,MAAU;AAAA,IAC9C,CAAE,YAAYA,MAAM;AAAA,EACrB;AAEA,QAAM,iBAAiB,CAAE,qBAA0C;AAClE,aAAU,iBAAiB,IAAK,CAAE,EAAE,KAAK,MAAO,IAAK,CAAE;AAAA,EACxD;AAEA,QAAM,CAAE,eAAe,gBAAiB,QAAI,yBAAU,eAAgB;AACtE,QAAM,CAAE,QAAQ,SAAU,QAAI,yBAAgC,IAAK;AAEnE,QAAM,SAAS,kBAAkB;AACjC,QAAM,mBAAe,2BAAe,EAAE,SAAS,UAAU,CAAE;AAE3D,QAAM,UAAU,CAAE,IAAsB,WAA2B;AAClE,UAAM,OAAO,QAAQ,QAAQ,EAAE,GAAG,QAAQ;AAC1C,UAAM,WAAW,QAAQ,SAASA,OAAM;AACxC,UAAM,SAAS,kBAAkB;AACjC,UAAM,WAAW,CAAE,GAAGA,MAAM;AAE5B,aAAS,OAAQ,UAAU,GAAG,IAAK;AACnC,aAAU,QAAS;AAEnB,kBAAe,CAAE,GAAG,WAAW,MAAO,GAAG,QAAS,GAAG,QAAQ,GAAG,WAAW,MAAO,QAAS,CAAE,CAAE;AAE/F,qBAAkB,QAAS;AAC3B,iBAAa,KAAM,UAAU,EAAG;AAEhC,aAAS,KAAM,GAAI,aAAa,GAAI,eAAe;AAAA,MAClD,WAAW,QAAQ;AAAA,IACpB,CAAE;AAAA,EACH;AAEA,QAAM,aAAa,CAAE,UAAmB;AACvC,UAAM,eAAeA,OAAO,KAAM;AAElC,aAAUA,OAAM,OAAQ,CAAE,GAAG,QAAS,QAAQ,KAAM,CAAE;AACtD,kBAAe,WAAW,OAAQ,CAAE,GAAG,QAAS,QAAQ,KAAM,CAAE;AAEhE,aAAS,KAAM,GAAI,aAAa,GAAI,iBAAiB;AAAA,MACpD,WAAW,cAAc;AAAA,IAC1B,CAAE;AAAA,EACH;AAEA,QAAM,aAAa,CAAE,aAAgB,UAAmB;AACvD,UAAM,WAAW,CAAE,GAAGA,OAAM,MAAO,GAAG,KAAM,GAAG,aAAa,GAAGA,OAAM,MAAO,QAAQ,CAAE,CAAE;AACxF,aAAU,QAAS;AAAA,EACpB;AAEA,SACC;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACA,OAAQ;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAS,iBAAiB,CAAC;AAAA,QAC3B,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,gBAAgB,CAAE,UAAmBD,gBAAgB,cAAe,KAAM,EAAE,IAAK;AAAA,MAClF;AAAA;AAAA,IAEE;AAAA,EACH;AAEF;AAEA,IAAM,oBAAoB,MAAM;AAC/B,SAAO,KAAK,IAAI,IAAI,KAAK,MAAO,KAAK,OAAO,IAAI,GAAQ;AACzD;;;ADlJA,IAAME,QAAO;AAUN,IAAM,uBAAuB,CAAE;AAAA,EACrC,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB;AAAA,EACA;AACD,MAAkC;AACjC,QAAM,EAAE,QAAQ,IAAI,mBAAmB;AAEvC,QAAM,UAAU,CAAE,OAA0B,QAAS,IAAI,EAAE,OAAO,aAAa,CAAE;AAEjF,SACC,sCAAC,sBAAmB,SAAU,gBAAiB,QAAS,iBACvD,sCAAC,mBAAI,WAAU,QAAO,IAAK,EAAE,QAAQ,WAAW,gBAAgB,UAAU,KACzE;AAAA,IAAC;AAAA;AAAA,MACA,MAAOA;AAAA,MACP;AAAA,MACA;AAAA,MAEA,kBAAa,0BAAS,iBAAI,eAAe,WAAY,GAAG,WAAW,YAAY,CAAE;AAAA;AAAA,IAEjF,sCAAC,0BAAS,UAAWA,OAAO;AAAA,EAC7B,CACD,CACD;AAEF;AAEA,IAAM,qBAAqB,CAAE;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACD,MAIC,UAAU,UACT,sCAAC,uBAAQ,WAAU,SAAQ,OAAM,aAAY,WAC1C,QACH,IAEA;;;AI1DF,IAAAC,UAAuB;;;ACAvB,IAAAC,UAAuB;AACvB,IAAAC,gBAAiC;AACjC,IAAAC,cAUO;AACP,IAAAC,eAAmB;AAEZ,IAAM,mBAAmB,CAA+B,UAA+C;AAC7G,SACC,sCAAC,oBAAK,IAAK,EAAE,GAAG,GAAG,IAAI,MAAM,IAAI,EAAE,KAClC,sCAAC,wCAAyB,cAAY,MAAC,oBAAqB,OAAQ,SAAU,UAAa,GAAG,OAAQ,CACvG;AAEF;AAQO,IAAM,eAAe,CAAE,EAAE,IAAI,UAAU,SAAS,MAA2C;AACjG,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAS,CAAE;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,MAAwC;AACvC,eACC,sCAAC,kBAAiB,GAAG,WAAY,OAAQ,WAAY,UAAW,MAC7D,CAAE,YAAY,sCAAC,mBAAkB,GAAG,cAAe,OAAQ,cAAe,GAC1E,UACA,sBAAsB,sCAAC,iBAAc,OAAQ,qBAAsB,CACtE;AAAA,MAEF;AAAA;AAAA,EACD;AAEF;AAEA,IAAM,qBAAiB,oBAAQ,oBAAS;AAAA;AAAA;AAAA;AAAA,kBAIrB,CAAE,EAAE,MAAM,MAAO,MAAM,QAAS,GAAI,CAAE;AAAA;AAAA;AAAA,WAG7C,CAAE,EAAE,MAAM,MAAO,MAAM,QAAQ,OAAO,MAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAOhC,CAAE,EAAE,MAAM,MAAO,MAAM,QAAS,GAAI,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA,sBAKxC,CAAE,EAAE,MAAM,MAAO,MAAM,QAAQ,WAAW,KAAM;AAAA,gBACtD,CAAE,EAAE,MAAM,MAAO,MAAM,QAAS,CAAE,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrD,IAAM,kBAAkB,CAAE,UACzB;AAAA,EAAC;AAAA;AAAA,IACE,GAAG;AAAA,IACL,MAAK;AAAA,IACL,WAAU;AAAA,IACV,UAAW;AAAA,IACX,kBAAa,iBAAI,aAAa,WAAY;AAAA;AAAA,EAE1C,sCAAC,kCAAiB,UAAS,QAAO;AACnC;AAGD,IAAM,oBAAgB,oBAAQ,mBAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAYlB,CAAE,EAAE,MAAM,MAAO,MAAM,QAAS,GAAI,CAAE;AAAA,sBACnC,CAAE,EAAE,MAAM,MAAO,MAAM,QAAQ,KAAK,OAAQ;AAAA;AAAA;;;ADvG5D,IAAM,iBAAiB,CAAmC;AAAA,EAChE,aAAa;AAAA,EACb;AACD,MAES;AACR,QAAM,EAAE,OAAAC,QAAO,SAAS,IAAI,mBAAmB;AAC/C,QAAM,OAAOA,OAAM,IAAK,CAAE,EAAE,IAAI,MAAO,GAAI;AAE3C,MAAK,CAAE,UAAW;AACjB,WAAO;AAAA,EACR;AAEA,QAAM,gBAAgB,CAAE,YAAuB;AAC9C;AAAA,MACC,QAAQ,IAAK,CAAE,QAAS;AACvB,cAAM,QAAQA,OAAM,UAAW,CAAE,SAAU,KAAK,QAAQ,GAAI;AAE5D,eAAOA,OAAO,KAAM;AAAA,MACrB,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SACC,8DACC,sCAAC,oBAAiB,OAAQ,MAAO,UAAW,iBACzC,KAAK,IAAK,CAAE,KAAa,UAAmB;AAC7C,UAAM,QAAQA,OAAO,KAAM,EAAE;AAE7B,WACC,sCAAC,gBAAa,IAAK,KAAM,KAAM,YAAa,GAAI,IAAK,UAAW,CAAE,cACjE,sCAAC,YAAY,UAAZ,EAAqB,OAAQ,EAAE,OAAO,MAAM,KAAM,QAAU,CAC9D;AAAA,EAEF,CAAE,CACH,CACD;AAEF;;;AE7CA,IAAAC,UAAuB;AACvB,IAAAC,cAA4B;AAC5B,IAAAC,eAAmB;;;ACFnB,IAAAC,iBAA0C;AAmB1C,IAAM,+BAA2B,8BAA2D,MAAU;AAEtG,IAAM,8BAA8B,MAAM;AACzC,QAAM,cAAU,2BAAY,wBAAyB;AAErD,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,mEAAoE;AAAA,EACtF;AAEA,SAAO;AACR;;;AC7BA,IAAAC,UAAuB;AACvB,IAAAC,iBAA2B;AAC3B,IAAAC,cAAmD;AAE5C,IAAM,kBAAc,2BAAgD,CAAE,OAAO,QAAS;AAC5F,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,WAAS;AAAA,MACT,oBAAkB;AAAA,MAClB,SAAQ;AAAA,MACR,IAAK,EAAE,WAAW,CAAE,UAAW,MAAM,QAAS,GAAI,EAAE;AAAA,MAClD,GAAG;AAAA;AAAA,EACN;AAEF,CAAE;;;ACdF,uBAA0D;AAGnD,IAAM,EAAE,MAAM,sBAAsB,QAAQ,2BAA2B,QAAI,4CAE9E;AAEG,IAAM,EAAE,MAAM,uBAAuB,QAAQ,4BAA4B,QAAI,4CAEhF;AAEG,IAAM,EAAE,MAAM,yBAAyB,QAAQ,8BAA8B,QAAI,iCAEpF;;;AHJG,IAAM,OAAO,CAAmC,EAAE,OAAAC,QAAO,MAAM,QAAQ,MAAuB;AACpG,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,gBAAAC;AAAA,EACD,IAAI,mBAAmB;AACvB,QAAM,oBAA0B,mBAAY,wBAAyB;AACrE,QAAM,cAAc,CAAC,CAAE,mBAAmB,OAAO;AACjD,QAAM,mBAAe,yBAAa,YAAa;AAE/C,QAAM,UAAU,CAAE,OAA0B;AAC3C,QAAK,eAAeA,gBAAgB,KAAM,GAAI;AAC7C;AAAA,IACD;AAEA,iBAAa,QAAS,EAAG;AACzB,qBAAkB,KAAM;AAAA,EACzB;AAEA,QAAM,SAAS,CAAE,QAAgC;AAChD,QAAK,CAAE,OAAO,kBAAkB,SAAS,QAAQ,aAAa,UAAW;AACxE;AAAA,IACD;AAEA,cAAW,GAAI;AACf,iBAAa,YAAa,GAAI;AAAA,EAC/B;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,KAAM;AAAA,MACN,OACC,sCAAC,yBAAsB,SACtB,sCAACD,QAAA,EAAM,OAAqB,CAC7B;AAAA,MAED,kBAAa,iBAAI,aAAa,WAAY;AAAA,MACxC,GAAG;AAAA,MACL;AAAA,MACA,WACC,sCAAC,wBAAqB,SACrB,sCAAC,QAAK,OAAqB,CAC5B;AAAA,MAED,IAAK;AAAA,QACJ,WAAW,CAAE,UAAW,MAAM,QAAS,GAAI;AAAA,QAC3C,GAAKC,gBAAgB,KAAM,KAAK;AAAA,UAC/B,mBAAmB;AAAA,YAClB,QAAQ;AAAA,UACT;AAAA,QACD;AAAA,MACD;AAAA,MACA,SACC,8DACC,sCAAC,2BAAwB,OAAQ,SAAS,IAAK,GAC7C,OACH;AAAA;AAAA,EAEF;AAEF;;;AI1EA,IAAAC,UAAuB;AAOhB,IAAM,kBAAkB,CAAmC;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAAC;AACD,MAIS;AACR,SACC,sCAAC,sBACA;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAiBA;AAAA;AAAA,IAEf;AAAA,EACH,CACD;AAEF;;;AC5BA,IAAAC,UAAuB;AACvB,IAAAC,gBAAoC;AACpC,IAAAC,cAAoC;AACpC,IAAAC,eAAmB;AAGnB,IAAMC,QAAO;AAEN,IAAM,oBAAoB,MAAM;AACtC,QAAM,EAAE,OAAAC,QAAO,YAAY,QAAQ,GAAG,IAAI,mBAAmB;AAE7D,MAAK,UAAU,IAAK;AACnB,WAAO;AAAA,EACR;AAEA,QAAM,eAAeA,OAAO,KAAM,EAAE,KAAK,YAAY;AAErD,QAAM,cAAc,mBAAe,iBAAI,QAAQ,WAAY,QAAI,iBAAI,QAAQ,WAAY;AAEvF,QAAM,UAAU,MAAM;AACrB,UAAM,OAAO,gBAAiBA,OAAO,KAAM,EAAE,IAAK;AAElD,SAAK,WAAW,CAAE,KAAK;AAEvB,QAAK,CAAE,KAAK,UAAW;AACtB,aAAO,KAAK;AAAA,IACb;AAEA,eAAY,MAAM,KAAM;AAAA,EACzB;AAEA,SACC,sCAAC,uBAAQ,OAAQ,aAAc,WAAU,SACxC,sCAAC,0BAAW,MAAOD,OAAO,SAAoB,cAAa,eACxD,eAAe,sCAAC,4BAAW,UAAWA,OAAO,IAAK,sCAAC,yBAAQ,UAAWA,OAAO,CAChF,CACD;AAEF;;;ACtCA,IAAAE,UAAuB;AACvB,IAAAC,gBAAyB;AACzB,IAAAC,cAAoC;AACpC,IAAAC,eAAmB;AAInB,IAAMC,QAAO;AAEN,IAAM,sBAAsB,MAAM;AACxC,QAAM,EAAE,OAAAC,QAAO,SAAS,QAAQ,IAAI,gBAAAC,gBAAe,IAAI,mBAAmB;AAE1E,MAAK,UAAU,IAAK;AACnB,WAAO;AAAA,EACR;AAEA,QAAM,qBAAiB,iBAAI,aAAa,WAAY;AACpD,QAAM,OAAOD,OAAO,KAAM,GAAG;AAE7B,QAAM,UAAU,CAAE,OAA0B;AAC3C,UAAM,UAAU,gBAAiB,IAAK;AAEtC,YAAS,IAAI,EAAE,MAAM,SAAS,OAAO,QAAQ,EAAE,CAAE;AAAA,EAClD;AAEA,SACC,sCAAC,uBAAQ,OAAQ,gBAAiB,WAAU,SAC3C;AAAA,IAAC;AAAA;AAAA,MACA,MAAOD;AAAA,MACP;AAAA,MACA,cAAa;AAAA,MACb,UAAWE,gBAAgB,KAAM;AAAA;AAAA,IAEjC,sCAAC,0BAAS,UAAWF,OAAO;AAAA,EAC7B,CACD;AAEF;;;ACrCA,IAAAG,UAAuB;AACvB,IAAAC,gBAAsB;AACtB,IAAAC,cAAoC;AACpC,IAAAC,gBAAmB;AAInB,IAAMC,QAAO;AAEN,IAAM,mBAAmB,MAAM;AACrC,QAAM,EAAE,YAAY,QAAQ,GAAG,IAAI,mBAAmB;AAEtD,MAAK,UAAU,IAAK;AACnB,WAAO;AAAA,EACR;AAEA,QAAM,kBAAc,kBAAI,UAAU,WAAY;AAE9C,QAAM,UAAU,MAAM,WAAY,KAAM;AACxC,SACC,sCAAC,uBAAQ,OAAQ,aAAc,WAAU,SACxC,sCAAC,0BAAW,MAAOA,OAAO,SAAoB,cAAa,eAC1D,sCAAC,uBAAM,UAAWA,OAAO,CAC1B,CACD;AAEF;;;AC1BA,IAAAC,UAAuB;AACvB,IAAAC,cAAiC;;;ACDjC,IAAAC,UAAuB;AACvB,IAAAC,cAA2C;AAEpC,IAAM,kBAAkB,CAAE,EAAE,UAAU,OAAO,GAAG,MAAM,MAA0C;AACtG,SACC;AAAA,IAAC;AAAA;AAAA,MACA,eAAa;AAAA,MACb,cAAe,EAAE,UAAU,UAAU,YAAY,OAAO;AAAA,MACxD,WAAY;AAAA,QACX,OAAO;AAAA,UACN,IAAI,EAAE,kBAAkB,KAAK,OAAO,UAAU,UAAU;AAAA,QACzD;AAAA,MACD;AAAA,MACE,GAAG;AAAA;AAAA,IAEH;AAAA,EACH;AAEF;;;ADXO,IAAM,kBAAkB,CAAE,EAAE,SAAS,MAAsC;AACjF,QAAM,EAAE,cAAc,eAAe,QAAQ,QAAQ,kBAAkB,UAAU,IAAI,mBAAmB;AAExG,MAAK,CAAE,UAAU,CAAE,QAAS;AAC3B,WAAO;AAAA,EACR;AAEA,QAAM,UAAU,MAAM;AACrB,cAAW,IAAK;AAChB,iBAAa,YAAa,IAAK;AAC/B,qBAAkB,eAAgB;AAAA,EACnC;AAEA,SACC,sCAAC,mBAAgB,OAAQ,OAAO,aAAgB,OAAG,yBAAa,YAAa,GAAI,WAChF,sCAAC,mBAAgB,MAAO,OAAQ,aAAc,KAC7C,sCAAC,uBAAM,QAAU,CAClB,CACD;AAEF;;;AE1BA,IAAAC,UAAuB;AACvB,IAAAC,cAAuC;AAEhC,IAAM,iBAAwD,CAAE,EAAE,MAAM,KAAK,UAAU,GAAG,MAAM,MACtG,sCAAC,qBAAQ,GAAG,OAAQ,OACjB,QACH;;;ACPD,IAAAC,iBAAmD;AACnD,IAAAC,UAAuB;AACvB,IAAAC,cAAqB;AAQd,IAAM,2BAAuB;AAAA,EACnC,CAAE,EAAE,MAAM,KAAK,aAAa,UAAU,WAAW,UAAU,SAAS,GAA8B,QACjG,sCAAC,oBAAK,WAAS,MAAC,KAAY,YAA0B,UAAsB,OACzE,QACH;AAEF;;;AChBA,IAAAC,UAAuB;AACvB,IAAAC,iBAA2B;AAC3B,IAAAC,cAAuC;;;ACFvC,IAAAC,UAAuB;;;ACAvB,IAAAC,UAAuB;AACvB,IAAAC,iBAAsF;AAatF,IAAMC,eAAU,8BAAkD,IAAK;AAIhE,IAAM,4BAA4B,CAAE,EAAE,UAAU,OAAAC,OAAM,MAC5D,sCAACD,SAAQ,UAAR,EAAiB,OAAQ,EAAE,OAAAC,OAAM,KAAM,QAAU;AAG5C,IAAM,uBAAuB,MAAM;AACzC,QAAM,cAAU,2BAAYD,QAAQ;AAEpC,SAAO,SAAS,SAAS,CAAC;AAC3B;;;ADrBO,SAAS,kBAAmB;AAAA,EAClC;AACD,GAKI;AACH,QAAME,SAAQ,qBAAqB;AAEnC,MAAKA,QAAO,WAAW,GAAI;AAC1B,WAAO;AAAA,EACR;AAEA,SACC,8DACGA,OAAM,IAAK,CAAE,EAAE,WAAW,GAAG,MAC9B,sCAAC,aAAU,KAAM,IAAK,eAAgC,CACrD,CACH;AAEF;;;ADpBO,IAAM,qBAAiB;AAAA,EAC7B,CACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,WAAW,YAAY;AAAA,EACxB,GAIA,QACI;AACJ,WACC;AAAA,MAAC;AAAA;AAAA,QACA,WAAU;AAAA,QACV,YAAW;AAAA,QACX,KAAM;AAAA,QACN,IAAK,EAAE,iBAAiB,OAAO,IAAI,KAAK;AAAA,QACxC;AAAA;AAAA,MAEA,sCAAC,mBAAI,SAAQ,QAAO,YAAW,UAAS,KAAM,GAAI,IAAK,EAAE,UAAU,EAAE,KACpE,sCAAC,0BAAW,WAAU,SAAQ,SAAQ,WAAU,OAAM,kBAAiB,IAAK,EAAE,YAAY,EAAE,KACzF,KACH,GACA,sCAAC,eAAU,CACZ;AAAA,MACE;AAAA,IACH;AAAA,EAEF;AACD;;;AnBfO,IAAM,2BAA2B,cAAe,MAAM;AAC5D,QAAM,EAAE,UAAU,OAAO,UAAU,SAAS,IAAI,aAAc,2CAAsB;AAEpF,SACC,sCAAC,gBAAa,UAAsB,OAAgB,UAAsB,YAAa,MAAM,YAC5F,sCAAC,mBAAgB,SAAU,eAAgB,cAAe,+CACzD,sCAAC,kBAAe,WAAQ,kBAAI,cAAc,WAAY,KACrD,sCAAC,wBAAqB,cAAe,GAAI,UAAsB,WAAY,cAAe,CAC3F,GACA,sCAAC,sBACA;AAAA,IAAC;AAAA;AAAA,MACA,MAAO;AAAA,MACP,OAAQ;AAAA,MACR,SACC,8DACC,sCAAC,yBAAoB,GACrB,sCAAC,uBAAkB,GACnB,sCAAC,sBAAiB,CACnB;AAAA;AAAA,EAEF,CACD,GACA,sCAAC,uBACA,sCAAC,aAAQ,CACV,CACD,CACD;AAEF,CAAE;AAEF,IAAM,mCAA+B,oBAAQ,kCAAuB,EAAG,CAAE,EAAE,MAAM,OAAS;AAAA,EACzF,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc,GAAI,MAAM,MAAM,eAAe,CAAE;AAChD,EAAI;AAEJ,IAAM,WAAW,CAAE,EAAE,MAAM,MAC1B,sCAAC,gCAA6B,MAAK,WAAU,WAAU,QAAO,OAAQ,MAAM,MAAM,OAAO,OAAQ;AAGlG,IAAM,UAAU,MAAM;AACrB,QAAM,UAAU,aAAc,wCAAmB;AACjD,QAAM,SAAwC,KAAE,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,CAAE;AAC/E,QAAM,EAAE,QAAQ,SAAS,IAAI,mBAAmB;AAEhD,SACC,sCAAC,gBAAe,GAAG,WAClB,sCAAC,kBAAe,GAAI,OACnB,sCAAC,4BACA,sCAACC,UAAA,EAAQ,MAAK,SAAQ,WAAQ,kBAAI,SAAS,WAAY,KACtD,sCAAC,gBAAa,UAAsB,CACrC,GACA,sCAACA,UAAA,EAAQ,MAAK,YAAW,WAAQ,kBAAI,YAAY,WAAY,GAAI,IAAK,EAAE,UAAU,SAAS,KAC1F;AAAA,IAAC;AAAA;AAAA,MACA,SAAU;AAAA,QACT,EAAE,WAAO,kBAAI,SAAS,WAAY,GAAG,OAAO,QAAQ;AAAA,QACpD,EAAE,WAAO,kBAAI,UAAU,WAAY,GAAG,OAAO,KAAK;AAAA,MACnD;AAAA;AAAA,EACD,CACD,CACD,GACA,sCAAC,wBAAqB,KAAM,OAAQ,CAAE,KACrC,sCAACA,UAAA,EAAQ,MAAK,WAAU,WAAQ,kBAAI,cAAc,WAAY,KAC7D,sCAAC,eAAY,WAAY,OAAQ,CAAE,GAAI,CACxC,GACA,sCAACA,UAAA,EAAQ,MAAK,WAAU,WAAQ,kBAAI,YAAY,WAAY,KAC3D,sCAAC,eAAY,WAAY,OAAQ,CAAE,GAAI,CACxC,CACD,GACA,sCAAC,wBAAqB,KAAM,OAAQ,CAAE,KACrC,sCAACA,UAAA,EAAQ,MAAK,QAAO,WAAQ,kBAAI,QAAQ,WAAY,KACpD,sCAAC,eAAY,WAAY,OAAQ,CAAE,GAAI,CACxC,GACA,sCAACA,UAAA,EAAQ,MAAK,UAAS,WAAQ,kBAAI,UAAU,WAAY,KACxD,sCAAC,eAAY,WAAY,OAAQ,CAAE,GAAI,CACxC,CACD,CACD,CACD;AAEF;AAEA,IAAMA,WAAU,CAAE;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAMC,sCAAC,mBAAgB,QAChB,sCAAC,oBAAK,MAAI,MAAC,IAAK,GAAI,MACnB,sCAAC,oBAAK,WAAS,MAAC,KAAM,MAAO,YAAW,YACvC,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,yBAAU,MAAK,UAAS,KAAO,CACjC,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACb,QACH,CACD,CACD,CACD;AAGD,IAAM,YAAY,CAAE,EAAE,MAAM,MAAmC;AAC9D,QAAM,EAAE,UAAU,SAAS,SAAS,MAAM,OAAO,IAAI,MAAM;AAE3D,QAAM,EAAE,MAAM,WAAW,IAAI,MAAM,WAAW,GAAG,IAAI,MAAM,SAAS,CAAC;AACrE,QAAM,EAAE,MAAM,aAAa,IAAI,MAAM,aAAa,GAAG,IAAI,QAAQ,SAAS,CAAC;AAC3E,QAAM,EAAE,MAAM,cAAc,SAAS,MAAM,cAAc,GAAG,IAAI,SAAS,SAAS,CAAC;AACnF,QAAM,EAAE,MAAM,cAAc,SAAS,MAAM,cAAc,GAAG,IAAI,SAAS,SAAS,CAAC;AACnF,QAAM,gBAAgB,UAAU,SAAS;AAEzC,QAAM,QAAQ;AAAA,IACb,CAAE,aAAa,WAAY;AAAA,IAC3B,CAAE,aAAa,WAAY;AAAA,IAC3B,CAAE,UAAU,QAAS;AAAA,IACrB,CAAE,YAAY,UAAW;AAAA,EAC1B,EACE,IAAK,CAAE,CAAE,MAAM,IAAK,MAAO;AAC3B,QAAK,SAAS,UAAW;AACxB,aAAO,OAAO;AAAA,IACf;AAEA,WAAO,CAAE,OAAO,oBAAoB;AAAA,EACrC,CAAE,EACD,KAAM,GAAI;AAEZ,SACC,sCAAC,UAAK,OAAQ,EAAE,eAAe,aAAa,KACzC,eAAe,MAAI,KACtB;AAEF;AAEA,IAAM,gBAAiC;AAAA,EACtC,QAAQ;AAAA,EACR,OAAO;AAAA,IACN,SAAS;AAAA,MACR,QAAQ;AAAA,MACR,OAAO,EAAE,MAAM,MAAM,MAAM,EAAE;AAAA,IAC9B;AAAA,IACA,SAAS;AAAA,MACR,QAAQ;AAAA,MACR,OAAO,EAAE,MAAM,MAAM,MAAM,EAAE;AAAA,IAC9B;AAAA,IACA,MAAM;AAAA,MACL,QAAQ;AAAA,MACR,OAAO,EAAE,MAAM,MAAM,MAAM,GAAG;AAAA,IAC/B;AAAA,IACA,QAAQ;AAAA,MACP,QAAQ;AAAA,MACR,OAAO,EAAE,MAAM,MAAM,MAAM,EAAE;AAAA,IAC9B;AAAA,IACA,OAAO;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,IACR;AAAA,IACA,UAAU;AAAA,EACX;AACD;;;AsBxLA,IAAAC,UAAuB;AACvB,IAAAC,wBAKO;AACP,IAAAC,gBAAmB;;;ACPnB,IAAAC,UAAuB;AACvB,IAAAC,iBAAmD;AACnD,IAAAC,wBAAyD;;;ACDzD,IAAAC,gBAAmB;;;ACDnB,IAAAC,gBAAmB;AAsBZ,IAAM,mBAA+D;AAAA,EAC3E,MAAM;AAAA,IACL,MAAM;AAAA,MACL,UAAM,kBAAI,QAAQ,WAAY;AAAA,MAC9B,eAAW,kBAAI,UAAU,WAAY;AAAA,IACtC;AAAA,EACD;AAAA,EACA,WAAW;AAAA,IACV,YAAY,EAAE,UAAM,kBAAI,cAAc,WAAY,EAAE;AAAA,IACpD,UAAU,EAAE,UAAM,kBAAI,YAAY,WAAY,EAAE;AAAA,IAChD,UAAU,EAAE,UAAM,kBAAI,YAAY,WAAY,EAAE;AAAA,EACjD;AAAA,EACA,cAAc;AAAA,IACb,cAAc;AAAA,MACb,UAAM,kBAAI,cAAc,WAAY;AAAA,MACpC,eAAW,kBAAI,SAAS,WAAY;AAAA,IACrC;AAAA,EACD;AAAA,EACA,cAAc;AAAA,IACb,WAAW,EAAE,UAAM,kBAAI,aAAa,WAAY,EAAE;AAAA,IAClD,QAAQ,EAAE,UAAM,kBAAI,UAAU,WAAY,EAAE;AAAA,IAC5C,OAAO,EAAE,UAAM,kBAAI,SAAS,WAAY,EAAE;AAAA,EAC3C;AAAA,EACA,eAAe;AAAA,IACd,eAAe,EAAE,UAAM,kBAAI,eAAe,WAAY,GAAG,eAAW,kBAAI,eAAe,WAAY,EAAE;AAAA,EACtG;AACD;;;AD3CA,IAAM,wBAAoB,kBAAI,UAAU,WAAY;AAwCpD,IAAM,oBAAiG;AAAA,EACtG,eAAe,CAAE,aAAwB,uBAAwB,QAAmC;AACrG;AAEO,SAAS,kBAAmB,mBAA+C;AACjF,WAAS,YACR,qBACA,gBACA,EAAE,MAAM,UAAU,GACsB;AACxC,UAAM,WAAW,gBAAiB,mBAA4C,mBAAoB;AAElG,UAAM,QACL,kBAAmB,cAAe,IAAK,QAAS,KAChD,iBAAkB,QAAwC;AAE3D,UAAM,eAAe,mBAAoB;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,WAAO;AAAA,MACN;AAAA,MACA;AAAA,QACC;AAAA,QACA,WAAW,aAAa;AAAA,QACxB;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,QAAM,UAAU,OAAO,QAAS,gBAAiB,EAAE;AAAA,IAAS,CAAE,CAAE,qBAAqB,KAAM,MAC1F,OAAO,QAAS,KAAM,EAAE;AAAA,MAAK,CAAE,CAAE,gBAAgB,IAAK,MACrD,YAAa,qBAA4C,gBAAkC,IAAK;AAAA,IACjG;AAAA,EACD;AAEA,SAAO,OAAO,YAAa,OAAQ;AACpC;AAQA,SAAS,mBAAoB,EAAE,gBAAgB,qBAAqB,MAAM,GAAwB;AACjG,SAAO;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,MACN,MAAM,EAAE,QAAQ,UAAU,OAAO,eAAe;AAAA,MAChD,MAAM;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;AAEA,SAAS,iBAAkB,UAAsD;AAChF,QAAM,eAAe,UAAU,OAAO;AAEtC,SAAO;AAAA,IACN,MAAM,cAAc;AAAA,EACrB;AACD;AAEA,SAAS,uBAAwB,UAAiD;AACjF,QAAM,qBAAqB,SAAS;AAEpC,SAAO;AAAA,IACN,MAAM,oBAAoB,MAAM;AAAA,IAChC,OAAO,oBAAoB,OAAO;AAAA,IAClC,OAAO,oBAAoB,OAAO;AAAA,IAClC,OACC,oBAAoB,OAAO,YACzB,oBAAoB,OAAyB,WAAW,MAAM;AAAA,EAClE;AACD;AAEA,SAAS,gBAAiB,UAAiC,qBAA2C;AACrG,SAAO,SAAS,OAAO,MAAM,WAAY,mBAAoB;AAC9D;;;ADhHA,IAAM,0BAAsB,8BAAkD,IAAK;AAE5E,SAAS,qBAAsB,EAAE,SAAS,GAA6B;AAC7E,QAAM,cAAc,aAAc,+CAA0B;AAE5D,QAAM,mBAAe,wBAAS,MAAM;AACnC,UAAM,SAAS,kBAAmB,YAAY,SAAS,cAAe;AACtE,UAAM,gBAAgB,OAAO,QAAS,MAAO,EAAE,IAAK,CAAE,CAAE,KAAK,IAAK,OAAS;AAAA,MAC1E,OAAO;AAAA,MACP,OAAO,KAAK;AAAA,IACb,EAAI;AAEJ,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,yBAAyB,CAAE,mBAAoC,OAAQ,cAAe;AAAA,MACtF,iBAAiB,MAAM,OAAO,KAAK;AAAA,IACpC;AAAA,EACD,GAAG,CAAE,YAAY,QAAS,CAAE;AAE5B,SAAO,sCAAC,oBAAoB,UAApB,EAA6B,OAAQ,gBAAiB,QAAU;AACzE;AAEO,SAAS,kBAA4C;AAC3D,QAAM,cAAU,2BAAY,mBAAoB;AAEhD,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,0DAA2D;AAAA,EAC7E;AAEA,SAAO;AACR;;;AGhDA,IAAAC,UAAuB;AACvB,IAAAC,wBAKO;AACP,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;;;ACRnB,IAAAC,UAAuB;AACvB,IAAAC,iBAAuB;AACvB,IAAAC,wBAA6C;AAC7C,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;AAQnB,IAAM,QAAQ;AAAA,EACb;AAAA,IACC,MAAM;AAAA,IACN,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,UAAU;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,UAAU;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,kBAAI,QAAQ,WAAY;AAAA,IAC/B,UAAU;AAAA,EACX;AAAA,EACA;AAAA,IACC,MAAM;AAAA,IACN,WAAO,kBAAI,SAAS,WAAY;AAAA,IAChC,UAAU;AAAA,EACX;AACD;AAEO,IAAM,wBAAwB,CAAE,EAAE,SAAS,MAA0C;AAC3F,QAAM,UAAU,aAAc,kDAA6B;AAC3D,QAAM,UAAU,KAAE,uBAA0B,IAAK,OAAG,uBAA0B,IAAK,CAAE;AAErF,SACC,sCAAC,gBAAe,GAAG,WAChB,MAAM,IAAK,CAAE,SACd,sCAAC,wBAAqB,KAAM,KAAK,MAAO,KAAM,QAAS,KAAK,QAAS,KAAK,QACzE,sCAAC,mBAAgB,MAAO,KAAK,QAC5B,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,wBAAmB,KAAK,KAAO,CACjC,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACb,KAAK,SAAS,UACf,sCAAC,gBAAa,UAAsB,IAEpC;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,QAAS,KAAK,QAAS;AAAA,MACnC,qBAAmB;AAAA,MACnB,aAAY;AAAA;AAAA,EACb,CAEF,CACD,CACD,CACC,CACH;AAEF;;;AC/DA,IAAAC,iBAAuB;AACvB,IAAAC,UAAuB;AACvB,IAAAC,wBAMO;AACP,IAAAC,cAAqB;AASd,IAAM,cAAsE;AAAA,EAClF,MAAM;AAAA,EACN,WAAW;AAAA,EACX,cAAc;AAAA,EACd,cAAc;AACf;AAEO,IAAM,wBAAwB,CAAE,EAAE,WAAW,MAAuC;AAC1F,QAAM,aAAS,uBAA0B,IAAK;AAC9C,QAAM,EAAE,wBAAwB,IAAI,gBAAgB;AACpD,QAAM,EAAE,WAAW,oBAAoB,IAAI,wBAAyB,UAAW;AAC/E,QAAM,UAAU,aAAc,YAAa,mBAA8B,CAAE;AAE3E,SACC,sCAAC,gBAAe,GAAG,WAClB,sCAAC,mBAAgB,MAAO,uBACvB,sCAAC,mBAAgB,MAAO,UACvB,sCAAC,wBAAqB,KAAM,UAC3B,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,wBAAmB,SAAW,CAChC,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,eAAY,WAAY,QAAS,qBAAmB,MAAC,CACvD,CACD,CACD,CACD,CACD;AAEF;;;AFxBO,IAAM,gBAAgB,MAAM;AAClC,QAAM,cAAc,aAAc,+CAA0B;AAC5D,QAAM,EAAE,eAAe,wBAAwB,IAAI,gBAAgB;AAEnE,QAAM,oBAAoB,CAAE,OAAc,GAAmB,SAA+B;AAC3F,QAAI,WAAW,gBAAiB,KAAM;AACtC,UAAM,aAAa,wBAAyB,UAAU,KAAK,KAAwB;AAEnF,QAAK,MAAM,SAAS,QAAS;AAC5B,iBAAW,WAAW,aAAa;AAAA,IACpC;AAEA,QAAK,CAAE,SAAS,MAAO;AACtB;AAAA,IACD;AAEA,gBAAY,SAAU,QAAS;AAAA,EAChC;AAEA,SACC,sCAAC,gBAAe,GAAG,aAAc,UAAW,qBAC3C,sCAAC,mBAAgB,MAAK,qBACrB,sCAAC,kBAAe,GAAI,OACnB,sCAAC,4BACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,4BAAmB,kBAAI,UAAU,WAAY,CAAG,CAClD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAK,UACrB,sCAAC,iBAAc,SAAU,eAAgB,CAC1C,CACD,CACD,GACA,sCAAC,mBAAgB,MAAK,UACrB,sCAAC,wBAAmB,CACrB,CACD,CACD,CACD;AAEF;AAEA,IAAM,qBAAqB,MAAM;AAChC,QAAM,EAAE,eAAe,OAAAC,OAAM,IAAI,mBAAmB;AACpD,QAAM,cAAcA,OAAO,aAAc;AAEzC,QAAM,aAAe,YAAY,KAAK,MAA0C,KAAK;AACrF,QAAM,eAAe,eAAe;AAEpC,MAAK,cAAe;AACnB,WAAO,sCAAC,2BAAsB;AAAA,EAC/B;AAEA,SAAO,sCAAC,yBAAsB,YAA4C;AAC3E;;;AG7EA,IAAAC,UAAuB;AAEvB,IAAAC,cAA+C;AAExC,IAAM,aAAa,CAAE,EAAE,MAAM,MAAuC;AAC1E,MAAK,MAAM,MAAM,KAAK,UAAU,eAAgB;AAC/C,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,WAAU;AAAA,MACV,OAAU,MAAM,MAAM,KAAoC,OAAO,MAAM;AAAA;AAAA,EACxE;AAEF;AAEA,IAAMA,oCAA+B,oBAAQ,kCAAuB,EAAG,CAAE,EAAE,MAAM,OAAS;AAAA,EACzF,cAAc,GAAI,MAAM,MAAM,eAAe,CAAE;AAChD,EAAI;;;ACpBJ,IAAAC,UAAuB;;;ACAvB,IAAAC,UAAuB;AAEvB,IAAAC,cAAoB;AAIb,IAAM,sBAAsB,CAAE,EAAE,MAAM,MAAuC;AACnF,QAAM,SAAS,MAAM,MAAM,KAAK;AAChC,QAAM,OAAO,CAAE,SAAS,SAAS,MAAO;AACxC,QAAM,SAAmB,KAAK;AAAA,IAAK,CAAE,QACpC,OAAQ,GAAI,GAAG,OAAO,SAAS,WAC5B,GAAI,OAAQ,GAAI,GAAG,OAAO,QAAQ,CAAE,GAAI,OAAQ,GAAI,GAAG,OAAO,QAAQ,IAAK,KAC3E,OAAQ,GAAI,GAAG,OAAO,QAAQ;AAAA,EAClC;AAEA,SACC,sCAAC,mBAAI,WAAU,UACd,sCAAC,mBAAI,WAAU,QAAO,OAAQ,EAAE,eAAe,aAAa,KAAI,cAEhE,GACE,IAAK,OAAO,KAAM,GAAI,CAAE,EAC3B;AAEF;;;ACvBA,IAAAC,UAAuB;AAEvB,IAAAC,cAAoB;AAOb,IAAM,sBAAsB,CAAE,EAAE,MAAM,MAAuC;AACnF,QAAM,EAAE,MAAM,KAAK,IAAI,MAAM;AAC7B,QAAM,EAAE,wBAAwB,IAAI,gBAAgB;AACpD,QAAM,EAAE,aAAa,IAAI,wBAA2B,KAAK,SAAS,EAAuB;AACzF,QAAM,cACH,aAAa,MAAM,KAAK,OAAoC,MAAM,OAAO,QAAQ,YAAa,CAAE;AAEnG,QAAM,EAAE,MAAM,KAAK,IAAM,KAAK,MAAmC,MAAM,SAAS,EAAE,MAAM,aAAa,MAAM,EAAE;AAE7G,QAAM,QACL,sCAAC,mBAAI,WAAU,QAAO,OAAQ,EAAE,eAAe,aAAa,KACzD,KAAK,SAAS,IAAI,GACrB;AAGD,SACC,sCAAC,mBAAI,WAAU,UACZ,OACA,OAAQ,SAAS,WAAW,GAAI,QAAQ,CAAE,GAAI,QAAQ,WAAY,KAAK,QAAQ,kBAClF;AAEF;;;AFxBO,IAAM,cAAc,CAAE,EAAE,MAAM,MAAuC;AAC3E,MAAK,MAAM,MAAM,KAAK,UAAU,eAAgB;AAC/C,WAAO,sCAAC,uBAAoB,OAAgB;AAAA,EAC7C;AAEA,SAAO,sCAAC,uBAAoB,OAAgB;AAC7C;;;ARoBA,IAAM,gBAA0C;AAAA,EAC/C,QAAQ;AAAA,IACP,cAAc;AAAA,IACd,WAAO,kBAAI,WAAW,WAAY;AAAA,EACnC;AAAA,EACA,mBAAmB;AAAA,IAClB,cAAc;AAAA,IACd,WAAO,kBAAI,oBAAoB,WAAY;AAAA,EAC5C;AACD;AAEO,IAAM,wBAAwB,cAAe,CAAE,EAAE,iBAAiB,SAAS,MAAuB;AACxG,QAAM,EAAE,cAAc,MAAM,IAAI,mBAAoB,cAAe;AACnE,QAAM,EAAE,UAAU,OAAO,cAAc,SAAS,IAAI,aAAc,YAAa;AAE/E,SACC,sCAAC,4BACA,sCAAC,gBAAa,UAAsB,OAAQ,cAAe,YAC1D;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACD,CACD,CACD;AAEF,CAAE;AAQF,IAAM,WAAW,CAAE,EAAE,cAAc,OAAO,eAAe,MAAsB;AAC9E,QAAM,EAAE,iBAAAC,iBAAgB,IAAI,gBAAgB;AAE5C,SACC,sCAAC,mBAAgB,SAAUA,iBAAgB,GAA2B,gBACrE,sCAAC,kBAAe,SACf;AAAA,IAAC;AAAA;AAAA,MACA,cAAe;AAAA,MACf,WAAY,mBAAmB,oBAAoB,oBAAoB;AAAA;AAAA,EACxE,CACD,GACA,sCAAC,sBACA;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,MAAO;AAAA,MACP,SACC,8DACC,sCAAC,yBAAoB,GACrB,sCAAC,uBAAkB,GACnB,sCAAC,sBAAiB,CACnB;AAAA;AAAA,EAEF,CACD,GACA,sCAAC,uBACA,sCAAC,mBAAc,CAChB,CACD;AAEF;AAEA,SAAS,mBAAoB,MAAuB;AACnD,MAAK,QAAQ,QAAQ,eAAgB;AACpC,WAAO,cAAe,IAAK;AAAA,EAC5B;AAEA,SAAO,cAAc;AACtB;;;AWvGA,IAAAC,UAAuB;AACvB,IAAAC,iBAAoC;AASpC,IAAM,uBAAuB,MAAM;AAClC,QAAM,iBAAiB;AACvB,QAAM,aAAa,eAAe,UAAU,OAAO,SAAS;AAC5D,QAAM,oBAAoB,eAAe,UAAU,iBAAkB,CAAE,EAAE;AAAA,IACxE,uBAAwB,UAAW;AAAA,EACpC;AAEA,SAAO,MAAM,KAAM,iBAA8C,EAAE,IAAK,CAAE,qBAAsB;AAC/F,WAAO;AAAA,MACN,OAAO,iBAAiB,cAAe,eAAgB,GAAG,aAAc,YAAa,KAAK;AAAA,MAC1F,OAAO,iBAAiB,QAAQ;AAAA,IACjC;AAAA,EACD,CAAE;AACH;AAEA,IAAM,oBAAoB;AAAA,EACzB,cAAc;AACf;AAMA,IAAM,oBAAoB,CACzB,cACA,mBACI;AACJ,QAAM,CAAE,SAAS,UAAW,QAAI,yBAAoD,kBAAkB,CAAC,CAAE;AAEzG,gCAAW,MAAM;AAChB,QAAK,CAAE,gBAAgB,CAAE,kBAAmB,YAAa,GAAI;AAC5D,iBAAY,kBAAkB,CAAC,CAAE;AACjC;AAAA,IACD;AACA,eAAY,kBAAmB,YAAa,EAAE,CAAE;AAAA,EACjD,GAAG,CAAE,cAAc,cAAe,CAAE;AAEpC,SAAO;AACR;AAEO,IAAM,uBAAuB;AAAA,EACnC,CAAE,EAAE,cAAc,SAAS,GAAG,MAAM,MAAkC;AACrE,UAAM,gBAAgB,kBAAmB,cAAc,OAAQ;AAE/D,WAAO,sCAAC,iBAAc,SAAU,eAAkB,GAAG,OAAQ;AAAA,EAC9D;AACD;;;ACxDA,IAAAC,UAAuB;AACvB,IAAAC,wBAAyE;;;ACDzE,IAAAC,UAAuB;AACvB,IAAAC,iBAAqD;AACrD,IAAAC,gBAAgC;AAChC,IAAAC,cAWO;;;ACdP,IAAAC,UAAuB;AACvB,IAAAC,cAAwB;AAEjB,IAAM,qBAAqB,CAAE;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AACD,MAA2E;AAC1E,SAAO,eAAe,QACrB,sCAAC,uBAAQ,OAAQ,OAAQ,sBAAuB,MAAO,WAAU,SAC9D,QACH,IAEA;AAEF;;;ADaA,IAAM,8BAA0B,oBAAQ,6BAAkB;AAAA,GACtD,CAAE,EAAE,QAAQ,MAAO,oBAAqB,OAAQ,GAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAejD,IAAM,yBAAqB,oBAAQ,0BAAc;AAAA,EACvD,mBAAmB,CAAE,SAAU,SAAS;AACzC,CAAE;AAAA,GACE,CAAE,EAAE,OAAO,cAAc,MAC3B,iBACA;AAAA,WACU,MAAM,QAAQ,KAAK,QAAS;AAAA,sBACjB,MAAM,QAAQ,SAAS,SAAS,2BAA2B,kBAAmB;AAAA;AAAA;AAAA,uBAG7E,MAAM,QAAQ,SAAS,SAAS,2BAA2B,kBAAmB;AAAA;AAAA,EAEnG;AAAA;AA0BI,IAAM,sBAA4B;AAAA,EACxC,CACC;AAAA,IACC,UAAU;AAAA,IACV,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,OAAAC;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,EACD,GACA,QACI;AACJ,UAAM,mBAAmB,aAAa,aAAa,UAAaA,OAAM,SAAS;AAC/E,UAAM,YAAY,mBAAmBA,OAAM,MAAO,WAAW,CAAE,IAAI,CAAC;AACpE,UAAM,aAAa,mBAAmBA,OAAM,MAAO,GAAG,WAAW,CAAE,IAAIA;AAEvE,UAAM,YAAQ,sBAAS;AACvB,UAAM,QAAQ,UAAU,MAAM;AAE9B,UAAM,eAAe,CACpB,GACA,aACI;AACJ,eAAU,QAAkB;AAAA,IAC7B;AAEA,UAAM,6BAAyB,wBAAS,MAAM;AAC7C,YAAM,cAAc,WAAW;AAC/B,YAAM,aAAa,cAAc,WAAW,SAAS,IAAI,WAAW;AACpE,YAAM,wBAAwB,cAAc,SAAS;AACrD,aAAO,UAAW,UAAW,qBAAsB,qBAAsB;AAAA,IAC1E,GAAG,CAAE,WAAW,QAAQ,WAAW,MAAO,CAAE;AAE5C,UAAM,iCAAiC,cAAe,UAAU,QAAQ,UAAU,UAAa,UAAU;AAEzG,UAAM,6BACL,CAAE,aAAa,MAAM,QAAS,KAAM,IACjC,MACC,IAAK,CAAE,MAAS,OAAO,MAAM,WAAW,IAAI,EAAK,EACjD,KAAM,GAAI,EACV,KAAK,EACL,MAAO,KAAM,EACb,OAAQ,OAAQ,IACjB,CAAC;AAEL,UAAM,oCAAoC,CAAE,aAAa,2BAA2B,WAAW;AAE/F,UAAM,sBAAsB,CAAE,qBAA+D;AAC5F,UAAK,MAAM,QAAS,gBAAiB,GAAI;AACxC,eAAO,iBAAiB,QAAS,CAAE,MAAO;AACzC,cAAK,OAAO,MAAM,UAAW;AAC5B,mBAAO,EAAE,KAAK,EAAE,MAAO,KAAM,EAAE,OAAQ,OAAQ;AAAA,UAChD;AACA,iBAAO,CAAC;AAAA,QACT,CAAE;AAAA,MACH;AAEA,UAAK,OAAO,qBAAqB,UAAW;AAC3C,eAAO,iBAAiB,KAAK,EAAE,MAAO,KAAM,EAAE,OAAQ,OAAQ;AAAA,MAC/D;AAEA,aAAO,CAAC;AAAA,IACT;AAEA,UAAM,mBAAmB,oBAAqB,WAAY;AAE1D,WACC;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA,IAAK;AAAA,UACJ,WAAW,QAAQ,sBAAsB;AAAA,UACzC,SAAS;AAAA,UACT,qBAAqB;AAAA,UACrB,OAAO;AAAA,QACR;AAAA;AAAA,MAEE,WAAW,IAAK,CAAE,EAAE,OAAO,OAAO,aAAa,eAAeC,UAAS,YAAY,MAAO;AAC3F,cAAM,gBACL,iBAAiB,SAAS,KAC1B,iBAAiB,SAAU,WAAsB,MAC/C,kCAAkC;AAErC,eACC;AAAA,UAAC;AAAA;AAAA,YACA,KAAM;AAAA,YACN;AAAA,YACA,aAAc,eAAe;AAAA;AAAA,UAE7B;AAAA,YAAC;AAAA;AAAA,cACA,OAAQ;AAAA,cACR,cAAa;AAAA,cACb;AAAA,cACA;AAAA,cACA;AAAA;AAAA,YAEA,sCAACA,UAAA,EAAQ,MAAc;AAAA,UACxB;AAAA,QACD;AAAA,MAEF,CAAE;AAAA,MAEA,UAAU,UAAU,aACrB;AAAA,QAAC;AAAA;AAAA,UACA;AAAA,UACA,OAAU,SAAuC;AAAA,UACjD;AAAA,UACA,OAAQ;AAAA,UACR;AAAA;AAAA,MACD;AAAA,IAEF;AAAA,EAEF;AACD;AAEO,IAAM,2BAA2B,CAAa,UAA4B;AAChF,SACC,sCAAC,sBACA,sCAAC,uBAAsB,GAAG,OAAQ,CACnC;AAEF;AAUA,IAAM,mBAAmB,CAAa;AAAA,EACrC,OAAO;AAAA,EACP;AAAA,EACA,OAAAD;AAAA,EACA;AAAA,EACA;AACD,MAAmC;AAClC,QAAM,gBAAgB,iBAAkBA,QAAO,KAAM;AACrD,QAAM,CAAE,YAAY,aAAc,QAAI,yBAAU,KAAM;AACtD,QAAM,oBAAgB,uBAAQ,IAAK;AAEnC,QAAM,eAAe,CAAE,OAA0B;AAChD,kBAAe,CAAE,SAAU,CAAE,IAAK;AAClC,OAAG,eAAe;AAAA,EACnB;AAEA,QAAM,kBAAkB,CAAE,aAA6B;AACtD,kBAAe,KAAM;AACrB,iBAAc,QAAS;AAAA,EACxB;AAEA,QAAM,eAAe,CAAE,aAA6B;AACnD,UAAM,eAAe,aAAa;AAElC,aAAY,eAAe,OAAO,QAAoB;AAAA,EACvD;AAEA,SACC,8DACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ,cAAc;AAAA,MACtB,cAAa,cAAc;AAAA,MAC3B;AAAA,MACA;AAAA,MACA,SAAU,CAAE,OAA0B;AACrC,WAAG,eAAe;AAClB,wBAAiB,cAAc,KAAM;AAAA,MACtC;AAAA;AAAA,IAEE,cAAc,cAAe,EAAE,KAAK,CAAE;AAAA,EACzC,GACA;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,iBAAgB,aAAa,SAAS;AAAA,MACtC,iBAAc;AAAA,MACd,gBAAe;AAAA,MACf,SAAU;AAAA,MACV,KAAM;AAAA,MACN,OAAM;AAAA;AAAA,IAEN,sCAAC,iCAAgB,UAAW,MAAO;AAAA,EACpC,GACA;AAAA,IAAC;AAAA;AAAA,MACA,MAAO;AAAA,MACP,SAAU,MAAM,cAAe,KAAM;AAAA,MACrC,UAAW,cAAc;AAAA,MACzB,cAAe;AAAA,QACd,UAAU;AAAA,QACV,YAAY;AAAA,MACb;AAAA,MACA,iBAAkB;AAAA,QACjB,UAAU;AAAA,QACV,YAAY;AAAA,MACb;AAAA,MACA,IAAK;AAAA,QACJ,IAAI;AAAA,MACL;AAAA;AAAA,IAEEA,OAAM,IAAK,CAAE,EAAE,OAAO,OAAO,YAAY,MAC1C;AAAA,MAAC;AAAA;AAAA,QACA,KAAM;AAAA,QACN,UAAW,gBAAgB;AAAA,QAC3B,SAAU,MAAM,gBAAiB,WAAY;AAAA;AAAA,MAE7C,sCAAC,gCACA,sCAAC,0BAAW,IAAK,EAAE,UAAU,OAAO,KAAM,KAAO,CAClD;AAAA,IACD,CACC;AAAA,EACH,CACD;AAEF;AAEA,IAAM,mBAAmB,CAAaA,QAA0C,UAAmB;AAClG,QAAM,CAAE,eAAe,gBAAiB,QAAI;AAAA,IAC3CA,OAAM,KAAM,CAAE,SAAU,KAAK,UAAU,KAAM,KAAKA,OAAO,CAAE;AAAA,EAC5D;AAEA,gCAAW,MAAM;AAChB,UAAM,iBAAiBA,OAAM,KAAM,CAAE,SAAU,KAAK,UAAU,KAAM;AAEpE,QAAK,gBAAiB;AACrB,uBAAkB,cAAe;AAAA,IAClC;AAAA,EACD,GAAG,CAAEA,QAAO,KAAM,CAAE;AAEpB,SAAO;AACR;;;AEhUA,IAAAE,UAAuB;AAEvB,YAAuB;AAUhB,IAAM,+BAA+B,CAC3C,YACwE;AACxE,SAAO,QAAQ,IAAK,CAAE,WAAY;AACjC,UAAM,WAAW,OAAO;AACxB,UAAM,gBAAgB,MAAO,QAA+B;AAE5D,WAAO;AAAA,MACN,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,MACd,eAAe,CAAE,EAAE,KAAK,MAAO;AAC9B,YAAK,eAAgB;AACpB,iBAAO,sCAAC,iBAAc,UAAW,MAAO;AAAA,QACzC;AACA,eAAO,OAAO;AAAA,MACf;AAAA,MACA,aAAa,OAAO;AAAA,MACpB,WAAW,OAAO;AAAA,IACnB;AAAA,EACD,CAAE;AACH;;;AHdO,IAAM,gBAAgB;AAAA,EAC5B,CAAE;AAAA,IACD;AAAA,IACA,YAAY;AAAA,IACZ,OAAO;AAAA,IACP,YAAY;AAAA,IACZ;AAAA,IACA,iBAAiB;AAAA,EAClB,MAAyD;AACxD,UAAM,EAAE,OAAO,UAAU,aAAa,SAAS,IAAI,aAAc,wCAAmB;AAEpF,UAAM,mBAAmB,iBACtB,6BAA8B,OAAiC,IAC7D;AAEL,UAAM,kBAAkB,iBACtB,OAAQ,CAAE,WAAY,OAAO,SAAU,EACvC,IAAK,CAAE,WAAY,OAAO,KAAM;AAElC,UAAM,2BAA2B,CAAE,mBAAkD;AACpF,YAAM,mBAAmB,eAAgB,eAAe,SAAS,CAAE;AACnE,YAAM,8BAA8B,gBAAgB,SAAU,gBAAiB;AAE/E,YAAM,gBAAgB,8BACnB,CAAE,gBAAiB,IACnB,gBAAgB,OAAQ,CAAE,QAAS,CAAE,gBAAgB,SAAU,GAAI,CAAE;AAExE,eAAU,eAAe,KAAM,GAAI,KAAK,IAAK;AAAA,IAC9C;AAEA,UAAM,yBAAyB;AAAA,MAC9B,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAEA,WAAO,YACN;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACL,OAAQ,SAAS;AAAA,QACjB,UAAW;AAAA,QACX;AAAA,QACA,WAAY;AAAA;AAAA,IACb,IAEA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACL,OAAQ,OAAO,MAAO,GAAI,KAAK,CAAC;AAAA,QAChC,UAAW;AAAA,QACX;AAAA,QACA,WAAY;AAAA;AAAA,IACb;AAAA,EAEF;AACD;;;AI1EA,IAAAC,UAAuB;AACvB,IAAAC,wBAAmC;AACnC,IAAAC,cAA+B;AAO/B,IAAM,eAAe,CAAE,UACtB,UAAU,QAAQ,UAAU,UAAa,UAAU,MAAM,OAAO,MAAO,OAAQ,KAAM,CAAE;AAEjF,IAAM,gBAAgB;AAAA,EAC5B,CAAE;AAAA,IACD,aAAa;AAAA,IACb,MAAM,OAAO;AAAA,IACb,MAAM,CAAC,OAAO;AAAA,IACd,OAAO;AAAA,IACP,iBAAiB;AAAA,IACjB;AAAA,EACD,MAOO;AACN,UAAM,EAAE,OAAO,UAAU,aAAa,UAAU,aAAa,IAAI,aAAc,wCAAmB;AAElG,UAAM,eAAe,CAAE,UAAkD;AACxE,YAAM;AAAA,QACL,OAAO;AAAA,QACP,UAAU,EAAE,OAAO,aAAa;AAAA,MACjC,IAAI,MAAM;AAEV,UAAI;AAEJ,UAAK,aAAc,UAAW,GAAI;AACjC,uBAAe;AAAA,MAChB,OAAO;AACN,cAAM,iBAAiB,iBAAiB,CAAC,SAAU,UAAW,IAAI,OAAQ,UAAW;AAErF,uBAAe,KAAK;AAAA,UACnB,KAAK,IAAK,gBAAgB,OAAO,OAAO,gBAAiB;AAAA,UACzD,OAAO,OAAO;AAAA,QACf;AAAA,MACD;AAEA,eAAU,cAAc,QAAW,EAAE,YAAY,MAAM,aAAa,CAAE;AAAA,IACvE;AAEA,WACC,sCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA,MAAK;AAAA,QACL,MAAK;AAAA,QACL,WAAS;AAAA,QACT;AAAA,QACA,OAAQ,aAAc,KAAM,IAAI,KAAK;AAAA,QACrC,SAAU;AAAA,QACV,QAAS;AAAA,QACT,aAAc,qBAAsB,aAAc,WAAY,IAAI,KAAK,OAAQ,WAAY;AAAA,QAC3F,YAAa,EAAE,MAAM,IAAI;AAAA,QACzB,YAAa;AAAA,UACZ,gBAAgB,YACf,sCAAC,8BAAe,UAAS,SAAQ,YAC9B,SACH,IACG;AAAA,QACL;AAAA;AAAA,IACD,CACD;AAAA,EAEF;AACD;;;AC3EA,IAAAC,UAAuB;AACvB,IAAAC,iBAA8D;AAE9D,IAAAC,cAA2F;AAC3F,IAAAC,gBAAmB;;;ACJnB,IAAAC,UAAuB;AAEvB,IAAAC,cAA2C;AAOpC,IAAM,eAAe,CAAE,EAAE,UAAU,GAAG,MAAM,MAA0B;AAC5E,SACC,sCAAC,qBAAM,WAAU,OAAM,YAAW,UAAS,cAAa,SAAQ,KAAM,QACrE,sCAAC,oBAAmB,GAAG,SAAU,QAAU,GAC3C,sCAAC,uBAAkB,CACpB;AAEF;;;ADgBO,SAAS,yBAAkG;AAAA,EACjH;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAAC;AAAA,EACA;AACD,GAAyC;AACxC,QAAM,cAAU,sBAAM;AACtB,QAAM,iBAAa,2BAAe,EAAE,SAAS,WAAW,QAAQ,CAAE;AAElE,QAAM,UAAyC,KAAE,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,CAAE;AAEhF,QAAM,EAAE,UAAU,mBAAmB,UAAU,kBAAkB,IAAI,aAAc,qBAAsB;AACzG,QAAM,EAAE,OAAO,aAAa,UAAU,gBAAgB,aAAa,kBAAkB,IAAI,aAAa;AAEtG,QAAM,qBAAqB,CAAE,gBAA4B;AACxD,QAAK,sBAAsB,QAAS,WAAY,GAAI;AACnD,aAAO,YAAY;AAAA,IACpB;AAEA,UAAM,YAAgC,CAAC;AAEvC,IAAAA,OAAM,QAAS,CAAE,SAAU;AAC1B,gBAAW,KAAK,IAAK,IAAI;AAAA,IAC1B,CAAE;AAEF,UAAM,UAAU,sBAAsB,OAAQ,SAAmC;AACjF,WAAO,SAAS;AAAA,EACjB;AAEA,QAAM,4BAA4B,CAAE,WAAW;AAE/C,QAAM,eAAe,mBAAoB,WAAY;AACrD,QAAM,qBAAqB,mBAAoB,iBAAkB;AAEjE,QAAM,gBAAgB,CAAE,WAA+D;AACtF,QAAK,CAAE,QAAS;AACf,aAAO;AAAA,IACR;AAEA,UAAM,YAAgC,CAAC;AAEvC,IAAAA,OAAM,QAAS,CAAE,SAAU;AAC1B,gBAAW,KAAK,IAAK,IAAI,QAAQ,QAAS,KAAK,IAAK,KAAK;AAAA,IAC1D,CAAE;AAEF,UAAM,YAAY,OAAO,OAAQ,SAAU,EAAE,IAAK,CAAE,UAAW,KAAK,UAAW,KAAM,CAAE;AACvF,WAAO,UAAU,MAAO,CAAE,UAAW,UAAU,UAAW,CAAE,CAAE;AAAA,EAC/D;AAEA,QAAM,qBAAqB,CAAE,eAAe,CAAE,cAAe,sBAAsB,OAAQ,kBAAmB,CAAE;AAChH,QAAM,UAAU,sBAAsB,CAAE,cAAe,sBAAsB,OAAQ,YAAa,CAAE;AAEpG,QAAM,sBAAsB,CAAE,aAA0B;AACvD,UAAM,eAAe,sBAAsB,OAAQ,QAAS;AAE5D,QAAK,cAAe,YAAa,GAAI;AACpC,qBAAgB,OAAO,OAAQ,QAAS,GAAG,IAAI,KAAK,IAAK;AACzD;AAAA,IACD;AAEA,mBAAgB,YAAa;AAAA,EAC9B;AAEA,SACC,8DACC,sCAAC,oBAAK,WAAS,MAAC,KAAM,GAAI,YAAW,UAAS,UAAS,UAAS,KAAM,QAAS,CAAE,KAChF,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACb,CAAE,4BACH,sCAAC,wBAAmB,KAAO,IAE3B,sCAAC,oBAAe,KAAO,CAEzB,GAEA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,qBAAM,WAAU,OAAM,YAAW,UAAS,KAAM,KAChD,sCAAC,mBAAI,UAAW,KACf;AAAA,IAAC;AAAA;AAAA,MACA,aAAc,cAAU,kBAAI,SAAS,WAAY,IAAI;AAAA,MACrD,qBAAsB,CAAE,WAAW,CAAE;AAAA,MACrC,WAAY,QAAS,CAAE;AAAA;AAAA,EACxB,CACD,GACA,sCAAC,uBAAQ,OAAQ,cAAe,WAAU,SACzC;AAAA,IAAC;AAAA;AAAA,MACA,MAAO;AAAA,MACP,OAAQ;AAAA,MACR,IAAK,EAAE,YAAY,OAAO;AAAA,MACxB,OAAG,wBAAY,UAAW;AAAA,MAC5B,UAAW,WAAW;AAAA,MACtB,eAAgB;AAAA,MAChB,cAAa;AAAA;AAAA,IAEX;AAAA,EACH,CACD,CACD,CACD,CACD,GAEA;AAAA,IAAC;AAAA;AAAA,MACA,eAAa;AAAA,MACb,mBAAiB;AAAA,MACjB,cAAe;AAAA,QACd,UAAU;AAAA,QACV,YAAY;AAAA,MACb;AAAA,MACA,iBAAkB;AAAA,QACjB,UAAU;AAAA,QACV,YAAY;AAAA,MACb;AAAA,MACE,OAAG,yBAAa,UAAW;AAAA,MAC7B,WAAY;AAAA,QACX,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,QAAS,CAAE,EAAE,SAAS,sBAAsB,EAAE,MAAM,EAAE;AAAA,MACtF;AAAA;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACA,UAAW;AAAA,QACX,OAAQ;AAAA,QACR,aAAc;AAAA,QACd,UAAW;AAAA,QACX,YAAa,MAAM;AAAA;AAAA,MAEnB,sCAAC,kBAAe,GAAI,OACnB,sCAAC,wBAAqB,KAAM,QAAS,CAAE,KACtC,sCAAC,yBAAsB,MAAOA,OAAO,CAAE,GAAI,QAAS,QAAS,CAAE,GAAI,GACnE,sCAAC,yBAAsB,MAAOA,OAAO,CAAE,GAAI,QAAS,QAAS,CAAE,GAAI,CACpE,GACA,sCAAC,wBAAqB,KAAM,QAAS,CAAE,KACtC,sCAAC,yBAAsB,MAAOA,OAAO,CAAE,GAAI,QAAS,QAAS,CAAE,GAAI,GACnE,sCAAC,yBAAsB,MAAOA,OAAO,CAAE,GAAI,QAAS,QAAS,CAAE,GAAI,CACpE,CACD;AAAA,IACD;AAAA,EACD,CACD;AAEF;AAEA,IAAM,wBAAwB,CAAE,EAAE,MAAM,OAAO,MAA4D;AAC1G,SACC,sCAAC,mBAAgB,MAAO,KAAK,QAC5B,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,oBAAK,WAAS,MAAC,KAAM,MAAO,YAAW,YACvC,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,oBAAe,KAAK,KAAO,CAC7B,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,eAAY,WAAY,KAAK,MAAO,WAAY,QAAS,CAC3D,CACD,CACD,CACD;AAEF;;;AE3LA,IAAAC,UAAuB;AACvB,IAAAC,iBAAkE;AAClE,IAAAC,wBAAuE;AACvE,IAAAC,4BAAoC;AACpC,IAAAC,iBAA+F;AAC/F,IAAAC,cAAqC;AACrC,IAAAC,gBAAmB;AAgBZ,IAAM,0BAA0B,CAAE,EAAE,OAAO,YAAY,OAAO,iBAAiB,IAAI,MAAc;AACvG,QAAM,cAA6C,KAAE,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,CAAE;AAEpF,QAAM,EAAE,UAAU,aAAa,IAAI,aAAc,sCAAiB;AAElE,QAAM;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV;AAAA,IACA,aAAa;AAAA,IACb,UAAU;AAAA,EACX,IAAI,aAAc,4CAAuB;AAEzC,QAAM,EAAE,OAAO,aAAa,aAAa,mBAAmB,UAAU,eAAe,IAAI,aAAa;AAEtG,QAAM,gBAAgB,MAAM;AAC3B,QAAK,6CAAuB,QAAS,WAAY,GAAI;AACpD,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,eAAe,6CAAuB,QAAS,iBAAkB,GAAI;AAC3E,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR;AAEA,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAU,MAAM,cAAc,CAAE;AAElE,QAAM,uBAAmB,+CAAoB;AAE7C,sCAAiB,MAAM;AACtB,gBAAa,aAAc;AAAA,EAE5B,GAAG,CAAE,gBAAiB,CAAE;AAExB,QAAM,eAAe,MAAM;AAC1B,gBAAa,CAAE,SAAU,CAAE,IAAK;AAEhC,QAAK,CAAE,6CAAuB,QAAS,WAAY,GAAI;AACtD,YAAM,QAAQ,cAAc,cAAc;AAE1C,UAAK,CAAE,OAAQ;AACd,uBAAgB,IAAK;AACrB;AAAA,MACD;AAEA;AAAA,QACC,6CAAuB,OAAQ;AAAA,UAC9B,eAAe;AAAA,UACf,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,cAAc;AAAA,QACf,CAAE;AAAA,MACH;AAEA;AAAA,IACD;AAEA,UAAM,YACL,kBAAmB,aAAc,KACjC,kBAAmB,YAAa,KAChC,kBAAmB,WAAY,KAC/B,kBAAmB,cAAe,KAClC;AAED,QAAK,CAAE,WAAY;AAClB,qBAAgB,IAAK;AACrB;AAAA,IACD;AAEA,mBAAgB,SAAU;AAAA,EAC3B;AAEA,QAAM,eAAe,MAAM,YAAY;AAEvC,QAAM,aAAa,WAAW,0BAAW;AAEzC,QAAM,kBAAc,kBAAI,WAAW,WAAY,EAAE,QAAS,MAAM,YAAa;AAE7E,QAAM,oBAAgB,kBAAI,aAAa,WAAY,EAAE,QAAS,MAAM,YAAa;AAEjF,QAAM,WAAW,gBAAgB;AAEjC,QAAM,oBAAoB;AAAA,IACzB;AAAA,IACA,OAAO;AAAA,IACP,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY,MAAM;AAAA,EACnB;AAEA,QAAM,kBAAkB,CAAE,gBAAiB,yBAAyB;AAEpE,SACC,sCAAC,gBAAe,GAAG,qBAClB,sCAAC,qBAAM,WAAU,OAAM,KAAM,GAAI,UAAS,YACzC,sCAAC,wBAAmB,KAAO,GAC3B,sCAAC,uBAAQ,OAAQ,WAAW,gBAAgB,aAAc,WAAU,SACnE;AAAA,IAAC;AAAA;AAAA,MACA,cAAa,WAAW,gBAAgB;AAAA,MACxC,MAAO;AAAA,MACP,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,IAAK,EAAE,YAAY,OAAO;AAAA,MAC1B,UAAW;AAAA,MACX;AAAA,MACA,eAAgB;AAAA;AAAA,IAEhB,sCAAC,cAAW,UAAW,QAAS;AAAA,EACjC,CACD,CACD,GAEE,qBAAsB,SAAU,EAAE,IAAK,CAAE,KAAK,UAC/C,sCAAC,qBAAM,WAAU,OAAM,KAAM,GAAI,UAAS,UAAS,KAAM,OAAQ,KAAM,YAAa,KAAM,KACvF,IAAI,IAAK,CAAE,EAAE,MAAM,GAAG,MAAM,MAC7B,sCAAC,oBAAK,WAAS,MAAC,KAAM,MAAO,YAAW,UAAS,KAAM,MAAM,QAC5D,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,SAAQ,GAAG,OAAQ,CACrB,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,MAAO,MAAM;AAAA,MACb,WAAY;AAAA,MACZ;AAAA,MACA;AAAA,MACA,WAAY,YAAa,KAAM;AAAA,MAC/B;AAAA;AAAA,EACD,CACD,CACD,CACC,CACH,CACC,CACH;AAEF;AAEA,IAAMA,WAAU,CAAE;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAOO;AACN,MAAK,UAAW;AACf,WACC;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,IACD;AAAA,EAEF;AAEA,SACC,sCAAC,mBAAgB,QAChB;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACD,CACD;AAEF;AAEA,IAAM,QAAQ,CAAE,EAAE,OAAO,KAAK,MAAyC;AACtE,SACC,sCAAC,mBAAgB,QAChB,sCAAC,oBAAe,KAAO,CACxB;AAEF;AAEA,SAAS,qBAAsB,WAAqB;AACnD,SAAO;AAAA,IACN;AAAA,MACC;AAAA,QACC,MAAM;AAAA,QACN,WAAO,kBAAI,OAAO,WAAY;AAAA,QAC9B,MAAM,sCAAC,8BAAY,UAAW,QAAS;AAAA,MACxC;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO,gBAAY,kBAAI,QAAQ,WAAY,QAAI,kBAAI,SAAS,WAAY;AAAA,QACxE,MAAM,YAAY,sCAAC,+BAAa,UAAW,QAAS,IAAK,sCAAC,gCAAc,UAAW,QAAS;AAAA,MAC7F;AAAA,IACD;AAAA,IACA;AAAA,MACC;AAAA,QACC,MAAM;AAAA,QACN,WAAO,kBAAI,UAAU,WAAY;AAAA,QACjC,MAAM,sCAAC,iCAAe,UAAW,QAAS;AAAA,MAC3C;AAAA,MACA;AAAA,QACC,MAAM;AAAA,QACN,OAAO,gBAAY,kBAAI,SAAS,WAAY,QAAI,kBAAI,QAAQ,WAAY;AAAA,QACxE,MAAM,YAAY,sCAAC,gCAAc,UAAW,QAAS,IAAK,sCAAC,+BAAa,UAAW,QAAS;AAAA,MAC7F;AAAA,IACD;AAAA,EACD;AACD;;;AC1OA,IAAAC,UAAuB;AACvB,IAAAC,wBAAmC;AACnC,IAAAC,iBAA0C;AAC1C,IAAAC,cAA8E;AAC9E,IAAAC,gBAAmB;;;ACJnB,IAAAC,UAAuB;AACvB,IAAAC,iBAAiD;AACjD,IAAAC,oBAAyE;AACzE,IAAAC,cAAsD;AACtD,IAAAC,gBAAyB;AACzB,IAAAC,gBAAmB;;;ACGZ,IAAM,uBAAuB,CAAE,WAAuB,aAAqB,kBAA8B;AAC/G,SAAO,UAAU,OAA4B,CAAE,KAAK,aAAc;AACjE,UAAM,gBAAgB,SAAS,MAAM;AAAA,MAAQ,CAAE,SAC9C,KAAK,YAAY,EAAE,SAAU,YAAY,YAAY,CAAE;AAAA,IACxD;AAEA,QAAK,cAAc,QAAS;AAC3B,UAAI,KAAM,EAAE,MAAM,YAAY,OAAO,SAAS,MAAM,CAAE;AAEtD,oBAAc,QAAS,CAAE,SAAU;AAClC,YAAI,KAAM,EAAE,MAAM,QAAQ,OAAO,MAAM,UAAU,eAAe,SAAU,IAAK,KAAK,MAAM,CAAE;AAAA,MAC7F,CAAE;AAAA,IACH;AAEA,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AACP;;;ADIO,IAAM,eAAe,CAAE;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,OAAQ,CAAC;AAAA,EACrB,aAAa,MAAM;AAAA,EAAC;AAAA,EACpB;AAAA,EACA;AAAA,EACA,KAAK;AACN,MAA0B;AACzB,QAAM,CAAE,aAAa,cAAe,QAAI,yBAAU,EAAG;AAErD,QAAM,oBAAoB,qBAAsB,WAAW,aAAa,aAAc;AAEtF,QAAM,gBAAgB;AAEtB,QAAM,eAAe,CAAE,UAAmB;AACzC,mBAAgB,KAAM;AAAA,EACvB;AAEA,QAAM,cAAc,MAAM;AACzB,mBAAgB,EAAG;AACnB,YAAQ;AAAA,EACT;AAEA,SACC,sCAAC,iCAAY,OAAQ,cAAe,MACnC,sCAAC,mCAAc,OAAgB,SAAU,aAAc,MAAO,sCAAC,iBAAc,UAAS,QAAO,GAAK,GAClG;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,iBAAc,kBAAI,UAAU,WAAY;AAAA,MACxC,IAAK,KAAK;AAAA;AAAA,EACX,GAEA,sCAAC,yBAAQ,GAEP,kBAAkB,SAAS,IAC5B;AAAA,IAAC;AAAA;AAAA,MACA,eAAgB;AAAA,MAChB,iBAAkB;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,EACD,IAEA;AAAA,IAAC;AAAA;AAAA,MACA,YAAW;AAAA,MACX,gBAAe;AAAA,MACf,QAAO;AAAA,MACP,GAAI;AAAA,MACJ,KAAM;AAAA,MACN,UAAS;AAAA;AAAA,IAET,sCAAC,iBAAc,UAAS,SAAQ;AAAA,IAChC,sCAAC,mBAAI,IAAK,EAAE,UAAU,KAAK,UAAU,SAAS,KAC7C,sCAAC,0BAAW,OAAM,UAAS,SAAQ,aAAY,OAAM,wBAClD,kBAAI,0BAA0B,WAAY,CAC7C,GACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,IAAK,EAAE,SAAS,QAAQ,OAAO,QAAQ,gBAAgB,SAAS;AAAA;AAAA,MAEhE,sCAAC,cAAK,QAAO;AAAA,MACb;AAAA,QAAC;AAAA;AAAA,UACA,WAAU;AAAA,UACV,IAAK,EAAE,UAAU,OAAO,UAAU,UAAU,cAAc,WAAW;AAAA;AAAA,QAEnE;AAAA,MACH;AAAA,MACA,sCAAC,cAAK,SAAQ;AAAA,IACf,CACD;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA,OAAM;AAAA,QACN,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,IAAK,EAAE,SAAS,QAAQ,eAAe,SAAS;AAAA;AAAA,UAE9C,kBAAI,uBAAuB,WAAY;AAAA,MACzC;AAAA,QAAC;AAAA;AAAA,UACA,OAAM;AAAA,UACN,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,SAAU,MAAM,eAAgB,EAAG;AAAA;AAAA,YAEjC,kBAAI,qBAAqB,WAAY;AAAA,MACxC;AAAA,IACD;AAAA,EACD,CAEF;AAEF;AAYA,IAAM,WAAW,CAAE;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,OAAQ,CAAC;AAAA,EACrB,aAAa,MAAM;AAAA,EAAC;AACrB,MAAsB;AACrB,QAAM,oBAAoB,cAAc,KAAM,CAAE,SAAU,KAAK,UAAU,YAAa;AAEtF,QAAM,4BAA4B,YAAa,CAAE,EAAE,kBAAkB,MAA8C;AAClH,sBAAkB,EAAE,QAAS,CAAE,UAAW;AACzC,YAAM,OAAO,cAAe,KAAM;AAClC,UAAK,QAAQ,KAAK,SAAS,QAAS;AACnC,mBAAY,KAAK,KAAM;AAAA,MACxB;AAAA,IACD,CAAE;AAAA,EACH,GAAG,GAAI;AAEP,QAAM,wBAAoB,4BAAa,CAAE,SAA0B,UAAW,IAAK,GAAG,CAAE,SAAU,CAAE;AAEpG,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,eAAgB,mBAAmB;AAAA,MACnC,UAAW;AAAA,MACX,UAAW;AAAA,MACX,SAAU;AAAA,MACV,WAAY;AAAA,MACZ,eAAY;AAAA;AAAA,EACb;AAEF;AAEA,IAAM,cAAc,CAA6B,IAAgC,UAAmB;AACnG,QAAM,CAAE,WAAY,QAAI,yBAAU,UAAM,wBAAU,IAAI,KAAM,CAAE;AAC9D,gCAAW,MAAM,MAAM,YAAY,OAAO,GAAG,CAAE,WAAY,CAAE;AAC7D,SAAO;AACR;;;AEtKO,IAAM,cAA2B,CAAE,YAAY,UAAU,aAAc;AAC7E,QAAM,iBAAiB;AAEvB,SAAO,eAAe,WAAW,SAAS,cAAe,YAAY,OAAQ,KAAK;AACnF;;;AHUO,IAAM,oBAAoB;AAAA,EAChC,CAAE,EAAE,cAAc,cAAc,UAAU,MAA+B;AACxE,UAAM;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,MACV;AAAA,MACA;AAAA,IACD,IAAI,aAAc,wCAAmB;AAErC,UAAM,mBAAe,2BAAe,EAAE,SAAS,UAAU,CAAE;AAC3D,UAAM,uBAAuB,CAAE,cAAc;AAE7C,UAAM,cAAoB,gBAAuB,MAAM;AACtD,aAAO,aAAa,IAAK,CAAE,EAAE,OAAO,MAAM,OAAS;AAAA,QAClD;AAAA,QACA,OAAO;AAAA,MACR,EAAI;AAAA,IACL,GAAG,CAAE,YAAa,CAAE;AAEpB,WACC,8DACC,sCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA,IAAG;AAAA,QACH,SAAQ;AAAA,QACR,OAAQ,cAAc;AAAA,QACtB,SAAU,sCAAC,kCAAgB,UAAS,QAAO;AAAA,QACzC,OAAG,yBAAa,YAAa;AAAA,QAC/B,WAAS;AAAA,QACT;AAAA,QACA,cAAa;AAAA,QACb,IACC,uBACG;AAAA,UACA,mBAAmB;AAAA,YAClB,OAAO,CAAE,UAAW,MAAM,QAAQ,KAAK;AAAA,UACxC;AAAA,UACA,eAAe;AAAA,QACf,IACA;AAAA;AAAA,IAEL,CACD,GAEA;AAAA,MAAC;AAAA;AAAA,QACA,eAAa;AAAA,QACb,mBAAiB;AAAA,QACjB,cAAe,EAAE,UAAU,UAAU,YAAY,QAAQ;AAAA,QACzD,iBAAkB,EAAE,UAAU,OAAO,YAAY,QAAQ;AAAA,QACzD,IAAK,EAAE,IAAI,IAAI;AAAA,QACb,OAAG,yBAAa,YAAa;AAAA;AAAA,MAE/B;AAAA,QAAC;AAAA;AAAA,UACA,IAAG;AAAA,UACH,WAAY;AAAA,UACZ,cAAe;AAAA,UACf,cAAe;AAAA,UACf,SAAU,aAAa;AAAA,UACvB;AAAA,UACA,WAAQ,kBAAI,eAAe,WAAY;AAAA,UACvC,WAAY,CAAE,UAAY,EAAE,YAAY,KAAK,MAAM;AAAA,UACnD,YAAa;AAAA,UACb,MAAO;AAAA;AAAA,MACR;AAAA,IACD,CACD;AAAA,EAEF;AACD;;;AI5FA,IAAAC,UAAuB;AACvB,IAAAC,wBAAgC;AAChC,IAAAC,cAA0B;AAMnB,IAAM,aAAa;AAAA,EACzB,CAAE,EAAE,aAAa,UAAU,MAAqD;AAC/E,UAAM,EAAE,OAAO,UAAU,SAAS,IAAI,aAAc,qCAAgB;AACpE,UAAM,eAAe,CAAE,UAAkD,SAAU,MAAM,OAAO,KAAM;AAEtG,WACC,sCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA,MAAK;AAAA,QACL,WAAS;AAAA,QACT,OAAQ,SAAS;AAAA,QACjB;AAAA,QACA,UAAW;AAAA,QACX;AAAA,QACA,YAAa;AAAA,UACZ,GAAK,YAAY,EAAE,cAAc,UAAU,IAAI,CAAC;AAAA,QACjD;AAAA;AAAA,IACD,CACD;AAAA,EAEF;AACD;;;AC7BA,IAAAC,UAAuB;AACvB,IAAAC,iBAAyB;AACzB,IAAAC,0BAAyC;AACzC,IAAAC,wBAAqD;AACrD,IAAAC,iBAAoC;AACpC,qBAAkC;AAClC,IAAAC,cAAkD;AAClD,IAAAC,gBAAmB;;;ACPnB,IAAAC,UAAuB;AAEvB,6BAA0D;AAC1D,IAAAC,iBAAqC;AACrC,IAAAC,cAAmE;AACnE,IAAAC,gBAAmB;AAEnB,IAAM,kBAAkB;AAAA,EACvB,WAAO,kBAAI,cAAc,WAAY;AAAA,EACrC,MAAM;AACP;AAEA,IAAM,kBAAkB;AAAA,EACvB,gBAAY;AAAA,IACX;AAAA,IACA;AAAA,EACD;AAAA,EACA,cAAU,kBAAI,mFAAmF,WAAY;AAC9G;AAOO,IAAM,wBAAgE,CAAE;AAAA,EAC9E;AAAA,EACA;AAAA,EACA;AACD,MAAO;AACN,QAAM,EAAE,gBAAgB,QAAQ,UAAU,IAAI;AAE9C,QAAM,oBAAoB,MAAM;AAC/B,QAAK,WAAY;AAChB,gDAAe,SAAU;AAAA,IAC1B;AAAA,EACD;AAEA,QAAM,UACL;AAAA,IAAC;AAAA;AAAA,MACA,OAAM;AAAA,MACN,MAAO,sCAAC,yCAAqB;AAAA,MAC7B,QACC;AAAA,QAAC;AAAA;AAAA,UACA,IAAK,EAAE,OAAO,cAAc;AAAA,UAC5B,SAAQ;AAAA,UACR,OAAM;AAAA,UACN,SAAU;AAAA;AAAA,YAER,kBAAI,iBAAiB,WAAY;AAAA,MACpC;AAAA;AAAA,IAGD,sCAAC,kCAAa,kBAAI,gBAAgB,WAAY,CAAG;AAAA,IACjD,sCAAC,mBAAI,WAAU,UACZ,gBAAiB,UAAU,YAAa,GAAK,KAC/C,sCAAC,oBAAK,MAAO,gBAAgB,MAAO,QAAO,UAAS,OAAM,eACvD,gBAAgB,KACnB,CACD;AAAA,EACD;AAGD,SAAO,kBAAkB,YACxB;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV;AAAA,MACA,OAAM;AAAA,MACN,WAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE;AAAA;AAAA,IAE7C,sCAAC,uBAAM,QAAU;AAAA,EAClB,IAEA,8DAAI,QAAU;AAEhB;;;AC3EA,IAAAC,UAAuB;AACvB,IAAAC,iBAAkC;AAClC,IAAAC,wBAAwE;AACxE,IAAAC,sBAA+C;AAC/C,IAAAC,iBAA2B;AAC3B,IAAAC,gBAAyB;AACzB,IAAAC,gBAAmB;;;ACNnB,IAAAC,UAAuB;AACvB,IAAAC,iBAA2B;AAC3B,IAAAC,iBAAsB;AACtB,IAAAC,cAOO;AA2BA,IAAM,mBAAe,2BAAY,CAAE,OAAc,QAAS;AAChE,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,IACpB,cAAc;AAAA,IACd,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR;AAAA,IACA,gBAAgB;AAAA,IAChB,GAAG;AAAA,EACJ,IAAI;AAEJ,QAAM,aAAa,cAAe,OAAO,SAAS,cAAe,EAAE,IAAK,CAAE,EAAE,GAAG,MAAO,EAAG;AACzF,QAAM,aAAa,CAAC,CAAE;AAGtB,QAAM,sBAAsB,qBAAqB,CAAC,CAAE,OAAO,SAAS,GAAG;AAEvE,QAAM,uBAAuB,sBAAsB,SAAY,MAAM;AAErE,QAAM,qBAAqB,OAAO,UAAU,YAAY,CAAC,CAAE,mBAAoB,SAAS,KAAM;AAE9F,QAAM,cAAc,OAAO,SAAS,GAAG,UAAU;AACjD,QAAM,iBAAiB,eAAe;AACtC,QAAM,aAAa,mBAAoB,oBAAoB,WAAW,SAAS,IAAI;AAEnF,SACC;AAAA,IAAC,YAAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACL;AAAA,MACA,gBAAiB;AAAA,MACjB;AAAA,MACA,kBAAmB;AAAA,MACnB,UAAW;AAAA,MACX,aAAc;AAAA,MACd,MAAO;AAAA,MACP,OAAQ,OAAO,SAAS,KAAK;AAAA,MAC7B,MAAO;AAAA,MACP,UAAW,CAAE,GAAG,aAAc,eAAgB,OAAQ,QAAS,CAAE;AAAA,MACjE,UAAW;AAAA,MACX,SAAU;AAAA,MACV,cAAe,CAAE,aAAc,mBAAoB,SAAS,QAAS,GAAG,MAAM;AAAA,MAC9E,gBAAiB,CAAE,aAAc,mBAAoB,SAAS,QAAS,GAAG,SAAS,SAAS,SAAS;AAAA,MACrG,SACC,wBAAyB,OAAQ,IAC9B,CAAE,aAAsB,mBAAoB,SAAS,QAAS,GAAG,cAAc,WAC/E;AAAA,MAEJ;AAAA,MACA,eAAgB,MAAM;AAAA,MACtB,cAAe,CAAE,aAAa,aAC7B,sCAAC,mBAAI,WAAU,MAAO,GAAG,aAAc,KAAM,YAAY,MACtD,mBAAoB,SAAS,QAAS,GAAG,SAAS,QACrD;AAAA,MAED,aAAc,CAAE,WACf;AAAA,QAAC;AAAA;AAAA,UACA;AAAA,UACA,cAAe,CAAE,aAAc,eAAgB,QAAS;AAAA,UACxD;AAAA,UACA;AAAA,UACA,kBAAmB;AAAA,UACnB;AAAA,UACA,iBAAkB,UAAU;AAAA;AAAA,MAC7B;AAAA;AAAA,EAEF;AAEF,CAAE;AAEF,IAAM,YAAY,CAAE;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAQO;AACN,QAAM,WAAW,CAAE,UAAkD;AACpE,iBAAc,MAAM,OAAO,KAAM;AAAA,EAClC;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAa,EAAE,GAAK,OAAO,cAAc,CAAC,GAAK,GAAK,mBAAmB,CAAC,EAAI;AAAA,MAC5E,IAAK;AAAA,QACJ,yBAAyB;AAAA,UACxB,QAAQ,mBAAmB,YAAY;AAAA,QACxC;AAAA,MACD;AAAA,MACA,YAAa;AAAA,QACZ,GAAG,OAAO;AAAA,QACV,gBAAgB,iBACf,sCAAC,8BAAe,UAAS,WAAU,cAAgB,IAEnD,OAAO,WAAW;AAAA,QAEnB,cAAc,sCAAC,eAAY,QAAkB,YAA0B,cAA8B;AAAA,MACtG;AAAA;AAAA,EACD;AAEF;AAEA,IAAM,cAAc,CAAE;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AACD,MAKC,sCAAC,8BAAe,UAAS,SACtB,cACD,sCAAC,0BAAW,MAAO,OAAO,MAAO,SAAU,MAAM,aAAc,IAAK,GAAI,IAAK,EAAE,QAAQ,UAAU,KAChG,sCAAC,wBAAM,UAAW,OAAO,MAAO,CACjC,CAEF;AAGM,SAAS,mBACf,SACA,WAAmC,MAClC;AACD,QAAM,mBAAoB,YAAY,IAAK,SAAS;AAEpD,SAAO,QAAQ,KAAM,CAAE,EAAE,GAAG,MAAO,oBAAoB,GAAG,SAAS,CAAE;AACtE;AAEO,SAAS,wBAAyB,SAA8E;AACtH,MAAK,QAAQ,UAAU,GAAI;AAC1B,WAAO;AAAA,EACR;AAEA,QAAM,oBAAoB,IAAI,IAAK,QAAQ,IAAK,CAAE,WAAY,OAAO,UAAW,CAAE;AAElF,SAAO,kBAAkB,OAAO;AACjC;AAEA,SAAS,cACR,UACA,SACA,gBACI;AACJ,MAAK,SAAS,UAAW;AACxB,WAAO;AAAA,EACR;AAEA,QAAM,iBAAiB,OAAQ,YAAY,EAAG,GAAG,YAAY;AAE7D,MAAK,eAAe,SAAS,gBAAiB;AAC7C,WAAO,IAAI,MAAO,CAAE;AAAA,EACrB;AAEA,SAAO,QAAQ;AAAA,IACd,CAAE,WACD,OAAQ,OAAO,EAAG,EAAE,YAAY,EAAE,SAAU,cAAe,KAC3D,OAAO,MAAM,YAAY,EAAE,SAAU,cAAe;AAAA,EACtD;AACD;;;AD/KO,IAAM,eAAe,cAAe,CAAE,UAAkB;AAC9D,QAAM,EAAE,OAAO,SAAS,IAAI,aAAgC;AAE5D,QAAM;AAAA,IACL,oBAAoB;AAAA,IACpB,cAAc,EAAE,KAAK,SAAS,CAAC,EAAE;AAAA,IACjC;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,IACA;AAAA,EACD,IAAI,SAAS,CAAC;AAEd,QAAM,wBAAwB,mBAAe,kBAAI,UAAU,WAAY;AAEvE,QAAM,CAAE,SAAS,UAAW,QAAI;AAAA,IAC/B,0BAA2B,OAAO,KAAM;AAAA,EACzC;AAEA,QAAM,iBAAiB,CAAE,aAA6B;AACrD,QAAK,aAAa,MAAO;AACxB,eAAU,IAAK;AACf,mBAAc,IAAK;AAEnB;AAAA,IACD;AAEA,UAAM,cAAc;AAAA,MACnB,QAAQ;AAAA,MACR,OAAO;AAAA,QACN,IAAI,yCAAmB,OAAQ,QAAS;AAAA,QACxC,OAAO,yCAAmB,OAAQ,mBAAoB,SAAS,QAAS,GAAG,SAAS,IAAK;AAAA,MAC1F;AAAA,IACD;AAEA,aAAU,WAAY;AACtB,iBAAc,WAAY;AAAA,EAC3B;AAEA,QAAM,eAAe,CAAE,aAA6B;AACnD,QAAK,CAAE,UAAW;AACjB,eAAU,IAAK;AACf,mBAAc,IAAK;AAEnB;AAAA,IACD;AAEA,UAAM,eAAe,UAAU,KAAK,KAAK;AACzC,UAAM,cAAc,eAAe,sCAAgB,OAAQ,YAAa,IAAI;AAE5E,aAAU,WAAY;AACtB,iBAAc,WAAY;AAC1B,kBAAe,QAAS;AAAA,EACzB;AAEA,QAAM,gBAAgB,CAAE,aAA6B;AACpD,eAAY,CAAC,CAAE;AAEf,QAAK,CAAE,YAAY,CAAE,OAAO,SAAS,SAAS,gBAAiB;AAC9D;AAAA,IACD;AAEA,kBAAe,EAAE,GAAG,QAAQ,MAAM,SAAS,CAAE;AAAA,EAC9C;AAEA,QAAM,oBAAgB;AAAA,IACrB,UACC;AAAA,MACC,CAAE,gBACD,aAAc,KAAK,WAAY,EAAE,KAAM,CAAE,eAAgB;AACxD,mBAAY,cAAe,UAAW,CAAE;AAAA,MACzC,CAAE;AAAA,MACH;AAAA,IACD;AAAA,IACD,CAAE,GAAI;AAAA,EACP;AAEA,SACC,sCAAC,sBACA;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAc;AAAA,MACd,gBAAiB,sCAAC,6BAAW,UAAS,QAAO;AAAA,MAC7C,OAAQ,OAAO,OAAO,IAAI,SAAS,OAAO;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAgB;AAAA,MAChB,YAAa;AAAA,QACZ,GAAK,YAAY,EAAE,cAAc,UAAU,IAAI,CAAC;AAAA,MACjD;AAAA;AAAA,EACD,CACD;AAEF,CAAE;AAEF,eAAe,aAAc,SAAiB,QAA6B;AAC1E,MAAK,CAAE,UAAU,CAAE,SAAU;AAC5B,WAAO,CAAC;AAAA,EACT;AAEA,MAAI;AACH,UAAM,EAAE,MAAM,SAAS,IAAI,UAAM,iCAAY,EAAE,IAAiB,SAAS,EAAE,OAAO,CAAE;AAEpF,WAAO,SAAS,KAAK;AAAA,EACtB,QAAQ;AACP,WAAO,CAAC;AAAA,EACT;AACD;AAEA,SAAS,cAAe,SAAkF;AACzG,QAAM,aAAa,wBAAyB,OAAQ,IAAI,eAAe;AAEvE,SAAO,QAAQ;AAAA,IAAM,CAAE,GAAG,MACzB,EAAG,UAAW,KAAK,EAAG,UAAW,IAAI,EAAG,UAAW,EAAE,cAAe,EAAG,UAAW,CAAE,IAAI;AAAA,EACzF;AACD;AAEA,SAAS,0BAA2B,YAAmD;AACtF,QAAM,QAAQ,YAAY,IAAI;AAC9B,QAAM,QAAQ,YAAY,OAAO;AACjC,QAAM,OAAO,YAAY,IAAI,UAAU;AAEvC,SAAO,SAAS,SAAS,SAAS,WAC/B;AAAA,IACA;AAAA,MACC,IAAI,MAAM,SAAS;AAAA,MACnB;AAAA,IACD;AAAA,EACA,IACA,CAAC;AACL;;;AEvKA,IAAAC,UAAuB;AACvB,IAAAC,wBAAoC;AACpC,IAAAC,cAA4B;AAKrB,IAAM,gBAAgB,cAAe,MAAM;AACjD,QAAM,EAAE,OAAO,UAAU,SAAS,IAAI,aAAc,yCAAoB;AAExE,QAAM,eAAe,CAAE,UAAkD;AACxE,aAAU,MAAM,OAAO,OAAQ;AAAA,EAChC;AAEA,SACC,sCAAC,mBAAI,IAAK,EAAE,SAAS,QAAQ,gBAAgB,WAAW,KACvD;AAAA,IAAC;AAAA;AAAA,MACA,SAAU,CAAC,CAAE;AAAA,MACb,UAAW;AAAA,MACX,MAAK;AAAA,MACL;AAAA,MACA,YAAa;AAAA,QACZ,GAAK,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,CAAC;AAAA,MAC9C;AAAA;AAAA,EACD,CACD;AAEF,CAAE;;;AJYF,IAAMC,QAAO;AAEN,IAAM,cAAc,cAAe,CAAE,UAAkB;AAC7D,QAAM,EAAE,OAAO,MAAM,UAAU,GAAG,YAAY,IAAI,aAAc,sCAAiB;AACjF,QAAM,CAAE,kBAAkB,mBAAoB,QAAI,kCAAuC,KAAK,KAAM,GAAI,CAAE;AAC1G,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAU,CAAC,CAAE,KAAM;AAErD,QAAM;AAAA,IACL,oBAAoB;AAAA,IACpB;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,SAAS,EAAE,UAAU;AAAA,IACrB,YAAQ,kBAAI,QAAQ,WAAY;AAAA,IAChC;AAAA,EACD,IAAI,SAAS,CAAC;AAEd,QAAM,CAAE,uBAAuB,wBAAyB,QAAI,6BAAU,kDAA0B,SAAU,CAAE;AAC5G,QAAM,0BAA0B,CAAE,YAAY,sBAAsB;AAEpE,QAAM,kBAAkB,MAAM;AAC7B,iCAA0B,kDAA0B,SAAU,CAAE;AAEhE,QAAK,sBAAsB,kBAAkB,CAAE,UAAW;AACzD;AAAA,IACD;AAEA,UAAM,WAAW,CAAE;AACnB,gBAAa,QAAS;AAEtB,QAAK,CAAE,YAAY,UAAU,MAAO;AACnC,eAAU,IAAK;AAAA,IAChB;AAEA,QAAK,YAAY,kBAAkB,OAAQ;AAC1C,eAAU,iBAAiB,KAAM;AAAA,IAClC;AAEA,wBAAqB;AAAA,MACpB,OAAO,kBAAkB;AAAA,MACzB,MAAM,EAAE,WAAW,SAAS;AAAA,IAC7B,CAAE;AAAA,EACH;AAEA,QAAM,uBAAuB,CAAE,aAAiD;AAC/E,UAAM,cAA+C,WAClD;AAAA,MACA,GAAG;AAAA,MACH,aAAa;AAAA,IACb,IACA;AAEH,wBAAqB,EAAE,GAAG,kBAAkB,OAAO,YAAY,CAAE;AAAA,EAClE;AAEA,SACC,sCAAC,gBAAe,GAAG,aAAc,OAAgB,YAChD,sCAAC,qBAAM,KAAM,OACZ;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,IAAK;AAAA,QACJ,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,iBAAiB;AAAA,MAClB;AAAA;AAAA,IAEA,sCAAC,oBAAe,KAAO;AAAA,IACvB,sCAAC,yBAAsB,WAAY,CAAE,UAAW,yBAC/C;AAAA,MAAC;AAAA;AAAA,QACA,UAAW;AAAA,QACX,QAAS;AAAA,QACT,aAAc;AAAA,QACd,WAAQ,kBAAI,eAAe,WAAY;AAAA;AAAA,IACxC,CACD;AAAA,EACD,GACA,sCAAC,wBAAS,IAAK,UAAW,SAAQ,QAAO,eAAa,QACrD,sCAAC,qBAAM,KAAM,OACZ,sCAAC,mBAAgB,MAAO,iBACvB;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAa;AAAA,MACb,WAAY,aAAa;AAAA;AAAA,EAC1B,CACD,GACA,sCAAC,mBAAgB,MAAO,mBACvB,sCAAC,oBAAK,WAAS,MAAC,YAAW,UAAS,UAAS,UAAS,gBAAe,mBACpE,sCAAC,oBAAK,MAAI,QACT,sCAAC,4BAAmB,kBAAI,qBAAqB,WAAY,CAAG,CAC7D,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,EAAE,iBAAiB,GAAG,KACrC,sCAAC,mBAAc,CAChB,CACD,CACD,CACD,CACD,CACD,CACD;AAEF,CAAE;AASF,IAAM,oBAAoB,CAAE,EAAE,UAAU,QAAQ,aAAa,MAAM,MAA+B;AACjG,SACC,sCAAC,0BAAW,MAAOA,OAAO,SAAU,aAAc,cAAa,OAAQ,YACpE,SAAS,sCAAC,4BAAU,UAAWA,OAAO,IAAK,sCAAC,2BAAS,UAAWA,OAAO,CAC1E;AAEF;;;AK7JA,IAAAC,UAAuB;AACvB,IAAAC,0BAAgC;AAChC,IAAAC,wBAAyD;AACzD,IAAAC,oBAA6B;AAC7B,IAAAC,cAAmE;AACnE,IAAAC,gBAAmB;;;ACLnB,IAAAC,UAAuB;AACvB,IAAAC,oBAA0B;AAC1B,IAAAC,cAAuF;AACvF,IAAAA,cAAkC;AAUlC,IAAM,gBAAgB;AAEf,IAAM,4BAAkC;AAAA,EAC9C,CAAE,EAAE,UAAU,OAAO,aAAa,YAAY,cAAc,GAAG,MAAM,GAAqC,QAAS;AAClH,UAAM,YAAQ,sBAAS;AACvB,UAAM,UAAU,UAAU,MAAM;AAChC,UAAM,YAAY,MAAM,cAAe,SAAS;AAEhD,WACC,sCAAC,mBAAI,OACF,YACD,sCAAC,iCAAkB,KAAM,WACxB;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,QACZ,OAAQ;AAAA,QACR,WAAY;AAAA,UACX,QAAQ;AAAA,YACP,WAAW;AAAA,cACV;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS;AAAA,kBACR,QAAQ,CAAE,GAAG,EAAG;AAAA,gBACjB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,QACE,GAAG;AAAA,QACL,SACC;AAAA,UAAC;AAAA;AAAA,YACA,OAAQ;AAAA,YACR,IAAK,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,EAAE;AAAA,YAChC,GAAG;AAAA;AAAA,UAEL,sCAAC,mBAAI,IAAK,EAAE,eAAe,UAAU,SAAS,QAAQ,KAAK,IAAI,KAC9D,sCAAC,8BAAa,KAAO,GACrB,sCAAC,uBAAM,WAAa,CACrB;AAAA,QACD;AAAA;AAAA,MAGC;AAAA,IACH,CACD,IAEA,QAEF;AAAA,EAEF;AACD;;;ADvCA,IAAM,mBAAe,oBAAQ,kBAAO,EAAG,OAAQ,EAAE,kCAAkC,EAAE,QAAQ,cAAc,EAAE,EAAI;AAE1G,IAAM,iBAAiB,cAAe,CAAE,EAAE,SAAS,UAAU,iBAAiB,CAAC,EAAE,MAAc;AACrG,QAAM,EAAE,OAAO,UAAU,UAAU,YAAY,IAAI,aAAc,wCAAmB;AACpF,QAAM,eAAe,CAAE,UAA4D;AAClF,UAAM,WAAW,MAAM,OAAO,SAAS;AAEvC,eAAY,UAAU,KAAM;AAC5B,aAAU,QAAS;AAAA,EACpB;AAEA,QAAM,mBAAe,yCAAgB,KAAK;AAC1C,QAAM,eAAe;AAAA,IACpB,WAAO,kBAAI,YAAY,WAAY;AAAA;AAAA,IAEnC,iBAAa;AAAA,MACZ;AAAA,MACA;AAAA,IACD,EAAE,QAAS,MAAM,YAAa;AAAA,IAC9B,WAAW,CAAC,CAAE;AAAA,EACf;AAEA,QAAM,cAAc,CAAE,kBAAkC;AACvD,QAAK,eAAgB;AACpB,aAAO,kBAAmB,aAAc,GAAG,SAAS,eAAgB,aAAc,KAAK;AAAA,IACxF;AAEA,QAAK,CAAE,aAAc;AACpB,aAAO;AAAA,IACR;AAEA,UAAM,oBAAoB,kBAAmB,WAAY;AACzD,UAAM,cAAc,mBAAmB,SAAS;AAEhD,WACC,sCAAC,0BAAW,WAAU,QAAO,SAAQ,WAAU,OAAM,mBAClD,WACH;AAAA,EAEF;AAEA,QAAM,oBAAoB,CAAE,gBAAgC,QAAQ,KAAM,CAAE,QAAS,IAAI,UAAU,WAAY;AAE/G,SACC,sCAAC,sBACA,sCAAC,6BAA4B,GAAG,gBAC/B;AAAA,IAAC;AAAA;AAAA,MACA,IAAK,EAAE,UAAU,UAAU,QAAQ,WAAW,gBAAgB,OAAU;AAAA,MACxE,cAAY;AAAA,MACZ,MAAK;AAAA,MACL;AAAA,MACA,OAAQ,SAAS;AAAA,MACjB,UAAW;AAAA,MACX;AAAA,MACA,WAAS;AAAA;AAAA,IAEP,QAAQ,IAAK,CAAE,EAAE,OAAO,GAAG,MAAM,MAClC,sCAAC,kCAAa,KAAM,MAAM,OAAU,GAAG,OAAQ,OAAQ,MAAM,SAAS,MACnE,KACH,CACC;AAAA,EACH,CACD,CACD;AAEF,CAAE;;;AEzFF,IAAAC,UAAuB;AACvB,IAAAC,iBAAkE;AAClE,IAAAC,wBAA4E;AAC5E,IAAAC,4BAAoC;AACpC,IAAAC,iBAAqC;AACrC,IAAAC,cAAqC;AACrC,IAAAC,gBAAmB;AAQZ,IAAM,aAAa,CAAE,EAAE,MAAM,MAA0B;AAC7D,QAAM,eAAW,uBAA0B,IAAK;AAEhD,QAAM,EAAE,UAAU,aAAa,IAAI,aAAc,sCAAiB;AAElE,QAAM;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV;AAAA,IACA,aAAa;AAAA,IACb,UAAU;AAAA,EACX,IAAI,aAAc,iDAA4B;AAE9C,QAAM,EAAE,OAAO,aAAa,UAAU,gBAAgB,aAAa,kBAAkB,IAAI,aAAa;AAEtG,QAAM,gBAAgB,MAAM;AAC3B,QAAK,kDAA4B,QAAS,WAAY,GAAI;AACzD,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,eAAe,kDAA4B,QAAS,iBAAkB,GAAI;AAChF,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR;AAEA,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAU,MAAM,cAAc,CAAE;AAElE,QAAM,uBAAmB,+CAAoB;AAC7C,sCAAiB,MAAM;AACtB,gBAAa,cAAc,CAAE;AAAA,EAE9B,GAAG,CAAE,gBAAiB,CAAE;AAExB,QAAM,eAAe,MAAM;AAC1B,gBAAa,CAAE,SAAU,CAAE,IAAK;AAEhC,QAAK,CAAE,kDAA4B,QAAS,WAAY,GAAI;AAC3D,YAAMC,gBAAe,cAAc,cAAc;AAEjD,UAAK,CAAEA,eAAe;AACrB,uBAAgB,IAAK;AACrB;AAAA,MACD;AAEA;AAAA,QACC,kDAA4B,OAAQ;AAAA,UACnC,KAAKA;AAAA,UACL,QAAQA;AAAA,QACT,CAAE;AAAA,MACH;AAEA;AAAA,IACD;AAEA,UAAM,eAAe,gBAAgB,UAAU,gBAAgB,OAAO;AAEtE,mBAAgB,YAAa;AAAA,EAC9B;AAEA,QAAM,eAAe,MAAM,YAAY;AAEvC,QAAM,aAAa,WAAW,0BAAW;AAEzC,QAAM,kBAAc,kBAAI,WAAW,WAAY,EAAE,QAAS,MAAM,YAAa;AAE7E,QAAM,oBAAgB,kBAAI,aAAa,WAAY,EAAE,QAAS,MAAM,YAAa;AAEjF,QAAM,WAAW,gBAAgB;AAEjC,QAAM,oBAAoB;AAAA,IACzB;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,EACd;AAEA,QAAM,kBAAkB,CAAE,gBAAiB,wBAAwB;AAEnE,SACC,sCAAC,gBAAe,GAAG,qBAClB,sCAAC,qBAAM,WAAU,OAAM,KAAM,GAAI,UAAS,YACzC,sCAAC,oBAAe,KAAO,GACvB,sCAAC,uBAAQ,OAAQ,WAAW,gBAAgB,aAAc,WAAU,SACnE;AAAA,IAAC;AAAA;AAAA,MACA,cAAa,WAAW,gBAAgB;AAAA,MACxC,MAAO;AAAA,MACP,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,IAAK,EAAE,YAAY,OAAO;AAAA,MAC1B,UAAW;AAAA,MACX;AAAA,MACA,eAAgB;AAAA;AAAA,IAEhB,sCAAC,cAAW,UAAW,QAAS;AAAA,EACjC,CACD,CACD,GACA,sCAAC,qBAAM,WAAU,OAAM,KAAM,GAAI,UAAS,UAAS,KAAM,YACxD,sCAAC,oBAAK,WAAS,MAAC,KAAM,MAAO,YAAW,YACvC,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,4BAAmB,kBAAI,UAAU,WAAY,CAAG,CAClD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAACC,UAAA,EAAQ,MAAO,UAAW,UAAsB,WAAY,UAAW,CACzE,CACD,GACA,sCAAC,oBAAK,WAAS,MAAC,KAAM,MAAO,YAAW,YACvC,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,4BAAmB,kBAAI,OAAO,WAAY,CAAG,CAC/C,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAACA,UAAA,EAAQ,MAAO,OAAQ,UAAsB,WAAY,UAAW,CACtE,CACD,CACD,CACD;AAEF;AAEA,IAAMA,WAAU,CAAE;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AACD,MAIO;AACN,MAAK,UAAW;AACf,WAAO,sCAAC,eAAY,WAAwB;AAAA,EAC7C;AAEA,SACC,sCAAC,mBAAgB,QAChB,sCAAC,eAAY,WAAwB,CACtC;AAEF;;;ACzJA,IAAAC,UAAuB;AACvB,IAAAC,iBAAoC;AACpC,IAAAC,wBAAmC;AACnC,IAAAC,oBAA6B;AAC7B,IAAAC,iBAAiE;AACjE,IAAAC,cAAuE;AACvE,IAAAC,gBAAmB;AAOnB,IAAM,gBAAgB;AAAA,EACrB,EAAE,WAAO,kBAAI,QAAQ,WAAY,GAAG,OAAO,OAAO;AAAA,EAClD,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,EAC/B,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,EAC7B,EAAE,OAAO,OAAO,OAAO,MAAM;AAC9B;AAEA,IAAM,eAAe;AAEd,IAAM,qBAAqB,cAAe,CAAE,EAAE,MAAM,MAA0B;AACpF,QAAM,EAAE,OAAO,kBAAkB,UAAU,qBAAqB,SAAS,IAAI,aAAc,wCAAmB;AAE9G,QAAM,mBACL,oBAAoB,CAAE,cAAc,KAAM,CAAE,WAAY,OAAO,UAAU,gBAAiB;AAC3F,QAAM,CAAE,cAAc,aAAc,IAAI,mBAAmB,iBAAiB,MAAO,GAAI,IAAI,CAAE,IAAI,EAAG;AAEpG,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAU,gBAAiB;AAC7D,QAAM,CAAE,aAAa,cAAe,QAAI,yBAAoB,YAAa;AACzE,QAAM,CAAE,cAAc,eAAgB,QAAI,yBAAoB,aAAc;AAC5E,QAAM,CAAE,eAAe,gBAAiB,QAAI;AAAA,IAC3C,mBAAmB,eAAe,oBAAoB;AAAA,EACvD;AAEA,gCAAW,MAAM;AAChB,UAAM,gBACL,oBAAoB,CAAE,cAAc,KAAM,CAAE,WAAY,OAAO,UAAU,gBAAiB;AAE3F,QAAK,eAAgB;AACpB,YAAM,CAAE,OAAO,MAAO,IAAI,iBAAiB,MAAO,GAAI;AACtD,qBAAgB,SAAS,EAAG;AAC5B,sBAAiB,UAAU,EAAG;AAC9B,uBAAkB,YAAa;AAC/B,kBAAa,IAAK;AAAA,IACnB,OAAO;AACN,uBAAkB,oBAAoB,EAAG;AACzC,kBAAa,KAAM;AACnB,qBAAgB,EAAG;AACnB,sBAAiB,EAAG;AAAA,IACrB;AAAA,EACD,GAAG,CAAE,gBAAiB,CAAE;AAExB,QAAM,qBAAqB,CAAE,UAAwC;AACpE,UAAM,WAAW,MAAM,OAAO;AAC9B,UAAM,gBAAgB,aAAa;AAEnC,gBAAa,aAAc;AAC3B,qBAAkB,QAAS;AAE3B,QAAK,eAAgB;AACpB;AAAA,IACD;AAEA,wBAAqB,QAAS;AAAA,EAC/B;AACA,QAAM,0BAA0B,CAAE,UAAkD;AACnF,UAAM,WAAW,MAAM,OAAO;AAC9B,mBAAgB,QAAS;AAEzB,QAAK,YAAY,cAAe;AAC/B,0BAAqB,GAAI,QAAS,IAAK,YAAa,EAAG;AAAA,IACxD;AAAA,EACD;AAEA,QAAM,2BAA2B,CAAE,UAAkD;AACpF,UAAM,YAAY,MAAM,OAAO;AAC/B,oBAAiB,SAAU;AAE3B,QAAK,eAAe,WAAY;AAC/B,0BAAqB,GAAI,WAAY,IAAK,SAAU,EAAG;AAAA,IACxD;AAAA,EACD;AAEA,SACC,sCAAC,sBACA,sCAAC,qBAAM,WAAU,UAAS,KAAM,KAC/B,sCAAC,oBAAK,WAAS,MAAC,KAAM,GAAI,YAAW,UAAS,UAAS,YACtD,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,oBAAe,KAAO,CACxB,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,IAAK,EAAE,UAAU,SAAS;AAAA,MAC1B;AAAA,MACA,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,WAAS;AAAA;AAAA,IAEP,CAAE,GAAG,eAAe,EAAE,WAAO,kBAAI,UAAU,WAAY,GAAG,OAAO,aAAa,CAAE,EAAE;AAAA,MACnF,CAAE,EAAE,OAAO,aAAa,GAAG,MAAM,MAChC,sCAAC,kCAAa,KAAM,MAAM,OAAU,GAAG,OAAQ,OAAQ,MAAM,SAAS,MACnE,WACH;AAAA,IAEF;AAAA,EACD,CACD,CACD,GACE,YACD,sCAAC,oBAAK,WAAS,MAAC,KAAM,GAAI,YAAW,UAAS,UAAS,YACtD,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,MAAK;AAAA,MACL,WAAS;AAAA,MACT;AAAA,MACA,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,YAAa;AAAA,QACZ,gBAAgB,sCAAC,2CAAyB,UAAS,QAAO;AAAA,MAC3D;AAAA;AAAA,EACD,CACD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,MAAK;AAAA,MACL,WAAS;AAAA,MACT;AAAA,MACA,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,YAAa;AAAA,QACZ,gBAAgB,sCAAC,yCAAuB,UAAS,QAAO;AAAA,MACzD;AAAA;AAAA,EACD,CACD,CACD,CAEF,CACD;AAEF,CAAE;;;ACrJF,IAAAC,UAAuB;AACvB,IAAAC,iBAAyB;AACzB,iCAA2C;AAC3C,IAAAC,wBAAqC;AACrC,IAAAC,iBAA2B;AAC3B,IAAAC,cAAqG;AACrG,IAAAC,mBAAwE;AACxE,IAAAC,gBAAmB;;;ACPnB,IAAAC,UAAuB;AACvB,IAAAC,iBAAyB;AACzB,IAAAC,cAUO;AACP,IAAAC,gBAAmB;AAiBnB,IAAM,uBAAmB,kBAAI,6BAA6B,WAAY;AACtE,IAAM,yBAAqB;AAAA,EAC1B;AAAA,EACA;AACD;AAEA,IAAM,oCAAgC,kBAAI,6CAA6C,WAAY;AAEnG,IAAM,oCAAgC;AAAA,EACrC;AAAA,EACA;AACD;AAEA,IAAM,4BAA4B;AAE3B,IAAM,wBAAwB,CAAE,UAAuC;AAC7E,QAAM,EAAE,aAAa,UAAU,IAAI,+BAA+B;AAClE,QAAM,CAAE,SAAS,UAAW,QAAI,yBAAU,KAAM;AAEhD,QAAM,UAAU,CAAE,YAAsB;AACvC,UAAM,QAAS,OAAQ;AACvB,eAAY,MAAM,WAAY,KAAM,GAAG,yBAA0B;AAAA,EAClE;AAEA,QAAM,eAAe,YAAY;AAChC,QAAI;AACH,YAAM,WAAW,MAAM,YAAa,EAAE,4BAA4B,KAAK,CAAE;AACzE,UAAK,UAAU,MAAM,YAAY,OAAQ;AACxC,mBAAY,IAAK;AAAA,MAClB,OAAO;AACN,cAAM,QAAS,IAAK;AAAA,MACrB;AAAA,IACD,QAAQ;AACP,iBAAY,IAAK;AAAA,IAClB;AAAA,EACD;AAEA,QAAM,cAAc,EAAE,GAAG,OAAO,WAAW,cAAc,SAAS,QAAQ;AAE1E,SAAO,sCAAC,eAAc,GAAG,aAAc;AACxC;AAEA,IAAM,cAAc,CAAE,EAAE,MAAM,SAAS,cAAc,WAAW,QAAQ,MACvE,sCAAC,sBAAO,MAAc,UAAW,MAAO,SAAU,MAAM,QAAS,KAAM,KACtE,sCAAC,4BAAa,MAAO,SACpB,sCAAC,+BAAc,gBAAkB,CAClC,GACA,sCAAC,yBAAQ,GACT,sCAAC,iCACA,sCAAC,qCACE,UACD,8DACG,+BAA+B,KAAC,sCAAC,UAAG,GAAE,KAAG,6BAC5C,IAEA,kBAEF,CACD,GACA,sCAAC,iCACA,sCAAC,sBAAO,MAAO,UAAW,OAAM,aAAY,SAAU,MAAM,QAAS,KAAM,SACxE,kBAAI,UAAU,WAAY,CAC7B,GACA;AAAA,EAAC;AAAA;AAAA,IACA,MAAO;AAAA,IACP,SAAU,MAAM,aAAa;AAAA,IAC7B,SAAQ;AAAA,IACR,OAAM;AAAA,IACN,UAAW;AAAA;AAAA,EAET,YAAY,sCAAC,gCAAiB,MAAO,IAAK,QAAK,kBAAI,UAAU,WAAY;AAC5E,CACD,CACD;;;ADvFD,IAAM,YAAY;AAClB,IAAM,aAAa;AACnB,IAAM,aAAa;AACnB,IAAM,yBAAyB,0BAA2B,UAAW,SAAU,UAAW,OAAQ,UAAW,SAAU,UAAW,OAAQ,UAAW;AAErJ,IAAM,iBAAa,oBAAQ,gBAAK;AAAA;AAAA,qBAEV,sBAAuB,KAAM,sBAAuB;AAAA,oBACrD,SAAU,MAAO,SAAU;AAAA;AAAA;AAAA,IAG3C,YAAY,CAAE,MAAO,YAAY,CAAE;AAAA;AAAA;AAIxC,IAAM,+BAA2B,oBAAQ,iBAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAU/C,IAAM,cAA2B,EAAE,MAAM,SAAS;AAClD,IAAM,cAA2B,EAAE,MAAM,SAAS;AAE3C,IAAM,kBAAkB,cAAe,MAAM;AACnD,QAAM,EAAE,OAAO,SAAS,IAAI,aAAc,0CAAqB;AAC/D,QAAM,EAAE,IAAI,IAAI,IAAI,SAAS,CAAC;AAC9B,QAAM,EAAE,MAAM,YAAY,WAAW,QAAI,uCAAsB,IAAI,SAAS,IAAK;AACjF,QAAM,MAAM,YAAY,OAAO,KAAK,SAAS;AAC7C,QAAM,EAAE,MAAM,eAAe,IAAI,yBAAyB;AAC1D,QAAM,CAAE,0BAA0B,2BAA4B,QAAI,yBAAU,KAAM;AAClF,QAAM,EAAE,QAAQ,QAAI,uDAA2B;AAC/C,QAAM,mBAAmB,QAAS,gBAAiB;AAEnD,QAAM,EAAE,KAAK,QAAI,kCAAiB;AAAA,IACjC,YAAY,CAAE,KAAM;AAAA,IACpB,UAAU;AAAA,IACV,UAAU,IAAI,SAAS;AAAA,IACvB,UAAU,CAAE,uBAAwB;AACnC,eAAU;AAAA,QACT,IAAI;AAAA,UACH,QAAQ;AAAA,UACR,OAAO,mBAAmB;AAAA,QAC3B;AAAA,QACA,KAAK;AAAA,MACN,CAAE;AAAA,IACH;AAAA,EACD,CAAE;AAEF,QAAM,yBAAyB,CAAE,YAAsB;AACtD,gCAA6B,KAAM;AAEnC,QAAK,SAAU;AACd,WAAM,WAAY;AAAA,IACnB;AAAA,EACD;AAEA,QAAM,cAAc,CAAE,gBAA+B;AACpD,QAAK,CAAE,kBAAkB,gBAAgB,aAAc;AACtD,kCAA6B,IAAK;AAAA,IACnC,OAAO;AACN,WAAM,WAAY;AAAA,IACnB;AAAA,EACD;AAEA,QAAM,eAAe;AAAA,IACpB,WAAO,kBAAI,0CAA0C,WAAY;AAAA,IACjE,aACC,kEACG,kBAAI,0EAA0E,WAAY,GAC5F,sCAAC,UAAG,OACF,kBAAI,iBAAiB,WAAY,CACpC;AAAA,IAED,WAAW,CAAE;AAAA,EACd;AAEA,SACC,sCAAC,qBAAM,KAAM,GAAI,cAAW,iBAC3B,sCAAC,yBAAsB,MAAO,0BAA2B,SAAU,wBAAyB,GAC5F,sCAAC,sBACA,sCAAC,cAAW,SAAQ,cACnB,sCAAC,gCACE,aACD,sCAAC,gCAAiB,MAAK,eAAc,IAErC;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,OAAQ;AAAA,MACR,SAAM,kBAAI,eAAe,WAAY;AAAA,MACrC,IAAK,EAAE,WAAW,SAAS,OAAO,OAAO;AAAA;AAAA,EAC1C,CAEF,GACA;AAAA,IAAC;AAAA;AAAA,MACA,IAAK;AAAA,QACJ,WAAW;AAAA,UACV,iBAAiB;AAAA,QAClB;AAAA,MACD;AAAA;AAAA,IAEA,sCAAC,qBAAM,KAAM,KACZ;AAAA,MAAC;AAAA;AAAA,QACA,MAAK;AAAA,QACL,OAAM;AAAA,QACN,SAAQ;AAAA,QACR,SAAU,MAAM,YAAa,WAAY;AAAA,QACzC,cAAW;AAAA;AAAA,UAET,kBAAI,cAAc,WAAY;AAAA,IACjC,GACA,sCAAC,6BAA4B,GAAG,gBAC/B,sCAAC,cACA,sCAAC,6BAAc,aAAc,mBAAmB,UAAU,UACzD;AAAA,MAAC;AAAA;AAAA,QACA,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,WAAY,sCAAC,+BAAW;AAAA,QACxB,UAAW,mBAAmB,QAAQ;AAAA,QACtC,SAAU,MAAM,oBAAoB,YAAa,WAAY;AAAA,QAC7D,cAAW;AAAA;AAAA,UAET,kBAAI,UAAU,WAAY;AAAA,IAC7B,CACD,CACD,CACD,CACD;AAAA,EACD,CACD,CACD,CACD;AAEF,CAAE;;;AE1JF,IAAAC,UAAuB;AACvB,IAAAC,wBAAuC;AACvC,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;;;ACHnB,IAAAC,UAAuB;AACvB,IAAAC,wBAMO;AACP,IAAAC,cAAgG;AAChG,IAAAC,mBAAqC;AACrC,IAAAC,gBAAmB;;;ACVnB,iBAAyB;AAElB,IAAM,EAAE,IAAI,QAAI,qBAElB,4BAA6B;;;ACJlC,IAAAC,UAAuB;AACvB,IAAAC,wBAYO;AACP,IAAAC,cAAoC;AAa7B,IAAM,iCAAiC,cAAe,MAAM;AAClE,QAAM,EAAE,OAAO,SAAS,IAAI,aAAc,2DAAsC;AAEhF,QAAM,eAAe,CAAE,aAA6D;AACnF,UAAM,mBAAmB,yBAA0B,QAAS;AAE5D,QAAK,iBAAiB,WAAY;AACjC,uBAAiB,YAAY,yCAAmB,OAAQ,SAAS,UAAU,KAAM,GAAI,CAAE;AAAA,IACxF;AAEA,aAAU,gBAAiB;AAAA,EAC5B;AAGA,QAAM,2BAA2B,CAAE,cAA+D;AAAA,IACjG,GAAG;AAAA,IACH,MAAM,yCAAmB,OAAQ,SAAS,IAAK;AAAA,IAC/C,OAAO,yCAAmB,OAAQ,SAAS,KAAM;AAAA,IACjD,OAAO,oDAA8B;AAAA,MACpC,SAAS,MAAM;AAAA,QAAK,CAAE,EAAE,OAAO,OAAO,MACrC,4CAAsB,OAAQ;AAAA,UAC7B,OAAO,wCAAkB,OAAQ,KAAM;AAAA,UACvC,QAAQ,yCAAmB,OAAQ,MAAO;AAAA,QAC3C,CAAE;AAAA,MACH;AAAA,IACD;AAAA,EACD;AAGA,QAAM,iBAAiB,MAAM;AAC5B,QAAK,CAAE,OAAQ;AACd;AAAA,IACD;AAEA,UAAM,EAAE,MAAM,OAAO,OAAO,UAAU,IAAI;AAE1C,WAAO;AAAA,MACN,MAAM,KAAK;AAAA,MACX,OAAO,MAAM;AAAA,MACb,OAAO,MAAM,MAAM,IAAK,CAAE,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,OAAoB;AAAA,QACxE,OAAO,MAAM;AAAA,QACb,QAAQ,OAAO;AAAA,MAChB,EAAI;AAAA,MACJ,WAAW,WAAW,MAAM,MAAO,GAAI;AAAA,IACxC;AAAA,EACD;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,IAAK,EAAE,OAAO,QAAQ,SAAS,IAAI;AAAA,MACnC,OAAQ,eAAe;AAAA,MACvB,UAAW;AAAA;AAAA,EACZ;AAEF,CAAE;AAEK,IAAM,mCACZ,4DAAsC,OAAQ;AAAA,EAC7C,MAAM,yCAAmB,OAAQ,QAAS;AAAA,EAC1C,OAAO,yCAAmB,OAAQ,GAAI;AAAA,EACtC,OAAO,oDAA8B,OAAQ;AAAA,IAC5C,4CAAsB,OAAQ;AAAA,MAC7B,OAAO,wCAAkB,OAAQ,YAAa;AAAA,MAC9C,QAAQ,yCAAmB,OAAQ,CAAE;AAAA,IACtC,CAAE;AAAA,IACF,4CAAsB,OAAQ;AAAA,MAC7B,OAAO,wCAAkB,OAAQ,kBAAmB;AAAA,MACpD,QAAQ,yCAAmB,OAAQ,GAAI;AAAA,IACxC,CAAE;AAAA,EACH,CAAE;AACH,CAAE;;;ACjGH,IAAAC,UAAuB;AACvB,IAAAC,iBAAuC;AACvC,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;AASnB,IAAM,2BAAkE;AAAA,EACvE;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,SAAS,WAAY;AAAA,IAChC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,0BAAQ,UAAW,MAAO;AAAA,IAC1D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,gCAAc,UAAW,MAAO;AAAA,IAChE,aAAa;AAAA,EACd;AACD;AAEO,IAAM,mCAAmC,MAAM;AACrD,SACC,sCAAC,4BACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,4BAAmB,kBAAI,cAAc,WAAY,CAAG,CACtD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,SAAS,QAAQ,gBAAgB,YAAY,UAAU,SAAS,KAC1F,sCAAC,iBAAc,SAAU,0BAA2B,CACrD,CACD;AAEF;;;ACtCA,IAAAC,UAAuB;AACvB,IAAAC,iBAAuB;AACvB,IAAAC,wBAA8E;AAC9E,IAAAC,oBAA6B;AAC7B,IAAAC,iBAAyC;AACzC,IAAAC,cAAqD;AACrD,IAAAC,gBAAmB;AAoBnB,IAAM,4BAA4B;AAAA,EACjC,EAAE,WAAO,kBAAI,iBAAiB,WAAY,GAAG,OAAO,gBAAgB;AAAA,EACpE,EAAE,WAAO,kBAAI,eAAe,WAAY,GAAG,OAAO,cAAc;AAAA,EAChE,EAAE,WAAO,kBAAI,gBAAgB,WAAY,GAAG,OAAO,eAAe;AAAA,EAClE,EAAE,WAAO,kBAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAAA,EAC9D,EAAE,WAAO,kBAAI,YAAY,WAAY,GAAG,OAAO,WAAW;AAAA,EAC1D,EAAE,WAAO,kBAAI,aAAa,WAAY,GAAG,OAAO,YAAY;AAAA,EAC5D,EAAE,WAAO,kBAAI,iBAAiB,WAAY,GAAG,OAAO,gBAAgB;AAAA,EACpE,EAAE,WAAO,kBAAI,eAAe,WAAY,GAAG,OAAO,cAAc;AAAA,EAChE,EAAE,WAAO,kBAAI,gBAAgB,WAAY,GAAG,OAAO,eAAe;AAAA,EAClE,EAAE,WAAO,kBAAI,UAAU,WAAY,GAAG,OAAO,SAAS;AACvD;AAEO,IAAM,iCAAiC,MAAM;AACnD,QAAM,+BAA+B,aAAc,+DAA0C;AAC7F,QAAM,oBAAoB,aAAc,wCAAmB;AAE3D,QAAM,WAAW,CAAC,CAAE,6BAA6B;AACjD,QAAM,aAAS,uBAA0B,IAAK;AAE9C,QAAM,uBAAuB,CAAE,UAA2C;AACzE,UAAM,QAAQ,MAAM,OAAO,SAAS;AAEpC,QAAK,UAAU,UAAW;AACzB,mCAA6B,SAAU,EAAE,GAAG,MAAM,GAAG,KAAK,CAAE;AAAA,IAC7D,OAAO;AACN,wBAAkB,SAAU,KAAM;AAAA,IACnC;AAAA,EACD;AAEA,SACC,sCAAC,oBAAK,WAAS,MAAC,SAAU,OACzB,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,4BACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,4BAAmB,kBAAI,YAAY,WAAY,CAAG,CACpD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,SAAS,QAAQ,gBAAgB,YAAY,UAAU,SAAS,KAC1F,sCAAC,sBACA;AAAA,IAAC;AAAA;AAAA,MACA,WAAS;AAAA,MACT,MAAK;AAAA,MACL,UAAW;AAAA,MACX,UAAW,kBAAkB;AAAA,MAC7B,QACG,6BAA6B,QAAQ,WAAW,kBAAkB,UAAW;AAAA;AAAA,IAG9E,0BAA0B,IAAK,CAAE,EAAE,OAAO,MAAM,MACjD,sCAAC,kCAAa,KAAM,OAAQ,OAAQ,SAAS,MAC1C,KACH,CACC;AAAA,EACH,CACD,CACD,CACD,CACD,GACE,WACD,sCAAC,gBAAe,GAAG,gCAClB,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,oBAAK,WAAS,MAAC,SAAU,KAAM,KAAM,UACrC,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAO,OACvB;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,sCAAC,8BAAY,UAAW,QAAS;AAAA,MAC7C,WAAY;AAAA,MACZ,KAAM,CAAC,OAAO;AAAA;AAAA,EACf,CACD,CACD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAO,OACvB;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,sCAAC,8BAAY,UAAW,QAAS;AAAA,MAC7C,WAAY;AAAA,MACZ,KAAM,CAAC,OAAO;AAAA;AAAA,EACf,CACD,CACD,CACD,CACD,CACD,IACG,IACL;AAEF;;;AChHA,IAAAC,UAAuB;AACvB,IAAAC,iBAA0E;AAC1E,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;AASnB,IAAM,uBAA6D;AAAA,EAClE;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,+BAAa,UAAW,MAAO;AAAA,IAC/D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,qCAAmB,UAAW,MAAO;AAAA,IACrE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,mCAAiB,UAAW,MAAO;AAAA,IACnE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,aAAa,WAAY;AAAA,IACpC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,wBAAM,UAAW,MAAO;AAAA,IACxD,aAAa;AAAA,EACd;AACD;AAEO,IAAM,+BAA+B,MAAM;AACjD,SACC,sCAAC,4BACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,4BAAmB,kBAAI,UAAU,WAAY,CAAG,CAClD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,SAAS,QAAQ,gBAAgB,WAAW,KACtE,sCAAC,iBAAc,SAAU,sBAAuB,CACjD,CACD;AAEF;;;AClDA,IAAAC,UAAuB;AACvB,IAAAC,iBAAuB;AACvB,IAAAC,wBAAyE;AACzE,IAAAC,iBAOO;AACP,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;AAanB,IAAM,qBAAuD;AAAA,EAC5D;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,QAAQ,WAAY;AAAA,IAC/B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,8BAAY,UAAW,MAAO;AAAA,IAC9D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,SAAS,WAAY;AAAA,IAChC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,qCAAmB,UAAW,MAAO;AAAA,IACrE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,WAAW,WAAY;AAAA,IAClC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,mCAAiB,UAAW,MAAO;AAAA,IACnE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,6BAAW,UAAW,MAAO;AAAA,IAC7D,aAAa;AAAA,EACd;AACD;AAEO,IAAM,6BAA6B,MAAM;AAC/C,QAAM,8BAA8B,aAAc,0DAAqC;AACvF,QAAM,oBAAoB,aAAc,wCAAmB;AAE3D,QAAM,WAAW,CAAC,CAAE,4BAA4B;AAChD,QAAM,aAAS,uBAA0B,IAAK;AAE9C,QAAM,mBAAmB,CAAE,SAAwB;AAClD,QAAK,SAAS,UAAW;AACxB,kCAA4B,SAAU,EAAE,OAAO,MAAM,QAAQ,KAAK,CAAE;AAAA,IACrE,OAAO;AACN,wBAAkB,SAAU,IAAK;AAAA,IAClC;AAAA,EACD;AAEA,SACC,sCAAC,oBAAK,WAAS,MAAC,SAAU,OACzB,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,4BACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,4BAAmB,kBAAI,QAAQ,WAAY,CAAG,CAChD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,SAAS,QAAQ,gBAAgB,WAAW,KACtE;AAAA,IAAC;AAAA;AAAA,MACA,WAAS;AAAA,MACT,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,UAAW,kBAAkB;AAAA,MAC7B,OACG,4BAA4B,QAAQ,WAAW,kBAAkB;AAAA;AAAA,EAErE,CACD,CACD,CACD,GACE,WACD,sCAAC,gBAAe,GAAG,+BAClB,sCAAC,oBAAK,MAAI,MAAC,IAAK,IAAK,KAAM,UAC1B,sCAAC,4BACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAO,WACvB;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,sCAAC,2CAAyB,UAAW,QAAS;AAAA,MAC1D,iBAAkB,CAAE,MAAO;AAAA,MAC3B,WAAY;AAAA;AAAA,EACb,CACD,CACD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAO,YACvB;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,sCAAC,yCAAuB,UAAW,QAAS;AAAA,MACxD,iBAAkB,CAAE,MAAO;AAAA,MAC3B,WAAY;AAAA;AAAA,EACb,CACD,CACD,CACD,CACD,CACD,IACG,IACL;AAEF;;;ACnHA,IAAAC,iBAAuB;AACvB,IAAAC,wBAKO;AACP,IAAAC,cAAwB;AAajB,IAAM,2BAA2B,CAAE;AAAA,EACzC,OAAOC;AAAA,EACP,OAAO;AAAA,EACP,UAAUC;AACX,MAAgC;AAC/B,QAAM,EAAE,OAAO,YAAY,UAAU,cAAc,IAAI,aAAc,wDAAmC;AACxG,QAAM,EAAE,OAAO,YAAY,UAAU,cAAc,IAAI,aAAc,wDAAmC;AACxG,QAAM,EAAE,OAAO,eAAe,UAAU,iBAAiB,IAAI,aAAc,2DAAsC;AAEjH,QAAM,wBAAwB,MAAmB;AAChD,QAAK,YAAa;AACjB,aAAO;AAAA,IACR;AAEA,QAAK,eAAgB;AACpB,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,cAAc,aAAa,iBAAiB,QAAI,qBAAwB,sBAAsB,CAAE;AAExG,QAAM,oBAAgB,uBAAmC;AAAA,IACxD,OAAO;AAAA,IACP,OAAOD;AAAA,IACP,UAAUC;AAAA,EACX,CAAE;AAEF,QAAM,gBAAgB,CAAE,KAAoC,UAAsD;AACjH,QAAK,OAAQ;AACZ,oBAAc,QAAS,GAAI,IAAI;AAAA,IAChC;AAAA,EACD;AAEA,QAAM,cAAc,CAAE,GAAyB,YAA0B;AACxE,YAAS,SAAU;AAAA,MAClB,KAAK;AACJ,sBAAe,cAAc,QAAQ,KAAM;AAE3C,sBAAe,SAAS,UAAW;AACnC,sBAAe,YAAY,aAAc;AAEzC;AAAA,MAED,KAAK;AACJ,yBAAkB,cAAc,QAAQ,QAAS;AAEjD,sBAAe,SAAS,UAAW;AACnC,sBAAe,SAAS,UAAW;AAEnC;AAAA,MAED,KAAK;AACJ,sBAAe,cAAc,QAAQ,KAAM;AAE3C,sBAAe,SAAS,UAAW;AACnC,sBAAe,YAAY,aAAc;AAAA,IAC3C;AAEA,WAAO,aAAa,EAAE,SAAU,GAAG,OAAQ;AAAA,EAC5C;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,cAAc,OAAQ,EAAE,GAAG,aAAa,GAAG,UAAU,YAAY;AAAA,EAClE;AACD;;;APjDA,IAAM,yCAAyC;AAExC,IAAM,gCAAgE,yDAAmC;AAAA,EAC/G;AAAA,IACC,OAAO,wCAAkB,OAAQ,sCAAuC;AAAA,EACzE;AACD;AAEO,IAAM,8BAA8B,OAAwC;AAAA,EAClF,QAAQ;AAAA,EACR,OAAO;AAAA,IACN,OAAO;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,QACN,KAAK;AAAA,UACJ,QAAQ;AAAA,UACR,OAAO;AAAA,YACN,KAAK;AAAA,cACJ,QAAQ;AAAA,cACR,OAAO,IAAI;AAAA,YACZ;AAAA,YACA,IAAI;AAAA,UACL;AAAA,QACD;AAAA,QACA,MAAM;AAAA,UACL,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;AAEA,IAAM,8BAA8B;AAAA,EACnC,EAAE,WAAO,kBAAI,yBAAyB,WAAY,GAAG,OAAO,YAAY;AAAA,EACxE,EAAE,WAAO,kBAAI,sBAAsB,WAAY,GAAG,OAAO,SAAS;AAAA,EAClE,EAAE,WAAO,kBAAI,qBAAqB,WAAY,GAAG,OAAO,QAAQ;AAAA,EAChE,EAAE,WAAO,kBAAI,QAAQ,WAAY,GAAG,OAAO,OAAO;AACnD;AAEO,IAAM,mCAAmC,cAAe,MAAM;AACpE,QAAM,EAAE,UAAU,OAAO,eAAe,SAAS,IAAI,aAAc,mDAA8B;AAEjG,SACC,sCAAC,gBAAa,UAAsB,OAAQ,eAAgB,YAC3D;AAAA,IAAC;AAAA;AAAA,MACA,SAAU,4BAA4B;AAAA,MACtC,cAAe;AAAA;AAAA,IAEf,sCAAC,kBAAe,WAAQ,kBAAI,WAAW,WAAY,KAClD,sCAAC,wBAAqB,cAAe,GAAI,CAC1C;AAAA,IACA,sCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA,MAAOC;AAAA,QACP,OAAQC;AAAA,QACR,SACC,8DACC,sCAAC,yBAAoB,GACrB,sCAAC,uBAAkB,GACnB,sCAAC,sBAAiB,CACnB;AAAA;AAAA,IAEF,CACD;AAAA,IACA,sCAAC,uBACA,sCAAC,iBAAY,CACd;AAAA,EACD,CACD;AAEF,CAAE;AAEK,IAAM,cAAc,MAAM;AAChC,QAAM,EAAE,cAAc,aAAa,iBAAiB,IAAI,yBAA0B;AAAA,IACjF,OAAO,4BAA4B,EAAE;AAAA,IACrC,OAAO,8BAA8B;AAAA,IACrC,UAAU,iCAAiC;AAAA,EAC5C,CAAE;AAEF,QAAM,EAAE,OAAO,IAAI,mBAAmB;AAEtC,SACC,sCAAC,mBAAI,IAAK,EAAE,OAAO,OAAO,KACzB,sCAAC,mBAAI,IAAK,EAAE,cAAc,GAAG,aAAa,UAAU,KACnD;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,SAAQ;AAAA,MACN,GAAG,aAAa;AAAA,MAClB,kBAAa,kBAAI,sBAAsB,WAAY;AAAA;AAAA,IAEnD,sCAAC,mBAAI,WAAQ,kBAAI,SAAS,WAAY,GAAM,GAAG,YAAa,OAAQ,GAAI;AAAA,IACxE,sCAAC,mBAAI,WAAQ,kBAAI,YAAY,WAAY,GAAM,GAAG,YAAa,UAAW,GAAI;AAAA,IAC9E,sCAAC,mBAAI,WAAQ,kBAAI,SAAS,WAAY,GAAM,GAAG,YAAa,OAAQ,GAAI;AAAA,EACzE,CACD,GACA,sCAAC,wBAAS,IAAK,EAAE,GAAG,IAAI,GAAM,GAAG,iBAAkB,OAAQ,KAC1D,sCAAC,sBACA,sCAAC,yBAAoB,CACtB,CACD,GACA,sCAAC,wBAAS,IAAK,EAAE,GAAG,IAAI,GAAM,GAAG,iBAAkB,UAAW,KAC7D,sCAAC,oCAA+B,CACjC,GACA,sCAAC,wBAAS,IAAK,EAAE,GAAG,IAAI,GAAM,GAAG,iBAAkB,OAAQ,KAC1D,sCAAC,sBACA,sCAAC,uBAAoB,UAAW,QAAS,CAC1C,CACD,CACD;AAEF;AAEA,IAAMD,YAAW,CAAE,EAAE,MAAM,MAAuC;AACjE,UAAS,MAAM,QAAS;AAAA,IACvB,KAAK;AACJ,aAAO,sCAAC,iBAAc,OAA0C;AAAA,IACjE,KAAK;AACJ,aAAO,sCAAC,iBAAc,OAAkD;AAAA,IACzE,KAAK;AACJ,aAAO,sCAAC,oBAAiB,OAAkD;AAAA,IAC5E;AACC,aAAO;AAAA,EACT;AACD;AAEA,IAAM,mBAAmB,CAAE,SAA0C;AACpE,MAAK,MAAM,OAAO,OAAO,OAAQ;AAChC,WAAO,KAAK,MAAM,MAAM;AAAA,EACzB;AAEA,SAAO;AACR;AAEA,IAAM,gBAAgB,CAAE,EAAE,OAAO,KAAK,MAAkD;AACvF,QAAM,QAAQ,iBAAkB,IAAK;AACrC,SAAO,sCAACE,+BAAA,EAA6B,MAAK,WAAU,WAAU,QAAO,OAAQ,OAAQ;AACtF;AAEA,IAAM,gBAAgB,CAAE,EAAE,MAAM,MAA0C;AACzE,QAAM,EAAE,SAAS,IAAI,SAAU,KAAM;AAErC,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,IAAK,CAAE,WAAoB;AAAA,QAC1B,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,cAAc,GAAI,MAAM,MAAM,eAAe,CAAE;AAAA,QAC/C,SAAS,aAAc,MAAM,QAAQ,OAAO,QAAS;AAAA,MACtD;AAAA;AAAA,EACD;AAEF;AAEA,IAAM,mBAAmB,CAAE,EAAE,MAAM,MAAkD;AACpF,QAAM,WAAW,iBAAkB,KAAM;AAEzC,SAAO,sCAACA,+BAAA,EAA6B,MAAK,WAAU,WAAU,QAAO,OAAQ,UAAW;AACzF;AAEO,IAAMD,aAAY,CAAE,EAAE,MAAM,MAAuC;AACzE,UAAS,MAAM,QAAS;AAAA,IACvB,KAAK;AACJ,aAAO,sCAAC,kBAAe,OAA0C;AAAA,IAClE,KAAK;AACJ,aAAO,sCAAC,kBAAe,OAAkD;AAAA,IAC1E,KAAK;AACJ,aAAO,sCAAC,qBAAkB,OAAkD;AAAA,IAC7E;AACC,aAAO;AAAA,EACT;AACD;AAEA,IAAM,iBAAiB,CAAE,EAAE,OAAO,KAAK,MAAkD;AACxF,QAAM,QAAQ,iBAAkB,IAAK;AACrC,SAAO,sCAAC,cAAO,KAAO;AACvB;AAEA,IAAM,iBAAiB,CAAE,EAAE,MAAM,MAA0C;AAC1E,QAAM,EAAE,WAAW,IAAI,SAAU,KAAM;AAEvC,SAAO,sCAAC,cAAO,UAAY;AAC5B;AAEA,IAAM,oBAAoB,CAAE,EAAE,MAAM,MAAkD;AACrF,MAAK,MAAM,MAAM,KAAK,UAAU,UAAW;AAC1C,WAAO,sCAAC,kBAAO,kBAAI,mBAAmB,WAAY,CAAG;AAAA,EACtD;AAEA,SAAO,sCAAC,kBAAO,kBAAI,mBAAmB,WAAY,CAAG;AACtD;AAEA,IAAM,sBAAsB,CAAE,EAAE,SAAS,MAAyC;AACjF,QAAM,cAAc,aAAc,wDAAmC;AACrE,SACC,sCAAC,gBAAe,GAAG,eAClB,sCAAC,mBAAgB,MAAO,WACvB,sCAAC,gBAAa,UAAsB,CACrC,CACD;AAEF;AAEA,IAAM,sBAAsB,MAAM;AACjC,QAAM,cAAc,aAAc,wDAAmC;AAErE,SACC,sCAAC,gBAAe,GAAG,eAClB,sCAAC,mBAAgB,MAAO,WACvB,sCAAC,gBAAa,OAAQ,6BAA8B,CACrD,GACA,sCAAC,mBAAgB,MAAO,cACvB,sCAAC,oCAA+B,CACjC,GACA,sCAAC,mBAAgB,MAAO,YACvB,sCAAC,kCAA6B,CAC/B,GACA,sCAAC,mBAAgB,MAAO,UACvB,sCAAC,gCAA2B,CAC7B,GACA,sCAAC,mBAAgB,MAAO,gBACvB,sCAAC,sCAAiC,CACnC,CACD;AAEF;AAEA,IAAMC,oCAA+B,oBAAQ,kCAAuB,EAAG,CAAE,EAAE,MAAM,OAAS;AAAA,EACzF,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc,GAAI,MAAM,MAAM,eAAe,CAAE;AAChD,EAAI;AAEJ,IAAM,WAAW,CAAE,UAAmC;AACrD,MAAI,YACH,WAA0B;AAE3B,QAAM,WAAW,OAAO,MAAM,MAAM,OAAO,IAAI;AAC/C,QAAM,EAAE,MAAM,WAAW,QAAI,uCAAsB,SAAS,IAAI,SAAS,IAAK;AAE9E,MAAK,SAAS,IAAK;AAClB,UAAM,yBAAyB,6BAA8B,YAAY,QAAS;AAClF,iBAAa,GAAI,YAAY,KAAM,GAAI,sBAAuB,MAAM;AACpE,eAAW,YAAY,OAAO;AAAA,EAC/B,WAAY,SAAS,KAAM;AAC1B,eAAW,SAAS,IAAI;AACxB,iBAAa,UAAU,UAAW,SAAS,YAAa,GAAI,IAAI,CAAE,KAAK;AAAA,EACxE;AAEA,SAAO,EAAE,YAAY,SAAS;AAC/B;AAEA,IAAM,+BAA+B,CAAE,aAAuB;AAC7D,MAAK,CAAE,UAAW;AACjB,WAAO;AAAA,EACR;AAGA,QAAM,YAAY,SAAS,UAAW,SAAS,YAAa,GAAI,IAAI,CAAE;AAEtE,SAAO,IAAK,SAAU;AACvB;AAEA,IAAM,mBAAmB,CAAE,UAA2C;AACrE,QAAM,WAAW,MAAM;AAEvB,QAAM,QAAQ,SAAS,MAAM,OAC1B,IAAK,CAAE,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,MAAkB,GAAI,MAAM,KAAM,IAAK,OAAO,SAAS,CAAE,GAAI,GAC/F,KAAM,GAAI;AAEb,MAAK,SAAS,KAAK,UAAU,UAAW;AACvC,WAAO,mBAAoB,SAAS,MAAM,KAAM,QAAS,KAAM;AAAA,EAChE;AAEA,SAAO,6BAA8B,SAAS,UAAU,KAAM,KAAM,KAAM;AAC3E;;;AD/SA,IAAM,cAAc;AAAA,EACnB,EAAE,WAAO,kBAAI,gBAAgB,WAAY,GAAG,OAAO,aAAa;AAAA,EAChE,EAAE,WAAO,kBAAI,iBAAiB,WAAY,GAAG,OAAO,cAAc;AAAA,EAClE,EAAE,WAAO,kBAAI,iBAAiB,WAAY,GAAG,OAAO,cAAc;AAAA,EAClE,EAAE,WAAO,kBAAI,QAAQ,WAAY,GAAG,OAAO,OAAO;AACnD;AAEA,IAAM,iBAAa,kBAAI,SAAS,WAAY;AAC5C,IAAM,gBAAY,kBAAI,YAAY,WAAY;AAEvC,IAAM,oBAAoB,cAAe,MAAM;AACrD,QAAM,cAAc,aAAc,4CAAuB;AAEzD,SACC,sCAAC,gBAAe,GAAG,eAClB,sCAAC,mBAAgB,MAAK,wBACrB,sCAAC,sCAAiC,CACnC,GACA,sCAAC,0BAAqB,GACtB,sCAAC,yBAAoB,CACtB;AAEF,CAAE;AAEF,IAAM,uBAAuB,MAAM;AAClC,SACC,sCAAC,mBAAgB,MAAK,WACrB,sCAAC,oBAAK,WAAS,MAAC,KAAM,GAAI,YAAW,UAAS,UAAS,YACtD,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,oBAAe,UAAY,CAC7B,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,kBAAa,CACf,CACD,CACD;AAEF;AAEA,IAAM,sBAAsB,MAAM;AACjC,SACC,sCAAC,mBAAgB,MAAK,UACrB,sCAAC,oBAAK,WAAS,MAAC,KAAM,GAAI,YAAW,UAAS,UAAS,YACtD,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,oBAAe,SAAW,CAC5B,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,iBAAc,SAAU,aAAc,CACxC,CACD,CACD;AAEF;;;AShEA,IAAAC,UAAuB;AACvB,IAAAC,iBAAwB;AACxB,IAAAC,wBAAyD;AACzD,IAAAC,cAAoB;AAmCpB,IAAM,oBAAoB;AAEnB,IAAM,oBAAoB;AAAA,EAChC,CAAE;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,MAA+B;AAC9B,UAAM,EAAE,cAAc,mBAAmB,gBAAAC,gBAAe,IAAI;AAE5D,QAAK,CAAE,mBAAoB;AAC1B,aAAO;AAAA,IACR;AAEA,UAAMC,8BAAyB;AAAA,MAC9B,UAAM,4CAAsB,kBAAkB,KAAK,kBAAkB,QAAQ,OAAQ;AAAA,MACrF,CAAE,kBAAkB,KAAK,kBAAkB,QAAQ,OAAQ;AAAA,IAC5D;AAEA,UAAM,mBAAe;AAAA,MACpB,OAAQ;AAAA,QACP,GAAG;AAAA,QACH,aAAa,eAAe;AAAA,QAC5B,cAAc,gBAAgB;AAAA,MAC/B;AAAA,MACA,CAAE,oBAAoB,aAAa,YAAa;AAAA,IACjD;AAEA,UAAM,EAAE,UAAU,OAAO,SAAS,IAAI,aAAcA,uBAAuB;AAE3E,WACC,sCAAC,gBAAa,UAAsB,OAAgB,YACnD,sCAAC,yBAAyB,UAAzB,EAAkC,OAAQ,gBAC1C;AAAA,MAAC;AAAA;AAAA,QACA,SAAU,kBAAkB,OAAQ,iBAAiB,IAAK;AAAA,QAC1D,cAAeA;AAAA,QACf,gBAAiBD;AAAA;AAAA,MAEjB,sCAAC,kBAAe,OAAQ,iBACvB;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACL,cAAe;AAAA,UACf,WAAY;AAAA;AAAA,MACb,CACD;AAAA,MACA,sCAAC,kBAAe,YAAa,SAC5B;AAAA,QAAC;AAAA;AAAA,UACA,MAAOE;AAAA,UACP,OAAQC;AAAA,UACR,SACC,8DACG,iBAAiB,sCAAC,yBAAoB,GACtC,cAAc,sCAAC,uBAAkB,GACnC,sCAAC,sBAAiB,CACnB;AAAA;AAAA,MAEF,CACD;AAAA,MACA,sCAAC,uBACA,sCAACC,UAAA,IAAQ,CACV;AAAA,IACD,CACD,CACD;AAAA,EAEF;AACD;AAGA,IAAMF,YAAW,MAAM,4DAAE;AAEzB,IAAME,WAAU,MAAM;AACrB,QAAM,EAAE,WAAW,cAAc,QAAQ,CAAC,EAAE,IAAI,4BAA4B;AAC5E,SACC,sCAAC,kBAAe,GAAI,OACnB,sCAAC,4BACA,sCAAC,gBAAe,GAAG,OAAQ,CAC5B,CACD;AAEF;AAEA,IAAM,cAAc,CAAE,UAAkB,SAAqC;AAC5E,MAAK,CAAE,MAAO;AACb,WAAO;AAAA,EACR;AAEA,SAAO,SAAS,QAAS,mBAAmB,CAAE,GAAG,SAAkB;AAClE,UAAM,QAAQ,eAAgB,MAAM,IAAK;AAEzC,QAAK,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAE,MAAM,QAAS,KAAM,GAAI;AAC9E,UAAK,UAAU,SAAS,MAAM,MAAO;AACpC,eAAO,MAAM;AAAA,MACd;AAEA,aAAO,KAAK,UAAW,KAAM;AAAA,IAC9B;AAEA,QAAK,MAAM,QAAS,KAAM,GAAI;AAC7B,aAAO,MAAM,KAAM,IAAK;AAAA,IACzB;AAEA,WAAO,OAAQ,SAAS,EAAG;AAAA,EAC5B,CAAE;AACH;AAEA,IAAM,iBAAiB,CAAE,KAAgC,SAAkB;AAC1E,MAAI,YAAuC,CAAC;AAC5C,QAAM,WAAW,KAAK,MAAO,GAAI;AACjC,QAAM,MAAM,SAAS,MAAO,EAAG,EAAG,CAAE;AAEpC,MAAI,QAAiB,SAAS,OAAQ,CAAE,SAAoC,YAAY,iBAAkB;AACzG,QAAK,iBAAiB,SAAS,SAAS,GAAI;AAC3C,kBAAY;AAAA,IACb;AAEA,QAAK,WAAW,OAAO,YAAY,UAAW;AAC7C,aAAO,QAAS,UAAW;AAAA,IAC5B;AAEA,WAAO,CAAC;AAAA,EACT,GAAG,GAAI;AAEP,UAAQ,CAAC,CAAE,QAAQ,QAAQ;AAC3B,QAAM,WAAW,WAAW;AAC5B,QAAM,YAAY,WAAW;AAC7B,QAAM,+BAA+B,QAAQ,UAAU,aAAa,UAAU,WAAW,SAAS;AAElG,MAAK,CAAE,8BAA+B;AACrC,WAAO;AAAA,EACR;AAEA,SAAO,WAAW,OAAO,KAAK;AAC/B;AAEA,IAAM,eAAe,CAAE,QAAkB;AACxC,MAAK,OAAO,QAAQ,UAAW;AAC9B,WAAO,IAAI,KAAK,MAAM;AAAA,EACvB;AAEA,MAAK,OAAO,MAAO,GAAI,GAAI;AAC1B,WAAO;AAAA,EACR;AAEA,MAAK,MAAM,QAAS,GAAI,GAAI;AAC3B,WAAO,IAAI,WAAW;AAAA,EACvB;AAEA,MAAK,OAAO,QAAQ,YAAY,QAAQ,MAAO;AAC9C,WAAO,OAAO,KAAM,GAAI,EAAE,WAAW;AAAA,EACtC;AAEA,SAAO;AACR;AAEA,IAAM,wBAAwB,CAAE,SAAiB,SAA8C;AAC9F,QAAM,gBAAgB,iBAAkB,OAAQ;AAEhD,QAAM,SAAS,cAAc,IAAK,CAAE,SAAU,eAAgB,MAAM,IAAK,CAAE;AAE3E,MAAK,OAAO,WAAW,GAAI;AAC1B,WAAO;AAAA,EACR;AAEA,MAAK,OAAO,KAAM,CAAE,UAAW,UAAU,QAAQ,UAAU,MAAU,GAAI;AACxE,WAAO;AAAA,EACR;AAEA,MAAK,OAAO,MAAO,YAAa,GAAI;AACnC,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAEA,IAAM,eAAe,CAAE,YAAqB,oBAAsC;AACjF,MAAK,YAAa;AACjB,WAAO;AAAA,EACR;AACA,SAAO,kBAAkB,kBAAkB;AAC5C;AAEA,IAAMD,aAAY,CAAE,EAAE,MAAM,MAA6C;AACxE,QAAM,EAAE,aAAa,cAAc,OAAO,WAAW,IAAI,4BAA4B;AACrF,QAAM,kBAAkB,sBAAuB,cAAc,KAAM;AACnE,QAAM,QAAQ,kBAAkB,cAAc,YAAa,cAAc,KAAM;AAC/E,QAAM,aAAa,CAAC,CAAE,YAAY;AAClC,QAAM,QAAQ,aAAc,YAAY,eAAgB;AAExD,SACC,sCAAC,mBAAI,WAAU,QAAO,SACnB,KACH;AAEF;AAEA,IAAM,mBAAmB,CAAE,YAAqB;AAC/C,QAAM,aAAa,QAAQ,MAAO,iBAAkB,GAAG,IAAK,CAAE,UAAW,MAAM,MAAO,GAAG,EAAG,CAAE,KAAK,CAAC;AAEpG,SAAO;AACR;;;ACpPA,IAAAE,UAAuB;AACvB,IAAAC,iBAAkC;AAClC,IAAAC,wBAOO;AACP,IAAAC,cAAgD;AAChD,IAAAC,gBAAmB;;;ACXZ,IAAM,iBAAiB,CAAE,UAA2B;AAC1D,QAAM,eAAyC;AAAA,IAC9C,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACN;AAEA,SAAO,MAAM,QAAS,YAAY,CAAE,SAAU,aAAc,IAAK,KAAK,IAAK;AAC5E;;;ADkBA,IAAM,uBAAuB,CAAE,eAAiC;AAC/D,QAAM,qBAAqB;AAE3B,MAAK,CAAE,cAAc,OAAO,eAAe,YAAY,mBAAmB,WAAW,WAAY;AAChG,WAAO;AAAA,EACR;AAEA,SAAO,mBAAmB,SAAS;AACpC;AAEO,IAAM,kBAAkB,cAAe,CAAE,QAA8B,CAAC,MAAO;AACrF,QAAM,EAAE,OAAO,UAAU,GAAG,YAAY,IAAI,aAAc,0CAAqB;AAC/E,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAoB,EAAG;AACzD,QAAM,CAAE,YAAY,aAAc,QAAI,yBAAoB,EAAG;AAE7D,QAAM,CAAE,cAAc,eAAgB,QAAI,yBAAU;AAAA,IACnD,KAAK,qBAAsB,OAAO,GAAI;AAAA,IACtC,OAAO,qBAAsB,OAAO,KAAM;AAAA,EAC3C,CAAE;AAEF,QAAM,WAAW,MAAM,eAAW,kBAAI,OAAO,WAAY;AACzD,QAAM,aAAa,MAAM,iBAAa,kBAAI,SAAS,WAAY;AAC/D,QAAM,EAAE,WAAW,YAAY,IAAI,MAAM,gBAAiB,aAAa,KAAK,aAAa,KAAM,KAAK;AAAA,IACnG,WAAW;AAAA,IACX,aAAa;AAAA,EACd;AAEA,QAAM,CAAE,UAAU,YAAY,MAAO,QAAI;AAAA,IACxC,MAAM;AAAA,MACL,MAAM,WAAW,IAAI,OAAQ,MAAM,QAAS,IAAI;AAAA,MAChD,MAAM,aAAa,IAAI,OAAQ,MAAM,UAAW,IAAI;AAAA,MACpD,MAAM,8BAA0B,kBAAI,kBAAkB,WAAY;AAAA,IACnE;AAAA,IACA,CAAE,MAAM,UAAU,MAAM,YAAY,MAAM,sBAAuB;AAAA,EAClE;AAEA,QAAM,WAAW,CAAE,UAAkB,cAAgC;AACpE,QAAK,cAAc,SAAS,UAAW;AACtC,YAAM,UAAU,SAAS,KAAM,QAAS;AACxC,kBAAa,UAAU,KAAK,MAAO;AAEnC,aAAO;AAAA,IACR,WAAY,cAAc,WAAW,YAAa;AACjD,YAAM,UAAU,WAAW,KAAM,QAAS;AAC1C,oBAAe,UAAU,KAAK,MAAO;AAErC,aAAO;AAAA,IACR;AAEA,WAAO;AAAA,EACR;AAEA,QAAM,eAAe,CAAE,UAAiB,SAAyB,SAA+B;AAC/F,UAAM,YAAY,MAAM;AAExB,QAAK,CAAE,WAAY;AAClB;AAAA,IACD;AAEA,UAAM,kBAAkB,SAAU,SAAU;AAE5C,YAAK,uCAAiB,eAAgB,KAAK,gBAAgB,WAAW,WAAY;AACjF,eAAU;AAAA,QACT,GAAG;AAAA,QACH,CAAE,SAAU,GAAG;AAAA,MAChB,CAAE;AAEF;AAAA,IACD;AAEA,UAAM,iBAAiB,yCAAmB,QAAS,eAAgB;AAEnE,oBAAiB,CAAE,UAAY;AAAA,MAC9B,GAAG;AAAA,MACH,CAAE,SAAU,GAAG;AAAA,IAChB,EAAI;AAEJ,QAAK,kBAAkB,SAAU,gBAAgB,SAAU,GAAI;AAC9D,eAAU;AAAA,QACT,GAAG;AAAA,QACH,CAAE,SAAU,GAAG;AAAA,MAChB,CAAE;AAAA,IACH,OAAO;AACN,eAAU;AAAA,QACT,GAAG;AAAA,QACH,CAAE,SAAU,GAAG;AAAA,UACd,OAAO;AAAA,UACP,QAAQ;AAAA,QACT;AAAA,MACD,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SACC,sCAAC,gBAAe,GAAG,aAAc,OAAgB,UAAW,gBAC3D,sCAAC,oBAAK,WAAS,MAAC,KAAM,OACrB,sCAAC,oBAAK,MAAI,MAAC,IAAK,IAAK,SAAQ,QAAO,eAAc,YACjD,sCAAC,yBAAU,MAAK,QAAO,IAAK,EAAE,IAAI,EAAE,KACjC,QACH,GACA,sCAAC,mBAAgB,MAAO,SACvB;AAAA,IAAC;AAAA;AAAA,MACA,YAAa,MAAM,aAAa,eAAgB,aAAa,GAAI,IAAI,aAAa;AAAA,MAClF,OAAQ,CAAC,CAAE;AAAA,MACX,YAAa;AAAA;AAAA,EACd,CACD,GACE,CAAC,CAAE,YAAY,sCAAC,8BAAe,OAAK,QAAG,QAAU,CACpD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,IAAK,SAAQ,QAAO,eAAc,YACjD,sCAAC,yBAAU,MAAK,QAAO,IAAK,EAAE,IAAI,EAAE,KACjC,UACH,GACA,sCAAC,mBAAgB,MAAO,WACvB;AAAA,IAAC;AAAA;AAAA,MACA,YAAa,MAAM,aAAa,eAAgB,aAAa,KAAM,IAAI,aAAa;AAAA,MACpF,OAAQ,CAAC,CAAE;AAAA,MACX,eAAgB,CAAC,CAAE;AAAA,MACnB,YAAa;AAAA;AAAA,EACd,CACD,GACE,CAAC,CAAE,cAAc,sCAAC,8BAAe,OAAK,QAAG,UAAY,CACxD,CACD,CACD;AAEF,CAAE;;;AE1JF,IAAAC,UAAuB;AACvB,IAAAC,wBAAyD;AACzD,IAAAC,oBAA6B;AAC7B,IAAAC,iBAAyC;AACzC,IAAAC,cAAqD;AACrD,IAAAC,gBAAmB;AAkBnB,IAAM,kBAAkB;AAAA,EACvB,EAAE,WAAO,kBAAI,iBAAiB,WAAY,GAAG,OAAO,gBAAgB;AAAA,EACpE,EAAE,WAAO,kBAAI,eAAe,WAAY,GAAG,OAAO,cAAc;AAAA,EAChE,EAAE,WAAO,kBAAI,gBAAgB,WAAY,GAAG,OAAO,eAAe;AAAA,EAClE,EAAE,WAAO,kBAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAAA,EAC9D,EAAE,WAAO,kBAAI,YAAY,WAAY,GAAG,OAAO,WAAW;AAAA,EAC1D,EAAE,WAAO,kBAAI,aAAa,WAAY,GAAG,OAAO,YAAY;AAAA,EAC5D,EAAE,WAAO,kBAAI,iBAAiB,WAAY,GAAG,OAAO,gBAAgB;AAAA,EACpE,EAAE,WAAO,kBAAI,eAAe,WAAY,GAAG,OAAO,cAAc;AAAA,EAChE,EAAE,WAAO,kBAAI,gBAAgB,WAAY,GAAG,OAAO,eAAe;AAAA,EAClE,EAAE,WAAO,kBAAI,UAAU,WAAY,GAAG,OAAO,SAAS;AACvD;AAEO,IAAM,kBAAkB,MAAM;AACpC,QAAM,kBAAkB,aAAc,0CAAqB;AAC3D,QAAM,oBAAoB,aAAc,wCAAmB;AAE3D,QAAM,WAAW,CAAC,CAAE,gBAAgB;AAEpC,QAAM,uBAAuB,CAAE,UAA2C;AACzE,UAAM,QAAQ,MAAM,OAAO,SAAS;AAEpC,QAAK,UAAU,UAAW;AACzB,sBAAgB,SAAU,EAAE,GAAG,MAAM,GAAG,KAAK,CAAE;AAAA,IAChD,OAAO;AACN,wBAAkB,SAAU,KAAM;AAAA,IACnC;AAAA,EACD;AAEA,SACC,sCAAC,oBAAK,WAAS,MAAC,SAAU,OACzB,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,oBAAK,WAAS,MAAC,KAAM,GAAI,YAAW,UAAS,UAAS,YACtD,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,4BAAmB,kBAAI,mBAAmB,WAAY,CAAG,CAC3D,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,UAAU,SAAS,KAC7C;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,UAAW,kBAAkB;AAAA,MAC7B,QAAU,gBAAgB,QAAQ,WAAW,kBAAkB,UAAW;AAAA,MAC1E,UAAW;AAAA,MACX,WAAS;AAAA;AAAA,IAEP,gBAAgB,IAAK,CAAE,EAAE,OAAO,MAAM,MACvC,sCAAC,kCAAa,KAAM,OAAQ,OAAQ,SAAS,MAC1C,KACH,CACC;AAAA,EACH,CACD,CACD,CACD,GACE,YACD,sCAAC,gBAAe,GAAG,mBAClB,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,oBAAK,WAAS,MAAC,SAAU,OACzB,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAO,OACvB;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,sCAAC,8BAAY,UAAW,QAAS;AAAA,MAC7C,KAAM,CAAC,OAAO;AAAA;AAAA,EACf,CACD,CACD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAO,OACvB;AAAA,IAAC;AAAA;AAAA,MACA,WAAY,sCAAC,8BAAY,UAAW,QAAS;AAAA,MAC7C,KAAM,CAAC,OAAO;AAAA;AAAA,EACf,CACD,CACD,CACD,CACD,CACD,CAEF;AAEF;;;ACtGA,IAAAC,UAAuB;AACvB,IAAAC,iBAAuB;AACvB,IAAAC,wBAAqF;AACrF,IAAAC,iBAAsD;AACtD,IAAAC,cAAkG;AAClG,IAAAC,gBAAmB;;;ACLnB,IAAAC,wBAMO;AAIA,IAAM,wBAA6D;AAAA,EACzE,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACP;AAEO,IAAM,gBAAgB;AAAA,EAC5B,MAAM;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,OAAO;AAAA,EACP,QAAQ;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,EACP;AAAA,EACA,MAAM;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,EACP;AACD;AAEO,IAAM,wBAAyD;AAAA,EACrE,QAAQ,sBAAsB;AAAA,EAC9B,OAAO;AAAA,IACN,GAAG,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,cAAc,KAAK,MAAM,MAAM,cAAc,KAAK,KAAa,EAAE;AAAA,IACrG,GAAG,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,cAAc,KAAK,MAAM,MAAM,cAAc,KAAK,KAAa,EAAE;AAAA,IACrG,GAAG,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,cAAc,KAAK,MAAM,MAAM,cAAc,KAAK,KAAa,EAAE;AAAA,EACtG;AACD;AAEO,IAAM,oBAAoB,iDAA2B,OAAQ;AAAA,EACnE,GAAG,yCAAmB,OAAQ,cAAc,KAAM;AAAA,EAClD,GAAG,yCAAmB,OAAQ,cAAc,KAAM;AAAA,EAClD,GAAG,yCAAmB,OAAQ,cAAc,KAAM;AACnD,CAAE;AAEK,IAAM,qBAAqB,kDAA4B,OAAQ;AAAA,EACrE,GAAG,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,cAAc,OAAO,MAAM,MAAM,cAAc,OAAO,KAAc,EAAE;AAAA,EAC1G,GAAG,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,cAAc,OAAO,MAAM,MAAM,cAAc,OAAO,KAAc,EAAE;AAAA,EAC1G,GAAG,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,cAAc,OAAO,MAAM,MAAM,cAAc,OAAO,KAAc,EAAE;AAC3G,CAAE;AAEK,IAAM,mBAAmB,gDAA0B,OAAQ;AAAA,EACjE,GAAG,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,cAAc,KAAK,MAAM,MAAM,cAAc,KAAK,KAAc,EAAE;AAAA,EACtG,GAAG,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,cAAc,KAAK,MAAM,MAAM,cAAc,KAAK,KAAc,EAAE;AACvG,CAAE;;;ACzDF,IAAAC,UAAuB;AACvB,IAAAC,cAAyC;AACzC,IAAAC,gBAAmB;;;ACFnB,IAAAC,UAAuB;AACvB,IAAAC,iBAAuC;AACvC,IAAAC,wBAA0C;AAC1C,IAAAC,iBAAsE;AACtE,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;;;ACJnB,IAAAC,UAAuB;AACvB,IAAAC,cAAqB;AAiBd,IAAM,UAAU,CAAE,EAAE,OAAO,MAAM,WAAW,WAAW,OAAAC,QAAO,UAAU,QAAQ,MAA8B;AACpH,QAAM,SAAS,MAAM,QAAS,QAAQ,GAAI,EAAE,YAAY;AACxD,SACC,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,wBAAqB,KAAM,aAC3B,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,gBAAa,SAAU,UAAW,KAAO,CAC3C,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,QAChB;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAQA;AAAA,MACR;AAAA,MACA,KAAM,CAAC,OAAO;AAAA,MACd,IAAK;AAAA;AAAA,EACN,CACD,CACD,CACD,CACD;AAEF;;;AD5BA,IAAM,mBAA8B;AAAA,EACnC;AAAA,IACC,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,MAAM;AAAA,IACN,WAAW,sCAAC,iCAAe,UAAW,QAAS;AAAA,IAC/C,OAAO,CAAE,MAAM,KAAK,MAAM,OAAO,IAAK;AAAA,EACvC;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,MAAM;AAAA,IACN,WAAW,sCAAC,qCAAmB,UAAW,QAAS;AAAA,IACnD,OAAO,CAAE,MAAM,KAAK,MAAM,OAAO,IAAK;AAAA,EACvC;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,MAAM;AAAA,IACN,WAAW,sCAAC,oCAAkB,UAAW,QAAS;AAAA,IAClD,OAAO,CAAE,MAAM,KAAK,MAAM,OAAO,MAAM,IAAK;AAAA,EAC7C;AACD;AAEO,IAAM,OAAO,MAAM;AACzB,QAAM,UAAU,aAAc,+CAA0B;AACxD,QAAM,UAAyC,KAAE,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,CAAE;AAEhG,SACC,sCAAC,oBAAK,WAAS,MAAC,SAAU,OACzB,sCAAC,gBAAe,GAAG,WAClB,sCAAC,mBAAgB,MAAO,sBAAsB,QAC3C,iBAAiB,IAAK,CAAE,SAAS,UAClC;AAAA,IAAC;AAAA;AAAA,MACA,KAAM,QAAQ;AAAA,MACZ,GAAG;AAAA,MACL,WAAY,QAAS,KAAM;AAAA,MAC3B,OAAQ,QAAQ;AAAA,MAChB,SAAQ;AAAA;AAAA,EACT,CACC,CACH,CACD,CACD;AAEF;;;AExDA,IAAAC,UAAuB;AACvB,IAAAC,iBAAuC;AACvC,IAAAC,wBAA4C;AAC5C,IAAAC,iBAAkD;AAClD,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;AAOnB,IAAM,qBAA6F;AAAA,EAClG;AAAA,IACC,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,MAAM;AAAA,IACN,WAAW,sCAAC,+BAAa,UAAW,QAAS;AAAA,EAC9C;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,MAAM;AAAA,IACN,WAAW,sCAAC,+BAAa,UAAS,QAAO,OAAQ,EAAE,WAAW,4BAA4B,GAAI;AAAA,EAC/F;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,MAAM;AAAA,IACN,WAAW,sCAAC,sCAAoB,UAAW,QAAS;AAAA,EACrD;AACD;AAEA,IAAM,cAA2B,CAAE,OAAO,OAAO,QAAQ,MAAO;AAEzD,IAAM,SAAS,MAAM;AAC3B,QAAM,UAAU,aAAc,iDAA4B;AAC1D,QAAM,UAAyC,KAAE,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,CAAE;AAEhG,SACC,sCAAC,oBAAK,WAAS,MAAC,SAAU,OACzB,sCAAC,gBAAe,GAAG,WAClB,sCAAC,mBAAgB,MAAO,sBAAsB,UAC3C,mBAAmB,IAAK,CAAE,SAAS,UACpC;AAAA,IAAC;AAAA;AAAA,MACA,KAAM,QAAQ;AAAA,MACZ,GAAG;AAAA,MACL,WAAY,QAAS,KAAM;AAAA,MAC3B,OAAQ;AAAA;AAAA,EACT,CACC,CACH,CACD,CACD;AAEF;;;ACpDA,IAAAC,UAAuB;AACvB,IAAAC,iBAAuC;AACvC,IAAAC,wBAA2C;AAC3C,IAAAC,iBAAsE;AACtE,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;;;ACJnB,IAAAC,UAAuB;AACvB,IAAAC,cAAqB;AAcd,IAAM,eAAe,CAAE,EAAE,OAAO,MAAM,WAAW,UAAU,MAA0B;AAC3F,SACC,sCAAC,oBAAK,MAAI,MAAC,IAAK,MACf,sCAAC,wBAAqB,KAAM,aAC3B,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,oBAAe,KAAO,CACxB,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,QAChB,sCAAC,iBAAc,MAAO,KAAM,aAAY,KAAI,WAAwB,CACrE,CACD,CACD,CACD;AAEF;;;ADpBA,IAAM,oBAA4F;AAAA,EACjG;AAAA,IACC,WAAO,kBAAI,WAAW,WAAY;AAAA,IAClC,MAAM;AAAA,IACN,WAAW,sCAAC,iCAAe,UAAW,QAAS;AAAA,EAChD;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,WAAW,WAAY;AAAA,IAClC,MAAM;AAAA,IACN,WAAW,sCAAC,qCAAmB,UAAW,QAAS;AAAA,EACpD;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,WAAW,WAAY;AAAA,IAClC,MAAM;AAAA,IACN,WAAW,sCAAC,oCAAkB,UAAW,QAAS;AAAA,EACnD;AACD;AAEO,IAAM,QAAQ,MAAM;AAC1B,QAAM,UAAU,aAAc,gDAA2B;AACzD,QAAM,UAAyC,KAAE,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,CAAE;AAEhG,SACC,sCAAC,oBAAK,WAAS,MAAC,SAAU,OACzB,sCAAC,gBAAe,GAAG,WAClB,sCAAC,mBAAgB,MAAO,sBAAsB,SAC3C,kBAAkB,IAAK,CAAE,SAAS,UACnC,sCAAC,gBAAa,KAAM,QAAQ,MAAS,GAAG,SAAU,WAAY,QAAS,KAAM,GAAI,CAChF,CACH,CACD,CACD;AAEF;;;AE5CA,IAAAC,UAAuB;AACvB,IAAAC,iBAAuC;AACvC,IAAAC,wBAA0C;AAC1C,IAAAC,iBAA8C;AAC9C,IAAAC,cAAqB;AACrB,IAAAC,gBAAmB;AAOnB,IAAM,mBAAqF;AAAA,EAC1F;AAAA,IACC,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,MAAM;AAAA,IACN,WAAW,sCAAC,iCAAe,UAAW,QAAS;AAAA,EAChD;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,MAAM;AAAA,IACN,WAAW,sCAAC,gCAAc,UAAS,QAAO,OAAQ,EAAE,WAAW,4BAA4B,GAAI;AAAA,EAChG;AACD;AAEA,IAAM,YAAyB,CAAE,OAAO,OAAO,QAAQ,MAAO;AAEvD,IAAM,OAAO,MAAM;AACzB,QAAM,UAAU,aAAc,+CAA0B;AACxD,QAAM,UAAyC,KAAE,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,OAAG,uBAAQ,IAAK,CAAE;AAEhG,SACC,sCAAC,oBAAK,WAAS,MAAC,SAAU,OACzB,sCAAC,gBAAe,GAAG,WAClB,sCAAC,mBAAgB,MAAO,sBAAsB,QAC3C,iBAAiB,IAAK,CAAE,SAAS,UAClC;AAAA,IAAC;AAAA;AAAA,MACA,KAAM,QAAQ;AAAA,MACZ,GAAG;AAAA,MACL,WAAY,QAAS,KAAM;AAAA,MAC3B,OAAQ;AAAA;AAAA,EACT,CACC,CACH,CACD,CACD;AAEF;;;AC/CA,IAAAC,iBAAuB;AACvB,IAAAC,wBAUO;AACP,IAAAC,cAAwB;AAajB,IAAM,0BAA0B,CAAE;AAAA,EACxC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AACP,MAA+B;AAC9B,QAAM,EAAE,OAAO,WAAW,UAAU,aAAa,IAAI,aAAc,+CAA0B;AAC7F,QAAM,EAAE,OAAO,YAAY,UAAU,cAAc,IAAI,aAAc,gDAA2B;AAChG,QAAM,EAAE,OAAO,aAAa,UAAU,eAAe,IAAI,aAAc,iDAA4B;AACnG,QAAM,EAAE,OAAO,WAAW,UAAU,aAAa,IAAI,aAAc,+CAA0B;AAE7F,QAAM,EAAE,eAAe,OAAAC,OAAM,IAAI,mBAAmB;AAEpD,QAAM,0BAA0B,MAAyB;AACxD,YAAS,MAAO;AAAA,MACf,KAAK,CAAC,CAAE;AACP,eAAO,sBAAsB;AAAA,MAC9B,KAAK,CAAC,CAAE;AACP,eAAO,sBAAsB;AAAA,MAC9B,KAAK,CAAC,CAAE;AACP,eAAO,sBAAsB;AAAA,MAC9B;AACC,eAAO,sBAAsB;AAAA,IAC/B;AAAA,EACD;AAEA,QAAM,EAAE,cAAc,aAAa,iBAAiB,QAAI,qBAA8B,wBAAwB,CAAE;AAEhH,QAAM,oBAAgB,uBAAkC;AAAA,IACvD,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACP,CAAE;AAEF,QAAM,gBAAgB,CAAE,KAAmC,UAAuD;AACjH,QAAK,OAAQ;AACZ,oBAAc,QAAS,GAAI,IAAI;AAAA,IAChC;AAAA,EACD;AAEA,QAAM,cAAc,CAAE,GAAyB,YAAgC;AAC9E,YAAS,SAAU;AAAA,MAClB,KAAK,sBAAsB;AAC1B,qBAAc,cAAc,QAAQ,IAA0C;AAC9E,sBAAe,SAAS,UAAW;AACnC,sBAAe,UAAU,WAAY;AACrC,sBAAe,QAAQ,SAAU;AAEjC;AAAA,MAED,KAAK,sBAAsB;AAC1B,sBAAe,cAAc,QAAQ,KAA4C;AACjF,sBAAe,QAAQ,SAAU;AACjC,sBAAe,UAAU,WAAY;AACrC,sBAAe,QAAQ,SAAU;AAEjC;AAAA,MAED,KAAK,sBAAsB;AAC1B,uBAAgB,cAAc,QAAQ,MAA8C;AACpF,sBAAe,QAAQ,SAAU;AACjC,sBAAe,SAAS,UAAW;AACnC,sBAAe,QAAQ,SAAU;AAEjC;AAAA,MAED,KAAK,sBAAsB;AAC1B,qBAAc,cAAc,QAAQ,IAA0C;AAC9E,sBAAe,QAAQ,SAAU;AACjC,sBAAe,SAAS,UAAW;AACnC,sBAAe,UAAU,WAAY;AAErC;AAAA,IACF;AAEA,WAAO,aAAa,EAAE,SAAU,GAAG,OAAQ;AAAA,EAC5C;AAEA,QAAM,gBAAgB,CAAE,WAA+B;AACtD,WAAO,CAAC,CAAEA,OAAM,KAAM,CAAE,EAAE,MAAM,EAAE,QAAQ,IAAI,EAAE,GAAG,QAAS,WAAW,OAAO,QAAQ,aAAc;AAAA,EACrG;AAEA,SAAO;AAAA,IACN,aAAa,CAAE,WAAgC;AAAA,MAC9C,GAAG,YAAa,KAAM;AAAA,MACtB,UAAU,cAAe,KAAM;AAAA,IAChC;AAAA,IACA;AAAA,IACA,cAAc,OAAQ,EAAE,GAAG,aAAa,GAAG,UAAU,YAAY;AAAA,EAClE;AACD;;;APlGO,IAAM,mBAAmB,MAAM;AACrC,QAAM,EAAE,cAAc,aAAa,iBAAiB,IAAI,wBAAyB;AAAA,IAChF,MAAM,sBAAsB;AAAA,IAC5B,OAAO,kBAAkB;AAAA,IACzB,QAAQ,mBAAmB;AAAA,IAC3B,MAAM,iBAAiB;AAAA,EACxB,CAAE;AAEF,SACC,sCAAC,sBACA,sCAAC,mBAAI,IAAK,EAAE,OAAO,OAAO,KACzB,sCAAC,mBAAI,IAAK,EAAE,cAAc,GAAG,aAAa,UAAU,KACnD;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,SAAQ;AAAA,MACR,IAAK;AAAA,QACJ,kBAAkB;AAAA,UACjB,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACE,GAAG,aAAa;AAAA,MAClB,kBAAa,kBAAI,aAAa,WAAY;AAAA;AAAA,IAE1C,sCAAC,mBAAI,WAAQ,kBAAI,QAAQ,WAAY,GAAM,GAAG,YAAa,sBAAsB,IAAK,GAAI;AAAA,IAC1F,sCAAC,mBAAI,WAAQ,kBAAI,SAAS,WAAY,GAAM,GAAG,YAAa,sBAAsB,KAAM,GAAI;AAAA,IAC5F,sCAAC,mBAAI,WAAQ,kBAAI,UAAU,WAAY,GAAM,GAAG,YAAa,sBAAsB,MAAO,GAAI;AAAA,IAC9F,sCAAC,mBAAI,WAAQ,kBAAI,QAAQ,WAAY,GAAM,GAAG,YAAa,sBAAsB,IAAK,GAAI;AAAA,EAC3F,CACD,GACA,sCAAC,wBAAS,IAAK,EAAE,GAAG,IAAI,GAAM,GAAG,iBAAkB,sBAAsB,IAAK,KAC7E,sCAAC,UAAK,CACP,GACA,sCAAC,wBAAS,IAAK,EAAE,GAAG,IAAI,GAAM,GAAG,iBAAkB,sBAAsB,KAAM,KAC9E,sCAAC,WAAM,CACR,GACA,sCAAC,wBAAS,IAAK,EAAE,GAAG,IAAI,GAAM,GAAG,iBAAkB,sBAAsB,MAAO,KAC/E,sCAAC,YAAO,CACT,GACA,sCAAC,wBAAS,IAAK,EAAE,GAAG,IAAI,GAAM,GAAG,iBAAkB,sBAAsB,IAAK,KAC7E,sCAAC,UAAK,CACP,CACD,CACD;AAEF;;;AQ9DA,IAAAC,UAAuB;AAEvB,IAAAC,iBAA4F;AAIrF,IAAM,gBAAgB,CAAE,EAAE,MAAM,MAAmD;AACzF,UAAS,MAAM,QAAS;AAAA,IACvB,KAAK,sBAAsB;AAC1B,aAAO,sCAAC,qCAAmB,UAAS,QAAO;AAAA,IAC5C,KAAK,sBAAsB;AAC1B,aAAO,sCAAC,yCAAuB,UAAS,QAAO;AAAA,IAChD,KAAK,sBAAsB;AAC1B,aAAO,sCAAC,uCAAqB,UAAS,QAAO;AAAA,IAC9C,KAAK,sBAAsB;AAC1B,aAAO,sCAAC,4BAAU,UAAS,QAAO;AAAA,IACnC;AACC,aAAO;AAAA,EACT;AACD;;;ACnBA,IAAAC,UAAuB;AAEvB,IAAAC,cAAoB;AACpB,IAAAC,gBAAmB;AAKnB,IAAM,cAAc,CAAE,OAAmD,iBAA8C;AACtH,SAAO,OAAO,OAAQ,KAAM,EAC1B,IAAK,CAAE,SAAU;AACjB,QAAK,iBAAiB,SAAU;AAC/B,aAAO,MAAM,SAAS,cAAe,YAAa;AAAA,IACnD;AAEA,UAAM,WAAW,cAAe,YAAa;AAC7C,UAAM,OAAO,MAAM,OAAO,QAAQ,SAAS;AAC3C,UAAM,OAAO,MAAM,OAAO,QAAQ,SAAS;AAE3C,WAAO,SAAS,WAAW,QAAQ,oBAAoB,GAAI,IAAK,GAAI,IAAK;AAAA,EAC1E,CAAE,EACD,KAAM,IAAK;AACd;AAEO,IAAM,iBAAiB,CAAE,UAAuD;AACtF,QAAM,EAAE,QAAQ,MAAM,IAAI,MAAM;AAChC,UAAS,QAAS;AAAA,IACjB,KAAK,sBAAsB;AAC1B,aAAO,sCAACC,QAAA,EAAM,WAAQ,kBAAI,QAAQ,WAAY,GAAI,OAAQ,YAAa,OAAO,MAAO,GAAI;AAAA,IAC1F,KAAK,sBAAsB;AAC1B,aAAO,sCAACA,QAAA,EAAM,WAAQ,kBAAI,SAAS,WAAY,GAAI,OAAQ,YAAa,OAAO,OAAQ,GAAI;AAAA,IAC5F,KAAK,sBAAsB;AAC1B,aAAO,sCAACA,QAAA,EAAM,WAAQ,kBAAI,UAAU,WAAY,GAAI,OAAQ,YAAa,OAAO,QAAS,GAAI;AAAA,IAC9F,KAAK,sBAAsB;AAC1B,aAAO,sCAACA,QAAA,EAAM,WAAQ,kBAAI,QAAQ,WAAY,GAAI,OAAQ,YAAa,OAAO,MAAO,GAAI;AAAA,IAC1F;AACC,aAAO;AAAA,EACT;AACD;AAEA,IAAMA,SAAQ,CAAE,EAAE,OAAO,MAAM,MAAyC;AACvE,SACC,sCAAC,mBAAI,WAAU,UACZ,OAAO,MAAI,KACd;AAEF;;;AC9CA,IAAAC,UAAuB;AACvB,IAAAC,qBAA8B;AAC9B,IAAAC,iBAAgC;AAChC,IAAAC,cAAoE;AACpE,IAAAC,gBAAmB;;;ACJnB,IAAAC,UAAuB;AACvB,IAAAC,wBAA8C;AAC9C,IAAAC,cAA4B;AAC5B,IAAAC,gBAAmB;AAcnB,IAAM,eAA6B,CAAE,MAAM,KAAK,MAAM,KAAM;AAE5D,IAAM,4BAAwC;AAAA,EAC7C,WAAO,kBAAI,eAAe,WAAY;AAAA,EACtC,MAAM;AAAA,EACN,OAAO,CAAE,MAAM,MAAM,OAAO,MAAM,IAAK;AACxC;AAEA,IAAM,8BAA4C;AAAA,EACjD;AAAA,IACC,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AACD;AAEO,IAAM,6BAA6B,MAAM;AAC/C,SACC,sCAAC,qBAAM,WAAU,UAAS,SAAU,OACnC,sCAAC,4BAAmB,kBAAI,wBAAwB,WAAY,CAAG,GAC/D,sCAAC,wBAAmB,GACpB,sCAAC,8BAAyB,CAC3B;AAEF;AAEA,IAAM,qBAAqB,MAC1B,sCAAC,mBAAgB,MAAO,iBACvB,sCAAC,iBAAc,SAAU,2BAA4B,KAAM,0BAA0B,MAAO,CAC7F;AAGD,IAAM,2BAA2B,MAChC,sCAAC,mBAAgB,MAAO,wBACvB,sCAAC,sCAAiC,CACnC;AAGD,IAAM,mCAAmC,MAAM;AAC9C,QAAM,UAAU,aAAc,mDAA8B;AAE5D,SACC,sCAAC,gBAAe,GAAG,WAChB,4BAA4B,IAAK,CAAE,YACpC,sCAAC,mBAAgB,MAAO,QAAQ,MAAO,KAAM,QAAQ,QACpD,sCAAC,iBAAc,SAAoB,CACpC,CACC,CACH;AAEF;AAEA,IAAM,gBAAgB,CAAE,EAAE,QAAQ,MAAgC;AACjE,QAAM,SAAe,eAA0B,IAAK;AAEpD,SACC,sCAAC,wBAAqB,KAAM,UAC3B,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,wBAAmB,QAAQ,KAAO,CACpC,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,eAAY,SAAQ,UAAS,OAAQ,QAAQ,OAAQ,WAAY,QAAS,eAAa,MAAC,CAC1F,CACD;AAEF;;;ACvFA,IAAAC,UAAuB;AACvB,IAAAC,wBAA4C;AAC5C,IAAAC,cAA4B;AAC5B,IAAAC,gBAAmB;AAQnB,IAAM,yBAAuC,CAAE,MAAM,KAAK,MAAM,KAAM;AACtE,IAAM,gCAAgC,uBAAuB,OAAQ,CAAE,SAAU,SAAS,GAAI;AAE9F,IAAM,0BAA0B;AAAA,EAC/B;AAAA,IACC,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AAAA,EACA;AAAA,IACC,WAAO,kBAAI,YAAY,WAAY;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,EACR;AACD;AAEO,IAAM,yBAAyB,MAAM;AAC3C,SACC,sCAAC,qBAAM,WAAU,UAAS,SAAU,OACnC,sCAAC,4BAAmB,kBAAI,aAAa,WAAY,CAAG,GAClD,wBAAwB,IAAK,CAAE,YAChC,sCAACC,gBAAA,EAAc,SAAoB,KAAM,QAAQ,MAAO,CACvD,CACH;AAEF;AAEA,IAAMA,iBAAgB,CAAE,EAAE,QAAQ,MAAkE;AACnG,QAAM,UAAU,aAAc,iDAA4B;AAC1D,QAAM,SAAe,eAA0B,IAAK;AAEpD,SACC,sCAAC,gBAAe,GAAG,WAClB,sCAAC,mBAAgB,MAAO,QAAQ,QAC/B,sCAAC,wBAAqB,KAAM,UAC3B,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,wBAAmB,QAAQ,KAAO,CACpC,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,eAAY,SAAQ,UAAS,OAAQ,QAAQ,OAAQ,WAAY,QAAS,eAAa,MAAC,CAC1F,CACD,CACD,CACD;AAEF;;;AFlDA,IAAMC,QAAO;AAEN,IAAM,2BAA2B,CAAE;AAAA,EACzC;AAAA,EACA;AACD,MAGO;AACN,QAAM,iBAAa,yBAAa;AAAA,IAC/B,GAAG;AAAA,IACH,UAAU,UAAU,WAAW;AAAA,EAChC,CAAE;AAEF,SACC;AAAA,IAAC;AAAA;AAAA,MACA,eAAa;AAAA,MACb,cAAe,EAAE,UAAU,UAAU,YAAY,OAAO;AAAA,MACxD,WAAY;AAAA,QACX,OAAO;AAAA,UACN,IAAI;AAAA,YACH,QAAS,UAAU,SAAS,eAAe,KAAM,IAAI;AAAA,YACrD,IAAI;AAAA,UACL;AAAA,QACD;AAAA,MACD;AAAA,MACE,GAAG;AAAA;AAAA,IAEL;AAAA,MAAC;AAAA;AAAA,QACA,WAAQ,kBAAI,sBAAsB,WAAY;AAAA,QAC9C,SAAU,WAAW;AAAA,QACrB,MAAO,sCAAC,kCAAgB,UAAWA,OAAO;AAAA;AAAA,IAC3C;AAAA,IACA,sCAAC,yBAAQ;AAAA,IACT,sCAAC,kBAAe,IAAK,EAAE,IAAI,GAAG,IAAI,IAAI,KACrC,sCAAC,mBAAgB,MAAO,sBACvB,sCAAC,4BAAuB,CACzB,GACA,sCAAC,mBAAI,IAAK,EAAE,IAAI,IAAI,KACnB,sCAAC,yBAAQ,CACV,GACA,sCAAC,gCAA2B,CAC7B;AAAA,EACD;AAEF;;;AZnCA,IAAMC,QAAO;AAEN,IAAM,2BAA2B,cAAe,MAAM;AAC5D,QAAM,UAAU,aAAc,2CAAsB;AACpD,QAAM,gBAAY,uBAA0B,IAAK;AACjD,QAAM,iBAAa,2BAAe,EAAE,SAAS,UAAU,CAAE;AAEzD,SACC,sCAAC,gBAAe,GAAG,WAClB,sCAAC,4BAAyB,YAA0B,WAAY,WAAY,GAC5E,sCAAC,mBAAgB,MAAO,yBACvB,sCAACC,WAAA,EAAS,WAAwB,UAAW,QAAQ,UAAW,YAA0B,CAC3F,CACD;AAEF,CAAE;AAEF,IAAM,UACL;AAAA,EAAC;AAAA;AAAA,IACA,WAAU;AAAA,IACV,cAAa;AAAA,IACb,IAAK,EAAE,SAAS,QAAQ,KAAK,KAAK,GAAG,GAAG,OAAO,KAAK,cAAc,EAAE;AAAA;AAAA,EAEpE,sCAAC,uCAAqB,IAAK,EAAE,OAAO,iBAAiB,GAAI;AAAA,EACzD,sCAAC,0BAAW,SAAQ,SAAQ,OAAM,kBAAiB,UAAS,cACzD,kBAAI,6DAA6D,WAAY,CAChF;AACD;AAGD,IAAMA,YAAW,CAAE;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AACD,MAIO;AACN,QAAM,4BAA4B,aAAc,oDAA+B;AAC/E,QAAM,kBAAkB,CAAE,uBAAuB,mBAAmB,oBAAoB,gBAAiB;AACzG,QAAM,EAAE,OAAO,iBAAiB,KAAK,IAAI;AAEzC,QAAMC,mBAAkB,MAAM;AAC7B,WAAO,gBAAgB,KAAM,CAAE,UAAW,CAAE,iBAAiB,KAAM,CAAE,SAAU,KAAK,WAAW,MAAM,MAAO,CAAE;AAAA,EAC/G;AAEA,QAAM,uBAAuB,CAAEA,iBAAgB;AAE/C,SACC,sCAAC,gBAAe,GAAG,6BAClB;AAAA,IAAC;AAAA;AAAA,MACA,SAAUA,iBAAgB,KAAK;AAAA,MAC/B,cAAe;AAAA;AAAA,IAEf;AAAA,MAAC;AAAA;AAAA,QACA,WAAQ,kBAAI,aAAa,WAAY;AAAA,QACrC,WAAY,MAAM,sCAAC,qBAAkB,eAAgB,EAAE,MAAM,CAAE,WAAY,GAAG,SAAS,GAAI;AAAA,QAC3F,KAAM;AAAA;AAAA,MAEN,sCAAC,+BAA4B,YAA0B,iBAAkB,MAAO;AAAA,MAChF;AAAA,QAAC;AAAA;AAAA,UACA,UAAW;AAAA,UACX,gBAAiB;AAAA,UACjB,eAAgB;AAAA,UAChB,WAAY;AAAA;AAAA,MACb;AAAA,IACD;AAAA,IACA,sCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA,MAAO;AAAA,QACP,OAAQ;AAAA,QACR,SACC,8DACC,sCAAC,uBAAkB,GACnB,sCAAC,sBAAiB,CACnB;AAAA;AAAA,IAEF,CACD;AAAA,IACA,sCAAC,uBACA,sCAAC,sBAAiB,CACnB;AAAA,EACD,CACD;AAEF;AAEA,IAAM,8BAA8B,CAAE;AAAA,EACrC;AAAA,EACA;AACD,MAGO;AACN,QAAM,EAAE,KAAK,IAAI,aAAa;AAC9B,QAAM,iBAAa,kBAAI,sBAAsB,WAAY;AAEzD,SAAO,SAAS,kBAAkB,OACjC,sCAAC,uBAAQ,OAAQ,YAAa,WAAU,SACvC,sCAAC,0BAAW,MAAOF,OAAO,cAAa,YAAe,OAAG,yBAAa,UAAW,KAChF,sCAAC,kCAAgB,UAAWA,OAAO,CACpC,CACD;AAEF;;;Ae9HA,IAAAG,UAAuB;AACvB,IAAAC,iBAA6C;AAC7C,IAAAC,wBAKO;AAEP,IAAAC,iBAAqC;AACrC,IAAAC,cAAmD;AACnD,IAAAC,gBAAmB;;;ACXnB,IAAAC,UAAuB;AACvB,IAAAC,iBAAgC;AAChC,IAAAC,wBAA0C;AAC1C,IAAAC,cAAqB;AAqBd,IAAM,uBAAuB;AAAA,EACnC,CAAE,EAAE,gBAAgB,WAAW,iBAAiB,cAAc,MAAkC;AAC/F,UAAM,EAAE,OAAO,UAAU,SAAS,IAAI,aAAc,+CAA0B;AAC9E,UAAM,aAAS,uBAA0B,IAAK;AAE9C,UAAM,cAAc,UAAU,QAAS,QAAQ,GAAI,EAAE,YAAY;AAEjE,UAAM,wBAAoB,wBAAS,MAAM;AACxC,cAAS,MAAM,UAAU,QAAS;AAAA,QACjC,KAAK;AACJ,iBAAO,cAAe,OAAO,WAAW,MAAM,MAAM,SAAS,EAAG;AAAA,QACjE,KAAK;AACJ,iBAAO,cAAe,OAAO,WAAW,SAAS,EAAG;AAAA,QACrD;AACC,iBAAO;AAAA,MACT;AAAA,IACD,GAAG,CAAE,OAAO,aAAc,CAAE;AAC5B,UAAM,qBAAqB,gBAAgB;AAE3C,WACC,sCAAC,gBAAa,OAAgB,UAAsB,YACnD,sCAAC,oBAAK,WAAS,MAAC,SAAU,KAAM,KAAM,UACrC,sCAAC,oBAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,SAAS,QAAQ,YAAY,SAAS,KAChE,sCAAC,wBAAmB,cAAgB,CACrC,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAK,eACrB,sCAAC,sBAAqB,GAAG,gBAAgB,OAAQ,CAClD,CACD,GACE,qBACD,8DACC,sCAAC,oBAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,SAAS,QAAQ,YAAY,SAAS,KAChE,sCAAC,oBAAiB,SAAU,eAAgB,SAAW,CACxD,GACA,sCAAC,oBAAK,MAAI,MAAC,IAAK,KACf,sCAAC,mBAAgB,MAAK,UACrB;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,QACZ,SAAU,kBAAkB;AAAA,QAC5B,OAAQ,kBAAkB;AAAA,QAC1B,aAAc,kBAAkB;AAAA,QAChC,IAAK;AAAA;AAAA,IACN,CACD,CACD,CACD,CAEF,CACD;AAAA,EAEF;AACD;;;AC3EA,IAAAC,gBAAmB;AA4BZ,IAAM,yBAA0C;AAAA,EACtD,WAAW;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,MACN,KAAK,EAAE,WAAO,kBAAI,kBAAkB,WAAY,GAAG,QAAQ,SAAS;AAAA,MACpE,OAAO,EAAE,OAAO,OAAO,QAAQ,SAAS;AAAA,IACzC;AAAA,EACD;AAAA,EACA,MAAM,EAAE,QAAQ,QAAQ,OAAO,EAAE,MAAM,KAAK,MAAM,KAAK,EAAE;AAC1D;AAEO,IAAM,uBAA6C;AAAA,EACzD;AAAA,IACC,WAAO,kBAAI,WAAW,WAAY;AAAA,IAClC,MAAM;AAAA,IACN,YAAY,CAAE,EAAE,WAAO,kBAAI,kBAAkB,WAAY,GAAG,OAAO,MAAM,CAAE;AAAA,EAC5E;AACD;AAEO,IAAM,uBAAuB,qBAAqB,IAAK,CAAE,cAAgB;AAAA,EAC/E,OAAO,SAAS;AAAA,EAChB,OAAO,SAAS,WAAW,IAAK,CAAE,aAAc,SAAS,KAAM;AAChE,EAAI;;;ACnDJ,IAAAC,0BAAoC;AACpC,sBAA2B;AAO3B,IAAM,kCAAkC;AAAA,EACvC,WAAW;AAAA,EACX,UAAU;AAAA,EACV,mBAAmB;AAAA,EACnB,SAAS;AACV;AAEO,SAAS,6BAA6B;AAC5C,WAAS,UAAW,yBAAyB,CAAE,SAAU;AACxD,UAAM,UAAU;AAChB,UAAM,QAAQ,SAAS,WAAW,WAAW,OAAO,OAAO;AAC3D,UAAM,uBAAmB,6CAAoB;AAC7C,UAAM,aAAa,iBAAkB,CAAE,GAAG,QAAQ;AAClD,oCAAY;AAAA,MACX,iBAAiB,SAAS;AAAA,MAC1B,GAAG;AAAA,MACH,aAAa;AAAA,IACd,CAAE;AAAA,EACH,CAAE;AACH;;;AC3BA,IAAAC,UAAuB;AACvB,IAAAC,iBAAuB;AACvB,IAAAC,wBAAmF;AACnF,IAAAC,iBAAgD;AAChD,IAAAC,cAAmF;AACnF,IAAAC,gBAAmB;AAOnB,IAAM,4BAA4B,CAAE,UAAmB;AACtD,aAAY,YAAY,sBAAuB;AAC9C,UAAM,WAAW,SAAS,WAAW,KAAM,CAAE,SAAU,KAAK,UAAU,KAAM;AAC5E,QAAK,UAAW;AACf,aAAO;AAAA,QACN,KAAK,EAAE,OAAO,SAAS,OAAO,QAAQ,SAAS;AAAA,QAC/C,OAAO,EAAE,OAAO,SAAS,OAAO,QAAQ,SAAS;AAAA,MAClD;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAEO,SAAS,6BAA8B,MAAgC;AAC7E,MAAK,CAAE,MAAM,OAAQ;AACpB,WAAO;AAAA,EACR;AAEA,aAAY,YAAY,sBAAuB;AAC9C,eAAY,YAAY,SAAS,YAAa;AAC7C,UAAK,SAAS,UAAU,KAAK,OAAQ;AACpC,eAAO;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAM,+BAA+B,CAAE,OAAqC,kBAA6B;AACxG,SAAO,cAAc,OAAQ,CAAE,SAAU;AACxC,WAAO,SAAS,MAAM,IAAI;AAAA,EAC3B,CAAE;AACH;AAEO,IAAM,qBAAqB,CAAE;AAAA,EACnC,mBAAmB,CAAC;AAAA,EACpB,gBAAgB,CAAC;AAClB,MAGO;AACN,QAAM,EAAE,OAAO,SAAS,IAAI,aAAc,0CAAqB;AAC/D,QAAM;AAAA,IACL,KAAK,EAAE,OAAO,gBAAgB;AAAA,EAC/B,IAAI;AACJ,QAAM,iBAAa,uBAA0B,IAAK;AAClD,QAAM,mBAAe,2BAAe,EAAE,SAAS,UAAU,CAAE;AAE3D,QAAM,cAAc,MAAM;AACzB,UAAM,cAAc,iBAClB,IAAK,CAAE,SAAU,6BAA8B,EAAE,OAAO,MAAM,QAAQ,SAAS,CAAE,GAAG,KAAM,EAC1F,OAAQ,CAAE,SAAU,CAAC,CAAE,IAAK;AAC9B,UAAM,gBAAgB,qBAAqB,IAAK,CAAE,aAAc;AAC/D,aAAO;AAAA,QACN,GAAG;AAAA,QACH,OAAO,SAAS,MAAM,OAAQ,CAAE,SAAU,CAAE,YAAY,SAAU,IAAK,CAAE;AAAA,MAC1E;AAAA,IACD,CAAE;AACF,QAAK,YAAY,WAAW,GAAI;AAC/B,aAAO;AAAA,IACR;AACA,UAAM,CAAE,OAAO,GAAG,IAAK,IAAI;AAC3B,WAAO;AAAA,MACN;AAAA,MACA;AAAA,QACC,WAAO,kBAAI,iBAAiB,WAAY;AAAA,QACxC,OAAO;AAAA,MACR;AAAA,MACA,GAAG;AAAA,IACJ;AAAA,EACD;AAEA,QAAM,iCAAiC,CAAE,aAAsB;AAC9D,UAAM,WAAW,0BAA2B,QAAS;AAErD,QAAK,CAAE,UAAW;AACjB;AAAA,IACD;AAEA,aAAU,QAAS;AACnB,iBAAa,MAAM;AAAA,EACpB;AAEA,QAAM,oBAAoB,MAAM;AAC/B,QAAK,CAAE,WAAW,SAAU;AAC3B,aAAO;AAAA,IACR;AAEA,UAAM,OAAO,WAAW,QAAQ,sBAAsB;AACtD,WAAO;AAAA,MACN,KAAK,KAAK;AAAA,MACV,MAAM,KAAK,QAAQ;AAAA,IACpB;AAAA,EACD;AAEA,SACC,sCAAC,mBAAI,KAAM,cACV,sCAAC,sBACA;AAAA,IAAC;AAAA;AAAA,MACA,SAAQ;AAAA,MACR,OAAQ;AAAA,MACR,SAAU,sCAAC,kCAAgB,UAAS,QAAO;AAAA,MACzC,OAAG,yBAAa,YAAa;AAAA,MAC/B,WAAS;AAAA;AAAA,EACV,CACD,GACA;AAAA,IAAC;AAAA;AAAA,MACA,eAAa;AAAA,MACb,mBAAiB;AAAA,MACf,OAAG,yBAAa,YAAa;AAAA,MAC/B,iBAAgB;AAAA,MAChB,gBAAiB,kBAAkB;AAAA,MACnC,cAAe,EAAE,UAAU,OAAO,YAAY,QAAQ;AAAA,MACtD,iBAAkB,EAAE,UAAU,OAAO,YAAY,OAAO;AAAA;AAAA,IAExD;AAAA,MAAC;AAAA;AAAA,QACA,WAAY,YAAY;AAAA,QACxB,cAAe;AAAA,QACf,cAAe;AAAA,QACf,SAAU,aAAa;AAAA,QACvB,cAAe;AAAA,QACf,WAAQ,kBAAI,uBAAuB,WAAY;AAAA,QAC/C,MAAO;AAAA,QACP,eAAgB,6BAA8B,OAAO,aAAc;AAAA;AAAA,IACpE;AAAA,EACD,CACD;AAEF;;;AJlHA,IAAM,kBAAkB;AAAA,EACvB,SAAS;AAAA,EACT,OAAO,CAAE,KAAK,IAAK;AAAA,EACnB,aAAa;AACd;AAEA,IAAM,6BAAyB;AAAA,EAC9B,gDAA0B;AAAA,EAC1B,gDAA0B;AAAA,EAC1B;AACD;AAEA,2BAA2B;AAE3B,IAAM,uBAAuB,CAAE,QAAkC,CAAC,MAAO;AACxE,SAAO,OAAO,SACX,qBAAqB,MAAO,CAAE,aAAc;AAC5C,WAAO,SAAS,WAAW,MAAO,CAAE,aAAc;AACjD,aACC,SAAS,cACT,CAAC,CAAE,OAAO,KAAM,CAAE,SAAU;AAC3B,eACG,KAAK,OAAO,WAAW,OAA8B,OAAO,UAAU,SAAS;AAAA,MAEnF,CAAE;AAAA,IAEJ,CAAE;AAAA,EACF,CAAE,IACF;AACJ;AAIA,IAAM,wBAAwB,CAAE,kBAA4B,kBAA8B;AACzF,SAAO;AAAA,IACN,oBAAgB,kBAAI,QAAQ,WAAY;AAAA,IACxC,eAAW,kBAAI,YAAY,WAAY;AAAA,IACvC,iBAAiB;AAAA,MAChB,WAAW;AAAA,MACX,OAAO;AAAA,QACN;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAAA,IACA,eAAe;AAAA,MACd,GAAG,qBAAqB;AAAA,QACvB,CAAE,KAAK,aAAc;AACpB,mBAAS,WAAW,QAAS,CAAE,aAAc;AAC5C,gBAAK,SAAS,KAAM,IAAI;AAAA,UACzB,CAAE;AACF,iBAAO;AAAA,QACR;AAAA,QACA,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EACD;AACD;AAEA,IAAM,iBAAiB,CAAE,SAAqC;AAC7D,QAAM,WAAW,6BAA8B,KAAK,MAAM,UAAU,OAAO,KAAM;AAEjF,SAAO,CAAE,WAAW,QAAQ,CAAC,CAAE,SAAS;AACzC;AAEA,IAAM,wBAAwB,CAAE,kBAA4B,kBAA8B;AACzF,SAAO;AAAA,IACN,cAAc;AAAA,IACd,WAAW;AAAA,IACX,OAAO,sBAAuB,kBAAkB,aAAc;AAAA,IAC9D;AAAA,EACD;AACD;AAEA,IAAM,iBAAiB,CAAE,OAAiC,aAAkC;AAC3F,UAAS,SAAS,CAAC,GAAI,KAAM,CAAE,SAAU;AACxC,WAAS,MAAM,OAAO,WAAW,OAA8B,OAAO,UAAU,SAAS;AAAA,EAC1F,CAAE;AACH;AAEA,IAAM,wBAAwB,CAAE,SAAmC,CAAC,MAAO;AAC1E,QAAM,kBAA6B,UAAU,CAAC,GAAI;AAAA,IACjD,CAAE,SAAY,KAAK,OAAO,WAAkC,OAAO,KAAK;AAAA,EACzE;AAEA,uBAAqB,QAAS,CAAE,aAAc;AAC7C,UAAM,qBAAqB,SAAS,WAClC,OAAQ,CAAE,aAAc,SAAS,cAAc,CAAE,eAAe,SAAU,SAAS,KAAM,CAAE,EAC3F,IAAK,CAAE,aAAc,SAAS,KAAM;AAEtC,mBAAe,KAAM,GAAG,kBAAmB;AAAA,EAC5C,CAAE;AAEF,SAAO;AACR;AAEA,IAAM,kBAAkB,CAAE,SAAmC,CAAC,MAAwB;AACrF,MAAK,CAAE,QAAQ,QAAS;AACvB,WAAO;AAAA,EACR;AAEA,aAAY,YAAY,sBAAuB;AAC9C,eAAY,YAAY,SAAS,YAAa;AAC7C,UAAK,eAAgB,QAAQ,QAAS,GAAI;AACzC;AAAA,MACD;AAEA,aAAO;AAAA,QACN,GAAG;AAAA,QACH,WAAW;AAAA,UACV,QAAQ;AAAA,UACR,OAAO;AAAA,YACN,KAAK,EAAE,OAAO,SAAS,OAAO,QAAQ,SAAS;AAAA,YAC/C,OAAO,EAAE,OAAO,SAAS,OAAO,QAAQ,SAAS;AAAA,UAClD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAM,+BACL;AAAA,EAAC;AAAA;AAAA,IACA,IAAK;AAAA,MACJ,OAAO;AAAA,MACP,KAAK;AAAA,IACN;AAAA,IACA,OAAM;AAAA,IACN,MAAO,sCAAC,yCAAqB;AAAA;AAAA,EAE7B,sCAAC,kCAAa,kBAAI,eAAe,WAAY,CAAG;AAAA,EAChD,sCAAC,mBAAI,WAAU,UACd,sCAAC,0BAAW,SAAQ,eACjB,kBAAI,iDAAiD,WAAY,CACpE,CACD;AACD;AAGM,IAAM,4BAA4B;AAAA,EACxC,CAAE;AAAA,IACD;AAAA,IACA;AAAA,EACD,MAGO;AACN,UAAM,uBAAuB,sBAAsB;AACnD,UAAM,CAAE,kBAAkB,mBAAoB,QAAI,yBAAsB,CAAC,CAAE;AAE3E,UAAM,EAAE,OAAO,SAAS,IAAI,aAAc,sBAAuB;AACjE,UAAM,oBAAgB,wBAAS,MAAM,sBAAuB,KAAM,GAAG,CAAE,KAAM,CAAE;AAE/E,UAAM,2BAAuB,wBAAS,MAAM;AAC3C,YAAM,MAAM,oBAAI,IAAc;AAC9B,2BAAqB,QAAS,CAAE,aAAc;AAC7C,iBAAS,WAAW,QAAS,CAAE,SAAU,IAAI,IAAK,KAAK,KAAM,CAAE;AAAA,MAChE,CAAE;AACF,aAAO;AAAA,IACR,GAAG,CAAC,CAAE;AAEN,kCAAW,MAAM;AAChB,UAAK,CAAE,SAAS,MAAM,WAAW,GAAI;AACpC;AAAA,MACD;AAEA,YAAM,YAAY,MAAM,OAAQ,CAAE,SAAU;AAC3C,cAAM,iBAAmB,MAAM,OAAO,WAAW,OAA8B,OAAO,SAAS;AAC/F,eAAO,qBAAqB,IAAK,cAAe;AAAA,MACjD,CAAE;AAEF,UAAK,UAAU,WAAW,MAAM,QAAS;AACxC,iBAAU,SAAU;AAAA,MACrB;AAAA,IAED,GAAG,CAAE,oBAAqB,CAAE;AAE5B,kCAAW,MAAM;AAChB,6BAAuB,EAAE,KAAM,mBAAoB;AAAA,IACpD,GAAG,CAAE,sBAAuB,CAAE;AAE9B,UAAM,wBAAoB,wBAAS,MAAM,qBAAsB,KAAM,GAAG,CAAE,KAAM,CAAE;AAClF,UAAM,oBAAoB,CAAE,wBAAwB;AAEpD,WACC;AAAA,MAAC;AAAA;AAAA,QACA,WAAQ,kBAAI,eAAe,WAAY;AAAA,QACvC,mBAAgB,kBAAI,eAAe,WAAY;AAAA,QAC/C,cAAa;AAAA,QACb,iBAAc,kBAAI,oBAAoB,WAAY;AAAA,QAClD,eAAgB;AAAA,QAChB,YAAa;AAAA,QACb,eAAgB,gBAAiB,KAAM;AAAA,QACvC,oBAAqB,sBAAuB,kBAAkB,aAAc;AAAA,QAC5E,SAAQ;AAAA,QACR,qBAAsB;AAAA,UACrB,UAAU;AAAA,UACV,eAAe,CAAE;AAAA,UACjB,gBAAgB;AAAA,QACjB;AAAA;AAAA,IACD;AAAA,EAEF;AACD;;;AKxOA,IAAAC,UAAuB;AAEvB,YAAuB;AACvB,IAAAC,wBAAgE;AAChE,IAAAA,wBAAqC;AACrC,IAAAC,cAAkE;AAMlE,IAAM,cAAc;AACpB,IAAM,cAAc;AAEb,IAAM,kBAAkB,cAAe,CAAE,EAAE,cAAc,MAAoC;AACnG,QAAM,EAAE,OAAO,UAAU,GAAG,YAAY,IAAI,aAAc,0CAAqB;AAE/E,QAAM,eAAe,CAAE,UAAiB,SAAqC;AAC5E,UAAM,QAAQ,KAAK;AACnB,UAAM,aAAa,SAAU,KAAyB;AAEtD,YAAK,uCAAiB,UAAW,GAAI;AACpC,aAAO,SAAU,EAAE,GAAG,OAAO,CAAE,KAAM,GAAG,WAAW,CAAE;AAAA,IACtD;AAEA,QAAI,iBAAiB;AAErB,QAAK,YAAa;AACjB,YAAM,aAAa;AACnB,uBAAiB,UAAU,SAAS,WAAW,OAAQ,WAAY,IAAI,WAAW,OAAQ,WAAY;AAAA,IACvG;AAEA,aAAU;AAAA,MACT,GAAG;AAAA,MACH,CAAE,KAAM,GAAG;AAAA,QACV,QAAQ;AAAA,QACR,OAAO;AAAA,MACR;AAAA,IACD,CAAE;AAAA,EACH;AAEA,QAAM,iBAAiB,CAAE,YAA2C;AACnE,QAAK,CAAE,SAAU;AAChB,aAAO;AAAA,IACR;AAEA,UAAM,IAAiF,cAAS,OAAQ;AAExG,WAAO,KAAK,OAAO,EAAE,YAAY,cAAc,EAAE,QAAQ,IAAI,IAAI;AAAA,EAClE;AAEA,QAAM,iBAAiB,CAAE,YAA2C;AACnE,QAAK,CAAE,SAAU;AAChB,aAAO;AAAA,IACR;AAEA,UAAM,CAAE,OAAO,OAAQ,IAAI,QAAQ,MAAO,GAAI;AAC9C,UAAM,IAAI,OAAO,SAAU,SAAS,IAAI,EAAG;AAC3C,UAAM,IAAI,OAAO,SAAU,WAAW,IAAI,EAAG;AAE7C,QAAK,OAAO,MAAO,CAAE,KAAK,OAAO,MAAO,CAAE,GAAI;AAC7C,aAAO;AAAA,IACR;AAEA,UAAM,OAAwD,cAAQ;AACtE,WAAO,KAAK,KAAM,CAAE,EAAE,OAAQ,CAAE,EAAE,OAAQ,CAAE,EAAE,YAAa,CAAE;AAAA,EAC9D;AAEA,SACC,sCAAC,gBAAe,GAAG,aAAc,OAAgB,YAChD,sCAAC,sBACA,sCAAC,wCACA,sCAAC,mBAAI,SAAQ,QAAO,KAAM,GAAI,YAAW,YACxC,sCAAC,mBAAgB,MAAK,UACrB;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ,eAAgB,yCAAmB,QAAS,OAAO,IAAK,CAAE;AAAA,MAClE,UAAW,CAAE,MACZ,aAAc,EAAE,MAAM,EAAE,GAAY,EAAE,MAAM,OAAO,CAAE;AAAA,MAEtD,UAAW;AAAA,MACX,WAAY;AAAA,QACX,WAAW,EAAE,MAAM,OAAO;AAAA,QAC1B,kBAAkB,EAAE,MAAM,OAAO;AAAA,QACjC,gBAAgB,EAAE,UAAU,OAAO;AAAA,MACpC;AAAA;AAAA,EACD,CACD,GAEA,sCAAC,mBAAgB,MAAK,UACrB;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ,eAAgB,yCAAmB,QAAS,OAAO,IAAK,CAAE;AAAA,MAClE,UAAW,CAAE,MACZ,aAAc,EAAE,MAAM,EAAE,GAAY,EAAE,MAAM,OAAO,CAAE;AAAA,MAEtD,UAAW;AAAA,MACX,WAAY;AAAA,QACX,WAAW,EAAE,MAAM,OAAO;AAAA,QAC1B,kBAAkB,EAAE,MAAM,OAAO;AAAA,QACjC,gBAAgB,EAAE,UAAU,OAAO;AAAA,MACpC;AAAA;AAAA,EACD,CACD,CACD,CACD,CACD,CACD;AAEF,CAAE;;;AC3GF,IAAAC,WAAuB;AAEvB,IAAAC,wBAAiC;AACjC,IAAAC,cAA8C;;;ACH9C,IAAAC,WAAuB;AACvB,IAAAC,iBAQO;AACP,IAAAC,cAAsG;AACtG,4BAAiB;AACjB,gCAAqB;AACrB,kCAAsB;AACtB,+BAAoB;AACpB,8BAAmB;AACnB,4BAAiB;AACjB,iCAAsB;AACtB,8BAAmB;AACnB,iCAAsB;AACtB,mCAAwB;AACxB,4BAAiB;AACjB,iCAAsB;AAEtB,IAAAD,iBAAsD;;;ACxB/C,SAAS,QAAS,QAAuB,IAAK;AACpD,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,QAAM,gBAAgB,SAAS,cAAe,KAAM;AAEpD,gBAAc,YAAY;AAE1B,SAAO,CAAE,cAAc,aAAa;AACrC;;;ACVA,IAAAE,WAAuB;AACvB,IAAAC,iBAA0C;AAC1C,IAAAC,iBASO;AACP,IAAAC,cAQO;AACP,IAAAF,iBAA4C;AAC5C,IAAAG,gBAAmB;;;ACtBnB,IAAAC,UAAuB;AACvB,IAAAC,iBAAkD;AAClD,IAAAC,iBAAiC;AACjC,IAAAC,cAAsF;AACtF,IAAAC,gBAAmB;AAYZ,IAAM,aAAa,CAAE;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAc;AACb,QAAM,eAAW,uBAA4B,IAAK;AAElD,gCAAW,MAAM;AAChB,QAAK,WAAW,QAAS;AACxB,4BAAuB,MAAM,SAAS,SAAS,MAAM,CAAE;AAAA,IACxD;AAAA,EACD,GAAG,CAAE,WAAW,MAAO,CAAE;AAEzB,QAAM,cAAc,MAAM;AACzB,iBAAa;AACb,eAAW,MAAM;AAAA,EAClB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,WAAY;AAAA,QACX,OAAO,EAAE,IAAI,EAAE,cAAc,QAAQ,OAAO,UAAU,SAAS,cAAc,MAAM,WAAW,GAAG,EAAE;AAAA,MACpG;AAAA,MACE,OAAG,yBAAa,UAAW;AAAA,MAC7B,cAAe,EAAE,UAAU,OAAO,YAAY,OAAO;AAAA,MACrD,iBAAkB,EAAE,UAAU,OAAO,YAAY,OAAO;AAAA,MACxD,SAAU;AAAA;AAAA,IAEV,sCAAC,qBAAM,WAAU,OAAM,YAAW,UAAS,KAAM,GAAI,IAAK,EAAE,GAAG,IAAI,KAClE;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAK;AAAA,QACL,WAAS;AAAA,QACT,iBAAc,kBAAI,cAAc,WAAY;AAAA,QAC5C,YAAa,EAAE,KAAK,SAAS;AAAA,QAC7B,OAAM;AAAA,QACN,YAAa,EAAE,IAAI,EAAE,cAAc,MAAM,EAAE;AAAA;AAAA,IAC5C,GACA;AAAA,MAAC;AAAA;AAAA,QACA,MAAK;AAAA,QACL,OAAM;AAAA,QACN,UAAW;AAAA,QACX,SAAU;AAAA,QACV,kBAAa,kBAAI,qBAAqB,WAAY;AAAA,QAClD,IAAK,EAAE,cAAc,MAAM;AAAA;AAAA,MAE3B,sCAAC,mCAAiB,UAAS,QAAO;AAAA,IACnC,CACD;AAAA,EACD;AAEF;;;AD1CA,IAAM,iBAAiB;AAAA,EACtB,OAAO;AAAA,IACN,WAAO,kBAAI,SAAS,WAAY;AAAA,IAChC,MAAM,uCAAC,4BAAU,UAAS,QAAO;AAAA,IACjC,QAAQ;AAAA,IACR,QAAQ,CAAE,WAAoB;AAC7B,aAAO,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,IAAI;AAAA,IACzD;AAAA,EACD;AAAA,EACA,MAAM;AAAA,IACL,WAAO,kBAAI,QAAQ,WAAY;AAAA,IAC/B,MAAM,uCAAC,2BAAS,UAAS,QAAO;AAAA,IAChC,QAAQ;AAAA,IACR,QAAQ,CAAE,WAAoB;AAC7B,aAAO,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI;AAAA,IACzC;AAAA,EACD;AAAA,EACA,QAAQ;AAAA,IACP,WAAO,kBAAI,UAAU,WAAY;AAAA,IACjC,MAAM,uCAAC,6BAAW,UAAS,QAAO;AAAA,IAClC,QAAQ;AAAA,IACR,QAAQ,CAAE,WAAoB;AAC7B,aAAO,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI;AAAA,IAC3C;AAAA,EACD;AAAA,EACA,WAAW;AAAA,IACV,WAAO,kBAAI,aAAa,WAAY;AAAA,IACpC,MAAM,uCAAC,gCAAc,UAAS,QAAO;AAAA,IACrC,QAAQ;AAAA,IACR,QAAQ,CAAE,WAAoB;AAC7B,aAAO,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI;AAAA,IAC9C;AAAA,EACD;AAAA,EACA,QAAQ;AAAA,IACP,WAAO,kBAAI,iBAAiB,WAAY;AAAA,IACxC,MAAM,uCAAC,oCAAkB,UAAS,QAAO;AAAA,IACzC,QAAQ;AAAA,IACR,QAAQ,CAAE,WAAoB;AAC7B,aAAO,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI;AAAA,IAC3C;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ,WAAO,kBAAI,eAAe,WAAY;AAAA,IACtC,MAAM,uCAAC,kCAAgB,UAAS,QAAO;AAAA,IACvC,QAAQ;AAAA,IACR,QAAQ,CAAE,WAAoB;AAC7B,aAAO,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI;AAAA,IAChD;AAAA,EACD;AAAA,EACA,WAAW;AAAA,IACV,WAAO,kBAAI,aAAa,WAAY;AAAA,IACpC,MAAM,uCAAC,gCAAc,UAAS,QAAO;AAAA,IACrC,QAAQ;AAAA,IACR,QAAQ,CAAE,WAAoB;AAC7B,aAAO,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI;AAAA,IAC9C;AAAA,EACD;AAAA,EACA,MAAM;AAAA,IACL,WAAO,kBAAI,QAAQ,WAAY;AAAA,IAC/B,MAAM,uCAAC,2BAAS,UAAS,QAAO;AAAA,IAChC,QAAQ;AAAA,IACR,QAAQ;AAAA,EACT;AACD;AAMA,IAAM,EAAE,OAAO,aAAa,GAAG,cAAc,IAAI;AAEjD,IAAM,kBAAkC,OAAO,KAAM,aAAc;AAE5D,IAAM,sBAAsB,CAAE,EAAE,OAAO,MAAiC;AAC9E,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAU,EAAG;AAC/C,QAAM,CAAE,cAAc,eAAgB,QAAI,yBAAU,KAAM;AAC1D,QAAM,iBAAa,uBAA0B,IAAK;AAClD,QAAM,qBAAiB,2BAAe,EAAE,SAAS,UAAU,CAAE;AAE7D,QAAM,kBAAc,+BAAgB;AAAA,IACnC;AAAA,IACA,UAAU,CAAE,QAAS,gBAAgB,OAAQ,CAAE,WAAY,IAAI,OAAO,SAAU,MAAO,CAAE;AAAA,EAC1F,CAAE;AAEF,QAAM,wBAAoB,wBAAS,MAAM,OAAO,OAAQ,aAAc,GAAG,CAAC,CAAE;AAE5E,QAAM,kBAAkB,MAAM;AAC7B,UAAM,YAAY,OAAO,cAAe,MAAO;AAC/C,gBAAa,UAAU,QAAQ,EAAG;AAClC,oBAAiB,UAAU,WAAW,QAAS;AAC/C,mBAAe,KAAM,WAAW,OAAQ;AAAA,EACzC;AAEA,QAAM,kBAAkB,CAAE,UAAkD;AAC3E,gBAAa,MAAM,OAAO,KAAM;AAAA,EACjC;AAEA,QAAM,qBAAqB,MAAM;AAChC,oBAAiB,CAAE,YAAa;AAAA,EACjC;AAEA,QAAM,kBAAkB,MAAM;AAC7B,QAAK,UAAW;AACf,aACE,MAAM,EACN,MAAM,EACN,QAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ,eAAe,WAAW;AAAA,MACnC,CAAE,EACD,IAAI;AAAA,IACP,OAAO;AACN,aAAO,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI;AAAA,IACxC;AACA,mBAAe,MAAM;AAAA,EACtB;AAEA,EAAM,mBAAW,MAAM;AACtB,YAAQ,UAAU,MAAM;AAAA,EACzB,GAAG,CAAE,MAAO,CAAE;AAEd,SACC;AAAA,IAAC;AAAA;AAAA,MACA,KAAM;AAAA,MACN,IAAK;AAAA,QACJ,SAAS;AAAA,QACT,KAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,YAAY,eAAe,SAAS,WAAW;AAAA,QAC/C,eAAe,eAAe,SAAS,SAAS;AAAA,MACjD;AAAA;AAAA,IAEA,uCAAC,uBAAQ,OAAQ,YAAY,OAAQ,WAAU,OAAM,IAAK,EAAE,cAAc,MAAM,KAC/E,uCAAC,0BAAW,cAAa,YAAY,OAAQ,SAAU,MAAM,YAAY,OAAQ,MAAO,GAAI,MAAK,UAC9F,YAAY,IACf,CACD;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA,OAAQ;AAAA,QACR,MAAK;AAAA,QACL,IAAK;AAAA,UACJ,SAAS;AAAA,UACT,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,CAAE,MAAO,qCAAyB,WAAY,QAAS,qCAAyB,YAAa,QAAS,qCAAyB,UAAW,EAAG,GAC5I;AAAA,YACC,cAAc;AAAA,YACd,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,kBAAkB;AAAA,cACjB,YAAY;AAAA,YACb;AAAA,YACA,sBAAsB;AAAA,cACrB,YAAY;AAAA,YACb;AAAA,UACD;AAAA,QACF;AAAA;AAAA,MAEE,kBAAkB,IAAK,CAAE,WAC1B,uCAAC,uBAAQ,OAAQ,OAAO,OAAQ,KAAM,OAAO,QAAS,WAAU,SAC/D;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,OAAO;AAAA,UACf,cAAa,OAAO;AAAA,UACpB,MAAK;AAAA,UACL,SAAU,MAAM;AACf,gBAAK,OAAO,WAAW,QAAS;AAC/B,8BAAgB;AAAA,YACjB,OAAO;AACN,qBAAO,SAAU,MAAO;AAAA,YACzB;AAEA,oBAAQ,UAAU,MAAM;AAAA,UACzB;AAAA;AAAA,QAEE,OAAO;AAAA,MACV,CACD,CACC;AAAA,IACH;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACA,YAAa;AAAA,QACb,WAAY;AAAA,QACZ,cAAe;AAAA,QACf,OAAQ;AAAA,QACR,UAAW;AAAA,QACX;AAAA,QACA,gBAAiB;AAAA;AAAA,IAClB;AAAA,EACD;AAEF;;;AFtLA,IAAM,gBAAgB;AAEtB,IAAM,cAAc,CAAE,UAAsB,iBAAwC;AACnF,QAAM,iBAAa,uBAAQ,KAAM;AAEjC,gCAAW,MAAM;AAChB,QAAK,WAAW,SAAU;AACzB,eAAS;AAAA,IACV,OAAO;AACN,iBAAW,UAAU;AAAA,IACtB;AAAA,EAED,GAAG,YAAa;AACjB;AAEA,IAAM,sBAAsB,CAC3B,MACA,cAC0C;AAC1C,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM;AAChC,QAAM,QAAQ,KAAK,YAAa,IAAK;AACrC,QAAM,MAAM,KAAK,YAAa,EAAG;AAEjC,QAAM,QAAS,MAAM,OAAO,IAAI,QAAS,IAAI,UAAU;AACvD,QAAM,MAAM,KAAK,IAAK,MAAM,KAAK,IAAI,GAAI,IAAI,UAAU;AAEvD,SAAO,EAAE,MAAM,IAAI;AACpB;AASA,IAAM,UAAU,CAAE,EAAE,UAAU,cAAc,QAAQ,IAAI,OAAO,MAAqB;AACnF,QAAM,kBACL,uCAAC,mBAAI,KAAM,cAAiB,GAAG,MAC5B,QACH;AAGD,SAAO,SACN;AAAA,IAAC;AAAA;AAAA,MACA,aAAc,CAAE,UAAyB;AACxC,YACC,aAAa,SAAS,SAAU,MAAM,MAAe,KACrD,OAAO,KAAK,IAAI,SAAU,MAAM,MAAe,GAC9C;AACD;AAAA,QACD;AAEA,iBAAU,KAAM;AAAA,MACjB;AAAA;AAAA,IAEE;AAAA,EACH,IAEA,gEAAI,eAAiB;AAEvB;AAEO,IAAM,mBAAe;AAAA,EAC3B,CACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,aAAa,CAAC;AAAA,IACd,iBAAiB;AAAA,IACjB,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,KAAK,CAAC;AAAA,IACN,SAAS;AAAA,IACT,4BAA4B;AAAA,IAC5B,cAAc;AAAA,EACf,GACA,QACI;AACJ,UAAM,mBAAe,uBAA0B,IAAK;AACpD,UAAM,iBAAa,2BAAe,EAAE,SAAS,WAAW,kBAAkB,KAAK,CAAE;AACjF,UAAM,CAAE,oBAAoB,qBAAsB,QAAI,yBAAU,KAAM;AACtE,UAAM,0BAA0B,CAAC,CAAE,cAAc,WAAW;AAC5D,UAAM,CAAE,eAAe,gBAAiB,QAAI,yBAAkD,IAAK;AAEnG,UAAM,iBAAiB,CAAE,SAAsB;AAC9C,YAAM,eAAe,CAAE,KAAK,MAAM,UAAU;AAC5C,4BAAuB,YAAa;AAEpC,UAAK,cAAe;AACnB,cAAM,YAAY,aAAa,SAAS,sBAAsB;AAC9D,yBAAkB,oBAAqB,MAAM,SAAU,CAAE;AAAA,MAC1D,OAAO;AACN,yBAAkB,IAAK;AAAA,MACxB;AAEA,qBAAgB,MAAM,KAAK,MAAM,CAAE;AAAA,IACpC;AAEA,UAAM,YAAY,CAAE,GAAe,UAA0B;AAC5D,UAAK,MAAM,QAAQ,UAAW;AAC7B,iBAAU,KAAM;AAAA,MACjB;AAAA,IACD;AAEA,UAAM,0BAA0B,cAC7B;AAAA,MACA,SAAS;AAAA,MACT,OAAO;AAAA,MACP,SAAS;AAAA,IACT,IACA;AAEH,UAAM,WAAW,CAAE,EAAE,QAAQ,cAAc,MAA2B;AACrE,YAAM,WAA0B,cAAc,QAAQ;AAEtD,eAAU,QAAS,QAAS,IAAI,OAAO,QAAS;AAAA,IACjD;AAEA,UAAM,aAAS,0BAAW;AAAA,MACzB,YAAY;AAAA,QACX,0BAAAC,QAAS,OAAQ;AAAA,UAChB,SAAS;AAAA,QACV,CAAE;AAAA,QACF,2BAAAC,QAAU,OAAQ;AAAA,UACjB,WAAY,EAAE,eAAe,GAAI;AAChC,kBAAM,MAAM,eAAe;AAC3B,mBAAO,CAAE,KAAK,EAAE,GAAG,gBAAgB,OAAO,eAAe,OAAO,eAAe,GAAG,CAAE;AAAA,UACrF;AAAA,QACD,CAAE;AAAA,QACF,yBAAAC,QAAQ,OAAQ;AAAA,UACf,WAAY,EAAE,MAAM,eAAe,GAAI;AACtC,gBAAK,aAAc;AAClB,qBAAO;AAAA,gBACN;AAAA,gBACA,EAAE,GAAG,gBAAgB,OAAO,eAAe,OAAO,eAAe;AAAA,gBACjE;AAAA,cACD;AAAA,YACD;AAEA,kBAAM,QAAQ,KAAK,QAAQ,OAAO,SAAU,KAAK,MAAM,KAAM,IAC1D,KAAK,MAAM,QACX,KAAK,QAAQ,OAAQ,CAAE;AAE1B,mBAAO,CAAE,IAAK,KAAM,IAAI,EAAE,GAAG,gBAAgB,OAAO,eAAe,OAAO,eAAe,GAAG,CAAE;AAAA,UAC/F;AAAA,QACD,CAAE,EAAE,UAAW;AAAA,UACd,QAAQ,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE;AAAA,QAC5B,CAAE;AAAA,QACF,sBAAAC,QAAK,UAAW;AAAA,UACf,aAAa;AAAA,QACd,CAAE;AAAA,QACF,sBAAAC;AAAA,QACA,sBAAAC;AAAA,QACA,wBAAAC;AAAA,QACA,wBAAAC;AAAA,QACA,6BAAAC;AAAA,QACA,2BAAAC;AAAA,QACA,2BAAAC;AAAA,QACA,4BAAAC,QAAU,OAAQ;AAAA,UACjB,uBAAuB;AACtB,mBAAO;AAAA,cACN,OAAO,MAAM,KAAK,OAAO,SAAS,aAAa;AAAA,YAChD;AAAA,UACD;AAAA,QACD,CAAE;AAAA,MACH;AAAA,MACA,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,aAAa;AAAA,QACZ,YAAY;AAAA,UACX,GAAG;AAAA,UACH,OAAO,WAAW,SAAS;AAAA,UAC3B,MAAM;AAAA,QACP;AAAA,QACA,iBAAiB;AAAA,MAClB;AAAA,IACD,CAAE;AAEF,gBAAa,MAAM;AAClB,UAAK,CAAE,QAAS;AACf;AAAA,MACD;AAEA,YAAM,iBAAiB,OAAO,QAAQ;AAEtC,UAAK,mBAAmB,OAAQ;AAC/B,eAAO,SAAS,WAAY,OAAO,EAAE,YAAY,MAAM,CAAE;AAAA,MAC1D;AAAA,IACD,GAAG,CAAE,QAAQ,KAAM,CAAE;AAErB,UAAM,uBAAuB,MAAM;AAClC,UAAK,CAAE,eAAgB;AACtB,eAAO,EAAE,MAAM,GAAG,KAAK,EAAE;AAAA,MAC1B;AAEA,YAAM,YAAY,aAAa,SAAS,sBAAsB;AAC9D,UAAK,CAAE,WAAY;AAClB,eAAO,EAAE,MAAM,GAAG,KAAK,EAAE;AAAA,MAC1B;AAEA,YAAM,UAAU,4BAA4B,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE;AAEnE,aAAO;AAAA,QACN,MAAM,UAAU,OAAO,cAAc,OAAO,QAAQ;AAAA,QACpD,KAAK,UAAU,MAAM,cAAc,MAAM,QAAQ;AAAA,MAClD;AAAA,IACD;AAEA,WACC,gEACC,uCAAC,WAAQ,cAA8B,QAAkB,IAAU,UAClE,uCAAC,gCAAc,KAAY,QAAkB,CAC9C,GACE,eAAe,aAAa,WAC7B;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,UACX,MAAM;AAAA,YACL,IAAI;AAAA,cACH,eAAe;AAAA,YAChB;AAAA,UACD;AAAA,QACD;AAAA,QACE,OAAG,yBAAa,UAAW;AAAA,QAC7B,MAAO,sBAAsB,kBAAkB;AAAA,QAC/C,iBAAgB;AAAA,QAChB,gBAAiB,qBAAqB;AAAA,QACtC,cAAe,EAAE,UAAU,OAAO,YAAY,SAAS;AAAA,QACvD,iBAAkB,EAAE,UAAU,UAAU,YAAY,SAAS;AAAA;AAAA,MAE7D,uCAAC,uBAAoB,QAAkB;AAAA,IACxC,CAEF;AAAA,EAEF;AACD;;;ADjRO,IAAM,uBAAuB;AAAA,EACnC,CAAE;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACD,MAIO;AACN,UAAM,EAAE,OAAO,SAAS,IAAI,aAAc,sCAAiB;AAC3D,UAAM,eAAe,CAAE,aAAuB,SAAU,QAAmB;AAE3E,WACC,uCAAC,sBACA;AAAA,MAAC;AAAA;AAAA,QACA,IAAK;AAAA,UACJ,GAAG;AAAA,UACH,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,cAAc;AAAA,UACd,YAAY;AAAA,UACZ,WAAW;AAAA,YACV,aAAa;AAAA,UACd;AAAA,UACA,kBAAkB;AAAA,YACjB,aAAa;AAAA,YACb,WAAW;AAAA,UACZ;AAAA,UACA,wBAAwB;AAAA,YACvB,SAAS;AAAA,UACV;AAAA,UACA,kBAAkB;AAAA,YACjB,WAAW;AAAA,YACX,UAAU;AAAA,YACV,OAAO;AAAA,cACN,OAAO;AAAA,YACR;AAAA,UACD;AAAA,UACA,mBAAmB;AAAA,YAClB,KAAK;AAAA,UACN;AAAA,UACA,GAAG;AAAA,QACJ;AAAA,QACE,GAAG;AAAA,QACH,GAAG;AAAA;AAAA,MAEL,uCAAC,gBAAa,OAAQ,SAAS,IAAK,UAAW,cAAe;AAAA,IAC/D,CACD;AAAA,EAEF;AACD;;;AK9DA,IAAAC,WAAuB;AACvB,IAAAC,iBAA6B;AAC7B,IAAAC,cAA4C;AAS5C,IAAM,uBAAmB,oBAAQ,sBAAW,EAAG,CAAE,EAAE,MAAM,OAAS;AAAA,EACjE,OAAO,MAAM,QAAS,GAAI;AAAA,EAC1B,QAAQ,MAAM,QAAS,GAAI;AAC5B,EAAI;AAEG,IAAM,kBAAkB,CAAE,EAAE,aAAa,SAAS,UAAU,OAAO,OAAO,MAChF,uCAAC,uBAAQ,OAAQ,aAAc,WAAU,OAAM,oBAAkB,QAChE,uCAAC,oBAAiB,cAAa,aAAc,MAAc,SAAoB,YAC9E,uCAAC,+BAAa,UAAW,MAAO,CACjC,CACD;;;ACrBD,IAAAC,WAAuB;AACvB,IAAAC,iBAAoC;AAEpC,IAAAC,iBAA+D;AAC/D,IAAAC,cASO;AACP,IAAAC,gBAAmB;AAWnB,IAAMC,QAAO;AA8Fb,IAAMC,mBAAkB;AAEjB,IAAMC,YAAW,CAAQ;AAAA,EAC/B;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,QAAQC,SAAQ,CAAC;AAAA,EACjB,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,uBAAuB;AAAA,EACvB;AAAA,EACA,UAAU,kBAAkBF;AAAA,EAC5B,aAAa;AACd,MAA2C;AAC1C,QAAM,CAAE,UAAU,WAAY,QAAI,yBAAU,eAAgB;AAE5D,QAAM,aAAaE,OAAM;AAAA,IAAK,CAAE,MAAM,UACrC,cAAc,WAAW,eAAe,aAAa,MAAO,EAAE,MAAM,MAAM,CAAE,IAAI,OAAQ,KAAM;AAAA,EAC/F;AAEA,QAAM,kBAAkB,MAAM;AAC7B,UAAM,UAAU,gBAAiB,aAAa,aAAc;AAC5D,UAAM,WAAWA,OAAM;AACvB;AAAA,MACC,CAAE,GAAGA,QAAO,OAAQ;AAAA,MACpB,CAAC;AAAA,MACD;AAAA,QACC,QAAQ,EAAE,MAAM,OAAO,SAAS,CAAE,EAAE,OAAO,UAAU,MAAM,QAAQ,CAAE,EAAE;AAAA,MACxE;AAAA,IACD;AAEA,QAAK,WAAY;AAChB,kBAAa,QAAS;AAAA,IACvB;AAAA,EACD;AAEA,QAAM,wBAAwB,CAAE,UAAmB;AAClD,UAAM,UAAU,gBAAiBA,OAAO,KAAM,CAAE;AAGhD,UAAM,aAAa,IAAI;AAEvB;AAAA,MACC,CAAE,GAAGA,OAAM,MAAO,GAAG,UAAW,GAAG,SAAS,GAAGA,OAAM,MAAO,UAAW,CAAE;AAAA,MACzE,CAAC;AAAA,MACD;AAAA,QACC,QAAQ,EAAE,MAAM,aAAa,SAAS,CAAE,EAAE,OAAO,MAAM,QAAQ,CAAE,EAAE;AAAA,MACpE;AAAA,IACD;AAAA,EACD;AAEA,QAAM,qBAAqB,CAAE,UAAmB;AAC/C,UAAM,cAAcA,OAAO,KAAM;AAEjC;AAAA,MACCA,OAAM,OAAQ,CAAE,GAAG,QAAS;AAC3B,eAAO,QAAQ;AAAA,MAChB,CAAE;AAAA,MACF,CAAC;AAAA,MACD,EAAE,QAAQ,EAAE,MAAM,UAAU,SAAS,CAAE,EAAE,OAAO,MAAM,YAAY,CAAE,EAAE,EAAE;AAAA,IACzE;AAAA,EACD;AAEA,QAAM,4BAA4B,CAAE,UAAmB;AACtD;AAAA,MACCA,OAAM,IAAK,CAAE,OAAO,QAAS;AAC5B,YAAK,QAAQ,OAAQ;AACpB,gBAAM,EAAE,UAAU,cAAc,GAAG,KAAK,IAAI;AAG5C,iBAAO,EAAE,GAAG,MAAM,GAAK,eAAe,CAAC,IAAI,EAAE,UAAU,KAAK,EAAI;AAAA,QACjE;AAEA,eAAO;AAAA,MACR,CAAE;AAAA,MACF,CAAC;AAAA,MACD,EAAE,QAAQ,EAAE,MAAM,iBAAiB,EAAE;AAAA,IACtC;AAAA,EACD;AAEA,QAAM,gBAAgB,CAAE,eAAyB,SAAwC;AACxF;AAAA,MACC,cAAc,IAAK,CAAE,OAAQ;AAC5B,eAAOA,OAAO,WAAW,QAAS,EAAG,CAAE;AAAA,MACxC,CAAE;AAAA,MACF,CAAC;AAAA,MACD,EAAE,QAAQ,EAAE,MAAM,WAAW,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE;AAAA,IACrD;AAAA,EACD;AAEA,QAAM,mBAAmB,YAAY;AACrC,QAAM,oBAAoB,oBAAoB;AAE9C,QAAM,YACL;AAAA,IAAC;AAAA;AAAA,MACA,MAAOH;AAAA,MACP,IAAK;AAAA,QACJ,IAAI;AAAA,MACL;AAAA,MACA,UAAW;AAAA,MACX,SAAU;AAAA,MACV,kBAAa,kBAAI,YAAY,WAAY;AAAA;AAAA,IAEzC,uCAAC,2BAAS,UAAWA,OAAO;AAAA,EAC7B;AAGD,SACC,uCAAC,kBAAe,KAAM,KACrB,uCAAC,kBAAe,OAAgB,WAAY,qBACzC,oBACD;AAAA,IAAC;AAAA;AAAA,MACA,WAAU;AAAA,MACV,SAAU;AAAA,MACV,OAAM;AAAA,MACN,WAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,EAAE,EAAE;AAAA;AAAA,IAE7C,uCAAC,mBAAI,IAAK,EAAE,GAAK,mBAAmB,EAAE,QAAQ,cAAc,IAAI,CAAC,EAAI,KAAM,SAAW;AAAA,EACvF,IAEA,SAEF,GACE,IAAI,WAAW,UAChB,uCAAC,oBAAiB,OAAQ,YAAa,UAAW,iBAC/C,WAAW,IAAK,CAAE,QAAS;AAC5B,UAAM,QAAQ,WAAW,QAAS,GAAI;AACtC,UAAM,QAAQG,OAAO,KAAM;AAE3B,QAAK,CAAE,OAAQ;AACd,aAAO;AAAA,IACR;AAEA,WACC,uCAAC,gBAAa,IAAK,KAAM,KAAM,YAAa,GAAI,IAAK,UAAW,CAAE,cACjE;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,cAAe,OAAO;AAAA,QACtB,OACC,uCAAC,yBAAsB,SACtB,uCAAC,aAAa,OAAb,EAAmB,OAAgB,OAAgB,CACrD;AAAA,QAED,WACC,uCAAC,wBAAqB,SACrB,uCAAC,aAAa,MAAb,EAAkB,OAAgB,CACpC;AAAA,QAED,YAAa,MAAM,mBAAoB,KAAM;AAAA,QAC7C,eAAgB,MAAM,sBAAuB,KAAM;AAAA,QACnD,mBAAoB,MAAM,0BAA2B,KAAM;AAAA,QAC3D,aAAc,aAAa,aAAa;AAAA,QACxC,QAAS,MAAM,YAAaF,gBAAgB;AAAA,QAC5C;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAU,aAAa;AAAA,QACvB;AAAA;AAAA,MAEE,CAAE,UACH;AAAA,QAAC,aAAa;AAAA,QAAb;AAAA,UACE,GAAG;AAAA,UACL;AAAA,UACA,MAAO,OAAQ,KAAM;AAAA,UACrB;AAAA;AAAA,MACD;AAAA,IAEF,CACD;AAAA,EAEF,CAAE,CACH,CAEF;AAEF;AAoBA,IAAM,eAAe,CAAQ;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAA+B;AAC9B,QAAM,EAAE,cAAc,cAAc,KAAK,OAAO,IAAI,WAAY,aAAa,MAAO;AAEpF,QAAM,qBAAiB,kBAAI,aAAa,WAAY;AACpD,QAAM,cAAc,mBAAe,kBAAI,QAAQ,WAAY,QAAI,kBAAI,QAAQ,WAAY;AACvF,QAAM,kBAAc,kBAAI,UAAU,WAAY;AAE9C,SACC,gEACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAM;AAAA,MACN,kBAAa,kBAAI,aAAa,WAAY;AAAA,MACxC,OAAG,yBAAa,YAAa;AAAA,MAC/B;AAAA,MACA,SACC,gEACG,iBACD,uCAAC,uBAAQ,OAAQ,gBAAiB,WAAU,SAC3C,uCAAC,0BAAW,MAAOD,OAAO,SAAU,eAAgB,cAAa,kBAChE,uCAAC,2BAAS,UAAWA,OAAO,CAC7B,CACD,GAEC,cACD,uCAAC,uBAAQ,OAAQ,aAAc,WAAU,SACxC,uCAAC,0BAAW,MAAOA,OAAO,SAAU,mBAAoB,cAAa,eAClE,eAAe,uCAAC,6BAAW,UAAWA,OAAO,IAAK,uCAAC,0BAAQ,UAAWA,OAAO,CAChF,CACD,GAEC,UAAW,KAAM,GACjB,cACD,uCAAC,uBAAQ,OAAQ,aAAc,WAAU,SACxC,uCAAC,0BAAW,MAAOA,OAAO,SAAU,YAAa,cAAa,eAC7D,uCAAC,wBAAM,UAAWA,OAAO,CAC1B,CACD,CAEF;AAAA;AAAA,EAEF,GACA,uCAAC,mBAAgB,OAAQ,KAAK,sBAAsB,EAAE,OAAU,GAAG,cAAe,UAAW,OAC5F,uCAAC,uBAAM,SAAU,EAAE,UAAU,IAAI,CAAE,CAAG,CACvC,CACD;AAEF;AAEA,IAAM,aAAa,CAAE,aAAsB,WAAwB;AAClE,QAAM,CAAE,KAAK,MAAO,QAAI,yBAAgC,IAAK;AAE7D,QAAM,mBAAe,2BAAe,EAAE,SAAS,UAAU,CAAE;AAE3D,QAAM,mBAAe,yBAAa,YAAa;AAE/C,gCAAW,MAAM;AAChB,QAAK,eAAe,KAAM;AACzB,mBAAa,KAAM,GAAI;AACvB,eAAS;AAAA,IACV;AAAA,EAED,GAAG,CAAE,GAAI,CAAE;AAEX,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;","names":["Repeater","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","React","import_react","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_icons","import_ui","import_i18n","React","import_react","import_ui","import_react","isItemDisabled","items","SIZE","React","React","import_icons","import_ui","import_i18n","items","React","import_ui","import_i18n","import_react","React","import_react","import_ui","Label","isItemDisabled","React","isItemDisabled","React","import_icons","import_ui","import_i18n","SIZE","items","React","import_icons","import_ui","import_i18n","SIZE","items","isItemDisabled","React","import_icons","import_ui","import_i18n","SIZE","React","import_ui","React","import_ui","React","import_ui","import_react","React","import_ui","React","import_react","import_ui","React","React","import_react","Context","items","items","Control","React","import_editor_props","import_i18n","React","import_react","import_editor_props","import_i18n","import_i18n","React","import_editor_props","import_ui","import_i18n","React","import_react","import_editor_props","import_ui","import_i18n","import_react","React","import_editor_props","import_ui","items","React","import_ui","StyledUnstableColorIndicator","React","React","import_ui","React","import_ui","getInitialValue","React","import_react","React","import_editor_props","React","import_react","import_icons","import_ui","React","import_ui","items","Content","React","React","import_editor_props","import_ui","React","import_react","import_ui","import_i18n","React","import_ui","items","React","import_react","import_editor_props","import_editor_responsive","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_icons","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_http_client","import_icons","import_utils","import_i18n","React","import_react","import_icons","import_ui","AutocompleteBase","React","import_editor_props","import_ui","SIZE","React","import_editor_elements","import_editor_props","import_editor_ui","import_ui","import_i18n","React","import_editor_ui","import_ui","React","import_react","import_editor_props","import_editor_responsive","import_icons","import_ui","import_i18n","currentValue","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_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","StyledUnstableColorIndicator","React","import_react","import_editor_props","import_ui","isItemDisabled","childArrayPropTypeUtil","ItemIcon","ItemLabel","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_react","import_editor_props","import_icons","import_ui","import_i18n","import_editor_props","React","import_ui","import_i18n","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","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","items","React","import_icons","React","import_ui","import_i18n","Label","React","import_editor_ui","import_icons","import_ui","import_i18n","React","import_editor_props","import_ui","import_i18n","React","import_editor_props","import_ui","import_i18n","ControlFields","SIZE","SIZE","Repeater","getInitialValue","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","React","import_react","import_editor_props","import_ui","import_i18n","import_editor_elements","React","import_react","import_editor_props","import_icons","import_ui","import_i18n","React","import_editor_props","import_ui","React","import_editor_props","import_ui","React","import_react","import_ui","React","import_react","import_icons","import_ui","import_i18n","React","import_react","import_icons","import_ui","import_i18n","Document","Paragraph","Heading","Link","Text","Bold","Italic","Strike","Superscript","Subscript","Underline","HardBreak","React","import_icons","import_ui","React","import_react","import_icons","import_ui","import_i18n","SIZE","EMPTY_OPEN_ITEM","Repeater","items"]}
|