@elementor/editor-editing-panel 3.35.0-371 → 3.35.0-372

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/css-classes/css-class-convert-local.tsx","../src/contexts/classes-prop-context.tsx","../src/contexts/element-context.tsx","../src/contexts/style-context.tsx","../src/errors.ts","../src/components/css-classes/css-class-selector.tsx","../src/utils/get-styles-provider-color.ts","../src/provider-colors-registry.ts","../src/utils/tracking/subscribe.ts","../src/components/creatable-autocomplete/creatable-autocomplete.tsx","../src/components/creatable-autocomplete/autocomplete-option-internal-properties.ts","../src/components/creatable-autocomplete/use-autocomplete-change.ts","../src/components/creatable-autocomplete/use-autocomplete-states.ts","../src/components/creatable-autocomplete/use-create-option.ts","../src/components/creatable-autocomplete/use-filter-options.ts","../src/components/css-classes/css-class-item.tsx","../src/components/css-classes/css-class-context.tsx","../src/components/css-classes/css-class-menu.tsx","../src/components/style-indicator.tsx","../src/components/css-classes/local-class-sub-menu.tsx","../src/components/css-classes/use-can-convert-local-class-to-global.ts","../src/components/css-classes/use-apply-and-unapply-class.ts","../src/apply-unapply-actions.ts","../src/components/custom-css-indicator.tsx","../src/hooks/use-custom-css.ts","../src/hooks/use-styles-fields.ts","../src/hooks/use-styles-rerender.ts","../src/components/editing-panel.tsx","../src/control-replacement.tsx","../src/controls-actions.ts","../src/action.tsx","../src/popover-action.tsx","../src/editing-panel-replacement-registry.tsx","../src/components/editing-panel-error-fallback.tsx","../src/components/editing-panel-tabs.tsx","../src/contexts/scroll-context.tsx","../src/hooks/use-default-panel-settings.ts","../src/hooks/use-state-by-element.ts","../src/components/interactions-tab.tsx","../src/components/sections-list.tsx","../src/components/settings-tab.tsx","../src/components/section.tsx","../src/contexts/section-context.tsx","../src/components/collapsible-content.tsx","../src/components/settings-control.tsx","../src/controls-registry/control.tsx","../src/controls-registry/controls-registry.tsx","../src/controls-registry/control-type-container.tsx","../src/controls-registry/settings-field.tsx","../src/utils/prop-dependency-utils.ts","../src/controls-registry/create-top-level-object-type.ts","../src/field-indicators-registry.ts","../src/components/control-label.tsx","../src/components/style-tab.tsx","../src/contexts/styles-inheritance-context.tsx","../src/styles-inheritance/create-styles-inheritance.ts","../src/styles-inheritance/create-snapshots-manager.ts","../src/styles-inheritance/utils.ts","../src/hooks/use-active-style-def-id.ts","../src/components/style-sections/background-section/background-section.tsx","../src/controls-registry/styles-field.tsx","../src/hooks/use-styles-field.ts","../src/controls-registry/conditional-field.tsx","../src/components/section-content.tsx","../src/components/style-sections/border-section/border-section.tsx","../src/components/style-sections/border-section/border-color-field.tsx","../src/components/styles-field-layout.tsx","../src/components/style-sections/border-section/border-radius-field.tsx","../src/hooks/use-direction.ts","../src/sync/get-elementor-globals.ts","../src/styles-inheritance/components/ui-providers.tsx","../src/components/style-sections/border-section/border-style-field.tsx","../src/components/style-sections/border-section/border-width-field.tsx","../src/components/style-sections/effects-section/effects-section.tsx","../src/utils/get-recently-used-styles.ts","../src/components/panel-divider.tsx","../src/components/style-sections/effects-section/blend-mode-field.tsx","../src/components/style-sections/effects-section/opacity-control-field.tsx","../src/components/style-sections/layout-section/layout-section.tsx","../src/hooks/use-computed-style.ts","../src/components/style-sections/layout-section/align-content-field.tsx","../src/components/style-sections/layout-section/utils/rotated-icon.tsx","../src/components/style-sections/layout-section/align-items-field.tsx","../src/components/style-sections/layout-section/align-self-child-field.tsx","../src/components/style-sections/layout-section/display-field.tsx","../src/components/style-sections/layout-section/flex-direction-field.tsx","../src/components/style-sections/layout-section/flex-order-field.tsx","../src/components/style-sections/layout-section/flex-size-field.tsx","../src/components/style-sections/layout-section/gap-control-field.tsx","../src/components/style-sections/layout-section/justify-content-field.tsx","../src/components/style-sections/layout-section/wrap-field.tsx","../src/components/style-sections/position-section/position-section.tsx","../src/components/style-sections/position-section/dimensions-field.tsx","../src/components/style-sections/position-section/offset-field.tsx","../src/components/style-sections/position-section/position-field.tsx","../src/components/style-sections/position-section/z-index-field.tsx","../src/components/style-sections/size-section/size-section.tsx","../src/components/style-tab-collapsible-content.tsx","../src/styles-inheritance/components/styles-inheritance-section-indicators.tsx","../src/components/style-sections/size-section/object-fit-field.tsx","../src/components/style-sections/size-section/overflow-field.tsx","../src/components/style-sections/spacing-section/spacing-section.tsx","../src/components/style-sections/typography-section/typography-section.tsx","../src/components/style-sections/typography-section/column-count-field.tsx","../src/components/style-sections/typography-section/column-gap-field.tsx","../src/components/style-sections/typography-section/font-family-field.tsx","../src/components/style-sections/typography-section/hooks/use-font-families.ts","../src/components/style-sections/typography-section/font-size-field.tsx","../src/components/style-sections/typography-section/font-style-field.tsx","../src/components/style-sections/typography-section/font-weight-field.tsx","../src/components/style-sections/typography-section/letter-spacing-field.tsx","../src/components/style-sections/typography-section/line-height-field.tsx","../src/components/style-sections/typography-section/text-alignment-field.tsx","../src/components/style-sections/typography-section/text-color-field.tsx","../src/components/style-sections/typography-section/text-decoration-field.tsx","../src/components/style-sections/typography-section/text-direction-field.tsx","../src/components/style-sections/typography-section/text-stroke-field.tsx","../src/components/add-or-remove-content.tsx","../src/components/style-sections/typography-section/transform-field.tsx","../src/components/style-sections/typography-section/word-spacing-field.tsx","../src/components/style-tab-section.tsx","../src/components/popover-body.tsx","../src/init.ts","../src/hooks/use-open-editor-panel.ts","../src/panel.ts","../src/sync/is-atomic-widget-selected.ts","../src/components/editing-panel-hooks.tsx","../src/controls-registry/element-controls/tabs-control/tabs-control.tsx","../src/controls-registry/element-controls/get-element-by-type.ts","../src/controls-registry/element-controls/tabs-control/use-actions.ts","../src/controls-registry/element-controls/registry.ts","../src/dynamics/init.ts","../src/dynamics/components/background-control-dynamic-tag.tsx","../src/dynamics/hooks/use-dynamic-tag.ts","../src/dynamics/hooks/use-prop-dynamic-tags.ts","../src/dynamics/sync/get-elementor-config.ts","../src/dynamics/sync/get-atomic-dynamic-tags.ts","../src/dynamics/utils.ts","../src/dynamics/components/dynamic-selection-control.tsx","../src/hooks/use-persist-dynamic-value.ts","../src/dynamics/dynamic-control.tsx","../src/dynamics/components/dynamic-conditional-control.tsx","../src/dynamics/components/dynamic-selection.tsx","../src/dynamics/dynamic-transformer.ts","../src/dynamics/errors.ts","../src/dynamics/hooks/use-prop-dynamic-action.tsx","../src/reset-style-props.tsx","../src/utils/is-equal.ts","../src/styles-inheritance/components/styles-inheritance-indicator.tsx","../src/styles-inheritance/components/styles-inheritance-infotip.tsx","../src/styles-inheritance/hooks/use-normalized-inheritance-chain-items.tsx","../src/styles-inheritance/styles-inheritance-transformers-registry.tsx","../src/styles-inheritance/components/infotip/breakpoint-icon.tsx","../src/styles-inheritance/components/infotip/label-chip.tsx","../src/styles-inheritance/components/infotip/value-component.tsx","../src/styles-inheritance/components/infotip/action-icons.tsx","../src/styles-inheritance/init-styles-inheritance-transformers.ts","../src/styles-inheritance/consts.ts","../src/styles-inheritance/transformers/array-transformer.tsx","../src/styles-inheritance/transformers/background-color-overlay-transformer.tsx","../src/styles-inheritance/transformers/background-gradient-overlay-transformer.tsx","../src/styles-inheritance/transformers/background-image-overlay-transformer.tsx","../src/styles-inheritance/transformers/box-shadow-transformer.tsx","../src/styles-inheritance/transformers/color-transformer.tsx","../src/styles-inheritance/transformers/repeater-to-items-transformer.tsx","../src/styles-inheritance/init.ts"],"sourcesContent":["export { useBoundProp } from '@elementor/editor-controls';\nexport { type ValidationEvent, type ValidationResult } from './components/creatable-autocomplete';\nexport { injectIntoCssClassConvert } from './components/css-classes/css-class-convert-local';\nexport { injectIntoClassSelectorActions } from './components/css-classes/css-class-selector';\nexport { CustomCssIndicator } from './components/custom-css-indicator';\nexport { injectIntoPanelHeaderTop } from './components/editing-panel';\nexport { PopoverBody } from './components/popover-body';\nexport { SectionContent } from './components/section-content';\nexport { SettingsControl } from './components/settings-control';\nexport { StyleIndicator } from './components/style-indicator';\nexport { useFontFamilies } from './components/style-sections/typography-section/hooks/use-font-families';\nexport { injectIntoStyleTab } from './components/style-tab';\nexport { StyleTabSection } from './components/style-tab-section';\nexport { useClassesProp } from './contexts/classes-prop-context';\nexport { ElementProvider, useElement } from './contexts/element-context';\nexport { useSectionWidth } from './contexts/section-context';\nexport { useStyle } from './contexts/style-context';\nexport { registerControlReplacement } from './control-replacement';\nexport { controlActionsMenu } from './controls-actions';\nexport { controlsRegistry, type ControlType } from './controls-registry/controls-registry';\nexport { StylesProviderCannotUpdatePropsError } from './errors';\nexport { createTopLevelObjectType } from './controls-registry/create-top-level-object-type';\nexport { useCustomCss } from './hooks/use-custom-css';\nexport { useStateByElement } from './hooks/use-state-by-element';\nexport { getSubtitle, getTitle, HISTORY_DEBOUNCE_WAIT } from './hooks/use-styles-fields';\nexport { useStylesRerender } from './hooks/use-styles-rerender';\nexport { init } from './init';\nexport { usePanelActions, usePanelStatus } from './panel';\nexport type { PopoverActionProps } from './popover-action';\nexport { registerStyleProviderToColors } from './provider-colors-registry';\nexport { stylesInheritanceTransformersRegistry } from './styles-inheritance/styles-inheritance-transformers-registry';\nexport { registerFieldIndicator, FIELD_TYPE } from './field-indicators-registry';\nexport { registerEditingPanelReplacement } from './editing-panel-replacement-registry';\n\nexport { doApplyClasses, doGetAppliedClasses, doUnapplyClass } from './apply-unapply-actions';\n","import * as React from 'react';\nimport { deleteElementStyle, getElementSetting, updateElementSettings } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { createLocation } from '@elementor/locations';\nimport { useSessionStorage } from '@elementor/session';\n\nimport { useClassesProp } from '../../contexts/classes-prop-context';\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\n\nexport const { Slot: CssClassConvertSlot, inject: injectIntoCssClassConvert } = createLocation< {\n\tstyleDef: StyleDefinition | null;\n\tsuccessCallback: ( newId: string ) => void;\n\tcanConvert: boolean;\n} >();\n\ntype OwnProps = {\n\tstyleDef: StyleDefinition | null;\n\tcloseMenu: () => void;\n\tcanConvert: boolean;\n};\n\n/**\n * Convert a local class to a global class injection point\n * @param props\n */\nexport const CssClassConvert = ( props: OwnProps ) => {\n\tconst { element } = useElement();\n\tconst elementId = element.id;\n\tconst currentClassesProp = useClassesProp();\n\tconst { setId: setActiveId } = useStyle();\n\tconst [ , saveValue ] = useSessionStorage( 'last-converted-class-generated-name', 'app' );\n\n\tconst successCallback = ( newId: string ) => {\n\t\tif ( ! props.styleDef ) {\n\t\t\tthrow new Error( 'Style definition is required for converting local class to global class.' );\n\t\t}\n\n\t\tonConvert( {\n\t\t\tnewId,\n\t\t\telementId,\n\t\t\tclassesProp: currentClassesProp,\n\t\t\tstyleDef: props.styleDef,\n\t\t} );\n\n\t\tsaveValue( newId );\n\t\tsetActiveId( newId );\n\t\tprops.closeMenu();\n\t};\n\n\treturn (\n\t\t<CssClassConvertSlot\n\t\t\tcanConvert={ !! props.canConvert }\n\t\t\tstyleDef={ props.styleDef }\n\t\t\tsuccessCallback={ successCallback }\n\t\t/>\n\t);\n};\n\ntype OnConvertOptions = {\n\tnewId: string;\n\telementId: string;\n\tclassesProp: string;\n\tstyleDef: StyleDefinition;\n};\n\nconst onConvert = ( opts: OnConvertOptions ) => {\n\tconst { newId, elementId, classesProp } = opts;\n\tdeleteElementStyle( elementId, opts.styleDef.id );\n\tconst currentUsedClasses = getElementSetting< ClassesPropValue >( elementId, classesProp ) || { value: [] };\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: { [ classesProp ]: classesPropTypeUtil.create( [ newId, ...currentUsedClasses.value ] ) },\n\t\twithHistory: false,\n\t} );\n};\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\ntype ContextValue = {\n\tprop: string;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ClassesPropProvider( { children, prop }: Props ) {\n\treturn <Context.Provider value={ { prop } }>{ children }</Context.Provider>;\n}\n\nexport function useClassesProp() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useClassesProp must be used within a ClassesPropProvider' );\n\t}\n\n\treturn context.prop;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\n\ntype ContextValue = {\n\telement: Element;\n\telementType: ElementType;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ElementProvider( { children, element, elementType }: Props ) {\n\treturn <Context.Provider value={ { element, elementType } }>{ children }</Context.Provider>;\n}\n\nexport function useElement() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useElement must be used within a ElementProvider' );\n\t}\n\n\treturn context;\n}\n","import * as React from 'react';\nimport { createContext, type Dispatch, type PropsWithChildren, useContext } from 'react';\nimport {\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { type StylesProvider, stylesRepository, useUserStylesCapability } from '@elementor/editor-styles-repository';\n\nimport { StylesProviderNotFoundError } from '../errors';\n\ntype ContextValue = {\n\tsetId: Dispatch< StyleDefinition[ 'id' ] | null >;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tsetMetaState: Dispatch< StyleDefinitionState >;\n\tcanEdit?: boolean;\n} & ( ContextValueWithProvider | ContextValueWithoutProvider );\n\ntype ContextValueWithProvider = {\n\tid: StyleDefinitionID;\n\tprovider: StylesProvider;\n};\n\ntype ContextValueWithoutProvider = {\n\tid: null;\n\tprovider: null;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< Omit< ContextValue, 'provider' > >;\n\nexport function StyleProvider( { children, ...props }: Props ) {\n\tconst provider = props.id === null ? null : getProviderByStyleId( props.id );\n\n\tconst { userCan } = useUserStylesCapability();\n\n\tif ( props.id && ! provider ) {\n\t\tthrow new StylesProviderNotFoundError( { context: { styleId: props.id } } );\n\t}\n\n\tconst canEdit = userCan( provider?.getKey() ?? '' ).updateProps;\n\n\treturn <Context.Provider value={ { ...props, provider, canEdit } as ContextValue }>{ children }</Context.Provider>;\n}\n\nexport function useStyle() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStyle must be used within a StyleProvider' );\n\t}\n\n\treturn context;\n}\n\nexport function getProviderByStyleId( styleId: StyleDefinitionID ) {\n\tconst styleProvider = stylesRepository.getProviders().find( ( provider ) => {\n\t\treturn provider.actions.all().find( ( style ) => style.id === styleId );\n\t} );\n\n\treturn styleProvider ?? null;\n}\n\nexport function useIsStyle(): boolean {\n\treturn !! useContext( Context );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\nimport { createError } from '@elementor/utils';\n\nexport const ControlTypeNotFoundError = createError< { controlType: string } >( {\n\tcode: 'control_type_not_found',\n\tmessage: 'Control type not found.',\n} );\n\nexport const ControlTypeAlreadyRegisteredError = createError< { controlType: string } >( {\n\tcode: 'control_type_already_registered',\n\tmessage: 'Control type is already registered.',\n} );\n\nexport const ControlTypeNotRegisteredError = createError< { controlType: string } >( {\n\tcode: 'control_type_not_registered',\n\tmessage: 'Control type is not registered.',\n} );\n\nexport const StylesProviderNotFoundError = createError< { styleId: StyleDefinitionID } >( {\n\tcode: 'provider_not_found',\n\tmessage: 'Styles provider not found.',\n} );\n\nexport const StylesProviderCannotUpdatePropsError = createError< { providerKey: string } >( {\n\tcode: 'provider_cannot_update_props',\n\tmessage: \"Styles provider doesn't support updating props.\",\n} );\n\nexport const StyleNotFoundUnderProviderError = createError< { styleId: StyleDefinitionID; providerKey: string } >( {\n\tcode: 'style_not_found_under_provider',\n\tmessage: 'Style not found under the provider.',\n} );\n","import * as React from 'react';\nimport { type ReactElement, useRef, useState } from 'react';\nimport { useElementSetting } from '@elementor/editor-elements';\nimport { type ClassesPropValue } from '@elementor/editor-props';\nimport {\n\tisElementsStylesProvider,\n\ttype StylesProvider,\n\tstylesRepository,\n\ttype UpdateActionPayload,\n\tuseProviders,\n\tuseUserStylesCapability,\n\tvalidateStyleLabel,\n} from '@elementor/editor-styles-repository';\nimport { InfoAlert, WarningInfotip } from '@elementor/editor-ui';\nimport { ColorSwatchIcon, MapPinIcon } from '@elementor/icons';\nimport { createLocation } from '@elementor/locations';\nimport {\n\ttype AutocompleteChangeReason,\n\tBox,\n\tChip,\n\ttype ChipOwnProps,\n\tFormLabel,\n\tLink,\n\tStack,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../../contexts/classes-prop-context';\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\nimport { getStylesProviderColorName } from '../../utils/get-styles-provider-color';\nimport { trackStyles } from '../../utils/tracking/subscribe';\nimport {\n\tCreatableAutocomplete,\n\ttype CreatableAutocompleteProps,\n\ttype Option,\n\ttype ValidationEvent,\n\ttype ValidationResult,\n} from '../creatable-autocomplete';\nimport { CssClassItem } from './css-class-item';\nimport { useApplyClass, useCreateAndApplyClass, useUnapplyClass } from './use-apply-and-unapply-class';\n\nconst ID = 'elementor-css-class-selector';\nconst TAGS_LIMIT = 50;\n\ntype StyleDefOption = Option & {\n\tcolor: ChipOwnProps[ 'color' ];\n\ticon: ReactElement | null;\n\tprovider: string | null;\n};\n\nconst EMPTY_OPTION = {\n\tlabel: __( 'local', 'elementor' ),\n\tvalue: null,\n\tfixed: true,\n\tcolor: getTempStylesProviderColorName( 'accent' ),\n\ticon: <MapPinIcon />,\n\tprovider: null,\n} satisfies StyleDefOption;\n\nexport const { Slot: ClassSelectorActionsSlot, inject: injectIntoClassSelectorActions } = createLocation();\n\n/**\n * Applied - Classes applied to an element.\n * Active - Class that is currently on edit mode.\n */\n\nexport function CssClassSelector() {\n\tconst options = useOptions();\n\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\n\tconst autocompleteRef = useRef< HTMLElement | null >( null );\n\tconst [ renameError, setRenameError ] = useState< string | null >( null );\n\n\tconst handleSelect = useHandleSelect();\n\tconst { create, validate, entityName } = useCreateAction();\n\n\tconst appliedOptions = useAppliedOptions( options );\n\tconst active = appliedOptions.find( ( option ) => option.value === activeId ) ?? EMPTY_OPTION;\n\n\tconst showPlaceholder = appliedOptions.every( ( { fixed } ) => fixed );\n\n\tconst { userCan } = useUserStylesCapability();\n\n\tconst canEdit = active.provider ? userCan( active.provider ).updateProps : true;\n\n\treturn (\n\t\t<Stack p={ 2 }>\n\t\t\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\" justifyContent=\"space-between\">\n\t\t\t\t<FormLabel htmlFor={ ID } size=\"small\">\n\t\t\t\t\t{ __( 'Classes', 'elementor' ) }\n\t\t\t\t</FormLabel>\n\t\t\t\t<Stack direction=\"row\" gap={ 1 }>\n\t\t\t\t\t<ClassSelectorActionsSlot />\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<WarningInfotip\n\t\t\t\topen={ Boolean( renameError ) }\n\t\t\t\ttext={ renameError ?? '' }\n\t\t\t\tplacement=\"bottom\"\n\t\t\t\twidth={ autocompleteRef.current?.getBoundingClientRect().width }\n\t\t\t\toffset={ [ 0, -15 ] }\n\t\t\t>\n\t\t\t\t<CreatableAutocomplete< StyleDefOption >\n\t\t\t\t\tid={ ID }\n\t\t\t\t\tref={ autocompleteRef }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tplaceholder={ showPlaceholder ? __( 'Type class name', 'elementor' ) : undefined }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tselected={ appliedOptions }\n\t\t\t\t\tentityName={ entityName }\n\t\t\t\t\tonSelect={ handleSelect }\n\t\t\t\t\tonCreate={ create ?? undefined }\n\t\t\t\t\tvalidate={ validate ?? undefined }\n\t\t\t\t\tlimitTags={ TAGS_LIMIT }\n\t\t\t\t\trenderEmptyState={ EmptyState }\n\t\t\t\t\tgetLimitTagsText={ ( more ) => (\n\t\t\t\t\t\t<Chip size=\"tiny\" variant=\"standard\" label={ `+${ more }` } clickable />\n\t\t\t\t\t) }\n\t\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\t\tvalues.map( ( value, index ) => {\n\t\t\t\t\t\t\tconst chipProps = getTagProps( { index } );\n\t\t\t\t\t\t\tconst isActive = value.value === active?.value;\n\n\t\t\t\t\t\t\tconst renameLabel = ( newLabel: string ) => {\n\t\t\t\t\t\t\t\tif ( ! value.value ) {\n\t\t\t\t\t\t\t\t\tthrow new Error( `Cannot rename a class without style id` );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttrackStyles( value.provider ?? '', 'classRenamed', {\n\t\t\t\t\t\t\t\t\tclassId: value.value,\n\t\t\t\t\t\t\t\t\tnewValue: newLabel,\n\t\t\t\t\t\t\t\t\toldValue: value.label,\n\t\t\t\t\t\t\t\t\tsource: 'style-tab',\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\treturn updateClassByProvider( value.provider, { label: newLabel, id: value.value } );\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<CssClassItem\n\t\t\t\t\t\t\t\t\tkey={ chipProps.key }\n\t\t\t\t\t\t\t\t\tfixed={ value.fixed }\n\t\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\t\tprovider={ value.provider }\n\t\t\t\t\t\t\t\t\tid={ value.value }\n\t\t\t\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\t\t\t\tcolor={ isActive && value.color ? value.color : 'default' }\n\t\t\t\t\t\t\t\t\ticon={ value.icon }\n\t\t\t\t\t\t\t\t\tchipProps={ chipProps }\n\t\t\t\t\t\t\t\t\tonClickActive={ () => setActiveId( value.value ) }\n\t\t\t\t\t\t\t\t\trenameLabel={ renameLabel }\n\t\t\t\t\t\t\t\t\tsetError={ setRenameError }\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</WarningInfotip>\n\t\t\t{ ! canEdit && (\n\t\t\t\t<InfoAlert sx={ { mt: 1 } }>\n\t\t\t\t\t{ __( 'With your current role, you can use existing classes but can’t modify them.', 'elementor' ) }\n\t\t\t\t</InfoAlert>\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n\nconst EmptyState = ( { searchValue, onClear }: { searchValue: string; onClear: () => void } ) => (\n\t<Box sx={ { py: 4 } }>\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tjustifyContent=\"center\"\n\t\t\tsx={ { px: 2, m: 'auto', maxWidth: '236px' } }\n\t\t>\n\t\t\t<ColorSwatchIcon sx={ { transform: 'rotate(90deg)' } } fontSize=\"large\" />\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t&ldquo;{ searchValue }&rdquo;.\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\" sx={ { mb: 2 } }>\n\t\t\t\t{ __( 'With your current role,', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t{ __( 'you can only use existing classes.', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Link color=\"text.secondary\" variant=\"caption\" component=\"button\" onClick={ onClear }>\n\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t</Link>\n\t\t</Stack>\n\t</Box>\n);\n\nconst updateClassByProvider = ( provider: string | null, data: UpdateActionPayload ) => {\n\tif ( ! provider ) {\n\t\treturn;\n\t}\n\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\n\tif ( ! providerInstance ) {\n\t\treturn;\n\t}\n\n\treturn providerInstance.actions.update?.( data );\n};\n\nfunction useOptions() {\n\tconst { element } = useElement();\n\n\tconst isProviderEditable = ( provider: StylesProvider ) => !! provider.actions.updateProps;\n\n\treturn useProviders()\n\t\t.filter( isProviderEditable )\n\t\t.flatMap< StyleDefOption >( ( provider ) => {\n\t\t\tconst isElements = isElementsStylesProvider( provider.getKey() );\n\t\t\tconst styleDefs = provider.actions.all( { elementId: element.id } );\n\n\t\t\t// Add an empty local option for elements, as fallback.\n\t\t\tif ( isElements && styleDefs.length === 0 ) {\n\t\t\t\treturn [ EMPTY_OPTION ];\n\t\t\t}\n\n\t\t\treturn styleDefs.map( ( styleDef ) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: styleDef.label,\n\t\t\t\t\tvalue: styleDef.id,\n\t\t\t\t\tfixed: isElements,\n\t\t\t\t\tcolor: getTempStylesProviderColorName( getStylesProviderColorName( provider.getKey() ) ),\n\t\t\t\t\ticon: isElements ? <MapPinIcon /> : null,\n\t\t\t\t\tprovider: provider.getKey(),\n\t\t\t\t};\n\t\t\t} );\n\t\t} );\n}\n\nfunction getTempStylesProviderColorName( color: ChipOwnProps[ 'color' ] ): ChipOwnProps[ 'color' ] {\n\tif ( color === 'accent' ) {\n\t\treturn 'primary';\n\t}\n\n\treturn color;\n}\n\nfunction useCreateAction() {\n\tconst [ provider, createAction ] = useCreateAndApplyClass();\n\tif ( ! provider || ! createAction ) {\n\t\treturn {};\n\t}\n\n\tconst create = ( classLabel: string ) => {\n\t\tconst { createdId } = createAction( { classLabel } );\n\t\ttrackStyles( provider.getKey() ?? '', 'classCreated', {\n\t\t\tsource: 'created',\n\t\t\tclassTitle: classLabel,\n\t\t\tclassId: createdId,\n\t\t} );\n\t};\n\n\tconst validate = ( newClassLabel: string, event: ValidationEvent ): ValidationResult => {\n\t\tif ( hasReachedLimit( provider ) ) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terrorMessage: __(\n\t\t\t\t\t'You’ve reached the limit of 50 classes. Please remove an existing one to create a new class.',\n\t\t\t\t\t'elementor'\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t\treturn validateStyleLabel( newClassLabel, event );\n\t};\n\n\tconst entityName =\n\t\tprovider.labels.singular && provider.labels.plural\n\t\t\t? ( provider.labels as CreatableAutocompleteProps< StyleDefOption >[ 'entityName' ] )\n\t\t\t: undefined;\n\n\treturn { create, validate, entityName };\n}\n\nfunction hasReachedLimit( provider: StylesProvider ) {\n\treturn provider.actions.all().length >= provider.limit;\n}\n\nfunction useAppliedOptions( options: StyleDefOption[] ) {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\n\tconst appliedIds = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\tconst appliedOptions = options.filter( ( option ) => option.value && appliedIds.includes( option.value ) );\n\n\tconst hasElementsProviderStyleApplied = appliedOptions.some(\n\t\t( option ) => option.provider && isElementsStylesProvider( option.provider )\n\t);\n\n\tif ( ! hasElementsProviderStyleApplied ) {\n\t\tappliedOptions.unshift( EMPTY_OPTION );\n\t}\n\n\treturn appliedOptions;\n}\n\nfunction useHandleSelect() {\n\tconst apply = useApplyClass();\n\tconst unapply = useUnapplyClass();\n\n\treturn ( _selectedOptions: StyleDefOption[], reason: AutocompleteChangeReason, option: StyleDefOption ) => {\n\t\tif ( ! option.value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( reason ) {\n\t\t\tcase 'selectOption':\n\t\t\t\tapply( { classId: option.value, classLabel: option.label } );\n\t\t\t\ttrackStyles( option.provider ?? '', 'classApplied', {\n\t\t\t\t\tclassId: option.value,\n\t\t\t\t\tsource: 'style-tab',\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'removeOption':\n\t\t\t\tunapply( { classId: option.value, classLabel: option.label } );\n\t\t\t\ttrackStyles( option.provider ?? '', 'classRemoved', {\n\t\t\t\t\tclassId: option.value,\n\t\t\t\t\tsource: 'style-tab',\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n","import { ELEMENTS_BASE_STYLES_PROVIDER_KEY, isElementsStylesProvider } from '@elementor/editor-styles-repository';\nimport { type ChipProps, type Theme } from '@elementor/ui';\n\nimport { getStyleProviderColors } from '../provider-colors-registry';\n\nexport const getStylesProviderColorName = ( provider: string ): ChipProps[ 'color' ] => {\n\tif ( ! provider || provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {\n\t\treturn 'default';\n\t}\n\n\tif ( isElementsStylesProvider( provider ) ) {\n\t\treturn 'accent';\n\t}\n\n\treturn getStyleProviderColors( provider ).name;\n};\n\nexport const getStylesProviderThemeColor = ( provider: string ): ( ( theme: Theme ) => string ) | null => {\n\tif ( ! provider || provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {\n\t\treturn null;\n\t}\n\n\tif ( isElementsStylesProvider( provider ) ) {\n\t\treturn ( theme: Theme ) => theme.palette.accent.main;\n\t}\n\n\treturn getStyleProviderColors( provider ).getThemeColor;\n};\n\nexport function getTempStylesProviderThemeColor( provider: string ): ( ( theme: Theme ) => string ) | null {\n\tif ( isElementsStylesProvider( provider ) ) {\n\t\treturn ( theme: Theme ) => theme.palette.primary.main;\n\t}\n\n\treturn getStylesProviderThemeColor( provider );\n}\n","import { type ChipProps, type Theme } from '@elementor/ui';\n\ntype Colors = {\n\tname: ChipProps[ 'color' ];\n\tgetThemeColor: ( ( theme: Theme ) => string ) | null;\n};\n\nconst DEFAULT_COLORS: Colors = {\n\tname: 'default',\n\tgetThemeColor: null,\n};\n\nconst providerColorsRegistry = new Map< string, Colors >();\n\nexport const registerStyleProviderToColors = ( provider: string, colors: Colors ) => {\n\tproviderColorsRegistry.set( provider, colors );\n};\n\nexport const getStyleProviderColors = ( provider: string ): Colors =>\n\tproviderColorsRegistry.get( provider ) ?? DEFAULT_COLORS;\n","import { stylesRepository } from '@elementor/editor-styles-repository';\n\nexport const trackStyles = ( provider: string, event: string, data: Record< string, unknown > ) => {\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\n\tproviderInstance?.actions.tracking?.( { event, ...data } );\n};\n","import * as React from 'react';\nimport { type HTMLAttributes, useId, useMemo } from 'react';\nimport {\n\tAutocomplete,\n\ttype AutocompleteProps,\n\ttype AutocompleteRenderGroupParams,\n\tBox,\n\tChip,\n\tstyled,\n\tTextField,\n\ttype Theme,\n\tTypography,\n} from '@elementor/ui';\n\nimport { addGroupToOptions } from './autocomplete-option-internal-properties';\nimport { type CreatableAutocompleteProps, type InternalOption, type SafeOptionConstraint } from './types';\nimport { useAutocompleteChange } from './use-autocomplete-change';\nimport { useInputState, useOpenState } from './use-autocomplete-states';\nimport { useCreateOption } from './use-create-option';\nimport { useFilterOptions } from './use-filter-options';\n\nconst MIN_INPUT_LENGTH = 2;\n\nexport const CreatableAutocomplete = React.forwardRef( CreatableAutocompleteInner ) as <\n\tTOption extends SafeOptionConstraint,\n>(\n\tprops: CreatableAutocompleteProps< TOption > & {\n\t\tref?: React.ForwardedRef< HTMLElement >;\n\t}\n) => ReturnType< typeof CreatableAutocompleteInner >;\n\nfunction CreatableAutocompleteInner< TOption extends SafeOptionConstraint >(\n\t{\n\t\tselected,\n\t\toptions,\n\t\tentityName,\n\t\tonSelect,\n\t\tplaceholder,\n\t\tonCreate,\n\t\tvalidate,\n\t\trenderEmptyState,\n\t\t...props\n\t}: CreatableAutocompleteProps< TOption >,\n\tref: React.ForwardedRef< HTMLElement >\n) {\n\tconst { inputValue, setInputValue, error, setError, inputHandlers } = useInputState( validate );\n\tconst { open, openDropdown, closeDropdown } = useOpenState( props.open );\n\tconst { createOption, loading } = useCreateOption( { onCreate, validate, setInputValue, setError, closeDropdown } );\n\n\tconst [ internalOptions, internalSelected ] = useMemo(\n\t\t() => [ options, selected ].map( ( optionsArr ) => addGroupToOptions( optionsArr, entityName?.plural ) ),\n\t\t[ options, selected, entityName?.plural ]\n\t);\n\n\tconst handleChange = useAutocompleteChange( {\n\t\toptions: internalOptions,\n\t\tonSelect,\n\t\tcreateOption,\n\t\tsetInputValue,\n\t\tcloseDropdown,\n\t} );\n\n\tconst filterOptions = useFilterOptions( { options, selected, onCreate, entityName } );\n\n\tconst isCreatable = Boolean( onCreate );\n\n\tconst freeSolo = isCreatable || inputValue.length < MIN_INPUT_LENGTH || undefined;\n\n\treturn (\n\t\t<Autocomplete< InternalOption< TOption >, true, true, true >\n\t\t\trenderTags={ ( tagValue, getTagProps ) => {\n\t\t\t\treturn tagValue.map( ( option, index ) => (\n\t\t\t\t\t<Chip\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t{ ...getTagProps( { index } ) }\n\t\t\t\t\t\tkey={ option.key ?? option.value ?? option.label }\n\t\t\t\t\t\tlabel={ option.label }\n\t\t\t\t\t/>\n\t\t\t\t) );\n\t\t\t} }\n\t\t\t{ ...( props as AutocompleteProps< InternalOption< TOption >, true, true, true > ) }\n\t\t\tref={ ref }\n\t\t\tfreeSolo={ freeSolo }\n\t\t\tforcePopupIcon={ false }\n\t\t\tmultiple\n\t\t\tclearOnBlur\n\t\t\tselectOnFocus\n\t\t\tdisableClearable\n\t\t\thandleHomeEndKeys\n\t\t\tdisabled={ loading }\n\t\t\topen={ open }\n\t\t\tonOpen={ openDropdown }\n\t\t\tonClose={ closeDropdown }\n\t\t\tdisableCloseOnSelect\n\t\t\tvalue={ internalSelected }\n\t\t\toptions={ internalOptions }\n\t\t\tListboxComponent={\n\t\t\t\terror\n\t\t\t\t\t? React.forwardRef< HTMLElement, ErrorTextProps >( ( _, errorTextRef ) => (\n\t\t\t\t\t\t\t<ErrorText ref={ errorTextRef } error={ error } />\n\t\t\t\t\t ) )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\trenderGroup={ ( params ) => <Group { ...params } /> }\n\t\t\tinputValue={ inputValue }\n\t\t\trenderInput={ ( params ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TextField\n\t\t\t\t\t\t{ ...params }\n\t\t\t\t\t\terror={ Boolean( error ) }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t{ ...inputHandlers }\n\t\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\t\t'.MuiAutocomplete-inputRoot.MuiInputBase-adornedStart': {\n\t\t\t\t\t\t\t\tpaddingLeft: theme.spacing( 0.25 ),\n\t\t\t\t\t\t\t\tpaddingRight: theme.spacing( 0.25 ),\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} }\n\t\t\tonChange={ handleChange }\n\t\t\tgetOptionLabel={ ( option ) => ( typeof option === 'string' ? option : option.label ) }\n\t\t\tgetOptionKey={ ( option ) => {\n\t\t\t\tif ( typeof option === 'string' ) {\n\t\t\t\t\treturn option;\n\t\t\t\t}\n\n\t\t\t\treturn option.key ?? option.value ?? option.label;\n\t\t\t} }\n\t\t\tfilterOptions={ filterOptions }\n\t\t\tgroupBy={ ( option ) => option._group ?? '' }\n\t\t\trenderOption={ ( optionProps, option ) => {\n\t\t\t\tconst { _group, label } = option;\n\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\t{ ...optionProps }\n\t\t\t\t\t\tstyle={ { display: 'block', textOverflow: 'ellipsis' } }\n\t\t\t\t\t\tdata-group={ _group }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t} }\n\t\t\tnoOptionsText={ renderEmptyState?.( {\n\t\t\t\tsearchValue: inputValue,\n\t\t\t\tonClear: () => {\n\t\t\t\t\tsetInputValue( '' );\n\t\t\t\t\tcloseDropdown();\n\t\t\t\t},\n\t\t\t} ) }\n\t\t\tisOptionEqualToValue={ ( option, value ) => {\n\t\t\t\tif ( typeof option === 'string' ) {\n\t\t\t\t\treturn option === value;\n\t\t\t\t}\n\n\t\t\t\treturn option.value === value.value;\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nconst Group = ( params: Omit< AutocompleteRenderGroupParams, 'key' > ) => {\n\tconst id = `combobox-group-${ useId().replace( /:/g, '_' ) }`;\n\n\treturn (\n\t\t<StyledGroup role=\"group\" aria-labelledby={ id }>\n\t\t\t<StyledGroupHeader id={ id }> { params.group }</StyledGroupHeader>\n\t\t\t<StyledGroupItems role=\"listbox\">{ params.children }</StyledGroupItems>\n\t\t</StyledGroup>\n\t);\n};\n\ntype ErrorTextProps = {\n\terror?: string;\n} & HTMLAttributes< HTMLElement >;\n\nconst ErrorText = React.forwardRef< HTMLElement, ErrorTextProps >( ( { error = 'error' }, ref ) => {\n\treturn (\n\t\t<Box\n\t\t\tref={ ref }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\tpadding: theme.spacing( 2 ),\n\t\t\t} ) }\n\t\t>\n\t\t\t<Typography variant=\"caption\" sx={ { color: 'error.main', display: 'inline-block' } }>\n\t\t\t\t{ error }\n\t\t\t</Typography>\n\t\t</Box>\n\t);\n} );\n\nconst StyledGroup = styled( 'li' )`\n\t&:not( :last-of-type ) {\n\t\tborder-bottom: 1px solid ${ ( { theme } ) => theme.palette.divider };\n\t}\n`;\n\nconst StyledGroupHeader = styled( Box )( ( { theme } ) => ( {\n\tposition: 'sticky',\n\ttop: '-8px',\n\tpadding: theme.spacing( 1, 2 ),\n\tcolor: theme.palette.text.tertiary,\n\tbackgroundColor: theme.palette.primary.contrastText,\n} ) );\n\nconst StyledGroupItems = styled( 'ul' )`\n\tpadding: 0;\n`;\n","import { type InternalOption, type Option } from './types';\n\nexport function addGroupToOptions< TOption extends Option >(\n\toptions: TOption[],\n\tpluralEntityName?: string\n): InternalOption< TOption >[] {\n\treturn options.map( ( option ) => {\n\t\treturn {\n\t\t\t...option,\n\t\t\t_group: `Existing ${ pluralEntityName ?? 'options' }`,\n\t\t};\n\t} );\n}\n\nexport function removeInternalKeys< TOption extends Option >( option: InternalOption< TOption > ): TOption {\n\tconst { _group, _action, ...rest } = option;\n\treturn rest as unknown as TOption;\n}\n","import { type AutocompleteChangeDetails, type AutocompleteChangeReason } from '@elementor/ui';\n\nimport { removeInternalKeys } from './autocomplete-option-internal-properties';\nimport { type InternalOption, type OnSelect, type Option } from './types';\n\nexport function useAutocompleteChange< TOption extends Option >( params: {\n\toptions: InternalOption< TOption >[];\n\tonSelect?: OnSelect< TOption >;\n\tcreateOption: ( ( value: string ) => Promise< unknown > ) | null;\n\tsetInputValue: ( value: string ) => void;\n\tcloseDropdown: () => void;\n} ) {\n\tconst { options, onSelect, createOption, setInputValue, closeDropdown } = params;\n\n\tif ( ! onSelect && ! createOption ) {\n\t\treturn;\n\t}\n\n\tconst handleChange = async (\n\t\t_: React.SyntheticEvent,\n\t\tselectedOrInputValue: Array< InternalOption< TOption > | string >,\n\t\treason: AutocompleteChangeReason,\n\t\tdetails?: AutocompleteChangeDetails< InternalOption< TOption > | string >\n\t) => {\n\t\tconst changedOption = details?.option;\n\t\tif ( ! changedOption || ( typeof changedOption === 'object' && changedOption.fixed ) ) {\n\t\t\t// If `changedOption` is nullish it means no option was selected, created or removed.\n\t\t\t// The reason is either \"blur\" which we don't support (can't be \"clear\" since we disabled it).\n\t\t\t// If the option is fixed, it can't be selected, created or removed.\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedOptions = selectedOrInputValue.filter( ( option ) => typeof option !== 'string' );\n\n\t\tswitch ( reason ) {\n\t\t\tcase 'removeOption':\n\t\t\t\tconst removedOption = changedOption as InternalOption< TOption >;\n\t\t\t\tupdateSelectedOptions( selectedOptions, 'removeOption', removedOption );\n\t\t\t\tbreak;\n\n\t\t\t// User clicked an option. It's either an existing option, or \"Create <new option>\".\n\t\t\tcase 'selectOption': {\n\t\t\t\tconst selectedOption = changedOption as InternalOption< TOption >;\n\n\t\t\t\tif ( selectedOption._action === 'create' ) {\n\t\t\t\t\tconst newOption = selectedOption.value as string;\n\t\t\t\t\treturn createOption?.( newOption );\n\t\t\t\t}\n\n\t\t\t\tupdateSelectedOptions( selectedOptions, 'selectOption', selectedOption );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// User pressed \"Enter\" after typing input. The input is either matching existing option or a new option to create.\n\t\t\tcase 'createOption': {\n\t\t\t\tconst inputValue = changedOption as string;\n\n\t\t\t\tconst matchingOption = options.find(\n\t\t\t\t\t( option ) => option.label.toLocaleLowerCase() === inputValue.toLocaleLowerCase()\n\t\t\t\t);\n\t\t\t\tif ( matchingOption ) {\n\t\t\t\t\tselectedOptions.push( matchingOption );\n\t\t\t\t\tupdateSelectedOptions( selectedOptions, 'selectOption', matchingOption );\n\t\t\t\t} else {\n\t\t\t\t\treturn createOption?.( inputValue );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tsetInputValue( '' );\n\t\tcloseDropdown();\n\t};\n\n\treturn handleChange;\n\n\tfunction updateSelectedOptions(\n\t\tselectedOptions: InternalOption< TOption >[],\n\t\treason: AutocompleteChangeReason,\n\t\tchangedOption: InternalOption< TOption >\n\t) {\n\t\tonSelect?.(\n\t\t\tselectedOptions.map( ( option ) => removeInternalKeys( option ) ),\n\t\t\treason,\n\t\t\tremoveInternalKeys( changedOption )\n\t\t);\n\t}\n}\n","import { useState } from 'react';\n\nimport { type ValidationEvent, type ValidationResult } from './types';\n\nexport function useInputState( validate?: ( value: string, event: ValidationEvent ) => ValidationResult ) {\n\tconst [ inputValue, setInputValue ] = useState( '' );\n\tconst [ error, setError ] = useState< string | null >( null );\n\n\tconst handleInputChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value } = event.target;\n\n\t\tsetInputValue( value );\n\n\t\tif ( ! validate ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! value ) {\n\t\t\tsetError( null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst { isValid, errorMessage } = validate( value, 'inputChange' );\n\n\t\tif ( isValid ) {\n\t\t\tsetError( null );\n\t\t} else {\n\t\t\tsetError( errorMessage );\n\t\t}\n\t};\n\n\tconst handleInputBlur = () => {\n\t\tsetInputValue( '' );\n\t\tsetError( null );\n\t};\n\n\treturn {\n\t\tinputValue,\n\t\tsetInputValue,\n\t\terror,\n\t\tsetError,\n\t\tinputHandlers: {\n\t\t\tonChange: handleInputChange,\n\t\t\tonBlur: handleInputBlur,\n\t\t},\n\t};\n}\n\nexport function useOpenState( initialOpen: boolean = false ) {\n\tconst [ open, setOpen ] = useState( initialOpen );\n\n\tconst openDropdown = () => setOpen( true );\n\tconst closeDropdown = () => setOpen( false );\n\n\treturn { open, openDropdown, closeDropdown };\n}\n","import { useState } from 'react';\n\nimport { type ValidationEvent, type ValidationResult } from './types';\n\nexport function useCreateOption( params: {\n\tonCreate?: ( value: string ) => Promise< unknown > | unknown;\n\tvalidate?: ( value: string, event: ValidationEvent ) => ValidationResult;\n\tsetInputValue: ( value: string ) => void;\n\tsetError: ( error: string | null ) => void;\n\tcloseDropdown: () => void;\n} ) {\n\tconst { onCreate, validate, setInputValue, setError, closeDropdown } = params;\n\n\tconst [ loading, setLoading ] = useState( false );\n\n\tif ( ! onCreate ) {\n\t\treturn { createOption: null, loading: false };\n\t}\n\n\tconst createOption = async ( value: string ) => {\n\t\tsetLoading( true );\n\n\t\tif ( validate ) {\n\t\t\tconst { isValid, errorMessage } = validate( value, 'create' );\n\n\t\t\tif ( ! isValid ) {\n\t\t\t\tsetError( errorMessage );\n\t\t\t\tsetLoading( false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tsetInputValue( '' );\n\t\t\tcloseDropdown();\n\t\t\tawait onCreate( value );\n\t\t} catch {\n\t\t\t// TODO: Do something with the error.\n\t\t} finally {\n\t\t\tsetLoading( false );\n\t\t}\n\t};\n\n\treturn { createOption, loading };\n}\n","import { createFilterOptions } from '@elementor/ui';\n\nimport { type InternalOption, type Option } from './types';\n\nexport function useFilterOptions< TOption extends Option >( parameters: {\n\toptions: TOption[];\n\tselected: TOption[];\n\tonCreate?: ( value: string ) => Promise< unknown > | unknown;\n\tentityName?: { singular: string; plural: string };\n} ) {\n\tconst { options, selected, onCreate, entityName } = parameters;\n\n\tconst filter = createFilterOptions< InternalOption< TOption > >();\n\n\tconst filterOptions = (\n\t\toptionList: InternalOption< TOption >[],\n\t\tparams: {\n\t\t\tinputValue: string;\n\t\t\tgetOptionLabel: ( option: InternalOption< TOption > ) => string;\n\t\t}\n\t) => {\n\t\tconst selectedValues = selected.map( ( option ) => option.value );\n\n\t\tconst filteredOptions = filter(\n\t\t\toptionList.filter( ( option ) => ! selectedValues.includes( option.value ) ),\n\t\t\tparams\n\t\t);\n\n\t\tconst isExisting = options.some( ( option ) => params.inputValue === option.label );\n\t\tconst allowCreate =\n\t\t\tBoolean( onCreate ) &&\n\t\t\tparams.inputValue !== '' &&\n\t\t\t! selectedValues.includes( params.inputValue ) &&\n\t\t\t! isExisting;\n\n\t\tif ( allowCreate ) {\n\t\t\tfilteredOptions.unshift( {\n\t\t\t\tlabel: `Create \"${ params.inputValue }\"`,\n\t\t\t\tvalue: params.inputValue,\n\t\t\t\t_group: `Create a new ${ entityName?.singular ?? 'option' }`,\n\t\t\t\tkey: `create-${ params.inputValue }`,\n\t\t\t\t_action: 'create',\n\t\t\t} as InternalOption< TOption > );\n\t\t}\n\n\t\treturn filteredOptions;\n\t};\n\n\treturn filterOptions;\n}\n","import * as React from 'react';\nimport { type ReactElement, useEffect, useMemo, useState } from 'react';\nimport { isClassState } from '@elementor/editor-styles';\nimport { stylesRepository, useUserStylesCapability, validateStyleLabel } from '@elementor/editor-styles-repository';\nimport { EditableField, EllipsisWithTooltip, useEditable } from '@elementor/editor-ui';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport {\n\ttype AutocompleteRenderGetTagProps,\n\tbindTrigger,\n\tChip,\n\ttype ChipOwnProps,\n\tStack,\n\ttype Theme,\n\tThemeProvider,\n\tTypography,\n\tUnstableChipGroup,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../contexts/style-context';\nimport { CssClassProvider } from './css-class-context';\nimport { CssClassMenu, useElementStates } from './css-class-menu';\n\ntype CssClassItemProps = {\n\tid: string | null;\n\tprovider: string | null;\n\tlabel: string;\n\tfixed?: boolean;\n\tisActive: boolean;\n\tcolor: ChipOwnProps[ 'color' ];\n\ticon: ReactElement | null;\n\tchipProps: ReturnType< AutocompleteRenderGetTagProps >;\n\tonClickActive: ( id: string | null ) => void;\n\trenameLabel: ( newLabel: string ) => void;\n\tvalidateLabel?: ( newLabel: string ) => string | undefined | null;\n\tsetError?: ( error: string | null ) => void;\n};\n\nconst CHIP_SIZE = 'tiny';\n\nexport function CssClassItem( props: CssClassItemProps ) {\n\tconst { chipProps, icon, color: colorProp, fixed, ...classProps } = props;\n\tconst { id, provider, label, isActive, onClickActive, renameLabel, setError } = classProps;\n\n\tconst { elementStates } = useElementStates();\n\n\tconst { meta, setMetaState } = useStyle();\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\tconst [ chipRef, setChipRef ] = useState< HTMLElement | null >( null );\n\tconst { onDelete, ...chipGroupProps } = chipProps;\n\n\tconst { userCan } = useUserStylesCapability();\n\n\tconst [ convertedFromLocalId, , clearConvertedFromLocalId ] = useSessionStorage(\n\t\t'last-converted-class-generated-name',\n\t\t'app'\n\t);\n\n\tconst {\n\t\tref,\n\t\tisEditing,\n\t\topenEditMode,\n\t\terror,\n\t\tgetProps: getEditableProps,\n\t} = useEditable( {\n\t\tvalue: label,\n\t\tonSubmit: renameLabel,\n\t\tvalidation: validateLabel,\n\t\tonError: setError,\n\t} );\n\n\tconst color = error ? 'error' : colorProp;\n\n\tconst providerActions = provider ? stylesRepository.getProviderByKey( provider )?.actions : null;\n\tconst allowRename = Boolean( providerActions?.update ) && userCan( provider ?? '' )?.update;\n\n\tconst isShowingState = isActive && meta.state;\n\n\tconst stateLabel = useMemo( () => {\n\t\tif ( meta.state && isClassState( meta.state ) ) {\n\t\t\treturn elementStates.find( ( state ) => state.value === meta.state )?.label;\n\t\t}\n\n\t\treturn meta.state;\n\t}, [ meta.state, elementStates ] );\n\n\tuseEffect( () => {\n\t\tif ( convertedFromLocalId && id === convertedFromLocalId ) {\n\t\t\tclearConvertedFromLocalId();\n\t\t\topenEditMode();\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ id, convertedFromLocalId ] );\n\n\treturn (\n\t\t<ThemeProvider palette=\"default\">\n\t\t\t<UnstableChipGroup\n\t\t\t\tref={ setChipRef }\n\t\t\t\t{ ...chipGroupProps }\n\t\t\t\taria-label={ `Edit ${ label }` }\n\t\t\t\trole=\"group\"\n\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t'&.MuiChipGroup-root.MuiAutocomplete-tag': { margin: theme.spacing( 0.125 ) },\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<Chip\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tisEditing ? (\n\t\t\t\t\t\t\t<EditableField ref={ ref } { ...getEditableProps() } />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<EllipsisWithTooltip maxWidth=\"10ch\" title={ label } as=\"div\" />\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tvariant={ isActive && ! meta.state && ! isEditing ? 'filled' : 'standard' }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tcolor={ color }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isShowingState ) {\n\t\t\t\t\t\t\tsetMetaState( null );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( allowRename && isActive ) {\n\t\t\t\t\t\t\topenEditMode();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonClickActive( id );\n\t\t\t\t\t} }\n\t\t\t\t\taria-pressed={ isActive }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tlineHeight: 1,\n\t\t\t\t\t\tcursor: isActive && allowRename && ! isShowingState ? 'text' : 'pointer',\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\t'&.Mui-focusVisible': {\n\t\t\t\t\t\t\tboxShadow: 'none !important',\n\t\t\t\t\t\t},\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t\t{ ! isEditing && (\n\t\t\t\t\t<Chip\n\t\t\t\t\t\ticon={ isShowingState ? undefined : <DotsVerticalIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tisShowingState ? (\n\t\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t\t<Typography variant=\"inherit\">{ stateLabel }</Typography>\n\t\t\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\t\tcolor={ color }\n\t\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\t\taria-label={ __( 'Open CSS Class Menu', 'elementor' ) }\n\t\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\t\tpaddingRight: 0,\n\t\t\t\t\t\t\t...( ! isShowingState ? { paddingLeft: 0 } : {} ),\n\t\t\t\t\t\t\t'.MuiChip-label': isShowingState ? { paddingRight: 0 } : { padding: 0 },\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</UnstableChipGroup>\n\t\t\t<CssClassProvider { ...classProps } handleRename={ openEditMode }>\n\t\t\t\t<CssClassMenu popupState={ popupState } anchorEl={ chipRef } fixed={ fixed } />\n\t\t\t</CssClassProvider>\n\t\t</ThemeProvider>\n\t);\n}\n\nconst validateLabel = ( newLabel: string ) => {\n\tconst result = validateStyleLabel( newLabel, 'rename' );\n\n\tif ( result.isValid ) {\n\t\treturn null;\n\t}\n\n\treturn result.errorMessage;\n};\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\n\ntype CssClassContextType = {\n\tid: string | null;\n\tprovider: string | null;\n\tlabel: string;\n\tisActive: boolean;\n\tonClickActive: ( id: string | null ) => void;\n\thandleRename: () => void;\n\tsetError?: ( error: string | null ) => void;\n};\n\nconst CssClassContext = createContext< CssClassContextType | null >( null );\n\nexport const useCssClass = () => {\n\tconst context = useContext( CssClassContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'useCssClass must be used within a CssClassProvider' );\n\t}\n\treturn context;\n};\n\ntype CssClassProviderProps = CssClassContextType & {\n\tchildren: React.ReactNode;\n};\n\nexport function CssClassProvider( { children, ...contextValue }: CssClassProviderProps ) {\n\treturn <CssClassContext.Provider value={ contextValue }>{ children }</CssClassContext.Provider>;\n}\n","import * as React from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport {\n\tisElementsStylesProvider,\n\tstylesRepository,\n\tuseUserStylesCapability,\n} from '@elementor/editor-styles-repository';\nimport { MenuItemInfotip, MenuListItem } from '@elementor/editor-ui';\nimport { bindMenu, Divider, Menu, MenuSubheader, type PopupState, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\nimport { type StyleDefinitionStateWithNormal } from '../../styles-inheritance/types';\nimport { getTempStylesProviderThemeColor } from '../../utils/get-styles-provider-color';\nimport { trackStyles } from '../../utils/tracking/subscribe';\nimport { StyleIndicator } from '../style-indicator';\nimport { useCssClass } from './css-class-context';\nimport { LocalClassSubMenu } from './local-class-sub-menu';\nimport { useUnapplyClass } from './use-apply-and-unapply-class';\n\ntype State = {\n\tkey: StyleDefinitionStateWithNormal;\n\tvalue: StyleDefinitionState | null;\n\tlabel: string;\n};\n\nconst STATES: State[] = [\n\t{ key: 'normal', value: null, label: __( 'normal', 'elementor' ) },\n\t{ key: 'hover', value: 'hover', label: __( 'hover', 'elementor' ) },\n\t{ key: 'focus', value: 'focus', label: __( 'focus', 'elementor' ) },\n\t{ key: 'active', value: 'active', label: __( 'active', 'elementor' ) },\n];\n\ntype CssClassMenuProps = {\n\tpopupState: PopupState;\n\tanchorEl: HTMLElement | null;\n\tfixed?: boolean;\n};\n\nexport function CssClassMenu( { popupState, anchorEl, fixed }: CssClassMenuProps ) {\n\tconst { provider } = useCssClass();\n\tconst isLocalStyle = provider ? isElementsStylesProvider( provider ) : true;\n\n\tconst handleKeyDown = ( e: React.KeyboardEvent< HTMLElement > ) => {\n\t\te.stopPropagation();\n\t};\n\n\treturn (\n\t\t<Menu\n\t\t\tMenuListProps={ { dense: true, sx: { minWidth: '160px' } } }\n\t\t\t{ ...bindMenu( popupState ) }\n\t\t\tanchorEl={ anchorEl }\n\t\t\tanchorOrigin={ {\n\t\t\t\tvertical: 'bottom',\n\t\t\t\thorizontal: 'left',\n\t\t\t} }\n\t\t\ttransformOrigin={ {\n\t\t\t\thorizontal: 'left',\n\t\t\t\tvertical: -4,\n\t\t\t} }\n\t\t\tonKeyDown={ handleKeyDown }\n\t\t\t// Workaround for focus-visible issue.\n\t\t\tdisableAutoFocusItem\n\t\t>\n\t\t\t{ isLocalStyle && <LocalClassSubMenu popupState={ popupState } /> }\n\t\t\t{ /* It has to be an array since MUI menu doesn't accept a Fragment as a child, and wrapping the items with an HTML element disrupts keyboard navigation */ }\n\t\t\t{ getMenuItemsByProvider( { provider, closeMenu: popupState.close, fixed } ) }\n\t\t\t<MenuSubheader sx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }>\n\t\t\t\t{ __( 'States', 'elementor' ) }\n\t\t\t</MenuSubheader>\n\t\t\t{ STATES.map( ( state ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StateMenuItem\n\t\t\t\t\t\tkey={ state.key }\n\t\t\t\t\t\tstate={ state.value }\n\t\t\t\t\t\tlabel={ state.label }\n\t\t\t\t\t\tcloseMenu={ popupState.close }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t<ClassStatesMenu closeMenu={ popupState.close } />\n\t\t</Menu>\n\t);\n}\n\nfunction ClassStatesMenu( { closeMenu }: { closeMenu: () => void } ) {\n\tconst { elementStates, elementTitle } = useElementStates();\n\n\tif ( ! elementStates.length ) {\n\t\treturn null;\n\t}\n\n\t/* translators: %s: Element type title. */\n\tconst customTitle = __( '%s States', 'elementor' ).replace( '%s', elementTitle );\n\n\treturn (\n\t\t<>\n\t\t\t<Divider />\n\t\t\t<MenuSubheader sx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }>\n\t\t\t\t{ customTitle }\n\t\t\t</MenuSubheader>\n\t\t\t{ elementStates.map( ( state ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StateMenuItem\n\t\t\t\t\t\tkey={ state.key }\n\t\t\t\t\t\tstate={ state.value }\n\t\t\t\t\t\tlabel={ state.label }\n\t\t\t\t\t\tcloseMenu={ closeMenu }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n\nconst CLASS_STATES_MAP: Record< string, { label: string } > = {\n\tselected: {\n\t\tlabel: __( 'selected', 'elementor' ),\n\t},\n};\n\nexport function useElementStates() {\n\tconst { elementType } = useElement();\n\n\tconst { styleStates = [] } = elementType;\n\n\tconst elementStates = styleStates.map( ( { value, name } ) => ( {\n\t\tkey: value,\n\t\tvalue,\n\t\tlabel: CLASS_STATES_MAP[ value ]?.label ?? name,\n\t} ) );\n\n\treturn {\n\t\telementStates,\n\t\telementTitle: elementType.title,\n\t};\n}\n\nfunction useModifiedStates( styleId: string | null ): Partial< Record< StyleDefinitionStateWithNormal, true > > {\n\tconst { meta } = useStyle();\n\tconst styleDef = stylesRepository.all().find( ( style ) => style.id === styleId );\n\n\treturn Object.fromEntries(\n\t\tstyleDef?.variants\n\t\t\t.filter( ( variant ) => meta.breakpoint === variant.meta.breakpoint )\n\t\t\t.map( ( variant ) => [ variant.meta.state ?? 'normal', true ] ) ?? []\n\t);\n}\n\nfunction getMenuItemsByProvider( {\n\tprovider,\n\tcloseMenu,\n\tfixed,\n}: {\n\tprovider: string | null;\n\tcloseMenu: () => void;\n\tfixed?: boolean;\n} ) {\n\tif ( ! provider ) {\n\t\treturn [];\n\t}\n\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\tconst providerActions = providerInstance?.actions;\n\n\tconst canUpdate = providerActions?.update;\n\tconst canUnapply = ! fixed;\n\n\tconst actions = [\n\t\tcanUpdate && <RenameClassMenuItem key=\"rename-class\" closeMenu={ closeMenu } />,\n\t\tcanUnapply && <UnapplyClassMenuItem key=\"unapply-class\" closeMenu={ closeMenu } />,\n\t].filter( Boolean );\n\n\tif ( actions.length ) {\n\t\tactions.unshift(\n\t\t\t<MenuSubheader\n\t\t\t\tkey=\"provider-label\"\n\t\t\t\tsx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1, textTransform: 'capitalize' } }\n\t\t\t>\n\t\t\t\t{ providerInstance?.labels?.singular }\n\t\t\t</MenuSubheader>\n\t\t);\n\t\tactions.push( <Divider key=\"provider-actions-divider\" /> );\n\t}\n\n\treturn actions;\n}\n\ntype StateMenuItemProps = {\n\tstate: StyleDefinitionState;\n\tlabel: string;\n\tcloseMenu: () => void;\n};\n\nfunction StateMenuItem( { state, label, closeMenu, ...props }: StateMenuItemProps ) {\n\tconst { id: styleId, provider } = useCssClass();\n\tconst { id: activeId, setId: setActiveId, setMetaState: setActiveMetaState, meta } = useStyle();\n\tconst { state: activeState } = meta;\n\tconst { userCan } = useUserStylesCapability();\n\n\tconst modifiedStates = useModifiedStates( styleId );\n\n\tconst isUpdateAllowed = ! state || userCan( provider ?? '' ).updateProps;\n\n\tconst isStyled = modifiedStates[ state ?? 'normal' ] ?? false;\n\tconst disabled = ! isUpdateAllowed && ! isStyled;\n\tconst isActive = styleId === activeId;\n\tconst isSelected = state === activeState && isActive;\n\n\treturn (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tselected={ isSelected }\n\t\t\tdisabled={ disabled }\n\t\t\tsx={ { textTransform: 'capitalize' } }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! isActive ) {\n\t\t\t\t\tsetActiveId( styleId );\n\t\t\t\t}\n\t\t\t\ttrackStyles( provider ?? '', 'classStateClicked', {\n\t\t\t\t\tclassId: styleId,\n\t\t\t\t\ttype: label,\n\t\t\t\t\tsource: styleId ? 'global' : 'local',\n\t\t\t\t} );\n\t\t\t\tsetActiveMetaState( state );\n\t\t\t\tcloseMenu();\n\t\t\t} }\n\t\t>\n\t\t\t<MenuItemInfotip\n\t\t\t\tshowInfoTip={ disabled }\n\t\t\t\tcontent={ __( 'With your current role, you can only use existing states.', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<Stack gap={ 0.75 } direction=\"row\" alignItems=\"center\">\n\t\t\t\t\t{ isStyled && (\n\t\t\t\t\t\t<StyleIndicator\n\t\t\t\t\t\t\taria-label={ __( 'Has style', 'elementor' ) }\n\t\t\t\t\t\t\tgetColor={ getTempStylesProviderThemeColor( provider ?? '' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ label }\n\t\t\t\t</Stack>\n\t\t\t</MenuItemInfotip>\n\t\t</MenuListItem>\n\t);\n}\n\nfunction UnapplyClassMenuItem( { closeMenu, ...props }: { closeMenu: () => void } ) {\n\tconst { id: classId, label: classLabel, provider } = useCssClass();\n\tconst unapplyClass = useUnapplyClass();\n\n\treturn classId ? (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tonClick={ () => {\n\t\t\t\tunapplyClass( { classId, classLabel } );\n\t\t\t\ttrackStyles( provider ?? '', 'classRemoved', {\n\t\t\t\t\tclassId,\n\t\t\t\t\tclassTitle: classLabel,\n\t\t\t\t\tsource: 'style-tab',\n\t\t\t\t} );\n\t\t\t\tcloseMenu();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Remove', 'elementor' ) }\n\t\t</MenuListItem>\n\t) : null;\n}\n\nfunction RenameClassMenuItem( { closeMenu }: { closeMenu: () => void } ) {\n\tconst { handleRename, provider } = useCssClass();\n\tconst { userCan } = useUserStylesCapability();\n\n\tif ( ! provider ) {\n\t\treturn null;\n\t}\n\n\tconst isAllowed = userCan( provider ).update;\n\n\treturn (\n\t\t<MenuListItem\n\t\t\tdisabled={ ! isAllowed }\n\t\t\tonClick={ () => {\n\t\t\t\tcloseMenu();\n\t\t\t\thandleRename();\n\t\t\t} }\n\t\t>\n\t\t\t<MenuItemInfotip\n\t\t\t\tshowInfoTip={ ! isAllowed }\n\t\t\t\tcontent={ __(\n\t\t\t\t\t'With your current role, you can use existing classes but can’t modify them.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ __( 'Rename', 'elementor' ) }\n\t\t\t</MenuItemInfotip>\n\t\t</MenuListItem>\n\t);\n}\n","import { styled, type Theme } from '@elementor/ui';\n\nexport const StyleIndicator = styled( 'div', {\n\tshouldForwardProp: ( prop: string ) => ! [ 'isOverridden', 'getColor' ].includes( prop ),\n} )<\n\t| {\n\t\t\tisOverridden?: boolean;\n\t\t\tgetColor?: never;\n\t }\n\t| {\n\t\t\tisOverridden?: boolean;\n\t\t\tgetColor?: ( ( theme: Theme ) => string ) | null;\n\t }\n>`\n\twidth: 5px;\n\theight: 5px;\n\tborder-radius: 50%;\n\tbackground-color: ${ ( { theme, isOverridden, getColor } ) => {\n\t\tif ( isOverridden ) {\n\t\t\treturn theme.palette.warning.light;\n\t\t}\n\n\t\tconst providerColor = getColor?.( theme );\n\n\t\treturn providerColor ?? theme.palette.text.disabled;\n\t} };\n`;\n","import * as React from 'react';\nimport { MenuSubheader, type PopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CssClassConvert } from './css-class-convert-local';\nimport { useCanConvertLocalClassToGlobal } from './use-can-convert-local-class-to-global';\n\ntype OwnProps = {\n\tpopupState: PopupState;\n};\n\nexport const LocalClassSubMenu = ( props: OwnProps ) => {\n\tconst { canConvert, styleDef } = useCanConvertLocalClassToGlobal();\n\n\treturn (\n\t\t<>\n\t\t\t<MenuSubheader sx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }>\n\t\t\t\t{ __( 'Local Class', 'elementor' ) }\n\t\t\t</MenuSubheader>\n\t\t\t<CssClassConvert canConvert={ canConvert } styleDef={ styleDef } closeMenu={ props.popupState.close } />\n\t\t</>\n\t);\n};\n","import { isElementsStylesProvider } from '@elementor/editor-styles-repository';\n\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\n\nexport const useCanConvertLocalClassToGlobal = () => {\n\tconst { element } = useElement();\n\tconst { provider, id, meta } = useStyle();\n\tconst styleDef = provider?.actions.get( id, { elementId: element.id, ...meta } );\n\n\tconst isLocalStylesProvider = provider && isElementsStylesProvider( provider?.getKey() );\n\tconst variants = styleDef?.variants || [];\n\n\tconst canConvert = !! ( isLocalStylesProvider && variants.length );\n\n\treturn {\n\t\tcanConvert,\n\t\tisLocalStylesProvider,\n\t\tid,\n\t\tstyleDef: styleDef || null,\n\t};\n};\n","import { useCallback, useMemo } from 'react';\nimport { getElementLabel } from '@elementor/editor-elements';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\nimport { useGetStylesRepositoryCreateAction } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { doApplyClasses, doGetAppliedClasses } from '../../apply-unapply-actions';\nimport { useClassesProp } from '../../contexts/classes-prop-context';\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\n\ntype UndoableClassActionPayload = {\n\tclassId: StyleDefinitionID;\n\tclassLabel: string;\n};\n\ntype CreateAndApplyClassPayload = {\n\tclassLabel: string;\n};\n\ntype CreateAndApplyClassUndoData = {\n\tprevActiveId: string | null;\n\tcreatedId: StyleDefinitionID;\n};\n\nexport function useApplyClass() {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst { element } = useElement();\n\n\tconst applyClass = useApply();\n\tconst unapplyClass = useUnapply();\n\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( { classId }: UndoableClassActionPayload ) => {\n\t\t\t\t\tconst prevActiveId = activeId;\n\n\t\t\t\t\tapplyClass( classId );\n\n\t\t\t\t\treturn prevActiveId;\n\t\t\t\t},\n\t\t\t\tundo: ( { classId }: UndoableClassActionPayload, prevActiveId: string | null ) => {\n\t\t\t\t\tunapplyClass( classId );\n\t\t\t\t\tsetActiveId( prevActiveId );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: getElementLabel( element.id ),\n\t\t\t\tsubtitle: ( { classLabel } ) => {\n\t\t\t\t\t/* translators: %s is the class name. */\n\t\t\t\t\treturn __( `class %s applied`, 'elementor' ).replace( '%s', classLabel );\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}, [ activeId, applyClass, element.id, unapplyClass, setActiveId ] );\n}\n\nexport function useUnapplyClass() {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst { element } = useElement();\n\n\tconst applyClass = useApply();\n\tconst unapplyClass = useUnapply();\n\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( { classId }: UndoableClassActionPayload ) => {\n\t\t\t\t\tconst prevActiveId = activeId;\n\n\t\t\t\t\tunapplyClass( classId );\n\n\t\t\t\t\treturn prevActiveId;\n\t\t\t\t},\n\t\t\t\tundo: ( { classId }: UndoableClassActionPayload, prevActiveId: string | null ) => {\n\t\t\t\t\tapplyClass( classId );\n\t\t\t\t\tsetActiveId( prevActiveId );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: getElementLabel( element.id ),\n\t\t\t\tsubtitle: ( { classLabel } ) => {\n\t\t\t\t\t/* translators: %s is the class name. */\n\t\t\t\t\treturn __( `class %s removed`, 'elementor' ).replace( '%s', classLabel );\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}, [ activeId, applyClass, element.id, unapplyClass, setActiveId ] );\n}\n\nexport function useCreateAndApplyClass() {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\n\tconst [ provider, createAction ] = useGetStylesRepositoryCreateAction() ?? [ null, null ];\n\tconst deleteAction = provider?.actions.delete;\n\n\tconst applyClass = useApply();\n\tconst unapplyClass = useUnapply();\n\n\tconst undoableCreateAndApply = useMemo( () => {\n\t\tif ( ! provider || ! createAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( { classLabel }: CreateAndApplyClassPayload ): CreateAndApplyClassUndoData => {\n\t\t\t\t\tconst prevActiveId = activeId;\n\n\t\t\t\t\tconst createdId = createAction( classLabel );\n\t\t\t\t\tapplyClass( createdId );\n\t\t\t\t\treturn { prevActiveId, createdId };\n\t\t\t\t},\n\t\t\t\tundo: ( _: CreateAndApplyClassPayload, { prevActiveId, createdId }: CreateAndApplyClassUndoData ) => {\n\t\t\t\t\tunapplyClass( createdId );\n\t\t\t\t\tdeleteAction?.( createdId );\n\n\t\t\t\t\tsetActiveId( prevActiveId );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: __( 'Class', 'elementor' ),\n\t\t\t\tsubtitle: ( { classLabel } ) => {\n\t\t\t\t\t/* translators: %s is the class name. */\n\t\t\t\t\treturn __( `%s created`, 'elementor' ).replace( '%s', classLabel );\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}, [ activeId, applyClass, createAction, deleteAction, provider, setActiveId, unapplyClass ] );\n\n\tif ( ! provider || ! undoableCreateAndApply ) {\n\t\treturn [ null, null ];\n\t}\n\n\treturn [ provider, undoableCreateAndApply ] as const;\n}\n\nfunction useApply() {\n\tconst { element } = useElement();\n\tconst { setId: setActiveId } = useStyle();\n\tconst { setClasses, getAppliedClasses } = useClasses();\n\n\treturn useCallback(\n\t\t( classIDToApply: StyleDefinitionID ) => {\n\t\t\tconst appliedClasses = getAppliedClasses();\n\n\t\t\tif ( appliedClasses.includes( classIDToApply ) ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Class ${ classIDToApply } is already applied to element ${ element.id }, cannot re-apply.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst updatedClassesIds = [ ...appliedClasses, classIDToApply ];\n\t\t\tsetClasses( updatedClassesIds );\n\t\t\tsetActiveId( classIDToApply );\n\t\t},\n\t\t[ element.id, getAppliedClasses, setActiveId, setClasses ]\n\t);\n}\n\nfunction useUnapply() {\n\tconst { element } = useElement();\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst { setClasses, getAppliedClasses } = useClasses();\n\n\treturn useCallback(\n\t\t( classIDToUnapply: StyleDefinitionID ) => {\n\t\t\tconst appliedClasses = getAppliedClasses();\n\n\t\t\tif ( ! appliedClasses.includes( classIDToUnapply ) ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Class ${ classIDToUnapply } is not applied to element ${ element.id }, cannot unapply it.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst updatedClassesIds = appliedClasses.filter( ( id ) => id !== classIDToUnapply );\n\t\t\tsetClasses( updatedClassesIds );\n\n\t\t\tif ( activeId === classIDToUnapply ) {\n\t\t\t\tsetActiveId( updatedClassesIds[ 0 ] ?? null );\n\t\t\t}\n\t\t},\n\t\t[ activeId, element.id, getAppliedClasses, setActiveId, setClasses ]\n\t);\n}\n\nfunction useClasses() {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\n\treturn useMemo( () => {\n\t\tconst setClasses = ( ids: StyleDefinitionID[] ) => {\n\t\t\tdoApplyClasses( element.id, ids, currentClassesProp );\n\t\t};\n\n\t\tconst getAppliedClasses = () => doGetAppliedClasses( element.id, currentClassesProp ) || [];\n\n\t\treturn { setClasses, getAppliedClasses };\n\t}, [ currentClassesProp, element.id ] );\n}\n","import { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { getElementSetting, updateElementSettings } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\n\n// Externalized for use outside of Hooks\n\nexport function doGetAppliedClasses( elementId: string, classesPropType = 'classes' ) {\n\treturn getElementSetting< ClassesPropValue >( elementId, classesPropType )?.value || [];\n}\n\nexport function doApplyClasses( elementId: string, classIds: StyleDefinitionID[], classesPropType = 'classes' ) {\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: { [ classesPropType ]: classesPropTypeUtil.create( classIds ) },\n\t\twithHistory: false,\n\t} );\n\tsetDocumentModifiedStatus( true );\n}\n\nexport function doUnapplyClass( elementId: string, classId: StyleDefinitionID, classesPropType = 'classes' ) {\n\tconst appliedClasses = getElementSetting< ClassesPropValue >( elementId, classesPropType )?.value || [];\n\tif ( ! appliedClasses.includes( classId ) ) {\n\t\treturn false;\n\t}\n\n\tconst updatedClassIds = appliedClasses.filter( ( id ) => id !== classId );\n\tdoApplyClasses( elementId, updatedClassIds, classesPropType );\n\treturn true;\n}\n","import * as React from 'react';\nimport { type BreakpointId, type BreakpointNode, getBreakpointsTree } from '@elementor/editor-responsive';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { useCustomCss } from '../hooks/use-custom-css';\nimport { getStylesProviderThemeColor } from '../utils/get-styles-provider-color';\nimport { StyleIndicator } from './style-indicator';\n\nexport const CustomCssIndicator = () => {\n\tconst { customCss } = useCustomCss();\n\tconst { id: styleId, provider, meta } = useStyle();\n\tconst {\n\t\telement: { id: elementId },\n\t} = useElement();\n\n\tconst style = React.useMemo(\n\t\t() => ( styleId && provider ? provider.actions.get( styleId, { elementId } ) : null ),\n\t\t[ styleId, provider, elementId ]\n\t);\n\n\tconst hasContent = Boolean( customCss?.raw?.trim() );\n\n\tconst hasInheritedContent = React.useMemo( () => {\n\t\tif ( hasContent ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn hasInheritedCustomCss( style, meta );\n\t}, [ hasContent, style, meta ] );\n\n\tif ( ! hasContent ) {\n\t\tif ( hasInheritedContent ) {\n\t\t\treturn <StyleIndicator />;\n\t\t}\n\t\treturn null;\n\t}\n\n\treturn <StyleIndicator getColor={ provider ? getStylesProviderThemeColor( provider.getKey() ) : undefined } />;\n};\n\nconst hasInheritedCustomCss = (\n\tstyle: StyleDefinition | null,\n\tmeta: StyleDefinitionVariant[ 'meta' ] | null\n): boolean => {\n\tif ( ! style || ! meta ) {\n\t\treturn false;\n\t}\n\n\tconst target = ( meta.breakpoint ?? 'desktop' ) as BreakpointId;\n\tconst root = getBreakpointsTree();\n\tconst state = meta.state;\n\n\tfunction search( node: BreakpointNode, ancestorHasCss: boolean ): boolean | undefined {\n\t\tif ( ! style ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst hasHere = Boolean(\n\t\t\tgetVariantByMeta( style, {\n\t\t\t\tbreakpoint: node.id as BreakpointId,\n\t\t\t\tstate,\n\t\t\t} )?.custom_css?.raw?.trim()\n\t\t);\n\n\t\tif ( node.id === target ) {\n\t\t\treturn ancestorHasCss;\n\t\t}\n\n\t\tfor ( const child of node.children ?? [] ) {\n\t\t\tconst res = search( child, ancestorHasCss || hasHere );\n\n\t\t\tif ( res !== undefined ) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\treturn Boolean( search( root, false ) );\n};\n","import { useMemo } from 'react';\nimport {\n\tcreateElementStyle,\n\tdeleteElementStyle,\n\ttype ElementID,\n\tshouldCreateNewLocalStyle,\n} from '@elementor/editor-elements';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport {\n\ttype CustomCss,\n\tgetVariantByMeta,\n\ttype StyleDefinition,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { ELEMENTS_STYLES_RESERVED_LABEL, type StylesProvider } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { decodeString, encodeString } from '@elementor/utils';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { StylesProviderCannotUpdatePropsError } from '../errors';\nimport { getSubtitle, getTitle, HISTORY_DEBOUNCE_WAIT } from './use-styles-fields';\nimport { useStylesRerender } from './use-styles-rerender';\n\ntype UpdateStyleArgs = {\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tcustomCss: CustomCss;\n\tpropDisplayName: string;\n};\n\ntype CreateStyleArgs = {\n\tstyleId: null;\n\tprovider: null;\n\tcustomCss: CustomCss | null;\n\tpropDisplayName: string;\n};\n\ntype UpdateStyleReturn = {\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tprevCustomCss: CustomCss | null;\n};\n\ntype CreateStyleReturn = {\n\tcreatedStyleId: StyleDefinition[ 'id' ];\n};\n\ntype UndoableUpdateStylePayload = UpdateStyleArgs | CreateStyleArgs;\ntype UndoableUpdateStyleReturn = UpdateStyleReturn | CreateStyleReturn;\n\nexport const useCustomCss = () => {\n\tconst {\n\t\telement: { id: elementId },\n\t} = useElement();\n\tconst { id: styleId, meta, provider } = useStyle();\n\tconst style = provider?.actions.get( styleId, { elementId } );\n\tconst undoableUpdateStyle = useUndoableActions( { elementId, meta } );\n\n\tconst currentStyleId = styleId ? styleId : null;\n\tconst currentProvider = styleId ? provider : null;\n\n\tuseStylesRerender();\n\n\tconst variant = style ? getVariantByMeta( style, meta ) : null;\n\n\tconst setCustomCss = (\n\t\traw: string,\n\t\t{ history: { propDisplayName } }: { history: { propDisplayName: string } }\n\t) => {\n\t\tconst newValue = { raw: encodeString( sanitize( raw ) ) };\n\n\t\tundoableUpdateStyle( {\n\t\t\tstyleId: currentStyleId,\n\t\t\tprovider: currentProvider,\n\t\t\tcustomCss: newValue,\n\t\t\tpropDisplayName,\n\t\t} as UndoableUpdateStylePayload );\n\t};\n\n\tconst customCss = variant?.custom_css?.raw ? { raw: decodeString( variant.custom_css.raw ) } : null;\n\n\treturn {\n\t\tcustomCss,\n\t\tsetCustomCss,\n\t};\n};\n\nfunction useUndoableActions( {\n\telementId,\n\tmeta: { breakpoint, state },\n}: {\n\telementId: ElementID;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n} ) {\n\tconst classesProp = useClassesProp();\n\n\treturn useMemo( () => {\n\t\tconst meta = { breakpoint, state };\n\n\t\tconst createStyleArgs = { elementId, classesProp, meta, label: ELEMENTS_STYLES_RESERVED_LABEL };\n\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( payload: UndoableUpdateStylePayload ): UndoableUpdateStyleReturn => {\n\t\t\t\t\tif ( shouldCreateNewLocalStyle< StylesProvider >( payload ) ) {\n\t\t\t\t\t\treturn create( payload as CreateStyleArgs );\n\t\t\t\t\t}\n\t\t\t\t\treturn update( payload as UpdateStyleArgs );\n\t\t\t\t},\n\t\t\t\tundo: ( payload: UndoableUpdateStylePayload, doReturn: UndoableUpdateStyleReturn ) => {\n\t\t\t\t\tif ( shouldCreateNewLocalStyle< StylesProvider >( payload ) ) {\n\t\t\t\t\t\treturn undoCreate( payload as CreateStyleArgs, doReturn as CreateStyleReturn );\n\t\t\t\t\t}\n\t\t\t\t\treturn undoUpdate( payload as UpdateStyleArgs, doReturn as UpdateStyleReturn );\n\t\t\t\t},\n\t\t\t\tredo: ( payload: UndoableUpdateStylePayload, doReturn: UndoableUpdateStyleReturn ) => {\n\t\t\t\t\tif ( shouldCreateNewLocalStyle< StylesProvider >( payload ) ) {\n\t\t\t\t\t\treturn create( payload as CreateStyleArgs, doReturn as CreateStyleReturn );\n\t\t\t\t\t}\n\t\t\t\t\treturn update( payload as UpdateStyleArgs );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: ( { provider, styleId } ) => getTitle( { provider, styleId, elementId } ),\n\t\t\t\tsubtitle: ( { provider, styleId, propDisplayName } ) =>\n\t\t\t\t\tgetSubtitle( { provider, styleId, elementId, propDisplayName } ),\n\t\t\t\tdebounce: { wait: HISTORY_DEBOUNCE_WAIT },\n\t\t\t}\n\t\t);\n\n\t\tfunction create( { customCss }: CreateStyleArgs, redoArgs?: CreateStyleReturn ): CreateStyleReturn {\n\t\t\tconst createdStyle = createElementStyle( {\n\t\t\t\t...createStyleArgs,\n\t\t\t\tprops: {},\n\t\t\t\tcustom_css: customCss ?? null,\n\t\t\t\tstyleId: redoArgs?.createdStyleId,\n\t\t\t} );\n\n\t\t\treturn { createdStyleId: createdStyle };\n\t\t}\n\n\t\tfunction undoCreate( _: UndoableUpdateStylePayload, { createdStyleId }: CreateStyleReturn ) {\n\t\t\tdeleteElementStyle( elementId, createdStyleId );\n\t\t}\n\n\t\tfunction update( { provider, styleId, customCss }: UpdateStyleArgs ): UpdateStyleReturn {\n\t\t\tif ( ! provider.actions.updateCustomCss ) {\n\t\t\t\tthrow new StylesProviderCannotUpdatePropsError( {\n\t\t\t\t\tcontext: { providerKey: provider.getKey() },\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tconst style = provider.actions.get( styleId, { elementId } );\n\t\t\tconst prevCustomCss = getCurrentCustomCss( style, meta );\n\n\t\t\tprovider.actions.updateCustomCss( { id: styleId, meta, custom_css: customCss }, { elementId } );\n\n\t\t\treturn { styleId, provider, prevCustomCss };\n\t\t}\n\n\t\tfunction undoUpdate( _: UndoableUpdateStylePayload, { styleId, provider, prevCustomCss }: UpdateStyleReturn ) {\n\t\t\tprovider.actions.updateCustomCss?.(\n\t\t\t\t{ id: styleId, meta, custom_css: prevCustomCss ?? { raw: '' } },\n\t\t\t\t{ elementId }\n\t\t\t);\n\t\t}\n\t}, [ elementId, breakpoint, state, classesProp ] );\n}\n\nfunction getCurrentCustomCss( style: StyleDefinition | null, meta: StyleDefinitionVariant[ 'meta' ] ) {\n\tif ( ! style ) {\n\t\treturn null;\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\treturn variant?.custom_css ?? null;\n}\n\nfunction sanitize( raw: string ) {\n\treturn stringPropTypeUtil.schema.safeParse( stringPropTypeUtil.create( raw ) ).data?.value?.trim() ?? '';\n}\n","import { useMemo } from 'react';\nimport {\n\tcreateElementStyle,\n\tdeleteElementStyle,\n\ttype ElementID,\n\tgetElementLabel,\n\tshouldCreateNewLocalStyle,\n} from '@elementor/editor-elements';\nimport type { Props } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\nimport { isElementsStylesProvider, type StylesProvider } from '@elementor/editor-styles-repository';\nimport { ELEMENTS_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { StyleNotFoundUnderProviderError, StylesProviderCannotUpdatePropsError } from '../errors';\nimport { useStylesRerender } from './use-styles-rerender';\n\nexport const HISTORY_DEBOUNCE_WAIT = 800;\n\nexport function useStylesFields< T extends Props >( propNames: ( keyof T & string )[] ) {\n\tconst {\n\t\telement: { id: elementId },\n\t} = useElement();\n\tconst { id: styleId, meta, provider, canEdit } = useStyle();\n\n\tconst undoableUpdateStyle = useUndoableActions( { elementId, meta } );\n\n\tuseStylesRerender();\n\n\tconst values = getProps< T >( { elementId, styleId, provider, meta, propNames } );\n\n\tconst setValues = ( props: T, { history: { propDisplayName } }: { history: { propDisplayName: string } } ) => {\n\t\tif ( ! styleId ) {\n\t\t\tundoableUpdateStyle( { styleId: null, provider: null, props, propDisplayName } );\n\t\t} else {\n\t\t\tundoableUpdateStyle( { styleId, provider, props, propDisplayName } );\n\t\t}\n\t};\n\n\treturn { values, setValues, canEdit };\n}\n\ntype GetPropsArgs = {\n\tprovider: StylesProvider | null;\n\tstyleId: StyleDefinition[ 'id' ] | null;\n\telementId: ElementID;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tpropNames: string[];\n};\n\ntype NullableValues< T extends Props > = {\n\t[ K in keyof T ]: T[ K ] | null;\n};\n\nfunction getProps< T extends Props >( { styleId, elementId, provider, meta, propNames }: GetPropsArgs ) {\n\tif ( ! provider || ! styleId ) {\n\t\treturn null;\n\t}\n\n\tconst style = provider.actions.get( styleId, { elementId } );\n\n\tif ( ! style ) {\n\t\tthrow new StyleNotFoundUnderProviderError( { context: { styleId, providerKey: provider.getKey() } } );\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\treturn Object.fromEntries(\n\t\tpropNames.map( ( key ) => [ key, variant?.props[ key ] ?? null ] )\n\t) as NullableValues< T >;\n}\n\ntype UpdateStyleArgs = {\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tprops: Props;\n\tpropDisplayName: string;\n};\n\ntype CreateStyleArgs = {\n\tstyleId: null;\n\tprovider: null;\n\tprops: Props;\n\tpropDisplayName: string;\n};\n\ntype UpdateStyleReturn = {\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tprevProps: Props;\n};\n\ntype CreateStyleReturn = {\n\tcreatedStyleId: StyleDefinition[ 'id' ];\n};\n\ntype UndoableUpdateStylePayload = UpdateStyleArgs | CreateStyleArgs;\ntype UndoableUpdateStyleReturn = UpdateStyleReturn | CreateStyleReturn;\n\nfunction useUndoableActions( {\n\telementId,\n\tmeta: { breakpoint, state },\n}: {\n\telementId: ElementID;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n} ) {\n\tconst classesProp = useClassesProp();\n\n\treturn useMemo( () => {\n\t\tconst meta = { breakpoint, state };\n\n\t\tconst createStyleArgs = { elementId, classesProp, meta, label: ELEMENTS_STYLES_RESERVED_LABEL };\n\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( payload: UndoableUpdateStylePayload ): UndoableUpdateStyleReturn => {\n\t\t\t\t\tif ( shouldCreateNewLocalStyle< StylesProvider >( payload ) ) {\n\t\t\t\t\t\treturn create( payload as CreateStyleArgs );\n\t\t\t\t\t}\n\t\t\t\t\treturn update( payload as UpdateStyleArgs );\n\t\t\t\t},\n\t\t\t\tundo: ( payload: UndoableUpdateStylePayload, doReturn: UndoableUpdateStyleReturn ) => {\n\t\t\t\t\tconst wasLocalStyleCreated = shouldCreateNewLocalStyle< StylesProvider >( payload );\n\n\t\t\t\t\tif ( wasLocalStyleCreated ) {\n\t\t\t\t\t\treturn undoCreate( payload as CreateStyleArgs, doReturn as CreateStyleReturn );\n\t\t\t\t\t}\n\t\t\t\t\treturn undo( payload as UpdateStyleArgs, doReturn as UpdateStyleReturn );\n\t\t\t\t},\n\t\t\t\tredo: ( payload: UndoableUpdateStylePayload, doReturn: UndoableUpdateStyleReturn ) => {\n\t\t\t\t\tconst wasLocalStyleCreated = shouldCreateNewLocalStyle< StylesProvider >( payload );\n\n\t\t\t\t\tif ( wasLocalStyleCreated ) {\n\t\t\t\t\t\treturn create( payload as CreateStyleArgs, doReturn as CreateStyleReturn );\n\t\t\t\t\t}\n\t\t\t\t\treturn update( payload as UpdateStyleArgs );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: ( { provider, styleId } ) => getTitle( { provider, styleId, elementId } ),\n\t\t\t\tsubtitle: ( { provider, styleId, propDisplayName } ) =>\n\t\t\t\t\tgetSubtitle( { provider, styleId, elementId, propDisplayName } ),\n\t\t\t\tdebounce: { wait: HISTORY_DEBOUNCE_WAIT },\n\t\t\t}\n\t\t);\n\n\t\tfunction create( { props }: CreateStyleArgs, redoArgs?: CreateStyleReturn ): CreateStyleReturn {\n\t\t\tconst createdStyle = createElementStyle( { ...createStyleArgs, props, styleId: redoArgs?.createdStyleId } );\n\n\t\t\treturn { createdStyleId: createdStyle };\n\t\t}\n\n\t\tfunction undoCreate( _: UndoableUpdateStylePayload, { createdStyleId }: CreateStyleReturn ) {\n\t\t\tdeleteElementStyle( elementId, createdStyleId );\n\t\t}\n\n\t\tfunction update( { provider, styleId, props }: UpdateStyleArgs ): UpdateStyleReturn {\n\t\t\tif ( ! provider.actions.updateProps ) {\n\t\t\t\tthrow new StylesProviderCannotUpdatePropsError( {\n\t\t\t\t\tcontext: { providerKey: provider.getKey() },\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tconst style = provider.actions.get( styleId, { elementId } );\n\t\t\tconst prevProps = getCurrentProps( style, meta );\n\n\t\t\tprovider.actions.updateProps( { id: styleId, meta, props }, { elementId } );\n\n\t\t\treturn { styleId, provider, prevProps };\n\t\t}\n\n\t\tfunction undo( _: UndoableUpdateStylePayload, { styleId, provider, prevProps }: UpdateStyleReturn ) {\n\t\t\tprovider.actions.updateProps?.( { id: styleId, meta, props: prevProps }, { elementId } );\n\t\t}\n\t}, [ elementId, breakpoint, state, classesProp ] );\n}\n\nfunction getCurrentProps( style: StyleDefinition | null, meta: StyleDefinitionVariant[ 'meta' ] ) {\n\tif ( ! style ) {\n\t\treturn {};\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\tconst props = variant?.props ?? {};\n\n\treturn structuredClone( props );\n}\n\ntype DefaultHistoryTitleArgs = {\n\tprovider: StylesProvider;\n};\n\ntype DefaultHistorySubtitleArgs = {\n\tprovider: StylesProvider;\n\tstyleId: StyleDefinition[ 'id' ];\n\telementId: ElementID;\n\tpropDisplayName: string;\n};\n\nconst defaultHistoryTitles = {\n\ttitle: ( { provider }: DefaultHistoryTitleArgs ) => {\n\t\tconst providerLabel = provider.labels?.singular;\n\t\treturn providerLabel ? capitalize( providerLabel ) : __( 'Style', 'elementor' );\n\t},\n\tsubtitle: ( { provider, styleId, elementId, propDisplayName }: DefaultHistorySubtitleArgs ) => {\n\t\tconst styleLabel = provider.actions.get( styleId, { elementId } )?.label;\n\n\t\tif ( ! styleLabel ) {\n\t\t\tthrow new Error( `Style ${ styleId } not found` );\n\t\t}\n\n\t\t// translators: %s$1 is the style label, %s$2 is the name of the style property being edited\n\t\treturn __( `%s$1 %s$2 edited`, 'elementor' ).replace( '%s$1', styleLabel ).replace( '%s$2', propDisplayName );\n\t},\n};\n\ntype LocalStyleHistoryTitleArgs = {\n\telementId: ElementID;\n};\n\ntype LocalStyleHistorySubtitleArgs = {\n\tpropDisplayName: string;\n};\n\nconst localStyleHistoryTitles = {\n\ttitle: ( { elementId }: LocalStyleHistoryTitleArgs ) => getElementLabel( elementId ),\n\tsubtitle: ( { propDisplayName }: LocalStyleHistorySubtitleArgs ) =>\n\t\t// translators: %s is the name of the style property being edited\n\t\t__( `%s edited`, 'elementor' ).replace( '%s', propDisplayName ),\n};\n\nfunction capitalize( str: string ) {\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n\nconst isLocalStyle = ( provider: StylesProvider | null, styleId: StyleDefinition[ 'id' ] | null ) =>\n\t! provider || ! styleId || isElementsStylesProvider( provider.getKey() );\n\ntype TitleOptions = {\n\tprovider: StylesProvider | null;\n\tstyleId: string | null;\n\telementId: string;\n};\n\ntype SubtitleOptions = TitleOptions & { propDisplayName: string };\n\nexport const getTitle = ( { provider, styleId, elementId }: TitleOptions ) => {\n\tconst isLocal = isLocalStyle( provider, styleId );\n\n\tif ( isLocal ) {\n\t\treturn localStyleHistoryTitles.title( { elementId } );\n\t}\n\n\treturn defaultHistoryTitles.title( { provider: provider as StylesProvider } );\n};\n\nexport const getSubtitle = ( { provider, styleId, propDisplayName, elementId }: SubtitleOptions ) => {\n\tconst isLocal = isLocalStyle( provider, styleId );\n\n\tif ( isLocal ) {\n\t\treturn localStyleHistoryTitles.subtitle( { propDisplayName } );\n\t}\n\n\treturn defaultHistoryTitles.subtitle( {\n\t\tprovider: provider as StylesProvider,\n\t\tstyleId: styleId as StyleDefinition[ 'id' ],\n\t\telementId,\n\t\tpropDisplayName,\n\t} );\n};\n","import { useEffect, useReducer } from 'react';\n\nimport { useStyle } from '../contexts/style-context';\n\nexport const useStylesRerender = () => {\n\tconst { provider } = useStyle();\n\tconst [ , reRender ] = useReducer( ( p ) => ! p, false );\n\n\tuseEffect( () => provider?.subscribe( reRender ), [ provider ] );\n};\n","import * as React from 'react';\nimport { ControlActionsProvider, ControlReplacementsProvider } from '@elementor/editor-controls';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { ThemeProvider } from '@elementor/editor-ui';\nimport { AtomIcon } from '@elementor/icons';\nimport { createLocation } from '@elementor/locations';\nimport { SessionStorageProvider } from '@elementor/session';\nimport { ErrorBoundary } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ElementProvider } from '../contexts/element-context';\nimport { getControlReplacements } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { getEditingPanelReplacement } from '../editing-panel-replacement-registry';\nimport { EditorPanelErrorFallback } from './editing-panel-error-fallback';\nimport { EditingPanelTabs } from './editing-panel-tabs';\n\nexport const { Slot: PanelHeaderTopSlot, inject: injectIntoPanelHeaderTop } = createLocation();\n\nconst { useMenuItems } = controlActionsMenu;\n\nexport const EditingPanel = () => {\n\tconst { element, elementType } = useSelectedElement();\n\tconst controlReplacements = getControlReplacements();\n\tconst menuItems = useMenuItems().default;\n\n\tif ( ! element || ! elementType ) {\n\t\treturn null;\n\t}\n\n\t/* translators: %s: Element type title. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', elementType.title );\n\n\tconst { component: ReplacementComponent } = getEditingPanelReplacement( element, elementType ) ?? {};\n\n\tlet panelContent = (\n\t\t<>\n\t\t\t<PanelHeader>\n\t\t\t\t<PanelHeaderTitle>{ panelTitle }</PanelHeaderTitle>\n\t\t\t\t<AtomIcon fontSize=\"small\" sx={ { color: 'text.tertiary' } } />\n\t\t\t</PanelHeader>\n\t\t\t<PanelBody>\n\t\t\t\t<EditingPanelTabs />\n\t\t\t</PanelBody>\n\t\t</>\n\t);\n\n\tif ( ReplacementComponent ) {\n\t\tpanelContent = <ReplacementComponent />;\n\t}\n\n\treturn (\n\t\t<ErrorBoundary fallback={ <EditorPanelErrorFallback /> }>\n\t\t\t<SessionStorageProvider prefix={ 'elementor' }>\n\t\t\t\t<ThemeProvider>\n\t\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t\t<ControlReplacementsProvider replacements={ controlReplacements }>\n\t\t\t\t\t\t\t<ElementProvider element={ element } elementType={ elementType }>\n\t\t\t\t\t\t\t\t<Panel>\n\t\t\t\t\t\t\t\t\t<PanelHeaderTopSlot />\n\t\t\t\t\t\t\t\t\t{ panelContent }\n\t\t\t\t\t\t\t\t</Panel>\n\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t\t</ControlActionsProvider>\n\t\t\t\t</ThemeProvider>\n\t\t\t</SessionStorageProvider>\n\t\t</ErrorBoundary>\n\t);\n};\n","import { createControlReplacementsRegistry } from '@elementor/editor-controls';\n\nexport const { registerControlReplacement, getControlReplacements } = createControlReplacementsRegistry();\n","import { createMenu } from '@elementor/menus';\n\nimport Action from './action';\nimport { PopoverAction } from './popover-action';\n\nexport const controlActionsMenu = createMenu( {\n\tcomponents: {\n\t\tAction,\n\t\tPopoverAction,\n\t},\n} );\n","import * as React from 'react';\nimport { type ElementType as ReactElementType } from 'react';\nimport { IconButton, Tooltip } from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\ntype ActionProps = {\n\ttitle: string;\n\tvisible?: boolean;\n\ticon: ReactElementType;\n\tonClick: () => void;\n};\n\nexport default function Action( { title, visible = true, icon: Icon, onClick }: ActionProps ) {\n\tif ( ! visible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Tooltip placement=\"top\" title={ title } arrow={ true }>\n\t\t\t<IconButton aria-label={ title } size={ SIZE } onClick={ onClick }>\n\t\t\t\t<Icon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n}\n","import * as React from 'react';\nimport { type ComponentType, type ElementType as ReactElementType } from 'react';\nimport { useFloatingActionsBar } from '@elementor/editor-controls';\nimport { bindPopover, bindTrigger, IconButton, Popover, Tooltip, usePopupState } from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\nexport type PopoverActionProps = {\n\ttitle: string;\n\tvisible?: boolean;\n\ticon: ReactElementType;\n\tcontent: ComponentType< { close: () => void } >;\n};\n\nexport function PopoverAction( { title, visible = true, icon: Icon, content: PopoverContent }: PopoverActionProps ) {\n\tconst { popupState, triggerProps, popoverProps } = useFloatingActionsPopover();\n\n\tif ( ! visible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Tooltip placement=\"top\" title={ title }>\n\t\t\t\t<IconButton aria-label={ title } size={ SIZE } { ...triggerProps }>\n\t\t\t\t\t<Icon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t\t<Popover\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\tPaperProps={ {\n\t\t\t\t\tsx: { my: 2.5 },\n\t\t\t\t} }\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<PopoverContent close={ popupState.close } />\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nexport function useFloatingActionsPopover() {\n\tconst { setOpen } = useFloatingActionsBar();\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\tconst triggerProps = bindTrigger( popupState );\n\tconst popoverProps = bindPopover( popupState );\n\n\tconst onClick = ( e: React.MouseEvent ) => {\n\t\ttriggerProps.onClick( e );\n\t\tsetOpen( true );\n\t};\n\n\tconst onClose = () => {\n\t\tpopoverProps.onClose();\n\t\tsetOpen( false );\n\t};\n\n\tconst close = () => {\n\t\tpopupState.close();\n\t\tsetOpen( false );\n\t};\n\n\treturn {\n\t\tpopupState: { ...popupState, close },\n\t\ttriggerProps: { ...triggerProps, onClick },\n\t\tpopoverProps: { ...popoverProps, onClose },\n\t};\n}\n","import { type ComponentType } from 'react';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\n\ntype EditingPanelReplacement = {\n\tcondition: ( element: Element, elementType: ElementType ) => boolean;\n\tcomponent: ComponentType;\n\n\t// ordered from lowest to highest\n\tpriority: number;\n};\n\nconst registry = new Map< string, EditingPanelReplacement >();\n\nconst DEFAULT_PRIORITY = 10;\n\nexport const registerEditingPanelReplacement = ( {\n\tid,\n\tpriority = DEFAULT_PRIORITY,\n\t...props\n}: Omit< EditingPanelReplacement, 'priority' > & { id: string; priority?: number } ) => {\n\tregistry.set( id, { ...props, priority } );\n};\n\nexport const getEditingPanelReplacement = (\n\telement: Element,\n\telementType: ElementType\n): EditingPanelReplacement | null =>\n\tArray.from( registry.values() )\n\t\t.filter( ( { condition } ) => condition( element, elementType ) )\n\t\t.sort( ( a, b ) => a.priority - b.priority )?.[ 0 ] ?? null;\n","import * as React from 'react';\nimport { Alert, Box } from '@elementor/ui';\n\nexport function EditorPanelErrorFallback() {\n\treturn (\n\t\t<Box role=\"alert\" sx={ { minHeight: '100%', p: 2 } }>\n\t\t\t<Alert severity=\"error\" sx={ { mb: 2, maxWidth: 400, textAlign: 'center' } }>\n\t\t\t\t<strong>Something went wrong</strong>\n\t\t\t</Alert>\n\t\t</Box>\n\t);\n}\n","import { Fragment } from 'react';\nimport * as React from 'react';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { Divider, Stack, Tab, TabPanel, Tabs, useTabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../contexts/element-context';\nimport { ScrollProvider } from '../contexts/scroll-context';\nimport { useDefaultPanelSettings } from '../hooks/use-default-panel-settings';\nimport { useStateByElement } from '../hooks/use-state-by-element';\nimport { InteractionsTab } from './interactions-tab';\nimport { SettingsTab } from './settings-tab';\nimport { stickyHeaderStyles, StyleTab } from './style-tab';\n\ntype TabValue = 'settings' | 'style' | 'interactions';\n\nexport const EditingPanelTabs = () => {\n\tconst { element } = useElement();\n\treturn (\n\t\t// When switching between elements, the local states should be reset. We are using key to rerender the tabs.\n\t\t// Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key\n\t\t<Fragment key={ element.id }>\n\t\t\t<PanelTabContent />\n\t\t</Fragment>\n\t);\n};\n\nconst PanelTabContent = () => {\n\tconst editorDefaults = useDefaultPanelSettings();\n\tconst defaultComponentTab = editorDefaults.defaultTab as TabValue;\n\tconst isInteractionsActive = isExperimentActive( 'e_interactions' );\n\n\tconst [ currentTab, setCurrentTab ] = useStateByElement< TabValue >( 'tab', defaultComponentTab );\n\tconst { getTabProps, getTabPanelProps, getTabsProps } = useTabs< TabValue >( currentTab );\n\treturn (\n\t\t<ScrollProvider>\n\t\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t\t<Stack sx={ { ...stickyHeaderStyles, top: 0 } }>\n\t\t\t\t\t<Tabs\n\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tsx={ { mt: 0.5 } }\n\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\tonChange={ ( _: unknown, newValue: TabValue ) => {\n\t\t\t\t\t\t\tgetTabsProps().onChange( _, newValue );\n\t\t\t\t\t\t\tsetCurrentTab( newValue );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t\t\t\t{ isInteractionsActive && (\n\t\t\t\t\t\t\t<Tab label={ __( 'Interactions', 'elementor' ) } { ...getTabProps( 'interactions' ) } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t\t<Divider />\n\t\t\t\t</Stack>\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t\t<SettingsTab />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t\t<StyleTab />\n\t\t\t\t</TabPanel>\n\t\t\t\t{ isInteractionsActive && (\n\t\t\t\t\t<TabPanel { ...getTabPanelProps( 'interactions' ) } disablePadding>\n\t\t\t\t\t\t<InteractionsTab />\n\t\t\t\t\t</TabPanel>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</ScrollProvider>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, type ReactNode, useContext, useEffect, useRef, useState } from 'react';\nimport { styled } from '@elementor/ui';\n\ntype ScrollDirection = 'up' | 'down';\n\ntype ScrollContextValue = {\n\tdirection: ScrollDirection;\n};\n\nconst ScrollContext = createContext< ScrollContextValue | undefined >( undefined );\n\nconst ScrollPanel = styled( 'div' )`\n\theight: 100%;\n\toverflow-y: auto;\n`;\n\nconst DEFAULT_SCROLL_DIRECTION: ScrollDirection = 'up';\n\nexport function ScrollProvider( { children }: { children: ReactNode } ) {\n\tconst [ direction, setDirection ] = useState< ScrollDirection >( DEFAULT_SCROLL_DIRECTION );\n\tconst ref = useRef< HTMLDivElement >( null );\n\tconst scrollPos = useRef< number >( 0 );\n\n\tuseEffect( () => {\n\t\tconst scrollElement = ref.current;\n\n\t\tif ( ! scrollElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleScroll = () => {\n\t\t\tconst { scrollTop } = scrollElement;\n\n\t\t\tif ( scrollTop > scrollPos.current ) {\n\t\t\t\tsetDirection( 'down' );\n\t\t\t} else if ( scrollTop < scrollPos.current ) {\n\t\t\t\tsetDirection( 'up' );\n\t\t\t}\n\n\t\t\tscrollPos.current = scrollTop;\n\t\t};\n\n\t\tscrollElement.addEventListener( 'scroll', handleScroll );\n\n\t\treturn () => {\n\t\t\tscrollElement.removeEventListener( 'scroll', handleScroll );\n\t\t};\n\t} );\n\n\treturn (\n\t\t<ScrollContext.Provider value={ { direction } }>\n\t\t\t<ScrollPanel ref={ ref }>{ children }</ScrollPanel>\n\t\t</ScrollContext.Provider>\n\t);\n}\n\nexport function useScrollDirection() {\n\treturn useContext( ScrollContext )?.direction ?? DEFAULT_SCROLL_DIRECTION;\n}\n","import { createContext, useContext } from 'react';\n\nimport { useElement } from '../contexts/element-context';\n\ntype Defaults = {\n\tdefaultSectionsExpanded: Record< string, string[] >;\n\tdefaultTab: string;\n};\n\nconst fallbackEditorSettings: Defaults = {\n\tdefaultSectionsExpanded: {\n\t\tsettings: [ 'Content', 'Settings' ],\n\t\tstyle: [],\n\t},\n\tdefaultTab: 'settings',\n};\n\nconst defaultPanelSettingsContext = createContext< Record< string, Defaults | undefined > >( {\n\t'e-div-block': {\n\t\tdefaultSectionsExpanded: fallbackEditorSettings.defaultSectionsExpanded,\n\t\tdefaultTab: 'style',\n\t},\n\t'e-flexbox': {\n\t\tdefaultSectionsExpanded: fallbackEditorSettings.defaultSectionsExpanded,\n\t\tdefaultTab: 'style',\n\t},\n\t'e-divider': {\n\t\tdefaultSectionsExpanded: fallbackEditorSettings.defaultSectionsExpanded,\n\t\tdefaultTab: 'style',\n\t},\n} );\n\nexport const useDefaultPanelSettings = () => {\n\tconst { element } = useElement();\n\tconst defaults = useContext( defaultPanelSettingsContext )[ element.type ];\n\treturn defaults || fallbackEditorSettings;\n};\n","import { useState } from 'react';\nimport { getSessionStorageItem, setSessionStorageItem } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\n\nexport const useStateByElement = < T >( key: string, initialValue: T ) => {\n\tconst { element } = useElement();\n\tconst lookup = `elementor/editor-state/${ element.id }/${ key }`;\n\tconst storedValue = getSessionStorageItem< T >( lookup );\n\tconst [ value, setValue ] = useState( storedValue ?? initialValue );\n\n\tconst doUpdate = ( newValue: T ) => {\n\t\tsetSessionStorageItem( lookup, newValue );\n\t\tsetValue( newValue );\n\t};\n\n\treturn [ value, doUpdate ] as const;\n};\n","import * as React from 'react';\nimport { InteractionsTab as InteractionsTabContent } from '@elementor/editor-interactions';\n\nimport { useElement } from '../contexts/element-context';\nimport { SectionsList } from './sections-list';\n\nexport const InteractionsTab = () => {\n\tconst { element } = useElement();\n\n\treturn (\n\t\t<SectionsList>\n\t\t\t<InteractionsTabContent elementId={ element.id } />\n\t\t</SectionsList>\n\t);\n};\n","import * as React from 'react';\nimport { List, type ListProps } from '@elementor/ui';\n\nexport function SectionsList( props: ListProps ) {\n\treturn <List disablePadding component=\"div\" { ...props } />;\n}\n","import * as React from 'react';\nimport { type Control, type ControlItem, type Element, type ElementControl } from '@elementor/editor-elements';\nimport { SessionStorageProvider } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\nimport { useDefaultPanelSettings } from '../hooks/use-default-panel-settings';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\nimport { SettingsControl } from './settings-control';\n\nexport const SettingsTab = () => {\n\tconst { elementType, element } = useElement();\n\tconst settingsDefault = useDefaultPanelSettings();\n\n\tconst isDefaultExpanded = ( sectionId: string ) =>\n\t\tsettingsDefault.defaultSectionsExpanded.settings?.includes( sectionId );\n\n\treturn (\n\t\t<SessionStorageProvider prefix={ element.id }>\n\t\t\t<SectionsList>\n\t\t\t\t{ elementType.controls.map( ( control, index ) => {\n\t\t\t\t\tif ( isControl( control ) ) {\n\t\t\t\t\t\treturn <SettingsControl key={ getKey( control, element ) } control={ control } />;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { type, value } = control;\n\n\t\t\t\t\tif ( type === 'section' ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Section\n\t\t\t\t\t\t\t\ttitle={ value.label }\n\t\t\t\t\t\t\t\tkey={ type + '.' + index }\n\t\t\t\t\t\t\t\tdefaultExpanded={ isDefaultExpanded( value.label ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ value.items?.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tif ( isControl( item ) ) {\n\t\t\t\t\t\t\t\t\t\treturn <SettingsControl key={ getKey( item, element ) } control={ item } />;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// TODO: Handle 2nd level sections\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t} ) }\n\t\t\t</SectionsList>\n\t\t</SessionStorageProvider>\n\t);\n};\n\nfunction getKey( control: Control | ElementControl, element: Element ) {\n\tif ( control.type === 'control' ) {\n\t\treturn control.value.bind + '.' + element.id;\n\t}\n\n\treturn control.value.type + '.' + element.id;\n}\n\nfunction isControl( control: ControlItem ): control is Control | ElementControl {\n\treturn control.type === 'control' || control.type === 'element-control';\n}\n","import * as React from 'react';\nimport { type PropsWithChildren, type ReactNode, useId, useRef } from 'react';\nimport { CollapseIcon } from '@elementor/editor-ui';\nimport { Collapse, Divider, ListItemButton, ListItemText, Stack } from '@elementor/ui';\n\nimport { SectionRefContext } from '../contexts/section-context';\nimport { useStateByElement } from '../hooks/use-state-by-element';\nimport { type CollapsibleValue, getCollapsibleValue } from './collapsible-content';\n\ntype Props = PropsWithChildren< {\n\ttitle: string;\n\tdefaultExpanded?: boolean;\n\ttitleEnd?: CollapsibleValue< ReactNode | string >;\n\tunmountOnExit?: boolean;\n} >;\n\nexport function Section( { title, children, defaultExpanded = false, titleEnd, unmountOnExit = true }: Props ) {\n\tconst [ isOpen, setIsOpen ] = useStateByElement( title, !! defaultExpanded );\n\tconst ref = useRef< HTMLElement >( null );\n\n\tconst handleClick = () => {\n\t\tsetIsOpen( ! isOpen );\n\t};\n\n\tconst id = useId();\n\tconst labelId = `label-${ id }`;\n\tconst contentId = `content-${ id }`;\n\n\treturn (\n\t\t<>\n\t\t\t<ListItemButton\n\t\t\t\tid={ labelId }\n\t\t\t\taria-controls={ contentId }\n\t\t\t\taria-label={ `${ title } section` }\n\t\t\t\tonClick={ handleClick }\n\t\t\t\tsx={ { '&:hover': { backgroundColor: 'transparent' } } }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" flexGrow={ 1 } gap={ 0.5 }>\n\t\t\t\t\t<ListItemText\n\t\t\t\t\t\tsecondary={ title }\n\t\t\t\t\t\tsecondaryTypographyProps={ { color: 'text.primary', variant: 'caption', fontWeight: 'bold' } }\n\t\t\t\t\t\tsx={ { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 } }\n\t\t\t\t\t/>\n\t\t\t\t\t{ getCollapsibleValue( titleEnd, isOpen ) }\n\t\t\t\t</Stack>\n\t\t\t\t<CollapseIcon open={ isOpen } color=\"secondary\" fontSize=\"tiny\" />\n\t\t\t</ListItemButton>\n\t\t\t<Collapse\n\t\t\t\tid={ contentId }\n\t\t\t\taria-labelledby={ labelId }\n\t\t\t\tin={ isOpen }\n\t\t\t\ttimeout=\"auto\"\n\t\t\t\tunmountOnExit={ unmountOnExit }\n\t\t\t>\n\t\t\t\t<SectionRefContext.Provider value={ ref }>\n\t\t\t\t\t<Stack ref={ ref } gap={ 2.5 } p={ 2 } aria-label={ `${ title } section content` }>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</Stack>\n\t\t\t\t</SectionRefContext.Provider>\n\t\t\t</Collapse>\n\t\t\t<Divider />\n\t\t</>\n\t);\n}\n","import { createContext, useContext } from 'react';\nimport type { RefObject } from 'react';\n\nconst FALLBACK_SECTION_WIDTH = 320;\n\nexport const SectionRefContext = createContext< RefObject< HTMLElement > | null >( null );\n\nconst useSectionRef = () => useContext( SectionRefContext );\n\nexport const useSectionWidth = (): number => {\n\tconst sectionRef = useSectionRef();\n\n\treturn sectionRef?.current?.offsetWidth ?? FALLBACK_SECTION_WIDTH;\n};\n","import * as React from 'react';\nimport { type ReactNode, useState } from 'react';\nimport { CollapseIcon } from '@elementor/editor-ui';\nimport { Button, Collapse, Stack, styled } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype StaticItem< T = unknown > = T extends ( ...args: unknown[] ) => unknown ? never : T;\n\ntype CallbackItem< T > = ( isOpen: boolean ) => T;\nexport type CollapsibleValue< T > = CallbackItem< T > | StaticItem< T >;\n\ntype CollapsibleContentProps = React.PropsWithChildren< {\n\tdefaultOpen?: boolean;\n\ttitleEnd?: CollapsibleValue< ReactNode | string > | null;\n} >;\n\nconst IndicatorsWrapper = styled( 'div' )`\n\tposition: absolute;\n\ttop: 0;\n\tright: ${ ( { theme } ) => theme.spacing( 3 ) };\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n`;\n\nexport const CollapsibleContent = ( { children, defaultOpen = false, titleEnd = null }: CollapsibleContentProps ) => {\n\tconst [ open, setOpen ] = useState( defaultOpen );\n\n\tconst handleToggle = () => {\n\t\tsetOpen( ( prevOpen ) => ! prevOpen );\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<Stack sx={ { position: 'relative' } }>\n\t\t\t\t<Button\n\t\t\t\t\tfullWidth\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tonClick={ handleToggle }\n\t\t\t\t\tendIcon={ <CollapseIcon open={ open } /> }\n\t\t\t\t\tsx={ { my: 0.5 } }\n\t\t\t\t\taria-label={ open ? 'Show less' : 'Show more' }\n\t\t\t\t>\n\t\t\t\t\t{ open ? __( 'Show less', 'elementor' ) : __( 'Show more', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t\t{ titleEnd && <IndicatorsWrapper>{ getCollapsibleValue( titleEnd, open ) }</IndicatorsWrapper> }\n\t\t\t</Stack>\n\t\t\t<Collapse in={ open } timeout=\"auto\" unmountOnExit>\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n\nexport function getCollapsibleValue< T >( value: CollapsibleValue< T >, isOpen: boolean ): T {\n\tif ( typeof value === 'function' ) {\n\t\treturn ( value as CallbackItem< T > )( isOpen );\n\t}\n\n\treturn value;\n}\n","import * as React from 'react';\nimport { ControlAdornmentsProvider } from '@elementor/editor-controls';\nimport { type Control, type ControlLayout, type ElementControl } from '@elementor/editor-elements';\nimport { Divider, styled } from '@elementor/ui';\n\nimport { Control as BaseControl } from '../controls-registry/control';\nimport { ControlTypeContainer } from '../controls-registry/control-type-container';\nimport { controlsRegistry, type ControlType } from '../controls-registry/controls-registry';\nimport { SettingsField } from '../controls-registry/settings-field';\nimport { getFieldIndicators } from '../field-indicators-registry';\nimport { ControlLabel } from './control-label';\n\nconst Wrapper = styled( 'span' )`\n\tdisplay: contents;\n`;\n\nexport const SettingsControl = ( { control: { value, type } }: { control: Control | ElementControl } ) => {\n\tif ( ! controlsRegistry.get( value.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\tconst layout = value.meta?.layout || controlsRegistry.getLayout( value.type as ControlType );\n\tconst controlProps = populateChildControlProps( value.props );\n\n\tif ( layout === 'custom' ) {\n\t\tcontrolProps.label = value.label;\n\t}\n\n\tif ( type === 'element-control' ) {\n\t\treturn <ControlLayout control={ value } layout={ layout } controlProps={ controlProps } />;\n\t}\n\n\treturn (\n\t\t<SettingsField bind={ value.bind } propDisplayName={ value.label || value.bind }>\n\t\t\t<ControlLayout control={ value } layout={ layout } controlProps={ controlProps } />\n\t\t</SettingsField>\n\t);\n};\n\nconst ControlLayout = ( {\n\tcontrol,\n\tlayout,\n\tcontrolProps,\n}: {\n\tcontrol: Control[ 'value' ] | ElementControl[ 'value' ];\n\tlayout: ControlLayout;\n\tcontrolProps: Record< string, unknown >;\n} ) => {\n\tconst controlType = control.type as ControlType;\n\n\treturn (\n\t\t<ControlAdornmentsProvider items={ getFieldIndicators( 'settings' ) }>\n\t\t\t{ control.meta?.topDivider && <Divider /> }\n\t\t\t<Wrapper data-type=\"settings-field\">\n\t\t\t\t<ControlTypeContainer layout={ layout }>\n\t\t\t\t\t{ control.label && layout !== 'custom' ? <ControlLabel>{ control.label }</ControlLabel> : null }\n\t\t\t\t\t<BaseControl type={ controlType } props={ controlProps } />\n\t\t\t\t</ControlTypeContainer>\n\t\t\t</Wrapper>\n\t\t</ControlAdornmentsProvider>\n\t);\n};\n\nfunction populateChildControlProps( props: Record< string, unknown > ) {\n\tif ( props.childControlType ) {\n\t\tconst childComponent = controlsRegistry.get( props.childControlType as ControlType );\n\t\tconst childPropType = controlsRegistry.getPropTypeUtil( props.childControlType as ControlType );\n\t\tprops = {\n\t\t\t...props,\n\t\t\tchildControlConfig: {\n\t\t\t\tcomponent: childComponent,\n\t\t\t\tprops: props.childControlProps || {},\n\t\t\t\tpropTypeUtil: childPropType,\n\t\t\t},\n\t\t};\n\t}\n\n\treturn props;\n}\n","import * as React from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useElement } from '../contexts/element-context';\nimport { ControlTypeNotFoundError } from '../errors';\nimport { controlsRegistry, type ControlType, type ControlTypes } from './controls-registry';\n\ntype IsRequired< T, K extends keyof T > = object extends Pick< T, K > ? false : true;\n\ntype AnyPropertyRequired< T > = {\n\t[ K in keyof T ]: IsRequired< T, K >;\n}[ keyof T ] extends true\n\t? true\n\t: false;\n\ntype ControlProps< T extends ControlType > = AnyPropertyRequired< ComponentProps< ControlTypes[ T ] > > extends true\n\t? {\n\t\t\tprops: ComponentProps< ControlTypes[ T ] >;\n\t\t\ttype: T;\n\t }\n\t: {\n\t\t\tprops?: ComponentProps< ControlTypes[ T ] >;\n\t\t\ttype: T;\n\t };\n\nexport const Control = < T extends ControlType >( { props, type }: ControlProps< T > ) => {\n\tconst ControlByType = controlsRegistry.get( type );\n\tconst { element } = useElement();\n\n\tif ( ! ControlByType ) {\n\t\tthrow new ControlTypeNotFoundError( {\n\t\t\tcontext: { controlType: type },\n\t\t} );\n\t}\n\n\t// @ts-expect-error ControlComponent props are inferred from the type (T).\n\treturn <ControlByType { ...props } context={ { elementId: element.id } } />;\n};\n","import {\n\ttype ControlComponent,\n\tDateTimeControl,\n\tHtmlTagControl,\n\tImageControl,\n\tInlineEditingControl,\n\tKeyValueControl,\n\tLinkControl,\n\tNumberControl,\n\tQueryControl,\n\tRepeatableControl,\n\tSelectControlWrapper,\n\tSizeControl,\n\tSvgMediaControl,\n\tSwitchControl,\n\tTextAreaControl,\n\tTextControl,\n\tToggleControl,\n\tUrlControl,\n} from '@elementor/editor-controls';\nimport { type ControlLayout } from '@elementor/editor-elements';\nimport {\n\tbooleanPropTypeUtil,\n\tDateTimePropTypeUtil,\n\thtmlPropTypeUtil,\n\timagePropTypeUtil,\n\timageSrcPropTypeUtil,\n\tkeyValuePropTypeUtil,\n\tlinkPropTypeUtil,\n\tnumberPropTypeUtil,\n\ttype PropTypeUtil,\n\tqueryPropTypeUtil,\n\tsizePropTypeUtil,\n\tstringPropTypeUtil,\n} from '@elementor/editor-props';\n\nimport { ControlTypeAlreadyRegisteredError, ControlTypeNotRegisteredError } from '../errors';\n\nexport type ControlRegistry = Record<\n\tstring,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t{ component: ControlComponent; layout: ControlLayout; propTypeUtil?: PropTypeUtil< string, any > }\n>;\n\nconst controlTypes = {\n\timage: { component: ImageControl, layout: 'full', propTypeUtil: imagePropTypeUtil },\n\t'svg-media': { component: SvgMediaControl, layout: 'full', propTypeUtil: imageSrcPropTypeUtil },\n\ttext: { component: TextControl, layout: 'full', propTypeUtil: stringPropTypeUtil },\n\ttextarea: { component: TextAreaControl, layout: 'full', propTypeUtil: stringPropTypeUtil },\n\tsize: { component: SizeControl, layout: 'two-columns', propTypeUtil: sizePropTypeUtil },\n\tselect: { component: SelectControlWrapper, layout: 'two-columns', propTypeUtil: stringPropTypeUtil },\n\tlink: { component: LinkControl, layout: 'custom', propTypeUtil: linkPropTypeUtil },\n\tquery: { component: QueryControl, layout: 'full', propTypeUtil: queryPropTypeUtil },\n\turl: { component: UrlControl, layout: 'full', propTypeUtil: stringPropTypeUtil },\n\tswitch: { component: SwitchControl, layout: 'two-columns', propTypeUtil: booleanPropTypeUtil },\n\tnumber: { component: NumberControl, layout: 'two-columns', propTypeUtil: numberPropTypeUtil },\n\trepeatable: { component: RepeatableControl, layout: 'full', propTypeUtil: undefined },\n\t'key-value': { component: KeyValueControl, layout: 'full', propTypeUtil: keyValuePropTypeUtil },\n\t'html-tag': { component: HtmlTagControl, layout: 'two-columns', propTypeUtil: stringPropTypeUtil },\n\ttoggle: { component: ToggleControl, layout: 'full', propTypeUtil: stringPropTypeUtil },\n\t'date-time': { component: DateTimeControl, layout: 'full', propTypeUtil: DateTimePropTypeUtil },\n\t'inline-editing': { component: InlineEditingControl, layout: 'full', propTypeUtil: htmlPropTypeUtil },\n} as const satisfies ControlRegistry;\n\nexport type ControlType = keyof typeof controlTypes;\n\nexport type ControlTypes = {\n\t[ key in ControlType ]: ( typeof controlTypes )[ key ][ 'component' ];\n};\n\nclass ControlsRegistry {\n\tconstructor( private readonly controlsRegistry: ControlRegistry ) {\n\t\tthis.controlsRegistry = controlsRegistry;\n\t}\n\n\tget( type: ControlType ): ControlComponent {\n\t\treturn this.controlsRegistry[ type ]?.component;\n\t}\n\n\tgetLayout( type: ControlType ) {\n\t\treturn this.controlsRegistry[ type ]?.layout;\n\t}\n\n\tgetPropTypeUtil( type: ControlType ) {\n\t\treturn this.controlsRegistry[ type ]?.propTypeUtil;\n\t}\n\n\tregistry(): ControlRegistry {\n\t\treturn this.controlsRegistry;\n\t}\n\n\tregister(\n\t\ttype: string,\n\t\tcomponent: ControlComponent,\n\t\tlayout: ControlLayout,\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tpropTypeUtil?: PropTypeUtil< string, any >\n\t) {\n\t\tif ( this.controlsRegistry[ type ] ) {\n\t\t\tthrow new ControlTypeAlreadyRegisteredError( { context: { controlType: type } } );\n\t\t}\n\t\tthis.controlsRegistry[ type ] = { component, layout, propTypeUtil };\n\t}\n\n\tunregister( type: string ) {\n\t\tif ( ! this.controlsRegistry[ type ] ) {\n\t\t\tthrow new ControlTypeNotRegisteredError( { context: { controlType: type } } );\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete this.controlsRegistry[ type ];\n\t}\n}\n\nexport const controlsRegistry = new ControlsRegistry( controlTypes );\n","import * as React from 'react';\nimport { type ControlLayout } from '@elementor/editor-elements';\nimport { Box, type BoxProps, styled } from '@elementor/ui';\n\nexport const ControlTypeContainer = ( { children, layout }: React.PropsWithChildren< { layout?: ControlLayout } > ) => {\n\tif ( layout === 'custom' ) {\n\t\treturn children;\n\t}\n\n\treturn <StyledContainer layout={ layout }>{ children }</StyledContainer>;\n};\n\nconst StyledContainer = styled( Box, {\n\tshouldForwardProp: ( prop: string ) => ! [ 'layout' ].includes( prop ),\n} )< BoxProps & { layout: ControlLayout } >( ( { layout, theme } ) => ( {\n\tdisplay: 'grid',\n\tgridGap: theme.spacing( 1 ),\n\t...getGridLayout( layout ),\n} ) );\n\nconst getGridLayout = ( layout: ControlLayout ) => ( {\n\tjustifyContent: 'space-between',\n\t...getStyleByLayout( layout ),\n} );\n\nconst getStyleByLayout = ( layout: ControlLayout ) => {\n\tif ( layout === 'full' ) {\n\t\treturn {\n\t\t\tgridTemplateColumns: 'minmax(0, 1fr)',\n\t\t};\n\t}\n\n\tif ( layout === 'two-columns' ) {\n\t\treturn {\n\t\t\talignItems: 'center',\n\t\t\tgridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n\t\t};\n\t}\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { PropKeyProvider, PropProvider, type SetValueMeta } from '@elementor/editor-controls';\nimport { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport {\n\ttype ElementID,\n\tgetElementLabel,\n\tgetElementSettings,\n\tupdateElementSettings,\n\tuseElementSettings,\n} from '@elementor/editor-elements';\nimport {\n\ttype CreateOptions,\n\tisDependencyMet,\n\tmigratePropValue,\n\ttype PropKey,\n\ttype Props,\n\ttype PropsSchema,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../contexts/element-context';\nimport { extractOrderedDependencies, getUpdatedValues, type Values } from '../utils/prop-dependency-utils';\nimport { createTopLevelObjectType } from './create-top-level-object-type';\n\ntype SettingsFieldProps = {\n\tbind: PropKey;\n\tpropDisplayName: string;\n\tchildren: React.ReactNode;\n};\n\nconst HISTORY_DEBOUNCE_WAIT = 800;\n\nexport const SettingsField = ( { bind, children, propDisplayName }: SettingsFieldProps ) => {\n\tconst {\n\t\telement: { id: elementId },\n\t\telementType: { propsSchema, dependenciesPerTargetMapping = {} },\n\t} = useElement();\n\n\tconst elementSettingValues = useElementSettings< PropValue >( elementId, Object.keys( propsSchema ) ) as Values;\n\n\tconst migratedValues = useMemo( () => {\n\t\treturn migratePropValues( elementSettingValues, propsSchema );\n\t}, [ elementSettingValues, propsSchema ] );\n\n\tconst value = { [ bind ]: migratedValues?.[ bind ] ?? null };\n\n\tconst propType = createTopLevelObjectType( { schema: propsSchema } );\n\n\tconst undoableUpdateElementProp = useUndoableUpdateElementProp( {\n\t\telementId,\n\t\tpropDisplayName,\n\t} );\n\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst setValue = ( newValue: Values, _: CreateOptions = {}, meta?: SetValueMeta ) => {\n\t\tconst { withHistory = true } = meta ?? {};\n\t\tconst dependents = extractOrderedDependencies( dependenciesPerTargetMapping );\n\n\t\tconst settings = getUpdatedValues( newValue, dependents, propsSchema, migratedValues, elementId );\n\t\tif ( withHistory ) {\n\t\t\tundoableUpdateElementProp( settings );\n\t\t} else {\n\t\t\tupdateElementSettings( { id: elementId, props: settings, withHistory: false } );\n\t\t}\n\t};\n\n\tconst isDisabled = ( prop: PropType ) => ! isDependencyMet( prop?.dependencies, migratedValues ).isMet;\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue } isDisabled={ isDisabled }>\n\t\t\t<PropKeyProvider bind={ bind }>{ children }</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nfunction useUndoableUpdateElementProp( {\n\telementId,\n\tpropDisplayName,\n}: {\n\telementId: ElementID;\n\tpropDisplayName: string;\n} ) {\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( newSettings: Props ) => {\n\t\t\t\t\tconst prevPropValue = getElementSettings( elementId, Object.keys( newSettings ) ) as Props;\n\n\t\t\t\t\tupdateElementSettings( { id: elementId, props: newSettings as Props, withHistory: false } );\n\t\t\t\t\tsetDocumentModifiedStatus( true );\n\n\t\t\t\t\treturn prevPropValue;\n\t\t\t\t},\n\n\t\t\t\tundo: ( {}, prevProps ) => {\n\t\t\t\t\tupdateElementSettings( { id: elementId, props: prevProps, withHistory: false } );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: getElementLabel( elementId ),\n\t\t\t\t// translators: %s is the name of the property that was edited.\n\t\t\t\tsubtitle: __( '%s edited', 'elementor' ).replace( '%s', propDisplayName ),\n\t\t\t\tdebounce: { wait: HISTORY_DEBOUNCE_WAIT },\n\t\t\t}\n\t\t);\n\t}, [ elementId, propDisplayName ] );\n}\n\nfunction migratePropValues( values: Values, schema: PropsSchema ): Values {\n\tif ( ! values ) {\n\t\treturn values;\n\t}\n\n\tconst migrated: Values = {};\n\n\tfor ( const [ key, value ] of Object.entries( values ) ) {\n\t\tif ( value === null || value === undefined ) {\n\t\t\tmigrated[ key ] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst propType = schema[ key ];\n\n\t\tif ( ! propType ) {\n\t\t\tmigrated[ key ] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tmigrated[ key ] = migratePropValue( value, propType ) as Values[ string ];\n\t}\n\n\treturn migrated;\n}\n","import {\n\ttype Dependency,\n\ttype DependencyTerm,\n\textractValue,\n\tisDependencyMet,\n\ttype PropsSchema,\n\ttype PropType,\n\ttype TransformablePropValue,\n} from '@elementor/editor-props';\nimport { getSessionStorageItem, removeSessionStorageItem, setSessionStorageItem } from '@elementor/session';\n\ntype Value = TransformablePropValue< string > | null;\n\nexport type Values = Record< string, Value >;\n\nexport function extractOrderedDependencies( dependenciesPerTargetMapping: Record< string, string[] > ): string[] {\n\treturn Object.values( dependenciesPerTargetMapping )\n\t\t.flat()\n\t\t.filter( ( dependent, index, self ) => self.indexOf( dependent ) === index );\n}\n\nexport function getUpdatedValues(\n\tvalues: Values,\n\tdependencies: string[],\n\tpropsSchema: PropsSchema,\n\telementValues: Values,\n\telementId: string\n): Values {\n\tif ( ! dependencies.length ) {\n\t\treturn values;\n\t}\n\n\treturn dependencies.reduce(\n\t\t( newValues, dependency ) => {\n\t\t\tconst path = dependency.split( '.' );\n\t\t\tconst combinedValues = { ...elementValues, ...newValues };\n\t\t\tconst propType = getPropType( propsSchema, combinedValues, path );\n\n\t\t\tif ( ! propType ) {\n\t\t\t\treturn newValues;\n\t\t\t}\n\n\t\t\tconst testDependencies = {\n\t\t\t\tpreviousValues: isDependencyMet( propType.dependencies, elementValues ),\n\t\t\t\tnewValues: isDependencyMet( propType.dependencies, combinedValues ),\n\t\t\t};\n\n\t\t\tif ( ! testDependencies.newValues.isMet ) {\n\t\t\t\tconst newValue = handleUnmetCondition( {\n\t\t\t\t\tfailingDependencies: testDependencies.newValues.failingDependencies,\n\t\t\t\t\tdependency,\n\t\t\t\t\telementValues: combinedValues,\n\t\t\t\t\tdefaultValue: propType.default as Value,\n\t\t\t\t\telementId,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\t...newValues,\n\t\t\t\t\t...updateValue( path, newValue, combinedValues ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( ! testDependencies.previousValues.isMet ) {\n\t\t\t\tconst savedValue = retrievePreviousValueFromStorage< Value >( { path: dependency, elementId } );\n\n\t\t\t\tremovePreviousValueFromStorage( { path: dependency, elementId } );\n\n\t\t\t\treturn {\n\t\t\t\t\t...newValues,\n\t\t\t\t\t...updateValue( path, savedValue ?? ( propType.default as Value ), combinedValues ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn newValues;\n\t\t},\n\t\t{ ...values }\n\t);\n}\n\nfunction getPropType( schema: PropsSchema, elementValues: Values, path: string[] ): PropType | null {\n\tif ( ! path.length ) {\n\t\treturn null;\n\t}\n\n\tconst [ basePropKey, ...keys ] = path;\n\tconst baseProp = schema[ basePropKey ];\n\n\tif ( ! baseProp ) {\n\t\treturn null;\n\t}\n\n\treturn keys.reduce(\n\t\t( prop: PropType | null, key, index ) =>\n\t\t\tevaluatePropType( { prop, key, index, path, elementValues, basePropKey } ),\n\t\tbaseProp\n\t);\n}\n\nfunction evaluatePropType( props: {\n\tprop: PropType | null;\n\tkey: string;\n\tindex: number;\n\tpath: string[];\n\telementValues: Values;\n\tbasePropKey: string;\n} ) {\n\tconst { prop } = props;\n\n\tif ( ! prop?.kind ) {\n\t\treturn null;\n\t}\n\n\tconst { key, index, path, elementValues, basePropKey } = props;\n\n\tswitch ( prop.kind ) {\n\t\tcase 'union':\n\t\t\tconst value = extractValue( path.slice( 0, index + 1 ), elementValues );\n\t\t\tconst type = ( value?.$$type as string ) ?? null;\n\n\t\t\treturn getPropType(\n\t\t\t\t{ [ basePropKey ]: prop.prop_types?.[ type ] },\n\t\t\t\telementValues,\n\t\t\t\tpath.slice( 0, index + 2 )\n\t\t\t);\n\t\tcase 'array':\n\t\t\treturn prop.item_prop_type;\n\t\tcase 'object':\n\t\t\treturn prop.shape[ key ];\n\t}\n\n\treturn prop[ key as keyof typeof prop ] as PropType;\n}\n\nfunction updateValue( path: string[], value: Value, values: Values ) {\n\tconst topPropKey = path[ 0 ];\n\tconst newValue: Values = { ...values };\n\n\tpath.reduce( ( carry: Values | null, key, index ) => {\n\t\tif ( ! carry ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( index === path.length - 1 ) {\n\t\t\tcarry[ key ] = value ?? null;\n\n\t\t\treturn ( carry[ key ]?.value as Values ) ?? carry.value;\n\t\t}\n\n\t\treturn ( carry[ key ]?.value as Values ) ?? carry.value;\n\t}, newValue );\n\n\treturn { [ topPropKey ]: newValue[ topPropKey ] ?? null };\n}\n\nfunction handleUnmetCondition( props: {\n\tfailingDependencies: ( DependencyTerm | Dependency )[];\n\tdependency: string;\n\telementValues: Values;\n\tdefaultValue: Value;\n\telementId: string;\n} ) {\n\tconst { failingDependencies, dependency, elementValues, defaultValue, elementId } = props;\n\tconst newValue = failingDependencies.find( ( term ) => term.newValue )?.newValue ?? null;\n\tconst currentValue = extractValue( dependency.split( '.' ), elementValues ) ?? defaultValue;\n\n\tsavePreviousValueToStorage( {\n\t\tpath: dependency,\n\t\telementId,\n\t\tvalue: currentValue,\n\t} );\n\n\treturn newValue;\n}\n\nfunction savePreviousValueToStorage( { path, elementId, value }: { path: string; elementId: string; value: unknown } ) {\n\tconst prefix = `elementor/${ elementId }`;\n\tconst savedValue = retrievePreviousValueFromStorage( { path, elementId } );\n\n\tif ( savedValue ) {\n\t\treturn;\n\t}\n\n\tconst key = `${ prefix }:${ path }`;\n\n\tsetSessionStorageItem( key, value );\n}\n\nfunction retrievePreviousValueFromStorage< T >( { path, elementId }: { path: string; elementId: string } ) {\n\tconst prefix = `elementor/${ elementId }`;\n\tconst key = `${ prefix }:${ path }`;\n\n\treturn getSessionStorageItem< T >( key ) ?? null;\n}\n\nfunction removePreviousValueFromStorage( { path, elementId }: { path: string; elementId: string } ) {\n\tconst prefix = `elementor/${ elementId }`;\n\tconst key = `${ prefix }:${ path }`;\n\n\tremoveSessionStorageItem( key );\n}\n","import { type ObjectPropType, type PropsSchema } from '@elementor/editor-props';\n\nexport const createTopLevelObjectType = ( { schema }: { schema: PropsSchema } ) => {\n\tconst schemaPropType: ObjectPropType = {\n\t\tkey: '',\n\t\tkind: 'object',\n\t\tmeta: {},\n\t\tsettings: {},\n\t\tdefault: null,\n\t\tshape: schema,\n\t};\n\n\treturn schemaPropType;\n};\n","import { type AdornmentComponent } from '@elementor/editor-controls';\n\ntype FieldType = 'settings' | 'styles';\n\ntype FieldIndicator = {\n\tid: string;\n\tindicator: AdornmentComponent;\n\n\t// ordered from lowest to highest\n\tpriority: number;\n};\n\nconst indicatorsRegistry: Record< FieldType, Map< string, FieldIndicator > > = {\n\tsettings: new Map(),\n\tstyles: new Map(),\n};\n\nconst DEFAULT_PRIORITY = 10;\n\nexport const FIELD_TYPE = {\n\tSETTINGS: 'settings',\n\tSTYLES: 'styles',\n} satisfies Record< string, FieldType >;\n\nexport const registerFieldIndicator = ( {\n\tfieldType,\n\tid,\n\tindicator,\n\tpriority = DEFAULT_PRIORITY,\n}: FieldIndicator & { fieldType: FieldType } ) => {\n\tindicatorsRegistry[ fieldType ].set( id, { id, indicator, priority } );\n};\n\nexport const getFieldIndicators = ( fieldType: FieldType ): { id: string; Adornment: AdornmentComponent }[] =>\n\tArray.from( indicatorsRegistry[ fieldType ].values() )\n\t\t.sort( ( a, b ) => a.priority - b.priority )\n\t\t.map( ( { id, indicator: Adornment } ) => ( { id, Adornment } ) );\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { ControlAdornments, ControlFormLabel } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\n\nexport const ControlLabel = ( { children }: PropsWithChildren< object > ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { CLASSES_PROP_KEY } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { type StyleDefinitionID, type StyleDefinitionState } from '@elementor/editor-styles';\nimport { createLocation } from '@elementor/locations';\nimport { SessionStorageProvider } from '@elementor/session';\nimport { Box, Divider, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ClassesPropProvider } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useScrollDirection } from '../contexts/scroll-context';\nimport { StyleProvider } from '../contexts/style-context';\nimport { StyleInheritanceProvider } from '../contexts/styles-inheritance-context';\nimport { useActiveStyleDefId } from '../hooks/use-active-style-def-id';\nimport { CssClassSelector } from './css-classes/css-class-selector';\nimport { SectionsList } from './sections-list';\nimport { BackgroundSection } from './style-sections/background-section/background-section';\nimport { BorderSection } from './style-sections/border-section/border-section';\nimport { EffectsSection } from './style-sections/effects-section/effects-section';\nimport { LayoutSection } from './style-sections/layout-section/layout-section';\nimport { PositionSection } from './style-sections/position-section/position-section';\nimport { SizeSection } from './style-sections/size-section/size-section';\nimport { SpacingSection } from './style-sections/spacing-section/spacing-section';\nimport { TypographySection } from './style-sections/typography-section/typography-section';\nimport { StyleTabSection } from './style-tab-section';\n\nconst TABS_HEADER_HEIGHT = '37px';\n\nexport const { Slot: StyleTabSlot, inject: injectIntoStyleTab } = createLocation();\n\nexport const stickyHeaderStyles = {\n\tposition: 'sticky',\n\tzIndex: 1100,\n\topacity: 1,\n\tbackgroundColor: 'background.default',\n\ttransition: 'top 300ms ease',\n};\n\nexport const StyleTab = () => {\n\tconst currentClassesProp = useCurrentClassesProp();\n\tconst [ activeStyleDefId, setActiveStyleDefId ] = useActiveStyleDefId( currentClassesProp ?? '' );\n\tconst [ activeStyleState, setActiveStyleState ] = useState< StyleDefinitionState | null >( null );\n\tconst breakpoint = useActiveBreakpoint();\n\n\tif ( ! currentClassesProp ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ClassesPropProvider prop={ currentClassesProp }>\n\t\t\t<StyleProvider\n\t\t\t\tmeta={ { breakpoint, state: activeStyleState } }\n\t\t\t\tid={ activeStyleDefId }\n\t\t\t\tsetId={ ( id: StyleDefinitionID | null ) => {\n\t\t\t\t\tsetActiveStyleDefId( id );\n\t\t\t\t\tsetActiveStyleState( null );\n\t\t\t\t} }\n\t\t\t\tsetMetaState={ setActiveStyleState }\n\t\t\t>\n\t\t\t\t<SessionStorageProvider prefix={ activeStyleDefId ?? '' }>\n\t\t\t\t\t<StyleInheritanceProvider>\n\t\t\t\t\t\t<ClassesHeader>\n\t\t\t\t\t\t\t<CssClassSelector />\n\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t</ClassesHeader>\n\t\t\t\t\t\t<SectionsList>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: LayoutSection,\n\t\t\t\t\t\t\t\t\tname: 'Layout',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Layout', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [\n\t\t\t\t\t\t\t\t\t'display',\n\t\t\t\t\t\t\t\t\t'flex-direction',\n\t\t\t\t\t\t\t\t\t'flex-wrap',\n\t\t\t\t\t\t\t\t\t'justify-content',\n\t\t\t\t\t\t\t\t\t'align-items',\n\t\t\t\t\t\t\t\t\t'align-content',\n\t\t\t\t\t\t\t\t\t'align-self',\n\t\t\t\t\t\t\t\t\t'gap',\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<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: SpacingSection,\n\t\t\t\t\t\t\t\t\tname: 'Spacing',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Spacing', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [ 'margin', 'padding' ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: SizeSection,\n\t\t\t\t\t\t\t\t\tname: 'Size',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Size', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [\n\t\t\t\t\t\t\t\t\t'width',\n\t\t\t\t\t\t\t\t\t'min-width',\n\t\t\t\t\t\t\t\t\t'max-width',\n\t\t\t\t\t\t\t\t\t'height',\n\t\t\t\t\t\t\t\t\t'min-height',\n\t\t\t\t\t\t\t\t\t'max-height',\n\t\t\t\t\t\t\t\t\t'overflow',\n\t\t\t\t\t\t\t\t\t'aspect-ratio',\n\t\t\t\t\t\t\t\t\t'object-fit',\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<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: PositionSection,\n\t\t\t\t\t\t\t\t\tname: 'Position',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Position', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [ 'position', 'z-index', 'scroll-margin-top' ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: TypographySection,\n\t\t\t\t\t\t\t\t\tname: 'Typography',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Typography', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [\n\t\t\t\t\t\t\t\t\t'font-family',\n\t\t\t\t\t\t\t\t\t'font-weight',\n\t\t\t\t\t\t\t\t\t'font-size',\n\t\t\t\t\t\t\t\t\t'text-align',\n\t\t\t\t\t\t\t\t\t'color',\n\t\t\t\t\t\t\t\t\t'line-height',\n\t\t\t\t\t\t\t\t\t'letter-spacing',\n\t\t\t\t\t\t\t\t\t'word-spacing',\n\t\t\t\t\t\t\t\t\t'column-count',\n\t\t\t\t\t\t\t\t\t'text-decoration',\n\t\t\t\t\t\t\t\t\t'text-transform',\n\t\t\t\t\t\t\t\t\t'direction',\n\t\t\t\t\t\t\t\t\t'font-style',\n\t\t\t\t\t\t\t\t\t'stroke',\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<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: BackgroundSection,\n\t\t\t\t\t\t\t\t\tname: 'Background',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Background', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [ 'background' ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: BorderSection,\n\t\t\t\t\t\t\t\t\tname: 'Border',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Border', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [ 'border-radius', 'border-width', 'border-color', 'border-style' ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: EffectsSection,\n\t\t\t\t\t\t\t\t\tname: 'Effects',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Effects', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [\n\t\t\t\t\t\t\t\t\t'mix-blend-mode',\n\t\t\t\t\t\t\t\t\t'box-shadow',\n\t\t\t\t\t\t\t\t\t'opacity',\n\t\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\t\t'filter',\n\t\t\t\t\t\t\t\t\t'backdrop-filter',\n\t\t\t\t\t\t\t\t\t'transform-origin',\n\t\t\t\t\t\t\t\t\t'transition',\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<StyleTabSlot />\n\t\t\t\t\t\t</SectionsList>\n\t\t\t\t\t\t<Box sx={ { height: '150px' } } />\n\t\t\t\t\t</StyleInheritanceProvider>\n\t\t\t\t</SessionStorageProvider>\n\t\t\t</StyleProvider>\n\t\t</ClassesPropProvider>\n\t);\n};\n\nfunction ClassesHeader( { children }: { children: React.ReactNode } ) {\n\tconst scrollDirection = useScrollDirection();\n\n\treturn (\n\t\t<Stack sx={ { ...stickyHeaderStyles, top: scrollDirection === 'up' ? TABS_HEADER_HEIGHT : 0 } }>\n\t\t\t{ children }\n\t\t</Stack>\n\t);\n}\n\nfunction useCurrentClassesProp(): string | null {\n\tconst { elementType } = useElement();\n\n\tconst prop = Object.entries( elementType.propsSchema ).find(\n\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t);\n\n\tif ( ! prop ) {\n\t\treturn null;\n\t}\n\n\treturn prop[ 0 ];\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { getWidgetsCache, useElementSetting } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { getBreakpointsTree } from '@elementor/editor-responsive';\nimport { getStylesSchema } from '@elementor/editor-styles';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { useStylesRerender } from '../hooks/use-styles-rerender';\nimport { createStylesInheritance } from '../styles-inheritance/create-styles-inheritance';\nimport {\n\ttype SnapshotPropValue,\n\ttype StylesInheritanceAPI,\n\ttype StylesInheritanceSnapshot,\n} from '../styles-inheritance/types';\nimport { useClassesProp } from './classes-prop-context';\nimport { useElement } from './element-context';\nimport { useStyle } from './style-context';\n\nconst Context = createContext< StylesInheritanceAPI | null >( null );\n\nexport function StyleInheritanceProvider( { children }: PropsWithChildren ) {\n\tconst styleDefs = useAppliedStyles();\n\n\tconst breakpointsTree = getBreakpointsTree();\n\n\tconst { getSnapshot, getInheritanceChain } = createStylesInheritance( styleDefs, breakpointsTree );\n\n\treturn <Context.Provider value={ { getSnapshot, getInheritanceChain } }>{ children }</Context.Provider>;\n}\n\nexport function useStylesInheritanceSnapshot(): StylesInheritanceSnapshot | null {\n\tconst context = useContext( Context );\n\tconst { meta } = useStyle();\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStylesInheritanceSnapshot must be used within a StyleInheritanceProvider' );\n\t}\n\n\tif ( ! meta ) {\n\t\treturn null;\n\t}\n\n\treturn context.getSnapshot( meta ) ?? null;\n}\n\nexport function useStylesInheritanceChain( path: string[] ): SnapshotPropValue[] {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStylesInheritanceChain must be used within a StyleInheritanceProvider' );\n\t}\n\n\tconst schema = getStylesSchema();\n\n\tconst topLevelPropType = schema?.[ path[ 0 ] ];\n\n\tconst snapshot = useStylesInheritanceSnapshot();\n\n\tif ( ! snapshot ) {\n\t\treturn [];\n\t}\n\n\treturn context.getInheritanceChain( snapshot, path, topLevelPropType );\n}\n\nconst useAppliedStyles = () => {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\tconst baseStyles = useBaseStyles();\n\n\tuseStylesRerender();\n\n\tconst classesProp = useElementSetting< ClassesPropValue >( element.id, currentClassesProp );\n\n\tconst appliedStyles = classesPropTypeUtil.extract( classesProp ) ?? [];\n\n\treturn stylesRepository.all().filter( ( style ) => [ ...baseStyles, ...appliedStyles ].includes( style.id ) );\n};\n\nconst useBaseStyles = () => {\n\tconst { elementType } = useElement();\n\tconst widgetsCache = getWidgetsCache();\n\tconst widgetCache = widgetsCache?.[ elementType.key ];\n\n\treturn Object.keys( widgetCache?.base_styles ?? {} );\n};\n","import {\n\tisEmpty,\n\tisTransformable,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropValue,\n\ttype UnionPropType,\n} from '@elementor/editor-props';\nimport { type BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { getProviderByStyleId } from '../contexts/style-context';\nimport { createSnapshotsManager } from './create-snapshots-manager';\nimport { type BreakpointsStatesStyles, type StyleInheritanceMetaProps, type StylesInheritanceAPI } from './types';\nimport { getBreakpointKey, getStateKey } from './utils';\n\ntype ValidPropType = Exclude< PropType, UnionPropType >;\n\nexport function createStylesInheritance(\n\tstyleDefs: StyleDefinition[],\n\tbreakpointsRoot: BreakpointNode\n): StylesInheritanceAPI {\n\tconst styleVariantsByMeta = buildStyleVariantsByMetaMapping( styleDefs );\n\n\tconst getStyles = ( { breakpoint, state }: StyleInheritanceMetaProps ) =>\n\t\tstyleVariantsByMeta?.[ getBreakpointKey( breakpoint ) ]?.[ getStateKey( state ) ] ?? [];\n\n\treturn {\n\t\tgetSnapshot: createSnapshotsManager( getStyles, breakpointsRoot ),\n\t\tgetInheritanceChain: ( snapshot, path, topLevelPropType ) => {\n\t\t\tconst [ field, ...nextFields ] = path;\n\n\t\t\tlet inheritanceChain = snapshot[ field ] ?? [];\n\n\t\t\tif ( nextFields.length > 0 ) {\n\t\t\t\tconst filterPropType = getFilterPropType( topLevelPropType, nextFields );\n\n\t\t\t\tinheritanceChain = inheritanceChain\n\t\t\t\t\t.map( ( { value: styleValue, ...rest } ) => ( {\n\t\t\t\t\t\t...rest,\n\t\t\t\t\t\tvalue: getValueByPath( styleValue, nextFields, filterPropType ),\n\t\t\t\t\t} ) )\n\t\t\t\t\t.filter( ( { value: styleValue } ) => ! isEmpty( styleValue ) );\n\t\t\t}\n\n\t\t\treturn inheritanceChain;\n\t\t},\n\t};\n}\n\nfunction buildStyleVariantsByMetaMapping( styleDefs: StyleDefinition[] ): BreakpointsStatesStyles {\n\tconst breakpointStateSlots: BreakpointsStatesStyles = {};\n\n\tstyleDefs.forEach( ( styleDef ) => {\n\t\tconst provider = getProviderByStyleId( styleDef.id )?.getKey() ?? null;\n\n\t\t// iterate over each style definition's variants and place them in the corresponding breakpoint's base or state styles\n\t\tstyleDef.variants.forEach( ( variant ) => {\n\t\t\tconst { meta } = variant;\n\t\t\tconst { state, breakpoint } = meta;\n\n\t\t\tconst breakpointKey = getBreakpointKey( breakpoint );\n\t\t\tconst stateKey = getStateKey( state );\n\n\t\t\tif ( ! breakpointStateSlots[ breakpointKey ] ) {\n\t\t\t\tbreakpointStateSlots[ breakpointKey ] = {};\n\t\t\t}\n\n\t\t\tconst breakpointNode = breakpointStateSlots[ breakpointKey ];\n\n\t\t\tif ( ! breakpointNode[ stateKey ] ) {\n\t\t\t\tbreakpointNode[ stateKey ] = [];\n\t\t\t}\n\n\t\t\tbreakpointNode[ stateKey ].push( {\n\t\t\t\tstyle: styleDef,\n\t\t\t\tvariant,\n\t\t\t\tprovider,\n\t\t\t} );\n\t\t} );\n\t} );\n\n\treturn breakpointStateSlots;\n}\n\nfunction getValueByPath( value: PropValue, path: PropKey[], filterPropType: ValidPropType | null ): PropValue {\n\tif ( ! value || typeof value !== 'object' ) {\n\t\treturn null;\n\t}\n\n\tif ( shouldUseOriginalValue( filterPropType, value ) ) {\n\t\treturn value;\n\t}\n\n\treturn path.reduce( ( currentScope: PropValue, key: PropKey ): PropValue | null => {\n\t\tif ( ! currentScope ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( isTransformable( currentScope ) ) {\n\t\t\treturn currentScope.value?.[ key ] ?? null;\n\t\t}\n\n\t\tif ( typeof currentScope === 'object' ) {\n\t\t\treturn currentScope[ key as keyof typeof currentScope ] ?? null;\n\t\t}\n\n\t\treturn null;\n\t}, value );\n}\n\nfunction shouldUseOriginalValue( filterPropType: ValidPropType | null, value: PropValue ): boolean {\n\treturn !! filterPropType && isTransformable( value ) && filterPropType.key !== value.$$type;\n}\n\nconst getFilterPropType = ( propType: PropType, path: string[] ): ValidPropType | null => {\n\tif ( ! propType || propType.kind !== 'union' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\tObject.values( propType.prop_types ).find( ( type: PropType ) => {\n\t\t\treturn !! path.reduce( ( currentScope: PropType | null, key: string ) => {\n\t\t\t\tif ( currentScope?.kind !== 'object' ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst { shape } = currentScope;\n\n\t\t\t\tif ( shape[ key ] ) {\n\t\t\t\t\treturn shape[ key ];\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}, type );\n\t\t} ) ?? null\n\t);\n};\n","import { filterEmptyValues } from '@elementor/editor-props';\nimport { type BreakpointId, type BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\n\nimport {\n\ttype BreakpointsInheritancePath,\n\ttype BreakpointsStatesSnapshotsMapping,\n\ttype BreakpointStatesSlotsMapping,\n\ttype SnapshotPropValue,\n\ttype StyleInheritanceMetaProps,\n\ttype StylesInheritanceSnapshot,\n\ttype StylesInheritanceSnapshotGetter,\n\ttype StylesInheritanceSnapshotsSlot,\n\ttype StyleVariantDetails,\n} from './types';\nimport { DEFAULT_STATE, getBreakpointKey, getStateKey } from './utils';\n\nexport function createSnapshotsManager(\n\tgetStylesByMeta: ( meta: StyleInheritanceMetaProps ) => StyleVariantDetails[],\n\tbreakpointsRoot: BreakpointNode\n): StylesInheritanceSnapshotGetter {\n\tconst breakpointsInheritancePaths = makeBreakpointsInheritancePaths( breakpointsRoot );\n\tconst allBreakpointStatesSnapshots: BreakpointsStatesSnapshotsMapping = {};\n\n\tconst buildMissingSnapshotsForBreakpoint = (\n\t\tcurrentBreakpointId: BreakpointId | null,\n\t\tparentBreakpoint: BreakpointStatesSlotsMapping | undefined,\n\t\tstate: StyleDefinitionState\n\t) => {\n\t\tconst currentBreakpointKey = getBreakpointKey( currentBreakpointId );\n\t\tconst stateKey = getStateKey( state );\n\n\t\tif ( ! allBreakpointStatesSnapshots[ currentBreakpointKey ] ) {\n\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ] = {\n\t\t\t\t[ DEFAULT_STATE ]: buildStateSnapshotSlot(\n\t\t\t\t\tgetStylesByMeta( { breakpoint: currentBreakpointId, state: null } ),\n\t\t\t\t\tparentBreakpoint,\n\t\t\t\t\t{},\n\t\t\t\t\tnull\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif ( state && ! allBreakpointStatesSnapshots[ currentBreakpointKey ][ stateKey ] ) {\n\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ][ stateKey ] = buildStateSnapshotSlot(\n\t\t\t\tgetStylesByMeta( { breakpoint: currentBreakpointId, state } ),\n\t\t\t\tparentBreakpoint,\n\t\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ],\n\t\t\t\tstate\n\t\t\t);\n\t\t}\n\t};\n\n\treturn ( meta: StyleInheritanceMetaProps ) => {\n\t\tconst { breakpoint, state } = meta;\n\n\t\tconst stateKey = getStateKey( state );\n\t\tconst breakpointKey = getBreakpointKey( breakpoint );\n\n\t\tif ( allBreakpointStatesSnapshots[ breakpointKey ]?.[ stateKey ] ) {\n\t\t\t// snapshot was already made for this breakpoint+state\n\t\t\treturn allBreakpointStatesSnapshots[ breakpointKey ][ stateKey ].snapshot;\n\t\t}\n\n\t\tconst breakpointsChain = [ ...breakpointsInheritancePaths[ breakpointKey ], breakpoint ];\n\n\t\tbreakpointsChain.forEach( ( breakpointId, index ) => {\n\t\t\tconst parentBreakpointId = index > 0 ? breakpointsChain[ index - 1 ] : null;\n\n\t\t\tbuildMissingSnapshotsForBreakpoint(\n\t\t\t\tbreakpointId,\n\t\t\t\tparentBreakpointId ? allBreakpointStatesSnapshots[ parentBreakpointId ] : undefined,\n\t\t\t\tstate\n\t\t\t);\n\t\t} );\n\n\t\treturn allBreakpointStatesSnapshots[ breakpointKey ]?.[ stateKey ]?.snapshot;\n\t};\n}\n\n/**\n * builds a mapping of each breakpoint to its inheritance chain, e.g. -\n * \tdesktop: [],\n * \ttablet: [ 'desktop' ],\n * \tmobile: [ 'desktop', 'tablet' ]\n * @param root\n */\nfunction makeBreakpointsInheritancePaths( root: BreakpointNode ): BreakpointsInheritancePath {\n\tconst breakpoints: Partial< BreakpointsInheritancePath > = {};\n\n\tconst traverse = ( node: BreakpointNode, parent?: BreakpointId[] ) => {\n\t\tconst { id, children } = node;\n\n\t\tbreakpoints[ id ] = parent ? [ ...parent ] : [];\n\n\t\tchildren?.forEach( ( child ) => {\n\t\t\ttraverse( child, [ ...( breakpoints[ id ] ?? [] ), id ] );\n\t\t} );\n\t};\n\n\ttraverse( root );\n\n\treturn breakpoints as BreakpointsInheritancePath;\n}\n\n// creates a snapshot slot for a specific breakpoint and state\nfunction buildStateSnapshotSlot(\n\tstyles: StyleVariantDetails[],\n\tparentBreakpoint: BreakpointStatesSlotsMapping | undefined,\n\tcurrentBreakpoint: BreakpointStatesSlotsMapping,\n\tstate: StyleDefinitionState\n): StylesInheritanceSnapshotsSlot {\n\tconst initialSlot = buildInitialSnapshotFromStyles( styles );\n\n\tif ( ! state ) {\n\t\treturn {\n\t\t\tsnapshot: mergeSnapshots( [ initialSlot.snapshot, parentBreakpoint?.[ DEFAULT_STATE ]?.snapshot ] ),\n\t\t\tstateSpecificSnapshot: undefined,\n\t\t};\n\t}\n\n\treturn {\n\t\tsnapshot: mergeSnapshots( [\n\t\t\tinitialSlot.snapshot,\n\t\t\tparentBreakpoint?.[ state ]?.stateSpecificSnapshot,\n\t\t\tcurrentBreakpoint[ DEFAULT_STATE ]?.snapshot,\n\t\t] ),\n\t\tstateSpecificSnapshot: mergeSnapshots( [\n\t\t\tinitialSlot.stateSpecificSnapshot,\n\t\t\tparentBreakpoint?.[ state ]?.stateSpecificSnapshot,\n\t\t] ),\n\t};\n}\n\n// creates an initial snapshot based on the passed style variants only\nfunction buildInitialSnapshotFromStyles( styles: StyleVariantDetails[] ): StylesInheritanceSnapshotsSlot {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tstyles.forEach( ( styleData ) => {\n\t\tconst {\n\t\t\tvariant: { props },\n\t\t} = styleData;\n\n\t\tObject.entries( props ).forEach( ( [ key, value ] ) => {\n\t\t\tconst filteredValue = filterEmptyValues( value );\n\n\t\t\tif ( filteredValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! snapshot[ key ] ) {\n\t\t\t\tsnapshot[ key ] = [];\n\t\t\t}\n\n\t\t\tconst snapshotPropValue: SnapshotPropValue = {\n\t\t\t\t...styleData,\n\t\t\t\tvalue: filteredValue,\n\t\t\t};\n\n\t\t\tsnapshot[ key ].push( snapshotPropValue );\n\t\t} );\n\t} );\n\n\treturn {\n\t\tsnapshot,\n\t\tstateSpecificSnapshot: snapshot,\n\t};\n}\n\n// merge previous snapshot into the current one - first value of each prop is the strongest\nfunction mergeSnapshots( snapshots: ( StylesInheritanceSnapshot | undefined )[] ) {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tsnapshots.filter( Boolean ).forEach( ( currentSnapshot ) =>\n\t\tObject.entries( currentSnapshot as StylesInheritanceSnapshot ).forEach( ( [ key, values ] ) => {\n\t\t\tif ( ! snapshot[ key ] ) {\n\t\t\t\tsnapshot[ key ] = [];\n\t\t\t}\n\n\t\t\t// concatenate the previous snapshot's prop values to the current ones\n\t\t\tsnapshot[ key ] = snapshot[ key ].concat( values );\n\t\t} )\n\t);\n\n\treturn snapshot;\n}\n","import { type BreakpointId } from '@elementor/editor-responsive';\nimport { type StyleDefinitionState, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { type SnapshotPropValue } from './types';\n\nexport const DEFAULT_STATE = 'normal';\n\nconst DEFAULT_BREAKPOINT = 'desktop';\n\nexport const getStateKey = ( state: StyleDefinitionState ) => state ?? DEFAULT_STATE;\n\nexport const getBreakpointKey = ( breakpoint: BreakpointId | null ): BreakpointId => breakpoint ?? DEFAULT_BREAKPOINT;\n\nexport const getValueFromInheritanceChain = (\n\tinheritanceChain: SnapshotPropValue[],\n\tstyleId: string,\n\tmeta: StyleDefinitionVariant[ 'meta' ]\n) =>\n\tinheritanceChain.find(\n\t\t( {\n\t\t\tstyle,\n\t\t\tvariant: {\n\t\t\t\tmeta: { breakpoint, state },\n\t\t\t},\n\t\t} ) => style.id === styleId && breakpoint === meta.breakpoint && state === meta.state\n\t);\n","import { getElementStyles, useElementSetting } from '@elementor/editor-elements';\nimport { type ClassesPropValue, type PropKey } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { useElement } from '../contexts/element-context';\nimport { useStateByElement } from './use-state-by-element';\n\nexport function useActiveStyleDefId( classProp: PropKey ) {\n\tconst [ activeStyledDefId, setActiveStyledDefId ] = useStateByElement< StyleDefinitionID | null >(\n\t\t'active-style-id',\n\t\tnull\n\t);\n\n\tconst appliedClassesIds = useAppliedClassesIds( classProp )?.value || [];\n\n\tconst fallback = useFirstAppliedClass( appliedClassesIds );\n\n\tconst activeAndAppliedClassId = useActiveAndAppliedClassId( activeStyledDefId, appliedClassesIds );\n\treturn [ activeAndAppliedClassId || fallback?.id || null, setActiveStyledDefId ] as const;\n}\n\nfunction useFirstAppliedClass( appliedClassesIds: string[] ) {\n\tconst { element } = useElement();\n\tconst stylesDefs = getElementStyles( element.id ) ?? {};\n\n\treturn Object.values( stylesDefs ).find( ( styleDef ) => appliedClassesIds.includes( styleDef.id ) );\n}\n\nfunction useAppliedClassesIds( classProp: PropKey ) {\n\tconst { element } = useElement();\n\n\treturn useElementSetting< ClassesPropValue >( element.id, classProp );\n}\n\nfunction useActiveAndAppliedClassId( id: StyleDefinitionID | null, appliedClassesIds: string[] ) {\n\tconst isClassApplied = !! id && appliedClassesIds.includes( id );\n\n\treturn isClassApplied ? id : null;\n}\n","import * as React from 'react';\nimport { BackgroundControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SectionContent } from '../../section-content';\n\nconst BACKGROUND_LABEL = __( 'Background', 'elementor' );\n\nexport const BackgroundSection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<StylesField bind=\"background\" propDisplayName={ BACKGROUND_LABEL }>\n\t\t\t\t<BackgroundControl />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { ControlAdornmentsProvider, PropKeyProvider, PropProvider } from '@elementor/editor-controls';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nimport { useStylesInheritanceChain } from '../contexts/styles-inheritance-context';\nimport { getFieldIndicators } from '../field-indicators-registry';\nimport { useStylesField } from '../hooks/use-styles-field';\nimport { ConditionalField } from './conditional-field';\nimport { createTopLevelObjectType } from './create-top-level-object-type';\n\nexport type StylesFieldProps = {\n\tbind: PropKey;\n\tplaceholder?: PropValue;\n\tchildren: React.ReactNode;\n\tpropDisplayName: string;\n};\n\nexport const StylesField = ( { bind, propDisplayName, children }: StylesFieldProps ) => {\n\tconst stylesSchema = getStylesSchema();\n\n\tconst stylesInheritanceChain = useStylesInheritanceChain( [ bind ] );\n\n\tconst { value, canEdit, ...fields } = useStylesField( bind, { history: { propDisplayName } } );\n\n\tconst propType = createTopLevelObjectType( { schema: stylesSchema } );\n\n\tconst [ actualValue ] = stylesInheritanceChain;\n\n\tconst placeholderValues = {\n\t\t[ bind ]: actualValue?.value,\n\t};\n\n\tconst setValue = ( newValue: Record< string, PropValue > ) => {\n\t\tfields.setValue( newValue[ bind ] );\n\t};\n\n\treturn (\n\t\t<ControlAdornmentsProvider items={ getFieldIndicators( 'styles' ) }>\n\t\t\t<PropProvider\n\t\t\t\tpropType={ propType }\n\t\t\t\tvalue={ { [ bind ]: value } }\n\t\t\t\tsetValue={ setValue }\n\t\t\t\tplaceholder={ placeholderValues }\n\t\t\t\tisDisabled={ () => ! canEdit }\n\t\t\t>\n\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t<ConditionalField>{ children }</ConditionalField>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</ControlAdornmentsProvider>\n\t);\n};\n","import type { PropKey, PropValue } from '@elementor/editor-props';\n\nimport { useStylesFields } from './use-styles-fields';\n\nexport function useStylesField< T extends PropValue >(\n\tpropName: PropKey,\n\tmeta: { history: { propDisplayName: string } }\n): {\n\tvalue: T;\n\tsetValue: ( newValue: T ) => void;\n\tcanEdit?: boolean;\n} {\n\tconst { values, setValues, canEdit } = useStylesFields< { [ k: typeof propName ]: T } >( [ propName ] );\n\n\tconst value = values?.[ propName ] ?? null;\n\n\tconst setValue = ( newValue: T ) => {\n\t\tsetValues( { [ propName ]: newValue }, meta );\n\t};\n\n\treturn { value: value as T, setValue, canEdit };\n}\n","import { useBoundProp } from '@elementor/editor-controls';\nimport { isDependency, isDependencyMet, type PropKey, type PropType } from '@elementor/editor-props';\n\nimport { useStylesFields } from '../hooks/use-styles-fields';\n\nexport const ConditionalField: React.FC< {\n\tchildren: React.ReactNode;\n} > = ( { children } ) => {\n\tconst { propType } = useBoundProp();\n\n\tconst depList = getDependencies( propType );\n\n\tconst { values: depValues } = useStylesFields( depList );\n\n\tconst isHidden = ! isDependencyMet( propType?.dependencies, depValues ).isMet;\n\n\treturn isHidden ? null : children;\n};\n\nexport function getDependencies( propType?: PropType ): PropKey[] {\n\tif ( ! propType?.dependencies?.terms.length ) {\n\t\treturn [];\n\t}\n\n\treturn propType.dependencies.terms.flatMap( ( term ) => ( ! isDependency( term ) ? term.path : [] ) );\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\t'aria-label'?: string;\n} >;\n\nexport const SectionContent: FC< SectionContentProps > = ( { gap = 2, sx, children, 'aria-label': ariaLabel } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } } aria-label={ ariaLabel }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\n\nimport { SectionContent } from '../../section-content';\nimport { BorderColorField } from './border-color-field';\nimport { BorderRadiusField } from './border-radius-field';\nimport { BorderStyleField } from './border-style-field';\nimport { BorderWidthField } from './border-width-field';\n\nexport const BorderSection = () => (\n\t<SectionContent>\n\t\t<BorderWidthField />\n\t\t<BorderColorField />\n\t\t<BorderStyleField />\n\t\t<BorderRadiusField />\n\t</SectionContent>\n);\n","import * as React from 'react';\nimport { ColorControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst BORDER_COLOR_LABEL = __( 'Border color', 'elementor' );\n\nexport const BorderColorField = () => (\n\t<StylesField bind=\"border-color\" propDisplayName={ BORDER_COLOR_LABEL }>\n\t\t<StylesFieldLayout label={ BORDER_COLOR_LABEL }>\n\t\t\t<ColorControl />\n\t\t</StylesFieldLayout>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { Grid, Stack, type Theme } from '@elementor/ui';\n\nimport { ControlLabel } from './control-label';\n\ntype StylesFieldLayoutProps = {\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tdirection?: 'row' | 'column';\n};\n\nexport const StylesFieldLayout = React.forwardRef< HTMLDivElement, StylesFieldLayoutProps >( ( props, ref ) => {\n\tconst { direction = 'row', children, label } = props;\n\n\tconst LayoutComponent = direction === 'row' ? Row : Column;\n\n\treturn <LayoutComponent label={ label } ref={ ref } children={ children } />;\n} );\n\nconst Row = React.forwardRef< HTMLDivElement, { label: string; children: React.ReactNode } >(\n\t( { label, children }, ref ) => {\n\t\treturn (\n\t\t\t<Grid\n\t\t\t\tcontainer\n\t\t\t\tgap={ 2 }\n\t\t\t\talignItems=\"center\"\n\t\t\t\tflexWrap=\"nowrap\"\n\t\t\t\tref={ ref }\n\t\t\t\taria-label={ `${ label } control` }\n\t\t\t>\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\n\t\t\t\t\titem\n\t\t\t\t\txs={ 6 }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\twidth: `calc(50% - ${ theme.spacing( 2 ) })`,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t);\n\t}\n);\n\nconst Column = React.forwardRef< HTMLDivElement, { label: string; children: React.ReactNode } >(\n\t( { label, children }, ref ) => {\n\t\treturn (\n\t\t\t<Stack gap={ 0.75 } ref={ ref }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\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 EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderRadiusPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tBorderCornersIcon,\n\tRadiusBottomLeftIcon,\n\tRadiusBottomRightIcon,\n\tRadiusTopLeftIcon,\n\tRadiusTopRightIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\n\nconst BORDER_RADIUS_LABEL = __( 'Border radius', 'elementor' );\n\nconst StartStartIcon = withDirection( RadiusTopLeftIcon );\nconst StartEndIcon = withDirection( RadiusTopRightIcon );\nconst EndStartIcon = withDirection( RadiusBottomLeftIcon );\nconst EndEndIcon = withDirection( RadiusBottomRightIcon );\n\nconst getStartStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Top right', 'elementor' ) : __( 'Top left', 'elementor' );\nconst getStartEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Top left', 'elementor' ) : __( 'Top right', 'elementor' );\nconst getEndStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Bottom right', 'elementor' ) : __( 'Bottom left', 'elementor' );\nconst getEndEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Bottom left', 'elementor' ) : __( 'Bottom right', 'elementor' );\n\nconst getCorners = ( isSiteRtl: boolean ): EqualUnequalItems => [\n\t{\n\t\tlabel: getStartStartLabel( isSiteRtl ),\n\t\ticon: <StartStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'start-start',\n\t},\n\t{\n\t\tlabel: getStartEndLabel( isSiteRtl ),\n\t\ticon: <StartEndIcon fontSize={ 'tiny' } />,\n\t\tbind: 'start-end',\n\t},\n\t{\n\t\tlabel: getEndStartLabel( isSiteRtl ),\n\t\ticon: <EndStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'end-start',\n\t},\n\t{\n\t\tlabel: getEndEndLabel( isSiteRtl ),\n\t\ticon: <EndEndIcon fontSize={ 'tiny' } />,\n\t\tbind: 'end-end',\n\t},\n];\n\nexport const BorderRadiusField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<UiProviders>\n\t\t\t<StylesField bind={ 'border-radius' } propDisplayName={ BORDER_RADIUS_LABEL }>\n\t\t\t\t<EqualUnequalSizesControl\n\t\t\t\t\titems={ getCorners( isSiteRtl ) }\n\t\t\t\t\tlabel={ BORDER_RADIUS_LABEL }\n\t\t\t\t\ticon={ <BorderCornersIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\ttooltipLabel={ __( 'Adjust corners', 'elementor' ) }\n\t\t\t\t\tmultiSizePropTypeUtil={ borderRadiusPropTypeUtil }\n\t\t\t\t/>\n\t\t\t</StylesField>\n\t\t</UiProviders>\n\t);\n};\n","import { useTheme } from '@elementor/ui';\n\nimport { getElementorFrontendConfig } from '../sync/get-elementor-globals';\n\nexport function useDirection() {\n\tconst theme = useTheme();\n\n\tconst isUiRtl = 'rtl' === theme.direction,\n\t\tisSiteRtl = !! getElementorFrontendConfig()?.is_rtl;\n\n\treturn { isSiteRtl, isUiRtl };\n}\n","import { type ExtendedWindow } from './types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n\nexport const getElementorFrontendConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementorFrontend?.config ?? {};\n};\n","import * as React from 'react';\nimport { DirectionProvider, ThemeProvider } from '@elementor/ui';\n\nimport { useDirection } from '../../hooks/use-direction';\n\ninterface UiProvidersProps {\n\tchildren: React.ReactNode;\n}\n\nexport const UiProviders: React.FC< UiProvidersProps > = ( { children } ) => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>{ children }</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst BORDER_TYPE_LABEL = __( 'Border type', 'elementor' );\n\nconst borderStyles = [\n\t{ value: 'none', label: __( 'None', 'elementor' ) },\n\t{ value: 'solid', label: __( 'Solid', 'elementor' ) },\n\t{ value: 'dashed', label: __( 'Dashed', 'elementor' ) },\n\t{ value: 'dotted', label: __( 'Dotted', 'elementor' ) },\n\t{ value: 'double', label: __( 'Double', 'elementor' ) },\n\t{ value: 'groove', label: __( 'Groove', 'elementor' ) },\n\t{ value: 'ridge', label: __( 'Ridge', 'elementor' ) },\n\t{ value: 'inset', label: __( 'Inset', 'elementor' ) },\n\t{ value: 'outset', label: __( 'Outset', 'elementor' ) },\n];\n\nexport const BorderStyleField = () => (\n\t<StylesField bind=\"border-style\" propDisplayName={ BORDER_TYPE_LABEL }>\n\t\t<StylesFieldLayout label={ BORDER_TYPE_LABEL }>\n\t\t\t<SelectControl options={ borderStyles } />\n\t\t</StylesFieldLayout>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderWidthPropTypeUtil } from '@elementor/editor-props';\nimport { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\n\nconst BORDER_WIDTH_LABEL = __( 'Border width', 'elementor' );\n\nconst InlineStartIcon = withDirection( SideRightIcon );\nconst InlineEndIcon = withDirection( SideLeftIcon );\n\nconst getEdges = ( isSiteRtl: boolean ): EqualUnequalItems => [\n\t{\n\t\tlabel: __( 'Top', 'elementor' ),\n\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\tbind: 'block-start',\n\t},\n\t{\n\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\ticon: <InlineStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'inline-end',\n\t},\n\t{\n\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\tbind: 'block-end',\n\t},\n\t{\n\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\ticon: <InlineEndIcon fontSize={ 'tiny' } />,\n\t\tbind: 'inline-start',\n\t},\n];\n\nexport const BorderWidthField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<StylesField bind={ 'border-width' } propDisplayName={ BORDER_WIDTH_LABEL }>\n\t\t\t<EqualUnequalSizesControl\n\t\t\t\titems={ getEdges( isSiteRtl ) }\n\t\t\t\tlabel={ BORDER_WIDTH_LABEL }\n\t\t\t\ticon={ <SideAllIcon fontSize={ 'tiny' } /> }\n\t\t\t\ttooltipLabel={ __( 'Adjust borders', 'elementor' ) }\n\t\t\t\tmultiSizePropTypeUtil={ borderWidthPropTypeUtil }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport {\n\tBoxShadowRepeaterControl,\n\tFilterRepeaterControl,\n\tTransformRepeaterControl,\n\tTransitionRepeaterControl,\n} from '@elementor/editor-controls';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../../contexts/style-context';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { getRecentlyUsedList } from '../../../utils/get-recently-used-styles';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { BlendModeField } from './blend-mode-field';\nimport { OpacityControlField } from './opacity-control-field';\n\nconst BOX_SHADOW_LABEL = __( 'Box shadow', 'elementor' );\nconst FILTER_LABEL = __( 'Filters', 'elementor' );\nconst TRANSFORM_LABEL = __( 'Transform', 'elementor' );\nconst BACKDROP_FILTER_LABEL = __( 'Backdrop filters', 'elementor' );\nconst TRANSITIONS_LABEL = __( 'Transitions', 'elementor' );\n\nexport const EffectsSection = () => {\n\tconst { element } = useSelectedElement();\n\tconst { meta } = useStyle();\n\n\treturn (\n\t\t<SectionContent gap={ 1 }>\n\t\t\t<BlendModeField />\n\t\t\t<PanelDivider />\n\t\t\t<OpacityControlField />\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"box-shadow\" propDisplayName={ BOX_SHADOW_LABEL }>\n\t\t\t\t<BoxShadowRepeaterControl />\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"transform\" propDisplayName={ TRANSFORM_LABEL }>\n\t\t\t\t<TransformRepeaterControl />\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"transition\" propDisplayName={ TRANSITIONS_LABEL }>\n\t\t\t\t<TransitionRepeaterControl\n\t\t\t\t\tcurrentStyleState={ meta.state }\n\t\t\t\t\trecentlyUsedListGetter={ () => getRecentlyUsedList( element?.id ?? '' ) }\n\t\t\t\t/>\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"filter\" propDisplayName={ FILTER_LABEL }>\n\t\t\t\t<FilterRepeaterControl />\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"backdrop-filter\" propDisplayName={ BACKDROP_FILTER_LABEL }>\n\t\t\t\t<FilterRepeaterControl filterPropName=\"backdrop-filter\" />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import { createPropsResolver, styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { getElementStyles } from '@elementor/editor-elements';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nexport const getRecentlyUsedList = async ( elementId: string ) => {\n\tif ( ! elementId ) {\n\t\treturn [];\n\t}\n\tconst resolver = createPropsResolver( {\n\t\ttransformers: styleTransformersRegistry,\n\t\tschema: getStylesSchema(),\n\t} );\n\n\tconst styles = getElementStyles( elementId ) ?? {};\n\tconst styleKeys = Object.keys( styles ?? {} );\n\tconst variants = styleKeys.map( ( key ) => styles?.[ key ]?.variants ?? [] );\n\n\tconst resolved = await Promise.all(\n\t\tvariants.flat().map( async ( variant ) => {\n\t\t\tconst result = await resolver( {\n\t\t\t\tprops: variant.props ?? {},\n\t\t\t\tschema: getStylesSchema(),\n\t\t\t} );\n\t\t\treturn Object.entries( result )\n\t\t\t\t.filter( ( [ , value ] ) => value !== null )\n\t\t\t\t.map( ( [ key ] ) => key );\n\t\t} )\n\t);\n\n\tconst propSet = new Set( resolved.flat() );\n\treturn Array.from( propSet );\n};\n","import * as React from 'react';\nimport { Divider } from '@elementor/ui';\n\nexport const PanelDivider = () => <Divider sx={ { my: 0.5 } } />;\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst BLEND_MODE_LABEL = __( 'Blend mode', 'elementor' );\n\nconst blendModeOptions = [\n\t{ label: __( 'Normal', 'elementor' ), value: 'normal' },\n\t{ label: __( 'Multiply', 'elementor' ), value: 'multiply' },\n\t{ label: __( 'Screen', 'elementor' ), value: 'screen' },\n\t{ label: __( 'Overlay', 'elementor' ), value: 'overlay' },\n\t{ label: __( 'Darken', 'elementor' ), value: 'darken' },\n\t{ label: __( 'Lighten', 'elementor' ), value: 'lighten' },\n\t{ label: __( 'Color dodge', 'elementor' ), value: 'color-dodge' },\n\t{ label: __( 'Color burn', 'elementor' ), value: 'color-burn' },\n\t{ label: __( 'Saturation', 'elementor' ), value: 'saturation' },\n\t{ label: __( 'Color', 'elementor' ), value: 'color' },\n\t{ label: __( 'Difference', 'elementor' ), value: 'difference' },\n\t{ label: __( 'Exclusion', 'elementor' ), value: 'exclusion' },\n\t{ label: __( 'Hue', 'elementor' ), value: 'hue' },\n\t{ label: __( 'Luminosity', 'elementor' ), value: 'luminosity' },\n\t{ label: __( 'Soft light', 'elementor' ), value: 'soft-light' },\n\t{ label: __( 'Hard light', 'elementor' ), value: 'hard-light' },\n];\n\nexport const BlendModeField = () => {\n\treturn (\n\t\t<StylesField bind=\"mix-blend-mode\" propDisplayName={ BLEND_MODE_LABEL }>\n\t\t\t<StylesFieldLayout label={ BLEND_MODE_LABEL }>\n\t\t\t\t<SelectControl options={ blendModeOptions } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst OPACITY_LABEL = __( 'Opacity', 'elementor' );\n\nexport const OpacityControlField = () => {\n\tconst rowRef = useRef< HTMLDivElement | null >( null );\n\n\treturn (\n\t\t<StylesField bind={ 'opacity' } propDisplayName={ OPACITY_LABEL }>\n\t\t\t<StylesFieldLayout ref={ rowRef } label={ OPACITY_LABEL }>\n\t\t\t\t<SizeControl units={ [ '%' ] } anchorRef={ rowRef } defaultUnit=\"%\" />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlFormLabel } from '@elementor/editor-controls';\nimport { useParentElement } from '@elementor/editor-elements';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../../contexts/element-context';\nimport { useComputedStyle } from '../../../hooks/use-computed-style';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { AlignContentField } from './align-content-field';\nimport { AlignItemsField } from './align-items-field';\nimport { AlignSelfChild } from './align-self-child-field';\nimport { DisplayField, useDisplayPlaceholderValue } from './display-field';\nimport { type FlexDirection, FlexDirectionField } from './flex-direction-field';\nimport { FlexOrderField } from './flex-order-field';\nimport { FlexSizeField } from './flex-size-field';\nimport { GapControlField } from './gap-control-field';\nimport { JustifyContentField } from './justify-content-field';\nimport { WrapField } from './wrap-field';\n\nconst DISPLAY_LABEL = __( 'Display', 'elementor' );\nconst FLEX_WRAP_LABEL = __( 'Flex wrap', 'elementor' );\n\nexport const LayoutSection = () => {\n\tconst { value: display } = useStylesField< StringPropValue >( 'display', {\n\t\thistory: { propDisplayName: DISPLAY_LABEL },\n\t} );\n\tconst displayPlaceholder = useDisplayPlaceholderValue();\n\tconst isDisplayFlex = shouldDisplayFlexFields( display, displayPlaceholder as StringPropValue );\n\tconst { element } = useElement();\n\tconst parent = useParentElement( element.id );\n\tconst parentStyle = useComputedStyle( parent?.id || null );\n\tconst parentStyleDirection = parentStyle?.flexDirection ?? 'row';\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<DisplayField />\n\t\t\t{ isDisplayFlex && <FlexFields /> }\n\t\t\t{ 'flex' === parentStyle?.display && <FlexChildFields parentStyleDirection={ parentStyleDirection } /> }\n\t\t</SectionContent>\n\t);\n};\n\nconst FlexFields = () => {\n\tconst { value: flexWrap } = useStylesField< StringPropValue >( 'flex-wrap', {\n\t\thistory: { propDisplayName: FLEX_WRAP_LABEL },\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<FlexDirectionField />\n\t\t\t<JustifyContentField />\n\t\t\t<AlignItemsField />\n\t\t\t<PanelDivider />\n\t\t\t<GapControlField />\n\t\t\t<WrapField />\n\t\t\t{ [ 'wrap', 'wrap-reverse' ].includes( flexWrap?.value as string ) && <AlignContentField /> }\n\t\t</>\n\t);\n};\n\nconst FlexChildFields = ( { parentStyleDirection }: { parentStyleDirection: string } ) => (\n\t<>\n\t\t<PanelDivider />\n\t\t<ControlFormLabel>{ __( 'Flex child', 'elementor' ) }</ControlFormLabel>\n\t\t<AlignSelfChild parentStyleDirection={ parentStyleDirection as FlexDirection } />\n\t\t<FlexOrderField />\n\t\t<FlexSizeField />\n\t</>\n);\n\nconst shouldDisplayFlexFields = ( display: StringPropValue | null, local: StringPropValue ) => {\n\tconst value = display?.value ?? local?.value;\n\n\tif ( ! value ) {\n\t\treturn false;\n\t}\n\n\treturn 'flex' === value || 'inline-flex' === value;\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport function useComputedStyle( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[\n\t\t\twindowEvent( 'elementor/device-mode/change' ),\n\t\t\tcommandEndEvent( 'document/elements/reset-style' ),\n\t\t\tcommandEndEvent( 'document/elements/settings' ),\n\t\t\tcommandEndEvent( 'document/elements/paste-style' ),\n\t\t],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst element = window.elementor?.getContainer?.( elementId );\n\n\t\t\tif ( ! element?.view?.el ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst resp = window.getComputedStyle( element.view.el );\n\t\t\treturn resp;\n\t\t}\n\t);\n}\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst ALIGN_CONTENT_LABEL = __( 'Align content', 'elementor' );\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 0,\n\tdisableRotationForReversed: true,\n};\n\nconst options: ToggleButtonGroupItem< AlignContent >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignContentField = () => (\n\t<StylesField bind=\"align-content\" propDisplayName={ ALIGN_CONTENT_LABEL }>\n\t\t<UiProviders>\n\t\t\t<StylesFieldLayout label={ ALIGN_CONTENT_LABEL } direction=\"column\">\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</StylesFieldLayout>\n\t\t</UiProviders>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps, useTheme } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesField } from '../../../../hooks/use-styles-field';\nimport type { FlexDirection } from '../flex-direction-field';\n\ntype Props = {\n\ticon: React.JSX.ElementType;\n\tsize: ToggleButtonProps[ 'size' ];\n\tisClockwise?: boolean;\n\toffset?: number;\n\tdisableRotationForReversed?: boolean;\n};\n\nconst FLEX_DIRECTION_LABEL = __( 'Flex direction', 'elementor' );\n\nconst CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: 90,\n\t'row-reverse': 180,\n\t'column-reverse': 270,\n};\n\nconst COUNTER_CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: -90,\n\t'row-reverse': -180,\n\t'column-reverse': -270,\n};\n\nexport const RotatedIcon = ( {\n\ticon: Icon,\n\tsize,\n\tisClockwise = true,\n\toffset = 0,\n\tdisableRotationForReversed = false,\n}: Props ) => {\n\tconst rotate = useRef( useGetTargetAngle( isClockwise, offset, disableRotationForReversed ) );\n\n\trotate.current = useGetTargetAngle( isClockwise, offset, disableRotationForReversed, rotate );\n\n\treturn <Icon fontSize={ size } sx={ { transition: '.3s', rotate: `${ rotate.current }deg` } } />;\n};\n\nconst useGetTargetAngle = (\n\tisClockwise: boolean,\n\toffset: number,\n\tdisableRotationForReversed: boolean,\n\texistingRef?: React.MutableRefObject< number >\n) => {\n\tconst { value: direction } = useStylesField< StringPropValue >( 'flex-direction', {\n\t\thistory: { propDisplayName: FLEX_DIRECTION_LABEL },\n\t} );\n\tconst isRtl = 'rtl' === useTheme().direction;\n\tconst rotationMultiplier = isRtl ? -1 : 1;\n\tconst angleMap = isClockwise ? CLOCKWISE_ANGLES : COUNTER_CLOCKWISE_ANGLES;\n\n\tconst currentDirection = ( direction?.value as FlexDirection ) || 'row';\n\tconst currentAngle = existingRef ? existingRef.current * rotationMultiplier : angleMap[ currentDirection ] + offset;\n\tconst targetAngle = angleMap[ currentDirection ] + offset;\n\n\tconst diffToTargetAngle = ( targetAngle - currentAngle + 360 ) % 360;\n\tconst formattedDiff = ( ( diffToTargetAngle + 180 ) % 360 ) - 180;\n\n\tif ( disableRotationForReversed && [ 'row-reverse', 'column-reverse' ].includes( currentDirection ) ) {\n\t\treturn 0;\n\t}\n\n\treturn ( currentAngle + formattedDiff ) * rotationMultiplier;\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignItems = 'start' | 'center' | 'end' | 'stretch';\n\nconst ALIGN_ITEMS_LABEL = __( 'Align items', 'elementor' );\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 90,\n};\n\nconst options: ToggleButtonGroupItem< AlignItems >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ JustifyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignItemsField = () => {\n\treturn (\n\t\t<UiProviders>\n\t\t\t<StylesField bind=\"align-items\" propDisplayName={ ALIGN_ITEMS_LABEL }>\n\t\t\t\t<StylesFieldLayout label={ ALIGN_ITEMS_LABEL }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</StylesField>\n\t\t</UiProviders>\n\t);\n};\n","import * as React from 'react';\nimport { ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { type ToggleButtonProps, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { type FlexDirection } from './flex-direction-field';\nimport { RotatedIcon } from './utils/rotated-icon';\n\nconst ALIGN_SELF_LABEL = __( 'Align self', 'elementor' );\n\nconst ALIGN_SELF_CHILD_OFFSET_MAP: Record< FlexDirection, number > = {\n\trow: 90,\n\t'row-reverse': 90,\n\tcolumn: 0,\n\t'column-reverse': 0,\n};\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n};\n\nconst getOptions = ( parentStyleDirection: FlexDirection ) => [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ StartIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ CenterIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ EndIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ JustifyIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignSelfChild = ( { parentStyleDirection }: { parentStyleDirection: FlexDirection } ) => (\n\t<StylesField bind=\"align-self\" propDisplayName={ ALIGN_SELF_LABEL }>\n\t\t<UiProviders>\n\t\t\t<StylesFieldLayout label={ ALIGN_SELF_LABEL }>\n\t\t\t\t<ToggleControl options={ getOptions( parentStyleDirection ) } />\n\t\t\t</StylesFieldLayout>\n\t\t</UiProviders>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesInheritanceChain } from '../../../contexts/styles-inheritance-context';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Displays = 'block' | 'flex' | 'inline-block' | 'inline-flex' | 'none';\n\nconst DISPLAY_LABEL = __( 'Display', 'elementor' );\n\nconst displayFieldItems: ToggleButtonGroupItem< Displays >[] = [\n\t{\n\t\tvalue: 'block',\n\t\trenderContent: () => __( 'Block', 'elementor' ),\n\t\tlabel: __( 'Block', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex',\n\t\trenderContent: () => __( 'Flex', 'elementor' ),\n\t\tlabel: __( 'Flex', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'inline-block',\n\t\trenderContent: () => __( 'In-blk', 'elementor' ),\n\t\tlabel: __( 'Inline-block', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'none',\n\t\trenderContent: () => __( 'None', 'elementor' ),\n\t\tlabel: __( 'None', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'inline-flex',\n\t\trenderContent: () => __( 'In-flx', 'elementor' ),\n\t\tlabel: __( 'Inline-flex', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const DisplayField = () => {\n\tconst placeholder = useDisplayPlaceholderValue();\n\n\treturn (\n\t\t<StylesField bind=\"display\" propDisplayName={ DISPLAY_LABEL } placeholder={ placeholder }>\n\t\t\t<StylesFieldLayout label={ DISPLAY_LABEL } direction=\"column\">\n\t\t\t\t<ToggleControl options={ displayFieldItems } maxItems={ 4 } fullWidth={ true } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n\n// TODO - placing this logic deliberately here, and will be removed once applied automatically to all style fields as part of ED-18491\nexport const useDisplayPlaceholderValue = () => useStylesInheritanceChain( [ 'display' ] )[ 0 ]?.value ?? undefined;\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nexport type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\nconst FLEX_DIRECTION_LABEL = __( 'Direction', 'elementor' );\n\nconst options: ToggleButtonGroupItem< FlexDirection >[] = [\n\t{\n\t\tvalue: 'row',\n\t\tlabel: __( 'Row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst StartIcon = withDirection( ArrowRightIcon );\n\t\t\treturn <StartIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column',\n\t\tlabel: __( 'Column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'row-reverse',\n\t\tlabel: __( 'Reversed row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst EndIcon = withDirection( ArrowLeftIcon );\n\t\t\treturn <EndIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column-reverse',\n\t\tlabel: __( 'Reversed column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexDirectionField = () => {\n\treturn (\n\t\t<StylesField bind=\"flex-direction\" propDisplayName={ FLEX_DIRECTION_LABEL }>\n\t\t\t<UiProviders>\n\t\t\t\t<StylesFieldLayout label={ FLEX_DIRECTION_LABEL }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</UiProviders>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n\tControlToggleButtonGroup,\n\tNumberControl,\n\ttype ToggleButtonGroupItem,\n\tuseBoundProp,\n} from '@elementor/editor-controls';\nimport { type NumberPropValue } from '@elementor/editor-props';\nimport { ArrowDownSmallIcon, ArrowUpSmallIcon, PencilIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { ControlLabel } from '../../control-label';\nimport { SectionContent } from '../../section-content';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype GroupControlItemOption = 'first' | 'last' | 'custom';\n\nconst ORDER_LABEL = __( 'Order', 'elementor' );\n\nexport const FIRST_DEFAULT_VALUE = -99999;\nexport const LAST_DEFAULT_VALUE = 99999;\n\nconst FIRST = 'first';\nconst LAST = 'last';\nconst CUSTOM = 'custom';\n\nconst orderValueMap = {\n\t[ FIRST ]: FIRST_DEFAULT_VALUE,\n\t[ LAST ]: LAST_DEFAULT_VALUE,\n};\n\nconst items: ToggleButtonGroupItem< GroupControlItemOption >[] = [\n\t{\n\t\tvalue: FIRST,\n\t\tlabel: __( 'First', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: LAST,\n\t\tlabel: __( 'Last', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon 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 FlexOrderField = () => {\n\treturn (\n\t\t<StylesField bind=\"order\" propDisplayName={ ORDER_LABEL }>\n\t\t\t<UiProviders>\n\t\t\t\t<SectionContent>\n\t\t\t\t\t<FlexOrderFieldContent />\n\t\t\t\t</SectionContent>\n\t\t\t</UiProviders>\n\t\t</StylesField>\n\t);\n};\n\nfunction FlexOrderFieldContent() {\n\tconst {\n\t\tvalue: order,\n\t\tsetValue: setOrder,\n\t\tcanEdit,\n\t} = useStylesField< NumberPropValue | null >( 'order', {\n\t\thistory: { propDisplayName: ORDER_LABEL },\n\t} );\n\n\tconst { placeholder } = useBoundProp();\n\tconst placeholderValue = placeholder as NumberPropValue;\n\n\tconst currentGroup = useMemo( () => getGroupControlValue( order?.value ?? null ), [ order ] );\n\n\tconst [ activeGroup, setActiveGroup ] = useState( currentGroup );\n\tconst [ customLocked, setCustomLocked ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( ! customLocked ) {\n\t\t\tsetActiveGroup( currentGroup );\n\t\t}\n\t}, [ currentGroup, customLocked ] );\n\n\tuseEffect( () => {\n\t\tif ( order === null ) {\n\t\t\tsetCustomLocked( false );\n\t\t}\n\t}, [ order ] );\n\n\tconst groupPlaceholder = getGroupControlValue( placeholderValue?.value ?? null );\n\n\tconst handleToggleButtonChange = ( group: GroupControlItemOption | null ) => {\n\t\tsetActiveGroup( group );\n\t\tsetCustomLocked( group === CUSTOM );\n\n\t\tif ( CUSTOM === group ) {\n\t\t\tsetOrder( { $$type: 'number', value: null } );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( FIRST === group ) {\n\t\t\tsetOrder( { $$type: 'number', value: orderValueMap[ group ] } );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( LAST === group ) {\n\t\t\tsetOrder( { $$type: 'number', value: orderValueMap[ group ] } );\n\t\t\treturn;\n\t\t}\n\n\t\tsetOrder( null );\n\t};\n\n\tconst isCustomVisible = CUSTOM === activeGroup || CUSTOM === groupPlaceholder;\n\tconst orderPlaceholder = CUSTOM === groupPlaceholder ? String( placeholderValue?.value ?? null ) : '';\n\n\treturn (\n\t\t<>\n\t\t\t<StylesFieldLayout label={ ORDER_LABEL }>\n\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\titems={ items }\n\t\t\t\t\tvalue={ activeGroup }\n\t\t\t\t\tonChange={ handleToggleButtonChange }\n\t\t\t\t\texclusive={ true }\n\t\t\t\t\tplaceholder={ groupPlaceholder }\n\t\t\t\t\tdisabled={ ! canEdit }\n\t\t\t\t/>\n\t\t\t</StylesFieldLayout>\n\t\t\t{ isCustomVisible && (\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>{ __( 'Custom order', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\tmin={ FIRST_DEFAULT_VALUE + 1 }\n\t\t\t\t\t\t\tmax={ LAST_DEFAULT_VALUE - 1 }\n\t\t\t\t\t\t\tshouldForceInt={ true }\n\t\t\t\t\t\t\tplaceholder={ orderPlaceholder }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nconst getGroupControlValue = ( order: number | null ): GroupControlItemOption | null => {\n\tif ( LAST_DEFAULT_VALUE === order ) {\n\t\treturn LAST;\n\t}\n\n\tif ( FIRST_DEFAULT_VALUE === order ) {\n\t\treturn FIRST;\n\t}\n\n\tif ( null !== order ) {\n\t\treturn CUSTOM;\n\t}\n\n\treturn null;\n};\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n\tControlToggleButtonGroup,\n\tNumberControl,\n\tPropKeyProvider,\n\tPropProvider,\n\tSizeControl,\n\ttype ToggleButtonGroupItem,\n\tuseBoundProp,\n} from '@elementor/editor-controls';\nimport { flexPropTypeUtil, type FlexPropValue, numberPropTypeUtil } from '@elementor/editor-props';\nimport { ExpandIcon, PencilIcon, ShrinkIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { SectionContent } from '../../section-content';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype GroupItem = 'flex-grow' | 'flex-shrink' | 'custom';\n\nconst FLEX_SIZE_LABEL = __( 'Flex Size', 'elementor' );\n\nconst DEFAULT = 1;\n\nconst items: ToggleButtonGroupItem< GroupItem >[] = [\n\t{\n\t\tvalue: 'flex-grow',\n\t\tlabel: __( 'Grow', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ExpandIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex-shrink',\n\t\tlabel: __( 'Shrink', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ShrinkIcon 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 FlexSizeField = () => {\n\treturn (\n\t\t<UiProviders>\n\t\t\t<SectionContent>\n\t\t\t\t<StylesField bind=\"flex\" propDisplayName={ FLEX_SIZE_LABEL }>\n\t\t\t\t\t<FlexSizeFieldContent />\n\t\t\t\t</StylesField>\n\t\t\t</SectionContent>\n\t\t</UiProviders>\n\t);\n};\n\nconst FlexSizeFieldContent = () => {\n\tconst { value, setValue, canEdit } = useStylesField< FlexPropValue >( 'flex', {\n\t\thistory: { propDisplayName: FLEX_SIZE_LABEL },\n\t} );\n\n\tconst { placeholder } = useBoundProp();\n\n\tconst flexValues = extractFlexValues( value );\n\n\tconst currentGroup = useMemo( () => getActiveGroup( flexValues ), [ flexValues ] );\n\n\tconst [ activeGroup, setActiveGroup ] = useState( currentGroup );\n\tconst [ customLocked, setCustomLocked ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( ! customLocked ) {\n\t\t\tsetActiveGroup( currentGroup );\n\t\t}\n\t}, [ currentGroup, customLocked ] );\n\n\tuseEffect( () => {\n\t\tif ( value === null ) {\n\t\t\tsetCustomLocked( false );\n\t\t}\n\t}, [ value ] );\n\n\tconst onChangeGroup = ( group: GroupItem | null = null ) => {\n\t\tsetActiveGroup( group );\n\t\tsetCustomLocked( group === 'custom' );\n\n\t\tconst newFlexValue = createFlexValueForGroup( group, value );\n\n\t\tsetValue( newFlexValue as FlexPropValue );\n\t};\n\n\tconst groupPlaceholder = getActiveGroup( extractFlexValues( placeholder as FlexPropValue | null ) );\n\n\tconst isCustomVisible = 'custom' === activeGroup || 'custom' === groupPlaceholder;\n\n\treturn (\n\t\t<>\n\t\t\t<StylesFieldLayout label={ FLEX_SIZE_LABEL }>\n\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\tvalue={ activeGroup ?? null }\n\t\t\t\t\tplaceholder={ groupPlaceholder ?? null }\n\t\t\t\t\tonChange={ onChangeGroup }\n\t\t\t\t\tdisabled={ ! canEdit }\n\t\t\t\t\titems={ items }\n\t\t\t\t\texclusive={ true }\n\t\t\t\t/>\n\t\t\t</StylesFieldLayout>\n\t\t\t{ isCustomVisible && <FlexCustomField /> }\n\t\t</>\n\t);\n};\n\nfunction extractFlexValues( source: FlexPropValue | null ) {\n\treturn {\n\t\tgrow: source?.value?.flexGrow?.value ?? null,\n\t\tshrink: source?.value?.flexShrink?.value ?? null,\n\t\tbasis: source?.value?.flexBasis?.value ?? null,\n\t};\n}\n\nconst createFlexValueForGroup = ( group: GroupItem | null, flexValue: FlexPropValue | null ): FlexPropValue | null => {\n\tif ( ! group ) {\n\t\treturn null;\n\t}\n\n\tif ( group === 'flex-grow' ) {\n\t\treturn flexPropTypeUtil.create( {\n\t\t\tflexGrow: numberPropTypeUtil.create( DEFAULT ),\n\t\t\tflexShrink: null,\n\t\t\tflexBasis: null,\n\t\t} );\n\t}\n\n\tif ( group === 'flex-shrink' ) {\n\t\treturn flexPropTypeUtil.create( {\n\t\t\tflexGrow: null,\n\t\t\tflexShrink: numberPropTypeUtil.create( DEFAULT ),\n\t\t\tflexBasis: null,\n\t\t} );\n\t}\n\n\tif ( group === 'custom' ) {\n\t\tif ( flexValue ) {\n\t\t\treturn flexValue;\n\t\t}\n\t\treturn flexPropTypeUtil.create( {\n\t\t\tflexGrow: null,\n\t\t\tflexShrink: null,\n\t\t\tflexBasis: null,\n\t\t} );\n\t}\n\n\treturn null;\n};\n\nconst FlexCustomField = () => {\n\tconst flexBasisRowRef = useRef< HTMLDivElement >( null );\n\tconst context = useBoundProp( flexPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<>\n\t\t\t\t<StylesFieldLayout label={ __( 'Grow', 'elementor' ) }>\n\t\t\t\t\t<PropKeyProvider bind=\"flexGrow\">\n\t\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</StylesFieldLayout>\n\t\t\t\t<StylesFieldLayout label={ __( 'Shrink', 'elementor' ) }>\n\t\t\t\t\t<PropKeyProvider bind=\"flexShrink\">\n\t\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</StylesFieldLayout>\n\t\t\t\t<StylesFieldLayout label={ __( 'Basis', 'elementor' ) } ref={ flexBasisRowRef }>\n\t\t\t\t\t<PropKeyProvider bind=\"flexBasis\">\n\t\t\t\t\t\t<SizeControl extendedOptions={ [ 'auto' ] } anchorRef={ flexBasisRowRef } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</>\n\t\t</PropProvider>\n\t);\n};\n\nconst getActiveGroup = ( {\n\tgrow,\n\tshrink,\n\tbasis,\n}: {\n\tgrow: number | null;\n\tshrink: number | null;\n\tbasis: { size: number; unit: string } | string | null;\n} ): GroupItem | null => {\n\tif ( null === grow && null === shrink && ! basis ) {\n\t\treturn null;\n\t}\n\n\tif ( ( shrink && grow ) || basis ) {\n\t\treturn 'custom';\n\t}\n\n\tif ( grow === DEFAULT ) {\n\t\treturn 'flex-grow';\n\t}\n\n\tif ( shrink === DEFAULT ) {\n\t\treturn 'flex-shrink';\n\t}\n\n\treturn 'custom';\n};\n","import * as React from 'react';\nimport { GapControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst GAPS_LABEL = __( 'Gaps', 'elementor' );\n\nexport const GapControlField = () => {\n\treturn (\n\t\t<StylesField bind={ 'gap' } propDisplayName={ GAPS_LABEL }>\n\t\t\t<GapControl label={ GAPS_LABEL } />\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype JustifyContent = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst JUSTIFY_CONTENT_LABEL = __( 'Justify content', 'elementor' );\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: true,\n\toffset: -90,\n};\n\nconst options: ToggleButtonGroupItem< JustifyContent >[] = [\n\t{\n\t\tvalue: 'flex-start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex-end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const JustifyContentField = () => (\n\t<StylesField bind=\"justify-content\" propDisplayName={ JUSTIFY_CONTENT_LABEL }>\n\t\t<UiProviders>\n\t\t\t<StylesFieldLayout label={ JUSTIFY_CONTENT_LABEL } direction=\"column\">\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</StylesFieldLayout>\n\t\t</UiProviders>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowBackIcon, ArrowForwardIcon, ArrowRightIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\nconst FLEX_WRAP_LABEL = __( 'Wrap', 'elementor' );\n\nconst options: ToggleButtonGroupItem< FlexWrap >[] = [\n\t{\n\t\tvalue: 'nowrap',\n\t\tlabel: __( 'No wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowRightIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap',\n\t\tlabel: __( 'Wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBackIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap-reverse',\n\t\tlabel: __( 'Reversed wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowForwardIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const WrapField = () => {\n\treturn (\n\t\t<StylesField bind=\"flex-wrap\" propDisplayName={ FLEX_WRAP_LABEL }>\n\t\t\t<UiProviders>\n\t\t\t\t<StylesFieldLayout label={ FLEX_WRAP_LABEL }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</UiProviders>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { useSessionStorage } from '@elementor/session';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../../contexts/style-context';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { useStylesFields } from '../../../hooks/use-styles-fields';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { DimensionsField } from './dimensions-field';\nimport { OffsetField } from './offset-field';\nimport { PositionField } from './position-field';\nimport { ZIndexField } from './z-index-field';\n\ntype DimensionValue =\n\t| {\n\t\t\t$$type: 'size';\n\t\t\tvalue: number;\n\t }\n\t| undefined\n\t| null;\n\ntype DimensionsValues = {\n\t'inset-block-start': DimensionValue;\n\t'inset-block-end': DimensionValue;\n\t'inset-inline-start': DimensionValue;\n\t'inset-inline-end': DimensionValue;\n};\n\nconst POSITION_LABEL = __( 'Position', 'elementor' );\nconst DIMENSIONS_LABEL = __( 'Dimensions', 'elementor' );\n\nexport const PositionSection = () => {\n\tconst { value: positionValue } = useStylesField< StringPropValue >( 'position', {\n\t\thistory: { propDisplayName: POSITION_LABEL },\n\t} );\n\tconst { values: dimensions, setValues: setDimensions } = useStylesFields< DimensionsValues >( [\n\t\t'inset-block-start',\n\t\t'inset-block-end',\n\t\t'inset-inline-start',\n\t\t'inset-inline-end',\n\t] );\n\n\tconst [ dimensionsValuesFromHistory, updateDimensionsHistory, clearDimensionsHistory ] = usePersistDimensions();\n\n\tconst onPositionChange = ( newPosition: string | null, previousPosition: string | null | undefined ) => {\n\t\tconst meta = { history: { propDisplayName: DIMENSIONS_LABEL } };\n\n\t\tif ( newPosition === 'static' ) {\n\t\t\tif ( dimensions ) {\n\t\t\t\tupdateDimensionsHistory( dimensions );\n\t\t\t\tsetDimensions(\n\t\t\t\t\t{\n\t\t\t\t\t\t'inset-block-start': undefined,\n\t\t\t\t\t\t'inset-block-end': undefined,\n\t\t\t\t\t\t'inset-inline-start': undefined,\n\t\t\t\t\t\t'inset-inline-end': undefined,\n\t\t\t\t\t},\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t} else if ( previousPosition === 'static' ) {\n\t\t\tif ( dimensionsValuesFromHistory ) {\n\t\t\t\tsetDimensions( dimensionsValuesFromHistory, meta );\n\t\t\t\tclearDimensionsHistory();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst isNotStatic = positionValue && positionValue?.value !== 'static';\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<PositionField onChange={ onPositionChange } />\n\t\t\t{ isNotStatic ? (\n\t\t\t\t<>\n\t\t\t\t\t<DimensionsField />\n\t\t\t\t\t<ZIndexField />\n\t\t\t\t</>\n\t\t\t) : null }\n\n\t\t\t<PanelDivider />\n\t\t\t<OffsetField />\n\t\t</SectionContent>\n\t);\n};\n\nconst usePersistDimensions = () => {\n\tconst { id: styleDefID, meta } = useStyle();\n\tconst styleVariantPath = `styles/${ styleDefID }/${ meta.breakpoint || 'desktop' }/${ meta.state || 'null' }`;\n\tconst dimensionsPath = `${ styleVariantPath }/dimensions`;\n\n\treturn useSessionStorage< DimensionsValues >( dimensionsPath );\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { ControlLabel } from '../../control-label';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\ntype Side = 'inset-inline-start' | 'inset-inline-end' | 'inset-block-start' | 'inset-block-end';\n\nconst InlineStartIcon = withDirection( SideLeftIcon );\nconst InlineEndIcon = withDirection( SideRightIcon );\n\nconst sideIcons = {\n\t'inset-block-start': <SideTopIcon fontSize={ 'tiny' } />,\n\t'inset-block-end': <SideBottomIcon fontSize={ 'tiny' } />,\n\t'inset-inline-start': <RotatedIcon icon={ InlineStartIcon } size=\"tiny\" />,\n\t'inset-inline-end': <RotatedIcon icon={ InlineEndIcon } size=\"tiny\" />,\n};\n\nconst getInlineStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' );\n\nconst getInlineEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' );\n\nexport const DimensionsField = () => {\n\tconst { isSiteRtl } = useDirection();\n\tconst rowRefs = [ useRef< HTMLDivElement >( null ), useRef< HTMLDivElement >( null ) ];\n\n\treturn (\n\t\t<UiProviders>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ rowRefs[ 0 ] }>\n\t\t\t\t<DimensionField side=\"inset-block-start\" label={ __( 'Top', 'elementor' ) } rowRef={ rowRefs[ 0 ] } />\n\t\t\t\t<DimensionField\n\t\t\t\t\tside=\"inset-inline-end\"\n\t\t\t\t\tlabel={ getInlineEndLabel( isSiteRtl ) }\n\t\t\t\t\trowRef={ rowRefs[ 0 ] }\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ rowRefs[ 1 ] }>\n\t\t\t\t<DimensionField side=\"inset-block-end\" label={ __( 'Bottom', 'elementor' ) } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t<DimensionField\n\t\t\t\t\tside=\"inset-inline-start\"\n\t\t\t\t\tlabel={ getInlineStartLabel( isSiteRtl ) }\n\t\t\t\t\trowRef={ rowRefs[ 1 ] }\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t</UiProviders>\n\t);\n};\n\nconst DimensionField = ( {\n\tside,\n\tlabel,\n\trowRef,\n}: {\n\tside: Side;\n\tlabel: string;\n\trowRef: React.RefObject< HTMLDivElement >;\n} ) => (\n\t<StylesField bind={ side } propDisplayName={ label }>\n\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<SizeControl\n\t\t\t\t\tstartIcon={ sideIcons[ side ] }\n\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type LengthUnit, SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst OFFSET_LABEL = __( 'Anchor offset', 'elementor' );\n\nconst UNITS: LengthUnit[] = [ 'px', 'em', 'rem', 'vw', 'vh' ];\n\nexport const OffsetField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"scroll-margin-top\" propDisplayName={ OFFSET_LABEL }>\n\t\t\t<StylesFieldLayout label={ OFFSET_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl units={ UNITS } anchorRef={ rowRef } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst POSITION_LABEL = __( 'Position', 'elementor' );\n\nconst positionOptions = [\n\t{ label: __( 'Static', 'elementor' ), value: 'static' },\n\t{ label: __( 'Relative', 'elementor' ), value: 'relative' },\n\t{ label: __( 'Absolute', 'elementor' ), value: 'absolute' },\n\t{ label: __( 'Fixed', 'elementor' ), value: 'fixed' },\n\t{ label: __( 'Sticky', 'elementor' ), value: 'sticky' },\n];\n\ntype Props = {\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n};\n\nexport const PositionField = ( { onChange }: Props ) => {\n\treturn (\n\t\t<StylesField bind=\"position\" propDisplayName={ POSITION_LABEL }>\n\t\t\t<StylesFieldLayout label={ POSITION_LABEL }>\n\t\t\t\t<SelectControl options={ positionOptions } onChange={ onChange } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { NumberControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst Z_INDEX_LABEL = __( 'Z-index', 'elementor' );\n\nexport const ZIndexField = () => {\n\treturn (\n\t\t<StylesField bind=\"z-index\" propDisplayName={ Z_INDEX_LABEL }>\n\t\t\t<StylesFieldLayout label={ Z_INDEX_LABEL }>\n\t\t\t\t<NumberControl />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { AspectRatioControl, type ExtendedOption, PositionControl, SizeControl } from '@elementor/editor-controls';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField, type StylesFieldProps } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { StyleTabCollapsibleContent } from '../../style-tab-collapsible-content';\nimport { ObjectFitField } from './object-fit-field';\nimport { OverflowField } from './overflow-field';\n\nconst CssSizeProps = [\n\t[\n\t\t{\n\t\t\tbind: 'width',\n\t\t\tlabel: __( 'Width', 'elementor' ),\n\t\t},\n\t\t{\n\t\t\tbind: 'height',\n\t\t\tlabel: __( 'Height', 'elementor' ),\n\t\t},\n\t],\n\t[\n\t\t{\n\t\t\tbind: 'min-width',\n\t\t\tlabel: __( 'Min width', 'elementor' ),\n\t\t},\n\t\t{\n\t\t\tbind: 'min-height',\n\t\t\tlabel: __( 'Min height', 'elementor' ),\n\t\t},\n\t],\n\t[\n\t\t{\n\t\t\tbind: 'max-width',\n\t\t\tlabel: __( 'Max width', 'elementor' ),\n\t\t},\n\t\t{\n\t\t\tbind: 'max-height',\n\t\t\tlabel: __( 'Max height', 'elementor' ),\n\t\t},\n\t],\n];\n\nconst ASPECT_RATIO_LABEL = __( 'Aspect Ratio', 'elementor' );\n\nexport const SizeSection = () => {\n\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t{ CssSizeProps.map( ( row, rowIndex ) => (\n\t\t\t\t<Grid key={ rowIndex } container gap={ 2 } flexWrap=\"nowrap\" ref={ gridRowRefs[ rowIndex ] }>\n\t\t\t\t\t{ row.map( ( props ) => (\n\t\t\t\t\t\t<Grid item xs={ 6 } key={ props.bind }>\n\t\t\t\t\t\t\t<SizeField { ...props } rowRef={ gridRowRefs[ rowIndex ] } extendedOptions={ [ 'auto' ] } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t) ) }\n\t\t\t\t</Grid>\n\t\t\t) ) }\n\t\t\t<PanelDivider />\n\t\t\t<Stack>\n\t\t\t\t<OverflowField />\n\t\t\t</Stack>\n\n\t\t\t<StyleTabCollapsibleContent fields={ [ 'aspect-ratio', 'object-fit' ] }>\n\t\t\t\t<Stack gap={ 2 } pt={ 2 }>\n\t\t\t\t\t<StylesField bind=\"aspect-ratio\" propDisplayName={ ASPECT_RATIO_LABEL }>\n\t\t\t\t\t\t<AspectRatioControl label={ ASPECT_RATIO_LABEL } />\n\t\t\t\t\t</StylesField>\n\t\t\t\t\t<PanelDivider />\n\t\t\t\t\t<ObjectFitField />\n\t\t\t\t\t<StylesField bind=\"object-position\" propDisplayName={ __( 'Object position', 'elementor' ) }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<PositionControl />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</StylesField>\n\t\t\t\t</Stack>\n\t\t\t</StyleTabCollapsibleContent>\n\t\t</SectionContent>\n\t);\n};\n\ntype ControlProps = {\n\tbind: StylesFieldProps[ 'bind' ];\n\tlabel: string;\n\trowRef: React.RefObject< HTMLDivElement >;\n\textendedOptions?: ExtendedOption[];\n};\n\nconst SizeField = ( { label, bind, rowRef, extendedOptions }: ControlProps ) => {\n\treturn (\n\t\t<StylesField bind={ bind } propDisplayName={ label }>\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<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<SizeControl extendedOptions={ extendedOptions } anchorRef={ rowRef } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\n\nimport { StylesInheritanceSectionIndicators } from '../styles-inheritance/components/styles-inheritance-section-indicators';\nimport { CollapsibleContent } from './collapsible-content';\ntype Props = PropsWithChildren< { fields?: string[] } >;\n\nexport const StyleTabCollapsibleContent = ( { fields = [], children }: Props ) => {\n\treturn <CollapsibleContent titleEnd={ getStylesInheritanceIndicators( fields ) }>{ children }</CollapsibleContent>;\n};\n\nexport function getStylesInheritanceIndicators( fields: string[] ) {\n\tif ( fields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn ( isOpen: boolean ) => ( ! isOpen ? <StylesInheritanceSectionIndicators fields={ fields } /> : null );\n}\n","import * as React from 'react';\nimport { type PropKey } from '@elementor/editor-props';\nimport { type StyleDefinitionVariant } from '@elementor/editor-styles';\nimport { isElementsStylesProvider } from '@elementor/editor-styles-repository';\nimport { Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CustomCssIndicator } from '../../components/custom-css-indicator';\nimport { StyleIndicator } from '../../components/style-indicator';\nimport { useStyle } from '../../contexts/style-context';\nimport { useStylesInheritanceSnapshot } from '../../contexts/styles-inheritance-context';\nimport { getStylesProviderThemeColor } from '../../utils/get-styles-provider-color';\nimport { type SnapshotPropValue } from '../types';\ntype Props = {\n\tfields: PropKey[];\n};\n\nexport const StylesInheritanceSectionIndicators = ( { fields }: Props ) => {\n\tconst { id, meta, provider } = useStyle();\n\tconst snapshot = useStylesInheritanceSnapshot();\n\n\tif ( fields.includes( 'custom_css' ) ) {\n\t\treturn <CustomCssIndicator />;\n\t}\n\n\tconst snapshotFields = Object.fromEntries(\n\t\tObject.entries( snapshot ?? {} ).filter( ( [ key ] ) => fields.includes( key as PropKey ) )\n\t);\n\n\tconst { hasValues, hasOverrides } = getIndicators( snapshotFields, id ?? '', meta );\n\n\tif ( ! hasValues && ! hasOverrides ) {\n\t\treturn null;\n\t}\n\n\tconst hasValueLabel = __( 'Has effective styles', 'elementor' );\n\tconst hasOverridesLabel = __( 'Has overridden styles', 'elementor' );\n\n\treturn (\n\t\t<Tooltip title={ __( 'Has styles', 'elementor' ) } placement=\"top\">\n\t\t\t<Stack direction=\"row\" sx={ { '& > *': { marginInlineStart: -0.25 } } } role=\"list\">\n\t\t\t\t{ hasValues && provider && (\n\t\t\t\t\t<StyleIndicator\n\t\t\t\t\t\tgetColor={ getStylesProviderThemeColor( provider.getKey() ) }\n\t\t\t\t\t\tdata-variant={ isElementsStylesProvider( provider.getKey() ) ? 'local' : 'global' }\n\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\taria-label={ hasValueLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ hasOverrides && (\n\t\t\t\t\t<StyleIndicator\n\t\t\t\t\t\tisOverridden\n\t\t\t\t\t\tdata-variant=\"overridden\"\n\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\taria-label={ hasOverridesLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Tooltip>\n\t);\n};\n\nfunction getIndicators(\n\tsnapshotFields: Record< PropKey, SnapshotPropValue[] >,\n\tstyleId: string,\n\tmeta: StyleDefinitionVariant[ 'meta' ]\n): { hasValues: boolean; hasOverrides: boolean } {\n\tlet hasValues = false;\n\tlet hasOverrides = false;\n\n\tObject.values( snapshotFields ).forEach( ( inheritanceChain ) => {\n\t\tconst currentStyle = getCurrentStyleFromChain( inheritanceChain, styleId, meta );\n\n\t\tif ( ! currentStyle ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ actualStyle ] = inheritanceChain;\n\n\t\tif ( currentStyle === actualStyle ) {\n\t\t\thasValues = true;\n\t\t} else {\n\t\t\thasOverrides = true;\n\t\t}\n\t} );\n\n\treturn { hasValues, hasOverrides };\n}\n\nfunction getCurrentStyleFromChain(\n\tchain: SnapshotPropValue[],\n\tstyleId: string,\n\tmeta: StyleDefinitionVariant[ 'meta' ]\n): SnapshotPropValue | undefined {\n\treturn chain.find(\n\t\t( {\n\t\t\tstyle: { id },\n\t\t\tvariant: {\n\t\t\t\tmeta: { breakpoint, state },\n\t\t\t},\n\t\t} ) => id === styleId && breakpoint === meta.breakpoint && state === meta.state\n\t);\n}\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst OBJECT_FIT_LABEL = __( 'Object fit', 'elementor' );\n\nconst positionOptions = [\n\t{ label: __( 'Fill', 'elementor' ), value: 'fill' },\n\t{ label: __( 'Cover', 'elementor' ), value: 'cover' },\n\t{ label: __( 'Contain', 'elementor' ), value: 'contain' },\n\t{ label: __( 'None', 'elementor' ), value: 'none' },\n\t{ label: __( 'Scale down', 'elementor' ), value: 'scale-down' },\n];\n\nexport const ObjectFitField = () => {\n\treturn (\n\t\t<StylesField bind=\"object-fit\" propDisplayName={ OBJECT_FIT_LABEL }>\n\t\t\t<StylesFieldLayout label={ OBJECT_FIT_LABEL }>\n\t\t\t\t<SelectControl options={ positionOptions } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { EyeIcon, EyeOffIcon, LetterAIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Overflows = 'visible' | 'hidden' | 'auto';\n\nconst OVERFLOW_LABEL = __( 'Overflow', 'elementor' );\n\nconst options: ToggleButtonGroupItem< Overflows >[] = [\n\t{\n\t\tvalue: 'visible',\n\t\tlabel: __( 'Visible', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'hidden',\n\t\tlabel: __( 'Hidden', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\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];\n\nexport const OverflowField = () => {\n\treturn (\n\t\t<StylesField bind=\"overflow\" propDisplayName={ OVERFLOW_LABEL }>\n\t\t\t<StylesFieldLayout label={ OVERFLOW_LABEL }>\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { LinkedDimensionsControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\n\nconst MARGIN_LABEL = __( 'Margin', 'elementor' );\nconst PADDING_LABEL = __( 'Padding', 'elementor' );\n\nexport const SpacingSection = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<StylesField bind={ 'margin' } propDisplayName={ MARGIN_LABEL }>\n\t\t\t\t<LinkedDimensionsControl\n\t\t\t\t\tlabel={ MARGIN_LABEL }\n\t\t\t\t\tisSiteRtl={ isSiteRtl }\n\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t/>\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind={ 'padding' } propDisplayName={ PADDING_LABEL }>\n\t\t\t\t<LinkedDimensionsControl label={ PADDING_LABEL } isSiteRtl={ isSiteRtl } />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\n\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { StyleTabCollapsibleContent } from '../../style-tab-collapsible-content';\nimport { ColumnCountField } from './column-count-field';\nimport { ColumnGapField } from './column-gap-field';\nimport { FontFamilyField } from './font-family-field';\nimport { FontSizeField } from './font-size-field';\nimport { FontStyleField } from './font-style-field';\nimport { FontWeightField } from './font-weight-field';\nimport { LetterSpacingField } from './letter-spacing-field';\nimport { LineHeightField } from './line-height-field';\nimport { TextAlignmentField } from './text-alignment-field';\nimport { TextColorField } from './text-color-field';\nimport { TextDecorationField } from './text-decoration-field';\nimport { TextDirectionField } from './text-direction-field';\nimport { TextStrokeField } from './text-stroke-field';\nimport { TransformField } from './transform-field';\nimport { WordSpacingField } from './word-spacing-field';\n\nexport const TypographySection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<FontFamilyField />\n\t\t\t<FontWeightField />\n\t\t\t<FontSizeField />\n\t\t\t<PanelDivider />\n\t\t\t<TextAlignmentField />\n\t\t\t<TextColorField />\n\t\t\t<StyleTabCollapsibleContent\n\t\t\t\tfields={ [\n\t\t\t\t\t'line-height',\n\t\t\t\t\t'letter-spacing',\n\t\t\t\t\t'word-spacing',\n\t\t\t\t\t'column-count',\n\t\t\t\t\t'text-decoration',\n\t\t\t\t\t'text-transform',\n\t\t\t\t\t'direction',\n\t\t\t\t\t'font-style',\n\t\t\t\t\t'stroke',\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t<SectionContent sx={ { pt: 2 } }>\n\t\t\t\t\t<LineHeightField />\n\t\t\t\t\t<LetterSpacingField />\n\t\t\t\t\t<WordSpacingField />\n\t\t\t\t\t<ColumnCountField />\n\t\t\t\t\t<ColumnGapField />\n\t\t\t\t\t<PanelDivider />\n\t\t\t\t\t<TextDecorationField />\n\t\t\t\t\t<TransformField />\n\t\t\t\t\t<TextDirectionField />\n\t\t\t\t\t<FontStyleField />\n\t\t\t\t\t<TextStrokeField />\n\t\t\t\t</SectionContent>\n\t\t\t</StyleTabCollapsibleContent>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { NumberControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst COLUMN_COUNT_LABEL = __( 'Columns', 'elementor' );\n\nexport const ColumnCountField = () => {\n\treturn (\n\t\t<StylesField bind=\"column-count\" propDisplayName={ COLUMN_COUNT_LABEL }>\n\t\t\t<StylesFieldLayout label={ COLUMN_COUNT_LABEL }>\n\t\t\t\t<NumberControl shouldForceInt min={ 0 } step={ 1 } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst COLUMN_GAP_LABEL = __( 'Column gap', 'elementor' );\n\nexport const ColumnGapField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"column-gap\" propDisplayName={ COLUMN_GAP_LABEL }>\n\t\t\t<StylesFieldLayout label={ COLUMN_GAP_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { FontFamilyControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { useSectionWidth } from '../../../contexts/section-context';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { useFontFamilies } from './hooks/use-font-families';\n\nconst FONT_FAMILY_LABEL = __( 'Font family', 'elementor' );\n\nexport const FontFamilyField = () => {\n\tconst fontFamilies = useFontFamilies();\n\tconst sectionWidth = useSectionWidth();\n\n\tif ( fontFamilies.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StylesField bind=\"font-family\" propDisplayName={ FONT_FAMILY_LABEL }>\n\t\t\t<StylesFieldLayout label={ FONT_FAMILY_LABEL }>\n\t\t\t\t<FontFamilyControl\n\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\tariaLabel={ FONT_FAMILY_LABEL }\n\t\t\t\t/>\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type FontCategory } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { getElementorConfig } from '../../../../sync/get-elementor-globals';\n\nconst supportedCategories: Record< string, string > = {\n\tsystem: __( 'System', 'elementor' ),\n\tcustom: __( 'Custom Fonts', 'elementor' ),\n\tgooglefonts: __( 'Google Fonts', 'elementor' ),\n};\n\nconst getFontFamilies = () => {\n\tconst { controls } = getElementorConfig();\n\n\tconst options = controls?.font?.options;\n\n\tif ( ! options ) {\n\t\treturn null;\n\t}\n\n\treturn options;\n};\n\nexport const useFontFamilies = () => {\n\tconst fontFamilies = getFontFamilies();\n\n\treturn useMemo( () => {\n\t\tconst categoriesOrder = [ 'system', 'custom', 'googlefonts' ];\n\n\t\treturn Object.entries( fontFamilies || {} )\n\t\t\t.reduce< FontCategory[] >( ( acc, [ font, category ] ) => {\n\t\t\t\tif ( ! supportedCategories[ category ] ) {\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tconst categoryIndex = categoriesOrder.indexOf( category );\n\n\t\t\t\tif ( ! acc[ categoryIndex ] ) {\n\t\t\t\t\tacc[ categoryIndex ] = {\n\t\t\t\t\t\tlabel: supportedCategories[ category ],\n\t\t\t\t\t\tfonts: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tacc[ categoryIndex ].fonts.push( font );\n\n\t\t\t\treturn acc;\n\t\t\t}, [] )\n\t\t\t.filter( Boolean );\n\t}, [ fontFamilies ] );\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst FONT_SIZE_LABEL = __( 'Font size', 'elementor' );\n\nexport const FontSizeField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"font-size\" propDisplayName={ FONT_SIZE_LABEL }>\n\t\t\t<StylesFieldLayout label={ FONT_SIZE_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } ariaLabel={ FONT_SIZE_LABEL } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ItalicIcon, MinusIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype FontStyle = 'normal' | 'italic';\n\nconst FONT_STYLE_LABEL = __( 'Font style', 'elementor' );\n\nconst options: ToggleButtonGroupItem< FontStyle >[] = [\n\t{\n\t\tvalue: 'normal',\n\t\tlabel: __( 'Normal', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'italic',\n\t\tlabel: __( 'Italic', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ItalicIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FontStyleField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-style\" propDisplayName={ FONT_STYLE_LABEL }>\n\t\t\t<StylesFieldLayout label={ FONT_STYLE_LABEL }>\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst FONT_WEIGHT_LABEL = __( 'Font weight', 'elementor' );\n\nconst fontWeightOptions = [\n\t{ value: '100', label: __( '100 - Thin', 'elementor' ) },\n\t{ value: '200', label: __( '200 - Extra light', 'elementor' ) },\n\t{ value: '300', label: __( '300 - Light', 'elementor' ) },\n\t{ value: '400', label: __( '400 - Normal', 'elementor' ) },\n\t{ value: '500', label: __( '500 - Medium', 'elementor' ) },\n\t{ value: '600', label: __( '600 - Semi bold', 'elementor' ) },\n\t{ value: '700', label: __( '700 - Bold', 'elementor' ) },\n\t{ value: '800', label: __( '800 - Extra bold', 'elementor' ) },\n\t{ value: '900', label: __( '900 - Black', 'elementor' ) },\n];\n\nexport const FontWeightField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-weight\" propDisplayName={ FONT_WEIGHT_LABEL }>\n\t\t\t<StylesFieldLayout label={ FONT_WEIGHT_LABEL }>\n\t\t\t\t<SelectControl options={ fontWeightOptions } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst LETTER_SPACING_LABEL = __( 'Letter spacing', 'elementor' );\n\nexport const LetterSpacingField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"letter-spacing\" propDisplayName={ LETTER_SPACING_LABEL }>\n\t\t\t<StylesFieldLayout label={ LETTER_SPACING_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } min={ -Number.MAX_SAFE_INTEGER } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst LINE_HEIGHT_LABEL = __( 'Line height', 'elementor' );\n\nexport const LineHeightField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"line-height\" propDisplayName={ LINE_HEIGHT_LABEL }>\n\t\t\t<StylesFieldLayout label={ LINE_HEIGHT_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Alignments = 'start' | 'center' | 'end' | 'justify';\n\nconst TEXT_ALIGNMENT_LABEL = __( 'Text align', 'elementor' );\n\nconst AlignStartIcon = withDirection( AlignLeftIcon );\nconst AlignEndIcon = withDirection( AlignRightIcon );\n\nconst options: ToggleButtonGroupItem< Alignments >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignStartIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignCenterIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignEndIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'justify',\n\t\tlabel: __( 'Justify', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignJustifiedIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TextAlignmentField = () => {\n\treturn (\n\t\t<StylesField bind=\"text-align\" propDisplayName={ TEXT_ALIGNMENT_LABEL }>\n\t\t\t<UiProviders>\n\t\t\t\t<StylesFieldLayout label={ TEXT_ALIGNMENT_LABEL }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</UiProviders>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ColorControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst TEXT_COLOR_LABEL = __( 'Text color', 'elementor' );\n\nexport const TextColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"color\" propDisplayName={ TEXT_COLOR_LABEL }>\n\t\t\t<StylesFieldLayout label={ TEXT_COLOR_LABEL }>\n\t\t\t\t<ColorControl id=\"text-color-control\" />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ToggleControl, type ToggleControlProps } from '@elementor/editor-controls';\nimport { MinusIcon, OverlineIcon, StrikethroughIcon, UnderlineIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Decoration = 'none' | 'underline' | 'line-through' | 'overline';\n\nconst TEXT_DECORATION_LABEL = __( 'Line decoration', 'elementor' );\n\nconst options: ToggleControlProps< Decoration >[ 'options' ] = [\n\t{\n\t\tvalue: 'none',\n\t\tlabel: __( 'None', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t\texclusive: true,\n\t},\n\t{\n\t\tvalue: 'underline',\n\t\tlabel: __( 'Underline', 'elementor' ),\n\t\trenderContent: ( { size } ) => <UnderlineIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'line-through',\n\t\tlabel: __( 'Line-through', 'elementor' ),\n\t\trenderContent: ( { size } ) => <StrikethroughIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'overline',\n\t\tlabel: __( 'Overline', 'elementor' ),\n\t\trenderContent: ( { size } ) => <OverlineIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\nexport const TextDecorationField = () => (\n\t<StylesField bind=\"text-decoration\" propDisplayName={ TEXT_DECORATION_LABEL }>\n\t\t<StylesFieldLayout label={ TEXT_DECORATION_LABEL }>\n\t\t\t<ToggleControl options={ options } exclusive={ false } />\n\t\t</StylesFieldLayout>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { TextDirectionLtrIcon, TextDirectionRtlIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst TEXT_DIRECTION_LABEL = __( 'Direction', 'elementor' );\n\nconst options: ToggleButtonGroupItem< Direction >[] = [\n\t{\n\t\tvalue: 'ltr',\n\t\tlabel: __( 'Left to right', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionLtrIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'rtl',\n\t\tlabel: __( 'Right to left', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionRtlIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TextDirectionField = () => {\n\treturn (\n\t\t<StylesField bind=\"direction\" propDisplayName={ TEXT_DIRECTION_LABEL }>\n\t\t\t<StylesFieldLayout label={ TEXT_DIRECTION_LABEL }>\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { StrokeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\nimport { ControlLabel } from '../../control-label';\n\nconst initTextStroke = {\n\t$$type: 'stroke',\n\tvalue: {\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: '#000000',\n\t\t},\n\t\twidth: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: {\n\t\t\t\tunit: 'px',\n\t\t\t\tsize: 1,\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst TEXT_STROKE_LABEL = __( 'Text stroke', 'elementor' );\n\nexport const TextStrokeField = () => {\n\tconst { value, setValue, canEdit } = useStylesField( 'stroke', {\n\t\thistory: { propDisplayName: TEXT_STROKE_LABEL },\n\t} );\n\n\tconst addTextStroke = () => {\n\t\tsetValue( initTextStroke );\n\t};\n\n\tconst removeTextStroke = () => {\n\t\tsetValue( null );\n\t};\n\n\tconst hasTextStroke = Boolean( value );\n\n\treturn (\n\t\t<StylesField bind={ 'stroke' } propDisplayName={ TEXT_STROKE_LABEL }>\n\t\t\t<AddOrRemoveContent\n\t\t\t\tisAdded={ hasTextStroke }\n\t\t\t\tonAdd={ addTextStroke }\n\t\t\t\tonRemove={ removeTextStroke }\n\t\t\t\tdisabled={ ! canEdit }\n\t\t\t\trenderLabel={ () => <ControlLabel>{ TEXT_STROKE_LABEL }</ControlLabel> }\n\t\t\t>\n\t\t\t\t<StrokeControl />\n\t\t\t</AddOrRemoveContent>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\n\nimport { SectionContent } from './section-content';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tisAdded: boolean;\n\tonAdd: () => void;\n\tonRemove: () => void;\n\tdisabled?: boolean;\n\trenderLabel: () => React.ReactNode;\n};\n\nexport const AddOrRemoveContent = ( {\n\tisAdded,\n\tonAdd,\n\tonRemove,\n\tchildren,\n\tdisabled,\n\trenderLabel,\n}: PropsWithChildren< Props > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tsx={ {\n\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tmarginInlineEnd: -0.75,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ renderLabel() }\n\t\t\t\t{ isAdded ? (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onRemove } aria-label=\"Remove\" disabled={ disabled }>\n\t\t\t\t\t\t<MinusIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) : (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onAdd } aria-label=\"Add\" disabled={ disabled }>\n\t\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t\t<Collapse in={ isAdded } unmountOnExit>\n\t\t\t\t<SectionContent>{ children }</SectionContent>\n\t\t\t</Collapse>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon, MinusIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Transforms = 'none' | 'capitalize' | 'uppercase' | 'lowercase';\n\nconst TEXT_TRANSFORM_LABEL = __( 'Text transform', 'elementor' );\n\nconst options: ToggleButtonGroupItem< Transforms >[] = [\n\t{\n\t\tvalue: 'none',\n\t\tlabel: __( 'None', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'capitalize',\n\t\tlabel: __( 'Capitalize', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'uppercase',\n\t\tlabel: __( 'Uppercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseUpperIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'lowercase',\n\t\tlabel: __( 'Lowercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseLowerIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TransformField = () => (\n\t<StylesField bind=\"text-transform\" propDisplayName={ TEXT_TRANSFORM_LABEL }>\n\t\t<StylesFieldLayout label={ TEXT_TRANSFORM_LABEL }>\n\t\t\t<ToggleControl options={ options } />\n\t\t</StylesFieldLayout>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst WORD_SPACING_LABEL = __( 'Word spacing', 'elementor' );\n\nexport const WordSpacingField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"word-spacing\" propDisplayName={ WORD_SPACING_LABEL }>\n\t\t\t<StylesFieldLayout label={ WORD_SPACING_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } min={ -Number.MAX_SAFE_INTEGER } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\n\nimport { useDefaultPanelSettings } from '../hooks/use-default-panel-settings';\nimport { Section } from './section';\nimport { getStylesInheritanceIndicators } from './style-tab-collapsible-content';\n\ntype SectionType = {\n\tcomponent: () => React.JSX.Element;\n\tname: string;\n\ttitle: string;\n};\n\ntype Props = { section: SectionType; fields?: string[]; unmountOnExit?: boolean };\n\nexport const StyleTabSection = ( { section, fields = [], unmountOnExit = true }: Props ) => {\n\tconst { component, name, title } = section;\n\tconst tabDefaults = useDefaultPanelSettings();\n\tconst SectionComponent = component;\n\tconst isExpanded = tabDefaults.defaultSectionsExpanded.style?.includes( name );\n\n\treturn (\n\t\t<Section\n\t\t\ttitle={ title }\n\t\t\tdefaultExpanded={ isExpanded }\n\t\t\ttitleEnd={ getStylesInheritanceIndicators( fields ) }\n\t\t\tunmountOnExit={ unmountOnExit }\n\t\t>\n\t\t\t<SectionComponent />\n\t\t</Section>\n\t);\n};\n","import * as React from 'react';\nimport { PopoverBody as BasePopoverBody } from '@elementor/editor-ui';\n\nimport { useSectionWidth } from '../contexts/section-context';\n\ntype Props = React.ComponentProps< typeof BasePopoverBody >;\n\nexport const PopoverBody = ( props: Props ) => {\n\tconst sectionWidth = useSectionWidth();\n\n\treturn <BasePopoverBody { ...props } width={ sectionWidth } />;\n};\n","import { injectIntoLogic } from '@elementor/editor';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\n\nimport { EditingPanelHooks } from './components/editing-panel-hooks';\nimport { registerElementControls } from './controls-registry/element-controls/registry';\nimport { init as initDynamics } from './dynamics/init';\nimport { panel } from './panel';\nimport { initResetStyleProps } from './reset-style-props';\nimport { init as initStylesInheritance } from './styles-inheritance/init';\nimport { isAtomicWidgetSelected } from './sync/is-atomic-widget-selected';\n\nexport function init() {\n\tregisterPanel( panel );\n\tblockV1Panel();\n\n\tinjectIntoLogic( {\n\t\tid: 'editing-panel-hooks',\n\t\tcomponent: EditingPanelHooks,\n\t} );\n\n\t// TODO: Move it from here once we have dynamic package.\n\tinitDynamics();\n\n\t// TODO: Move it from here once we have styles-inheritance package.\n\tinitStylesInheritance();\n\n\t// TODO: Move it from here once we have element-controls package.\n\tregisterElementControls();\n\n\tinitResetStyleProps();\n}\n\nconst blockV1Panel = () => {\n\tblockCommand( {\n\t\tcommand: 'panel/editor/open',\n\t\tcondition: isAtomicWidgetSelected,\n\t} );\n};\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, commandStartEvent } from '@elementor/editor-v1-adapters';\n\nimport { usePanelActions } from '../panel';\nimport { isAtomicWidgetSelected } from '../sync/is-atomic-widget-selected';\n\nexport const useOpenEditorPanel = () => {\n\tconst { open } = usePanelActions();\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'panel/editor/open' ), () => {\n\t\t\tif ( isAtomicWidgetSelected() ) {\n\t\t\t\topen();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import { __createPanel as createPanel } from '@elementor/editor-panels';\n\nimport { EditingPanel } from './components/editing-panel';\n\nexport const { panel, usePanelActions, usePanelStatus } = createPanel( {\n\tid: 'editing-panel',\n\tcomponent: EditingPanel,\n} );\n","import { getSelectedElements, getWidgetsCache } from '@elementor/editor-elements';\n\nexport const isAtomicWidgetSelected = () => {\n\tconst selectedElements = getSelectedElements();\n\tconst widgetCache = getWidgetsCache();\n\n\tif ( selectedElements.length !== 1 ) {\n\t\treturn false;\n\t}\n\n\t// Check if the selected element has atomic controls, meaning it's a V2 element.\n\treturn !! widgetCache?.[ selectedElements[ 0 ].type ]?.atomic_controls;\n};\n","import { useOpenEditorPanel } from '../hooks/use-open-editor-panel';\n\nexport const EditingPanelHooks = () => {\n\tuseOpenEditorPanel();\n\n\treturn null;\n};\n","import * as React from 'react';\nimport {\n\tControlFormLabel,\n\tRepeater,\n\ttype RepeaterItem,\n\ttype SetRepeaterValuesMeta,\n\tuseBoundProp,\n} from '@elementor/editor-controls';\nimport {\n\tgetElementEditorSettings,\n\tupdateElementEditorSettings,\n\tuseElementChildren,\n\tuseElementEditorSettings,\n} from '@elementor/editor-elements';\nimport { type CreateOptions, numberPropTypeUtil } from '@elementor/editor-props';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, Chip, Infotip, type InfotipProps, Stack, Switch, TextField, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../../contexts/element-context';\nimport { SettingsField } from '../../settings-field';\nimport { getElementByType } from '../get-element-by-type';\nimport { TAB_ELEMENT_TYPE, type TabItem, useActions } from './use-actions';\n\nconst TAB_MENU_ELEMENT_TYPE = 'e-tabs-menu';\nconst TAB_CONTENT_AREA_ELEMENT_TYPE = 'e-tabs-content-area';\nexport const TabsControl = ( { label }: { label: string } ) => {\n\treturn (\n\t\t<SettingsField bind=\"default-active-tab\" propDisplayName={ __( 'Tabs', 'elementor' ) }>\n\t\t\t<TabsControlContent label={ label } />\n\t\t</SettingsField>\n\t);\n};\n\nexport const TabsControlContent = ( { label }: { label: string } ) => {\n\tconst { element } = useElement();\n\tconst { addItem, duplicateItem, moveItem, removeItem } = useActions();\n\n\tconst { [ TAB_ELEMENT_TYPE ]: tabLinks } = useElementChildren( element.id, {\n\t\t[ TAB_MENU_ELEMENT_TYPE ]: TAB_ELEMENT_TYPE,\n\t} );\n\n\tconst tabList = getElementByType( element.id, TAB_MENU_ELEMENT_TYPE );\n\tconst tabContentArea = getElementByType( element.id, TAB_CONTENT_AREA_ELEMENT_TYPE );\n\n\tconst repeaterValues: RepeaterItem< TabItem >[] = tabLinks.map( ( tabLink, index ) => {\n\t\tconst { title: titleSetting } = getElementEditorSettings( tabLink.id ) ?? {};\n\n\t\treturn {\n\t\t\tid: tabLink.id,\n\t\t\ttitle: titleSetting,\n\t\t\tindex,\n\t\t};\n\t} );\n\n\tconst setValue = (\n\t\t_newValues: RepeaterItem< TabItem >[],\n\t\t_options: CreateOptions,\n\t\tmeta?: SetRepeaterValuesMeta< RepeaterItem< TabItem > >\n\t) => {\n\t\tif ( meta?.action?.type === 'add' ) {\n\t\t\tconst items = meta.action.payload;\n\n\t\t\treturn addItem( { tabContentAreaId: tabContentArea.id, items, tabsMenuId: tabList.id } );\n\t\t}\n\n\t\tif ( meta?.action?.type === 'remove' ) {\n\t\t\tconst items = meta.action.payload;\n\n\t\t\treturn removeItem( {\n\t\t\t\titems,\n\t\t\t\ttabContentAreaId: tabContentArea.id,\n\t\t\t} );\n\t\t}\n\n\t\tif ( meta?.action?.type === 'duplicate' ) {\n\t\t\tconst items = meta.action.payload;\n\n\t\t\treturn duplicateItem( { items, tabContentAreaId: tabContentArea.id } );\n\t\t}\n\n\t\tif ( meta?.action?.type === 'reorder' ) {\n\t\t\tconst { from, to } = meta.action.payload;\n\n\t\t\treturn moveItem( {\n\t\t\t\ttoIndex: to,\n\t\t\t\ttabsMenuId: tabList.id,\n\t\t\t\ttabContentAreaId: tabContentArea.id,\n\t\t\t\tmovedElementId: tabLinks[ from ].id,\n\t\t\t\tmovedElementIndex: from,\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Repeater\n\t\t\tshowToggle={ false }\n\t\t\tvalues={ repeaterValues }\n\t\t\tsetValues={ setValue }\n\t\t\tshowRemove={ repeaterValues.length > 1 }\n\t\t\tlabel={ label }\n\t\t\titemSettings={ {\n\t\t\t\tgetId: ( { item } ) => item.id,\n\t\t\t\tinitialValues: { id: '', title: 'Tab' },\n\t\t\t\tLabel: ItemLabel,\n\t\t\t\tContent: ItemContent,\n\t\t\t\tIcon: () => null,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ItemLabel = ( { value, index }: { value: TabItem; index: number } ) => {\n\tconst id = value.id ?? '';\n\n\tconst editorSettings = useElementEditorSettings( id );\n\n\tconst elementTitle = editorSettings?.title;\n\n\treturn (\n\t\t<Stack sx={ { minHeight: 20 } } direction=\"row\" alignItems=\"center\" gap={ 1.5 }>\n\t\t\t<span>{ elementTitle }</span>\n\t\t\t<ItemDefaultTab index={ index } />\n\t\t</Stack>\n\t);\n};\n\nconst ItemDefaultTab = ( { index }: { index: number } ) => {\n\tconst { value: defaultItem } = useBoundProp( numberPropTypeUtil );\n\n\tconst isDefault = defaultItem === index;\n\n\tif ( ! isDefault ) {\n\t\treturn null;\n\t}\n\n\treturn <Chip size=\"tiny\" shape=\"rounded\" label={ __( 'Default', 'elementor' ) } />;\n};\n\nconst ItemContent = ( { value, index }: { value: TabItem; index: number } ) => {\n\tif ( ! value.id ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Stack p={ 2 } gap={ 1.5 }>\n\t\t\t<TabLabelControl elementId={ value.id } />\n\t\t\t<SettingsField bind=\"default-active-tab\" propDisplayName={ __( 'Tabs', 'elementor' ) }>\n\t\t\t\t<DefaultTabControl tabIndex={ index } />\n\t\t\t</SettingsField>\n\t\t</Stack>\n\t);\n};\n\nconst DefaultTabControl = ( { tabIndex }: { tabIndex: number } ) => {\n\tconst { value, setValue } = useBoundProp( numberPropTypeUtil );\n\n\tconst isDefault = value === tabIndex;\n\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={ 2 }>\n\t\t\t<ControlFormLabel>{ __( 'Set as default tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t<ConditionalTooltip showTooltip={ isDefault } placement=\"right\">\n\t\t\t\t<Switch\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tchecked={ isDefault }\n\t\t\t\t\tdisabled={ isDefault }\n\t\t\t\t\tonChange={ ( { target }: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\t\tsetValue( target.checked ? tabIndex : null );\n\t\t\t\t\t} }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( isDefault ? { style: { opacity: 0, cursor: 'not-allowed' } } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ConditionalTooltip>\n\t\t</Stack>\n\t);\n};\n\nconst TabLabelControl = ( { elementId }: { elementId: string } ) => {\n\tconst editorSettings = useElementEditorSettings( elementId );\n\n\tconst label = editorSettings?.title ?? '';\n\n\treturn (\n\t\t<Stack gap={ 1 }>\n\t\t\t<ControlFormLabel>{ __( 'Tab name', 'elementor' ) }</ControlFormLabel>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tvalue={ label }\n\t\t\t\tonChange={ ( { target }: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\tupdateElementEditorSettings( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tsettings: { title: target.value },\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\nexport const ConditionalTooltip = ( {\n\tshowTooltip,\n\tchildren,\n}: Omit< InfotipProps, 'content' > & { showTooltip: boolean } ) => {\n\tif ( ! showTooltip ) {\n\t\treturn children;\n\t}\n\n\treturn (\n\t\t<Infotip\n\t\t\tarrow={ false }\n\t\t\tcontent={\n\t\t\t\t<Alert\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\ticon={ <InfoCircleFilledIcon fontSize=\"tiny\" /> }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={ { width: 288 } }\n\t\t\t\t>\n\t\t\t\t\t<Typography variant=\"body2\">\n\t\t\t\t\t\t{ __( 'To change the default tab, simply set another tab as default.', 'elementor' ) }\n\t\t\t\t\t</Typography>\n\t\t\t\t</Alert>\n\t\t\t}\n\t\t>\n\t\t\t<span>{ children }</span>\n\t\t</Infotip>\n\t);\n};\n","import { getContainer } from '@elementor/editor-elements';\n\nexport const getElementByType = ( elementId: string, type: string ) => {\n\tconst currentElement = getContainer( elementId );\n\n\tif ( ! currentElement ) {\n\t\tthrow new Error( `Current element not found, elementId: ${ elementId }` );\n\t}\n\n\tif ( currentElement.model.get( 'elType' ) === type ) {\n\t\treturn currentElement;\n\t}\n\n\tconst element = currentElement.children?.findRecursive?.( ( child ) => child.model.get( 'elType' ) === type );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Child element ${ type } not found` );\n\t}\n\n\treturn element;\n};\n","import { type ItemsActionPayload, useBoundProp } from '@elementor/editor-controls';\nimport {\n\tcreateElements,\n\tduplicateElements,\n\tgetContainer,\n\tmoveElements,\n\tremoveElements,\n} from '@elementor/editor-elements';\nimport { numberPropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type TabItem = {\n\tid: string;\n\ttitle?: string;\n};\n\nexport const TAB_ELEMENT_TYPE = 'e-tab';\nexport const TAB_CONTENT_ELEMENT_TYPE = 'e-tab-content';\n\nexport const useActions = () => {\n\tconst { value, setValue: setDefaultActiveTab } = useBoundProp( numberPropTypeUtil );\n\tconst defaultActiveTab = value ?? 0;\n\n\tconst duplicateItem = ( {\n\t\titems,\n\t\ttabContentAreaId,\n\t}: {\n\t\titems: ItemsActionPayload< TabItem >;\n\t\ttabContentAreaId: string;\n\t} ) => {\n\t\tconst newDefault = calculateDefaultOnDuplicate( {\n\t\t\titems,\n\t\t\tdefaultActiveTab,\n\t\t} );\n\n\t\titems.forEach( ( { item, index } ) => {\n\t\t\tconst tabId = item.id as string;\n\t\t\tconst tabContentAreaContainer = getContainer( tabContentAreaId );\n\t\t\tconst tabContentId = tabContentAreaContainer?.children?.[ index ]?.id;\n\n\t\t\tif ( ! tabContentId ) {\n\t\t\t\tthrow new Error( 'Original content ID is required for duplication' );\n\t\t\t}\n\n\t\t\tduplicateElements( {\n\t\t\t\telementIds: [ tabId, tabContentId ],\n\t\t\t\ttitle: __( 'Duplicate Tab', 'elementor' ),\n\t\t\t\tonDuplicateElements: () => {\n\t\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\t\tsetDefaultActiveTab( newDefault, {}, { withHistory: false } );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonRestoreElements: () => {\n\t\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\t\tsetDefaultActiveTab( defaultActiveTab, {}, { withHistory: false } );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t} );\n\t\t} );\n\t};\n\n\tconst moveItem = ( {\n\t\ttoIndex,\n\t\ttabsMenuId,\n\t\ttabContentAreaId,\n\t\tmovedElementId,\n\t\tmovedElementIndex,\n\t}: {\n\t\ttoIndex: number;\n\t\ttabsMenuId: string;\n\t\ttabContentAreaId: string;\n\t\tmovedElementId: string;\n\t\tmovedElementIndex: number;\n\t} ) => {\n\t\tconst tabContentContainer = getContainer( tabContentAreaId );\n\t\tconst tabContentId = tabContentContainer?.children?.[ movedElementIndex ]?.id;\n\n\t\tif ( ! tabContentId ) {\n\t\t\tthrow new Error( 'Content ID is required' );\n\t\t}\n\n\t\tconst newDefault = calculateDefaultOnMove( {\n\t\t\tfrom: movedElementIndex,\n\t\t\tto: toIndex,\n\t\t\tdefaultActiveTab,\n\t\t} );\n\n\t\tmoveElements( {\n\t\t\ttitle: __( 'Reorder Tabs', 'elementor' ),\n\t\t\tmoves: [\n\t\t\t\t{\n\t\t\t\t\telementId: movedElementId,\n\t\t\t\t\ttargetContainerId: tabsMenuId,\n\t\t\t\t\toptions: { at: toIndex },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\telementId: tabContentId,\n\t\t\t\t\ttargetContainerId: tabContentAreaId,\n\t\t\t\t\toptions: { at: toIndex },\n\t\t\t\t},\n\t\t\t],\n\t\t\tonMoveElements: () => {\n\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\tsetDefaultActiveTab( newDefault, {}, { withHistory: false } );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonRestoreElements: () => {\n\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\tsetDefaultActiveTab( defaultActiveTab, {}, { withHistory: false } );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst removeItem = ( {\n\t\titems,\n\t\ttabContentAreaId,\n\t}: {\n\t\titems: ItemsActionPayload< TabItem >;\n\t\ttabContentAreaId: string;\n\t} ) => {\n\t\tconst newDefault = calculateDefaultOnRemove( {\n\t\t\titems,\n\t\t\tdefaultActiveTab,\n\t\t} );\n\n\t\tremoveElements( {\n\t\t\ttitle: __( 'Tabs', 'elementor' ),\n\t\t\telementIds: items.flatMap( ( { item, index } ) => {\n\t\t\t\tconst tabId = item.id as string;\n\t\t\t\tconst tabContentContainer = getContainer( tabContentAreaId );\n\t\t\t\tconst tabContentId = tabContentContainer?.children?.[ index ]?.id;\n\n\t\t\t\tif ( ! tabContentId ) {\n\t\t\t\t\tthrow new Error( 'Content ID is required' );\n\t\t\t\t}\n\n\t\t\t\treturn [ tabId, tabContentId ];\n\t\t\t} ),\n\t\t\tonRemoveElements: () => {\n\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\tsetDefaultActiveTab( newDefault, {}, { withHistory: false } );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonRestoreElements: () => {\n\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\tsetDefaultActiveTab( defaultActiveTab, {}, { withHistory: false } );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst addItem = ( {\n\t\ttabContentAreaId,\n\t\ttabsMenuId,\n\t\titems,\n\t}: {\n\t\ttabContentAreaId: string;\n\t\ttabsMenuId: string;\n\t\titems: ItemsActionPayload< TabItem >;\n\t} ) => {\n\t\titems.forEach( ( { index } ) => {\n\t\t\tconst position = index + 1;\n\n\t\t\tcreateElements( {\n\t\t\t\ttitle: __( 'Tabs', 'elementor' ),\n\t\t\t\telements: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcontainerId: tabContentAreaId,\n\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\telType: TAB_CONTENT_ELEMENT_TYPE,\n\t\t\t\t\t\t\teditor_settings: { title: `Tab ${ position } content`, initial_position: position },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcontainerId: tabsMenuId,\n\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\telType: TAB_ELEMENT_TYPE,\n\t\t\t\t\t\t\teditor_settings: { title: `Tab ${ position } trigger`, initial_position: position },\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} );\n\t};\n\n\treturn {\n\t\tduplicateItem,\n\t\tmoveItem,\n\t\tremoveItem,\n\t\taddItem,\n\t};\n};\n\nconst calculateDefaultOnMove = ( {\n\tfrom,\n\tto,\n\tdefaultActiveTab,\n}: {\n\tfrom: number;\n\tto: number;\n\tdefaultActiveTab: number;\n} ) => {\n\tif ( from === defaultActiveTab ) {\n\t\treturn to;\n\t}\n\n\tif ( from < defaultActiveTab && to >= defaultActiveTab ) {\n\t\treturn defaultActiveTab - 1;\n\t}\n\n\tif ( from > defaultActiveTab && to <= defaultActiveTab ) {\n\t\treturn defaultActiveTab + 1;\n\t}\n\n\treturn defaultActiveTab;\n};\n\nconst calculateDefaultOnRemove = ( {\n\titems,\n\tdefaultActiveTab,\n}: {\n\titems: ItemsActionPayload< TabItem >;\n\tdefaultActiveTab: number;\n} ) => {\n\tconst isDefault = items.some( ( { index } ) => index === defaultActiveTab );\n\n\tif ( isDefault ) {\n\t\treturn 0;\n\t}\n\n\tconst defaultGap = items.reduce( ( acc, { index } ) => ( index < defaultActiveTab ? acc + 1 : acc ), 0 );\n\treturn defaultActiveTab - defaultGap;\n};\n\nconst calculateDefaultOnDuplicate = ( {\n\titems,\n\tdefaultActiveTab,\n}: {\n\titems: ItemsActionPayload< TabItem >;\n\tdefaultActiveTab: number;\n} ) => {\n\tconst duplicatesBefore = items.reduce( ( acc, { index } ) => {\n\t\tconst isDuplicatedBeforeDefault = index < defaultActiveTab;\n\t\treturn isDuplicatedBeforeDefault ? acc + 1 : acc;\n\t}, 0 );\n\treturn defaultActiveTab + duplicatesBefore;\n};\n","import { type ControlComponent } from '@elementor/editor-controls';\n\nimport { type ControlRegistry, controlsRegistry } from '../controls-registry';\nimport { TabsControl } from './tabs-control/tabs-control';\n\nconst controlTypes = {\n\ttabs: { component: TabsControl as ControlComponent, layout: 'full' },\n} as const satisfies ControlRegistry;\n\nexport const registerElementControls = () => {\n\tObject.entries< ( typeof controlTypes )[ keyof typeof controlTypes ] >( controlTypes ).forEach(\n\t\t( [ type, { component, layout } ] ) => {\n\t\t\tcontrolsRegistry.register( type, component, layout );\n\t\t}\n\t);\n};\n","import { settingsTransformersRegistry, styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { injectIntoRepeaterItemIcon, injectIntoRepeaterItemLabel } from '@elementor/editor-controls';\nimport { type BackgroundOverlayPropType, type PropValue } from '@elementor/editor-props';\nimport { type InjectedComponent } from '@elementor/locations';\n\nimport { registerControlReplacement } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport {\n\tBackgroundControlDynamicTagIcon,\n\tBackgroundControlDynamicTagLabel,\n} from './components/background-control-dynamic-tag';\nimport { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { dynamicTransformer } from './dynamic-transformer';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { isDynamicPropValue } from './utils';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport const init = () => {\n\tregisterControlReplacement( {\n\t\tcomponent: DynamicSelectionControl,\n\t\tcondition: ( { value } ) => isDynamicPropValue( value ),\n\t} );\n\n\tinjectIntoRepeaterItemLabel( {\n\t\tid: 'dynamic-background-image',\n\t\tcondition: ( { value } ) =>\n\t\t\tisDynamicPropValue( ( value as BackgroundOverlayPropType ).value?.image?.value?.src ),\n\t\tcomponent: BackgroundControlDynamicTagLabel as InjectedComponent< { value: PropValue } >,\n\t} );\n\n\tinjectIntoRepeaterItemIcon( {\n\t\tid: 'dynamic-background-image',\n\t\tcondition: ( { value } ) =>\n\t\t\tisDynamicPropValue( ( value as BackgroundOverlayPropType ).value?.image?.value?.src ),\n\t\tcomponent: BackgroundControlDynamicTagIcon,\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'dynamic-tags',\n\t\tuseProps: usePropDynamicAction,\n\t} );\n\n\tstyleTransformersRegistry.register( 'dynamic', dynamicTransformer );\n\tsettingsTransformersRegistry.register( 'dynamic', dynamicTransformer );\n};\n","import * as React from 'react';\nimport { PropKeyProvider, PropProvider, useBoundProp } from '@elementor/editor-controls';\nimport {\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayImagePropType,\n\ttype BackgroundOverlayPropType,\n\ttype ObjectPropType,\n\ttype UnionPropType,\n} from '@elementor/editor-props';\nimport { DatabaseIcon } from '@elementor/icons';\n\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\n\n// Since this is injected, the initial prop provider does not dig into the nested structure of the value.\n// We need to synthetically create a type that matches the expected structure of the value.\n\nexport const BackgroundControlDynamicTagIcon = () => <DatabaseIcon fontSize=\"tiny\" />;\n\nexport const BackgroundControlDynamicTagLabel = ( { value }: { value: BackgroundOverlayPropType } ) => {\n\tconst context = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...context } value={ value.value }>\n\t\t\t<PropKeyProvider bind=\"image\">\n\t\t\t\t<Wrapper rawValue={ value.value } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst Wrapper = ( { rawValue }: { rawValue: BackgroundOverlayPropType[ 'value' ] } ) => {\n\tconst { propType } = useBoundProp< BackgroundOverlayPropType, UnionPropType >();\n\n\tconst imageOverlayPropType = propType.prop_types[ 'background-image-overlay' ] as ObjectPropType;\n\treturn (\n\t\t<PropProvider propType={ imageOverlayPropType.shape.image } value={ rawValue } setValue={ () => void 0 }>\n\t\t\t<PropKeyProvider bind=\"src\">\n\t\t\t\t<Content rawValue={ rawValue.image } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst Content = ( { rawValue }: { rawValue: BackgroundOverlayImagePropType } ) => {\n\tconst src = rawValue.value.src;\n\tconst dynamicTag = useDynamicTag( src.value.name || '' );\n\treturn <React.Fragment>{ dynamicTag?.label }</React.Fragment>;\n};\n","import { useMemo } from 'react';\n\nimport { type DynamicTag } from '../types';\nimport { usePropDynamicTags } from './use-prop-dynamic-tags';\n\nexport const useDynamicTag = ( tagName: string ): DynamicTag | null => {\n\tconst dynamicTags = usePropDynamicTags();\n\n\treturn useMemo( () => dynamicTags.find( ( tag ) => tag.name === tagName ) ?? null, [ dynamicTags, tagName ] );\n};\n","import { useMemo } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\n\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { type DynamicTag } from '../types';\nimport { getDynamicPropType } from '../utils';\n\nexport const usePropDynamicTags = () => {\n\tlet categories: string[] = [];\n\n\tconst { propType } = useBoundProp();\n\n\tif ( propType ) {\n\t\tconst propDynamicType = getDynamicPropType( propType );\n\n\t\tcategories = propDynamicType?.settings.categories || [];\n\t}\n\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\treturn useMemo( () => getDynamicTagsByCategories( categories ), [ categories.join() ] );\n};\n\nconst getDynamicTagsByCategories = ( categories: string[] ) => {\n\tconst { tags, groups } = getAtomicDynamicTags() || {};\n\n\tif ( ! categories.length || ! tags || ! groups ) {\n\t\treturn [];\n\t}\n\n\tconst _categories = new Set( categories );\n\n\tconst dynamicTags: DynamicTag[] = [];\n\tconst groupedFilteredTags: Record< string, DynamicTag[] > = {};\n\n\tfor ( const tag of Object.values( tags ) ) {\n\t\tif ( ! tag.categories.some( ( category ) => _categories.has( category ) ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( ! groupedFilteredTags[ tag.group ] ) {\n\t\t\tgroupedFilteredTags[ tag.group ] = [];\n\t\t}\n\t\tgroupedFilteredTags[ tag.group ].push( tag );\n\t}\n\n\tfor ( const group in groups ) {\n\t\tif ( groupedFilteredTags[ group ] ) {\n\t\t\tdynamicTags.push( ...groupedFilteredTags[ group ] );\n\t\t}\n\t}\n\n\treturn dynamicTags;\n};\n","import { type ExtendedWindow } from '../types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import { getElementorConfig } from './get-elementor-config';\n\nexport const getAtomicDynamicTags = () => {\n\tconst { atomicDynamicTags } = getElementorConfig();\n\n\tif ( ! atomicDynamicTags ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\ttags: atomicDynamicTags.tags,\n\t\tgroups: atomicDynamicTags.groups,\n\t};\n};\n","import {\n\tcreatePropUtils,\n\tisTransformable,\n\ttype PropType,\n\ttype PropValue,\n\ttype TransformablePropType,\n} from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { type DynamicPropType } from './types';\n\nconst DYNAMIC_PROP_TYPE_KEY = 'dynamic';\n\nconst isDynamicPropType = ( prop: TransformablePropType ): prop is DynamicPropType =>\n\tprop.key === DYNAMIC_PROP_TYPE_KEY;\n\nexport const getDynamicPropType = ( propType: PropType ): DynamicPropType | null => {\n\tconst dynamicPropType = propType.kind === 'union' && propType.prop_types[ DYNAMIC_PROP_TYPE_KEY ];\n\n\treturn dynamicPropType && isDynamicPropType( dynamicPropType ) ? dynamicPropType : null;\n};\n\nexport const isDynamicPropValue = ( prop: PropValue ): prop is DynamicPropValue => {\n\treturn isTransformable( prop ) && prop.$$type === DYNAMIC_PROP_TYPE_KEY;\n};\n\nexport const supportsDynamic = ( propType: PropType ): boolean => {\n\treturn !! getDynamicPropType( propType );\n};\n\nexport const dynamicPropTypeUtil = createPropUtils(\n\tDYNAMIC_PROP_TYPE_KEY,\n\tz.strictObject( {\n\t\tname: z.string(),\n\t\tgroup: z.string(),\n\t\tsettings: z.any().optional(),\n\t} )\n);\n\nexport type DynamicPropValue = z.infer< typeof dynamicPropTypeUtil.schema >;\n","import * as React from 'react';\nimport { ControlFormLabel, useBoundProp } from '@elementor/editor-controls';\nimport type { Control, ControlLayout, ControlsSection } from '@elementor/editor-elements';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { DatabaseIcon, SettingsIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tDivider,\n\tGrid,\n\tIconButton,\n\tPopover,\n\tStack,\n\tTab,\n\tTabPanel,\n\tTabs,\n\tUnstableTag as Tag,\n\tusePopupState,\n\tuseTabs,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverBody } from '../../components/popover-body';\nimport { Control as BaseControl } from '../../controls-registry/control';\nimport { controlsRegistry, type ControlType } from '../../controls-registry/controls-registry';\nimport { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';\nimport { DynamicControl } from '../dynamic-control';\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\nimport { type DynamicTag } from '../types';\nimport { dynamicPropTypeUtil } from '../utils';\nimport { DynamicSelection } from './dynamic-selection';\n\nconst SIZE = 'tiny';\n\nconst tagsWithoutTabs = [ 'popup' ];\n\nexport const DynamicSelectionControl = () => {\n\tconst { setValue: setAnyValue } = useBoundProp();\n\tconst { bind, value } = useBoundProp( dynamicPropTypeUtil );\n\n\tconst [ propValueFromHistory ] = usePersistDynamicValue( bind );\n\tconst selectionPopoverState = usePopupState( { variant: 'popover' } );\n\n\tconst { name: tagName = '' } = value;\n\n\tconst dynamicTag = useDynamicTag( tagName );\n\n\tconst removeDynamicTag = () => {\n\t\tsetAnyValue( propValueFromHistory ?? null );\n\t};\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ tagName } not found` );\n\t}\n\n\treturn (\n\t\t<Box>\n\t\t\t<Tag\n\t\t\t\tfullWidth\n\t\t\t\tshowActionsOnHover\n\t\t\t\tlabel={ dynamicTag.label }\n\t\t\t\tstartIcon={ <DatabaseIcon fontSize={ SIZE } /> }\n\t\t\t\t{ ...bindTrigger( selectionPopoverState ) }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DynamicSettingsPopover dynamicTag={ dynamicTag } />\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ removeDynamicTag }\n\t\t\t\t\t\t\taria-label={ __( 'Remove dynamic value', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( selectionPopoverState ) }\n\t\t\t>\n\t\t\t\t<PopoverBody aria-label={ __( 'Dynamic tags', 'elementor' ) }>\n\t\t\t\t\t<DynamicSelection close={ selectionPopoverState.close } />\n\t\t\t\t</PopoverBody>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n\nexport const DynamicSettingsPopover = ( { dynamicTag }: { dynamicTag: DynamicTag } ) => {\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\tconst hasDynamicSettings = !! dynamicTag.atomic_controls.length;\n\n\tif ( ! hasDynamicSettings ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\taria-label={ __( 'Dynamic settings', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<SettingsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<PopoverBody aria-label={ __( 'Dynamic settings', 'elementor' ) }>\n\t\t\t\t\t<PopoverHeader\n\t\t\t\t\t\ttitle={ dynamicTag.label }\n\t\t\t\t\t\tonClose={ popupState.close }\n\t\t\t\t\t\ticon={ <DatabaseIcon fontSize={ SIZE } /> }\n\t\t\t\t\t/>\n\t\t\t\t\t<DynamicSettings controls={ dynamicTag.atomic_controls } tagName={ dynamicTag.name } />\n\t\t\t\t</PopoverBody>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n\nconst DynamicSettings = ( { controls, tagName }: { controls: DynamicTag[ 'atomic_controls' ]; tagName: string } ) => {\n\tconst tabs = controls.filter( ( { type } ) => type === 'section' ) as ControlsSection[];\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< number >( 0 );\n\n\tif ( ! tabs.length ) {\n\t\t// Dynamic must have hierarchical controls.\n\t\treturn null;\n\t}\n\n\tif ( tagsWithoutTabs.includes( tagName ) ) {\n\t\tconst singleTab = tabs[ 0 ];\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Divider />\n\t\t\t\t<ControlsItemsStack items={ singleTab.value.items } />\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ tabs.length > 1 && (\n\t\t\t\t<Tabs size=\"small\" variant=\"fullWidth\" { ...getTabsProps() }>\n\t\t\t\t\t{ tabs.map( ( { value }, index ) => (\n\t\t\t\t\t\t<Tab\n\t\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\tsx={ { px: 1, py: 0.5 } }\n\t\t\t\t\t\t\t{ ...getTabProps( index ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Tabs>\n\t\t\t) }\n\t\t\t<Divider />\n\t\t\t{ tabs.map( ( { value }, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TabPanel\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tsx={ { flexGrow: 1, py: 0, overflowY: 'auto' } }\n\t\t\t\t\t\t{ ...getTabPanelProps( index ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ControlsItemsStack items={ value.items } />\n\t\t\t\t\t</TabPanel>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n};\n\nconst LAYOUT_OVERRIDE_FIELDS = {\n\tseparator: 'two-columns',\n\taction: 'full',\n\toff_canvas: 'full',\n\ttype: 'two-columns',\n} as const;\n\nconst DYNAMIC_TAG_LAYOUT_OVERRIDES = {\n\tselect: 'full',\n} as const;\n\nconst getLayout = ( control: Control[ 'value' ] ): ControlLayout => {\n\tconst dynamicOverride = DYNAMIC_TAG_LAYOUT_OVERRIDES[ control.type as keyof typeof DYNAMIC_TAG_LAYOUT_OVERRIDES ];\n\tif ( dynamicOverride ) {\n\t\treturn dynamicOverride;\n\t}\n\n\treturn (\n\t\tLAYOUT_OVERRIDE_FIELDS[ control.bind as keyof typeof LAYOUT_OVERRIDE_FIELDS ] ??\n\t\tcontrolsRegistry.getLayout( control.type as ControlType )\n\t);\n};\n\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! controlsRegistry.get( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\tconst layout = getLayout( control );\n\n\tconst shouldDisablePortal = control.type === 'select';\n\tconst baseControlProps = shouldDisablePortal\n\t\t? {\n\t\t\t\t...control.props,\n\t\t\t\tMenuProps: {\n\t\t\t\t\t...( control.props?.MenuProps ?? {} ),\n\t\t\t\t\tdisablePortal: true,\n\t\t\t\t},\n\t\t }\n\t\t: { ...control.props };\n\tconst controlProps = {\n\t\t...baseControlProps,\n\t\tariaLabel: control.label,\n\t} as typeof baseControlProps & { ariaLabel?: string };\n\tconst isSwitchControl = control.type === 'switch';\n\tconst layoutStyleProps =\n\t\tlayout === 'two-columns'\n\t\t\t? {\n\t\t\t\t\tdisplay: 'grid',\n\t\t\t\t\tgridTemplateColumns: isSwitchControl ? 'minmax(0, 1fr) max-content' : '1fr 1fr',\n\t\t\t }\n\t\t\t: {};\n\n\treturn (\n\t\t<DynamicControl bind={ control.bind }>\n\t\t\t<Grid container gap={ 0.75 } sx={ layoutStyleProps }>\n\t\t\t\t{ control.label ? (\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t) : null }\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<BaseControl type={ control.type as ControlType } props={ controlProps } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</DynamicControl>\n\t);\n};\n\nfunction ControlsItemsStack( { items }: { items: ControlsSection[ 'value' ][ 'items' ] } ) {\n\treturn (\n\t\t<Stack p={ 2 } gap={ 2 } sx={ { overflowY: 'auto' } }>\n\t\t\t{ items.map( ( item ) =>\n\t\t\t\titem.type === 'control' ? <Control key={ item.value.bind } control={ item.value } /> : null\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n","import { type PropValue } from '@elementor/editor-props';\nimport { useSessionStorage } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\nimport { type DynamicPropValue } from '../dynamics/types';\n\nexport const usePersistDynamicValue = < T extends DynamicPropValue | PropValue >( propKey: string ) => {\n\tconst { element } = useElement();\n\tconst prefixedKey = `dynamic/non-dynamic-values-history/${ element.id }/${ propKey }`;\n\treturn useSessionStorage< T >( prefixedKey );\n};\n","import * as React from 'react';\nimport { PropKeyProvider, PropProvider, type SetValue, useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { createTopLevelObjectType } from '../controls-registry/create-top-level-object-type';\nimport { DynamicConditionalControl } from './components/dynamic-conditional-control';\nimport { useDynamicTag } from './hooks/use-dynamic-tag';\nimport { dynamicPropTypeUtil, type DynamicPropValue } from './utils';\n\ntype DynamicControlProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const DynamicControl = ( { bind, children }: DynamicControlProps ) => {\n\tconst { value, setValue } = useBoundProp( dynamicPropTypeUtil );\n\tconst { name = '', group = '', settings } = value ?? {};\n\n\tconst dynamicTag = useDynamicTag( name );\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ name } not found` );\n\t}\n\n\tconst dynamicPropType = dynamicTag.props_schema[ bind ];\n\n\tconst defaultValue = dynamicPropType?.default;\n\tconst dynamicValue = settings?.[ bind ] ?? defaultValue;\n\n\tconst setDynamicValue: SetValue< Record< string, DynamicPropValue > > = ( newValues ) => {\n\t\tsetValue( {\n\t\t\tname,\n\t\t\tgroup,\n\t\t\tsettings: {\n\t\t\t\t...settings,\n\t\t\t\t...newValues,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst propType = createTopLevelObjectType( { schema: dynamicTag.props_schema } );\n\n\treturn (\n\t\t<PropProvider propType={ propType } setValue={ setDynamicValue } value={ { [ bind ]: dynamicValue } }>\n\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t<DynamicConditionalControl\n\t\t\t\t\tpropType={ dynamicPropType }\n\t\t\t\t\tpropsSchema={ dynamicTag.props_schema }\n\t\t\t\t\tdynamicSettings={ settings }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DynamicConditionalControl>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { isDependencyMet, type PropsSchema, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { type DynamicPropValue } from '../utils';\n\ntype DynamicConditionalControlProps = React.PropsWithChildren< {\n\tpropType?: PropType;\n\tpropsSchema?: PropsSchema;\n\tdynamicSettings?: Record< string, DynamicPropValue >;\n} >;\n\nexport const DynamicConditionalControl: React.FC< DynamicConditionalControlProps > = ( {\n\tchildren,\n\tpropType,\n\tpropsSchema,\n\tdynamicSettings,\n} ) => {\n\tconst defaults = React.useMemo< Record< string, PropValue | null > >( () => {\n\t\tif ( ! propsSchema ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst entries = Object.entries( propsSchema ) as Array< [ string, PropType ] >;\n\t\treturn entries.reduce< Record< string, PropValue | null > >( ( result, [ key, prop ] ) => {\n\t\t\tresult[ key ] = prop?.default ?? null;\n\t\t\treturn result;\n\t\t}, {} );\n\t}, [ propsSchema ] );\n\n\tconst convertedSettings = React.useMemo( () => {\n\t\tif ( ! dynamicSettings ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn Object.entries( dynamicSettings ).reduce< Record< string, PropValue > >(\n\t\t\t( result, [ key, dynamicValue ] ) => {\n\t\t\t\tif ( dynamicValue && typeof dynamicValue === 'object' && '$$type' in dynamicValue ) {\n\t\t\t\t\tresult[ key ] = dynamicValue as PropValue;\n\t\t\t\t} else {\n\t\t\t\t\tresult[ key ] = {\n\t\t\t\t\t\t$$type: 'plain',\n\t\t\t\t\t\tvalue: dynamicValue,\n\t\t\t\t\t} as PropValue;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ dynamicSettings ] );\n\n\tconst effectiveSettings = React.useMemo( () => {\n\t\treturn { ...defaults, ...convertedSettings } as Record< string, PropValue >;\n\t}, [ defaults, convertedSettings ] );\n\n\tif ( ! propType?.dependencies?.terms.length ) {\n\t\treturn <>{ children }</>;\n\t}\n\n\tconst isHidden = ! isDependencyMet( propType?.dependencies, effectiveSettings ).isMet;\n\n\treturn isHidden ? null : <>{ children }</>;\n};\n","import { Fragment, useState } from 'react';\nimport * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { PopoverHeader, PopoverMenuList, SearchField } from '@elementor/editor-ui';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { Divider, Link, Stack, Typography, useTheme } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverBody } from '../../components/popover-body';\nimport { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';\nimport { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { dynamicPropTypeUtil } from '../utils';\n\ntype Option = {\n\tlabel: string;\n\tvalue: string;\n\tgroup: string;\n};\n\ntype OptionEntry = [ string, Option[] ];\n\nconst SIZE = 'tiny';\n\ntype DynamicSelectionProps = {\n\tclose: () => void;\n};\n\ntype NoResultsProps = {\n\tsearchValue: string;\n\tonClear?: () => void;\n};\n\nexport const DynamicSelection = ( { close: closePopover }: DynamicSelectionProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { groups: dynamicGroups } = getAtomicDynamicTags() || {};\n\tconst theme = useTheme();\n\n\tconst { value: anyValue } = useBoundProp();\n\tconst { bind, value: dynamicValue, setValue } = useBoundProp( dynamicPropTypeUtil );\n\n\tconst [ , updatePropValueHistory ] = usePersistDynamicValue( bind );\n\n\tconst isCurrentValueDynamic = !! dynamicValue;\n\n\tconst options = useFilteredOptions( searchValue );\n\n\tconst hasNoDynamicTags = ! options.length && ! searchValue.trim();\n\n\tconst handleSearch = ( value: string ) => {\n\t\tsetSearchValue( value );\n\t};\n\n\tconst handleSetDynamicTag = ( value: string ) => {\n\t\tif ( ! isCurrentValueDynamic ) {\n\t\t\tupdatePropValueHistory( anyValue );\n\t\t}\n\n\t\tconst selectedOption = options.flatMap( ( [ , items ] ) => items ).find( ( item ) => item.value === value );\n\n\t\tsetValue( { name: value, group: selectedOption?.group ?? '', settings: { label: selectedOption?.label } } );\n\n\t\tclosePopover();\n\t};\n\n\tconst virtualizedItems = options.flatMap( ( [ category, items ] ) => [\n\t\t{\n\t\t\ttype: 'category' as const,\n\t\t\tvalue: category,\n\t\t\tlabel: dynamicGroups?.[ category ]?.title || category,\n\t\t},\n\t\t...items.map( ( item ) => ( {\n\t\t\ttype: 'item' as const,\n\t\t\tvalue: item.value,\n\t\t\tlabel: item.label,\n\t\t} ) ),\n\t] );\n\n\treturn (\n\t\t<PopoverBody aria-label={ __( 'Dynamic tags', 'elementor' ) }>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Dynamic tags', 'elementor' ) }\n\t\t\t\tonClose={ closePopover }\n\t\t\t\ticon={ <DatabaseIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t{ hasNoDynamicTags ? (\n\t\t\t\t<NoDynamicTags />\n\t\t\t) : (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<SearchField\n\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\tonSearch={ handleSearch }\n\t\t\t\t\t\tplaceholder={ __( 'Search dynamic tags…', 'elementor' ) }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Divider />\n\n\t\t\t\t\t<PopoverMenuList\n\t\t\t\t\t\titems={ virtualizedItems }\n\t\t\t\t\t\tonSelect={ handleSetDynamicTag }\n\t\t\t\t\t\tonClose={ closePopover }\n\t\t\t\t\t\tselectedValue={ dynamicValue?.name }\n\t\t\t\t\t\titemStyle={ ( item ) =>\n\t\t\t\t\t\t\titem.type === 'item' ? { paddingInlineStart: theme.spacing( 3.5 ) } : {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnoResultsComponent={\n\t\t\t\t\t\t\t<NoResults searchValue={ searchValue } onClear={ () => setSearchValue( '' ) } />\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Fragment>\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n\nconst NoResults = ( { searchValue, onClear }: NoResultsProps ) => (\n\t<Stack\n\t\tgap={ 1 }\n\t\talignItems=\"center\"\n\t\tjustifyContent=\"center\"\n\t\theight=\"100%\"\n\t\tp={ 2.5 }\n\t\tcolor=\"text.secondary\"\n\t\tsx={ { pb: 3.5 } }\n\t>\n\t\t<DatabaseIcon fontSize=\"large\" />\n\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t<br />\n\t\t\t&ldquo;{ searchValue }&rdquo;.\n\t\t</Typography>\n\t\t<Typography align=\"center\" variant=\"caption\" sx={ { display: 'flex', flexDirection: 'column' } }>\n\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t<Link color=\"text.secondary\" variant=\"caption\" component=\"button\" onClick={ onClear }>\n\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t</Link>\n\t\t</Typography>\n\t</Stack>\n);\n\nconst NoDynamicTags = () => (\n\t<>\n\t\t<Divider />\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tp={ 2.5 }\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { pb: 3.5 } }\n\t\t>\n\t\t\t<DatabaseIcon fontSize=\"large\" />\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Streamline your workflow with dynamic tags', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t\t{ __( \"You'll need Elementor Pro to use this feature.\", 'elementor' ) }\n\t\t\t</Typography>\n\t\t</Stack>\n\t</>\n);\n\nconst useFilteredOptions = ( searchValue: string ): OptionEntry[] => {\n\tconst dynamicTags = usePropDynamicTags();\n\n\tconst options = dynamicTags.reduce< Map< string, Option[] > >( ( categories, { name, label, group } ) => {\n\t\tconst isVisible = label.toLowerCase().includes( searchValue.trim().toLowerCase() );\n\n\t\tif ( ! isVisible ) {\n\t\t\treturn categories;\n\t\t}\n\n\t\tif ( ! categories.has( group ) ) {\n\t\t\tcategories.set( group, [] );\n\t\t}\n\n\t\tcategories.get( group )?.push( { label, group, value: name } );\n\n\t\treturn categories;\n\t}, new Map() );\n\n\treturn [ ...options ];\n};\n","import { createTransformer } from '@elementor/editor-canvas';\nimport { isTransformable, type Props } from '@elementor/editor-props';\n\nimport { DynamicTagsManagerNotFoundError } from './errors';\nimport { type ExtendedWindow } from './types';\n\ntype Dynamic = {\n\tname?: string;\n\tsettings?: Props;\n};\n\nexport const dynamicTransformer = createTransformer( ( value: Dynamic ) => {\n\tif ( ! value.name ) {\n\t\treturn null;\n\t}\n\n\treturn getDynamicValue( value.name, simpleTransform( value.settings ?? {} ) );\n} );\n\n// Temporary naive transformation until we'll have a `backendTransformer` that\n// will replace the `dynamicTransformer` client implementation.\nfunction simpleTransform( props: Props ) {\n\tconst transformed = Object.entries( props ).map( ( [ settingKey, settingValue ] ) => {\n\t\tconst value = isTransformable( settingValue ) ? settingValue.value : settingValue;\n\n\t\treturn [ settingKey, value ] as const;\n\t} );\n\n\treturn Object.fromEntries( transformed );\n}\n\nfunction getDynamicValue( name: string, settings: Record< string, unknown > ) {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst { dynamicTags } = extendedWindow.elementor ?? {};\n\n\tif ( ! dynamicTags ) {\n\t\tthrow new DynamicTagsManagerNotFoundError();\n\t}\n\n\tconst getTagValue = () => {\n\t\tconst tag = dynamicTags.createTag( 'v4-dynamic-tag', name, settings );\n\n\t\tif ( ! tag ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn dynamicTags.loadTagDataFromCache( tag ) ?? null;\n\t};\n\n\tconst tagValue = getTagValue();\n\n\tif ( tagValue !== null ) {\n\t\treturn tagValue;\n\t}\n\n\treturn new Promise( ( resolve ) => {\n\t\tdynamicTags.refreshCacheFromServer( () => {\n\t\t\tresolve( getTagValue() );\n\t\t} );\n\t} );\n}\n","import { createError } from '@elementor/utils';\n\nexport const DynamicTagsManagerNotFoundError = createError( {\n\tcode: 'dynamic_tags_manager_not_found',\n\tmessage: 'Dynamic tags manager not found',\n} );\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { type PopoverActionProps } from '../../popover-action';\nimport { DynamicSelection } from '../components/dynamic-selection';\nimport { supportsDynamic } from '../utils';\n\nexport const usePropDynamicAction = (): PopoverActionProps => {\n\tconst { propType } = useBoundProp();\n\n\tconst visible = !! propType && supportsDynamic( propType );\n\n\treturn {\n\t\tvisible,\n\t\ticon: DatabaseIcon,\n\t\ttitle: __( 'Dynamic tags', 'elementor' ),\n\t\tcontent: ( { close } ) => <DynamicSelection close={ close } />,\n\t};\n};\n","import { useBoundProp } from '@elementor/editor-controls';\nimport { BrushBigIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { useIsStyle } from './contexts/style-context';\nimport { controlActionsMenu } from './controls-actions';\nimport { isEqual } from './utils/is-equal';\n\nconst { registerAction } = controlActionsMenu;\n\nexport function initResetStyleProps() {\n\tregisterAction( {\n\t\tid: 'reset-style-value',\n\t\tuseProps: useResetStyleValueProps,\n\t} );\n}\n\nexport function useResetStyleValueProps() {\n\tconst isStyle = useIsStyle();\n\tconst { value, resetValue, propType } = useBoundProp();\n\tconst hasValue = value !== null && value !== undefined;\n\tconst hasInitial = propType.initial_value !== undefined && propType.initial_value !== null;\n\tconst isRequired = !! propType.settings?.required;\n\tconst shouldHide = !! propType.settings?.hide_reset;\n\n\tfunction calculateVisibility() {\n\t\tif ( ! isStyle || ! hasValue || shouldHide ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( hasInitial ) {\n\t\t\treturn ! isEqual( value, propType.initial_value );\n\t\t}\n\n\t\treturn ! isRequired;\n\t}\n\n\tconst visible = calculateVisibility();\n\n\treturn {\n\t\tvisible,\n\t\ttitle: __( 'Clear', 'elementor' ),\n\t\ticon: BrushBigIcon,\n\t\tonClick: () => resetValue(),\n\t};\n}\n","export function isEqual( a: unknown, b: unknown ): boolean {\n\tif ( a === b ) {\n\t\treturn true;\n\t}\n\n\tif ( a === null || b === null ) {\n\t\treturn false;\n\t}\n\n\tif ( typeof a !== typeof b ) {\n\t\treturn false;\n\t}\n\n\tif ( Array.isArray( a ) && Array.isArray( b ) ) {\n\t\tif ( a.length !== b.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor ( let i = 0; i < a.length; i++ ) {\n\t\t\tif ( ! isEqual( a[ i ], b[ i ] ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tif ( typeof a === 'object' && typeof b === 'object' ) {\n\t\tconst objA = a as Record< string, unknown >;\n\t\tconst objB = b as Record< string, unknown >;\n\n\t\tconst keysA = Object.keys( objA );\n\t\tconst keysB = Object.keys( objB );\n\n\t\tif ( keysA.length !== keysB.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor ( const key of keysA ) {\n\t\t\tif ( ! ( key in objB ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( ! isEqual( objA[ key ], objB[ key ] ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import * as React from 'react';\nimport { type ComponentProps } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { isEmpty, type PropType } from '@elementor/editor-props';\nimport { ELEMENTS_BASE_STYLES_PROVIDER_KEY } from '@elementor/editor-styles-repository';\nimport { __ } from '@wordpress/i18n';\n\nimport { StyleIndicator } from '../../components/style-indicator';\nimport { useStyle } from '../../contexts/style-context';\nimport { useStylesInheritanceChain } from '../../contexts/styles-inheritance-context';\nimport { getStylesProviderThemeColor } from '../../utils/get-styles-provider-color';\nimport { type SnapshotPropValue } from '../types';\nimport { getValueFromInheritanceChain } from '../utils';\nimport { StylesInheritanceInfotip } from './styles-inheritance-infotip';\nexport const StylesInheritanceIndicator = ( {\n\tcustomContext,\n}: {\n\tcustomContext?: { path: string[]; propType: PropType };\n} ) => {\n\tconst context = useBoundProp();\n\tconst { path, propType } = customContext || context;\n\tconst inheritanceChain = useStylesInheritanceChain( path );\n\n\tif ( ! path || ! inheritanceChain.length ) {\n\t\treturn null;\n\t}\n\n\treturn <Indicator inheritanceChain={ inheritanceChain } path={ path } propType={ propType } />;\n};\n\ntype IndicatorProps = {\n\tinheritanceChain: SnapshotPropValue[];\n\tpath: string[];\n\tpropType: PropType;\n\tisDisabled?: boolean;\n};\n\nconst Indicator = ( { inheritanceChain, path, propType, isDisabled }: IndicatorProps ) => {\n\tconst { id: currentStyleId, provider: currentStyleProvider, meta: currentStyleMeta } = useStyle();\n\n\tconst currentItem = currentStyleId\n\t\t? getValueFromInheritanceChain( inheritanceChain, currentStyleId, currentStyleMeta )\n\t\t: null;\n\n\tconst hasValue = ! isEmpty( currentItem?.value );\n\n\tconst [ actualStyle ] = inheritanceChain;\n\n\tif ( actualStyle.provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {\n\t\treturn null;\n\t}\n\n\tconst isFinalValue = currentItem === actualStyle;\n\n\tconst label = getLabel( { isFinalValue, hasValue } );\n\n\tconst styleIndicatorProps: ComponentProps< typeof StyleIndicator > = {\n\t\tgetColor:\n\t\t\tisFinalValue && currentStyleProvider\n\t\t\t\t? getStylesProviderThemeColor( currentStyleProvider.getKey() )\n\t\t\t\t: undefined,\n\t\tisOverridden: hasValue && ! isFinalValue ? true : undefined,\n\t};\n\n\treturn (\n\t\t<StylesInheritanceInfotip\n\t\t\tinheritanceChain={ inheritanceChain }\n\t\t\tpath={ path }\n\t\t\tpropType={ propType }\n\t\t\tlabel={ label }\n\t\t\tisDisabled={ isDisabled }\n\t\t>\n\t\t\t<StyleIndicator { ...styleIndicatorProps } />\n\t\t</StylesInheritanceInfotip>\n\t);\n};\n\nconst getLabel = ( { isFinalValue, hasValue }: { isFinalValue: boolean; hasValue: boolean } ) => {\n\tif ( isFinalValue ) {\n\t\treturn __( 'This is the final value', 'elementor' );\n\t}\n\n\tif ( hasValue ) {\n\t\treturn __( 'This value is overridden by another style', 'elementor' );\n\t}\n\n\treturn __( 'This has value from another style', 'elementor' );\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { createPropsResolver, type PropsResolver } from '@elementor/editor-canvas';\nimport { type PropKey, type PropType } from '@elementor/editor-props';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport {\n\tBackdrop,\n\tBox,\n\tCard,\n\tCardContent,\n\tClickAwayListener,\n\tIconButton,\n\tInfotip,\n\tStack,\n\ttype Theme,\n\tTooltip,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useSectionWidth } from '../../contexts/section-context';\nimport { useDirection } from '../../hooks/use-direction';\nimport { useNormalizedInheritanceChainItems } from '../hooks/use-normalized-inheritance-chain-items';\nimport { stylesInheritanceTransformersRegistry } from '../styles-inheritance-transformers-registry';\nimport { type SnapshotPropValue } from '../types';\nimport { ActionIcons, BreakpointIcon, LabelChip, ValueComponent } from './infotip';\n\nconst SECTION_PADDING_INLINE = 32;\n\ntype Props = {\n\tinheritanceChain: SnapshotPropValue[];\n\tpropType: PropType;\n\tpath: PropKey[];\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tisDisabled?: boolean;\n};\n\nexport const StylesInheritanceInfotip = ( {\n\tinheritanceChain,\n\tpropType,\n\tpath,\n\tlabel,\n\tchildren,\n\tisDisabled,\n}: Props ) => {\n\tconst [ showInfotip, setShowInfotip ] = useState< boolean >( false );\n\n\tconst toggleInfotip = () => {\n\t\tif ( isDisabled ) {\n\t\t\treturn;\n\t\t}\n\t\tsetShowInfotip( ( prev ) => ! prev );\n\t};\n\n\tconst closeInfotip = () => {\n\t\tif ( isDisabled ) {\n\t\t\treturn;\n\t\t}\n\t\tsetShowInfotip( false );\n\t};\n\n\tconst key = path.join( '.' );\n\n\tconst sectionWidth = useSectionWidth();\n\n\tconst resolve = useMemo< PropsResolver >( () => {\n\t\treturn createPropsResolver( {\n\t\t\ttransformers: stylesInheritanceTransformersRegistry,\n\t\t\tschema: { [ key ]: propType },\n\t\t} );\n\t}, [ key, propType ] );\n\n\tconst items = useNormalizedInheritanceChainItems( inheritanceChain, key, resolve );\n\n\tconst infotipContent = (\n\t\t<ClickAwayListener onClickAway={ closeInfotip }>\n\t\t\t<Card\n\t\t\t\televation={ 0 }\n\t\t\t\tsx={ {\n\t\t\t\t\twidth: `${ sectionWidth - SECTION_PADDING_INLINE }px`,\n\t\t\t\t\tmaxWidth: 496,\n\t\t\t\t\tmaxHeight: 268,\n\t\t\t\t\toverflowX: 'hidden',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Box\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tposition: 'sticky',\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tzIndex: 1,\n\t\t\t\t\t\tbackgroundColor: 'background.paper',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<PopoverHeader title={ __( 'Style origin', 'elementor' ) } onClose={ closeInfotip } />\n\t\t\t\t</Box>\n\n\t\t\t\t<CardContent\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\tp: 0,\n\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t\t'&:last-child': {\n\t\t\t\t\t\t\tpb: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Stack gap={ 1.5 } sx={ { pl: 3, pr: 1, pb: 2 } } role=\"list\">\n\t\t\t\t\t\t{ items.map( ( item, index ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tkey={ item.id }\n\t\t\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\t\t\tgap={ 0.5 }\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\t// translators: %s is the display label of the inheritance item\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Inheritance item: %s', 'elementor' ).replace(\n\t\t\t\t\t\t\t\t\t\t'%s',\n\t\t\t\t\t\t\t\t\t\titem.displayLabel\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\t\t<Box\n\t\t\t\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\t\t\t\tgap={ 0.5 }\n\t\t\t\t\t\t\t\t\t\tsx={ { flexWrap: 'wrap', width: '100%', alignItems: 'flex-start' } }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<BreakpointIcon breakpoint={ item.breakpoint } />\n\t\t\t\t\t\t\t\t\t\t<LabelChip displayLabel={ item.displayLabel } provider={ item.provider } />\n\t\t\t\t\t\t\t\t\t\t<ValueComponent index={ index } value={ item.value } />\n\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t\t<ActionIcons />\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t</CardContent>\n\t\t\t</Card>\n\t\t</ClickAwayListener>\n\t);\n\n\tif ( isDisabled ) {\n\t\treturn <Box sx={ { display: 'inline-flex' } }>{ children }</Box>;\n\t}\n\n\treturn (\n\t\t<TooltipOrInfotip\n\t\t\tshowInfotip={ showInfotip }\n\t\t\tonClose={ closeInfotip }\n\t\t\tinfotipContent={ infotipContent }\n\t\t\tisDisabled={ isDisabled }\n\t\t>\n\t\t\t<IconButton onClick={ toggleInfotip } aria-label={ label } sx={ { my: '-1px' } } disabled={ isDisabled }>\n\t\t\t\t{ children }\n\t\t\t</IconButton>\n\t\t</TooltipOrInfotip>\n\t);\n};\n\nfunction TooltipOrInfotip( {\n\tchildren,\n\tshowInfotip,\n\tonClose,\n\tinfotipContent,\n\tisDisabled,\n}: {\n\tchildren: React.ReactNode;\n\tshowInfotip: boolean;\n\tonClose: () => void;\n\tinfotipContent: React.ReactNode;\n\tisDisabled?: boolean;\n} ) {\n\tconst direction = useDirection();\n\tconst isSiteRtl = direction.isSiteRtl;\n\tconst forceInfotipAlignLeft = isSiteRtl ? 9999999 : -9999999;\n\n\tif ( isDisabled ) {\n\t\treturn <Box sx={ { display: 'inline-flex' } }>{ children }</Box>;\n\t}\n\n\tif ( showInfotip ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Backdrop\n\t\t\t\t\topen={ showInfotip }\n\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\tzIndex: ( theme: Theme ) => theme.zIndex.modal - 1,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<Infotip\n\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\tcontent={ infotipContent }\n\t\t\t\t\topen={ showInfotip }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\tdisableHoverListener\n\t\t\t\t\tcomponentsProps={ {\n\t\t\t\t\t\ttooltip: {\n\t\t\t\t\t\t\tsx: { mx: 2 },\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\toptions: { offset: [ forceInfotipAlignLeft, 0 ] },\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\t\t{ children }\n\t\t\t\t</Infotip>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tooltip title={ __( 'Style origin', 'elementor' ) } placement=\"top\">\n\t\t\t{ children }\n\t\t</Tooltip>\n\t);\n}\n","import { isValidElement, type ReactNode, useEffect, useState } from 'react';\nimport { type PropsResolver, UnknownStyleStateError } from '@elementor/editor-canvas';\nimport { type PropKey } from '@elementor/editor-props';\nimport {\n\tisClassState,\n\tisPseudoState,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { ELEMENTS_BASE_STYLES_PROVIDER_KEY } from '@elementor/editor-styles-repository';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SnapshotPropValue } from '../types';\n\nconst MAXIMUM_ITEMS = 2;\n\ntype NormalizedItem = {\n\tid: string | number;\n\tprovider: string;\n\tbreakpoint?: StyleDefinitionVariant[ 'meta' ][ 'breakpoint' ];\n\tdisplayLabel: string;\n\tvalue: ReactNode | string;\n};\n\nexport const useNormalizedInheritanceChainItems = (\n\tinheritanceChain: SnapshotPropValue[],\n\tbind: PropKey,\n\tresolve: PropsResolver\n) => {\n\tconst [ items, setItems ] = useState< NormalizedItem[] >( [] );\n\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst normalizedItems = await Promise.all(\n\t\t\t\tinheritanceChain\n\t\t\t\t\t.filter( ( { style } ) => style )\n\t\t\t\t\t.map( ( item, index ) => normalizeInheritanceItem( item, index, bind, resolve ) )\n\t\t\t);\n\n\t\t\tconst validItems = normalizedItems\n\t\t\t\t.map( ( item ) => ( {\n\t\t\t\t\t...item,\n\t\t\t\t\tdisplayLabel:\n\t\t\t\t\t\tELEMENTS_BASE_STYLES_PROVIDER_KEY !== item.provider\n\t\t\t\t\t\t\t? item.displayLabel\n\t\t\t\t\t\t\t: __( 'Base', 'elementor' ),\n\t\t\t\t} ) )\n\t\t\t\t.filter( ( item ) => ! item.value || item.displayLabel !== '' )\n\t\t\t\t.slice( 0, MAXIMUM_ITEMS );\n\n\t\t\tsetItems( validItems );\n\t\t} )();\n\t}, [ inheritanceChain, bind, resolve ] );\n\n\treturn items;\n};\n\nconst DEFAULT_BREAKPOINT = 'desktop';\n\nexport const normalizeInheritanceItem = async (\n\titem: SnapshotPropValue,\n\tindex: number,\n\tbind: PropKey,\n\tresolve: PropsResolver\n): Promise< NormalizedItem > => {\n\tconst {\n\t\tvariant: {\n\t\t\tmeta: { state, breakpoint },\n\t\t},\n\t\tstyle: { label, id },\n\t} = item;\n\n\tconst displayLabel = getDisplayLabel( { label, state } );\n\n\treturn {\n\t\tid: id ? id + ( state ?? '' ) : index,\n\t\tprovider: item.provider || '',\n\t\tbreakpoint: breakpoint ?? DEFAULT_BREAKPOINT,\n\t\tdisplayLabel,\n\t\tvalue: await getTransformedValue( item, bind, resolve ),\n\t};\n};\n\nfunction getDisplayLabel( { label, state }: { label: string; state: StyleDefinitionState } ) {\n\tif ( ! state ) {\n\t\treturn label;\n\t}\n\n\tif ( isClassState( state ) ) {\n\t\treturn `${ label }.${ state }`;\n\t}\n\n\tif ( isPseudoState( state ) ) {\n\t\treturn `${ label }:${ state }`;\n\t}\n\n\tthrow new UnknownStyleStateError( { context: { state } } );\n}\nconst getTransformedValue = async (\n\titem: SnapshotPropValue,\n\tbind: PropKey,\n\tresolve: PropsResolver\n): Promise< ReactNode | string > => {\n\ttry {\n\t\tconst result = await resolve( {\n\t\t\tprops: {\n\t\t\t\t[ bind ]: item.value,\n\t\t\t},\n\t\t} );\n\n\t\tconst value = result?.[ bind ] ?? result;\n\n\t\tif ( isValidElement( value ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( typeof value === 'object' ) {\n\t\t\treturn JSON.stringify( value );\n\t\t}\n\n\t\treturn String( value );\n\t} catch {\n\t\treturn '';\n\t}\n};\n","import { createTransformersRegistry } from '@elementor/editor-canvas';\n\nexport const stylesInheritanceTransformersRegistry = createTransformersRegistry();\n","import * as React from 'react';\nimport { type BreakpointId, useBreakpoints } from '@elementor/editor-responsive';\nimport {\n\tDesktopIcon,\n\tLaptopIcon,\n\tMobileLandscapeIcon,\n\tMobilePortraitIcon,\n\tTabletLandscapeIcon,\n\tTabletPortraitIcon,\n\tWidescreenIcon,\n} from '@elementor/icons';\nimport { Tooltip } from '@elementor/ui';\n\ntype Props = {\n\tbreakpoint?: BreakpointId | null;\n};\n\nconst SIZE = 'tiny';\nconst DEFAULT_BREAKPOINT = 'desktop';\n\nconst breakpointIconMap: Record< string, React.ElementType > = {\n\twidescreen: WidescreenIcon,\n\tdesktop: DesktopIcon,\n\tlaptop: LaptopIcon,\n\ttablet_extra: TabletLandscapeIcon,\n\ttablet: TabletPortraitIcon,\n\tmobile_extra: MobileLandscapeIcon,\n\tmobile: MobilePortraitIcon,\n};\n\nexport const BreakpointIcon = ( { breakpoint }: Props ) => {\n\tconst breakpoints = useBreakpoints();\n\tconst currentBreakpoint = breakpoint || DEFAULT_BREAKPOINT;\n\tconst IconComponent = breakpointIconMap[ currentBreakpoint ];\n\n\tif ( ! IconComponent ) {\n\t\treturn null;\n\t}\n\n\tconst breakpointLabel = breakpoints.find( ( breakpointItem ) => breakpointItem.id === currentBreakpoint )?.label;\n\n\treturn (\n\t\t<Tooltip title={ breakpointLabel } placement=\"top\">\n\t\t\t<IconComponent fontSize={ SIZE } sx={ { mt: '2px' } } />\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { ELEMENTS_BASE_STYLES_PROVIDER_KEY } from '@elementor/editor-styles-repository';\nimport { InfoCircleIcon } from '@elementor/icons';\nimport { Chip, type Theme, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { getStylesProviderColorName } from '../../../utils/get-styles-provider-color';\n\ntype Props = {\n\tdisplayLabel: string;\n\tprovider: string;\n};\n\nconst SIZE = 'tiny';\n\nexport const LabelChip = ( { displayLabel, provider }: Props ) => {\n\tconst isBaseStyle = provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY;\n\n\tconst chipIcon = isBaseStyle ? (\n\t\t<Tooltip title={ __( 'Inherited from base styles', 'elementor' ) } placement=\"top\">\n\t\t\t<InfoCircleIcon fontSize={ SIZE } />\n\t\t</Tooltip>\n\t) : undefined;\n\n\treturn (\n\t\t<Chip\n\t\t\tlabel={ displayLabel }\n\t\t\tsize={ SIZE }\n\t\t\tcolor={ getStylesProviderColorName( provider ) }\n\t\t\tvariant=\"standard\"\n\t\t\tstate=\"enabled\"\n\t\t\ticon={ chipIcon }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\tlineHeight: 1,\n\t\t\t\tflexWrap: 'nowrap',\n\t\t\t\talignItems: 'center',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\tflexDirection: 'row-reverse',\n\t\t\t\t'.MuiChip-label': {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t},\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n","import * as React from 'react';\nimport { Typography } from '@elementor/ui';\n\ntype Props = {\n\tindex: number;\n\tvalue: React.ReactNode;\n};\n\nexport const ValueComponent = ( { index, value }: Props ) => {\n\treturn (\n\t\t<Typography\n\t\t\tvariant=\"caption\"\n\t\t\tcolor=\"text.tertiary\"\n\t\t\tsx={ {\n\t\t\t\tmt: '1px',\n\t\t\t\ttextDecoration: index === 0 ? 'none' : 'line-through',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\tpl: 2.5,\n\t\t\t\tminWidth: 0,\n\t\t\t\tmaxWidth: '100%',\n\t\t\t} }\n\t\t>\n\t\t\t{ value }\n\t\t</Typography>\n\t);\n};\n","import * as React from 'react';\nimport { Box } from '@elementor/ui';\n\nexport const ActionIcons = () => (\n\t<Box display=\"flex\" gap={ 0.5 } alignItems=\"center\">\n\t\t{ /* Action Slot */ }\n\t</Box>\n);\n","import { createTransformer, styleTransformersRegistry } from '@elementor/editor-canvas';\n\nimport { excludePropTypeTransformers } from './consts';\nimport { stylesInheritanceTransformersRegistry } from './styles-inheritance-transformers-registry';\nimport { arrayTransformer } from './transformers/array-transformer';\nimport { backgroundColorOverlayTransformer } from './transformers/background-color-overlay-transformer';\nimport { backgroundGradientOverlayTransformer } from './transformers/background-gradient-overlay-transformer';\nimport { backgroundImageOverlayTransformer } from './transformers/background-image-overlay-transformer';\nimport { boxShadowTransformer } from './transformers/box-shadow-transformer';\nimport { colorTransformer } from './transformers/color-transformer';\nimport { createRepeaterToItemsTransformer } from './transformers/repeater-to-items-transformer';\n\nexport function initStylesInheritanceTransformers() {\n\tconst originalStyleTransformers = styleTransformersRegistry.all();\n\n\tObject.entries( originalStyleTransformers ).forEach( ( [ propType, transformer ] ) => {\n\t\tif ( excludePropTypeTransformers.has( propType ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tstylesInheritanceTransformersRegistry.register( propType, transformer );\n\t} );\n\n\tstylesInheritanceTransformersRegistry.registerFallback(\n\t\tcreateTransformer( ( value: unknown ) => {\n\t\t\treturn value;\n\t\t} )\n\t);\n\n\tregisterCustomTransformers( originalStyleTransformers );\n}\n\nfunction registerCustomTransformers( originalStyleTransformers: ReturnType< typeof styleTransformersRegistry.all > ) {\n\tstylesInheritanceTransformersRegistry.register( 'color', colorTransformer );\n\tstylesInheritanceTransformersRegistry.register( 'background-color-overlay', backgroundColorOverlayTransformer );\n\tstylesInheritanceTransformersRegistry.register(\n\t\t'background-gradient-overlay',\n\t\tbackgroundGradientOverlayTransformer\n\t);\n\tstylesInheritanceTransformersRegistry.register( 'background-image-overlay', backgroundImageOverlayTransformer );\n\tstylesInheritanceTransformersRegistry.register( 'shadow', boxShadowTransformer );\n\n\tstylesInheritanceTransformersRegistry.register(\n\t\t'filter',\n\t\tcreateRepeaterToItemsTransformer( originalStyleTransformers.filter )\n\t);\n\tstylesInheritanceTransformersRegistry.register(\n\t\t'backdrop-filter',\n\t\tcreateRepeaterToItemsTransformer( originalStyleTransformers[ 'backdrop-filter' ] )\n\t);\n\tstylesInheritanceTransformersRegistry.register(\n\t\t'transition',\n\t\tcreateRepeaterToItemsTransformer( originalStyleTransformers.transition, ', ' )\n\t);\n\n\t[ 'background-overlay', 'box-shadow', 'transform-functions' ].forEach( ( propType ) =>\n\t\tstylesInheritanceTransformersRegistry.register( propType, arrayTransformer )\n\t);\n}\n","// the following prop types' style transformers would be ignored to provide alternative transformers for the styles inheritance popover\nexport const excludePropTypeTransformers = new Set( [\n\t'background-color-overlay',\n\t'background-image-overlay',\n\t'background-gradient-overlay',\n\t'gradient-color-stop',\n\t'color-stop',\n\t'background-image-position-offset',\n\t'background-image-size-scale',\n\t'image-src',\n\t'image',\n\t'background-overlay',\n] );\n","import * as React from 'react';\nimport { type ReactNode } from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack } from '@elementor/ui';\n\ntype ArrayValues = ReactNode[];\n\nexport const arrayTransformer = createTransformer( ( values: ArrayValues[] ) => {\n\tif ( ! values || values.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Stack direction=\"column\">\n\t\t\t{ values.map( ( item, index ) => (\n\t\t\t\t<Stack key={ index }>{ item }</Stack>\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack, styled, UnstableColorIndicator } from '@elementor/ui';\n\nexport type Color = {\n\tcolor: string;\n};\n\nexport const backgroundColorOverlayTransformer = createTransformer( ( value: Color ) => (\n\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\">\n\t\t<ItemLabelColor value={ value } />\n\t</Stack>\n) );\n\nconst ItemLabelColor = ( { value: { color } }: { value: Color } ) => {\n\treturn <span>{ color }</span>;\n};\n\nexport const StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\twidth: '1em',\n\theight: '1em',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\tflexShrink: 0,\n} ) );\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type Color, StyledUnstableColorIndicator } from './background-color-overlay-transformer';\n\ntype ColorStop = Color & {\n\toffset: number;\n};\n\ntype Gradient = {\n\ttype: string;\n\tangle?: number;\n\tpositions?: string;\n\tstops: ColorStop[];\n};\n\nexport const backgroundGradientOverlayTransformer = createTransformer( ( value: Gradient ) => (\n\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\">\n\t\t<ItemIconGradient value={ value } />\n\t\t<ItemLabelGradient value={ value } />\n\t</Stack>\n) );\n\nconst ItemIconGradient = ( { value }: { value: Gradient } ) => {\n\tconst gradient = getGradientValue( value );\n\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ gradient } />;\n};\n\nconst ItemLabelGradient = ( { value }: { value: Gradient } ) => {\n\tif ( value.type === 'linear' ) {\n\t\treturn <span>{ __( 'Linear gradient', 'elementor' ) }</span>;\n\t}\n\n\treturn <span>{ __( 'Radial gradient', 'elementor' ) }</span>;\n};\n\nconst getGradientValue = ( gradient: Gradient ) => {\n\tconst stops = gradient.stops\n\t\t?.map( ( { color, offset }: ColorStop ) => `${ color } ${ offset ?? 0 }%` )\n\t\t?.join( ',' );\n\n\tif ( gradient.type === 'linear' ) {\n\t\treturn `linear-gradient(${ gradient.angle }deg, ${ stops })`;\n\t}\n\n\treturn `radial-gradient(circle at ${ gradient.positions }, ${ stops })`;\n};\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { CardMedia, Stack, type Theme } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\n\ntype ImageSrcAttachment = { id: number; url: null };\n\ntype ImageSrcUrl = { url: string; id: null };\n\ntype Image = {\n\timage: {\n\t\tsrc: ImageSrcAttachment | ImageSrcUrl;\n\t\tsize: 'thumbnail' | 'medium' | 'large' | 'full';\n\t};\n};\n\nexport const backgroundImageOverlayTransformer = createTransformer( ( value: Image ) => (\n\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\">\n\t\t<ItemIconImage value={ value } />\n\t\t<ItemLabelImage value={ value } />\n\t</Stack>\n) );\n\nconst ItemIconImage = ( { value }: { value: Image } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn (\n\t\t<CardMedia\n\t\t\timage={ imageUrl }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\theight: '1em',\n\t\t\t\twidth: '1em',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\t\t\t\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\t\t\t\tflexShrink: 0,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nconst ItemLabelImage = ( { value }: { value: Image } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn (\n\t\t<EllipsisWithTooltip title={ imageTitle }>\n\t\t\t<span>{ imageTitle }</span>\n\t\t</EllipsisWithTooltip>\n\t);\n};\n\nconst useImage = ( image: Image ) => {\n\tlet imageTitle,\n\t\timageUrl: string | null = null;\n\n\tconst imageSrc = image?.image.src;\n\tconst { data: attachment } = useWpMediaAttachment( imageSrc.id || 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;\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","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack } from '@elementor/ui';\n\ntype Shadow = {\n\thOffset?: string;\n\tvOffset?: string;\n\tblur?: string;\n\tspread?: string;\n\tcolor?: string;\n\tposition?: string | null;\n};\n\nexport const boxShadowTransformer = createTransformer( ( value: Shadow ) => {\n\tif ( ! value ) {\n\t\treturn null;\n\t}\n\n\tconst { color, hOffset, vOffset, blur, spread, position } = value;\n\n\tconst colorValue = color || '#000000';\n\tconst sizes = [ hOffset || '0px', vOffset || '0px', blur || '10px', spread || '0px' ].join( ' ' );\n\tconst positionValue = position || 'outset';\n\n\treturn (\n\t\t<Stack direction=\"column\" gap={ 0.5 } pb={ 1 }>\n\t\t\t<span>\n\t\t\t\t{ colorValue } { positionValue }, { sizes }\n\t\t\t</span>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack, styled, UnstableColorIndicator } from '@elementor/ui';\n\nfunction isValidCSSColor( value: string ): boolean {\n\tif ( ! value.trim() ) {\n\t\treturn false;\n\t}\n\n\treturn CSS.supports( 'color', value.trim() );\n}\n\nconst StyledColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\twidth: '1em',\n\theight: '1em',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\tflexShrink: 0,\n} ) );\n\nexport const colorTransformer = createTransformer( ( value: string ) => {\n\tif ( ! isValidCSSColor( value ) ) {\n\t\treturn value;\n\t}\n\n\treturn (\n\t\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\">\n\t\t\t<StyledColorIndicator size=\"inherit\" component=\"span\" value={ value } />\n\t\t\t<span>{ value }</span>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { type AnyTransformer, createTransformer } from '@elementor/editor-canvas';\nimport { Stack } from '@elementor/ui';\n\nexport const createRepeaterToItemsTransformer = ( originalTransformer: AnyTransformer, separator: string = ' ' ) => {\n\treturn createTransformer( ( value: string, options: { key: string; signal?: AbortSignal } ) => {\n\t\tconst stringResult = originalTransformer( value, options );\n\n\t\tif ( ! stringResult || typeof stringResult !== 'string' ) {\n\t\t\treturn stringResult;\n\t\t}\n\n\t\tconst parts = stringResult.split( separator ).filter( Boolean );\n\n\t\tif ( parts.length <= 1 ) {\n\t\t\treturn stringResult;\n\t\t}\n\n\t\treturn (\n\t\t\t<Stack direction=\"column\" gap={ 0.5 }>\n\t\t\t\t{ parts.map( ( part, index ) => (\n\t\t\t\t\t<Stack key={ index }>{ part.trim() }</Stack>\n\t\t\t\t) ) }\n\t\t\t</Stack>\n\t\t);\n\t} );\n};\n","import { FIELD_TYPE, registerFieldIndicator } from '../field-indicators-registry';\nimport { StylesInheritanceIndicator } from './components/styles-inheritance-indicator';\nimport { initStylesInheritanceTransformers } from './init-styles-inheritance-transformers';\n\nexport const init = () => {\n\tinitStylesInheritanceTransformers();\n\n\tregisterFieldIndicator( {\n\t\tfieldType: FIELD_TYPE.STYLES,\n\t\tid: 'styles-inheritance',\n\t\tpriority: 1,\n\t\tindicator: StylesInheritanceIndicator,\n\t} );\n};\n"],"mappings":";AAAA,SAAS,gBAAAA,sBAAoB;;;ACA7B,YAAYC,YAAW;AACvB,SAAS,oBAAoB,mBAAmB,6BAA6B;AAC7E,SAAS,2BAAkD;AAE3D,SAAS,sBAAsB;AAC/B,SAAS,yBAAyB;;;ACLlC,YAAY,WAAW;AACvB,SAAS,eAAuC,kBAAkB;AAMlE,IAAM,UAAU,cAAsC,IAAK;AAIpD,SAAS,oBAAqB,EAAE,UAAU,KAAK,GAAW;AAChE,SAAO,oCAAC,QAAQ,UAAR,EAAiB,OAAQ,EAAE,KAAK,KAAM,QAAU;AACzD;AAEO,SAAS,iBAAiB;AAChC,QAAM,UAAU,WAAY,OAAQ;AAEpC,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,0DAA2D;AAAA,EAC7E;AAEA,SAAO,QAAQ;AAChB;;;ACvBA,YAAYC,YAAW;AACvB,SAAS,iBAAAC,gBAAuC,cAAAC,mBAAkB;AAQlE,IAAMC,WAAUF,eAAsC,IAAK;AAIpD,SAAS,gBAAiB,EAAE,UAAU,SAAS,YAAY,GAAW;AAC5E,SAAO,qCAACE,SAAQ,UAAR,EAAiB,OAAQ,EAAE,SAAS,YAAY,KAAM,QAAU;AACzE;AAEO,SAAS,aAAa;AAC5B,QAAM,UAAUD,YAAYC,QAAQ;AAEpC,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,kDAAmD;AAAA,EACrE;AAEA,SAAO;AACR;;;ACzBA,YAAYC,YAAW;AACvB,SAAS,iBAAAC,gBAAsD,cAAAC,mBAAkB;AAOjF,SAA8B,kBAAkB,+BAA+B;;;ACP/E,SAAS,mBAAmB;AAErB,IAAM,2BAA2B,YAAwC;AAAA,EAC/E,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,oCAAoC,YAAwC;AAAA,EACxF,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,gCAAgC,YAAwC;AAAA,EACpF,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,8BAA8B,YAA+C;AAAA,EACzF,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,uCAAuC,YAAwC;AAAA,EAC3F,MAAM;AAAA,EACN,SAAS;AACV,CAAE;AAEK,IAAM,kCAAkC,YAAoE;AAAA,EAClH,MAAM;AAAA,EACN,SAAS;AACV,CAAE;;;ADFF,IAAMC,WAAUC,eAAsC,IAAK;AAIpD,SAAS,cAAe,EAAE,UAAU,GAAG,MAAM,GAAW;AAC9D,QAAM,WAAW,MAAM,OAAO,OAAO,OAAO,qBAAsB,MAAM,EAAG;AAE3E,QAAM,EAAE,QAAQ,IAAI,wBAAwB;AAE5C,MAAK,MAAM,MAAM,CAAE,UAAW;AAC7B,UAAM,IAAI,4BAA6B,EAAE,SAAS,EAAE,SAAS,MAAM,GAAG,EAAE,CAAE;AAAA,EAC3E;AAEA,QAAM,UAAU,QAAS,UAAU,OAAO,KAAK,EAAG,EAAE;AAEpD,SAAO,qCAACD,SAAQ,UAAR,EAAiB,OAAQ,EAAE,GAAG,OAAO,UAAU,QAAQ,KAAsB,QAAU;AAChG;AAEO,SAAS,WAAW;AAC1B,QAAM,UAAUE,YAAYF,QAAQ;AAEpC,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,8CAA+C;AAAA,EACjE;AAEA,SAAO;AACR;AAEO,SAAS,qBAAsB,SAA6B;AAClE,QAAM,gBAAgB,iBAAiB,aAAa,EAAE,KAAM,CAAE,aAAc;AAC3E,WAAO,SAAS,QAAQ,IAAI,EAAE,KAAM,CAAE,UAAW,MAAM,OAAO,OAAQ;AAAA,EACvE,CAAE;AAEF,SAAO,iBAAiB;AACzB;AAEO,SAAS,aAAsB;AACrC,SAAO,CAAC,CAAEE,YAAYF,QAAQ;AAC/B;;;AHxDO,IAAM,EAAE,MAAM,qBAAqB,QAAQ,0BAA0B,IAAI,eAI5E;AAYG,IAAM,kBAAkB,CAAE,UAAqB;AACrD,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,YAAY,QAAQ;AAC1B,QAAM,qBAAqB,eAAe;AAC1C,QAAM,EAAE,OAAO,YAAY,IAAI,SAAS;AACxC,QAAM,CAAE,EAAE,SAAU,IAAI,kBAAmB,uCAAuC,KAAM;AAExF,QAAM,kBAAkB,CAAE,UAAmB;AAC5C,QAAK,CAAE,MAAM,UAAW;AACvB,YAAM,IAAI,MAAO,0EAA2E;AAAA,IAC7F;AAEA,cAAW;AAAA,MACV;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,UAAU,MAAM;AAAA,IACjB,CAAE;AAEF,cAAW,KAAM;AACjB,gBAAa,KAAM;AACnB,UAAM,UAAU;AAAA,EACjB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,YAAa,CAAC,CAAE,MAAM;AAAA,MACtB,UAAW,MAAM;AAAA,MACjB;AAAA;AAAA,EACD;AAEF;AASA,IAAM,YAAY,CAAE,SAA4B;AAC/C,QAAM,EAAE,OAAO,WAAW,YAAY,IAAI;AAC1C,qBAAoB,WAAW,KAAK,SAAS,EAAG;AAChD,QAAM,qBAAqB,kBAAuC,WAAW,WAAY,KAAK,EAAE,OAAO,CAAC,EAAE;AAC1G,wBAAuB;AAAA,IACtB,IAAI;AAAA,IACJ,OAAO,EAAE,CAAE,WAAY,GAAG,oBAAoB,OAAQ,CAAE,OAAO,GAAG,mBAAmB,KAAM,CAAE,EAAE;AAAA,IAC/F,aAAa;AAAA,EACd,CAAE;AACH;;;AK5EA,YAAYG,aAAW;AACvB,SAA4B,QAAQ,YAAAC,iBAAgB;AACpD,SAAS,yBAAyB;AAElC;AAAA,EACC,4BAAAC;AAAA,EAEA,oBAAAC;AAAA,EAEA;AAAA,EACA,2BAAAC;AAAA,EACA,sBAAAC;AAAA,OACM;AACP,SAAS,WAAW,sBAAsB;AAC1C,SAAS,iBAAiB,kBAAkB;AAC5C,SAAS,kBAAAC,uBAAsB;AAC/B;AAAA,EAEC,OAAAC;AAAA,EACA,QAAAC;AAAA,EAEA;AAAA,EACA;AAAA,EACA,SAAAC;AAAA,EACA,cAAAC;AAAA,OACM;AACP,SAAS,MAAAC,WAAU;;;AC1BnB,SAAS,mCAAmC,gCAAgC;;;ACO5E,IAAM,iBAAyB;AAAA,EAC9B,MAAM;AAAA,EACN,eAAe;AAChB;AAEA,IAAM,yBAAyB,oBAAI,IAAsB;AAElD,IAAM,gCAAgC,CAAE,UAAkB,WAAoB;AACpF,yBAAuB,IAAK,UAAU,MAAO;AAC9C;AAEO,IAAM,yBAAyB,CAAE,aACvC,uBAAuB,IAAK,QAAS,KAAK;;;ADdpC,IAAM,6BAA6B,CAAE,aAA4C;AACvF,MAAK,CAAE,YAAY,aAAa,mCAAoC;AACnE,WAAO;AAAA,EACR;AAEA,MAAK,yBAA0B,QAAS,GAAI;AAC3C,WAAO;AAAA,EACR;AAEA,SAAO,uBAAwB,QAAS,EAAE;AAC3C;AAEO,IAAM,8BAA8B,CAAE,aAA6D;AACzG,MAAK,CAAE,YAAY,aAAa,mCAAoC;AACnE,WAAO;AAAA,EACR;AAEA,MAAK,yBAA0B,QAAS,GAAI;AAC3C,WAAO,CAAE,UAAkB,MAAM,QAAQ,OAAO;AAAA,EACjD;AAEA,SAAO,uBAAwB,QAAS,EAAE;AAC3C;AAEO,SAAS,gCAAiC,UAA0D;AAC1G,MAAK,yBAA0B,QAAS,GAAI;AAC3C,WAAO,CAAE,UAAkB,MAAM,QAAQ,QAAQ;AAAA,EAClD;AAEA,SAAO,4BAA6B,QAAS;AAC9C;;;AEnCA,SAAS,oBAAAC,yBAAwB;AAE1B,IAAM,cAAc,CAAE,UAAkB,OAAe,SAAqC;AAClG,QAAM,mBAAmBA,kBAAiB,iBAAkB,QAAS;AAErE,oBAAkB,QAAQ,WAAY,EAAE,OAAO,GAAG,KAAK,CAAE;AAC1D;;;ACNA,YAAYC,YAAW;AACvB,SAA8B,OAAO,eAAe;AACpD;AAAA,EACC;AAAA,EAGA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACM;;;ACVA,SAAS,kBACfC,WACA,kBAC8B;AAC9B,SAAOA,UAAQ,IAAK,CAAE,WAAY;AACjC,WAAO;AAAA,MACN,GAAG;AAAA,MACH,QAAQ,YAAa,oBAAoB,SAAU;AAAA,IACpD;AAAA,EACD,CAAE;AACH;AAEO,SAAS,mBAA8C,QAA6C;AAC1G,QAAM,EAAE,QAAQ,SAAS,GAAG,KAAK,IAAI;AACrC,SAAO;AACR;;;ACZO,SAAS,sBAAiD,QAM7D;AACH,QAAM,EAAE,SAAAC,WAAS,UAAU,cAAc,eAAe,cAAc,IAAI;AAE1E,MAAK,CAAE,YAAY,CAAE,cAAe;AACnC;AAAA,EACD;AAEA,QAAM,eAAe,OACpB,GACA,sBACA,QACA,YACI;AACJ,UAAM,gBAAgB,SAAS;AAC/B,QAAK,CAAE,iBAAmB,OAAO,kBAAkB,YAAY,cAAc,OAAU;AAItF;AAAA,IACD;AAEA,UAAM,kBAAkB,qBAAqB,OAAQ,CAAE,WAAY,OAAO,WAAW,QAAS;AAE9F,YAAS,QAAS;AAAA,MACjB,KAAK;AACJ,cAAM,gBAAgB;AACtB,8BAAuB,iBAAiB,gBAAgB,aAAc;AACtE;AAAA;AAAA,MAGD,KAAK,gBAAgB;AACpB,cAAM,iBAAiB;AAEvB,YAAK,eAAe,YAAY,UAAW;AAC1C,gBAAM,YAAY,eAAe;AACjC,iBAAO,eAAgB,SAAU;AAAA,QAClC;AAEA,8BAAuB,iBAAiB,gBAAgB,cAAe;AACvE;AAAA,MACD;AAAA;AAAA,MAGA,KAAK,gBAAgB;AACpB,cAAM,aAAa;AAEnB,cAAM,iBAAiBA,UAAQ;AAAA,UAC9B,CAAE,WAAY,OAAO,MAAM,kBAAkB,MAAM,WAAW,kBAAkB;AAAA,QACjF;AACA,YAAK,gBAAiB;AACrB,0BAAgB,KAAM,cAAe;AACrC,gCAAuB,iBAAiB,gBAAgB,cAAe;AAAA,QACxE,OAAO;AACN,iBAAO,eAAgB,UAAW;AAAA,QACnC;AACA;AAAA,MACD;AAAA,IACD;AAEA,kBAAe,EAAG;AAClB,kBAAc;AAAA,EACf;AAEA,SAAO;AAEP,WAAS,sBACR,iBACA,QACA,eACC;AACD;AAAA,MACC,gBAAgB,IAAK,CAAE,WAAY,mBAAoB,MAAO,CAAE;AAAA,MAChE;AAAA,MACA,mBAAoB,aAAc;AAAA,IACnC;AAAA,EACD;AACD;;;ACvFA,SAAS,gBAAgB;AAIlB,SAAS,cAAe,UAA2E;AACzG,QAAM,CAAE,YAAY,aAAc,IAAI,SAAU,EAAG;AACnD,QAAM,CAAE,OAAO,QAAS,IAAI,SAA2B,IAAK;AAE5D,QAAM,oBAAoB,CAAE,UAAkD;AAC7E,UAAM,EAAE,MAAM,IAAI,MAAM;AAExB,kBAAe,KAAM;AAErB,QAAK,CAAE,UAAW;AACjB;AAAA,IACD;AAEA,QAAK,CAAE,OAAQ;AACd,eAAU,IAAK;AACf;AAAA,IACD;AAEA,UAAM,EAAE,SAAS,aAAa,IAAI,SAAU,OAAO,aAAc;AAEjE,QAAK,SAAU;AACd,eAAU,IAAK;AAAA,IAChB,OAAO;AACN,eAAU,YAAa;AAAA,IACxB;AAAA,EACD;AAEA,QAAM,kBAAkB,MAAM;AAC7B,kBAAe,EAAG;AAClB,aAAU,IAAK;AAAA,EAChB;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,MACd,UAAU;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,EACD;AACD;AAEO,SAAS,aAAc,cAAuB,OAAQ;AAC5D,QAAM,CAAE,MAAM,OAAQ,IAAI,SAAU,WAAY;AAEhD,QAAM,eAAe,MAAM,QAAS,IAAK;AACzC,QAAM,gBAAgB,MAAM,QAAS,KAAM;AAE3C,SAAO,EAAE,MAAM,cAAc,cAAc;AAC5C;;;ACvDA,SAAS,YAAAC,iBAAgB;AAIlB,SAAS,gBAAiB,QAM7B;AACH,QAAM,EAAE,UAAU,UAAU,eAAe,UAAU,cAAc,IAAI;AAEvE,QAAM,CAAE,SAAS,UAAW,IAAIA,UAAU,KAAM;AAEhD,MAAK,CAAE,UAAW;AACjB,WAAO,EAAE,cAAc,MAAM,SAAS,MAAM;AAAA,EAC7C;AAEA,QAAM,eAAe,OAAQ,UAAmB;AAC/C,eAAY,IAAK;AAEjB,QAAK,UAAW;AACf,YAAM,EAAE,SAAS,aAAa,IAAI,SAAU,OAAO,QAAS;AAE5D,UAAK,CAAE,SAAU;AAChB,iBAAU,YAAa;AACvB,mBAAY,KAAM;AAClB;AAAA,MACD;AAAA,IACD;AAEA,QAAI;AACH,oBAAe,EAAG;AAClB,oBAAc;AACd,YAAM,SAAU,KAAM;AAAA,IACvB,QAAQ;AAAA,IAER,UAAE;AACD,iBAAY,KAAM;AAAA,IACnB;AAAA,EACD;AAEA,SAAO,EAAE,cAAc,QAAQ;AAChC;;;AC5CA,SAAS,2BAA2B;AAI7B,SAAS,iBAA4C,YAKxD;AACH,QAAM,EAAE,SAAAC,WAAS,UAAU,UAAU,WAAW,IAAI;AAEpD,QAAM,SAAS,oBAAiD;AAEhE,QAAM,gBAAgB,CACrB,YACA,WAII;AACJ,UAAM,iBAAiB,SAAS,IAAK,CAAE,WAAY,OAAO,KAAM;AAEhE,UAAM,kBAAkB;AAAA,MACvB,WAAW,OAAQ,CAAE,WAAY,CAAE,eAAe,SAAU,OAAO,KAAM,CAAE;AAAA,MAC3E;AAAA,IACD;AAEA,UAAM,aAAaA,UAAQ,KAAM,CAAE,WAAY,OAAO,eAAe,OAAO,KAAM;AAClF,UAAM,cACL,QAAS,QAAS,KAClB,OAAO,eAAe,MACtB,CAAE,eAAe,SAAU,OAAO,UAAW,KAC7C,CAAE;AAEH,QAAK,aAAc;AAClB,sBAAgB,QAAS;AAAA,QACxB,OAAO,WAAY,OAAO,UAAW;AAAA,QACrC,OAAO,OAAO;AAAA,QACd,QAAQ,gBAAiB,YAAY,YAAY,QAAS;AAAA,QAC1D,KAAK,UAAW,OAAO,UAAW;AAAA,QAClC,SAAS;AAAA,MACV,CAA+B;AAAA,IAChC;AAEA,WAAO;AAAA,EACR;AAEA,SAAO;AACR;;;AL5BA,IAAM,mBAAmB;AAElB,IAAM,wBAA8B,kBAAY,0BAA2B;AAQlF,SAAS,2BACR;AAAA,EACC;AAAA,EACA,SAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACJ,GACA,KACC;AACD,QAAM,EAAE,YAAY,eAAe,OAAO,UAAU,cAAc,IAAI,cAAe,QAAS;AAC9F,QAAM,EAAE,MAAM,cAAc,cAAc,IAAI,aAAc,MAAM,IAAK;AACvE,QAAM,EAAE,cAAc,QAAQ,IAAI,gBAAiB,EAAE,UAAU,UAAU,eAAe,UAAU,cAAc,CAAE;AAElH,QAAM,CAAE,iBAAiB,gBAAiB,IAAI;AAAA,IAC7C,MAAM,CAAEA,WAAS,QAAS,EAAE,IAAK,CAAE,eAAgB,kBAAmB,YAAY,YAAY,MAAO,CAAE;AAAA,IACvG,CAAEA,WAAS,UAAU,YAAY,MAAO;AAAA,EACzC;AAEA,QAAM,eAAe,sBAAuB;AAAA,IAC3C,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,QAAM,gBAAgB,iBAAkB,EAAE,SAAAA,WAAS,UAAU,UAAU,WAAW,CAAE;AAEpF,QAAM,cAAc,QAAS,QAAS;AAEtC,QAAM,WAAW,eAAe,WAAW,SAAS,oBAAoB;AAExE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,YAAa,CAAE,UAAU,gBAAiB;AACzC,eAAO,SAAS,IAAK,CAAE,QAAQ,UAC9B;AAAA,UAAC;AAAA;AAAA,YACA,MAAK;AAAA,YACH,GAAG,YAAa,EAAE,MAAM,CAAE;AAAA,YAC5B,KAAM,OAAO,OAAO,OAAO,SAAS,OAAO;AAAA,YAC3C,OAAQ,OAAO;AAAA;AAAA,QAChB,CACC;AAAA,MACH;AAAA,MACE,GAAK;AAAA,MACP;AAAA,MACA;AAAA,MACA,gBAAiB;AAAA,MACjB,UAAQ;AAAA,MACR,aAAW;AAAA,MACX,eAAa;AAAA,MACb,kBAAgB;AAAA,MAChB,mBAAiB;AAAA,MACjB,UAAW;AAAA,MACX;AAAA,MACA,QAAS;AAAA,MACT,SAAU;AAAA,MACV,sBAAoB;AAAA,MACpB,OAAQ;AAAA,MACR,SAAU;AAAA,MACV,kBACC,QACS,kBAA2C,CAAE,GAAG,iBACtD,qCAAC,aAAU,KAAM,cAAe,OAAgB,CAC9C,IACF;AAAA,MAEJ,aAAc,CAAE,WAAY,qCAAC,SAAQ,GAAG,QAAS;AAAA,MACjD;AAAA,MACA,aAAc,CAAE,WAAY;AAC3B,eACC;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACL,OAAQ,QAAS,KAAM;AAAA,YACvB;AAAA,YACE,GAAG;AAAA,YACL,IAAK,CAAE,WAAoB;AAAA,cAC1B,wDAAwD;AAAA,gBACvD,aAAa,MAAM,QAAS,IAAK;AAAA,gBACjC,cAAc,MAAM,QAAS,IAAK;AAAA,cACnC;AAAA,YACD;AAAA;AAAA,QACD;AAAA,MAEF;AAAA,MACA,UAAW;AAAA,MACX,gBAAiB,CAAE,WAAc,OAAO,WAAW,WAAW,SAAS,OAAO;AAAA,MAC9E,cAAe,CAAE,WAAY;AAC5B,YAAK,OAAO,WAAW,UAAW;AACjC,iBAAO;AAAA,QACR;AAEA,eAAO,OAAO,OAAO,OAAO,SAAS,OAAO;AAAA,MAC7C;AAAA,MACA;AAAA,MACA,SAAU,CAAE,WAAY,OAAO,UAAU;AAAA,MACzC,cAAe,CAAE,aAAa,WAAY;AACzC,cAAM,EAAE,QAAQ,MAAM,IAAI;AAE1B,eACC;AAAA,UAAC;AAAA;AAAA,YACE,GAAG;AAAA,YACL,OAAQ,EAAE,SAAS,SAAS,cAAc,WAAW;AAAA,YACrD,cAAa;AAAA;AAAA,UAEX;AAAA,QACH;AAAA,MAEF;AAAA,MACA,eAAgB,mBAAoB;AAAA,QACnC,aAAa;AAAA,QACb,SAAS,MAAM;AACd,wBAAe,EAAG;AAClB,wBAAc;AAAA,QACf;AAAA,MACD,CAAE;AAAA,MACF,sBAAuB,CAAE,QAAQ,UAAW;AAC3C,YAAK,OAAO,WAAW,UAAW;AACjC,iBAAO,WAAW;AAAA,QACnB;AAEA,eAAO,OAAO,UAAU,MAAM;AAAA,MAC/B;AAAA;AAAA,EACD;AAEF;AAEA,IAAM,QAAQ,CAAE,WAA0D;AACzE,QAAM,KAAK,kBAAmB,MAAM,EAAE,QAAS,MAAM,GAAI,CAAE;AAE3D,SACC,qCAAC,eAAY,MAAK,SAAQ,mBAAkB,MAC3C,qCAAC,qBAAkB,MAAU,KAAG,OAAO,KAAO,GAC9C,qCAAC,oBAAiB,MAAK,aAAY,OAAO,QAAU,CACrD;AAEF;AAMA,IAAM,YAAkB,kBAA2C,CAAE,EAAE,QAAQ,QAAQ,GAAG,QAAS;AAClG,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,IAAK,CAAE,WAAoB;AAAA,QAC1B,SAAS,MAAM,QAAS,CAAE;AAAA,MAC3B;AAAA;AAAA,IAEA,qCAAC,cAAW,SAAQ,WAAU,IAAK,EAAE,OAAO,cAAc,SAAS,eAAe,KAC/E,KACH;AAAA,EACD;AAEF,CAAE;AAEF,IAAM,cAAc,OAAQ,IAAK;AAAA;AAAA,6BAEH,CAAE,EAAE,MAAM,MAAO,MAAM,QAAQ,OAAQ;AAAA;AAAA;AAIrE,IAAM,oBAAoB,OAAQ,GAAI,EAAG,CAAE,EAAE,MAAM,OAAS;AAAA,EAC3D,UAAU;AAAA,EACV,KAAK;AAAA,EACL,SAAS,MAAM,QAAS,GAAG,CAAE;AAAA,EAC7B,OAAO,MAAM,QAAQ,KAAK;AAAA,EAC1B,iBAAiB,MAAM,QAAQ,QAAQ;AACxC,EAAI;AAEJ,IAAM,mBAAmB,OAAQ,IAAK;AAAA;AAAA;;;AM/MtC,YAAYC,YAAW;AACvB,SAA4B,WAAW,WAAAC,UAAS,YAAAC,iBAAgB;AAChE,SAAS,oBAAoB;AAC7B,SAAS,oBAAAC,mBAAkB,2BAAAC,0BAAyB,0BAA0B;AAC9E,SAAS,eAAe,qBAAqB,mBAAmB;AAChE,SAAS,wBAAwB;AACjC,SAAS,qBAAAC,0BAAyB;AAClC;AAAA,EAEC;AAAA,EACA,QAAAC;AAAA,EAEA,SAAAC;AAAA,EAEA;AAAA,EACA,cAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,MAAAC,WAAU;;;ACnBnB,YAAYC,YAAW;AACvB,SAAS,iBAAAC,gBAAe,cAAAC,mBAAkB;AAY1C,IAAM,kBAAkBD,eAA6C,IAAK;AAEnE,IAAM,cAAc,MAAM;AAChC,QAAM,UAAUC,YAAY,eAAgB;AAC5C,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,oDAAqD;AAAA,EACvE;AACA,SAAO;AACR;AAMO,SAAS,iBAAkB,EAAE,UAAU,GAAG,aAAa,GAA2B;AACxF,SAAO,qCAAC,gBAAgB,UAAhB,EAAyB,OAAQ,gBAAiB,QAAU;AACrE;;;AC7BA,YAAYC,YAAW;AAEvB;AAAA,EACC,4BAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,2BAAAC;AAAA,OACM;AACP,SAAS,iBAAiB,oBAAoB;AAC9C,SAAS,UAAU,SAAS,MAAM,iBAAAC,gBAAgC,aAAa;AAC/E,SAAS,MAAAC,WAAU;;;ACTnB,SAAS,UAAAC,eAA0B;AAE5B,IAAM,iBAAiBA,QAAQ,OAAO;AAAA,EAC5C,mBAAmB,CAAE,SAAkB,CAAE,CAAE,gBAAgB,UAAW,EAAE,SAAU,IAAK;AACxF,CAAE;AAAA;AAAA;AAAA;AAAA,qBAaoB,CAAE,EAAE,OAAO,cAAc,SAAS,MAAO;AAC7D,MAAK,cAAe;AACnB,WAAO,MAAM,QAAQ,QAAQ;AAAA,EAC9B;AAEA,QAAM,gBAAgB,WAAY,KAAM;AAExC,SAAO,iBAAiB,MAAM,QAAQ,KAAK;AAC5C,CAAE;AAAA;;;ACzBH,YAAYC,YAAW;AACvB,SAAS,qBAAsC;AAC/C,SAAS,UAAU;;;ACFnB,SAAS,4BAAAC,iCAAgC;AAKlC,IAAM,kCAAkC,MAAM;AACpD,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,EAAE,UAAU,IAAI,KAAK,IAAI,SAAS;AACxC,QAAM,WAAW,UAAU,QAAQ,IAAK,IAAI,EAAE,WAAW,QAAQ,IAAI,GAAG,KAAK,CAAE;AAE/E,QAAM,wBAAwB,YAAYC,0BAA0B,UAAU,OAAO,CAAE;AACvF,QAAM,WAAW,UAAU,YAAY,CAAC;AAExC,QAAM,aAAa,CAAC,EAAI,yBAAyB,SAAS;AAE1D,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,YAAY;AAAA,EACvB;AACD;;;ADVO,IAAM,oBAAoB,CAAE,UAAqB;AACvD,QAAM,EAAE,YAAY,SAAS,IAAI,gCAAgC;AAEjE,SACC,4DACC,qCAAC,iBAAc,IAAK,EAAE,YAAY,WAAW,OAAO,kBAAkB,IAAI,KAAK,IAAI,EAAE,KAClF,GAAI,eAAe,WAAY,CAClC,GACA,qCAAC,mBAAgB,YAA0B,UAAsB,WAAY,MAAM,WAAW,OAAQ,CACvG;AAEF;;;AEtBA,SAAS,aAAa,WAAAC,gBAAe;AACrC,SAAS,uBAAuB;AAEhC,SAAS,0CAA0C;AACnD,SAAS,gBAAgB;AACzB,SAAS,MAAAC,WAAU;;;ACLnB,SAAS,iCAAiC;AAC1C,SAAS,qBAAAC,oBAAmB,yBAAAC,8BAA6B;AACzD,SAAS,uBAAAC,4BAAkD;AAKpD,SAAS,oBAAqB,WAAmB,kBAAkB,WAAY;AACrF,SAAOF,mBAAuC,WAAW,eAAgB,GAAG,SAAS,CAAC;AACvF;AAEO,SAAS,eAAgB,WAAmB,UAA+B,kBAAkB,WAAY;AAC/G,EAAAC,uBAAuB;AAAA,IACtB,IAAI;AAAA,IACJ,OAAO,EAAE,CAAE,eAAgB,GAAGC,qBAAoB,OAAQ,QAAS,EAAE;AAAA,IACrE,aAAa;AAAA,EACd,CAAE;AACF,4BAA2B,IAAK;AACjC;AAEO,SAAS,eAAgB,WAAmB,SAA4B,kBAAkB,WAAY;AAC5G,QAAM,iBAAiBF,mBAAuC,WAAW,eAAgB,GAAG,SAAS,CAAC;AACtG,MAAK,CAAE,eAAe,SAAU,OAAQ,GAAI;AAC3C,WAAO;AAAA,EACR;AAEA,QAAM,kBAAkB,eAAe,OAAQ,CAAE,OAAQ,OAAO,OAAQ;AACxE,iBAAgB,WAAW,iBAAiB,eAAgB;AAC5D,SAAO;AACR;;;ADHO,SAAS,gBAAgB;AAC/B,QAAM,EAAE,IAAI,UAAU,OAAO,YAAY,IAAI,SAAS;AACtD,QAAM,EAAE,QAAQ,IAAI,WAAW;AAE/B,QAAM,aAAa,SAAS;AAC5B,QAAM,eAAe,WAAW;AAEhC,SAAOG,SAAS,MAAM;AACrB,WAAO;AAAA,MACN;AAAA,QACC,IAAI,CAAE,EAAE,QAAQ,MAAmC;AAClD,gBAAM,eAAe;AAErB,qBAAY,OAAQ;AAEpB,iBAAO;AAAA,QACR;AAAA,QACA,MAAM,CAAE,EAAE,QAAQ,GAA+B,iBAAiC;AACjF,uBAAc,OAAQ;AACtB,sBAAa,YAAa;AAAA,QAC3B;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO,gBAAiB,QAAQ,EAAG;AAAA,QACnC,UAAU,CAAE,EAAE,WAAW,MAAO;AAE/B,iBAAOC,IAAI,oBAAoB,WAAY,EAAE,QAAS,MAAM,UAAW;AAAA,QACxE;AAAA,MACD;AAAA,IACD;AAAA,EACD,GAAG,CAAE,UAAU,YAAY,QAAQ,IAAI,cAAc,WAAY,CAAE;AACpE;AAEO,SAAS,kBAAkB;AACjC,QAAM,EAAE,IAAI,UAAU,OAAO,YAAY,IAAI,SAAS;AACtD,QAAM,EAAE,QAAQ,IAAI,WAAW;AAE/B,QAAM,aAAa,SAAS;AAC5B,QAAM,eAAe,WAAW;AAEhC,SAAOD,SAAS,MAAM;AACrB,WAAO;AAAA,MACN;AAAA,QACC,IAAI,CAAE,EAAE,QAAQ,MAAmC;AAClD,gBAAM,eAAe;AAErB,uBAAc,OAAQ;AAEtB,iBAAO;AAAA,QACR;AAAA,QACA,MAAM,CAAE,EAAE,QAAQ,GAA+B,iBAAiC;AACjF,qBAAY,OAAQ;AACpB,sBAAa,YAAa;AAAA,QAC3B;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO,gBAAiB,QAAQ,EAAG;AAAA,QACnC,UAAU,CAAE,EAAE,WAAW,MAAO;AAE/B,iBAAOC,IAAI,oBAAoB,WAAY,EAAE,QAAS,MAAM,UAAW;AAAA,QACxE;AAAA,MACD;AAAA,IACD;AAAA,EACD,GAAG,CAAE,UAAU,YAAY,QAAQ,IAAI,cAAc,WAAY,CAAE;AACpE;AAEO,SAAS,yBAAyB;AACxC,QAAM,EAAE,IAAI,UAAU,OAAO,YAAY,IAAI,SAAS;AAEtD,QAAM,CAAE,UAAU,YAAa,IAAI,mCAAmC,KAAK,CAAE,MAAM,IAAK;AACxF,QAAM,eAAe,UAAU,QAAQ;AAEvC,QAAM,aAAa,SAAS;AAC5B,QAAM,eAAe,WAAW;AAEhC,QAAM,yBAAyBD,SAAS,MAAM;AAC7C,QAAK,CAAE,YAAY,CAAE,cAAe;AACnC;AAAA,IACD;AAEA,WAAO;AAAA,MACN;AAAA,QACC,IAAI,CAAE,EAAE,WAAW,MAAgE;AAClF,gBAAM,eAAe;AAErB,gBAAM,YAAY,aAAc,UAAW;AAC3C,qBAAY,SAAU;AACtB,iBAAO,EAAE,cAAc,UAAU;AAAA,QAClC;AAAA,QACA,MAAM,CAAE,GAA+B,EAAE,cAAc,UAAU,MAAoC;AACpG,uBAAc,SAAU;AACxB,yBAAgB,SAAU;AAE1B,sBAAa,YAAa;AAAA,QAC3B;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAOC,IAAI,SAAS,WAAY;AAAA,QAChC,UAAU,CAAE,EAAE,WAAW,MAAO;AAE/B,iBAAOA,IAAI,cAAc,WAAY,EAAE,QAAS,MAAM,UAAW;AAAA,QAClE;AAAA,MACD;AAAA,IACD;AAAA,EACD,GAAG,CAAE,UAAU,YAAY,cAAc,cAAc,UAAU,aAAa,YAAa,CAAE;AAE7F,MAAK,CAAE,YAAY,CAAE,wBAAyB;AAC7C,WAAO,CAAE,MAAM,IAAK;AAAA,EACrB;AAEA,SAAO,CAAE,UAAU,sBAAuB;AAC3C;AAEA,SAAS,WAAW;AACnB,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,EAAE,OAAO,YAAY,IAAI,SAAS;AACxC,QAAM,EAAE,YAAY,kBAAkB,IAAI,WAAW;AAErD,SAAO;AAAA,IACN,CAAE,mBAAuC;AACxC,YAAM,iBAAiB,kBAAkB;AAEzC,UAAK,eAAe,SAAU,cAAe,GAAI;AAChD,cAAM,IAAI;AAAA,UACT,SAAU,cAAe,kCAAmC,QAAQ,EAAG;AAAA,QACxE;AAAA,MACD;AAEA,YAAM,oBAAoB,CAAE,GAAG,gBAAgB,cAAe;AAC9D,iBAAY,iBAAkB;AAC9B,kBAAa,cAAe;AAAA,IAC7B;AAAA,IACA,CAAE,QAAQ,IAAI,mBAAmB,aAAa,UAAW;AAAA,EAC1D;AACD;AAEA,SAAS,aAAa;AACrB,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,EAAE,IAAI,UAAU,OAAO,YAAY,IAAI,SAAS;AACtD,QAAM,EAAE,YAAY,kBAAkB,IAAI,WAAW;AAErD,SAAO;AAAA,IACN,CAAE,qBAAyC;AAC1C,YAAM,iBAAiB,kBAAkB;AAEzC,UAAK,CAAE,eAAe,SAAU,gBAAiB,GAAI;AACpD,cAAM,IAAI;AAAA,UACT,SAAU,gBAAiB,8BAA+B,QAAQ,EAAG;AAAA,QACtE;AAAA,MACD;AAEA,YAAM,oBAAoB,eAAe,OAAQ,CAAE,OAAQ,OAAO,gBAAiB;AACnF,iBAAY,iBAAkB;AAE9B,UAAK,aAAa,kBAAmB;AACpC,oBAAa,kBAAmB,CAAE,KAAK,IAAK;AAAA,MAC7C;AAAA,IACD;AAAA,IACA,CAAE,UAAU,QAAQ,IAAI,mBAAmB,aAAa,UAAW;AAAA,EACpE;AACD;AAEA,SAAS,aAAa;AACrB,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,qBAAqB,eAAe;AAE1C,SAAOD,SAAS,MAAM;AACrB,UAAM,aAAa,CAAE,QAA8B;AAClD,qBAAgB,QAAQ,IAAI,KAAK,kBAAmB;AAAA,IACrD;AAEA,UAAM,oBAAoB,MAAM,oBAAqB,QAAQ,IAAI,kBAAmB,KAAK,CAAC;AAE1F,WAAO,EAAE,YAAY,kBAAkB;AAAA,EACxC,GAAG,CAAE,oBAAoB,QAAQ,EAAG,CAAE;AACvC;;;AJ9KA,IAAM,SAAkB;AAAA,EACvB,EAAE,KAAK,UAAU,OAAO,MAAM,OAAOE,IAAI,UAAU,WAAY,EAAE;AAAA,EACjE,EAAE,KAAK,SAAS,OAAO,SAAS,OAAOA,IAAI,SAAS,WAAY,EAAE;AAAA,EAClE,EAAE,KAAK,SAAS,OAAO,SAAS,OAAOA,IAAI,SAAS,WAAY,EAAE;AAAA,EAClE,EAAE,KAAK,UAAU,OAAO,UAAU,OAAOA,IAAI,UAAU,WAAY,EAAE;AACtE;AAQO,SAAS,aAAc,EAAE,YAAY,UAAU,MAAM,GAAuB;AAClF,QAAM,EAAE,SAAS,IAAI,YAAY;AACjC,QAAMC,gBAAe,WAAWC,0BAA0B,QAAS,IAAI;AAEvE,QAAM,gBAAgB,CAAE,MAA2C;AAClE,MAAE,gBAAgB;AAAA,EACnB;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,eAAgB,EAAE,OAAO,MAAM,IAAI,EAAE,UAAU,QAAQ,EAAE;AAAA,MACvD,GAAG,SAAU,UAAW;AAAA,MAC1B;AAAA,MACA,cAAe;AAAA,QACd,UAAU;AAAA,QACV,YAAY;AAAA,MACb;AAAA,MACA,iBAAkB;AAAA,QACjB,YAAY;AAAA,QACZ,UAAU;AAAA,MACX;AAAA,MACA,WAAY;AAAA,MAEZ,sBAAoB;AAAA;AAAA,IAElBD,iBAAgB,qCAAC,qBAAkB,YAA0B;AAAA,IAE7D,uBAAwB,EAAE,UAAU,WAAW,WAAW,OAAO,MAAM,CAAE;AAAA,IAC3E,qCAACE,gBAAA,EAAc,IAAK,EAAE,YAAY,WAAW,OAAO,kBAAkB,IAAI,KAAK,IAAI,EAAE,KAClFH,IAAI,UAAU,WAAY,CAC7B;AAAA,IACE,OAAO,IAAK,CAAE,UAAW;AAC1B,aACC;AAAA,QAAC;AAAA;AAAA,UACA,KAAM,MAAM;AAAA,UACZ,OAAQ,MAAM;AAAA,UACd,OAAQ,MAAM;AAAA,UACd,WAAY,WAAW;AAAA;AAAA,MACxB;AAAA,IAEF,CAAE;AAAA,IACF,qCAAC,mBAAgB,WAAY,WAAW,OAAQ;AAAA,EACjD;AAEF;AAEA,SAAS,gBAAiB,EAAE,UAAU,GAA+B;AACpE,QAAM,EAAE,eAAe,aAAa,IAAI,iBAAiB;AAEzD,MAAK,CAAE,cAAc,QAAS;AAC7B,WAAO;AAAA,EACR;AAGA,QAAM,cAAcA,IAAI,aAAa,WAAY,EAAE,QAAS,MAAM,YAAa;AAE/E,SACC,4DACC,qCAAC,aAAQ,GACT,qCAACG,gBAAA,EAAc,IAAK,EAAE,YAAY,WAAW,OAAO,kBAAkB,IAAI,KAAK,IAAI,EAAE,KAClF,WACH,GACE,cAAc,IAAK,CAAE,UAAW;AACjC,WACC;AAAA,MAAC;AAAA;AAAA,QACA,KAAM,MAAM;AAAA,QACZ,OAAQ,MAAM;AAAA,QACd,OAAQ,MAAM;AAAA,QACd;AAAA;AAAA,IACD;AAAA,EAEF,CAAE,CACH;AAEF;AAEA,IAAM,mBAAwD;AAAA,EAC7D,UAAU;AAAA,IACT,OAAOH,IAAI,YAAY,WAAY;AAAA,EACpC;AACD;AAEO,SAAS,mBAAmB;AAClC,QAAM,EAAE,YAAY,IAAI,WAAW;AAEnC,QAAM,EAAE,cAAc,CAAC,EAAE,IAAI;AAE7B,QAAM,gBAAgB,YAAY,IAAK,CAAE,EAAE,OAAO,KAAK,OAAS;AAAA,IAC/D,KAAK;AAAA,IACL;AAAA,IACA,OAAO,iBAAkB,KAAM,GAAG,SAAS;AAAA,EAC5C,EAAI;AAEJ,SAAO;AAAA,IACN;AAAA,IACA,cAAc,YAAY;AAAA,EAC3B;AACD;AAEA,SAAS,kBAAmB,SAAoF;AAC/G,QAAM,EAAE,KAAK,IAAI,SAAS;AAC1B,QAAM,WAAWI,kBAAiB,IAAI,EAAE,KAAM,CAAE,UAAW,MAAM,OAAO,OAAQ;AAEhF,SAAO,OAAO;AAAA,IACb,UAAU,SACR,OAAQ,CAAE,YAAa,KAAK,eAAe,QAAQ,KAAK,UAAW,EACnE,IAAK,CAAE,YAAa,CAAE,QAAQ,KAAK,SAAS,UAAU,IAAK,CAAE,KAAK,CAAC;AAAA,EACtE;AACD;AAEA,SAAS,uBAAwB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACD,GAII;AACH,MAAK,CAAE,UAAW;AACjB,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,mBAAmBA,kBAAiB,iBAAkB,QAAS;AACrE,QAAM,kBAAkB,kBAAkB;AAE1C,QAAM,YAAY,iBAAiB;AACnC,QAAM,aAAa,CAAE;AAErB,QAAM,UAAU;AAAA,IACf,aAAa,qCAAC,uBAAoB,KAAI,gBAAe,WAAwB;AAAA,IAC7E,cAAc,qCAAC,wBAAqB,KAAI,iBAAgB,WAAwB;AAAA,EACjF,EAAE,OAAQ,OAAQ;AAElB,MAAK,QAAQ,QAAS;AACrB,YAAQ;AAAA,MACP;AAAA,QAACD;AAAA,QAAA;AAAA,UACA,KAAI;AAAA,UACJ,IAAK,EAAE,YAAY,WAAW,OAAO,kBAAkB,IAAI,KAAK,IAAI,GAAG,eAAe,aAAa;AAAA;AAAA,QAEjG,kBAAkB,QAAQ;AAAA,MAC7B;AAAA,IACD;AACA,YAAQ,KAAM,qCAAC,WAAQ,KAAI,4BAA2B,CAAG;AAAA,EAC1D;AAEA,SAAO;AACR;AAQA,SAAS,cAAe,EAAE,OAAO,OAAO,WAAW,GAAG,MAAM,GAAwB;AACnF,QAAM,EAAE,IAAI,SAAS,SAAS,IAAI,YAAY;AAC9C,QAAM,EAAE,IAAI,UAAU,OAAO,aAAa,cAAc,oBAAoB,KAAK,IAAI,SAAS;AAC9F,QAAM,EAAE,OAAO,YAAY,IAAI;AAC/B,QAAM,EAAE,QAAQ,IAAIE,yBAAwB;AAE5C,QAAM,iBAAiB,kBAAmB,OAAQ;AAElD,QAAM,kBAAkB,CAAE,SAAS,QAAS,YAAY,EAAG,EAAE;AAE7D,QAAM,WAAW,eAAgB,SAAS,QAAS,KAAK;AACxD,QAAM,WAAW,CAAE,mBAAmB,CAAE;AACxC,QAAM,WAAW,YAAY;AAC7B,QAAM,aAAa,UAAU,eAAe;AAE5C,SACC;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACL,UAAW;AAAA,MACX;AAAA,MACA,IAAK,EAAE,eAAe,aAAa;AAAA,MACnC,SAAU,MAAM;AACf,YAAK,CAAE,UAAW;AACjB,sBAAa,OAAQ;AAAA,QACtB;AACA,oBAAa,YAAY,IAAI,qBAAqB;AAAA,UACjD,SAAS;AAAA,UACT,MAAM;AAAA,UACN,QAAQ,UAAU,WAAW;AAAA,QAC9B,CAAE;AACF,2BAAoB,KAAM;AAC1B,kBAAU;AAAA,MACX;AAAA;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACA,aAAc;AAAA,QACd,SAAUL,IAAI,6DAA6D,WAAY;AAAA;AAAA,MAEvF,qCAAC,SAAM,KAAM,MAAO,WAAU,OAAM,YAAW,YAC5C,YACD;AAAA,QAAC;AAAA;AAAA,UACA,cAAaA,IAAI,aAAa,WAAY;AAAA,UAC1C,UAAW,gCAAiC,YAAY,EAAG;AAAA;AAAA,MAC5D,GAEC,KACH;AAAA,IACD;AAAA,EACD;AAEF;AAEA,SAAS,qBAAsB,EAAE,WAAW,GAAG,MAAM,GAA+B;AACnF,QAAM,EAAE,IAAI,SAAS,OAAO,YAAY,SAAS,IAAI,YAAY;AACjE,QAAM,eAAe,gBAAgB;AAErC,SAAO,UACN;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACL,SAAU,MAAM;AACf,qBAAc,EAAE,SAAS,WAAW,CAAE;AACtC,oBAAa,YAAY,IAAI,gBAAgB;AAAA,UAC5C;AAAA,UACA,YAAY;AAAA,UACZ,QAAQ;AAAA,QACT,CAAE;AACF,kBAAU;AAAA,MACX;AAAA;AAAA,IAEEA,IAAI,UAAU,WAAY;AAAA,EAC7B,IACG;AACL;AAEA,SAAS,oBAAqB,EAAE,UAAU,GAA+B;AACxE,QAAM,EAAE,cAAc,SAAS,IAAI,YAAY;AAC/C,QAAM,EAAE,QAAQ,IAAIK,yBAAwB;AAE5C,MAAK,CAAE,UAAW;AACjB,WAAO;AAAA,EACR;AAEA,QAAM,YAAY,QAAS,QAAS,EAAE;AAEtC,SACC;AAAA,IAAC;AAAA;AAAA,MACA,UAAW,CAAE;AAAA,MACb,SAAU,MAAM;AACf,kBAAU;AACV,qBAAa;AAAA,MACd;AAAA;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACA,aAAc,CAAE;AAAA,QAChB,SAAUL;AAAA,UACT;AAAA,UACA;AAAA,QACD;AAAA;AAAA,MAEEA,IAAI,UAAU,WAAY;AAAA,IAC7B;AAAA,EACD;AAEF;;;AFlQA,IAAM,YAAY;AAEX,SAAS,aAAc,OAA2B;AACxD,QAAM,EAAE,WAAW,MAAM,OAAO,WAAW,OAAO,GAAG,WAAW,IAAI;AACpE,QAAM,EAAE,IAAI,UAAU,OAAO,UAAU,eAAe,aAAa,SAAS,IAAI;AAEhF,QAAM,EAAE,cAAc,IAAI,iBAAiB;AAE3C,QAAM,EAAE,MAAM,aAAa,IAAI,SAAS;AACxC,QAAM,aAAa,cAAe,EAAE,SAAS,UAAU,CAAE;AACzD,QAAM,CAAE,SAAS,UAAW,IAAIM,UAAgC,IAAK;AACrE,QAAM,EAAE,UAAU,GAAG,eAAe,IAAI;AAExC,QAAM,EAAE,QAAQ,IAAIC,yBAAwB;AAE5C,QAAM,CAAE,sBAAsB,EAAE,yBAA0B,IAAIC;AAAA,IAC7D;AAAA,IACA;AAAA,EACD;AAEA,QAAM;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACX,IAAI,YAAa;AAAA,IAChB,OAAO;AAAA,IACP,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,SAAS;AAAA,EACV,CAAE;AAEF,QAAM,QAAQ,QAAQ,UAAU;AAEhC,QAAM,kBAAkB,WAAWC,kBAAiB,iBAAkB,QAAS,GAAG,UAAU;AAC5F,QAAM,cAAc,QAAS,iBAAiB,MAAO,KAAK,QAAS,YAAY,EAAG,GAAG;AAErF,QAAM,iBAAiB,YAAY,KAAK;AAExC,QAAM,aAAaC,SAAS,MAAM;AACjC,QAAK,KAAK,SAAS,aAAc,KAAK,KAAM,GAAI;AAC/C,aAAO,cAAc,KAAM,CAAE,UAAW,MAAM,UAAU,KAAK,KAAM,GAAG;AAAA,IACvE;AAEA,WAAO,KAAK;AAAA,EACb,GAAG,CAAE,KAAK,OAAO,aAAc,CAAE;AAEjC,YAAW,MAAM;AAChB,QAAK,wBAAwB,OAAO,sBAAuB;AAC1D,gCAA0B;AAC1B,mBAAa;AAAA,IACd;AAAA,EAED,GAAG,CAAE,IAAI,oBAAqB,CAAE;AAEhC,SACC,qCAAC,iBAAc,SAAQ,aACtB;AAAA,IAAC;AAAA;AAAA,MACA,KAAM;AAAA,MACJ,GAAG;AAAA,MACL,cAAa,QAAS,KAAM;AAAA,MAC5B,MAAK;AAAA,MACL,IAAK,CAAE,WAAoB;AAAA,QAC1B,2CAA2C,EAAE,QAAQ,MAAM,QAAS,KAAM,EAAE;AAAA,MAC7E;AAAA;AAAA,IAEA;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,MAAO;AAAA,QACP,OACC,YACC,qCAAC,iBAAc,KAAc,GAAG,iBAAiB,GAAI,IAErD,qCAAC,uBAAoB,UAAS,QAAO,OAAQ,OAAQ,IAAG,OAAM;AAAA,QAGhE,SAAU,YAAY,CAAE,KAAK,SAAS,CAAE,YAAY,WAAW;AAAA,QAC/D,OAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,SAAU,MAAM;AACf,cAAK,gBAAiB;AACrB,yBAAc,IAAK;AACnB;AAAA,UACD;AAEA,cAAK,eAAe,UAAW;AAC9B,yBAAa;AACb;AAAA,UACD;AAEA,wBAAe,EAAG;AAAA,QACnB;AAAA,QACA,gBAAe;AAAA,QACf,IAAK,CAAE,WAAoB;AAAA,UAC1B,YAAY;AAAA,UACZ,QAAQ,YAAY,eAAe,CAAE,iBAAiB,SAAS;AAAA,UAC/D,cAAc,GAAI,MAAM,MAAM,eAAe,IAAK;AAAA,UAClD,sBAAsB;AAAA,YACrB,WAAW;AAAA,UACZ;AAAA,QACD;AAAA;AAAA,IACD;AAAA,IACE,CAAE,aACH;AAAA,MAACA;AAAA,MAAA;AAAA,QACA,MAAO,iBAAiB,SAAY,qCAAC,oBAAiB,UAAS,QAAO;AAAA,QACtE,MAAO;AAAA,QACP,OACC,iBACC,qCAACC,QAAA,EAAM,WAAU,OAAM,KAAM,KAAM,YAAW,YAC7C,qCAACC,aAAA,EAAW,SAAQ,aAAY,UAAY,GAC5C,qCAAC,oBAAiB,UAAS,QAAO,CACnC,IACG;AAAA,QAEL,SAAQ;AAAA,QACR,OAAM;AAAA,QACN;AAAA,QACE,GAAG,YAAa,UAAW;AAAA,QAC7B,cAAaC,IAAI,uBAAuB,WAAY;AAAA,QACpD,IAAK,CAAE,WAAoB;AAAA,UAC1B,cAAc,GAAI,MAAM,MAAM,eAAe,IAAK;AAAA,UAClD,cAAc;AAAA,UACd,GAAK,CAAE,iBAAiB,EAAE,aAAa,EAAE,IAAI,CAAC;AAAA,UAC9C,kBAAkB,iBAAiB,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;AAAA,QACvE;AAAA;AAAA,IACD;AAAA,EAEF,GACA,qCAAC,oBAAmB,GAAG,YAAa,cAAe,gBAClD,qCAAC,gBAAa,YAA0B,UAAW,SAAU,OAAgB,CAC9E,CACD;AAEF;AAEA,IAAM,gBAAgB,CAAE,aAAsB;AAC7C,QAAM,SAAS,mBAAoB,UAAU,QAAS;AAEtD,MAAK,OAAO,SAAU;AACrB,WAAO;AAAA,EACR;AAEA,SAAO,OAAO;AACf;;;AV7IA,IAAM,KAAK;AACX,IAAM,aAAa;AAQnB,IAAM,eAAe;AAAA,EACpB,OAAOC,IAAI,SAAS,WAAY;AAAA,EAChC,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO,+BAAgC,QAAS;AAAA,EAChD,MAAM,sCAAC,gBAAW;AAAA,EAClB,UAAU;AACX;AAEO,IAAM,EAAE,MAAM,0BAA0B,QAAQ,+BAA+B,IAAIC,gBAAe;AAOlG,SAAS,mBAAmB;AAClC,QAAMC,YAAU,WAAW;AAE3B,QAAM,EAAE,IAAI,UAAU,OAAO,YAAY,IAAI,SAAS;AAEtD,QAAM,kBAAkB,OAA8B,IAAK;AAC3D,QAAM,CAAE,aAAa,cAAe,IAAIC,UAA2B,IAAK;AAExE,QAAM,eAAe,gBAAgB;AACrC,QAAM,EAAE,QAAQ,UAAU,WAAW,IAAI,gBAAgB;AAEzD,QAAM,iBAAiB,kBAAmBD,SAAQ;AAClD,QAAM,SAAS,eAAe,KAAM,CAAE,WAAY,OAAO,UAAU,QAAS,KAAK;AAEjF,QAAM,kBAAkB,eAAe,MAAO,CAAE,EAAE,MAAM,MAAO,KAAM;AAErE,QAAM,EAAE,QAAQ,IAAIE,yBAAwB;AAE5C,QAAM,UAAU,OAAO,WAAW,QAAS,OAAO,QAAS,EAAE,cAAc;AAE3E,SACC,sCAACC,QAAA,EAAM,GAAI,KACV,sCAACA,QAAA,EAAM,WAAU,OAAM,KAAM,GAAI,YAAW,UAAS,gBAAe,mBACnE,sCAAC,aAAU,SAAU,IAAK,MAAK,WAC5BL,IAAI,WAAW,WAAY,CAC9B,GACA,sCAACK,QAAA,EAAM,WAAU,OAAM,KAAM,KAC5B,sCAAC,8BAAyB,CAC3B,CACD,GACA;AAAA,IAAC;AAAA;AAAA,MACA,MAAO,QAAS,WAAY;AAAA,MAC5B,MAAO,eAAe;AAAA,MACtB,WAAU;AAAA,MACV,OAAQ,gBAAgB,SAAS,sBAAsB,EAAE;AAAA,MACzD,QAAS,CAAE,GAAG,GAAI;AAAA;AAAA,IAElB;AAAA,MAAC;AAAA;AAAA,QACA,IAAK;AAAA,QACL,KAAM;AAAA,QACN,MAAK;AAAA,QACL,aAAc,kBAAkBL,IAAI,mBAAmB,WAAY,IAAI;AAAA,QACvE,SAAUE;AAAA,QACV,UAAW;AAAA,QACX;AAAA,QACA,UAAW;AAAA,QACX,UAAW,UAAU;AAAA,QACrB,UAAW,YAAY;AAAA,QACvB,WAAY;AAAA,QACZ,kBAAmB;AAAA,QACnB,kBAAmB,CAAE,SACpB,sCAACI,OAAA,EAAK,MAAK,QAAO,SAAQ,YAAW,OAAQ,IAAK,IAAK,IAAK,WAAS,MAAC;AAAA,QAEvE,YAAa,CAAE,QAAQ,gBACtB,OAAO,IAAK,CAAE,OAAO,UAAW;AAC/B,gBAAM,YAAY,YAAa,EAAE,MAAM,CAAE;AACzC,gBAAM,WAAW,MAAM,UAAU,QAAQ;AAEzC,gBAAM,cAAc,CAAE,aAAsB;AAC3C,gBAAK,CAAE,MAAM,OAAQ;AACpB,oBAAM,IAAI,MAAO,wCAAyC;AAAA,YAC3D;AACA,wBAAa,MAAM,YAAY,IAAI,gBAAgB;AAAA,cAClD,SAAS,MAAM;AAAA,cACf,UAAU;AAAA,cACV,UAAU,MAAM;AAAA,cAChB,QAAQ;AAAA,YACT,CAAE;AAEF,mBAAO,sBAAuB,MAAM,UAAU,EAAE,OAAO,UAAU,IAAI,MAAM,MAAM,CAAE;AAAA,UACpF;AAEA,iBACC;AAAA,YAAC;AAAA;AAAA,cACA,KAAM,UAAU;AAAA,cAChB,OAAQ,MAAM;AAAA,cACd,OAAQ,MAAM;AAAA,cACd,UAAW,MAAM;AAAA,cACjB,IAAK,MAAM;AAAA,cACX;AAAA,cACA,OAAQ,YAAY,MAAM,QAAQ,MAAM,QAAQ;AAAA,cAChD,MAAO,MAAM;AAAA,cACb;AAAA,cACA,eAAgB,MAAM,YAAa,MAAM,KAAM;AAAA,cAC/C;AAAA,cACA,UAAW;AAAA;AAAA,UACZ;AAAA,QAEF,CAAE;AAAA;AAAA,IAEJ;AAAA,EACD,GACE,CAAE,WACH,sCAAC,aAAU,IAAK,EAAE,IAAI,EAAE,KACrBN,IAAI,oFAA+E,WAAY,CAClG,CAEF;AAEF;AAEA,IAAM,aAAa,CAAE,EAAE,aAAa,QAAQ,MAC3C,sCAACO,MAAA,EAAI,IAAK,EAAE,IAAI,EAAE,KACjB;AAAA,EAACF;AAAA,EAAA;AAAA,IACA,KAAM;AAAA,IACN,YAAW;AAAA,IACX,OAAM;AAAA,IACN,gBAAe;AAAA,IACf,IAAK,EAAE,IAAI,GAAG,GAAG,QAAQ,UAAU,QAAQ;AAAA;AAAA,EAE3C,sCAAC,mBAAgB,IAAK,EAAE,WAAW,gBAAgB,GAAI,UAAS,SAAQ;AAAA,EACxE,sCAACG,aAAA,EAAW,OAAM,UAAS,SAAQ,eAChCR,IAAI,0BAA0B,WAAY,GAC5C,sCAAC,UAAG,GAAE,UACG,aAAa,SACvB;AAAA,EACA,sCAACQ,aAAA,EAAW,OAAM,UAAS,SAAQ,WAAU,IAAK,EAAE,IAAI,EAAE,KACvDR,IAAI,2BAA2B,WAAY,GAC7C,sCAAC,UAAG,GACFA,IAAI,sCAAsC,WAAY,CACzD;AAAA,EACA,sCAAC,QAAK,OAAM,kBAAiB,SAAQ,WAAU,WAAU,UAAS,SAAU,WACzEA,IAAI,qBAAqB,WAAY,CACxC;AACD,CACD;AAGD,IAAM,wBAAwB,CAAE,UAAyB,SAA+B;AACvF,MAAK,CAAE,UAAW;AACjB;AAAA,EACD;AAEA,QAAM,mBAAmBS,kBAAiB,iBAAkB,QAAS;AAErE,MAAK,CAAE,kBAAmB;AACzB;AAAA,EACD;AAEA,SAAO,iBAAiB,QAAQ,SAAU,IAAK;AAChD;AAEA,SAAS,aAAa;AACrB,QAAM,EAAE,QAAQ,IAAI,WAAW;AAE/B,QAAM,qBAAqB,CAAE,aAA8B,CAAC,CAAE,SAAS,QAAQ;AAE/E,SAAO,aAAa,EAClB,OAAQ,kBAAmB,EAC3B,QAA2B,CAAE,aAAc;AAC3C,UAAM,aAAaC,0BAA0B,SAAS,OAAO,CAAE;AAC/D,UAAM,YAAY,SAAS,QAAQ,IAAK,EAAE,WAAW,QAAQ,GAAG,CAAE;AAGlE,QAAK,cAAc,UAAU,WAAW,GAAI;AAC3C,aAAO,CAAE,YAAa;AAAA,IACvB;AAEA,WAAO,UAAU,IAAK,CAAE,aAAc;AACrC,aAAO;AAAA,QACN,OAAO,SAAS;AAAA,QAChB,OAAO,SAAS;AAAA,QAChB,OAAO;AAAA,QACP,OAAO,+BAAgC,2BAA4B,SAAS,OAAO,CAAE,CAAE;AAAA,QACvF,MAAM,aAAa,sCAAC,gBAAW,IAAK;AAAA,QACpC,UAAU,SAAS,OAAO;AAAA,MAC3B;AAAA,IACD,CAAE;AAAA,EACH,CAAE;AACJ;AAEA,SAAS,+BAAgC,OAA0D;AAClG,MAAK,UAAU,UAAW;AACzB,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAEA,SAAS,kBAAkB;AAC1B,QAAM,CAAE,UAAU,YAAa,IAAI,uBAAuB;AAC1D,MAAK,CAAE,YAAY,CAAE,cAAe;AACnC,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,SAAS,CAAE,eAAwB;AACxC,UAAM,EAAE,UAAU,IAAI,aAAc,EAAE,WAAW,CAAE;AACnD,gBAAa,SAAS,OAAO,KAAK,IAAI,gBAAgB;AAAA,MACrD,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,SAAS;AAAA,IACV,CAAE;AAAA,EACH;AAEA,QAAM,WAAW,CAAE,eAAuB,UAA8C;AACvF,QAAK,gBAAiB,QAAS,GAAI;AAClC,aAAO;AAAA,QACN,SAAS;AAAA,QACT,cAAcV;AAAA,UACb;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AACA,WAAOW,oBAAoB,eAAe,KAAM;AAAA,EACjD;AAEA,QAAM,aACL,SAAS,OAAO,YAAY,SAAS,OAAO,SACvC,SAAS,SACX;AAEJ,SAAO,EAAE,QAAQ,UAAU,WAAW;AACvC;AAEA,SAAS,gBAAiB,UAA2B;AACpD,SAAO,SAAS,QAAQ,IAAI,EAAE,UAAU,SAAS;AAClD;AAEA,SAAS,kBAAmBT,WAA4B;AACvD,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,qBAAqB,eAAe;AAE1C,QAAM,aAAa,kBAAuC,QAAQ,IAAI,kBAAmB,GAAG,SAAS,CAAC;AACtG,QAAM,iBAAiBA,UAAQ,OAAQ,CAAE,WAAY,OAAO,SAAS,WAAW,SAAU,OAAO,KAAM,CAAE;AAEzG,QAAM,kCAAkC,eAAe;AAAA,IACtD,CAAE,WAAY,OAAO,YAAYQ,0BAA0B,OAAO,QAAS;AAAA,EAC5E;AAEA,MAAK,CAAE,iCAAkC;AACxC,mBAAe,QAAS,YAAa;AAAA,EACtC;AAEA,SAAO;AACR;AAEA,SAAS,kBAAkB;AAC1B,QAAM,QAAQ,cAAc;AAC5B,QAAM,UAAU,gBAAgB;AAEhC,SAAO,CAAE,kBAAoC,QAAkC,WAA4B;AAC1G,QAAK,CAAE,OAAO,OAAQ;AACrB;AAAA,IACD;AAEA,YAAS,QAAS;AAAA,MACjB,KAAK;AACJ,cAAO,EAAE,SAAS,OAAO,OAAO,YAAY,OAAO,MAAM,CAAE;AAC3D,oBAAa,OAAO,YAAY,IAAI,gBAAgB;AAAA,UACnD,SAAS,OAAO;AAAA,UAChB,QAAQ;AAAA,QACT,CAAE;AACF;AAAA,MAED,KAAK;AACJ,gBAAS,EAAE,SAAS,OAAO,OAAO,YAAY,OAAO,MAAM,CAAE;AAC7D,oBAAa,OAAO,YAAY,IAAI,gBAAgB;AAAA,UACnD,SAAS,OAAO;AAAA,UAChB,QAAQ;AAAA,QACT,CAAE;AACF;AAAA,IACF;AAAA,EACD;AACD;;;AkB5UA,YAAYE,aAAW;AACvB,SAAiD,0BAA0B;AAC3E,SAAS,oBAAAC,yBAA2E;;;ACFpF,SAAS,WAAAC,gBAAe;AACxB;AAAA,EACC,sBAAAC;AAAA,EACA,sBAAAC;AAAA,EAEA,6BAAAC;AAAA,OACM;AACP,SAAS,0BAA0B;AACnC;AAAA,EAEC,oBAAAC;AAAA,OAGM;AACP,SAAS,kCAAAC,uCAA2D;AACpE,SAAS,YAAAC,iBAAgB;AACzB,SAAS,cAAc,oBAAoB;;;AChB3C,SAAS,WAAAC,gBAAe;AACxB;AAAA,EACC;AAAA,EACA,sBAAAC;AAAA,EAEA,mBAAAC;AAAA,EACA;AAAA,OACM;AAEP,SAAS,wBAA2E;AACpF,SAAS,4BAAAC,iCAAqD;AAC9D,SAAS,sCAAsC;AAC/C,SAAS,YAAAC,iBAAgB;AACzB,SAAS,MAAAC,WAAU;;;ACbnB,SAAS,aAAAC,YAAW,kBAAkB;AAI/B,IAAM,oBAAoB,MAAM;AACtC,QAAM,EAAE,SAAS,IAAI,SAAS;AAC9B,QAAM,CAAE,EAAE,QAAS,IAAI,WAAY,CAAE,MAAO,CAAE,GAAG,KAAM;AAEvD,EAAAC,WAAW,MAAM,UAAU,UAAW,QAAS,GAAG,CAAE,QAAS,CAAE;AAChE;;;ADYO,IAAM,wBAAwB;AAE9B,SAAS,gBAAoC,WAAoC;AACvF,QAAM;AAAA,IACL,SAAS,EAAE,IAAI,UAAU;AAAA,EAC1B,IAAI,WAAW;AACf,QAAM,EAAE,IAAI,SAAS,MAAM,UAAU,QAAQ,IAAI,SAAS;AAE1D,QAAM,sBAAsB,mBAAoB,EAAE,WAAW,KAAK,CAAE;AAEpE,oBAAkB;AAElB,QAAM,SAAS,SAAe,EAAE,WAAW,SAAS,UAAU,MAAM,UAAU,CAAE;AAEhF,QAAM,YAAY,CAAE,OAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAiD;AAC7G,QAAK,CAAE,SAAU;AAChB,0BAAqB,EAAE,SAAS,MAAM,UAAU,MAAM,OAAO,gBAAgB,CAAE;AAAA,IAChF,OAAO;AACN,0BAAqB,EAAE,SAAS,UAAU,OAAO,gBAAgB,CAAE;AAAA,IACpE;AAAA,EACD;AAEA,SAAO,EAAE,QAAQ,WAAW,QAAQ;AACrC;AAcA,SAAS,SAA6B,EAAE,SAAS,WAAW,UAAU,MAAM,UAAU,GAAkB;AACvG,MAAK,CAAE,YAAY,CAAE,SAAU;AAC9B,WAAO;AAAA,EACR;AAEA,QAAM,QAAQ,SAAS,QAAQ,IAAK,SAAS,EAAE,UAAU,CAAE;AAE3D,MAAK,CAAE,OAAQ;AACd,UAAM,IAAI,gCAAiC,EAAE,SAAS,EAAE,SAAS,aAAa,SAAS,OAAO,EAAE,EAAE,CAAE;AAAA,EACrG;AAEA,QAAM,UAAU,iBAAkB,OAAO,IAAK;AAE9C,SAAO,OAAO;AAAA,IACb,UAAU,IAAK,CAAE,QAAS,CAAE,KAAK,SAAS,MAAO,GAAI,KAAK,IAAK,CAAE;AAAA,EAClE;AACD;AA6BA,SAAS,mBAAoB;AAAA,EAC5B;AAAA,EACA,MAAM,EAAE,YAAY,MAAM;AAC3B,GAGI;AACH,QAAM,cAAc,eAAe;AAEnC,SAAOC,SAAS,MAAM;AACrB,UAAM,OAAO,EAAE,YAAY,MAAM;AAEjC,UAAM,kBAAkB,EAAE,WAAW,aAAa,MAAM,OAAO,+BAA+B;AAE9F,WAAOC;AAAA,MACN;AAAA,QACC,IAAI,CAAE,YAAoE;AACzE,cAAK,0BAA6C,OAAQ,GAAI;AAC7D,mBAAO,OAAQ,OAA2B;AAAA,UAC3C;AACA,iBAAO,OAAQ,OAA2B;AAAA,QAC3C;AAAA,QACA,MAAM,CAAE,SAAqC,aAAyC;AACrF,gBAAM,uBAAuB,0BAA6C,OAAQ;AAElF,cAAK,sBAAuB;AAC3B,mBAAO,WAAY,SAA4B,QAA8B;AAAA,UAC9E;AACA,iBAAO,KAAM,SAA4B,QAA8B;AAAA,QACxE;AAAA,QACA,MAAM,CAAE,SAAqC,aAAyC;AACrF,gBAAM,uBAAuB,0BAA6C,OAAQ;AAElF,cAAK,sBAAuB;AAC3B,mBAAO,OAAQ,SAA4B,QAA8B;AAAA,UAC1E;AACA,iBAAO,OAAQ,OAA2B;AAAA,QAC3C;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO,CAAE,EAAE,UAAU,QAAQ,MAAO,SAAU,EAAE,UAAU,SAAS,UAAU,CAAE;AAAA,QAC/E,UAAU,CAAE,EAAE,UAAU,SAAS,gBAAgB,MAChD,YAAa,EAAE,UAAU,SAAS,WAAW,gBAAgB,CAAE;AAAA,QAChE,UAAU,EAAE,MAAM,sBAAsB;AAAA,MACzC;AAAA,IACD;AAEA,aAAS,OAAQ,EAAE,MAAM,GAAoB,UAAkD;AAC9F,YAAM,eAAe,mBAAoB,EAAE,GAAG,iBAAiB,OAAO,SAAS,UAAU,eAAe,CAAE;AAE1G,aAAO,EAAE,gBAAgB,aAAa;AAAA,IACvC;AAEA,aAAS,WAAY,GAA+B,EAAE,eAAe,GAAuB;AAC3F,MAAAC,oBAAoB,WAAW,cAAe;AAAA,IAC/C;AAEA,aAAS,OAAQ,EAAE,UAAU,SAAS,MAAM,GAAwC;AACnF,UAAK,CAAE,SAAS,QAAQ,aAAc;AACrC,cAAM,IAAI,qCAAsC;AAAA,UAC/C,SAAS,EAAE,aAAa,SAAS,OAAO,EAAE;AAAA,QAC3C,CAAE;AAAA,MACH;AAEA,YAAM,QAAQ,SAAS,QAAQ,IAAK,SAAS,EAAE,UAAU,CAAE;AAC3D,YAAM,YAAY,gBAAiB,OAAO,IAAK;AAE/C,eAAS,QAAQ,YAAa,EAAE,IAAI,SAAS,MAAM,MAAM,GAAG,EAAE,UAAU,CAAE;AAE1E,aAAO,EAAE,SAAS,UAAU,UAAU;AAAA,IACvC;AAEA,aAAS,KAAM,GAA+B,EAAE,SAAS,UAAU,UAAU,GAAuB;AACnG,eAAS,QAAQ,cAAe,EAAE,IAAI,SAAS,MAAM,OAAO,UAAU,GAAG,EAAE,UAAU,CAAE;AAAA,IACxF;AAAA,EACD,GAAG,CAAE,WAAW,YAAY,OAAO,WAAY,CAAE;AAClD;AAEA,SAAS,gBAAiB,OAA+B,MAAyC;AACjG,MAAK,CAAE,OAAQ;AACd,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,UAAU,iBAAkB,OAAO,IAAK;AAE9C,QAAM,QAAQ,SAAS,SAAS,CAAC;AAEjC,SAAO,gBAAiB,KAAM;AAC/B;AAaA,IAAM,uBAAuB;AAAA,EAC5B,OAAO,CAAE,EAAE,SAAS,MAAgC;AACnD,UAAM,gBAAgB,SAAS,QAAQ;AACvC,WAAO,gBAAgB,WAAY,aAAc,IAAIC,IAAI,SAAS,WAAY;AAAA,EAC/E;AAAA,EACA,UAAU,CAAE,EAAE,UAAU,SAAS,WAAW,gBAAgB,MAAmC;AAC9F,UAAM,aAAa,SAAS,QAAQ,IAAK,SAAS,EAAE,UAAU,CAAE,GAAG;AAEnE,QAAK,CAAE,YAAa;AACnB,YAAM,IAAI,MAAO,SAAU,OAAQ,YAAa;AAAA,IACjD;AAGA,WAAOA,IAAI,oBAAoB,WAAY,EAAE,QAAS,QAAQ,UAAW,EAAE,QAAS,QAAQ,eAAgB;AAAA,EAC7G;AACD;AAUA,IAAM,0BAA0B;AAAA,EAC/B,OAAO,CAAE,EAAE,UAAU,MAAmCC,iBAAiB,SAAU;AAAA,EACnF,UAAU,CAAE,EAAE,gBAAgB;AAAA;AAAA,IAE7BD,IAAI,aAAa,WAAY,EAAE,QAAS,MAAM,eAAgB;AAAA;AAChE;AAEA,SAAS,WAAY,KAAc;AAClC,SAAO,IAAI,OAAQ,CAAE,EAAE,YAAY,IAAI,IAAI,MAAO,CAAE;AACrD;AAEA,IAAM,eAAe,CAAE,UAAiC,YACvD,CAAE,YAAY,CAAE,WAAWE,0BAA0B,SAAS,OAAO,CAAE;AAUjE,IAAM,WAAW,CAAE,EAAE,UAAU,SAAS,UAAU,MAAqB;AAC7E,QAAM,UAAU,aAAc,UAAU,OAAQ;AAEhD,MAAK,SAAU;AACd,WAAO,wBAAwB,MAAO,EAAE,UAAU,CAAE;AAAA,EACrD;AAEA,SAAO,qBAAqB,MAAO,EAAE,SAAqC,CAAE;AAC7E;AAEO,IAAM,cAAc,CAAE,EAAE,UAAU,SAAS,iBAAiB,UAAU,MAAwB;AACpG,QAAM,UAAU,aAAc,UAAU,OAAQ;AAEhD,MAAK,SAAU;AACd,WAAO,wBAAwB,SAAU,EAAE,gBAAgB,CAAE;AAAA,EAC9D;AAEA,SAAO,qBAAqB,SAAU;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AACH;;;AD9NO,IAAM,eAAe,MAAM;AACjC,QAAM;AAAA,IACL,SAAS,EAAE,IAAI,UAAU;AAAA,EAC1B,IAAI,WAAW;AACf,QAAM,EAAE,IAAI,SAAS,MAAM,SAAS,IAAI,SAAS;AACjD,QAAM,QAAQ,UAAU,QAAQ,IAAK,SAAS,EAAE,UAAU,CAAE;AAC5D,QAAM,sBAAsBC,oBAAoB,EAAE,WAAW,KAAK,CAAE;AAEpE,QAAM,iBAAiB,UAAU,UAAU;AAC3C,QAAM,kBAAkB,UAAU,WAAW;AAE7C,oBAAkB;AAElB,QAAM,UAAU,QAAQC,kBAAkB,OAAO,IAAK,IAAI;AAE1D,QAAM,eAAe,CACpB,KACA,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAC3B;AACJ,UAAM,WAAW,EAAE,KAAK,aAAc,SAAU,GAAI,CAAE,EAAE;AAExD,wBAAqB;AAAA,MACpB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,WAAW;AAAA,MACX;AAAA,IACD,CAAgC;AAAA,EACjC;AAEA,QAAM,YAAY,SAAS,YAAY,MAAM,EAAE,KAAK,aAAc,QAAQ,WAAW,GAAI,EAAE,IAAI;AAE/F,SAAO;AAAA,IACN;AAAA,IACA;AAAA,EACD;AACD;AAEA,SAASD,oBAAoB;AAAA,EAC5B;AAAA,EACA,MAAM,EAAE,YAAY,MAAM;AAC3B,GAGI;AACH,QAAM,cAAc,eAAe;AAEnC,SAAOE,SAAS,MAAM;AACrB,UAAM,OAAO,EAAE,YAAY,MAAM;AAEjC,UAAM,kBAAkB,EAAE,WAAW,aAAa,MAAM,OAAOC,gCAA+B;AAE9F,WAAOC;AAAA,MACN;AAAA,QACC,IAAI,CAAE,YAAoE;AACzE,cAAKC,2BAA6C,OAAQ,GAAI;AAC7D,mBAAO,OAAQ,OAA2B;AAAA,UAC3C;AACA,iBAAO,OAAQ,OAA2B;AAAA,QAC3C;AAAA,QACA,MAAM,CAAE,SAAqC,aAAyC;AACrF,cAAKA,2BAA6C,OAAQ,GAAI;AAC7D,mBAAO,WAAY,SAA4B,QAA8B;AAAA,UAC9E;AACA,iBAAO,WAAY,SAA4B,QAA8B;AAAA,QAC9E;AAAA,QACA,MAAM,CAAE,SAAqC,aAAyC;AACrF,cAAKA,2BAA6C,OAAQ,GAAI;AAC7D,mBAAO,OAAQ,SAA4B,QAA8B;AAAA,UAC1E;AACA,iBAAO,OAAQ,OAA2B;AAAA,QAC3C;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAO,CAAE,EAAE,UAAU,QAAQ,MAAO,SAAU,EAAE,UAAU,SAAS,UAAU,CAAE;AAAA,QAC/E,UAAU,CAAE,EAAE,UAAU,SAAS,gBAAgB,MAChD,YAAa,EAAE,UAAU,SAAS,WAAW,gBAAgB,CAAE;AAAA,QAChE,UAAU,EAAE,MAAM,sBAAsB;AAAA,MACzC;AAAA,IACD;AAEA,aAAS,OAAQ,EAAE,UAAU,GAAoB,UAAkD;AAClG,YAAM,eAAeC,oBAAoB;AAAA,QACxC,GAAG;AAAA,QACH,OAAO,CAAC;AAAA,QACR,YAAY,aAAa;AAAA,QACzB,SAAS,UAAU;AAAA,MACpB,CAAE;AAEF,aAAO,EAAE,gBAAgB,aAAa;AAAA,IACvC;AAEA,aAAS,WAAY,GAA+B,EAAE,eAAe,GAAuB;AAC3F,MAAAC,oBAAoB,WAAW,cAAe;AAAA,IAC/C;AAEA,aAAS,OAAQ,EAAE,UAAU,SAAS,UAAU,GAAwC;AACvF,UAAK,CAAE,SAAS,QAAQ,iBAAkB;AACzC,cAAM,IAAI,qCAAsC;AAAA,UAC/C,SAAS,EAAE,aAAa,SAAS,OAAO,EAAE;AAAA,QAC3C,CAAE;AAAA,MACH;AAEA,YAAM,QAAQ,SAAS,QAAQ,IAAK,SAAS,EAAE,UAAU,CAAE;AAC3D,YAAM,gBAAgB,oBAAqB,OAAO,IAAK;AAEvD,eAAS,QAAQ,gBAAiB,EAAE,IAAI,SAAS,MAAM,YAAY,UAAU,GAAG,EAAE,UAAU,CAAE;AAE9F,aAAO,EAAE,SAAS,UAAU,cAAc;AAAA,IAC3C;AAEA,aAAS,WAAY,GAA+B,EAAE,SAAS,UAAU,cAAc,GAAuB;AAC7G,eAAS,QAAQ;AAAA,QAChB,EAAE,IAAI,SAAS,MAAM,YAAY,iBAAiB,EAAE,KAAK,GAAG,EAAE;AAAA,QAC9D,EAAE,UAAU;AAAA,MACb;AAAA,IACD;AAAA,EACD,GAAG,CAAE,WAAW,YAAY,OAAO,WAAY,CAAE;AAClD;AAEA,SAAS,oBAAqB,OAA+B,MAAyC;AACrG,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,QAAM,UAAUN,kBAAkB,OAAO,IAAK;AAE9C,SAAO,SAAS,cAAc;AAC/B;AAEA,SAAS,SAAU,KAAc;AAChC,SAAO,mBAAmB,OAAO,UAAW,mBAAmB,OAAQ,GAAI,CAAE,EAAE,MAAM,OAAO,KAAK,KAAK;AACvG;;;AD7KO,IAAM,qBAAqB,MAAM;AACvC,QAAM,EAAE,UAAU,IAAI,aAAa;AACnC,QAAM,EAAE,IAAI,SAAS,UAAU,KAAK,IAAI,SAAS;AACjD,QAAM;AAAA,IACL,SAAS,EAAE,IAAI,UAAU;AAAA,EAC1B,IAAI,WAAW;AAEf,QAAM,QAAc;AAAA,IACnB,MAAQ,WAAW,WAAW,SAAS,QAAQ,IAAK,SAAS,EAAE,UAAU,CAAE,IAAI;AAAA,IAC/E,CAAE,SAAS,UAAU,SAAU;AAAA,EAChC;AAEA,QAAM,aAAa,QAAS,WAAW,KAAK,KAAK,CAAE;AAEnD,QAAM,sBAA4B,gBAAS,MAAM;AAChD,QAAK,YAAa;AACjB,aAAO;AAAA,IACR;AAEA,WAAO,sBAAuB,OAAO,IAAK;AAAA,EAC3C,GAAG,CAAE,YAAY,OAAO,IAAK,CAAE;AAE/B,MAAK,CAAE,YAAa;AACnB,QAAK,qBAAsB;AAC1B,aAAO,sCAAC,oBAAe;AAAA,IACxB;AACA,WAAO;AAAA,EACR;AAEA,SAAO,sCAAC,kBAAe,UAAW,WAAW,4BAA6B,SAAS,OAAO,CAAE,IAAI,QAAY;AAC7G;AAEA,IAAM,wBAAwB,CAC7B,OACA,SACa;AACb,MAAK,CAAE,SAAS,CAAE,MAAO;AACxB,WAAO;AAAA,EACR;AAEA,QAAM,SAAW,KAAK,cAAc;AACpC,QAAM,OAAO,mBAAmB;AAChC,QAAM,QAAQ,KAAK;AAEnB,WAAS,OAAQ,MAAsB,gBAA+C;AACrF,QAAK,CAAE,OAAQ;AACd,aAAO;AAAA,IACR;AAEA,UAAM,UAAU;AAAA,MACfO,kBAAkB,OAAO;AAAA,QACxB,YAAY,KAAK;AAAA,QACjB;AAAA,MACD,CAAE,GAAG,YAAY,KAAK,KAAK;AAAA,IAC5B;AAEA,QAAK,KAAK,OAAO,QAAS;AACzB,aAAO;AAAA,IACR;AAEA,eAAY,SAAS,KAAK,YAAY,CAAC,GAAI;AAC1C,YAAM,MAAM,OAAQ,OAAO,kBAAkB,OAAQ;AAErD,UAAK,QAAQ,QAAY;AACxB,eAAO;AAAA,MACR;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAEA,SAAO,QAAS,OAAQ,MAAM,KAAM,CAAE;AACvC;;;AIlFA,YAAYC,aAAW;AACvB,SAAS,wBAAwB,mCAAmC;AACpE,SAAS,sBAAAC,2BAA0B;AACnC,SAAS,OAAO,WAAW,aAAa,wBAAwB;AAChE,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,gBAAgB;AACzB,SAAS,kBAAAC,uBAAsB;AAC/B,SAAS,0BAAAC,+BAA8B;AACvC,SAAS,qBAAqB;AAC9B,SAAS,MAAAC,YAAU;;;ACTnB,SAAS,yCAAyC;AAE3C,IAAM,EAAE,4BAA4B,uBAAuB,IAAI,kCAAkC;;;ACFxG,SAAS,kBAAkB;;;ACA3B,YAAYC,aAAW;AAEvB,SAAS,YAAY,eAAe;AAEpC,IAAM,OAAO;AASE,SAAR,OAAyB,EAAE,OAAO,UAAU,MAAM,MAAM,MAAM,QAAQ,GAAiB;AAC7F,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,SACC,sCAAC,WAAQ,WAAU,OAAM,OAAgB,OAAQ,QAChD,sCAAC,cAAW,cAAa,OAAQ,MAAO,MAAO,WAC9C,sCAAC,QAAK,UAAW,MAAO,CACzB,CACD;AAEF;;;ACzBA,YAAYC,aAAW;AAEvB,SAAS,6BAA6B;AACtC,SAAS,aAAa,eAAAC,cAAa,cAAAC,aAAY,SAAS,WAAAC,UAAS,iBAAAC,sBAAqB;AAEtF,IAAMC,QAAO;AASN,SAAS,cAAe,EAAE,OAAO,UAAU,MAAM,MAAM,MAAM,SAAS,eAAe,GAAwB;AACnH,QAAM,EAAE,YAAY,cAAc,aAAa,IAAI,0BAA0B;AAE7E,MAAK,CAAE,SAAU;AAChB,WAAO;AAAA,EACR;AAEA,SACC,8DACC,sCAACF,UAAA,EAAQ,WAAU,OAAM,SACxB,sCAACD,aAAA,EAAW,cAAa,OAAQ,MAAOG,OAAS,GAAG,gBACnD,sCAAC,QAAK,UAAWA,OAAO,CACzB,CACD,GACA;AAAA,IAAC;AAAA;AAAA,MACA,mBAAiB;AAAA,MACjB,cAAe;AAAA,QACd,UAAU;AAAA,QACV,YAAY;AAAA,MACb;AAAA,MACA,iBAAkB;AAAA,QACjB,UAAU;AAAA,QACV,YAAY;AAAA,MACb;AAAA,MACA,YAAa;AAAA,QACZ,IAAI,EAAE,IAAI,IAAI;AAAA,MACf;AAAA,MACE,GAAG;AAAA;AAAA,IAEL,sCAAC,kBAAe,OAAQ,WAAW,OAAQ;AAAA,EAC5C,CACD;AAEF;AAEO,SAAS,4BAA4B;AAC3C,QAAM,EAAE,QAAQ,IAAI,sBAAsB;AAC1C,QAAM,aAAaD,eAAe,EAAE,SAAS,UAAU,CAAE;AAEzD,QAAM,eAAeH,aAAa,UAAW;AAC7C,QAAM,eAAe,YAAa,UAAW;AAE7C,QAAM,UAAU,CAAE,MAAyB;AAC1C,iBAAa,QAAS,CAAE;AACxB,YAAS,IAAK;AAAA,EACf;AAEA,QAAM,UAAU,MAAM;AACrB,iBAAa,QAAQ;AACrB,YAAS,KAAM;AAAA,EAChB;AAEA,QAAM,QAAQ,MAAM;AACnB,eAAW,MAAM;AACjB,YAAS,KAAM;AAAA,EAChB;AAEA,SAAO;AAAA,IACN,YAAY,EAAE,GAAG,YAAY,MAAM;AAAA,IACnC,cAAc,EAAE,GAAG,cAAc,QAAQ;AAAA,IACzC,cAAc,EAAE,GAAG,cAAc,QAAQ;AAAA,EAC1C;AACD;;;AFvEO,IAAM,qBAAqB,WAAY;AAAA,EAC7C,YAAY;AAAA,IACX;AAAA,IACA;AAAA,EACD;AACD,CAAE;;;AGCF,IAAM,WAAW,oBAAI,IAAuC;AAE5D,IAAM,mBAAmB;AAElB,IAAM,kCAAkC,CAAE;AAAA,EAChD;AAAA,EACA,WAAW;AAAA,EACX,GAAG;AACJ,MAAwF;AACvF,WAAS,IAAK,IAAI,EAAE,GAAG,OAAO,SAAS,CAAE;AAC1C;AAEO,IAAM,6BAA6B,CACzC,SACA,gBAEA,MAAM,KAAM,SAAS,OAAO,CAAE,EAC5B,OAAQ,CAAE,EAAE,UAAU,MAAO,UAAW,SAAS,WAAY,CAAE,EAC/D,KAAM,CAAE,GAAG,MAAO,EAAE,WAAW,EAAE,QAAS,IAAK,CAAE,KAAK;;;AC7BzD,YAAYK,aAAW;AACvB,SAAS,OAAO,OAAAC,YAAW;AAEpB,SAAS,2BAA2B;AAC1C,SACC,sCAACA,MAAA,EAAI,MAAK,SAAQ,IAAK,EAAE,WAAW,QAAQ,GAAG,EAAE,KAChD,sCAAC,SAAM,UAAS,SAAQ,IAAK,EAAE,IAAI,GAAG,UAAU,KAAK,WAAW,SAAS,KACxE,sCAAC,gBAAO,sBAAoB,CAC7B,CACD;AAEF;;;ACXA,SAAS,YAAAC,iBAAgB;AACzB,YAAYC,aAAW;AACvB,SAAS,0BAA0B;AACnC,SAAS,WAAAC,UAAS,SAAAC,SAAO,KAAK,UAAU,MAAM,eAAe;AAC7D,SAAS,MAAAC,YAAU;;;ACJnB,YAAYC,aAAW;AACvB,SAAS,iBAAAC,gBAA+B,cAAAC,aAAY,aAAAC,YAAW,UAAAC,SAAQ,YAAAC,iBAAgB;AACvF,SAAS,UAAAC,eAAc;AAQvB,IAAM,gBAAgBL,eAAiD,MAAU;AAEjF,IAAM,cAAcK,QAAQ,KAAM;AAAA;AAAA;AAAA;AAKlC,IAAM,2BAA4C;AAE3C,SAAS,eAAgB,EAAE,SAAS,GAA6B;AACvE,QAAM,CAAE,WAAW,YAAa,IAAID,UAA6B,wBAAyB;AAC1F,QAAM,MAAMD,QAA0B,IAAK;AAC3C,QAAM,YAAYA,QAAkB,CAAE;AAEtC,EAAAD,WAAW,MAAM;AAChB,UAAM,gBAAgB,IAAI;AAE1B,QAAK,CAAE,eAAgB;AACtB;AAAA,IACD;AAEA,UAAM,eAAe,MAAM;AAC1B,YAAM,EAAE,UAAU,IAAI;AAEtB,UAAK,YAAY,UAAU,SAAU;AACpC,qBAAc,MAAO;AAAA,MACtB,WAAY,YAAY,UAAU,SAAU;AAC3C,qBAAc,IAAK;AAAA,MACpB;AAEA,gBAAU,UAAU;AAAA,IACrB;AAEA,kBAAc,iBAAkB,UAAU,YAAa;AAEvD,WAAO,MAAM;AACZ,oBAAc,oBAAqB,UAAU,YAAa;AAAA,IAC3D;AAAA,EACD,CAAE;AAEF,SACC,sCAAC,cAAc,UAAd,EAAuB,OAAQ,EAAE,UAAU,KAC3C,sCAAC,eAAY,OAAc,QAAU,CACtC;AAEF;AAEO,SAAS,qBAAqB;AACpC,SAAOD,YAAY,aAAc,GAAG,aAAa;AAClD;;;AC3DA,SAAS,iBAAAK,gBAAe,cAAAC,mBAAkB;AAS1C,IAAM,yBAAmC;AAAA,EACxC,yBAAyB;AAAA,IACxB,UAAU,CAAE,WAAW,UAAW;AAAA,IAClC,OAAO,CAAC;AAAA,EACT;AAAA,EACA,YAAY;AACb;AAEA,IAAM,8BAA8BC,eAAyD;AAAA,EAC5F,eAAe;AAAA,IACd,yBAAyB,uBAAuB;AAAA,IAChD,YAAY;AAAA,EACb;AAAA,EACA,aAAa;AAAA,IACZ,yBAAyB,uBAAuB;AAAA,IAChD,YAAY;AAAA,EACb;AAAA,EACA,aAAa;AAAA,IACZ,yBAAyB,uBAAuB;AAAA,IAChD,YAAY;AAAA,EACb;AACD,CAAE;AAEK,IAAM,0BAA0B,MAAM;AAC5C,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,WAAWC,YAAY,2BAA4B,EAAG,QAAQ,IAAK;AACzE,SAAO,YAAY;AACpB;;;ACpCA,SAAS,YAAAC,iBAAgB;AACzB,SAAS,uBAAuB,6BAA6B;AAItD,IAAM,oBAAoB,CAAO,KAAa,iBAAqB;AACzE,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,SAAS,0BAA2B,QAAQ,EAAG,IAAK,GAAI;AAC9D,QAAM,cAAc,sBAA4B,MAAO;AACvD,QAAM,CAAE,OAAO,QAAS,IAAIC,UAAU,eAAe,YAAa;AAElE,QAAM,WAAW,CAAE,aAAiB;AACnC,0BAAuB,QAAQ,QAAS;AACxC,aAAU,QAAS;AAAA,EACpB;AAEA,SAAO,CAAE,OAAO,QAAS;AAC1B;;;ACjBA,YAAYC,aAAW;AACvB,SAAS,mBAAmB,8BAA8B;;;ACD1D,YAAYC,aAAW;AACvB,SAAS,YAA4B;AAE9B,SAAS,aAAc,OAAmB;AAChD,SAAO,sCAAC,QAAK,gBAAc,MAAC,WAAU,OAAQ,GAAG,OAAQ;AAC1D;;;ADCO,IAAM,kBAAkB,MAAM;AACpC,QAAM,EAAE,QAAQ,IAAI,WAAW;AAE/B,SACC,sCAAC,oBACA,sCAAC,0BAAuB,WAAY,QAAQ,IAAK,CAClD;AAEF;;;AEdA,YAAYC,aAAW;AAEvB,SAAS,8BAA8B;;;ACFvC,YAAYC,aAAW;AACvB,SAAiD,SAAAC,QAAO,UAAAC,eAAc;AACtE,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,YAAAC,WAAU,WAAAC,UAAS,gBAAgB,cAAc,SAAAC,cAAa;;;ACHvE,SAAS,iBAAAC,gBAAe,cAAAC,mBAAkB;AAG1C,IAAM,yBAAyB;AAExB,IAAM,oBAAoBD,eAAkD,IAAK;AAExF,IAAM,gBAAgB,MAAMC,YAAY,iBAAkB;AAEnD,IAAM,kBAAkB,MAAc;AAC5C,QAAM,aAAa,cAAc;AAEjC,SAAO,YAAY,SAAS,eAAe;AAC5C;;;ACbA,YAAYC,aAAW;AACvB,SAAyB,YAAAC,iBAAgB;AACzC,SAAS,oBAAoB;AAC7B,SAAS,QAAQ,UAAU,SAAAC,QAAO,UAAAC,eAAc;AAChD,SAAS,MAAAC,WAAU;AAYnB,IAAM,oBAAoBD,QAAQ,KAAM;AAAA;AAAA;AAAA,UAG7B,CAAE,EAAE,MAAM,MAAO,MAAM,QAAS,CAAE,CAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQxC,IAAM,qBAAqB,CAAE,EAAE,UAAU,cAAc,OAAO,WAAW,KAAK,MAAgC;AACpH,QAAM,CAAE,MAAM,OAAQ,IAAIF,UAAU,WAAY;AAEhD,QAAM,eAAe,MAAM;AAC1B,YAAS,CAAE,aAAc,CAAE,QAAS;AAAA,EACrC;AAEA,SACC,sCAACC,QAAA,MACA,sCAACA,QAAA,EAAM,IAAK,EAAE,UAAU,WAAW,KAClC;AAAA,IAAC;AAAA;AAAA,MACA,WAAS;AAAA,MACT,MAAK;AAAA,MACL,OAAM;AAAA,MACN,SAAQ;AAAA,MACR,SAAU;AAAA,MACV,SAAU,sCAAC,gBAAa,MAAc;AAAA,MACtC,IAAK,EAAE,IAAI,IAAI;AAAA,MACf,cAAa,OAAO,cAAc;AAAA;AAAA,IAEhC,OAAOE,IAAI,aAAa,WAAY,IAAIA,IAAI,aAAa,WAAY;AAAA,EACxE,GACE,YAAY,sCAAC,yBAAoB,oBAAqB,UAAU,IAAK,CAAG,CAC3E,GACA,sCAAC,YAAS,IAAK,MAAO,SAAQ,QAAO,eAAa,QAC/C,QACH,CACD;AAEF;AAEO,SAAS,oBAA0B,OAA8B,QAAqB;AAC5F,MAAK,OAAO,UAAU,YAAa;AAClC,WAAS,MAA8B,MAAO;AAAA,EAC/C;AAEA,SAAO;AACR;;;AFhDO,SAAS,QAAS,EAAE,OAAO,UAAU,kBAAkB,OAAO,UAAU,gBAAgB,KAAK,GAAW;AAC9G,QAAM,CAAE,QAAQ,SAAU,IAAI,kBAAmB,OAAO,CAAC,CAAE,eAAgB;AAC3E,QAAM,MAAMC,QAAuB,IAAK;AAExC,QAAM,cAAc,MAAM;AACzB,cAAW,CAAE,MAAO;AAAA,EACrB;AAEA,QAAM,KAAKC,OAAM;AACjB,QAAM,UAAU,SAAU,EAAG;AAC7B,QAAM,YAAY,WAAY,EAAG;AAEjC,SACC,8DACC;AAAA,IAAC;AAAA;AAAA,MACA,IAAK;AAAA,MACL,iBAAgB;AAAA,MAChB,cAAa,GAAI,KAAM;AAAA,MACvB,SAAU;AAAA,MACV,IAAK,EAAE,WAAW,EAAE,iBAAiB,cAAc,EAAE;AAAA;AAAA,IAErD,sCAACC,QAAA,EAAM,WAAU,OAAM,YAAW,UAAS,cAAa,SAAQ,UAAW,GAAI,KAAM,OACpF;AAAA,MAAC;AAAA;AAAA,QACA,WAAY;AAAA,QACZ,0BAA2B,EAAE,OAAO,gBAAgB,SAAS,WAAW,YAAY,OAAO;AAAA,QAC3F,IAAK,EAAE,UAAU,GAAG,YAAY,GAAG,iBAAiB,EAAE;AAAA;AAAA,IACvD,GACE,oBAAqB,UAAU,MAAO,CACzC;AAAA,IACA,sCAACC,eAAA,EAAa,MAAO,QAAS,OAAM,aAAY,UAAS,QAAO;AAAA,EACjE,GACA;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,IAAK;AAAA,MACL,mBAAkB;AAAA,MAClB,IAAK;AAAA,MACL,SAAQ;AAAA,MACR;AAAA;AAAA,IAEA,sCAAC,kBAAkB,UAAlB,EAA2B,OAAQ,OACnC,sCAACF,QAAA,EAAM,KAAY,KAAM,KAAM,GAAI,GAAI,cAAa,GAAI,KAAM,sBAC3D,QACH,CACD;AAAA,EACD,GACA,sCAACG,UAAA,IAAQ,CACV;AAEF;;;AG/DA,YAAYC,aAAW;AACvB,SAAS,iCAAiC;AAE1C,SAAS,WAAAC,UAAS,UAAAC,eAAc;;;ACHhC,YAAYC,aAAW;;;ACAvB;AAAA,EAEC;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;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEP;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA,sBAAAC;AAAA,OACM;AAUP,IAAM,eAAe;AAAA,EACpB,OAAO,EAAE,WAAW,cAAc,QAAQ,QAAQ,cAAc,kBAAkB;AAAA,EAClF,aAAa,EAAE,WAAW,iBAAiB,QAAQ,QAAQ,cAAc,qBAAqB;AAAA,EAC9F,MAAM,EAAE,WAAW,aAAa,QAAQ,QAAQ,cAAcC,oBAAmB;AAAA,EACjF,UAAU,EAAE,WAAW,iBAAiB,QAAQ,QAAQ,cAAcA,oBAAmB;AAAA,EACzF,MAAM,EAAE,WAAW,aAAa,QAAQ,eAAe,cAAc,iBAAiB;AAAA,EACtF,QAAQ,EAAE,WAAW,sBAAsB,QAAQ,eAAe,cAAcA,oBAAmB;AAAA,EACnG,MAAM,EAAE,WAAW,aAAa,QAAQ,UAAU,cAAc,iBAAiB;AAAA,EACjF,OAAO,EAAE,WAAW,cAAc,QAAQ,QAAQ,cAAc,kBAAkB;AAAA,EAClF,KAAK,EAAE,WAAW,YAAY,QAAQ,QAAQ,cAAcA,oBAAmB;AAAA,EAC/E,QAAQ,EAAE,WAAW,eAAe,QAAQ,eAAe,cAAc,oBAAoB;AAAA,EAC7F,QAAQ,EAAE,WAAW,eAAe,QAAQ,eAAe,cAAc,mBAAmB;AAAA,EAC5F,YAAY,EAAE,WAAW,mBAAmB,QAAQ,QAAQ,cAAc,OAAU;AAAA,EACpF,aAAa,EAAE,WAAW,iBAAiB,QAAQ,QAAQ,cAAc,qBAAqB;AAAA,EAC9F,YAAY,EAAE,WAAW,gBAAgB,QAAQ,eAAe,cAAcA,oBAAmB;AAAA,EACjG,QAAQ,EAAE,WAAW,eAAe,QAAQ,QAAQ,cAAcA,oBAAmB;AAAA,EACrF,aAAa,EAAE,WAAW,iBAAiB,QAAQ,QAAQ,cAAc,qBAAqB;AAAA,EAC9F,kBAAkB,EAAE,WAAW,sBAAsB,QAAQ,QAAQ,cAAc,iBAAiB;AACrG;AAQA,IAAM,mBAAN,MAAuB;AAAA,EACtB,YAA8BC,mBAAoC;AAApC,4BAAAA;AAC7B,SAAK,mBAAmBA;AAAA,EACzB;AAAA,EAEA,IAAK,MAAsC;AAC1C,WAAO,KAAK,iBAAkB,IAAK,GAAG;AAAA,EACvC;AAAA,EAEA,UAAW,MAAoB;AAC9B,WAAO,KAAK,iBAAkB,IAAK,GAAG;AAAA,EACvC;AAAA,EAEA,gBAAiB,MAAoB;AACpC,WAAO,KAAK,iBAAkB,IAAK,GAAG;AAAA,EACvC;AAAA,EAEA,WAA4B;AAC3B,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,SACC,MACA,WACA,QAEA,cACC;AACD,QAAK,KAAK,iBAAkB,IAAK,GAAI;AACpC,YAAM,IAAI,kCAAmC,EAAE,SAAS,EAAE,aAAa,KAAK,EAAE,CAAE;AAAA,IACjF;AACA,SAAK,iBAAkB,IAAK,IAAI,EAAE,WAAW,QAAQ,aAAa;AAAA,EACnE;AAAA,EAEA,WAAY,MAAe;AAC1B,QAAK,CAAE,KAAK,iBAAkB,IAAK,GAAI;AACtC,YAAM,IAAI,8BAA+B,EAAE,SAAS,EAAE,aAAa,KAAK,EAAE,CAAE;AAAA,IAC7E;AAEA,WAAO,KAAK,iBAAkB,IAAK;AAAA,EACpC;AACD;AAEO,IAAM,mBAAmB,IAAI,iBAAkB,YAAa;;;ADxF5D,IAAM,UAAU,CAA2B,EAAE,OAAO,KAAK,MAA0B;AACzF,QAAM,gBAAgB,iBAAiB,IAAK,IAAK;AACjD,QAAM,EAAE,QAAQ,IAAI,WAAW;AAE/B,MAAK,CAAE,eAAgB;AACtB,UAAM,IAAI,yBAA0B;AAAA,MACnC,SAAS,EAAE,aAAa,KAAK;AAAA,IAC9B,CAAE;AAAA,EACH;AAGA,SAAO,sCAAC,iBAAgB,GAAG,OAAQ,SAAU,EAAE,WAAW,QAAQ,GAAG,GAAI;AAC1E;;;AErCA,YAAYC,aAAW;AAEvB,SAAS,OAAAC,MAAoB,UAAAC,eAAc;AAEpC,IAAM,uBAAuB,CAAE,EAAE,UAAU,OAAO,MAA8D;AACtH,MAAK,WAAW,UAAW;AAC1B,WAAO;AAAA,EACR;AAEA,SAAO,sCAAC,mBAAgB,UAAoB,QAAU;AACvD;AAEA,IAAM,kBAAkBA,QAAQD,MAAK;AAAA,EACpC,mBAAmB,CAAE,SAAkB,CAAE,CAAE,QAAS,EAAE,SAAU,IAAK;AACtE,CAAE,EAA2C,CAAE,EAAE,QAAQ,MAAM,OAAS;AAAA,EACvE,SAAS;AAAA,EACT,SAAS,MAAM,QAAS,CAAE;AAAA,EAC1B,GAAG,cAAe,MAAO;AAC1B,EAAI;AAEJ,IAAM,gBAAgB,CAAE,YAA6B;AAAA,EACpD,gBAAgB;AAAA,EAChB,GAAG,iBAAkB,MAAO;AAC7B;AAEA,IAAM,mBAAmB,CAAE,WAA2B;AACrD,MAAK,WAAW,QAAS;AACxB,WAAO;AAAA,MACN,qBAAqB;AAAA,IACtB;AAAA,EACD;AAEA,MAAK,WAAW,eAAgB;AAC/B,WAAO;AAAA,MACN,YAAY;AAAA,MACZ,qBAAqB;AAAA,IACtB;AAAA,EACD;AACD;;;ACtCA,YAAYE,aAAW;AACvB,SAAS,WAAAC,gBAAe;AACxB,SAAS,iBAAiB,oBAAuC;AACjE,SAAS,6BAAAC,kCAAiC;AAC1C;AAAA,EAEC,mBAAAC;AAAA,EACA;AAAA,EACA,yBAAAC;AAAA,EACA;AAAA,OACM;AACP;AAAA,EAEC,mBAAAC;AAAA,EACA;AAAA,OAMM;AACP,SAAS,YAAAC,iBAAgB;AACzB,SAAS,MAAAC,WAAU;;;ACtBnB;AAAA,EAGC;AAAA,EACA;AAAA,OAIM;AACP,SAAS,yBAAAC,wBAAuB,0BAA0B,yBAAAC,8BAA6B;AAMhF,SAAS,2BAA4B,8BAAqE;AAChH,SAAO,OAAO,OAAQ,4BAA6B,EACjD,KAAK,EACL,OAAQ,CAAE,WAAW,OAAO,SAAU,KAAK,QAAS,SAAU,MAAM,KAAM;AAC7E;AAEO,SAAS,iBACf,QACA,cACA,aACA,eACA,WACS;AACT,MAAK,CAAE,aAAa,QAAS;AAC5B,WAAO;AAAA,EACR;AAEA,SAAO,aAAa;AAAA,IACnB,CAAE,WAAW,eAAgB;AAC5B,YAAM,OAAO,WAAW,MAAO,GAAI;AACnC,YAAM,iBAAiB,EAAE,GAAG,eAAe,GAAG,UAAU;AACxD,YAAM,WAAW,YAAa,aAAa,gBAAgB,IAAK;AAEhE,UAAK,CAAE,UAAW;AACjB,eAAO;AAAA,MACR;AAEA,YAAM,mBAAmB;AAAA,QACxB,gBAAgB,gBAAiB,SAAS,cAAc,aAAc;AAAA,QACtE,WAAW,gBAAiB,SAAS,cAAc,cAAe;AAAA,MACnE;AAEA,UAAK,CAAE,iBAAiB,UAAU,OAAQ;AACzC,cAAM,WAAW,qBAAsB;AAAA,UACtC,qBAAqB,iBAAiB,UAAU;AAAA,UAChD;AAAA,UACA,eAAe;AAAA,UACf,cAAc,SAAS;AAAA,UACvB;AAAA,QACD,CAAE;AAEF,eAAO;AAAA,UACN,GAAG;AAAA,UACH,GAAG,YAAa,MAAM,UAAU,cAAe;AAAA,QAChD;AAAA,MACD;AAEA,UAAK,CAAE,iBAAiB,eAAe,OAAQ;AAC9C,cAAM,aAAa,iCAA2C,EAAE,MAAM,YAAY,UAAU,CAAE;AAE9F,uCAAgC,EAAE,MAAM,YAAY,UAAU,CAAE;AAEhE,eAAO;AAAA,UACN,GAAG;AAAA,UACH,GAAG,YAAa,MAAM,cAAgB,SAAS,SAAoB,cAAe;AAAA,QACnF;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAAA,IACA,EAAE,GAAG,OAAO;AAAA,EACb;AACD;AAEA,SAAS,YAAa,QAAqB,eAAuB,MAAkC;AACnG,MAAK,CAAE,KAAK,QAAS;AACpB,WAAO;AAAA,EACR;AAEA,QAAM,CAAE,aAAa,GAAG,IAAK,IAAI;AACjC,QAAM,WAAW,OAAQ,WAAY;AAErC,MAAK,CAAE,UAAW;AACjB,WAAO;AAAA,EACR;AAEA,SAAO,KAAK;AAAA,IACX,CAAE,MAAuB,KAAK,UAC7B,iBAAkB,EAAE,MAAM,KAAK,OAAO,MAAM,eAAe,YAAY,CAAE;AAAA,IAC1E;AAAA,EACD;AACD;AAEA,SAAS,iBAAkB,OAOvB;AACH,QAAM,EAAE,KAAK,IAAI;AAEjB,MAAK,CAAE,MAAM,MAAO;AACnB,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,KAAK,OAAO,MAAM,eAAe,YAAY,IAAI;AAEzD,UAAS,KAAK,MAAO;AAAA,IACpB,KAAK;AACJ,YAAM,QAAQ,aAAc,KAAK,MAAO,GAAG,QAAQ,CAAE,GAAG,aAAc;AACtE,YAAM,OAAS,OAAO,UAAsB;AAE5C,aAAO;AAAA,QACN,EAAE,CAAE,WAAY,GAAG,KAAK,aAAc,IAAK,EAAE;AAAA,QAC7C;AAAA,QACA,KAAK,MAAO,GAAG,QAAQ,CAAE;AAAA,MAC1B;AAAA,IACD,KAAK;AACJ,aAAO,KAAK;AAAA,IACb,KAAK;AACJ,aAAO,KAAK,MAAO,GAAI;AAAA,EACzB;AAEA,SAAO,KAAM,GAAyB;AACvC;AAEA,SAAS,YAAa,MAAgB,OAAc,QAAiB;AACpE,QAAM,aAAa,KAAM,CAAE;AAC3B,QAAM,WAAmB,EAAE,GAAG,OAAO;AAErC,OAAK,OAAQ,CAAE,OAAsB,KAAK,UAAW;AACpD,QAAK,CAAE,OAAQ;AACd,aAAO;AAAA,IACR;AAEA,QAAK,UAAU,KAAK,SAAS,GAAI;AAChC,YAAO,GAAI,IAAI,SAAS;AAExB,aAAS,MAAO,GAAI,GAAG,SAAqB,MAAM;AAAA,IACnD;AAEA,WAAS,MAAO,GAAI,GAAG,SAAqB,MAAM;AAAA,EACnD,GAAG,QAAS;AAEZ,SAAO,EAAE,CAAE,UAAW,GAAG,SAAU,UAAW,KAAK,KAAK;AACzD;AAEA,SAAS,qBAAsB,OAM3B;AACH,QAAM,EAAE,qBAAqB,YAAY,eAAe,cAAc,UAAU,IAAI;AACpF,QAAM,WAAW,oBAAoB,KAAM,CAAE,SAAU,KAAK,QAAS,GAAG,YAAY;AACpF,QAAM,eAAe,aAAc,WAAW,MAAO,GAAI,GAAG,aAAc,KAAK;AAE/E,6BAA4B;AAAA,IAC3B,MAAM;AAAA,IACN;AAAA,IACA,OAAO;AAAA,EACR,CAAE;AAEF,SAAO;AACR;AAEA,SAAS,2BAA4B,EAAE,MAAM,WAAW,MAAM,GAAyD;AACtH,QAAM,SAAS,aAAc,SAAU;AACvC,QAAM,aAAa,iCAAkC,EAAE,MAAM,UAAU,CAAE;AAEzE,MAAK,YAAa;AACjB;AAAA,EACD;AAEA,QAAM,MAAM,GAAI,MAAO,IAAK,IAAK;AAEjC,EAAAA,uBAAuB,KAAK,KAAM;AACnC;AAEA,SAAS,iCAAuC,EAAE,MAAM,UAAU,GAAyC;AAC1G,QAAM,SAAS,aAAc,SAAU;AACvC,QAAM,MAAM,GAAI,MAAO,IAAK,IAAK;AAEjC,SAAOD,uBAA4B,GAAI,KAAK;AAC7C;AAEA,SAAS,+BAAgC,EAAE,MAAM,UAAU,GAAyC;AACnG,QAAM,SAAS,aAAc,SAAU;AACvC,QAAM,MAAM,GAAI,MAAO,IAAK,IAAK;AAEjC,2BAA0B,GAAI;AAC/B;;;ACrMO,IAAM,2BAA2B,CAAE,EAAE,OAAO,MAAgC;AAClF,QAAM,iBAAiC;AAAA,IACtC,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM,CAAC;AAAA,IACP,UAAU,CAAC;AAAA,IACX,SAAS;AAAA,IACT,OAAO;AAAA,EACR;AAEA,SAAO;AACR;;;AFqBA,IAAME,yBAAwB;AAEvB,IAAM,gBAAgB,CAAE,EAAE,MAAM,UAAU,gBAAgB,MAA2B;AAC3F,QAAM;AAAA,IACL,SAAS,EAAE,IAAI,UAAU;AAAA,IACzB,aAAa,EAAE,aAAa,+BAA+B,CAAC,EAAE;AAAA,EAC/D,IAAI,WAAW;AAEf,QAAM,uBAAuB,mBAAiC,WAAW,OAAO,KAAM,WAAY,CAAE;AAEpG,QAAM,iBAAiBC,SAAS,MAAM;AACrC,WAAO,kBAAmB,sBAAsB,WAAY;AAAA,EAC7D,GAAG,CAAE,sBAAsB,WAAY,CAAE;AAEzC,QAAM,QAAQ,EAAE,CAAE,IAAK,GAAG,iBAAkB,IAAK,KAAK,KAAK;AAE3D,QAAM,WAAW,yBAA0B,EAAE,QAAQ,YAAY,CAAE;AAEnE,QAAM,4BAA4B,6BAA8B;AAAA,IAC/D;AAAA,IACA;AAAA,EACD,CAAE;AAGF,QAAM,WAAW,CAAE,UAAkB,IAAmB,CAAC,GAAG,SAAyB;AACpF,UAAM,EAAE,cAAc,KAAK,IAAI,QAAQ,CAAC;AACxC,UAAM,aAAa,2BAA4B,4BAA6B;AAE5E,UAAM,WAAW,iBAAkB,UAAU,YAAY,aAAa,gBAAgB,SAAU;AAChG,QAAK,aAAc;AAClB,gCAA2B,QAAS;AAAA,IACrC,OAAO;AACN,MAAAC,uBAAuB,EAAE,IAAI,WAAW,OAAO,UAAU,aAAa,MAAM,CAAE;AAAA,IAC/E;AAAA,EACD;AAEA,QAAM,aAAa,CAAE,SAAoB,CAAEC,iBAAiB,MAAM,cAAc,cAAe,EAAE;AAEjG,SACC,sCAAC,gBAAa,UAAsB,OAAgB,UAAsB,cACzE,sCAAC,mBAAgB,QAAgB,QAAU,CAC5C;AAEF;AAEA,SAAS,6BAA8B;AAAA,EACtC;AAAA,EACA;AACD,GAGI;AACH,SAAOF,SAAS,MAAM;AACrB,WAAOG;AAAA,MACN;AAAA,QACC,IAAI,CAAE,gBAAwB;AAC7B,gBAAM,gBAAgB,mBAAoB,WAAW,OAAO,KAAM,WAAY,CAAE;AAEhF,UAAAF,uBAAuB,EAAE,IAAI,WAAW,OAAO,aAAsB,aAAa,MAAM,CAAE;AAC1F,UAAAG,2BAA2B,IAAK;AAEhC,iBAAO;AAAA,QACR;AAAA,QAEA,MAAM,CAAE,CAAC,GAAG,cAAe;AAC1B,UAAAH,uBAAuB,EAAE,IAAI,WAAW,OAAO,WAAW,aAAa,MAAM,CAAE;AAAA,QAChF;AAAA,MACD;AAAA,MACA;AAAA,QACC,OAAOI,iBAAiB,SAAU;AAAA;AAAA,QAElC,UAAUC,IAAI,aAAa,WAAY,EAAE,QAAS,MAAM,eAAgB;AAAA,QACxE,UAAU,EAAE,MAAMP,uBAAsB;AAAA,MACzC;AAAA,IACD;AAAA,EACD,GAAG,CAAE,WAAW,eAAgB,CAAE;AACnC;AAEA,SAAS,kBAAmB,QAAgB,QAA8B;AACzE,MAAK,CAAE,QAAS;AACf,WAAO;AAAA,EACR;AAEA,QAAM,WAAmB,CAAC;AAE1B,aAAY,CAAE,KAAK,KAAM,KAAK,OAAO,QAAS,MAAO,GAAI;AACxD,QAAK,UAAU,QAAQ,UAAU,QAAY;AAC5C,eAAU,GAAI,IAAI;AAClB;AAAA,IACD;AAEA,UAAM,WAAW,OAAQ,GAAI;AAE7B,QAAK,CAAE,UAAW;AACjB,eAAU,GAAI,IAAI;AAClB;AAAA,IACD;AAEA,aAAU,GAAI,IAAI,iBAAkB,OAAO,QAAS;AAAA,EACrD;AAEA,SAAO;AACR;;;AG5HA,IAAM,qBAAyE;AAAA,EAC9E,UAAU,oBAAI,IAAI;AAAA,EAClB,QAAQ,oBAAI,IAAI;AACjB;AAEA,IAAMQ,oBAAmB;AAElB,IAAM,aAAa;AAAA,EACzB,UAAU;AAAA,EACV,QAAQ;AACT;AAEO,IAAM,yBAAyB,CAAE;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAWA;AACZ,MAAkD;AACjD,qBAAoB,SAAU,EAAE,IAAK,IAAI,EAAE,IAAI,WAAW,SAAS,CAAE;AACtE;AAEO,IAAM,qBAAqB,CAAE,cACnC,MAAM,KAAM,mBAAoB,SAAU,EAAE,OAAO,CAAE,EACnD,KAAM,CAAE,GAAG,MAAO,EAAE,WAAW,EAAE,QAAS,EAC1C,IAAK,CAAE,EAAE,IAAI,WAAW,UAAU,OAAS,EAAE,IAAI,UAAU,EAAI;;;ACpClE,YAAYC,aAAW;AAEvB,SAAS,mBAAmB,wBAAwB;AACpD,SAAS,SAAAC,cAAa;AAEf,IAAM,eAAe,CAAE,EAAE,SAAS,MAAoC;AAC5E,SACC,sCAACA,QAAA,EAAM,WAAU,OAAM,YAAW,UAAS,cAAa,SAAQ,KAAM,QACrE,sCAAC,wBAAmB,QAAU,GAC9B,sCAAC,uBAAkB,CACpB;AAEF;;;ARAA,IAAM,UAAUC,QAAQ,MAAO;AAAA;AAAA;AAIxB,IAAM,kBAAkB,CAAE,EAAE,SAAS,EAAE,OAAO,KAAK,EAAE,MAA8C;AACzG,MAAK,CAAE,iBAAiB,IAAK,MAAM,IAAoB,GAAI;AAC1D,WAAO;AAAA,EACR;AAEA,QAAM,SAAS,MAAM,MAAM,UAAU,iBAAiB,UAAW,MAAM,IAAoB;AAC3F,QAAM,eAAe,0BAA2B,MAAM,KAAM;AAE5D,MAAK,WAAW,UAAW;AAC1B,iBAAa,QAAQ,MAAM;AAAA,EAC5B;AAEA,MAAK,SAAS,mBAAoB;AACjC,WAAO,sCAAC,iBAAc,SAAU,OAAQ,QAAkB,cAA8B;AAAA,EACzF;AAEA,SACC,sCAAC,iBAAc,MAAO,MAAM,MAAO,iBAAkB,MAAM,SAAS,MAAM,QACzE,sCAAC,iBAAc,SAAU,OAAQ,QAAkB,cAA8B,CAClF;AAEF;AAEA,IAAM,gBAAgB,CAAE;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACD,MAIO;AACN,QAAM,cAAc,QAAQ;AAE5B,SACC,sCAAC,6BAA0B,OAAQ,mBAAoB,UAAW,KAC/D,QAAQ,MAAM,cAAc,sCAACC,UAAA,IAAQ,GACvC,sCAAC,WAAQ,aAAU,oBAClB,sCAAC,wBAAqB,UACnB,QAAQ,SAAS,WAAW,WAAW,sCAAC,oBAAe,QAAQ,KAAO,IAAkB,MAC1F,sCAAC,WAAY,MAAO,aAAc,OAAQ,cAAe,CAC1D,CACD,CACD;AAEF;AAEA,SAAS,0BAA2B,OAAmC;AACtE,MAAK,MAAM,kBAAmB;AAC7B,UAAM,iBAAiB,iBAAiB,IAAK,MAAM,gBAAgC;AACnF,UAAM,gBAAgB,iBAAiB,gBAAiB,MAAM,gBAAgC;AAC9F,YAAQ;AAAA,MACP,GAAG;AAAA,MACH,oBAAoB;AAAA,QACnB,WAAW;AAAA,QACX,OAAO,MAAM,qBAAqB,CAAC;AAAA,QACnC,cAAc;AAAA,MACf;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;;;AJpEO,IAAM,cAAc,MAAM;AAChC,QAAM,EAAE,aAAa,QAAQ,IAAI,WAAW;AAC5C,QAAM,kBAAkB,wBAAwB;AAEhD,QAAM,oBAAoB,CAAE,cAC3B,gBAAgB,wBAAwB,UAAU,SAAU,SAAU;AAEvE,SACC,sCAAC,0BAAuB,QAAS,QAAQ,MACxC,sCAAC,oBACE,YAAY,SAAS,IAAK,CAAE,SAAS,UAAW;AACjD,QAAK,UAAW,OAAQ,GAAI;AAC3B,aAAO,sCAAC,mBAAgB,KAAM,OAAQ,SAAS,OAAQ,GAAI,SAAoB;AAAA,IAChF;AAEA,UAAM,EAAE,MAAM,MAAM,IAAI;AAExB,QAAK,SAAS,WAAY;AACzB,aACC;AAAA,QAAC;AAAA;AAAA,UACA,OAAQ,MAAM;AAAA,UACd,KAAM,OAAO,MAAM;AAAA,UACnB,iBAAkB,kBAAmB,MAAM,KAAM;AAAA;AAAA,QAE/C,MAAM,OAAO,IAAK,CAAE,SAAU;AAC/B,cAAK,UAAW,IAAK,GAAI;AACxB,mBAAO,sCAAC,mBAAgB,KAAM,OAAQ,MAAM,OAAQ,GAAI,SAAU,MAAO;AAAA,UAC1E;AAGA,iBAAO;AAAA,QACR,CAAE;AAAA,MACH;AAAA,IAEF;AAEA,WAAO;AAAA,EACR,CAAE,CACH,CACD;AAEF;AAEA,SAAS,OAAQ,SAAmC,SAAmB;AACtE,MAAK,QAAQ,SAAS,WAAY;AACjC,WAAO,QAAQ,MAAM,OAAO,MAAM,QAAQ;AAAA,EAC3C;AAEA,SAAO,QAAQ,MAAM,OAAO,MAAM,QAAQ;AAC3C;AAEA,SAAS,UAAW,SAA4D;AAC/E,SAAO,QAAQ,SAAS,aAAa,QAAQ,SAAS;AACvD;;;Aa/DA,YAAYC,aAAW;AACvB,SAAS,YAAAC,kBAAgB;AACzB,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AAEpC,SAAS,kBAAAC,uBAAsB;AAC/B,SAAS,0BAAAC,+BAA8B;AACvC,SAAS,OAAAC,MAAK,WAAAC,UAAS,SAAAC,eAAa;AACpC,SAAS,MAAAC,YAAU;;;ACRnB,YAAYC,aAAW;AACvB,SAAS,iBAAAC,gBAAuC,cAAAC,mBAAkB;AAClE,SAAS,iBAAiB,qBAAAC,0BAAyB;AACnD,SAAS,uBAAAC,4BAAkD;AAC3D,SAAS,sBAAAC,2BAA0B;AACnC,SAAS,uBAAuB;AAChC,SAAS,oBAAAC,yBAAwB;;;ACNjC;AAAA,EACC;AAAA,EACA;AAAA,OAKM;;;ACPP,SAAS,yBAAyB;;;ACK3B,IAAM,gBAAgB;AAE7B,IAAM,qBAAqB;AAEpB,IAAM,cAAc,CAAE,UAAiC,SAAS;AAEhE,IAAM,mBAAmB,CAAE,eAAmD,cAAc;AAE5F,IAAM,+BAA+B,CAC3C,kBACA,SACA,SAEA,iBAAiB;AAAA,EAChB,CAAE;AAAA,IACD;AAAA,IACA,SAAS;AAAA,MACR,MAAM,EAAE,YAAY,MAAM;AAAA,IAC3B;AAAA,EACD,MAAO,MAAM,OAAO,WAAW,eAAe,KAAK,cAAc,UAAU,KAAK;AACjF;;;ADRM,SAAS,uBACf,iBACA,iBACkC;AAClC,QAAM,8BAA8B,gCAAiC,eAAgB;AACrF,QAAM,+BAAkE,CAAC;AAEzE,QAAM,qCAAqC,CAC1C,qBACA,kBACA,UACI;AACJ,UAAM,uBAAuB,iBAAkB,mBAAoB;AACnE,UAAM,WAAW,YAAa,KAAM;AAEpC,QAAK,CAAE,6BAA8B,oBAAqB,GAAI;AAC7D,mCAA8B,oBAAqB,IAAI;AAAA,QACtD,CAAE,aAAc,GAAG;AAAA,UAClB,gBAAiB,EAAE,YAAY,qBAAqB,OAAO,KAAK,CAAE;AAAA,UAClE;AAAA,UACA,CAAC;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAEA,QAAK,SAAS,CAAE,6BAA8B,oBAAqB,EAAG,QAAS,GAAI;AAClF,mCAA8B,oBAAqB,EAAG,QAAS,IAAI;AAAA,QAClE,gBAAiB,EAAE,YAAY,qBAAqB,MAAM,CAAE;AAAA,QAC5D;AAAA,QACA,6BAA8B,oBAAqB;AAAA,QACnD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAEA,SAAO,CAAE,SAAqC;AAC7C,UAAM,EAAE,YAAY,MAAM,IAAI;AAE9B,UAAM,WAAW,YAAa,KAAM;AACpC,UAAM,gBAAgB,iBAAkB,UAAW;AAEnD,QAAK,6BAA8B,aAAc,IAAK,QAAS,GAAI;AAElE,aAAO,6BAA8B,aAAc,EAAG,QAAS,EAAE;AAAA,IAClE;AAEA,UAAM,mBAAmB,CAAE,GAAG,4BAA6B,aAAc,GAAG,UAAW;AAEvF,qBAAiB,QAAS,CAAE,cAAc,UAAW;AACpD,YAAM,qBAAqB,QAAQ,IAAI,iBAAkB,QAAQ,CAAE,IAAI;AAEvE;AAAA,QACC;AAAA,QACA,qBAAqB,6BAA8B,kBAAmB,IAAI;AAAA,QAC1E;AAAA,MACD;AAAA,IACD,CAAE;AAEF,WAAO,6BAA8B,aAAc,IAAK,QAAS,GAAG;AAAA,EACrE;AACD;AASA,SAAS,gCAAiC,MAAmD;AAC5F,QAAM,cAAqD,CAAC;AAE5D,QAAM,WAAW,CAAE,MAAsB,WAA6B;AACrE,UAAM,EAAE,IAAI,SAAS,IAAI;AAEzB,gBAAa,EAAG,IAAI,SAAS,CAAE,GAAG,MAAO,IAAI,CAAC;AAE9C,cAAU,QAAS,CAAE,UAAW;AAC/B,eAAU,OAAO,CAAE,GAAK,YAAa,EAAG,KAAK,CAAC,GAAK,EAAG,CAAE;AAAA,IACzD,CAAE;AAAA,EACH;AAEA,WAAU,IAAK;AAEf,SAAO;AACR;AAGA,SAAS,uBACR,QACA,kBACA,mBACA,OACiC;AACjC,QAAM,cAAc,+BAAgC,MAAO;AAE3D,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,MACN,UAAU,eAAgB,CAAE,YAAY,UAAU,mBAAoB,aAAc,GAAG,QAAS,CAAE;AAAA,MAClG,uBAAuB;AAAA,IACxB;AAAA,EACD;AAEA,SAAO;AAAA,IACN,UAAU,eAAgB;AAAA,MACzB,YAAY;AAAA,MACZ,mBAAoB,KAAM,GAAG;AAAA,MAC7B,kBAAmB,aAAc,GAAG;AAAA,IACrC,CAAE;AAAA,IACF,uBAAuB,eAAgB;AAAA,MACtC,YAAY;AAAA,MACZ,mBAAoB,KAAM,GAAG;AAAA,IAC9B,CAAE;AAAA,EACH;AACD;AAGA,SAAS,+BAAgC,QAAgE;AACxG,QAAM,WAAsC,CAAC;AAE7C,SAAO,QAAS,CAAE,cAAe;AAChC,UAAM;AAAA,MACL,SAAS,EAAE,MAAM;AAAA,IAClB,IAAI;AAEJ,WAAO,QAAS,KAAM,EAAE,QAAS,CAAE,CAAE,KAAK,KAAM,MAAO;AACtD,YAAM,gBAAgB,kBAAmB,KAAM;AAE/C,UAAK,kBAAkB,MAAO;AAC7B;AAAA,MACD;AAEA,UAAK,CAAE,SAAU,GAAI,GAAI;AACxB,iBAAU,GAAI,IAAI,CAAC;AAAA,MACpB;AAEA,YAAM,oBAAuC;AAAA,QAC5C,GAAG;AAAA,QACH,OAAO;AAAA,MACR;AAEA,eAAU,GAAI,EAAE,KAAM,iBAAkB;AAAA,IACzC,CAAE;AAAA,EACH,CAAE;AAEF,SAAO;AAAA,IACN;AAAA,IACA,uBAAuB;AAAA,EACxB;AACD;AAGA,SAAS,eAAgB,WAAyD;AACjF,QAAM,WAAsC,CAAC;AAE7C,YAAU,OAAQ,OAAQ,EAAE;AAAA,IAAS,CAAE,oBACtC,OAAO,QAAS,eAA6C,EAAE,QAAS,CAAE,CAAE,KAAK,MAAO,MAAO;AAC9F,UAAK,CAAE,SAAU,GAAI,GAAI;AACxB,iBAAU,GAAI,IAAI,CAAC;AAAA,MACpB;AAGA,eAAU,GAAI,IAAI,SAAU,GAAI,EAAE,OAAQ,MAAO;AAAA,IAClD,CAAE;AAAA,EACH;AAEA,SAAO;AACR;;;ADvKO,SAAS,wBACf,WACA,iBACuB;AACvB,QAAM,sBAAsB,gCAAiC,SAAU;AAEvE,QAAM,YAAY,CAAE,EAAE,YAAY,MAAM,MACvC,sBAAuB,iBAAkB,UAAW,CAAE,IAAK,YAAa,KAAM,CAAE,KAAK,CAAC;AAEvF,SAAO;AAAA,IACN,aAAa,uBAAwB,WAAW,eAAgB;AAAA,IAChE,qBAAqB,CAAE,UAAU,MAAM,qBAAsB;AAC5D,YAAM,CAAE,OAAO,GAAG,UAAW,IAAI;AAEjC,UAAI,mBAAmB,SAAU,KAAM,KAAK,CAAC;AAE7C,UAAK,WAAW,SAAS,GAAI;AAC5B,cAAM,iBAAiB,kBAAmB,kBAAkB,UAAW;AAEvE,2BAAmB,iBACjB,IAAK,CAAE,EAAE,OAAO,YAAY,GAAG,KAAK,OAAS;AAAA,UAC7C,GAAG;AAAA,UACH,OAAO,eAAgB,YAAY,YAAY,cAAe;AAAA,QAC/D,EAAI,EACH,OAAQ,CAAE,EAAE,OAAO,WAAW,MAAO,CAAE,QAAS,UAAW,CAAE;AAAA,MAChE;AAEA,aAAO;AAAA,IACR;AAAA,EACD;AACD;AAEA,SAAS,gCAAiC,WAAwD;AACjG,QAAM,uBAAgD,CAAC;AAEvD,YAAU,QAAS,CAAE,aAAc;AAClC,UAAM,WAAW,qBAAsB,SAAS,EAAG,GAAG,OAAO,KAAK;AAGlE,aAAS,SAAS,QAAS,CAAE,YAAa;AACzC,YAAM,EAAE,KAAK,IAAI;AACjB,YAAM,EAAE,OAAO,WAAW,IAAI;AAE9B,YAAM,gBAAgB,iBAAkB,UAAW;AACnD,YAAM,WAAW,YAAa,KAAM;AAEpC,UAAK,CAAE,qBAAsB,aAAc,GAAI;AAC9C,6BAAsB,aAAc,IAAI,CAAC;AAAA,MAC1C;AAEA,YAAM,iBAAiB,qBAAsB,aAAc;AAE3D,UAAK,CAAE,eAAgB,QAAS,GAAI;AACnC,uBAAgB,QAAS,IAAI,CAAC;AAAA,MAC/B;AAEA,qBAAgB,QAAS,EAAE,KAAM;AAAA,QAChC,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAAA,EACH,CAAE;AAEF,SAAO;AACR;AAEA,SAAS,eAAgB,OAAkB,MAAiB,gBAAkD;AAC7G,MAAK,CAAE,SAAS,OAAO,UAAU,UAAW;AAC3C,WAAO;AAAA,EACR;AAEA,MAAK,uBAAwB,gBAAgB,KAAM,GAAI;AACtD,WAAO;AAAA,EACR;AAEA,SAAO,KAAK,OAAQ,CAAE,cAAyB,QAAoC;AAClF,QAAK,CAAE,cAAe;AACrB,aAAO;AAAA,IACR;AAEA,QAAK,gBAAiB,YAAa,GAAI;AACtC,aAAO,aAAa,QAAS,GAAI,KAAK;AAAA,IACvC;AAEA,QAAK,OAAO,iBAAiB,UAAW;AACvC,aAAO,aAAc,GAAiC,KAAK;AAAA,IAC5D;AAEA,WAAO;AAAA,EACR,GAAG,KAAM;AACV;AAEA,SAAS,uBAAwB,gBAAsC,OAA4B;AAClG,SAAO,CAAC,CAAE,kBAAkB,gBAAiB,KAAM,KAAK,eAAe,QAAQ,MAAM;AACtF;AAEA,IAAM,oBAAoB,CAAE,UAAoB,SAA0C;AACzF,MAAK,CAAE,YAAY,SAAS,SAAS,SAAU;AAC9C,WAAO;AAAA,EACR;AAEA,SACC,OAAO,OAAQ,SAAS,UAAW,EAAE,KAAM,CAAE,SAAoB;AAChE,WAAO,CAAC,CAAE,KAAK,OAAQ,CAAE,cAA+B,QAAiB;AACxE,UAAK,cAAc,SAAS,UAAW;AACtC,eAAO;AAAA,MACR;AAEA,YAAM,EAAE,MAAM,IAAI;AAElB,UAAK,MAAO,GAAI,GAAI;AACnB,eAAO,MAAO,GAAI;AAAA,MACnB;AAEA,aAAO;AAAA,IACR,GAAG,IAAK;AAAA,EACT,CAAE,KAAK;AAET;;;ADtHA,IAAMC,WAAUC,eAA8C,IAAK;AAE5D,SAAS,yBAA0B,EAAE,SAAS,GAAuB;AAC3E,QAAM,YAAY,iBAAiB;AAEnC,QAAM,kBAAkBC,oBAAmB;AAE3C,QAAM,EAAE,aAAa,oBAAoB,IAAI,wBAAyB,WAAW,eAAgB;AAEjG,SAAO,sCAACF,SAAQ,UAAR,EAAiB,OAAQ,EAAE,aAAa,oBAAoB,KAAM,QAAU;AACrF;AAEO,SAAS,+BAAiE;AAChF,QAAM,UAAUG,YAAYH,QAAQ;AACpC,QAAM,EAAE,KAAK,IAAI,SAAS;AAE1B,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,6EAA8E;AAAA,EAChG;AAEA,MAAK,CAAE,MAAO;AACb,WAAO;AAAA,EACR;AAEA,SAAO,QAAQ,YAAa,IAAK,KAAK;AACvC;AAEO,SAAS,0BAA2B,MAAsC;AAChF,QAAM,UAAUG,YAAYH,QAAQ;AAEpC,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,0EAA2E;AAAA,EAC7F;AAEA,QAAM,SAAS,gBAAgB;AAE/B,QAAM,mBAAmB,SAAU,KAAM,CAAE,CAAE;AAE7C,QAAM,WAAW,6BAA6B;AAE9C,MAAK,CAAE,UAAW;AACjB,WAAO,CAAC;AAAA,EACT;AAEA,SAAO,QAAQ,oBAAqB,UAAU,MAAM,gBAAiB;AACtE;AAEA,IAAM,mBAAmB,MAAM;AAC9B,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,qBAAqB,eAAe;AAC1C,QAAM,aAAa,cAAc;AAEjC,oBAAkB;AAElB,QAAM,cAAcI,mBAAuC,QAAQ,IAAI,kBAAmB;AAE1F,QAAM,gBAAgBC,qBAAoB,QAAS,WAAY,KAAK,CAAC;AAErE,SAAOC,kBAAiB,IAAI,EAAE,OAAQ,CAAE,UAAW,CAAE,GAAG,YAAY,GAAG,aAAc,EAAE,SAAU,MAAM,EAAG,CAAE;AAC7G;AAEA,IAAM,gBAAgB,MAAM;AAC3B,QAAM,EAAE,YAAY,IAAI,WAAW;AACnC,QAAM,eAAe,gBAAgB;AACrC,QAAM,cAAc,eAAgB,YAAY,GAAI;AAEpD,SAAO,OAAO,KAAM,aAAa,eAAe,CAAC,CAAE;AACpD;;;AItFA,SAAS,kBAAkB,qBAAAC,0BAAyB;AAO7C,SAAS,oBAAqB,WAAqB;AACzD,QAAM,CAAE,mBAAmB,oBAAqB,IAAI;AAAA,IACnD;AAAA,IACA;AAAA,EACD;AAEA,QAAM,oBAAoB,qBAAsB,SAAU,GAAG,SAAS,CAAC;AAEvE,QAAM,WAAW,qBAAsB,iBAAkB;AAEzD,QAAM,0BAA0B,2BAA4B,mBAAmB,iBAAkB;AACjG,SAAO,CAAE,2BAA2B,UAAU,MAAM,MAAM,oBAAqB;AAChF;AAEA,SAAS,qBAAsB,mBAA8B;AAC5D,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,aAAa,iBAAkB,QAAQ,EAAG,KAAK,CAAC;AAEtD,SAAO,OAAO,OAAQ,UAAW,EAAE,KAAM,CAAE,aAAc,kBAAkB,SAAU,SAAS,EAAG,CAAE;AACpG;AAEA,SAAS,qBAAsB,WAAqB;AACnD,QAAM,EAAE,QAAQ,IAAI,WAAW;AAE/B,SAAOC,mBAAuC,QAAQ,IAAI,SAAU;AACrE;AAEA,SAAS,2BAA4B,IAA8B,mBAA8B;AAChG,QAAM,iBAAiB,CAAC,CAAE,MAAM,kBAAkB,SAAU,EAAG;AAE/D,SAAO,iBAAiB,KAAK;AAC9B;;;ACtCA,YAAYC,aAAW;AACvB,SAAS,yBAAyB;AAClC,SAAS,MAAAC,WAAU;;;ACFnB,YAAYC,aAAW;AACvB,SAAS,6BAAAC,4BAA2B,mBAAAC,kBAAiB,gBAAAC,qBAAoB;AAEzE,SAAS,mBAAAC,wBAAuB;;;ACCzB,SAAS,eACf,UACA,MAKC;AACD,QAAM,EAAE,QAAQ,WAAW,QAAQ,IAAI,gBAAkD,CAAE,QAAS,CAAE;AAEtG,QAAM,QAAQ,SAAU,QAAS,KAAK;AAEtC,QAAM,WAAW,CAAE,aAAiB;AACnC,cAAW,EAAE,CAAE,QAAS,GAAG,SAAS,GAAG,IAAK;AAAA,EAC7C;AAEA,SAAO,EAAE,OAAmB,UAAU,QAAQ;AAC/C;;;ACrBA,SAAS,oBAAoB;AAC7B,SAAS,cAAc,mBAAAC,wBAAoD;AAIpE,IAAM,mBAEP,CAAE,EAAE,SAAS,MAAO;AACzB,QAAM,EAAE,SAAS,IAAI,aAAa;AAElC,QAAM,UAAU,gBAAiB,QAAS;AAE1C,QAAM,EAAE,QAAQ,UAAU,IAAI,gBAAiB,OAAQ;AAEvD,QAAM,WAAW,CAAEC,iBAAiB,UAAU,cAAc,SAAU,EAAE;AAExE,SAAO,WAAW,OAAO;AAC1B;AAEO,SAAS,gBAAiB,UAAiC;AACjE,MAAK,CAAE,UAAU,cAAc,MAAM,QAAS;AAC7C,WAAO,CAAC;AAAA,EACT;AAEA,SAAO,SAAS,aAAa,MAAM,QAAS,CAAE,SAAY,CAAE,aAAc,IAAK,IAAI,KAAK,OAAO,CAAC,CAAI;AACrG;;;AFPO,IAAM,cAAc,CAAE,EAAE,MAAM,iBAAiB,SAAS,MAAyB;AACvF,QAAM,eAAeC,iBAAgB;AAErC,QAAM,yBAAyB,0BAA2B,CAAE,IAAK,CAAE;AAEnE,QAAM,EAAE,OAAO,SAAS,GAAG,OAAO,IAAI,eAAgB,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAE;AAE7F,QAAM,WAAW,yBAA0B,EAAE,QAAQ,aAAa,CAAE;AAEpE,QAAM,CAAE,WAAY,IAAI;AAExB,QAAM,oBAAoB;AAAA,IACzB,CAAE,IAAK,GAAG,aAAa;AAAA,EACxB;AAEA,QAAM,WAAW,CAAE,aAA2C;AAC7D,WAAO,SAAU,SAAU,IAAK,CAAE;AAAA,EACnC;AAEA,SACC,sCAACC,4BAAA,EAA0B,OAAQ,mBAAoB,QAAS,KAC/D;AAAA,IAACC;AAAA,IAAA;AAAA,MACA;AAAA,MACA,OAAQ,EAAE,CAAE,IAAK,GAAG,MAAM;AAAA,MAC1B;AAAA,MACA,aAAc;AAAA,MACd,YAAa,MAAM,CAAE;AAAA;AAAA,IAErB,sCAACC,kBAAA,EAAgB,QAChB,sCAAC,wBAAmB,QAAU,CAC/B;AAAA,EACD,CACD;AAEF;;;AGnDA,YAAYC,aAAW;AACvB,SAAS,SAAAC,cAAa;AAUf,IAAM,iBAA4C,CAAE,EAAE,MAAM,GAAG,IAAI,UAAU,cAAc,UAAU,MAC3G,sCAACA,QAAA,EAAM,KAAY,IAAK,EAAE,GAAG,GAAG,GAAI,cAAa,aAC9C,QACH;;;AJRD,IAAM,mBAAmBC,IAAI,cAAc,WAAY;AAEhD,IAAM,oBAAoB,MAAM;AACtC,SACC,sCAAC,sBACA,sCAAC,eAAY,MAAK,cAAa,iBAAkB,oBAChD,sCAAC,uBAAkB,CACpB,CACD;AAEF;;;AKjBA,YAAYC,aAAW;;;ACAvB,YAAYC,aAAW;AACvB,SAAS,oBAAoB;AAC7B,SAAS,MAAAC,YAAU;;;ACFnB,YAAYC,aAAW;AACvB,SAAS,MAAM,SAAAC,cAAyB;AAUjC,IAAM,oBAA0B,mBAAsD,CAAE,OAAO,QAAS;AAC9G,QAAM,EAAE,YAAY,OAAO,UAAU,MAAM,IAAI;AAE/C,QAAM,kBAAkB,cAAc,QAAQ,MAAM;AAEpD,SAAO,sCAAC,mBAAgB,OAAgB,KAAY,UAAsB;AAC3E,CAAE;AAEF,IAAM,MAAY;AAAA,EACjB,CAAE,EAAE,OAAO,SAAS,GAAG,QAAS;AAC/B,WACC;AAAA,MAAC;AAAA;AAAA,QACA,WAAS;AAAA,QACT,KAAM;AAAA,QACN,YAAW;AAAA,QACX,UAAS;AAAA,QACT;AAAA,QACA,cAAa,GAAI,KAAM;AAAA;AAAA,MAEvB,sCAAC,QAAK,MAAI,MAAC,IAAK,KACf,sCAAC,oBAAe,KAAO,CACxB;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACA,MAAI;AAAA,UACJ,IAAK;AAAA,UACL,IAAK,CAAE,WAAoB;AAAA,YAC1B,OAAO,cAAe,MAAM,QAAS,CAAE,CAAE;AAAA,UAC1C;AAAA;AAAA,QAEE;AAAA,MACH;AAAA,IACD;AAAA,EAEF;AACD;AAEA,IAAM,SAAe;AAAA,EACpB,CAAE,EAAE,OAAO,SAAS,GAAG,QAAS;AAC/B,WACC,sCAACC,QAAA,EAAM,KAAM,MAAO,OACnB,sCAAC,oBAAe,KAAO,GACrB,QACH;AAAA,EAEF;AACD;;;ADjDA,IAAM,qBAAqBC,KAAI,gBAAgB,WAAY;AAEpD,IAAM,mBAAmB,MAC/B,sCAAC,eAAY,MAAK,gBAAe,iBAAkB,sBAClD,sCAAC,qBAAkB,OAAQ,sBAC1B,sCAAC,kBAAa,CACf,CACD;;;AEdD,YAAYC,aAAW;AACvB,SAAiC,gCAAgC;AACjE,SAAS,gCAAgC;AACzC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,qBAAqB;AAC9B,SAAS,MAAAC,YAAU;;;ACXnB,SAAS,gBAAgB;;;ACElB,IAAM,qBAAqB,MAAM;AACvC,QAAM,iBAAiB;AAEvB,SAAO,eAAe,WAAW,UAAU,CAAC;AAC7C;AAEO,IAAM,6BAA6B,MAAM;AAC/C,QAAM,iBAAiB;AAEvB,SAAO,eAAe,mBAAmB,UAAU,CAAC;AACrD;;;ADRO,SAAS,eAAe;AAC9B,QAAM,QAAQ,SAAS;AAEvB,QAAM,UAAU,UAAU,MAAM,WAC/B,YAAY,CAAC,CAAE,2BAA2B,GAAG;AAE9C,SAAO,EAAE,WAAW,QAAQ;AAC7B;;;AEXA,YAAYC,aAAW;AACvB,SAAS,mBAAmB,iBAAAC,sBAAqB;AAQ1C,IAAM,cAA4C,CAAE,EAAE,SAAS,MAAO;AAC5E,QAAM,EAAE,UAAU,IAAI,aAAa;AAEnC,SACC,sCAAC,qBAAkB,KAAM,aACxB,sCAACC,gBAAA,MAAgB,QAAU,CAC5B;AAEF;;;AHAA,IAAM,sBAAsBC,KAAI,iBAAiB,WAAY;AAE7D,IAAM,iBAAiB,cAAe,iBAAkB;AACxD,IAAM,eAAe,cAAe,kBAAmB;AACvD,IAAM,eAAe,cAAe,oBAAqB;AACzD,IAAM,aAAa,cAAe,qBAAsB;AAExD,IAAM,qBAAqB,CAAE,cAC5B,YAAYA,KAAI,aAAa,WAAY,IAAIA,KAAI,YAAY,WAAY;AAC1E,IAAM,mBAAmB,CAAE,cAC1B,YAAYA,KAAI,YAAY,WAAY,IAAIA,KAAI,aAAa,WAAY;AAC1E,IAAM,mBAAmB,CAAE,cAC1B,YAAYA,KAAI,gBAAgB,WAAY,IAAIA,KAAI,eAAe,WAAY;AAChF,IAAM,iBAAiB,CAAE,cACxB,YAAYA,KAAI,eAAe,WAAY,IAAIA,KAAI,gBAAgB,WAAY;AAEhF,IAAM,aAAa,CAAE,cAA2C;AAAA,EAC/D;AAAA,IACC,OAAO,mBAAoB,SAAU;AAAA,IACrC,MAAM,sCAAC,kBAAe,UAAW,QAAS;AAAA,IAC1C,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO,iBAAkB,SAAU;AAAA,IACnC,MAAM,sCAAC,gBAAa,UAAW,QAAS;AAAA,IACxC,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO,iBAAkB,SAAU;AAAA,IACnC,MAAM,sCAAC,gBAAa,UAAW,QAAS;AAAA,IACxC,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO,eAAgB,SAAU;AAAA,IACjC,MAAM,sCAAC,cAAW,UAAW,QAAS;AAAA,IACtC,MAAM;AAAA,EACP;AACD;AAEO,IAAM,oBAAoB,MAAM;AACtC,QAAM,EAAE,UAAU,IAAI,aAAa;AAEnC,SACC,sCAAC,mBACA,sCAAC,eAAY,MAAO,iBAAkB,iBAAkB,uBACvD;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ,WAAY,SAAU;AAAA,MAC9B,OAAQ;AAAA,MACR,MAAO,sCAAC,qBAAkB,UAAW,QAAS;AAAA,MAC9C,cAAeA,KAAI,kBAAkB,WAAY;AAAA,MACjD,uBAAwB;AAAA;AAAA,EACzB,CACD,CACD;AAEF;;;AIxEA,YAAYC,aAAW;AACvB,SAAS,qBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAKnB,IAAM,oBAAoBC,KAAI,eAAe,WAAY;AAEzD,IAAM,eAAe;AAAA,EACpB,EAAE,OAAO,QAAQ,OAAOA,KAAI,QAAQ,WAAY,EAAE;AAAA,EAClD,EAAE,OAAO,SAAS,OAAOA,KAAI,SAAS,WAAY,EAAE;AAAA,EACpD,EAAE,OAAO,UAAU,OAAOA,KAAI,UAAU,WAAY,EAAE;AAAA,EACtD,EAAE,OAAO,UAAU,OAAOA,KAAI,UAAU,WAAY,EAAE;AAAA,EACtD,EAAE,OAAO,UAAU,OAAOA,KAAI,UAAU,WAAY,EAAE;AAAA,EACtD,EAAE,OAAO,UAAU,OAAOA,KAAI,UAAU,WAAY,EAAE;AAAA,EACtD,EAAE,OAAO,SAAS,OAAOA,KAAI,SAAS,WAAY,EAAE;AAAA,EACpD,EAAE,OAAO,SAAS,OAAOA,KAAI,SAAS,WAAY,EAAE;AAAA,EACpD,EAAE,OAAO,UAAU,OAAOA,KAAI,UAAU,WAAY,EAAE;AACvD;AAEO,IAAM,mBAAmB,MAC/B,sCAAC,eAAY,MAAK,gBAAe,iBAAkB,qBAClD,sCAAC,qBAAkB,OAAQ,qBAC1B,sCAAC,iBAAc,SAAU,cAAe,CACzC,CACD;;;AC1BD,YAAYC,aAAW;AACvB,SAAiC,4BAAAC,iCAAgC;AACjE,SAAS,+BAA+B;AACxC,SAAS,aAAa,gBAAgB,cAAc,eAAe,mBAAmB;AACtF,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAKnB,IAAM,qBAAqBC,KAAI,gBAAgB,WAAY;AAE3D,IAAM,kBAAkBC,eAAe,aAAc;AACrD,IAAM,gBAAgBA,eAAe,YAAa;AAElD,IAAM,WAAW,CAAE,cAA2C;AAAA,EAC7D;AAAA,IACC,OAAOD,KAAI,OAAO,WAAY;AAAA,IAC9B,MAAM,sCAAC,eAAY,UAAW,QAAS;AAAA,IACvC,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO,YAAYA,KAAI,QAAQ,WAAY,IAAIA,KAAI,SAAS,WAAY;AAAA,IACxE,MAAM,sCAAC,mBAAgB,UAAW,QAAS;AAAA,IAC3C,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAOA,KAAI,UAAU,WAAY;AAAA,IACjC,MAAM,sCAAC,kBAAe,UAAW,QAAS;AAAA,IAC1C,MAAM;AAAA,EACP;AAAA,EACA;AAAA,IACC,OAAO,YAAYA,KAAI,SAAS,WAAY,IAAIA,KAAI,QAAQ,WAAY;AAAA,IACxE,MAAM,sCAAC,iBAAc,UAAW,QAAS;AAAA,IACzC,MAAM;AAAA,EACP;AACD;AAEO,IAAM,mBAAmB,MAAM;AACrC,QAAM,EAAE,UAAU,IAAI,aAAa;AAEnC,SACC,sCAAC,eAAY,MAAO,gBAAiB,iBAAkB,sBACtD;AAAA,IAACE;AAAA,IAAA;AAAA,MACA,OAAQ,SAAU,SAAU;AAAA,MAC5B,OAAQ;AAAA,MACR,MAAO,sCAAC,eAAY,UAAW,QAAS;AAAA,MACxC,cAAeF,KAAI,kBAAkB,WAAY;AAAA,MACjD,uBAAwB;AAAA;AAAA,EACzB,CACD;AAEF;;;AR5CO,IAAM,gBAAgB,MAC5B,sCAAC,sBACA,sCAAC,sBAAiB,GAClB,sCAAC,sBAAiB,GAClB,sCAAC,sBAAiB,GAClB,sCAAC,uBAAkB,CACpB;;;ASdD,YAAYG,aAAW;AACvB;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,0BAA0B;AACnC,SAAS,MAAAC,YAAU;;;ACRnB,SAAS,qBAAqB,iCAAiC;AAC/D,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,mBAAAC,wBAAuB;AAEzB,IAAM,sBAAsB,OAAQ,cAAuB;AACjE,MAAK,CAAE,WAAY;AAClB,WAAO,CAAC;AAAA,EACT;AACA,QAAM,WAAW,oBAAqB;AAAA,IACrC,cAAc;AAAA,IACd,QAAQA,iBAAgB;AAAA,EACzB,CAAE;AAEF,QAAM,SAASD,kBAAkB,SAAU,KAAK,CAAC;AACjD,QAAM,YAAY,OAAO,KAAM,UAAU,CAAC,CAAE;AAC5C,QAAM,WAAW,UAAU,IAAK,CAAE,QAAS,SAAU,GAAI,GAAG,YAAY,CAAC,CAAE;AAE3E,QAAM,WAAW,MAAM,QAAQ;AAAA,IAC9B,SAAS,KAAK,EAAE,IAAK,OAAQ,YAAa;AACzC,YAAM,SAAS,MAAM,SAAU;AAAA,QAC9B,OAAO,QAAQ,SAAS,CAAC;AAAA,QACzB,QAAQC,iBAAgB;AAAA,MACzB,CAAE;AACF,aAAO,OAAO,QAAS,MAAO,EAC5B,OAAQ,CAAE,CAAE,EAAE,KAAM,MAAO,UAAU,IAAK,EAC1C,IAAK,CAAE,CAAE,GAAI,MAAO,GAAI;AAAA,IAC3B,CAAE;AAAA,EACH;AAEA,QAAM,UAAU,IAAI,IAAK,SAAS,KAAK,CAAE;AACzC,SAAO,MAAM,KAAM,OAAQ;AAC5B;;;AC/BA,YAAYC,aAAW;AACvB,SAAS,WAAAC,gBAAe;AAEjB,IAAM,eAAe,MAAM,sCAACA,UAAA,EAAQ,IAAK,EAAE,IAAI,IAAI,GAAI;;;ACH9D,YAAYC,aAAW;AACvB,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAKnB,IAAM,mBAAmBC,KAAI,cAAc,WAAY;AAEvD,IAAM,mBAAmB;AAAA,EACxB,EAAE,OAAOA,KAAI,UAAU,WAAY,GAAG,OAAO,SAAS;AAAA,EACtD,EAAE,OAAOA,KAAI,YAAY,WAAY,GAAG,OAAO,WAAW;AAAA,EAC1D,EAAE,OAAOA,KAAI,UAAU,WAAY,GAAG,OAAO,SAAS;AAAA,EACtD,EAAE,OAAOA,KAAI,WAAW,WAAY,GAAG,OAAO,UAAU;AAAA,EACxD,EAAE,OAAOA,KAAI,UAAU,WAAY,GAAG,OAAO,SAAS;AAAA,EACtD,EAAE,OAAOA,KAAI,WAAW,WAAY,GAAG,OAAO,UAAU;AAAA,EACxD,EAAE,OAAOA,KAAI,eAAe,WAAY,GAAG,OAAO,cAAc;AAAA,EAChE,EAAE,OAAOA,KAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAAA,EAC9D,EAAE,OAAOA,KAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAAA,EAC9D,EAAE,OAAOA,KAAI,SAAS,WAAY,GAAG,OAAO,QAAQ;AAAA,EACpD,EAAE,OAAOA,KAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAAA,EAC9D,EAAE,OAAOA,KAAI,aAAa,WAAY,GAAG,OAAO,YAAY;AAAA,EAC5D,EAAE,OAAOA,KAAI,OAAO,WAAY,GAAG,OAAO,MAAM;AAAA,EAChD,EAAE,OAAOA,KAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAAA,EAC9D,EAAE,OAAOA,KAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAAA,EAC9D,EAAE,OAAOA,KAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAC/D;AAEO,IAAM,iBAAiB,MAAM;AACnC,SACC,sCAAC,eAAY,MAAK,kBAAiB,iBAAkB,oBACpD,sCAAC,qBAAkB,OAAQ,oBAC1B,sCAACC,gBAAA,EAAc,SAAU,kBAAmB,CAC7C,CACD;AAEF;;;ACpCA,YAAYC,aAAW;AACvB,SAAS,UAAAC,eAAc;AACvB,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,MAAAC,YAAU;AAKnB,IAAM,gBAAgBC,KAAI,WAAW,WAAY;AAE1C,IAAM,sBAAsB,MAAM;AACxC,QAAM,SAASC,QAAiC,IAAK;AAErD,SACC,sCAAC,eAAY,MAAO,WAAY,iBAAkB,iBACjD,sCAAC,qBAAkB,KAAM,QAAS,OAAQ,iBACzC,sCAACC,cAAA,EAAY,OAAQ,CAAE,GAAI,GAAI,WAAY,QAAS,aAAY,KAAI,CACrE,CACD;AAEF;;;AJFA,IAAM,mBAAmBC,KAAI,cAAc,WAAY;AACvD,IAAM,eAAeA,KAAI,WAAW,WAAY;AAChD,IAAM,kBAAkBA,KAAI,aAAa,WAAY;AACrD,IAAM,wBAAwBA,KAAI,oBAAoB,WAAY;AAClE,IAAM,oBAAoBA,KAAI,eAAe,WAAY;AAElD,IAAM,iBAAiB,MAAM;AACnC,QAAM,EAAE,QAAQ,IAAI,mBAAmB;AACvC,QAAM,EAAE,KAAK,IAAI,SAAS;AAE1B,SACC,sCAAC,kBAAe,KAAM,KACrB,sCAAC,oBAAe,GAChB,sCAAC,kBAAa,GACd,sCAAC,yBAAoB,GACrB,sCAAC,kBAAa,GACd,sCAAC,eAAY,MAAK,cAAa,iBAAkB,oBAChD,sCAAC,8BAAyB,CAC3B,GACA,sCAAC,kBAAa,GACd,sCAAC,eAAY,MAAK,aAAY,iBAAkB,mBAC/C,sCAAC,8BAAyB,CAC3B,GACA,sCAAC,kBAAa,GACd,sCAAC,eAAY,MAAK,cAAa,iBAAkB,qBAChD;AAAA,IAAC;AAAA;AAAA,MACA,mBAAoB,KAAK;AAAA,MACzB,wBAAyB,MAAM,oBAAqB,SAAS,MAAM,EAAG;AAAA;AAAA,EACvE,CACD,GACA,sCAAC,kBAAa,GACd,sCAAC,eAAY,MAAK,UAAS,iBAAkB,gBAC5C,sCAAC,2BAAsB,CACxB,GACA,sCAAC,kBAAa,GACd,sCAAC,eAAY,MAAK,mBAAkB,iBAAkB,yBACrD,sCAAC,yBAAsB,gBAAe,mBAAkB,CACzD,CACD;AAEF;;;AK1DA,YAAYC,aAAW;AACvB,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,wBAAwB;AAEjC,SAAS,MAAAC,YAAU;;;ACJnB,SAAS,wBAAwB,aAAa,iBAAiB,mBAAmB;AAE3E,SAAS,iBAAkB,WAA2B;AAC5D,SAAO;AAAA,IACN;AAAA,MACC,YAAa,8BAA+B;AAAA,MAC5C,gBAAiB,+BAAgC;AAAA,MACjD,gBAAiB,4BAA6B;AAAA,MAC9C,gBAAiB,+BAAgC;AAAA,IAClD;AAAA,IACA,MAAM;AACL,UAAK,CAAE,WAAY;AAClB,eAAO;AAAA,MACR;AAEA,YAAM,UAAU,OAAO,WAAW,eAAgB,SAAU;AAE5D,UAAK,CAAE,SAAS,MAAM,IAAK;AAC1B,eAAO;AAAA,MACR;AAEA,YAAM,OAAO,OAAO,iBAAkB,QAAQ,KAAK,EAAG;AACtD,aAAO;AAAA,IACR;AAAA,EACD;AACD;;;ACzBA,YAAYC,aAAW;AACvB,SAAqC,iBAAAC,sBAAqB;AAC1D;AAAA,EACC;AAAA,EACA,qBAAqB;AAAA,EACrB,iCAAiC;AAAA,EACjC,kCAAkC;AAAA,EAClC,mCAAmC;AAAA,EACnC;AAAA,OACM;AACP,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;;;ACXnB,YAAYC,aAAW;AACvB,SAAS,UAAAC,eAAc;AAEvB,SAAiC,YAAAC,iBAAgB;AACjD,SAAS,MAAAC,YAAU;AAanB,IAAM,uBAAuBC,KAAI,kBAAkB,WAAY;AAE/D,IAAM,mBAAoD;AAAA,EACzD,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,kBAAkB;AACnB;AAEA,IAAM,2BAA4D;AAAA,EACjE,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,kBAAkB;AACnB;AAEO,IAAM,cAAc,CAAE;AAAA,EAC5B,MAAM;AAAA,EACN;AAAA,EACA,cAAc;AAAA,EACd,SAAS;AAAA,EACT,6BAA6B;AAC9B,MAAc;AACb,QAAM,SAASC,QAAQ,kBAAmB,aAAa,QAAQ,0BAA2B,CAAE;AAE5F,SAAO,UAAU,kBAAmB,aAAa,QAAQ,4BAA4B,MAAO;AAE5F,SAAO,sCAAC,QAAK,UAAW,MAAO,IAAK,EAAE,YAAY,OAAO,QAAQ,GAAI,OAAO,OAAQ,MAAM,GAAI;AAC/F;AAEA,IAAM,oBAAoB,CACzB,aACA,QACA,4BACA,gBACI;AACJ,QAAM,EAAE,OAAO,UAAU,IAAI,eAAmC,kBAAkB;AAAA,IACjF,SAAS,EAAE,iBAAiB,qBAAqB;AAAA,EAClD,CAAE;AACF,QAAM,QAAQ,UAAUC,UAAS,EAAE;AACnC,QAAM,qBAAqB,QAAQ,KAAK;AACxC,QAAM,WAAW,cAAc,mBAAmB;AAElD,QAAM,mBAAqB,WAAW,SAA4B;AAClE,QAAM,eAAe,cAAc,YAAY,UAAU,qBAAqB,SAAU,gBAAiB,IAAI;AAC7G,QAAM,cAAc,SAAU,gBAAiB,IAAI;AAEnD,QAAM,qBAAsB,cAAc,eAAe,OAAQ;AACjE,QAAM,iBAAoB,oBAAoB,OAAQ,MAAQ;AAE9D,MAAK,8BAA8B,CAAE,eAAe,gBAAiB,EAAE,SAAU,gBAAiB,GAAI;AACrG,WAAO;AAAA,EACR;AAEA,UAAS,eAAe,iBAAkB;AAC3C;;;ADpDA,IAAM,sBAAsBC,KAAI,iBAAiB,WAAY;AAE7D,IAAM,YAAYC,eAAe,cAAe;AAChD,IAAM,UAAUA,eAAe,iBAAkB;AAEjD,IAAM,YAAY;AAAA,EACjB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,4BAA4B;AAC7B;AAEA,IAAM,UAAmD;AAAA,EACxD;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,SAAS,WAAY;AAAA,IAChC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAO,WAAY,MAAgB,GAAG,WAAY;AAAA,IAC9F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAO,YAAa,MAAgB,GAAG,WAAY;AAAA,IAC/F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,OAAO,WAAY;AAAA,IAC9B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAO,SAAU,MAAgB,GAAG,WAAY;AAAA,IAC5F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,iBAAiB,WAAY;AAAA,IACxC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAO,aAAc,MAAgB,GAAG,WAAY;AAAA,IAChG,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,gBAAgB,WAAY;AAAA,IACvC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAO,YAAa,MAAgB,GAAG,WAAY;AAAA,IAC/F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,gBAAgB,WAAY;AAAA,IACvC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAO,YAAa,MAAgB,GAAG,WAAY;AAAA,IAC/F,aAAa;AAAA,EACd;AACD;AAEO,IAAM,oBAAoB,MAChC,sCAAC,eAAY,MAAK,iBAAgB,iBAAkB,uBACnD,sCAAC,mBACA,sCAAC,qBAAkB,OAAQ,qBAAsB,WAAU,YAC1D,sCAACE,gBAAA,EAAc,SAAoB,WAAY,MAAO,CACvD,CACD,CACD;;;AE7ED,YAAYC,aAAW;AACvB,SAAqC,iBAAAC,sBAAqB;AAC1D;AAAA,EACC,yBAAyBC;AAAA,EACzB;AAAA,EACA;AAAA,EACA,gCAAgC;AAAA,OAC1B;AACP,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AASnB,IAAM,oBAAoBC,KAAI,eAAe,WAAY;AAEzD,IAAMC,aAAYC,eAAe,mBAAoB;AACrD,IAAMC,WAAUD,eAAe,oBAAqB;AAEpD,IAAME,aAAY;AAAA,EACjB,aAAa;AAAA,EACb,QAAQ;AACT;AAEA,IAAMC,WAAiD;AAAA,EACtD;AAAA,IACC,OAAO;AAAA,IACP,OAAOL,KAAI,SAAS,WAAY;AAAA,IAChC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOC,YAAY,MAAgB,GAAGG,YAAY;AAAA,IAC9F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOJ,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOM,aAAa,MAAgB,GAAGF,YAAY;AAAA,IAC/F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOJ,KAAI,OAAO,WAAY;AAAA,IAC9B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOG,UAAU,MAAgB,GAAGC,YAAY;AAAA,IAC5F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOJ,KAAI,WAAW,WAAY;AAAA,IAClC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAO,aAAc,MAAgB,GAAGI,YAAY;AAAA,IAChG,aAAa;AAAA,EACd;AACD;AAEO,IAAM,kBAAkB,MAAM;AACpC,SACC,sCAAC,mBACA,sCAAC,eAAY,MAAK,eAAc,iBAAkB,qBACjD,sCAAC,qBAAkB,OAAQ,qBAC1B,sCAACG,gBAAA,EAAc,SAAUF,UAAU,CACpC,CACD,CACD;AAEF;;;ACjEA,YAAYG,aAAW;AACvB,SAAS,iBAAAC,sBAAqB;AAC9B;AAAA,EACC,yBAAyBC;AAAA,EACzB,uBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,gCAAgCC;AAAA,OAC1B;AACP,SAAiC,iBAAAC,sBAAqB;AACtD,SAAS,MAAAC,YAAU;AAQnB,IAAM,mBAAmBC,KAAI,cAAc,WAAY;AAEvD,IAAM,8BAA+D;AAAA,EACpE,KAAK;AAAA,EACL,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,kBAAkB;AACnB;AAEA,IAAMC,aAAYC,eAAeC,oBAAoB;AACrD,IAAMC,WAAUF,eAAeG,qBAAqB;AAEpD,IAAMC,aAAY;AAAA,EACjB,aAAa;AACd;AAEA,IAAM,aAAa,CAAE,yBAAyC;AAAA,EAC7D;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,SAAS,WAAY;AAAA,IAChC,eAAe,CAAE,EAAE,KAAK,MACvB;AAAA,MAAC;AAAA;AAAA,QACA,MAAOC;AAAA,QACP;AAAA,QACA,QAAS,4BAA6B,oBAAqB;AAAA,QACzD,GAAGK;AAAA;AAAA,IACN;AAAA,IAED,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MACvB;AAAA,MAAC;AAAA;AAAA,QACA,MAAOO;AAAA,QACP;AAAA,QACA,QAAS,4BAA6B,oBAAqB;AAAA,QACzD,GAAGD;AAAA;AAAA,IACN;AAAA,IAED,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,OAAO,WAAY;AAAA,IAC9B,eAAe,CAAE,EAAE,KAAK,MACvB;AAAA,MAAC;AAAA;AAAA,QACA,MAAOI;AAAA,QACP;AAAA,QACA,QAAS,4BAA6B,oBAAqB;AAAA,QACzD,GAAGE;AAAA;AAAA,IACN;AAAA,IAED,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,WAAW,WAAY;AAAA,IAClC,eAAe,CAAE,EAAE,KAAK,MACvB;AAAA,MAAC;AAAA;AAAA,QACA,MAAOQ;AAAA,QACP;AAAA,QACA,QAAS,4BAA6B,oBAAqB;AAAA,QACzD,GAAGF;AAAA;AAAA,IACN;AAAA,IAED,aAAa;AAAA,EACd;AACD;AAEO,IAAM,iBAAiB,CAAE,EAAE,qBAAqB,MACtD,sCAAC,eAAY,MAAK,cAAa,iBAAkB,oBAChD,sCAAC,mBACA,sCAAC,qBAAkB,OAAQ,oBAC1B,sCAACG,gBAAA,EAAc,SAAU,WAAY,oBAAqB,GAAI,CAC/D,CACD,CACD;;;AC/FD,YAAYC,aAAW;AACvB,SAAqC,iBAAAC,sBAAqB;AAC1D,SAAS,MAAAC,YAAU;AAQnB,IAAM,gBAAgBC,KAAI,WAAW,WAAY;AAEjD,IAAM,oBAAyD;AAAA,EAC9D;AAAA,IACC,OAAO;AAAA,IACP,eAAe,MAAMA,KAAI,SAAS,WAAY;AAAA,IAC9C,OAAOA,KAAI,SAAS,WAAY;AAAA,IAChC,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,eAAe,MAAMA,KAAI,QAAQ,WAAY;AAAA,IAC7C,OAAOA,KAAI,QAAQ,WAAY;AAAA,IAC/B,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,eAAe,MAAMA,KAAI,UAAU,WAAY;AAAA,IAC/C,OAAOA,KAAI,gBAAgB,WAAY;AAAA,IACvC,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,eAAe,MAAMA,KAAI,QAAQ,WAAY;AAAA,IAC7C,OAAOA,KAAI,QAAQ,WAAY;AAAA,IAC/B,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,eAAe,MAAMA,KAAI,UAAU,WAAY;AAAA,IAC/C,OAAOA,KAAI,eAAe,WAAY;AAAA,IACtC,aAAa;AAAA,EACd;AACD;AAEO,IAAM,eAAe,MAAM;AACjC,QAAM,cAAc,2BAA2B;AAE/C,SACC,sCAAC,eAAY,MAAK,WAAU,iBAAkB,eAAgB,eAC7D,sCAAC,qBAAkB,OAAQ,eAAgB,WAAU,YACpD,sCAACC,gBAAA,EAAc,SAAU,mBAAoB,UAAW,GAAI,WAAY,MAAO,CAChF,CACD;AAEF;AAGO,IAAM,6BAA6B,MAAM,0BAA2B,CAAE,SAAU,CAAE,EAAG,CAAE,GAAG,SAAS;;;AC1D1G,YAAYC,aAAW;AACvB,SAAqC,iBAAAC,sBAAqB;AAC1D,SAAS,oBAAoB,eAAe,gBAAgB,wBAAwB;AACpF,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAQnB,IAAMC,wBAAuBC,KAAI,aAAa,WAAY;AAE1D,IAAMC,WAAoD;AAAA,EACzD;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,OAAO,WAAY;AAAA,IAC9B,eAAe,CAAE,EAAE,KAAK,MAAO;AAC9B,YAAME,aAAYC,eAAe,cAAe;AAChD,aAAO,sCAACD,YAAA,EAAU,UAAW,MAAO;AAAA,IACrC;AAAA,IACA,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOF,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,sBAAmB,UAAW,MAAO;AAAA,IACrE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,gBAAgB,WAAY;AAAA,IACvC,eAAe,CAAE,EAAE,KAAK,MAAO;AAC9B,YAAMI,WAAUD,eAAe,aAAc;AAC7C,aAAO,sCAACC,UAAA,EAAQ,UAAW,MAAO;AAAA,IACnC;AAAA,IACA,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOJ,KAAI,mBAAmB,WAAY;AAAA,IAC1C,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,oBAAiB,UAAW,MAAO;AAAA,IACnE,aAAa;AAAA,EACd;AACD;AAEO,IAAM,qBAAqB,MAAM;AACvC,SACC,sCAAC,eAAY,MAAK,kBAAiB,iBAAkBD,yBACpD,sCAAC,mBACA,sCAAC,qBAAkB,OAAQA,yBAC1B,sCAACM,gBAAA,EAAc,SAAUJ,UAAU,CACpC,CACD,CACD;AAEF;;;ACzDA,YAAYK,aAAW;AACvB,SAAS,aAAAC,YAAW,WAAAC,UAAS,YAAAC,iBAAgB;AAC7C;AAAA,EACC;AAAA,EACA,iBAAAC;AAAA,EAEA,gBAAAC;AAAA,OACM;AAEP,SAAS,sBAAAC,qBAAoB,oBAAAC,mBAAkB,kBAAkB;AACjE,SAAS,QAAAC,aAAY;AACrB,SAAS,MAAAC,YAAU;AAWnB,IAAM,cAAcC,KAAI,SAAS,WAAY;AAEtC,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAElC,IAAM,QAAQ;AACd,IAAM,OAAO;AACb,IAAM,SAAS;AAEf,IAAM,gBAAgB;AAAA,EACrB,CAAE,KAAM,GAAG;AAAA,EACX,CAAE,IAAK,GAAG;AACX;AAEA,IAAM,QAA2D;AAAA,EAChE;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,SAAS,WAAY;AAAA,IAChC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAACC,mBAAA,EAAiB,UAAW,MAAO;AAAA,IACnE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,QAAQ,WAAY;AAAA,IAC/B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAACE,qBAAA,EAAmB,UAAW,MAAO;AAAA,IACrE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOF,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,cAAW,UAAW,MAAO;AAAA,IAC7D,aAAa;AAAA,EACd;AACD;AAEO,IAAM,iBAAiB,MAAM;AACnC,SACC,sCAAC,eAAY,MAAK,SAAQ,iBAAkB,eAC3C,sCAAC,mBACA,sCAAC,sBACA,sCAAC,2BAAsB,CACxB,CACD,CACD;AAEF;AAEA,SAAS,wBAAwB;AAChC,QAAM;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV;AAAA,EACD,IAAI,eAA0C,SAAS;AAAA,IACtD,SAAS,EAAE,iBAAiB,YAAY;AAAA,EACzC,CAAE;AAEF,QAAM,EAAE,YAAY,IAAIG,cAAa;AACrC,QAAM,mBAAmB;AAEzB,QAAM,eAAeC,SAAS,MAAM,qBAAsB,OAAO,SAAS,IAAK,GAAG,CAAE,KAAM,CAAE;AAE5F,QAAM,CAAE,aAAa,cAAe,IAAIC,UAAU,YAAa;AAC/D,QAAM,CAAE,cAAc,eAAgB,IAAIA,UAAU,KAAM;AAE1D,EAAAC,WAAW,MAAM;AAChB,QAAK,CAAE,cAAe;AACrB,qBAAgB,YAAa;AAAA,IAC9B;AAAA,EACD,GAAG,CAAE,cAAc,YAAa,CAAE;AAElC,EAAAA,WAAW,MAAM;AAChB,QAAK,UAAU,MAAO;AACrB,sBAAiB,KAAM;AAAA,IACxB;AAAA,EACD,GAAG,CAAE,KAAM,CAAE;AAEb,QAAM,mBAAmB,qBAAsB,kBAAkB,SAAS,IAAK;AAE/E,QAAM,2BAA2B,CAAE,UAA0C;AAC5E,mBAAgB,KAAM;AACtB,oBAAiB,UAAU,MAAO;AAElC,QAAK,WAAW,OAAQ;AACvB,eAAU,EAAE,QAAQ,UAAU,OAAO,KAAK,CAAE;AAC5C;AAAA,IACD;AAEA,QAAK,UAAU,OAAQ;AACtB,eAAU,EAAE,QAAQ,UAAU,OAAO,cAAe,KAAM,EAAE,CAAE;AAC9D;AAAA,IACD;AAEA,QAAK,SAAS,OAAQ;AACrB,eAAU,EAAE,QAAQ,UAAU,OAAO,cAAe,KAAM,EAAE,CAAE;AAC9D;AAAA,IACD;AAEA,aAAU,IAAK;AAAA,EAChB;AAEA,QAAM,kBAAkB,WAAW,eAAe,WAAW;AAC7D,QAAM,mBAAmB,WAAW,mBAAmB,OAAQ,kBAAkB,SAAS,IAAK,IAAI;AAEnG,SACC,8DACC,sCAAC,qBAAkB,OAAQ,eAC1B;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,WAAY;AAAA,MACZ,aAAc;AAAA,MACd,UAAW,CAAE;AAAA;AAAA,EACd,CACD,GACE,mBACD,sCAACC,OAAA,EAAK,WAAS,MAAC,KAAM,GAAI,YAAW,UAAS,UAAS,YACtD,sCAACA,OAAA,EAAK,MAAI,MAAC,IAAK,KACf,sCAAC,oBAAeP,KAAI,gBAAgB,WAAY,CAAG,CACpD,GACA,sCAACO,OAAA,EAAK,MAAI,MAAC,IAAK,GAAI,IAAK,EAAE,SAAS,QAAQ,gBAAgB,MAAM,KACjE;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,KAAM,sBAAsB;AAAA,MAC5B,KAAM,qBAAqB;AAAA,MAC3B,gBAAiB;AAAA,MACjB,aAAc;AAAA;AAAA,EACf,CACD,CACD,CAEF;AAEF;AAEA,IAAM,uBAAuB,CAAE,UAAyD;AACvF,MAAK,uBAAuB,OAAQ;AACnC,WAAO;AAAA,EACR;AAEA,MAAK,wBAAwB,OAAQ;AACpC,WAAO;AAAA,EACR;AAEA,MAAK,SAAS,OAAQ;AACrB,WAAO;AAAA,EACR;AAEA,SAAO;AACR;;;AC1KA,YAAYC,aAAW;AACvB,SAAS,aAAAC,YAAW,WAAAC,UAAS,UAAAC,SAAQ,YAAAC,iBAAgB;AACrD;AAAA,EACC,4BAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EAEA,gBAAAC;AAAA,OACM;AACP,SAAS,kBAAsC,sBAAAC,2BAA0B;AACzE,SAAS,YAAY,cAAAC,aAAY,kBAAkB;AACnD,SAAS,MAAAC,YAAU;AAUnB,IAAM,kBAAkBC,KAAI,aAAa,WAAY;AAErD,IAAM,UAAU;AAEhB,IAAMC,SAA8C;AAAA,EACnD;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,QAAQ,WAAY;AAAA,IAC/B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,cAAW,UAAW,MAAO;AAAA,IAC7D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,cAAW,UAAW,MAAO;AAAA,IAC7D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAACE,aAAA,EAAW,UAAW,MAAO;AAAA,IAC7D,aAAa;AAAA,EACd;AACD;AAEO,IAAM,gBAAgB,MAAM;AAClC,SACC,sCAAC,mBACA,sCAAC,sBACA,sCAAC,eAAY,MAAK,QAAO,iBAAkB,mBAC1C,sCAAC,0BAAqB,CACvB,CACD,CACD;AAEF;AAEA,IAAM,uBAAuB,MAAM;AAClC,QAAM,EAAE,OAAO,UAAU,QAAQ,IAAI,eAAiC,QAAQ;AAAA,IAC7E,SAAS,EAAE,iBAAiB,gBAAgB;AAAA,EAC7C,CAAE;AAEF,QAAM,EAAE,YAAY,IAAIC,cAAa;AAErC,QAAM,aAAa,kBAAmB,KAAM;AAE5C,QAAM,eAAeC,SAAS,MAAM,eAAgB,UAAW,GAAG,CAAE,UAAW,CAAE;AAEjF,QAAM,CAAE,aAAa,cAAe,IAAIC,UAAU,YAAa;AAC/D,QAAM,CAAE,cAAc,eAAgB,IAAIA,UAAU,KAAM;AAE1D,EAAAC,WAAW,MAAM;AAChB,QAAK,CAAE,cAAe;AACrB,qBAAgB,YAAa;AAAA,IAC9B;AAAA,EACD,GAAG,CAAE,cAAc,YAAa,CAAE;AAElC,EAAAA,WAAW,MAAM;AAChB,QAAK,UAAU,MAAO;AACrB,sBAAiB,KAAM;AAAA,IACxB;AAAA,EACD,GAAG,CAAE,KAAM,CAAE;AAEb,QAAM,gBAAgB,CAAE,QAA0B,SAAU;AAC3D,mBAAgB,KAAM;AACtB,oBAAiB,UAAU,QAAS;AAEpC,UAAM,eAAe,wBAAyB,OAAO,KAAM;AAE3D,aAAU,YAA8B;AAAA,EACzC;AAEA,QAAM,mBAAmB,eAAgB,kBAAmB,WAAoC,CAAE;AAElG,QAAM,kBAAkB,aAAa,eAAe,aAAa;AAEjE,SACC,8DACC,sCAAC,qBAAkB,OAAQ,mBAC1B;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,OAAQ,eAAe;AAAA,MACvB,aAAc,oBAAoB;AAAA,MAClC,UAAW;AAAA,MACX,UAAW,CAAE;AAAA,MACb,OAAQN;AAAA,MACR,WAAY;AAAA;AAAA,EACb,CACD,GACE,mBAAmB,sCAAC,qBAAgB,CACvC;AAEF;AAEA,SAAS,kBAAmB,QAA+B;AAC1D,SAAO;AAAA,IACN,MAAM,QAAQ,OAAO,UAAU,SAAS;AAAA,IACxC,QAAQ,QAAQ,OAAO,YAAY,SAAS;AAAA,IAC5C,OAAO,QAAQ,OAAO,WAAW,SAAS;AAAA,EAC3C;AACD;AAEA,IAAM,0BAA0B,CAAE,OAAyB,cAA2D;AACrH,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,MAAK,UAAU,aAAc;AAC5B,WAAO,iBAAiB,OAAQ;AAAA,MAC/B,UAAUO,oBAAmB,OAAQ,OAAQ;AAAA,MAC7C,YAAY;AAAA,MACZ,WAAW;AAAA,IACZ,CAAE;AAAA,EACH;AAEA,MAAK,UAAU,eAAgB;AAC9B,WAAO,iBAAiB,OAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,YAAYA,oBAAmB,OAAQ,OAAQ;AAAA,MAC/C,WAAW;AAAA,IACZ,CAAE;AAAA,EACH;AAEA,MAAK,UAAU,UAAW;AACzB,QAAK,WAAY;AAChB,aAAO;AAAA,IACR;AACA,WAAO,iBAAiB,OAAQ;AAAA,MAC/B,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,WAAW;AAAA,IACZ,CAAE;AAAA,EACH;AAEA,SAAO;AACR;AAEA,IAAM,kBAAkB,MAAM;AAC7B,QAAM,kBAAkBC,QAA0B,IAAK;AACvD,QAAM,UAAUN,cAAc,gBAAiB;AAE/C,SACC,sCAACO,eAAA,EAAe,GAAG,WAClB,8DACC,sCAAC,qBAAkB,OAAQV,KAAI,QAAQ,WAAY,KAClD,sCAACW,kBAAA,EAAgB,MAAK,cACrB,sCAACC,gBAAA,EAAc,KAAM,GAAI,gBAAiB,MAAO,CAClD,CACD,GACA,sCAAC,qBAAkB,OAAQZ,KAAI,UAAU,WAAY,KACpD,sCAACW,kBAAA,EAAgB,MAAK,gBACrB,sCAACC,gBAAA,EAAc,KAAM,GAAI,gBAAiB,MAAO,CAClD,CACD,GACA,sCAAC,qBAAkB,OAAQZ,KAAI,SAAS,WAAY,GAAI,KAAM,mBAC7D,sCAACW,kBAAA,EAAgB,MAAK,eACrB,sCAACE,cAAA,EAAY,iBAAkB,CAAE,MAAO,GAAI,WAAY,iBAAkB,CAC3E,CACD,CACD,CACD;AAEF;AAEA,IAAM,iBAAiB,CAAE;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACD,MAIyB;AACxB,MAAK,SAAS,QAAQ,SAAS,UAAU,CAAE,OAAQ;AAClD,WAAO;AAAA,EACR;AAEA,MAAO,UAAU,QAAU,OAAQ;AAClC,WAAO;AAAA,EACR;AAEA,MAAK,SAAS,SAAU;AACvB,WAAO;AAAA,EACR;AAEA,MAAK,WAAW,SAAU;AACzB,WAAO;AAAA,EACR;AAEA,SAAO;AACR;;;ACpNA,YAAYC,aAAW;AACvB,SAAS,kBAAkB;AAC3B,SAAS,MAAAC,YAAU;AAInB,IAAM,aAAaC,KAAI,QAAQ,WAAY;AAEpC,IAAM,kBAAkB,MAAM;AACpC,SACC,sCAAC,eAAY,MAAO,OAAQ,iBAAkB,cAC7C,sCAAC,cAAW,OAAQ,YAAa,CAClC;AAEF;;;ACdA,YAAYC,aAAW;AACvB,SAAqC,iBAAAC,sBAAqB;AAC1D;AAAA,EACC,qBAAAC;AAAA,EACA,qBAAqBC;AAAA,EACrB,iCAAiCC;AAAA,EACjC,kCAAkCC;AAAA,EAClC,mCAAmCC;AAAA,EACnC,kBAAAC;AAAA,OACM;AACP,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AASnB,IAAM,wBAAwBC,KAAI,mBAAmB,WAAY;AAEjE,IAAMC,aAAYC,eAAeC,eAAe;AAChD,IAAMC,WAAUF,eAAeG,kBAAkB;AAEjD,IAAMC,aAAY;AAAA,EACjB,aAAa;AAAA,EACb,QAAQ;AACT;AAEA,IAAMC,WAAqD;AAAA,EAC1D;AAAA,IACC,OAAO;AAAA,IACP,OAAOP,KAAI,SAAS,WAAY;AAAA,IAChC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOC,YAAY,MAAgB,GAAGK,YAAY;AAAA,IAC9F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOQ,aAAa,MAAgB,GAAGF,YAAY;AAAA,IAC/F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,OAAO,WAAY;AAAA,IAC9B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOI,UAAU,MAAgB,GAAGE,YAAY;AAAA,IAC5F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,iBAAiB,WAAY;AAAA,IACxC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOS,cAAc,MAAgB,GAAGH,YAAY;AAAA,IAChG,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,gBAAgB,WAAY;AAAA,IACvC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOU,aAAa,MAAgB,GAAGJ,YAAY;AAAA,IAC/F,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAON,KAAI,gBAAgB,WAAY;AAAA,IACvC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,MAAOW,aAAa,MAAgB,GAAGL,YAAY;AAAA,IAC/F,aAAa;AAAA,EACd;AACD;AAEO,IAAM,sBAAsB,MAClC,sCAAC,eAAY,MAAK,mBAAkB,iBAAkB,yBACrD,sCAAC,mBACA,sCAAC,qBAAkB,OAAQ,uBAAwB,WAAU,YAC5D,sCAACM,gBAAA,EAAc,SAAUL,UAAU,WAAY,MAAO,CACvD,CACD,CACD;;;AC5ED,YAAYM,aAAW;AACvB,SAAqC,iBAAAC,sBAAqB;AAC1D,SAAS,eAAe,kBAAkB,kBAAAC,uBAAsB;AAChE,SAAS,MAAAC,YAAU;AAQnB,IAAM,kBAAkBC,KAAI,QAAQ,WAAY;AAEhD,IAAMC,WAA+C;AAAA,EACpD;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,WAAW,WAAY;AAAA,IAClC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAACE,iBAAA,EAAe,UAAW,MAAO;AAAA,IACjE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOF,KAAI,QAAQ,WAAY;AAAA,IAC/B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,iBAAc,UAAW,MAAO;AAAA,IAChE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,iBAAiB,WAAY;AAAA,IACxC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,oBAAiB,UAAW,MAAO;AAAA,IACnE,aAAa;AAAA,EACd;AACD;AAEO,IAAM,YAAY,MAAM;AAC9B,SACC,sCAAC,eAAY,MAAK,aAAY,iBAAkB,mBAC/C,sCAAC,mBACA,sCAAC,qBAAkB,OAAQ,mBAC1B,sCAACG,gBAAA,EAAc,SAAUF,UAAU,CACpC,CACD,CACD;AAEF;;;AZtBA,IAAMG,iBAAgBC,KAAI,WAAW,WAAY;AACjD,IAAMC,mBAAkBD,KAAI,aAAa,WAAY;AAE9C,IAAM,gBAAgB,MAAM;AAClC,QAAM,EAAE,OAAO,QAAQ,IAAI,eAAmC,WAAW;AAAA,IACxE,SAAS,EAAE,iBAAiBD,eAAc;AAAA,EAC3C,CAAE;AACF,QAAM,qBAAqB,2BAA2B;AACtD,QAAM,gBAAgB,wBAAyB,SAAS,kBAAsC;AAC9F,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,SAAS,iBAAkB,QAAQ,EAAG;AAC5C,QAAM,cAAc,iBAAkB,QAAQ,MAAM,IAAK;AACzD,QAAM,uBAAuB,aAAa,iBAAiB;AAE3D,SACC,sCAAC,sBACA,sCAAC,kBAAa,GACZ,iBAAiB,sCAAC,gBAAW,GAC7B,WAAW,aAAa,WAAW,sCAAC,mBAAgB,sBAA8C,CACrG;AAEF;AAEA,IAAM,aAAa,MAAM;AACxB,QAAM,EAAE,OAAO,SAAS,IAAI,eAAmC,aAAa;AAAA,IAC3E,SAAS,EAAE,iBAAiBE,iBAAgB;AAAA,EAC7C,CAAE;AAEF,SACC,8DACC,sCAAC,wBAAmB,GACpB,sCAAC,yBAAoB,GACrB,sCAAC,qBAAgB,GACjB,sCAAC,kBAAa,GACd,sCAAC,qBAAgB,GACjB,sCAAC,eAAU,GACT,CAAE,QAAQ,cAAe,EAAE,SAAU,UAAU,KAAgB,KAAK,sCAAC,uBAAkB,CAC1F;AAEF;AAEA,IAAM,kBAAkB,CAAE,EAAE,qBAAqB,MAChD,8DACC,sCAAC,kBAAa,GACd,sCAACC,mBAAA,MAAmBF,KAAI,cAAc,WAAY,CAAG,GACrD,sCAAC,kBAAe,sBAA+D,GAC/E,sCAAC,oBAAe,GAChB,sCAAC,mBAAc,CAChB;AAGD,IAAM,0BAA0B,CAAE,SAAiC,UAA4B;AAC9F,QAAM,QAAQ,SAAS,SAAS,OAAO;AAEvC,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,SAAO,WAAW,SAAS,kBAAkB;AAC9C;;;AajFA,YAAYG,aAAW;AAEvB,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,MAAAC,YAAU;;;ACHnB,YAAYC,aAAW;AACvB,SAAS,UAAAC,eAAc;AACvB,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,kBAAAC,iBAAgB,gBAAAC,eAAc,iBAAAC,gBAAe,eAAAC,oBAAmB;AACzE,SAAS,QAAAC,OAAM,SAAAC,QAAO,iBAAAC,sBAAqB;AAC3C,SAAS,MAAAC,YAAU;AAUnB,IAAMC,mBAAkBC,eAAeC,aAAa;AACpD,IAAMC,iBAAgBF,eAAeG,cAAc;AAEnD,IAAM,YAAY;AAAA,EACjB,qBAAqB,sCAACC,cAAA,EAAY,UAAW,QAAS;AAAA,EACtD,mBAAmB,sCAACC,iBAAA,EAAe,UAAW,QAAS;AAAA,EACvD,sBAAsB,sCAAC,eAAY,MAAON,kBAAkB,MAAK,QAAO;AAAA,EACxE,oBAAoB,sCAAC,eAAY,MAAOG,gBAAgB,MAAK,QAAO;AACrE;AAEA,IAAM,sBAAsB,CAAE,cAC7B,YAAYI,KAAI,SAAS,WAAY,IAAIA,KAAI,QAAQ,WAAY;AAElE,IAAM,oBAAoB,CAAE,cAC3B,YAAYA,KAAI,QAAQ,WAAY,IAAIA,KAAI,SAAS,WAAY;AAE3D,IAAM,kBAAkB,MAAM;AACpC,QAAM,EAAE,UAAU,IAAI,aAAa;AACnC,QAAM,UAAU,CAAEC,QAA0B,IAAK,GAAGA,QAA0B,IAAK,CAAE;AAErF,SACC,sCAAC,mBACA,sCAACC,QAAA,EAAM,WAAU,OAAM,KAAM,GAAI,UAAS,UAAS,KAAM,QAAS,CAAE,KACnE,sCAAC,kBAAe,MAAK,qBAAoB,OAAQF,KAAI,OAAO,WAAY,GAAI,QAAS,QAAS,CAAE,GAAI,GACpG;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,OAAQ,kBAAmB,SAAU;AAAA,MACrC,QAAS,QAAS,CAAE;AAAA;AAAA,EACrB,CACD,GACA,sCAACE,QAAA,EAAM,WAAU,OAAM,KAAM,GAAI,UAAS,UAAS,KAAM,QAAS,CAAE,KACnE,sCAAC,kBAAe,MAAK,mBAAkB,OAAQF,KAAI,UAAU,WAAY,GAAI,QAAS,QAAS,CAAE,GAAI,GACrG;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,OAAQ,oBAAqB,SAAU;AAAA,MACvC,QAAS,QAAS,CAAE;AAAA;AAAA,EACrB,CACD,CACD;AAEF;AAEA,IAAM,iBAAiB,CAAE;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACD,MAKC,sCAAC,eAAY,MAAO,MAAO,iBAAkB,SAC5C,sCAACG,OAAA,EAAK,WAAS,MAAC,KAAM,MAAO,YAAW,YACvC,sCAACA,OAAA,EAAK,MAAI,MAAC,IAAK,MACf,sCAAC,oBAAe,KAAO,CACxB,GACA,sCAACA,OAAA,EAAK,MAAI,MAAC,IAAK,MACf;AAAA,EAACC;AAAA,EAAA;AAAA,IACA,WAAY,UAAW,IAAK;AAAA,IAC5B,iBAAkB,CAAE,MAAO;AAAA,IAC3B,WAAY;AAAA,IACZ,KAAM,CAAC,OAAO;AAAA;AACf,CACD,CACD,CACD;;;AChFD,YAAYC,aAAW;AACvB,SAAS,UAAAC,eAAc;AACvB,SAA0B,eAAAC,oBAAmB;AAC7C,SAAS,MAAAC,YAAU;AAKnB,IAAM,eAAeC,KAAI,iBAAiB,WAAY;AAEtD,IAAM,QAAsB,CAAE,MAAM,MAAM,OAAO,MAAM,IAAK;AAErD,IAAM,cAAc,MAAM;AAChC,QAAM,SAASC,QAA0B,IAAK;AAE9C,SACC,sCAAC,eAAY,MAAK,qBAAoB,iBAAkB,gBACvD,sCAAC,qBAAkB,OAAQ,cAAe,KAAM,UAC/C,sCAACC,cAAA,EAAY,OAAQ,OAAQ,WAAY,QAAS,CACnD,CACD;AAEF;;;ACtBA,YAAYC,aAAW;AACvB,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAKnB,IAAM,iBAAiBC,KAAI,YAAY,WAAY;AAEnD,IAAM,kBAAkB;AAAA,EACvB,EAAE,OAAOA,KAAI,UAAU,WAAY,GAAG,OAAO,SAAS;AAAA,EACtD,EAAE,OAAOA,KAAI,YAAY,WAAY,GAAG,OAAO,WAAW;AAAA,EAC1D,EAAE,OAAOA,KAAI,YAAY,WAAY,GAAG,OAAO,WAAW;AAAA,EAC1D,EAAE,OAAOA,KAAI,SAAS,WAAY,GAAG,OAAO,QAAQ;AAAA,EACpD,EAAE,OAAOA,KAAI,UAAU,WAAY,GAAG,OAAO,SAAS;AACvD;AAMO,IAAM,gBAAgB,CAAE,EAAE,SAAS,MAAc;AACvD,SACC,sCAAC,eAAY,MAAK,YAAW,iBAAkB,kBAC9C,sCAAC,qBAAkB,OAAQ,kBAC1B,sCAACC,gBAAA,EAAc,SAAU,iBAAkB,UAAsB,CAClE,CACD;AAEF;;;AC7BA,YAAYC,aAAW;AACvB,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAKnB,IAAM,gBAAgBC,KAAI,WAAW,WAAY;AAE1C,IAAM,cAAc,MAAM;AAChC,SACC,sCAAC,eAAY,MAAK,WAAU,iBAAkB,iBAC7C,sCAAC,qBAAkB,OAAQ,iBAC1B,sCAACC,gBAAA,IAAc,CAChB,CACD;AAEF;;;AJaA,IAAMC,kBAAiBC,KAAI,YAAY,WAAY;AACnD,IAAM,mBAAmBA,KAAI,cAAc,WAAY;AAEhD,IAAM,kBAAkB,MAAM;AACpC,QAAM,EAAE,OAAO,cAAc,IAAI,eAAmC,YAAY;AAAA,IAC/E,SAAS,EAAE,iBAAiBD,gBAAe;AAAA,EAC5C,CAAE;AACF,QAAM,EAAE,QAAQ,YAAY,WAAW,cAAc,IAAI,gBAAqC;AAAA,IAC7F;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAE;AAEF,QAAM,CAAE,6BAA6B,yBAAyB,sBAAuB,IAAI,qBAAqB;AAE9G,QAAM,mBAAmB,CAAE,aAA4B,qBAAiD;AACvG,UAAM,OAAO,EAAE,SAAS,EAAE,iBAAiB,iBAAiB,EAAE;AAE9D,QAAK,gBAAgB,UAAW;AAC/B,UAAK,YAAa;AACjB,gCAAyB,UAAW;AACpC;AAAA,UACC;AAAA,YACC,qBAAqB;AAAA,YACrB,mBAAmB;AAAA,YACnB,sBAAsB;AAAA,YACtB,oBAAoB;AAAA,UACrB;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,IACD,WAAY,qBAAqB,UAAW;AAC3C,UAAK,6BAA8B;AAClC,sBAAe,6BAA6B,IAAK;AACjD,+BAAuB;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AAEA,QAAM,cAAc,iBAAiB,eAAe,UAAU;AAE9D,SACC,sCAAC,sBACA,sCAAC,iBAAc,UAAW,kBAAmB,GAC3C,cACD,8DACC,sCAAC,qBAAgB,GACjB,sCAAC,iBAAY,CACd,IACG,MAEJ,sCAAC,kBAAa,GACd,sCAAC,iBAAY,CACd;AAEF;AAEA,IAAM,uBAAuB,MAAM;AAClC,QAAM,EAAE,IAAI,YAAY,KAAK,IAAI,SAAS;AAC1C,QAAM,mBAAmB,UAAW,UAAW,IAAK,KAAK,cAAc,SAAU,IAAK,KAAK,SAAS,MAAO;AAC3G,QAAM,iBAAiB,GAAI,gBAAiB;AAE5C,SAAOE,mBAAuC,cAAe;AAC9D;;;AK9FA,YAAYC,aAAW;AACvB,SAAyB,UAAAC,eAAc;AACvC,SAAS,oBAAyC,iBAAiB,eAAAC,oBAAmB;AACtF,SAAS,QAAAC,OAAM,SAAAC,eAAa;AAC5B,SAAS,MAAAC,YAAU;;;ACJnB,YAAYC,aAAW;;;ACAvB,YAAYC,aAAW;AAGvB,SAAS,4BAAAC,iCAAgC;AACzC,SAAS,SAAAC,SAAO,WAAAC,gBAAe;AAC/B,SAAS,MAAAC,YAAU;AAYZ,IAAM,qCAAqC,CAAE,EAAE,OAAO,MAAc;AAC1E,QAAM,EAAE,IAAI,MAAM,SAAS,IAAI,SAAS;AACxC,QAAM,WAAW,6BAA6B;AAE9C,MAAK,OAAO,SAAU,YAAa,GAAI;AACtC,WAAO,sCAAC,wBAAmB;AAAA,EAC5B;AAEA,QAAM,iBAAiB,OAAO;AAAA,IAC7B,OAAO,QAAS,YAAY,CAAC,CAAE,EAAE,OAAQ,CAAE,CAAE,GAAI,MAAO,OAAO,SAAU,GAAe,CAAE;AAAA,EAC3F;AAEA,QAAM,EAAE,WAAW,aAAa,IAAI,cAAe,gBAAgB,MAAM,IAAI,IAAK;AAElF,MAAK,CAAE,aAAa,CAAE,cAAe;AACpC,WAAO;AAAA,EACR;AAEA,QAAM,gBAAgBC,KAAI,wBAAwB,WAAY;AAC9D,QAAM,oBAAoBA,KAAI,yBAAyB,WAAY;AAEnE,SACC,sCAACC,UAAA,EAAQ,OAAQD,KAAI,cAAc,WAAY,GAAI,WAAU,SAC5D,sCAACE,SAAA,EAAM,WAAU,OAAM,IAAK,EAAE,SAAS,EAAE,mBAAmB,MAAM,EAAE,GAAI,MAAK,UAC1E,aAAa,YACd;AAAA,IAAC;AAAA;AAAA,MACA,UAAW,4BAA6B,SAAS,OAAO,CAAE;AAAA,MAC1D,gBAAeC,0BAA0B,SAAS,OAAO,CAAE,IAAI,UAAU;AAAA,MACzE,MAAK;AAAA,MACL,cAAa;AAAA;AAAA,EACd,GAEC,gBACD;AAAA,IAAC;AAAA;AAAA,MACA,cAAY;AAAA,MACZ,gBAAa;AAAA,MACb,MAAK;AAAA,MACL,cAAa;AAAA;AAAA,EACd,CAEF,CACD;AAEF;AAEA,SAAS,cACR,gBACA,SACA,MACgD;AAChD,MAAI,YAAY;AAChB,MAAI,eAAe;AAEnB,SAAO,OAAQ,cAAe,EAAE,QAAS,CAAE,qBAAsB;AAChE,UAAM,eAAe,yBAA0B,kBAAkB,SAAS,IAAK;AAE/E,QAAK,CAAE,cAAe;AACrB;AAAA,IACD;AAEA,UAAM,CAAE,WAAY,IAAI;AAExB,QAAK,iBAAiB,aAAc;AACnC,kBAAY;AAAA,IACb,OAAO;AACN,qBAAe;AAAA,IAChB;AAAA,EACD,CAAE;AAEF,SAAO,EAAE,WAAW,aAAa;AAClC;AAEA,SAAS,yBACR,OACA,SACA,MACgC;AAChC,SAAO,MAAM;AAAA,IACZ,CAAE;AAAA,MACD,OAAO,EAAE,GAAG;AAAA,MACZ,SAAS;AAAA,QACR,MAAM,EAAE,YAAY,MAAM;AAAA,MAC3B;AAAA,IACD,MAAO,OAAO,WAAW,eAAe,KAAK,cAAc,UAAU,KAAK;AAAA,EAC3E;AACD;;;AD/FO,IAAM,6BAA6B,CAAE,EAAE,SAAS,CAAC,GAAG,SAAS,MAAc;AACjF,SAAO,sCAAC,sBAAmB,UAAW,+BAAgC,MAAO,KAAM,QAAU;AAC9F;AAEO,SAAS,+BAAgC,QAAmB;AAClE,MAAK,OAAO,WAAW,GAAI;AAC1B,WAAO;AAAA,EACR;AAEA,SAAO,CAAE,WAAuB,CAAE,SAAS,sCAAC,sCAAmC,QAAkB,IAAK;AACvG;;;AEjBA,YAAYC,aAAW;AACvB,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAKnB,IAAM,mBAAmBC,KAAI,cAAc,WAAY;AAEvD,IAAMC,mBAAkB;AAAA,EACvB,EAAE,OAAOD,KAAI,QAAQ,WAAY,GAAG,OAAO,OAAO;AAAA,EAClD,EAAE,OAAOA,KAAI,SAAS,WAAY,GAAG,OAAO,QAAQ;AAAA,EACpD,EAAE,OAAOA,KAAI,WAAW,WAAY,GAAG,OAAO,UAAU;AAAA,EACxD,EAAE,OAAOA,KAAI,QAAQ,WAAY,GAAG,OAAO,OAAO;AAAA,EAClD,EAAE,OAAOA,KAAI,cAAc,WAAY,GAAG,OAAO,aAAa;AAC/D;AAEO,IAAM,iBAAiB,MAAM;AACnC,SACC,sCAAC,eAAY,MAAK,cAAa,iBAAkB,oBAChD,sCAAC,qBAAkB,OAAQ,oBAC1B,sCAACE,gBAAA,EAAc,SAAUD,kBAAkB,CAC5C,CACD;AAEF;;;ACzBA,YAAYE,aAAW;AACvB,SAAqC,iBAAAC,sBAAqB;AAC1D,SAAS,SAAS,YAAY,mBAAmB;AACjD,SAAS,MAAAC,YAAU;AAOnB,IAAM,iBAAiBC,KAAI,YAAY,WAAY;AAEnD,IAAMC,WAAgD;AAAA,EACrD;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,WAAW,WAAY;AAAA,IAClC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,WAAQ,UAAW,MAAO;AAAA,IAC1D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,cAAW,UAAW,MAAO;AAAA,IAC7D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,QAAQ,WAAY;AAAA,IAC/B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,eAAY,UAAW,MAAO;AAAA,IAC9D,aAAa;AAAA,EACd;AACD;AAEO,IAAM,gBAAgB,MAAM;AAClC,SACC,sCAAC,eAAY,MAAK,YAAW,iBAAkB,kBAC9C,sCAAC,qBAAkB,OAAQ,kBAC1B,sCAACE,gBAAA,EAAc,SAAUD,UAAU,CACpC,CACD;AAEF;;;AJ3BA,IAAM,eAAe;AAAA,EACpB;AAAA,IACC;AAAA,MACC,MAAM;AAAA,MACN,OAAOE,KAAI,SAAS,WAAY;AAAA,IACjC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAOA,KAAI,UAAU,WAAY;AAAA,IAClC;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,MACC,MAAM;AAAA,MACN,OAAOA,KAAI,aAAa,WAAY;AAAA,IACrC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAOA,KAAI,cAAc,WAAY;AAAA,IACtC;AAAA,EACD;AAAA,EACA;AAAA,IACC;AAAA,MACC,MAAM;AAAA,MACN,OAAOA,KAAI,aAAa,WAAY;AAAA,IACrC;AAAA,IACA;AAAA,MACC,MAAM;AAAA,MACN,OAAOA,KAAI,cAAc,WAAY;AAAA,IACtC;AAAA,EACD;AACD;AAEA,IAAM,qBAAqBA,KAAI,gBAAgB,WAAY;AAEpD,IAAM,cAAc,MAAM;AAChC,QAAM,cAA6C,CAAEC,QAAQ,IAAK,GAAGA,QAAQ,IAAK,GAAGA,QAAQ,IAAK,CAAE;AAEpG,SACC,sCAAC,sBACE,aAAa,IAAK,CAAE,KAAK,aAC1B,sCAACC,OAAA,EAAK,KAAM,UAAW,WAAS,MAAC,KAAM,GAAI,UAAS,UAAS,KAAM,YAAa,QAAS,KACtF,IAAI,IAAK,CAAE,UACZ,sCAACA,OAAA,EAAK,MAAI,MAAC,IAAK,GAAI,KAAM,MAAM,QAC/B,sCAAC,aAAY,GAAG,OAAQ,QAAS,YAAa,QAAS,GAAI,iBAAkB,CAAE,MAAO,GAAI,CAC3F,CACC,CACH,CACC,GACF,sCAAC,kBAAa,GACd,sCAACC,SAAA,MACA,sCAAC,mBAAc,CAChB,GAEA,sCAAC,8BAA2B,QAAS,CAAE,gBAAgB,YAAa,KACnE,sCAACA,SAAA,EAAM,KAAM,GAAI,IAAK,KACrB,sCAAC,eAAY,MAAK,gBAAe,iBAAkB,sBAClD,sCAAC,sBAAmB,OAAQ,oBAAqB,CAClD,GACA,sCAAC,kBAAa,GACd,sCAAC,oBAAe,GAChB,sCAAC,eAAY,MAAK,mBAAkB,iBAAkBH,KAAI,mBAAmB,WAAY,KACxF,sCAACE,OAAA,EAAK,MAAI,MAAC,IAAK,KACf,sCAAC,qBAAgB,CAClB,CACD,CACD,CACD,CACD;AAEF;AASA,IAAM,YAAY,CAAE,EAAE,OAAO,MAAM,QAAQ,gBAAgB,MAAqB;AAC/E,SACC,sCAAC,eAAY,MAAc,iBAAkB,SAC5C,sCAACA,OAAA,EAAK,WAAS,MAAC,KAAM,MAAO,YAAW,YACvC,sCAACA,OAAA,EAAK,MAAI,MAAC,IAAK,MACf,sCAAC,oBAAe,KAAO,CACxB,GACA,sCAACA,OAAA,EAAK,MAAI,MAAC,IAAK,MACf,sCAACE,cAAA,EAAY,iBAAoC,WAAY,QAAS,CACvE,CACD,CACD;AAEF;;;AK1GA,YAAYC,aAAW;AACvB,SAAS,+BAA+B;AACxC,SAAS,MAAAC,YAAU;AAOnB,IAAM,eAAeC,KAAI,UAAU,WAAY;AAC/C,IAAM,gBAAgBA,KAAI,WAAW,WAAY;AAE1C,IAAM,iBAAiB,MAAM;AACnC,QAAM,EAAE,UAAU,IAAI,aAAa;AAEnC,SACC,sCAAC,sBACA,sCAAC,eAAY,MAAO,UAAW,iBAAkB,gBAChD;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR;AAAA,MACA,iBAAkB,CAAE,MAAO;AAAA,MAC3B,KAAM,CAAC,OAAO;AAAA;AAAA,EACf,CACD,GACA,sCAAC,kBAAa,GACd,sCAAC,eAAY,MAAO,WAAY,iBAAkB,iBACjD,sCAAC,2BAAwB,OAAQ,eAAgB,WAAwB,CAC1E,CACD;AAEF;;;AC/BA,YAAYC,aAAW;;;ACAvB,YAAYC,aAAW;AACvB,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAKnB,IAAM,qBAAqBC,KAAI,WAAW,WAAY;AAE/C,IAAM,mBAAmB,MAAM;AACrC,SACC,sCAAC,eAAY,MAAK,gBAAe,iBAAkB,sBAClD,sCAAC,qBAAkB,OAAQ,sBAC1B,sCAACC,gBAAA,EAAc,gBAAc,MAAC,KAAM,GAAI,MAAO,GAAI,CACpD,CACD;AAEF;;;ACjBA,YAAYC,aAAW;AACvB,SAAS,UAAAC,gBAAc;AACvB,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,MAAAC,YAAU;AAKnB,IAAM,mBAAmBC,KAAI,cAAc,WAAY;AAEhD,IAAM,iBAAiB,MAAM;AACnC,QAAM,SAASC,SAA0B,IAAK;AAE9C,SACC,sCAAC,eAAY,MAAK,cAAa,iBAAkB,oBAChD,sCAAC,qBAAkB,OAAQ,kBAAmB,KAAM,UACnD,sCAACC,cAAA,EAAY,WAAY,QAAS,CACnC,CACD;AAEF;;;ACpBA,YAAYC,aAAW;AACvB,SAAS,yBAAyB;AAClC,SAAS,MAAAC,YAAU;;;ACFnB,SAAS,WAAAC,iBAAe;AAExB,SAAS,MAAAC,YAAU;AAInB,IAAM,sBAAgD;AAAA,EACrD,QAAQC,KAAI,UAAU,WAAY;AAAA,EAClC,QAAQA,KAAI,gBAAgB,WAAY;AAAA,EACxC,aAAaA,KAAI,gBAAgB,WAAY;AAC9C;AAEA,IAAM,kBAAkB,MAAM;AAC7B,QAAM,EAAE,SAAS,IAAI,mBAAmB;AAExC,QAAMC,YAAU,UAAU,MAAM;AAEhC,MAAK,CAAEA,WAAU;AAChB,WAAO;AAAA,EACR;AAEA,SAAOA;AACR;AAEO,IAAM,kBAAkB,MAAM;AACpC,QAAM,eAAe,gBAAgB;AAErC,SAAOC,UAAS,MAAM;AACrB,UAAM,kBAAkB,CAAE,UAAU,UAAU,aAAc;AAE5D,WAAO,OAAO,QAAS,gBAAgB,CAAC,CAAE,EACxC,OAA0B,CAAE,KAAK,CAAE,MAAM,QAAS,MAAO;AACzD,UAAK,CAAE,oBAAqB,QAAS,GAAI;AACxC,eAAO;AAAA,MACR;AAEA,YAAM,gBAAgB,gBAAgB,QAAS,QAAS;AAExD,UAAK,CAAE,IAAK,aAAc,GAAI;AAC7B,YAAK,aAAc,IAAI;AAAA,UACtB,OAAO,oBAAqB,QAAS;AAAA,UACrC,OAAO,CAAC;AAAA,QACT;AAAA,MACD;AAEA,UAAK,aAAc,EAAE,MAAM,KAAM,IAAK;AAEtC,aAAO;AAAA,IACR,GAAG,CAAC,CAAE,EACL,OAAQ,OAAQ;AAAA,EACnB,GAAG,CAAE,YAAa,CAAE;AACrB;;;AD1CA,IAAM,oBAAoBC,KAAI,eAAe,WAAY;AAElD,IAAM,kBAAkB,MAAM;AACpC,QAAM,eAAe,gBAAgB;AACrC,QAAM,eAAe,gBAAgB;AAErC,MAAK,aAAa,WAAW,GAAI;AAChC,WAAO;AAAA,EACR;AAEA,SACC,sCAAC,eAAY,MAAK,eAAc,iBAAkB,qBACjD,sCAAC,qBAAkB,OAAQ,qBAC1B;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAY;AAAA;AAAA,EACb,CACD,CACD;AAEF;;;AE9BA,YAAYC,aAAW;AACvB,SAAS,UAAAC,gBAAc;AACvB,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,MAAAC,YAAU;AAKnB,IAAM,kBAAkBC,KAAI,aAAa,WAAY;AAE9C,IAAM,gBAAgB,MAAM;AAClC,QAAM,SAASC,SAA0B,IAAK;AAE9C,SACC,sCAAC,eAAY,MAAK,aAAY,iBAAkB,mBAC/C,sCAAC,qBAAkB,OAAQ,iBAAkB,KAAM,UAClD,sCAACC,cAAA,EAAY,WAAY,QAAS,WAAY,iBAAkB,CACjE,CACD;AAEF;;;ACpBA,YAAYC,aAAW;AACvB,SAAqC,iBAAAC,uBAAqB;AAC1D,SAAS,YAAY,iBAAiB;AACtC,SAAS,MAAAC,YAAU;AAOnB,IAAM,mBAAmBC,KAAI,cAAc,WAAY;AAEvD,IAAMC,WAAgD;AAAA,EACrD;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,aAAU,UAAW,MAAO;AAAA,IAC5D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,cAAW,UAAW,MAAO;AAAA,IAC7D,aAAa;AAAA,EACd;AACD;AAEO,IAAM,iBAAiB,MAAM;AACnC,SACC,sCAAC,eAAY,MAAK,cAAa,iBAAkB,oBAChD,sCAAC,qBAAkB,OAAQ,oBAC1B,sCAACE,iBAAA,EAAc,SAAUD,UAAU,CACpC,CACD;AAEF;;;ACnCA,YAAYE,aAAW;AACvB,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAKnB,IAAM,oBAAoBC,KAAI,eAAe,WAAY;AAEzD,IAAM,oBAAoB;AAAA,EACzB,EAAE,OAAO,OAAO,OAAOA,KAAI,cAAc,WAAY,EAAE;AAAA,EACvD,EAAE,OAAO,OAAO,OAAOA,KAAI,qBAAqB,WAAY,EAAE;AAAA,EAC9D,EAAE,OAAO,OAAO,OAAOA,KAAI,eAAe,WAAY,EAAE;AAAA,EACxD,EAAE,OAAO,OAAO,OAAOA,KAAI,gBAAgB,WAAY,EAAE;AAAA,EACzD,EAAE,OAAO,OAAO,OAAOA,KAAI,gBAAgB,WAAY,EAAE;AAAA,EACzD,EAAE,OAAO,OAAO,OAAOA,KAAI,mBAAmB,WAAY,EAAE;AAAA,EAC5D,EAAE,OAAO,OAAO,OAAOA,KAAI,cAAc,WAAY,EAAE;AAAA,EACvD,EAAE,OAAO,OAAO,OAAOA,KAAI,oBAAoB,WAAY,EAAE;AAAA,EAC7D,EAAE,OAAO,OAAO,OAAOA,KAAI,eAAe,WAAY,EAAE;AACzD;AAEO,IAAM,kBAAkB,MAAM;AACpC,SACC,sCAAC,eAAY,MAAK,eAAc,iBAAkB,qBACjD,sCAAC,qBAAkB,OAAQ,qBAC1B,sCAACC,gBAAA,EAAc,SAAU,mBAAoB,CAC9C,CACD;AAEF;;;AC7BA,YAAYC,aAAW;AACvB,SAAS,UAAAC,gBAAc;AACvB,SAAS,eAAAC,oBAAmB;AAC5B,SAAS,MAAAC,YAAU;AAKnB,IAAM,uBAAuBC,KAAI,kBAAkB,WAAY;AAExD,IAAM,qBAAqB,MAAM;AACvC,QAAM,SAASC,SAA0B,IAAK;AAE9C,SACC,sCAAC,eAAY,MAAK,kBAAiB,iBAAkB,wBACpD,sCAAC,qBAAkB,OAAQ,sBAAuB,KAAM,UACvD,sCAACC,cAAA,EAAY,WAAY,QAAS,KAAM,CAAC,OAAO,kBAAmB,CACpE,CACD;AAEF;;;ACpBA,YAAYC,aAAW;AACvB,SAAS,UAAAC,gBAAc;AACvB,SAAS,eAAAC,qBAAmB;AAC5B,SAAS,MAAAC,YAAU;AAKnB,IAAM,oBAAoBC,KAAI,eAAe,WAAY;AAElD,IAAM,kBAAkB,MAAM;AACpC,QAAM,SAASC,SAA0B,IAAK;AAE9C,SACC,sCAAC,eAAY,MAAK,eAAc,iBAAkB,qBACjD,sCAAC,qBAAkB,OAAQ,mBAAoB,KAAM,UACpD,sCAACC,eAAA,EAAY,WAAY,QAAS,CACnC,CACD;AAEF;;;ACpBA,YAAYC,aAAW;AACvB,SAAqC,iBAAAC,uBAAqB;AAC1D,SAAS,iBAAiB,oBAAoB,eAAe,sBAAsB;AACnF,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,MAAAC,YAAU;AAQnB,IAAM,uBAAuBC,KAAI,cAAc,WAAY;AAE3D,IAAM,iBAAiBC,eAAe,aAAc;AACpD,IAAM,eAAeA,eAAe,cAAe;AAEnD,IAAMC,WAAiD;AAAA,EACtD;AAAA,IACC,OAAO;AAAA,IACP,OAAOF,KAAI,SAAS,WAAY;AAAA,IAChC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,kBAAe,UAAW,MAAO;AAAA,IACjE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,UAAU,WAAY;AAAA,IACjC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,mBAAgB,UAAW,MAAO;AAAA,IAClE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,OAAO,WAAY;AAAA,IAC9B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,gBAAa,UAAW,MAAO;AAAA,IAC/D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,WAAW,WAAY;AAAA,IAClC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,sBAAmB,UAAW,MAAO;AAAA,IACrE,aAAa;AAAA,EACd;AACD;AAEO,IAAM,qBAAqB,MAAM;AACvC,SACC,sCAAC,eAAY,MAAK,cAAa,iBAAkB,wBAChD,sCAAC,mBACA,sCAAC,qBAAkB,OAAQ,wBAC1B,sCAACG,iBAAA,EAAc,SAAUD,UAAU,CACpC,CACD,CACD;AAEF;;;ACtDA,YAAYE,aAAW;AACvB,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,MAAAC,YAAU;AAKnB,IAAM,mBAAmBC,KAAI,cAAc,WAAY;AAEhD,IAAM,iBAAiB,MAAM;AACnC,SACC,sCAAC,eAAY,MAAK,SAAQ,iBAAkB,oBAC3C,sCAAC,qBAAkB,OAAQ,oBAC1B,sCAACC,eAAA,EAAa,IAAG,sBAAqB,CACvC,CACD;AAEF;;;ACjBA,YAAYC,aAAW;AACvB,SAAS,iBAAAC,uBAA8C;AACvD,SAAS,aAAAC,YAAW,cAAc,mBAAmB,qBAAqB;AAC1E,SAAS,MAAAC,YAAU;AAOnB,IAAM,wBAAwBC,KAAI,mBAAmB,WAAY;AAEjE,IAAMC,WAAyD;AAAA,EAC9D;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,QAAQ,WAAY;AAAA,IAC/B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAACE,YAAA,EAAU,UAAW,MAAO;AAAA,IAC5D,aAAa;AAAA,IACb,WAAW;AAAA,EACZ;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOF,KAAI,aAAa,WAAY;AAAA,IACpC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,iBAAc,UAAW,MAAO;AAAA,IAChE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,gBAAgB,WAAY;AAAA,IACvC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,qBAAkB,UAAW,MAAO;AAAA,IACpE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,YAAY,WAAY;AAAA,IACnC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,gBAAa,UAAW,MAAO;AAAA,IAC/D,aAAa;AAAA,EACd;AACD;AACO,IAAM,sBAAsB,MAClC,sCAAC,eAAY,MAAK,mBAAkB,iBAAkB,yBACrD,sCAAC,qBAAkB,OAAQ,yBAC1B,sCAACG,iBAAA,EAAc,SAAUF,UAAU,WAAY,OAAQ,CACxD,CACD;;;AC5CD,YAAYG,aAAW;AACvB,SAAqC,iBAAAC,uBAAqB;AAC1D,SAAS,sBAAsB,4BAA4B;AAC3D,SAAS,MAAAC,YAAU;AAOnB,IAAM,uBAAuBC,KAAI,aAAa,WAAY;AAE1D,IAAMC,YAAgD;AAAA,EACrD;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,iBAAiB,WAAY;AAAA,IACxC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,wBAAqB,UAAW,MAAO;AAAA,IACvE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,iBAAiB,WAAY;AAAA,IACxC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,wBAAqB,UAAW,MAAO;AAAA,IACvE,aAAa;AAAA,EACd;AACD;AAEO,IAAM,qBAAqB,MAAM;AACvC,SACC,sCAAC,eAAY,MAAK,aAAY,iBAAkB,wBAC/C,sCAAC,qBAAkB,OAAQ,wBAC1B,sCAACE,iBAAA,EAAc,SAAUD,WAAU,CACpC,CACD;AAEF;;;ACnCA,YAAYE,aAAW;AACvB,SAAS,qBAAqB;AAC9B,SAAS,MAAAC,YAAU;;;ACFnB,YAAYC,aAAW;AAEvB,SAAS,aAAAC,YAAW,gBAAgB;AACpC,SAAS,YAAAC,WAAU,cAAAC,aAAY,SAAAC,eAAa;AAI5C,IAAMC,QAAO;AAUN,IAAM,qBAAqB,CAAE;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAmC;AAClC,SACC,sCAAC,sBACA;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,WAAU;AAAA,MACV,IAAK;AAAA,QACJ,gBAAgB;AAAA,QAChB,YAAY;AAAA,QACZ,iBAAiB;AAAA,MAClB;AAAA;AAAA,IAEE,YAAY;AAAA,IACZ,UACD,sCAACC,aAAA,EAAW,MAAOF,OAAO,SAAU,UAAW,cAAW,UAAS,YAClE,sCAACG,YAAA,EAAU,UAAWH,OAAO,CAC9B,IAEA,sCAACE,aAAA,EAAW,MAAOF,OAAO,SAAU,OAAQ,cAAW,OAAM,YAC5D,sCAAC,YAAS,UAAWA,OAAO,CAC7B;AAAA,EAEF,GACA,sCAACI,WAAA,EAAS,IAAK,SAAU,eAAa,QACrC,sCAAC,sBAAiB,QAAU,CAC7B,CACD;AAEF;;;AD1CA,IAAM,iBAAiB;AAAA,EACtB,QAAQ;AAAA,EACR,OAAO;AAAA,IACN,OAAO;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,IACR;AAAA,IACA,OAAO;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,QACN,MAAM;AAAA,QACN,MAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AACD;AAEA,IAAM,oBAAoBC,KAAI,eAAe,WAAY;AAElD,IAAM,kBAAkB,MAAM;AACpC,QAAM,EAAE,OAAO,UAAU,QAAQ,IAAI,eAAgB,UAAU;AAAA,IAC9D,SAAS,EAAE,iBAAiB,kBAAkB;AAAA,EAC/C,CAAE;AAEF,QAAM,gBAAgB,MAAM;AAC3B,aAAU,cAAe;AAAA,EAC1B;AAEA,QAAM,mBAAmB,MAAM;AAC9B,aAAU,IAAK;AAAA,EAChB;AAEA,QAAM,gBAAgB,QAAS,KAAM;AAErC,SACC,sCAAC,eAAY,MAAO,UAAW,iBAAkB,qBAChD;AAAA,IAAC;AAAA;AAAA,MACA,SAAU;AAAA,MACV,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,UAAW,CAAE;AAAA,MACb,aAAc,MAAM,sCAAC,oBAAe,iBAAmB;AAAA;AAAA,IAEvD,sCAAC,mBAAc;AAAA,EAChB,CACD;AAEF;;;AExDA,YAAYC,aAAW;AACvB,SAAqC,iBAAAC,uBAAqB;AAC1D,SAAS,gBAAgB,qBAAqB,qBAAqB,aAAAC,kBAAiB;AACpF,SAAS,MAAAC,YAAU;AAOnB,IAAM,uBAAuBC,KAAI,kBAAkB,WAAY;AAE/D,IAAMC,YAAiD;AAAA,EACtD;AAAA,IACC,OAAO;AAAA,IACP,OAAOD,KAAI,QAAQ,WAAY;AAAA,IAC/B,eAAe,CAAE,EAAE,KAAK,MAAO,sCAACE,YAAA,EAAU,UAAW,MAAO;AAAA,IAC5D,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOF,KAAI,cAAc,WAAY;AAAA,IACrC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,kBAAe,UAAW,MAAO;AAAA,IACjE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,aAAa,WAAY;AAAA,IACpC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,uBAAoB,UAAW,MAAO;AAAA,IACtE,aAAa;AAAA,EACd;AAAA,EACA;AAAA,IACC,OAAO;AAAA,IACP,OAAOA,KAAI,aAAa,WAAY;AAAA,IACpC,eAAe,CAAE,EAAE,KAAK,MAAO,sCAAC,uBAAoB,UAAW,MAAO;AAAA,IACtE,aAAa;AAAA,EACd;AACD;AAEO,IAAM,iBAAiB,MAC7B,sCAAC,eAAY,MAAK,kBAAiB,iBAAkB,wBACpD,sCAAC,qBAAkB,OAAQ,wBAC1B,sCAACG,iBAAA,EAAc,SAAUF,WAAU,CACpC,CACD;;;AC5CD,YAAYG,aAAW;AACvB,SAAS,UAAAC,gBAAc;AACvB,SAAS,eAAAC,qBAAmB;AAC5B,SAAS,MAAAC,YAAU;AAKnB,IAAM,qBAAqBC,KAAI,gBAAgB,WAAY;AAEpD,IAAM,mBAAmB,MAAM;AACrC,QAAM,SAASC,SAA0B,IAAK;AAE9C,SACC,sCAAC,eAAY,MAAK,gBAAe,iBAAkB,sBAClD,sCAAC,qBAAkB,OAAQ,oBAAqB,KAAM,UACrD,sCAACC,eAAA,EAAY,WAAY,QAAS,KAAM,CAAC,OAAO,kBAAmB,CACpE,CACD;AAEF;;;AjBCO,IAAM,oBAAoB,MAAM;AACtC,SACC,sCAAC,sBACA,sCAAC,qBAAgB,GACjB,sCAAC,qBAAgB,GACjB,sCAAC,mBAAc,GACf,sCAAC,kBAAa,GACd,sCAAC,wBAAmB,GACpB,sCAAC,oBAAe,GAChB;AAAA,IAAC;AAAA;AAAA,MACA,QAAS;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA;AAAA,IAEA,sCAAC,kBAAe,IAAK,EAAE,IAAI,EAAE,KAC5B,sCAAC,qBAAgB,GACjB,sCAAC,wBAAmB,GACpB,sCAAC,sBAAiB,GAClB,sCAAC,sBAAiB,GAClB,sCAAC,oBAAe,GAChB,sCAAC,kBAAa,GACd,sCAAC,yBAAoB,GACrB,sCAAC,oBAAe,GAChB,sCAAC,wBAAmB,GACpB,sCAAC,oBAAe,GAChB,sCAAC,qBAAgB,CAClB;AAAA,EACD,CACD;AAEF;;;AkB3DA,YAAYC,aAAW;AAchB,IAAM,kBAAkB,CAAE,EAAE,SAAS,SAAS,CAAC,GAAG,gBAAgB,KAAK,MAAc;AAC3F,QAAM,EAAE,WAAW,MAAM,MAAM,IAAI;AACnC,QAAM,cAAc,wBAAwB;AAC5C,QAAM,mBAAmB;AACzB,QAAM,aAAa,YAAY,wBAAwB,OAAO,SAAU,IAAK;AAE7E,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,iBAAkB;AAAA,MAClB,UAAW,+BAAgC,MAAO;AAAA,MAClD;AAAA;AAAA,IAEA,sCAAC,sBAAiB;AAAA,EACnB;AAEF;;;AnEFA,IAAM,qBAAqB;AAEpB,IAAM,EAAE,MAAM,cAAc,QAAQ,mBAAmB,IAAIC,gBAAe;AAE1E,IAAM,qBAAqB;AAAA,EACjC,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,YAAY;AACb;AAEO,IAAM,WAAW,MAAM;AAC7B,QAAM,qBAAqB,sBAAsB;AACjD,QAAM,CAAE,kBAAkB,mBAAoB,IAAI,oBAAqB,sBAAsB,EAAG;AAChG,QAAM,CAAE,kBAAkB,mBAAoB,IAAIC,WAAyC,IAAK;AAChG,QAAM,aAAa,oBAAoB;AAEvC,MAAK,CAAE,oBAAqB;AAC3B,WAAO;AAAA,EACR;AAEA,SACC,sCAAC,uBAAoB,MAAO,sBAC3B;AAAA,IAAC;AAAA;AAAA,MACA,MAAO,EAAE,YAAY,OAAO,iBAAiB;AAAA,MAC7C,IAAK;AAAA,MACL,OAAQ,CAAE,OAAkC;AAC3C,4BAAqB,EAAG;AACxB,4BAAqB,IAAK;AAAA,MAC3B;AAAA,MACA,cAAe;AAAA;AAAA,IAEf,sCAACC,yBAAA,EAAuB,QAAS,oBAAoB,MACpD,sCAAC,gCACA,sCAAC,qBACA,sCAAC,sBAAiB,GAClB,sCAACC,UAAA,IAAQ,CACV,GACA,sCAAC,oBACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAOC,KAAI,UAAU,WAAY;AAAA,QAClC;AAAA,QACA,QAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA;AAAA,IACD,GACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAOA,KAAI,WAAW,WAAY;AAAA,QACnC;AAAA,QACA,QAAS,CAAE,UAAU,SAAU;AAAA;AAAA,IAChC,GACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAOA,KAAI,QAAQ,WAAY;AAAA,QAChC;AAAA,QACA,QAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA;AAAA,IACD,GACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAOA,KAAI,YAAY,WAAY;AAAA,QACpC;AAAA,QACA,QAAS,CAAE,YAAY,WAAW,mBAAoB;AAAA;AAAA,IACvD,GACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAOA,KAAI,cAAc,WAAY;AAAA,QACtC;AAAA,QACA,QAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA;AAAA,IACD,GACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAOA,KAAI,cAAc,WAAY;AAAA,QACtC;AAAA,QACA,QAAS,CAAE,YAAa;AAAA;AAAA,IACzB,GACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAOA,KAAI,UAAU,WAAY;AAAA,QAClC;AAAA,QACA,QAAS,CAAE,iBAAiB,gBAAgB,gBAAgB,cAAe;AAAA;AAAA,IAC5E,GACA;AAAA,MAAC;AAAA;AAAA,QACA,SAAU;AAAA,UACT,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAOA,KAAI,WAAW,WAAY;AAAA,QACnC;AAAA,QACA,QAAS;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACD;AAAA;AAAA,IACD,GACA,sCAAC,kBAAa,CACf,GACA,sCAACC,MAAA,EAAI,IAAK,EAAE,QAAQ,QAAQ,GAAI,CACjC,CACD;AAAA,EACD,CACD;AAEF;AAEA,SAAS,cAAe,EAAE,SAAS,GAAmC;AACrE,QAAM,kBAAkB,mBAAmB;AAE3C,SACC,sCAACC,SAAA,EAAM,IAAK,EAAE,GAAG,oBAAoB,KAAK,oBAAoB,OAAO,qBAAqB,EAAE,KACzF,QACH;AAEF;AAEA,SAAS,wBAAuC;AAC/C,QAAM,EAAE,YAAY,IAAI,WAAW;AAEnC,QAAM,OAAO,OAAO,QAAS,YAAY,WAAY,EAAE;AAAA,IACtD,CAAE,CAAE,EAAE,QAAS,MAAO,SAAS,SAAS,WAAW,SAAS,QAAQ;AAAA,EACrE;AAEA,MAAK,CAAE,MAAO;AACb,WAAO;AAAA,EACR;AAEA,SAAO,KAAM,CAAE;AAChB;;;AnB/LO,IAAM,mBAAmB,MAAM;AACrC,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B;AAAA;AAAA;AAAA,IAGC,sCAACC,WAAA,EAAS,KAAM,QAAQ,MACvB,sCAAC,qBAAgB,CAClB;AAAA;AAEF;AAEA,IAAM,kBAAkB,MAAM;AAC7B,QAAM,iBAAiB,wBAAwB;AAC/C,QAAM,sBAAsB,eAAe;AAC3C,QAAM,uBAAuB,mBAAoB,gBAAiB;AAElE,QAAM,CAAE,YAAY,aAAc,IAAI,kBAA+B,OAAO,mBAAoB;AAChG,QAAM,EAAE,aAAa,kBAAkB,aAAa,IAAI,QAAqB,UAAW;AACxF,SACC,sCAAC,sBACA,sCAACC,SAAA,EAAM,WAAU,UAAS,IAAK,EAAE,OAAO,OAAO,KAC9C,sCAACA,SAAA,EAAM,IAAK,EAAE,GAAG,oBAAoB,KAAK,EAAE,KAC3C;AAAA,IAAC;AAAA;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,IAAK,EAAE,IAAI,IAAI;AAAA,MACb,GAAG,aAAa;AAAA,MAClB,UAAW,CAAE,GAAY,aAAwB;AAChD,qBAAa,EAAE,SAAU,GAAG,QAAS;AACrC,sBAAe,QAAS;AAAA,MACzB;AAAA;AAAA,IAEA,sCAAC,OAAI,OAAQC,KAAI,WAAW,WAAY,GAAM,GAAG,YAAa,UAAW,GAAI;AAAA,IAC7E,sCAAC,OAAI,OAAQA,KAAI,SAAS,WAAY,GAAM,GAAG,YAAa,OAAQ,GAAI;AAAA,IACtE,wBACD,sCAAC,OAAI,OAAQA,KAAI,gBAAgB,WAAY,GAAM,GAAG,YAAa,cAAe,GAAI;AAAA,EAExF,GACA,sCAACC,UAAA,IAAQ,CACV,GACA,sCAAC,YAAW,GAAG,iBAAkB,UAAW,GAAI,gBAAc,QAC7D,sCAAC,iBAAY,CACd,GACA,sCAAC,YAAW,GAAG,iBAAkB,OAAQ,GAAI,gBAAc,QAC1D,sCAAC,cAAS,CACX,GACE,wBACD,sCAAC,YAAW,GAAG,iBAAkB,cAAe,GAAI,gBAAc,QACjE,sCAAC,qBAAgB,CAClB,CAEF,CACD;AAEF;;;APpDO,IAAM,EAAE,MAAM,oBAAoB,QAAQ,yBAAyB,IAAIC,gBAAe;AAE7F,IAAM,EAAE,aAAa,IAAI;AAElB,IAAM,eAAe,MAAM;AACjC,QAAM,EAAE,SAAS,YAAY,IAAIC,oBAAmB;AACpD,QAAM,sBAAsB,uBAAuB;AACnD,QAAM,YAAY,aAAa,EAAE;AAEjC,MAAK,CAAE,WAAW,CAAE,aAAc;AACjC,WAAO;AAAA,EACR;AAGA,QAAM,aAAaC,KAAI,WAAW,WAAY,EAAE,QAAS,MAAM,YAAY,KAAM;AAEjF,QAAM,EAAE,WAAW,qBAAqB,IAAI,2BAA4B,SAAS,WAAY,KAAK,CAAC;AAEnG,MAAI,eACH,8DACC,sCAAC,mBACA,sCAAC,wBAAmB,UAAY,GAChC,sCAAC,YAAS,UAAS,SAAQ,IAAK,EAAE,OAAO,gBAAgB,GAAI,CAC9D,GACA,sCAAC,iBACA,sCAAC,sBAAiB,CACnB,CACD;AAGD,MAAK,sBAAuB;AAC3B,mBAAe,sCAAC,0BAAqB;AAAA,EACtC;AAEA,SACC,sCAAC,iBAAc,UAAW,sCAAC,8BAAyB,KACnD,sCAACC,yBAAA,EAAuB,QAAS,eAChC,sCAACC,gBAAA,MACA,sCAAC,0BAAuB,OAAQ,aAC/B,sCAAC,+BAA4B,cAAe,uBAC3C,sCAAC,mBAAgB,SAAoB,eACpC,sCAAC,aACA,sCAAC,wBAAmB,GAClB,YACH,CACD,CACD,CACD,CACD,CACD,CACD;AAEF;;;A8FtEA,YAAYC,aAAW;AACvB,SAAS,eAAe,uBAAuB;AAMxC,IAAM,cAAc,CAAE,UAAkB;AAC9C,QAAM,eAAe,gBAAgB;AAErC,SAAO,sCAAC,mBAAkB,GAAG,OAAQ,OAAQ,cAAe;AAC7D;;;ACXA,SAAS,uBAAuB;AAChC,SAAS,mBAAmB,qBAAqB;AACjD,SAAS,oBAAoB;;;ACF7B,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,qBAAqB,UAAU,yBAAyB;;;ACDjE,SAAS,iBAAiB,mBAAmB;AAItC,IAAM,EAAE,OAAO,iBAAiB,eAAe,IAAI,YAAa;AAAA,EACtE,IAAI;AAAA,EACJ,WAAW;AACZ,CAAE;;;ACPF,SAAS,qBAAqB,mBAAAC,wBAAuB;AAE9C,IAAM,yBAAyB,MAAM;AAC3C,QAAM,mBAAmB,oBAAoB;AAC7C,QAAM,cAAcA,iBAAgB;AAEpC,MAAK,iBAAiB,WAAW,GAAI;AACpC,WAAO;AAAA,EACR;AAGA,SAAO,CAAC,CAAE,cAAe,iBAAkB,CAAE,EAAE,IAAK,GAAG;AACxD;;;AFNO,IAAM,qBAAqB,MAAM;AACvC,QAAM,EAAE,KAAK,IAAI,gBAAgB;AAEjC,EAAAC,WAAW,MAAM;AAChB,WAAO,SAAU,kBAAmB,mBAAoB,GAAG,MAAM;AAChE,UAAK,uBAAuB,GAAI;AAC/B,aAAK;AAAA,MACN;AAAA,IACD,CAAE;AAAA,EACH,GAAG,CAAC,CAAE;AACP;;;AGdO,IAAM,oBAAoB,MAAM;AACtC,qBAAmB;AAEnB,SAAO;AACR;;;ACNA,YAAYC,aAAW;AACvB;AAAA,EACC,oBAAAC;AAAA,EACA;AAAA,EAGA,gBAAAC;AAAA,OACM;AACP;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAA6B,sBAAAC,2BAA0B;AACvD,SAAS,4BAA4B;AACrC,SAAS,SAAAC,QAAO,QAAAC,OAAM,SAA4B,SAAAC,SAAO,QAAQ,aAAAC,YAAW,cAAAC,mBAAkB;AAC9F,SAAS,MAAAC,YAAU;;;ACjBnB,SAAS,oBAAoB;AAEtB,IAAM,mBAAmB,CAAE,WAAmB,SAAkB;AACtE,QAAM,iBAAiB,aAAc,SAAU;AAE/C,MAAK,CAAE,gBAAiB;AACvB,UAAM,IAAI,MAAO,yCAA0C,SAAU,EAAG;AAAA,EACzE;AAEA,MAAK,eAAe,MAAM,IAAK,QAAS,MAAM,MAAO;AACpD,WAAO;AAAA,EACR;AAEA,QAAM,UAAU,eAAe,UAAU,gBAAiB,CAAE,UAAW,MAAM,MAAM,IAAK,QAAS,MAAM,IAAK;AAE5G,MAAK,CAAE,SAAU;AAChB,UAAM,IAAI,MAAO,iBAAkB,IAAK,YAAa;AAAA,EACtD;AAEA,SAAO;AACR;;;ACpBA,SAAkC,gBAAAC,qBAAoB;AACtD;AAAA,EACC;AAAA,EACA;AAAA,EACA,gBAAAC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,sBAAAC,2BAA0B;AACnC,SAAS,MAAAC,YAAU;AAOZ,IAAM,mBAAmB;AACzB,IAAM,2BAA2B;AAEjC,IAAM,aAAa,MAAM;AAC/B,QAAM,EAAE,OAAO,UAAU,oBAAoB,IAAIH,cAAcE,mBAAmB;AAClF,QAAM,mBAAmB,SAAS;AAElC,QAAM,gBAAgB,CAAE;AAAA,IACvB,OAAAE;AAAA,IACA;AAAA,EACD,MAGO;AACN,UAAM,aAAa,4BAA6B;AAAA,MAC/C,OAAAA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,IAAAA,OAAM,QAAS,CAAE,EAAE,MAAM,MAAM,MAAO;AACrC,YAAM,QAAQ,KAAK;AACnB,YAAM,0BAA0BH,cAAc,gBAAiB;AAC/D,YAAM,eAAe,yBAAyB,WAAY,KAAM,GAAG;AAEnE,UAAK,CAAE,cAAe;AACrB,cAAM,IAAI,MAAO,iDAAkD;AAAA,MACpE;AAEA,wBAAmB;AAAA,QAClB,YAAY,CAAE,OAAO,YAAa;AAAA,QAClC,OAAOE,KAAI,iBAAiB,WAAY;AAAA,QACxC,qBAAqB,MAAM;AAC1B,cAAK,eAAe,kBAAmB;AACtC,gCAAqB,YAAY,CAAC,GAAG,EAAE,aAAa,MAAM,CAAE;AAAA,UAC7D;AAAA,QACD;AAAA,QACA,mBAAmB,MAAM;AACxB,cAAK,eAAe,kBAAmB;AACtC,gCAAqB,kBAAkB,CAAC,GAAG,EAAE,aAAa,MAAM,CAAE;AAAA,UACnE;AAAA,QACD;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAAA,EACH;AAEA,QAAM,WAAW,CAAE;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,MAMO;AACN,UAAM,sBAAsBF,cAAc,gBAAiB;AAC3D,UAAM,eAAe,qBAAqB,WAAY,iBAAkB,GAAG;AAE3E,QAAK,CAAE,cAAe;AACrB,YAAM,IAAI,MAAO,wBAAyB;AAAA,IAC3C;AAEA,UAAM,aAAa,uBAAwB;AAAA,MAC1C,MAAM;AAAA,MACN,IAAI;AAAA,MACJ;AAAA,IACD,CAAE;AAEF,iBAAc;AAAA,MACb,OAAOE,KAAI,gBAAgB,WAAY;AAAA,MACvC,OAAO;AAAA,QACN;AAAA,UACC,WAAW;AAAA,UACX,mBAAmB;AAAA,UACnB,SAAS,EAAE,IAAI,QAAQ;AAAA,QACxB;AAAA,QACA;AAAA,UACC,WAAW;AAAA,UACX,mBAAmB;AAAA,UACnB,SAAS,EAAE,IAAI,QAAQ;AAAA,QACxB;AAAA,MACD;AAAA,MACA,gBAAgB,MAAM;AACrB,YAAK,eAAe,kBAAmB;AACtC,8BAAqB,YAAY,CAAC,GAAG,EAAE,aAAa,MAAM,CAAE;AAAA,QAC7D;AAAA,MACD;AAAA,MACA,mBAAmB,MAAM;AACxB,YAAK,eAAe,kBAAmB;AACtC,8BAAqB,kBAAkB,CAAC,GAAG,EAAE,aAAa,MAAM,CAAE;AAAA,QACnE;AAAA,MACD;AAAA,IACD,CAAE;AAAA,EACH;AAEA,QAAM,aAAa,CAAE;AAAA,IACpB,OAAAC;AAAA,IACA;AAAA,EACD,MAGO;AACN,UAAM,aAAa,yBAA0B;AAAA,MAC5C,OAAAA;AAAA,MACA;AAAA,IACD,CAAE;AAEF,mBAAgB;AAAA,MACf,OAAOD,KAAI,QAAQ,WAAY;AAAA,MAC/B,YAAYC,OAAM,QAAS,CAAE,EAAE,MAAM,MAAM,MAAO;AACjD,cAAM,QAAQ,KAAK;AACnB,cAAM,sBAAsBH,cAAc,gBAAiB;AAC3D,cAAM,eAAe,qBAAqB,WAAY,KAAM,GAAG;AAE/D,YAAK,CAAE,cAAe;AACrB,gBAAM,IAAI,MAAO,wBAAyB;AAAA,QAC3C;AAEA,eAAO,CAAE,OAAO,YAAa;AAAA,MAC9B,CAAE;AAAA,MACF,kBAAkB,MAAM;AACvB,YAAK,eAAe,kBAAmB;AACtC,8BAAqB,YAAY,CAAC,GAAG,EAAE,aAAa,MAAM,CAAE;AAAA,QAC7D;AAAA,MACD;AAAA,MACA,mBAAmB,MAAM;AACxB,YAAK,eAAe,kBAAmB;AACtC,8BAAqB,kBAAkB,CAAC,GAAG,EAAE,aAAa,MAAM,CAAE;AAAA,QACnE;AAAA,MACD;AAAA,IACD,CAAE;AAAA,EACH;AAEA,QAAM,UAAU,CAAE;AAAA,IACjB;AAAA,IACA;AAAA,IACA,OAAAG;AAAA,EACD,MAIO;AACN,IAAAA,OAAM,QAAS,CAAE,EAAE,MAAM,MAAO;AAC/B,YAAM,WAAW,QAAQ;AAEzB,qBAAgB;AAAA,QACf,OAAOD,KAAI,QAAQ,WAAY;AAAA,QAC/B,UAAU;AAAA,UACT;AAAA,YACC,aAAa;AAAA,YACb,OAAO;AAAA,cACN,QAAQ;AAAA,cACR,iBAAiB,EAAE,OAAO,OAAQ,QAAS,YAAY,kBAAkB,SAAS;AAAA,YACnF;AAAA,UACD;AAAA,UACA;AAAA,YACC,aAAa;AAAA,YACb,OAAO;AAAA,cACN,QAAQ;AAAA,cACR,iBAAiB,EAAE,OAAO,OAAQ,QAAS,YAAY,kBAAkB,SAAS;AAAA,YACnF;AAAA,UACD;AAAA,QACD;AAAA,MACD,CAAE;AAAA,IACH,CAAE;AAAA,EACH;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEA,IAAM,yBAAyB,CAAE;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACD,MAIO;AACN,MAAK,SAAS,kBAAmB;AAChC,WAAO;AAAA,EACR;AAEA,MAAK,OAAO,oBAAoB,MAAM,kBAAmB;AACxD,WAAO,mBAAmB;AAAA,EAC3B;AAEA,MAAK,OAAO,oBAAoB,MAAM,kBAAmB;AACxD,WAAO,mBAAmB;AAAA,EAC3B;AAEA,SAAO;AACR;AAEA,IAAM,2BAA2B,CAAE;AAAA,EAClC,OAAAC;AAAA,EACA;AACD,MAGO;AACN,QAAM,YAAYA,OAAM,KAAM,CAAE,EAAE,MAAM,MAAO,UAAU,gBAAiB;AAE1E,MAAK,WAAY;AAChB,WAAO;AAAA,EACR;AAEA,QAAM,aAAaA,OAAM,OAAQ,CAAE,KAAK,EAAE,MAAM,MAAS,QAAQ,mBAAmB,MAAM,IAAI,KAAO,CAAE;AACvG,SAAO,mBAAmB;AAC3B;AAEA,IAAM,8BAA8B,CAAE;AAAA,EACrC,OAAAA;AAAA,EACA;AACD,MAGO;AACN,QAAM,mBAAmBA,OAAM,OAAQ,CAAE,KAAK,EAAE,MAAM,MAAO;AAC5D,UAAM,4BAA4B,QAAQ;AAC1C,WAAO,4BAA4B,MAAM,IAAI;AAAA,EAC9C,GAAG,CAAE;AACL,SAAO,mBAAmB;AAC3B;;;AF/NA,IAAM,wBAAwB;AAC9B,IAAM,gCAAgC;AAC/B,IAAM,cAAc,CAAE,EAAE,MAAM,MAA0B;AAC9D,SACC,sCAAC,iBAAc,MAAK,sBAAqB,iBAAkBC,KAAI,QAAQ,WAAY,KAClF,sCAAC,sBAAmB,OAAgB,CACrC;AAEF;AAEO,IAAM,qBAAqB,CAAE,EAAE,MAAM,MAA0B;AACrE,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,EAAE,SAAS,eAAe,UAAU,WAAW,IAAI,WAAW;AAEpE,QAAM,EAAE,CAAE,gBAAiB,GAAG,SAAS,IAAI,mBAAoB,QAAQ,IAAI;AAAA,IAC1E,CAAE,qBAAsB,GAAG;AAAA,EAC5B,CAAE;AAEF,QAAM,UAAU,iBAAkB,QAAQ,IAAI,qBAAsB;AACpE,QAAM,iBAAiB,iBAAkB,QAAQ,IAAI,6BAA8B;AAEnF,QAAM,iBAA4C,SAAS,IAAK,CAAE,SAAS,UAAW;AACrF,UAAM,EAAE,OAAO,aAAa,IAAI,yBAA0B,QAAQ,EAAG,KAAK,CAAC;AAE3E,WAAO;AAAA,MACN,IAAI,QAAQ;AAAA,MACZ,OAAO;AAAA,MACP;AAAA,IACD;AAAA,EACD,CAAE;AAEF,QAAM,WAAW,CAChB,YACA,UACA,SACI;AACJ,QAAK,MAAM,QAAQ,SAAS,OAAQ;AACnC,YAAMC,SAAQ,KAAK,OAAO;AAE1B,aAAO,QAAS,EAAE,kBAAkB,eAAe,IAAI,OAAAA,QAAO,YAAY,QAAQ,GAAG,CAAE;AAAA,IACxF;AAEA,QAAK,MAAM,QAAQ,SAAS,UAAW;AACtC,YAAMA,SAAQ,KAAK,OAAO;AAE1B,aAAO,WAAY;AAAA,QAClB,OAAAA;AAAA,QACA,kBAAkB,eAAe;AAAA,MAClC,CAAE;AAAA,IACH;AAEA,QAAK,MAAM,QAAQ,SAAS,aAAc;AACzC,YAAMA,SAAQ,KAAK,OAAO;AAE1B,aAAO,cAAe,EAAE,OAAAA,QAAO,kBAAkB,eAAe,GAAG,CAAE;AAAA,IACtE;AAEA,QAAK,MAAM,QAAQ,SAAS,WAAY;AACvC,YAAM,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO;AAEjC,aAAO,SAAU;AAAA,QAChB,SAAS;AAAA,QACT,YAAY,QAAQ;AAAA,QACpB,kBAAkB,eAAe;AAAA,QACjC,gBAAgB,SAAU,IAAK,EAAE;AAAA,QACjC,mBAAmB;AAAA,MACpB,CAAE;AAAA,IACH;AAAA,EACD;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,YAAa;AAAA,MACb,QAAS;AAAA,MACT,WAAY;AAAA,MACZ,YAAa,eAAe,SAAS;AAAA,MACrC;AAAA,MACA,cAAe;AAAA,QACd,OAAO,CAAE,EAAE,KAAK,MAAO,KAAK;AAAA,QAC5B,eAAe,EAAE,IAAI,IAAI,OAAO,MAAM;AAAA,QACtC,OAAO;AAAA,QACP,SAAS;AAAA,QACT,MAAM,MAAM;AAAA,MACb;AAAA;AAAA,EACD;AAEF;AAEA,IAAM,YAAY,CAAE,EAAE,OAAO,MAAM,MAA0C;AAC5E,QAAM,KAAK,MAAM,MAAM;AAEvB,QAAM,iBAAiB,yBAA0B,EAAG;AAEpD,QAAM,eAAe,gBAAgB;AAErC,SACC,sCAACC,SAAA,EAAM,IAAK,EAAE,WAAW,GAAG,GAAI,WAAU,OAAM,YAAW,UAAS,KAAM,OACzE,sCAAC,cAAO,YAAc,GACtB,sCAAC,kBAAe,OAAgB,CACjC;AAEF;AAEA,IAAM,iBAAiB,CAAE,EAAE,MAAM,MAA0B;AAC1D,QAAM,EAAE,OAAO,YAAY,IAAIC,cAAcC,mBAAmB;AAEhE,QAAM,YAAY,gBAAgB;AAElC,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,SAAO,sCAACC,OAAA,EAAK,MAAK,QAAO,OAAM,WAAU,OAAQL,KAAI,WAAW,WAAY,GAAI;AACjF;AAEA,IAAM,cAAc,CAAE,EAAE,OAAO,MAAM,MAA0C;AAC9E,MAAK,CAAE,MAAM,IAAK;AACjB,WAAO;AAAA,EACR;AAEA,SACC,sCAACE,SAAA,EAAM,GAAI,GAAI,KAAM,OACpB,sCAAC,mBAAgB,WAAY,MAAM,IAAK,GACxC,sCAAC,iBAAc,MAAK,sBAAqB,iBAAkBF,KAAI,QAAQ,WAAY,KAClF,sCAAC,qBAAkB,UAAW,OAAQ,CACvC,CACD;AAEF;AAEA,IAAM,oBAAoB,CAAE,EAAE,SAAS,MAA6B;AACnE,QAAM,EAAE,OAAO,SAAS,IAAIG,cAAcC,mBAAmB;AAE7D,QAAM,YAAY,UAAU;AAE5B,SACC,sCAACF,SAAA,EAAM,WAAU,OAAM,YAAW,UAAS,gBAAe,iBAAgB,KAAM,KAC/E,sCAACI,mBAAA,MAAmBN,KAAI,sBAAsB,WAAY,CAAG,GAC7D,sCAAC,sBAAmB,aAAc,WAAY,WAAU,WACvD;AAAA,IAAC;AAAA;AAAA,MACA,MAAK;AAAA,MACL,SAAU;AAAA,MACV,UAAW;AAAA,MACX,UAAW,CAAE,EAAE,OAAO,MAA8C;AACnE,iBAAU,OAAO,UAAU,WAAW,IAAK;AAAA,MAC5C;AAAA,MACA,YAAa;AAAA,QACZ,GAAK,YAAY,EAAE,OAAO,EAAE,SAAS,GAAG,QAAQ,cAAc,EAAE,IAAI,CAAC;AAAA,MACtE;AAAA;AAAA,EACD,CACD,CACD;AAEF;AAEA,IAAM,kBAAkB,CAAE,EAAE,UAAU,MAA8B;AACnE,QAAM,iBAAiB,yBAA0B,SAAU;AAE3D,QAAM,QAAQ,gBAAgB,SAAS;AAEvC,SACC,sCAACE,SAAA,EAAM,KAAM,KACZ,sCAACI,mBAAA,MAAmBN,KAAI,YAAY,WAAY,CAAG,GACnD;AAAA,IAACO;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,OAAQ;AAAA,MACR,UAAW,CAAE,EAAE,OAAO,MAA8C;AACnE,oCAA6B;AAAA,UAC5B;AAAA,UACA,UAAU,EAAE,OAAO,OAAO,MAAM;AAAA,QACjC,CAAE;AAAA,MACH;AAAA;AAAA,EACD,CACD;AAEF;AAEO,IAAM,qBAAqB,CAAE;AAAA,EACnC;AAAA,EACA;AACD,MAAmE;AAClE,MAAK,CAAE,aAAc;AACpB,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,SACC;AAAA,QAACC;AAAA,QAAA;AAAA,UACA,OAAM;AAAA,UACN,MAAO,sCAAC,wBAAqB,UAAS,QAAO;AAAA,UAC7C,MAAK;AAAA,UACL,IAAK,EAAE,OAAO,IAAI;AAAA;AAAA,QAElB,sCAACC,aAAA,EAAW,SAAQ,WACjBT,KAAI,iEAAiE,WAAY,CACpF;AAAA,MACD;AAAA;AAAA,IAGD,sCAAC,cAAO,QAAU;AAAA,EACnB;AAEF;;;AG/NA,IAAMU,gBAAe;AAAA,EACpB,MAAM,EAAE,WAAW,aAAiC,QAAQ,OAAO;AACpE;AAEO,IAAM,0BAA0B,MAAM;AAC5C,SAAO,QAAiEA,aAAa,EAAE;AAAA,IACtF,CAAE,CAAE,MAAM,EAAE,WAAW,OAAO,CAAE,MAAO;AACtC,uBAAiB,SAAU,MAAM,WAAW,MAAO;AAAA,IACpD;AAAA,EACD;AACD;;;ACfA,SAAS,8BAA8B,6BAAAC,kCAAiC;AACxE,SAAS,4BAA4B,mCAAmC;;;ACDxE,YAAYC,aAAW;AACvB,SAAS,mBAAAC,kBAAiB,gBAAAC,eAAc,gBAAAC,qBAAoB;AAC5D;AAAA,EACC;AAAA,OAKM;AACP,SAAS,oBAAoB;;;ACT7B,SAAS,WAAAC,iBAAe;;;ACAxB,SAAS,WAAAC,iBAAe;AACxB,SAAS,gBAAAC,qBAAoB;;;ACCtB,IAAMC,sBAAqB,MAAM;AACvC,QAAM,iBAAiB;AAEvB,SAAO,eAAe,WAAW,UAAU,CAAC;AAC7C;;;ACJO,IAAM,uBAAuB,MAAM;AACzC,QAAM,EAAE,kBAAkB,IAAIC,oBAAmB;AAEjD,MAAK,CAAE,mBAAoB;AAC1B,WAAO;AAAA,EACR;AAEA,SAAO;AAAA,IACN,MAAM,kBAAkB;AAAA,IACxB,QAAQ,kBAAkB;AAAA,EAC3B;AACD;;;ACbA;AAAA,EACC;AAAA,EACA,mBAAAC;AAAA,OAIM;AACP,SAAS,SAAS;AAIlB,IAAM,wBAAwB;AAE9B,IAAM,oBAAoB,CAAE,SAC3B,KAAK,QAAQ;AAEP,IAAM,qBAAqB,CAAE,aAAgD;AACnF,QAAM,kBAAkB,SAAS,SAAS,WAAW,SAAS,WAAY,qBAAsB;AAEhG,SAAO,mBAAmB,kBAAmB,eAAgB,IAAI,kBAAkB;AACpF;AAEO,IAAM,qBAAqB,CAAE,SAA+C;AAClF,SAAOA,iBAAiB,IAAK,KAAK,KAAK,WAAW;AACnD;AAEO,IAAM,kBAAkB,CAAE,aAAiC;AACjE,SAAO,CAAC,CAAE,mBAAoB,QAAS;AACxC;AAEO,IAAM,sBAAsB;AAAA,EAClC;AAAA,EACA,EAAE,aAAc;AAAA,IACf,MAAM,EAAE,OAAO;AAAA,IACf,OAAO,EAAE,OAAO;AAAA,IAChB,UAAU,EAAE,IAAI,EAAE,SAAS;AAAA,EAC5B,CAAE;AACH;;;AH9BO,IAAM,qBAAqB,MAAM;AACvC,MAAI,aAAuB,CAAC;AAE5B,QAAM,EAAE,SAAS,IAAIC,cAAa;AAElC,MAAK,UAAW;AACf,UAAM,kBAAkB,mBAAoB,QAAS;AAErD,iBAAa,iBAAiB,SAAS,cAAc,CAAC;AAAA,EACvD;AAGA,SAAOC,UAAS,MAAM,2BAA4B,UAAW,GAAG,CAAE,WAAW,KAAK,CAAE,CAAE;AACvF;AAEA,IAAM,6BAA6B,CAAE,eAA0B;AAC9D,QAAM,EAAE,MAAM,OAAO,IAAI,qBAAqB,KAAK,CAAC;AAEpD,MAAK,CAAE,WAAW,UAAU,CAAE,QAAQ,CAAE,QAAS;AAChD,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,cAAc,IAAI,IAAK,UAAW;AAExC,QAAM,cAA4B,CAAC;AACnC,QAAM,sBAAsD,CAAC;AAE7D,aAAY,OAAO,OAAO,OAAQ,IAAK,GAAI;AAC1C,QAAK,CAAE,IAAI,WAAW,KAAM,CAAE,aAAc,YAAY,IAAK,QAAS,CAAE,GAAI;AAC3E;AAAA,IACD;AAEA,QAAK,CAAE,oBAAqB,IAAI,KAAM,GAAI;AACzC,0BAAqB,IAAI,KAAM,IAAI,CAAC;AAAA,IACrC;AACA,wBAAqB,IAAI,KAAM,EAAE,KAAM,GAAI;AAAA,EAC5C;AAEA,aAAY,SAAS,QAAS;AAC7B,QAAK,oBAAqB,KAAM,GAAI;AACnC,kBAAY,KAAM,GAAG,oBAAqB,KAAM,CAAE;AAAA,IACnD;AAAA,EACD;AAEA,SAAO;AACR;;;AD/CO,IAAM,gBAAgB,CAAE,YAAwC;AACtE,QAAM,cAAc,mBAAmB;AAEvC,SAAOC,UAAS,MAAM,YAAY,KAAM,CAAE,QAAS,IAAI,SAAS,OAAQ,KAAK,MAAM,CAAE,aAAa,OAAQ,CAAE;AAC7G;;;ADOO,IAAM,kCAAkC,MAAM,sCAAC,gBAAa,UAAS,QAAO;AAE5E,IAAM,mCAAmC,CAAE,EAAE,MAAM,MAA6C;AACtG,QAAM,UAAUC,cAAc,kCAAmC;AAEjE,SACC,sCAACC,eAAA,EAAe,GAAG,SAAU,OAAQ,MAAM,SAC1C,sCAACC,kBAAA,EAAgB,MAAK,WACrB,sCAACC,UAAA,EAAQ,UAAW,MAAM,OAAQ,CACnC,CACD;AAEF;AAEA,IAAMA,WAAU,CAAE,EAAE,SAAS,MAA2D;AACvF,QAAM,EAAE,SAAS,IAAIH,cAAyD;AAE9E,QAAM,uBAAuB,SAAS,WAAY,0BAA2B;AAC7E,SACC,sCAACC,eAAA,EAAa,UAAW,qBAAqB,MAAM,OAAQ,OAAQ,UAAW,UAAW,MAAM,UAC/F,sCAACC,kBAAA,EAAgB,MAAK,SACrB,sCAAC,WAAQ,UAAW,SAAS,OAAQ,CACtC,CACD;AAEF;AAEA,IAAM,UAAU,CAAE,EAAE,SAAS,MAAqD;AACjF,QAAM,MAAM,SAAS,MAAM;AAC3B,QAAM,aAAa,cAAe,IAAI,MAAM,QAAQ,EAAG;AACvD,SAAO,sCAAO,kBAAN,MAAiB,YAAY,KAAO;AAC7C;;;AM/CA,YAAYE,aAAW;AACvB,SAAS,oBAAAC,mBAAkB,gBAAAC,sBAAoB;AAE/C,SAAS,iBAAAC,sBAAqB;AAC9B,SAAS,gBAAAC,eAAc,cAAc,aAAa;AAClD;AAAA,EACC,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,eAAe;AAAA,EACf,iBAAAC;AAAA,EACA,WAAAC;AAAA,OACM;AACP,SAAS,MAAAC,YAAU;;;ACpBnB,SAAS,qBAAAC,0BAAyB;AAK3B,IAAM,yBAAyB,CAA4C,YAAqB;AACtG,QAAM,EAAE,QAAQ,IAAI,WAAW;AAC/B,QAAM,cAAc,sCAAuC,QAAQ,EAAG,IAAK,OAAQ;AACnF,SAAOC,mBAAwB,WAAY;AAC5C;;;ACVA,YAAYC,aAAW;AACvB,SAAS,mBAAAC,kBAAiB,gBAAAC,eAA6B,gBAAAC,qBAAoB;;;ACD3E,YAAYC,aAAW;AACvB,SAAS,mBAAAC,wBAAwE;AAU1E,IAAM,4BAAwE,CAAE;AAAA,EACtF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAO;AACN,QAAM,WAAiB,gBAA+C,MAAM;AAC3E,QAAK,CAAE,aAAc;AACpB,aAAO,CAAC;AAAA,IACT;AAEA,UAAM,UAAU,OAAO,QAAS,WAAY;AAC5C,WAAO,QAAQ,OAA8C,CAAE,QAAQ,CAAE,KAAK,IAAK,MAAO;AACzF,aAAQ,GAAI,IAAI,MAAM,WAAW;AACjC,aAAO;AAAA,IACR,GAAG,CAAC,CAAE;AAAA,EACP,GAAG,CAAE,WAAY,CAAE;AAEnB,QAAM,oBAA0B,gBAAS,MAAM;AAC9C,QAAK,CAAE,iBAAkB;AACxB,aAAO,CAAC;AAAA,IACT;AAEA,WAAO,OAAO,QAAS,eAAgB,EAAE;AAAA,MACxC,CAAE,QAAQ,CAAE,KAAK,YAAa,MAAO;AACpC,YAAK,gBAAgB,OAAO,iBAAiB,YAAY,YAAY,cAAe;AACnF,iBAAQ,GAAI,IAAI;AAAA,QACjB,OAAO;AACN,iBAAQ,GAAI,IAAI;AAAA,YACf,QAAQ;AAAA,YACR,OAAO;AAAA,UACR;AAAA,QACD;AACA,eAAO;AAAA,MACR;AAAA,MACA,CAAC;AAAA,IACF;AAAA,EACD,GAAG,CAAE,eAAgB,CAAE;AAEvB,QAAM,oBAA0B,gBAAS,MAAM;AAC9C,WAAO,EAAE,GAAG,UAAU,GAAG,kBAAkB;AAAA,EAC5C,GAAG,CAAE,UAAU,iBAAkB,CAAE;AAEnC,MAAK,CAAE,UAAU,cAAc,MAAM,QAAS;AAC7C,WAAO,8DAAI,QAAU;AAAA,EACtB;AAEA,QAAM,WAAW,CAAEA,iBAAiB,UAAU,cAAc,iBAAkB,EAAE;AAEhF,SAAO,WAAW,OAAO,8DAAI,QAAU;AACxC;;;ADhDO,IAAM,iBAAiB,CAAE,EAAE,MAAM,SAAS,MAA4B;AAC5E,QAAM,EAAE,OAAO,SAAS,IAAIC,cAAc,mBAAoB;AAC9D,QAAM,EAAE,OAAO,IAAI,QAAQ,IAAI,SAAS,IAAI,SAAS,CAAC;AAEtD,QAAM,aAAa,cAAe,IAAK;AAEvC,MAAK,CAAE,YAAa;AACnB,UAAM,IAAI,MAAO,eAAgB,IAAK,YAAa;AAAA,EACpD;AAEA,QAAM,kBAAkB,WAAW,aAAc,IAAK;AAEtD,QAAM,eAAe,iBAAiB;AACtC,QAAM,eAAe,WAAY,IAAK,KAAK;AAE3C,QAAM,kBAAkE,CAAE,cAAe;AACxF,aAAU;AAAA,MACT;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACT,GAAG;AAAA,QACH,GAAG;AAAA,MACJ;AAAA,IACD,CAAE;AAAA,EACH;AAEA,QAAM,WAAW,yBAA0B,EAAE,QAAQ,WAAW,aAAa,CAAE;AAE/E,SACC,sCAACC,eAAA,EAAa,UAAsB,UAAW,iBAAkB,OAAQ,EAAE,CAAE,IAAK,GAAG,aAAa,KACjG,sCAACC,kBAAA,EAAgB,QAChB;AAAA,IAAC;AAAA;AAAA,MACA,UAAW;AAAA,MACX,aAAc,WAAW;AAAA,MACzB,iBAAkB;AAAA;AAAA,IAEhB;AAAA,EACH,CACD,CACD;AAEF;;;AEtDA,SAAS,YAAAC,YAAU,YAAAC,kBAAgB;AACnC,YAAYC,aAAW;AACvB,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,eAAe,iBAAiB,mBAAmB;AAC5D,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,WAAAC,UAAS,QAAAC,OAAM,SAAAC,SAAO,cAAAC,aAAY,YAAAC,iBAAgB;AAC3D,SAAS,MAAAC,YAAU;AAgBnB,IAAMC,QAAO;AAWN,IAAM,mBAAmB,CAAE,EAAE,OAAO,aAAa,MAA8B;AACrF,QAAM,CAAE,aAAa,cAAe,IAAIC,WAAU,EAAG;AACrD,QAAM,EAAE,QAAQ,cAAc,IAAI,qBAAqB,KAAK,CAAC;AAC7D,QAAM,QAAQC,UAAS;AAEvB,QAAM,EAAE,OAAO,SAAS,IAAIC,cAAa;AACzC,QAAM,EAAE,MAAM,OAAO,cAAc,SAAS,IAAIA,cAAc,mBAAoB;AAElF,QAAM,CAAE,EAAE,sBAAuB,IAAI,uBAAwB,IAAK;AAElE,QAAM,wBAAwB,CAAC,CAAE;AAEjC,QAAMC,YAAU,mBAAoB,WAAY;AAEhD,QAAM,mBAAmB,CAAEA,UAAQ,UAAU,CAAE,YAAY,KAAK;AAEhE,QAAM,eAAe,CAAE,UAAmB;AACzC,mBAAgB,KAAM;AAAA,EACvB;AAEA,QAAM,sBAAsB,CAAE,UAAmB;AAChD,QAAK,CAAE,uBAAwB;AAC9B,6BAAwB,QAAS;AAAA,IAClC;AAEA,UAAM,iBAAiBA,UAAQ,QAAS,CAAE,CAAE,EAAEC,MAAM,MAAOA,MAAM,EAAE,KAAM,CAAE,SAAU,KAAK,UAAU,KAAM;AAE1G,aAAU,EAAE,MAAM,OAAO,OAAO,gBAAgB,SAAS,IAAI,UAAU,EAAE,OAAO,gBAAgB,MAAM,EAAE,CAAE;AAE1G,iBAAa;AAAA,EACd;AAEA,QAAM,mBAAmBD,UAAQ,QAAS,CAAE,CAAE,UAAUC,MAAM,MAAO;AAAA,IACpE;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO,gBAAiB,QAAS,GAAG,SAAS;AAAA,IAC9C;AAAA,IACA,GAAGA,OAAM,IAAK,CAAE,UAAY;AAAA,MAC3B,MAAM;AAAA,MACN,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK;AAAA,IACb,EAAI;AAAA,EACL,CAAE;AAEF,SACC,sCAAC,eAAY,cAAaC,KAAI,gBAAgB,WAAY,KACzD;AAAA,IAAC;AAAA;AAAA,MACA,OAAQA,KAAI,gBAAgB,WAAY;AAAA,MACxC,SAAU;AAAA,MACV,MAAO,sCAACC,eAAA,EAAa,UAAWP,OAAO;AAAA;AAAA,EACxC,GACE,mBACD,sCAAC,mBAAc,IAEf,sCAACQ,YAAA,MACA;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,aAAcF,KAAI,6BAAwB,WAAY;AAAA;AAAA,EACvD,GAEA,sCAACG,UAAA,IAAQ,GAET;AAAA,IAAC;AAAA;AAAA,MACA,OAAQ;AAAA,MACR,UAAW;AAAA,MACX,SAAU;AAAA,MACV,eAAgB,cAAc;AAAA,MAC9B,WAAY,CAAE,SACb,KAAK,SAAS,SAAS,EAAE,oBAAoB,MAAM,QAAS,GAAI,EAAE,IAAI,CAAC;AAAA,MAExE,oBACC,sCAAC,aAAU,aAA4B,SAAU,MAAM,eAAgB,EAAG,GAAI;AAAA;AAAA,EAEhF,CACD,CAEF;AAEF;AAEA,IAAM,YAAY,CAAE,EAAE,aAAa,QAAQ,MAC1C;AAAA,EAACC;AAAA,EAAA;AAAA,IACA,KAAM;AAAA,IACN,YAAW;AAAA,IACX,gBAAe;AAAA,IACf,QAAO;AAAA,IACP,GAAI;AAAA,IACJ,OAAM;AAAA,IACN,IAAK,EAAE,IAAI,IAAI;AAAA;AAAA,EAEf,sCAACH,eAAA,EAAa,UAAS,SAAQ;AAAA,EAC/B,sCAACI,aAAA,EAAW,OAAM,UAAS,SAAQ,eAChCL,KAAI,0BAA0B,WAAY,GAC5C,sCAAC,UAAG,GAAE,UACG,aAAa,SACvB;AAAA,EACA,sCAACK,aAAA,EAAW,OAAM,UAAS,SAAQ,WAAU,IAAK,EAAE,SAAS,QAAQ,eAAe,SAAS,KAC1FL,KAAI,uBAAuB,WAAY,GACzC,sCAACM,OAAA,EAAK,OAAM,kBAAiB,SAAQ,WAAU,WAAU,UAAS,SAAU,WACzEN,KAAI,qBAAqB,WAAY,CACxC,CACD;AACD;AAGD,IAAM,gBAAgB,MACrB,8DACC,sCAACG,UAAA,IAAQ,GACT;AAAA,EAACC;AAAA,EAAA;AAAA,IACA,KAAM;AAAA,IACN,YAAW;AAAA,IACX,gBAAe;AAAA,IACf,QAAO;AAAA,IACP,GAAI;AAAA,IACJ,OAAM;AAAA,IACN,IAAK,EAAE,IAAI,IAAI;AAAA;AAAA,EAEf,sCAACH,eAAA,EAAa,UAAS,SAAQ;AAAA,EAC/B,sCAACI,aAAA,EAAW,OAAM,UAAS,SAAQ,eAChCL,KAAI,8CAA8C,WAAY,CACjE;AAAA,EACA,sCAACK,aAAA,EAAW,OAAM,UAAS,SAAQ,aAChCL,KAAI,kDAAkD,WAAY,CACrE;AACD,CACD;AAGD,IAAM,qBAAqB,CAAE,gBAAwC;AACpE,QAAM,cAAc,mBAAmB;AAEvC,QAAMF,YAAU,YAAY,OAAmC,CAAE,YAAY,EAAE,MAAM,OAAO,MAAM,MAAO;AACxG,UAAM,YAAY,MAAM,YAAY,EAAE,SAAU,YAAY,KAAK,EAAE,YAAY,CAAE;AAEjF,QAAK,CAAE,WAAY;AAClB,aAAO;AAAA,IACR;AAEA,QAAK,CAAE,WAAW,IAAK,KAAM,GAAI;AAChC,iBAAW,IAAK,OAAO,CAAC,CAAE;AAAA,IAC3B;AAEA,eAAW,IAAK,KAAM,GAAG,KAAM,EAAE,OAAO,OAAO,OAAO,KAAK,CAAE;AAE7D,WAAO;AAAA,EACR,GAAG,oBAAI,IAAI,CAAE;AAEb,SAAO,CAAE,GAAGA,SAAQ;AACrB;;;AJtJA,IAAMS,QAAO;AAEb,IAAM,kBAAkB,CAAE,OAAQ;AAE3B,IAAM,0BAA0B,MAAM;AAC5C,QAAM,EAAE,UAAU,YAAY,IAAIC,eAAa;AAC/C,QAAM,EAAE,MAAM,MAAM,IAAIA,eAAc,mBAAoB;AAE1D,QAAM,CAAE,oBAAqB,IAAI,uBAAwB,IAAK;AAC9D,QAAM,wBAAwBC,eAAe,EAAE,SAAS,UAAU,CAAE;AAEpE,QAAM,EAAE,MAAM,UAAU,GAAG,IAAI;AAE/B,QAAM,aAAa,cAAe,OAAQ;AAE1C,QAAM,mBAAmB,MAAM;AAC9B,gBAAa,wBAAwB,IAAK;AAAA,EAC3C;AAEA,MAAK,CAAE,YAAa;AACnB,UAAM,IAAI,MAAO,eAAgB,OAAQ,YAAa;AAAA,EACvD;AAEA,SACC,sCAACC,MAAA,MACA;AAAA,IAAC;AAAA;AAAA,MACA,WAAS;AAAA,MACT,oBAAkB;AAAA,MAClB,OAAQ,WAAW;AAAA,MACnB,WAAY,sCAACC,eAAA,EAAa,UAAWJ,OAAO;AAAA,MAC1C,GAAGK,aAAa,qBAAsB;AAAA,MACxC,SACC,8DACC,sCAAC,0BAAuB,YAA0B,GAClD;AAAA,QAACC;AAAA,QAAA;AAAA,UACA,MAAON;AAAA,UACP,SAAU;AAAA,UACV,cAAaO,KAAI,wBAAwB,WAAY;AAAA;AAAA,QAErD,sCAAC,SAAM,UAAWP,OAAO;AAAA,MAC1B,CACD;AAAA;AAAA,EAEF,GACA;AAAA,IAACQ;AAAA,IAAA;AAAA,MACA,eAAa;AAAA,MACb,mBAAiB;AAAA,MACjB,cAAe,EAAE,UAAU,UAAU,YAAY,QAAQ;AAAA,MACzD,iBAAkB,EAAE,UAAU,OAAO,YAAY,QAAQ;AAAA,MACzD,YAAa;AAAA,QACZ,IAAI,EAAE,IAAI,EAAE;AAAA,MACb;AAAA,MACE,GAAGC,aAAa,qBAAsB;AAAA;AAAA,IAExC,sCAAC,eAAY,cAAaF,KAAI,gBAAgB,WAAY,KACzD,sCAAC,oBAAiB,OAAQ,sBAAsB,OAAQ,CACzD;AAAA,EACD,CACD;AAEF;AAEO,IAAM,yBAAyB,CAAE,EAAE,WAAW,MAAmC;AACvF,QAAM,aAAaL,eAAe,EAAE,SAAS,UAAU,CAAE;AAEzD,QAAM,qBAAqB,CAAC,CAAE,WAAW,gBAAgB;AAEzD,MAAK,CAAE,oBAAqB;AAC3B,WAAO;AAAA,EACR;AAEA,SACC,8DACC;AAAA,IAACI;AAAA,IAAA;AAAA,MACA,MAAON;AAAA,MACL,GAAGK,aAAa,UAAW;AAAA,MAC7B,cAAaE,KAAI,oBAAoB,WAAY;AAAA;AAAA,IAEjD,sCAAC,gBAAa,UAAWP,OAAO;AAAA,EACjC,GACA;AAAA,IAACQ;AAAA,IAAA;AAAA,MACA,eAAa;AAAA,MACb,mBAAiB;AAAA,MACjB,cAAe,EAAE,UAAU,UAAU,YAAY,QAAQ;AAAA,MACzD,iBAAkB,EAAE,UAAU,OAAO,YAAY,QAAQ;AAAA,MACzD,YAAa;AAAA,QACZ,IAAI,EAAE,IAAI,EAAE;AAAA,MACb;AAAA,MACE,GAAGC,aAAa,UAAW;AAAA;AAAA,IAE7B,sCAAC,eAAY,cAAaF,KAAI,oBAAoB,WAAY,KAC7D;AAAA,MAACG;AAAA,MAAA;AAAA,QACA,OAAQ,WAAW;AAAA,QACnB,SAAU,WAAW;AAAA,QACrB,MAAO,sCAACN,eAAA,EAAa,UAAWJ,OAAO;AAAA;AAAA,IACxC,GACA,sCAAC,mBAAgB,UAAW,WAAW,iBAAkB,SAAU,WAAW,MAAO,CACtF;AAAA,EACD,CACD;AAEF;AAEA,IAAM,kBAAkB,CAAE,EAAE,UAAU,QAAQ,MAAuE;AACpH,QAAM,OAAO,SAAS,OAAQ,CAAE,EAAE,KAAK,MAAO,SAAS,SAAU;AACjE,QAAM,EAAE,cAAc,aAAa,iBAAiB,IAAIW,SAAmB,CAAE;AAE7E,MAAK,CAAE,KAAK,QAAS;AAEpB,WAAO;AAAA,EACR;AAEA,MAAK,gBAAgB,SAAU,OAAQ,GAAI;AAC1C,UAAM,YAAY,KAAM,CAAE;AAC1B,WACC,8DACC,sCAACC,UAAA,IAAQ,GACT,sCAAC,sBAAmB,OAAQ,UAAU,MAAM,OAAQ,CACrD;AAAA,EAEF;AAEA,SACC,8DACG,KAAK,SAAS,KACf,sCAACC,OAAA,EAAK,MAAK,SAAQ,SAAQ,aAAc,GAAG,aAAa,KACtD,KAAK,IAAK,CAAE,EAAE,MAAM,GAAG,UACxB;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,KAAM;AAAA,MACN,OAAQ,MAAM;AAAA,MACd,IAAK,EAAE,IAAI,GAAG,IAAI,IAAI;AAAA,MACpB,GAAG,YAAa,KAAM;AAAA;AAAA,EACzB,CACC,CACH,GAED,sCAACF,UAAA,IAAQ,GACP,KAAK,IAAK,CAAE,EAAE,MAAM,GAAG,UAAW;AACnC,WACC;AAAA,MAACG;AAAA,MAAA;AAAA,QACA,KAAM;AAAA,QACN,IAAK,EAAE,UAAU,GAAG,IAAI,GAAG,WAAW,OAAO;AAAA,QAC3C,GAAG,iBAAkB,KAAM;AAAA;AAAA,MAE7B,sCAAC,sBAAmB,OAAQ,MAAM,OAAQ;AAAA,IAC3C;AAAA,EAEF,CAAE,CACH;AAEF;AAEA,IAAM,yBAAyB;AAAA,EAC9B,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,MAAM;AACP;AAEA,IAAM,+BAA+B;AAAA,EACpC,QAAQ;AACT;AAEA,IAAM,YAAY,CAAE,YAAgD;AACnE,QAAM,kBAAkB,6BAA8B,QAAQ,IAAkD;AAChH,MAAK,iBAAkB;AACtB,WAAO;AAAA,EACR;AAEA,SACC,uBAAwB,QAAQ,IAA4C,KAC5E,iBAAiB,UAAW,QAAQ,IAAoB;AAE1D;AAEA,IAAMC,WAAU,CAAE,EAAE,QAAQ,MAAwC;AACnE,MAAK,CAAE,iBAAiB,IAAK,QAAQ,IAAoB,GAAI;AAC5D,WAAO;AAAA,EACR;AAEA,QAAM,SAAS,UAAW,OAAQ;AAElC,QAAM,sBAAsB,QAAQ,SAAS;AAC7C,QAAM,mBAAmB,sBACtB;AAAA,IACA,GAAG,QAAQ;AAAA,IACX,WAAW;AAAA,MACV,GAAK,QAAQ,OAAO,aAAa,CAAC;AAAA,MAClC,eAAe;AAAA,IAChB;AAAA,EACA,IACA,EAAE,GAAG,QAAQ,MAAM;AACtB,QAAM,eAAe;AAAA,IACpB,GAAG;AAAA,IACH,WAAW,QAAQ;AAAA,EACpB;AACA,QAAM,kBAAkB,QAAQ,SAAS;AACzC,QAAM,mBACL,WAAW,gBACR;AAAA,IACA,SAAS;AAAA,IACT,qBAAqB,kBAAkB,+BAA+B;AAAA,EACtE,IACA,CAAC;AAEL,SACC,sCAAC,kBAAe,MAAO,QAAQ,QAC9B,sCAACC,OAAA,EAAK,WAAS,MAAC,KAAM,MAAO,IAAK,oBAC/B,QAAQ,QACT,sCAACA,OAAA,EAAK,MAAI,MAAC,IAAK,MACf,sCAACC,mBAAA,MAAmB,QAAQ,KAAO,CACpC,IACG,MACJ,sCAACD,OAAA,EAAK,MAAI,MAAC,IAAK,MACf,sCAAC,WAAY,MAAO,QAAQ,MAAsB,OAAQ,cAAe,CAC1E,CACD,CACD;AAEF;AAEA,SAAS,mBAAoB,EAAE,OAAAE,OAAM,GAAsD;AAC1F,SACC,sCAACC,SAAA,EAAM,GAAI,GAAI,KAAM,GAAI,IAAK,EAAE,WAAW,OAAO,KAC/CD,OAAM;AAAA,IAAK,CAAE,SACd,KAAK,SAAS,YAAY,sCAACH,UAAA,EAAQ,KAAM,KAAK,MAAM,MAAO,SAAU,KAAK,OAAQ,IAAK;AAAA,EACxF,CACD;AAEF;;;AKtQA,SAAS,yBAAyB;AAClC,SAAS,mBAAAK,wBAAmC;;;ACD5C,SAAS,eAAAC,oBAAmB;AAErB,IAAM,kCAAkCA,aAAa;AAAA,EAC3D,MAAM;AAAA,EACN,SAAS;AACV,CAAE;;;ADMK,IAAM,qBAAqB,kBAAmB,CAAE,UAAoB;AAC1E,MAAK,CAAE,MAAM,MAAO;AACnB,WAAO;AAAA,EACR;AAEA,SAAO,gBAAiB,MAAM,MAAM,gBAAiB,MAAM,YAAY,CAAC,CAAE,CAAE;AAC7E,CAAE;AAIF,SAAS,gBAAiB,OAAe;AACxC,QAAM,cAAc,OAAO,QAAS,KAAM,EAAE,IAAK,CAAE,CAAE,YAAY,YAAa,MAAO;AACpF,UAAM,QAAQC,iBAAiB,YAAa,IAAI,aAAa,QAAQ;AAErE,WAAO,CAAE,YAAY,KAAM;AAAA,EAC5B,CAAE;AAEF,SAAO,OAAO,YAAa,WAAY;AACxC;AAEA,SAAS,gBAAiB,MAAc,UAAsC;AAC7E,QAAM,iBAAiB;AACvB,QAAM,EAAE,YAAY,IAAI,eAAe,aAAa,CAAC;AAErD,MAAK,CAAE,aAAc;AACpB,UAAM,IAAI,gCAAgC;AAAA,EAC3C;AAEA,QAAM,cAAc,MAAM;AACzB,UAAM,MAAM,YAAY,UAAW,kBAAkB,MAAM,QAAS;AAEpE,QAAK,CAAE,KAAM;AACZ,aAAO;AAAA,IACR;AAEA,WAAO,YAAY,qBAAsB,GAAI,KAAK;AAAA,EACnD;AAEA,QAAM,WAAW,YAAY;AAE7B,MAAK,aAAa,MAAO;AACxB,WAAO;AAAA,EACR;AAEA,SAAO,IAAI,QAAS,CAAE,YAAa;AAClC,gBAAY,uBAAwB,MAAM;AACzC,cAAS,YAAY,CAAE;AAAA,IACxB,CAAE;AAAA,EACH,CAAE;AACH;;;AE5DA,YAAYC,aAAW;AACvB,SAAS,gBAAAC,sBAAoB;AAC7B,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,MAAAC,YAAU;AAMZ,IAAM,uBAAuB,MAA0B;AAC7D,QAAM,EAAE,SAAS,IAAIC,eAAa;AAElC,QAAM,UAAU,CAAC,CAAE,YAAY,gBAAiB,QAAS;AAEzD,SAAO;AAAA,IACN;AAAA,IACA,MAAMC;AAAA,IACN,OAAOC,KAAI,gBAAgB,WAAY;AAAA,IACvC,SAAS,CAAE,EAAE,MAAM,MAAO,sCAAC,oBAAiB,OAAgB;AAAA,EAC7D;AACD;;;AdJA,IAAM,EAAE,sBAAsB,IAAI;AAE3B,IAAM,OAAO,MAAM;AACzB,6BAA4B;AAAA,IAC3B,WAAW;AAAA,IACX,WAAW,CAAE,EAAE,MAAM,MAAO,mBAAoB,KAAM;AAAA,EACvD,CAAE;AAEF,8BAA6B;AAAA,IAC5B,IAAI;AAAA,IACJ,WAAW,CAAE,EAAE,MAAM,MACpB,mBAAsB,MAAqC,OAAO,OAAO,OAAO,GAAI;AAAA,IACrF,WAAW;AAAA,EACZ,CAAE;AAEF,6BAA4B;AAAA,IAC3B,IAAI;AAAA,IACJ,WAAW,CAAE,EAAE,MAAM,MACpB,mBAAsB,MAAqC,OAAO,OAAO,OAAO,GAAI;AAAA,IACrF,WAAW;AAAA,EACZ,CAAE;AAEF,wBAAuB;AAAA,IACtB,IAAI;AAAA,IACJ,UAAU;AAAA,EACX,CAAE;AAEF,EAAAC,2BAA0B,SAAU,WAAW,kBAAmB;AAClE,+BAA6B,SAAU,WAAW,kBAAmB;AACtE;;;Ae7CA,SAAS,gBAAAC,sBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,MAAAC,YAAU;;;ACFZ,SAAS,QAAS,GAAY,GAAsB;AAC1D,MAAK,MAAM,GAAI;AACd,WAAO;AAAA,EACR;AAEA,MAAK,MAAM,QAAQ,MAAM,MAAO;AAC/B,WAAO;AAAA,EACR;AAEA,MAAK,OAAO,MAAM,OAAO,GAAI;AAC5B,WAAO;AAAA,EACR;AAEA,MAAK,MAAM,QAAS,CAAE,KAAK,MAAM,QAAS,CAAE,GAAI;AAC/C,QAAK,EAAE,WAAW,EAAE,QAAS;AAC5B,aAAO;AAAA,IACR;AAEA,aAAU,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAM;AACpC,UAAK,CAAE,QAAS,EAAG,CAAE,GAAG,EAAG,CAAE,CAAE,GAAI;AAClC,eAAO;AAAA,MACR;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAEA,MAAK,OAAO,MAAM,YAAY,OAAO,MAAM,UAAW;AACrD,UAAM,OAAO;AACb,UAAM,OAAO;AAEb,UAAM,QAAQ,OAAO,KAAM,IAAK;AAChC,UAAM,QAAQ,OAAO,KAAM,IAAK;AAEhC,QAAK,MAAM,WAAW,MAAM,QAAS;AACpC,aAAO;AAAA,IACR;AAEA,eAAY,OAAO,OAAQ;AAC1B,UAAK,EAAI,OAAO,OAAS;AACxB,eAAO;AAAA,MACR;AAEA,UAAK,CAAE,QAAS,KAAM,GAAI,GAAG,KAAM,GAAI,CAAE,GAAI;AAC5C,eAAO;AAAA,MACR;AAAA,IACD;AAEA,WAAO;AAAA,EACR;AAEA,SAAO;AACR;;;AD5CA,IAAM,EAAE,eAAe,IAAI;AAEpB,SAAS,sBAAsB;AACrC,iBAAgB;AAAA,IACf,IAAI;AAAA,IACJ,UAAU;AAAA,EACX,CAAE;AACH;AAEO,SAAS,0BAA0B;AACzC,QAAM,UAAU,WAAW;AAC3B,QAAM,EAAE,OAAO,YAAY,SAAS,IAAIC,eAAa;AACrD,QAAM,WAAW,UAAU,QAAQ,UAAU;AAC7C,QAAM,aAAa,SAAS,kBAAkB,UAAa,SAAS,kBAAkB;AACtF,QAAM,aAAa,CAAC,CAAE,SAAS,UAAU;AACzC,QAAM,aAAa,CAAC,CAAE,SAAS,UAAU;AAEzC,WAAS,sBAAsB;AAC9B,QAAK,CAAE,WAAW,CAAE,YAAY,YAAa;AAC5C,aAAO;AAAA,IACR;AAEA,QAAK,YAAa;AACjB,aAAO,CAAE,QAAS,OAAO,SAAS,aAAc;AAAA,IACjD;AAEA,WAAO,CAAE;AAAA,EACV;AAEA,QAAM,UAAU,oBAAoB;AAEpC,SAAO;AAAA,IACN;AAAA,IACA,OAAOC,KAAI,SAAS,WAAY;AAAA,IAChC,MAAM;AAAA,IACN,SAAS,MAAM,WAAW;AAAA,EAC3B;AACD;;;AE7CA,YAAYC,aAAW;AAEvB,SAAS,gBAAAC,sBAAoB;AAC7B,SAAS,WAAAC,gBAA8B;AACvC,SAAS,qCAAAC,0CAAyC;AAClD,SAAS,MAAAC,YAAU;;;ACLnB,YAAYC,aAAW;AACvB,SAAS,WAAAC,WAAS,YAAAC,kBAAgB;AAClC,SAAS,uBAAAC,4BAA+C;AAExD,SAAS,iBAAAC,sBAAqB;AAC9B;AAAA,EACC;AAAA,EACA,OAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EAEA,WAAAC;AAAA,OACM;AACP,SAAS,MAAAC,YAAU;;;ACjBnB,SAAS,gBAAgC,aAAAC,YAAW,YAAAC,kBAAgB;AACpE,SAA6B,8BAA8B;AAE3D;AAAA,EACC,gBAAAC;AAAA,EACA;AAAA,OAGM;AACP,SAAS,qCAAAC,0CAAyC;AAClD,SAAS,MAAAC,YAAU;AAInB,IAAM,gBAAgB;AAUf,IAAM,qCAAqC,CACjD,kBACA,MACA,YACI;AACJ,QAAM,CAAEC,QAAO,QAAS,IAAIJ,WAA8B,CAAC,CAAE;AAE7D,EAAAD,WAAW,MAAM;AAChB,KAAE,YAAY;AACb,YAAM,kBAAkB,MAAM,QAAQ;AAAA,QACrC,iBACE,OAAQ,CAAE,EAAE,MAAM,MAAO,KAAM,EAC/B,IAAK,CAAE,MAAM,UAAW,yBAA0B,MAAM,OAAO,MAAM,OAAQ,CAAE;AAAA,MAClF;AAEA,YAAM,aAAa,gBACjB,IAAK,CAAE,UAAY;AAAA,QACnB,GAAG;AAAA,QACH,cACCG,uCAAsC,KAAK,WACxC,KAAK,eACLC,KAAI,QAAQ,WAAY;AAAA,MAC7B,EAAI,EACH,OAAQ,CAAE,SAAU,CAAE,KAAK,SAAS,KAAK,iBAAiB,EAAG,EAC7D,MAAO,GAAG,aAAc;AAE1B,eAAU,UAAW;AAAA,IACtB,GAAI;AAAA,EACL,GAAG,CAAE,kBAAkB,MAAM,OAAQ,CAAE;AAEvC,SAAOC;AACR;AAEA,IAAMC,sBAAqB;AAEpB,IAAM,2BAA2B,OACvC,MACA,OACA,MACA,YAC+B;AAC/B,QAAM;AAAA,IACL,SAAS;AAAA,MACR,MAAM,EAAE,OAAO,WAAW;AAAA,IAC3B;AAAA,IACA,OAAO,EAAE,OAAO,GAAG;AAAA,EACpB,IAAI;AAEJ,QAAM,eAAe,gBAAiB,EAAE,OAAO,MAAM,CAAE;AAEvD,SAAO;AAAA,IACN,IAAI,KAAK,MAAO,SAAS,MAAO;AAAA,IAChC,UAAU,KAAK,YAAY;AAAA,IAC3B,YAAY,cAAcA;AAAA,IAC1B;AAAA,IACA,OAAO,MAAM,oBAAqB,MAAM,MAAM,OAAQ;AAAA,EACvD;AACD;AAEA,SAAS,gBAAiB,EAAE,OAAO,MAAM,GAAoD;AAC5F,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,MAAKJ,cAAc,KAAM,GAAI;AAC5B,WAAO,GAAI,KAAM,IAAK,KAAM;AAAA,EAC7B;AAEA,MAAK,cAAe,KAAM,GAAI;AAC7B,WAAO,GAAI,KAAM,IAAK,KAAM;AAAA,EAC7B;AAEA,QAAM,IAAI,uBAAwB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAE;AAC1D;AACA,IAAM,sBAAsB,OAC3B,MACA,MACA,YACmC;AACnC,MAAI;AACH,UAAM,SAAS,MAAM,QAAS;AAAA,MAC7B,OAAO;AAAA,QACN,CAAE,IAAK,GAAG,KAAK;AAAA,MAChB;AAAA,IACD,CAAE;AAEF,UAAM,QAAQ,SAAU,IAAK,KAAK;AAElC,QAAK,eAAgB,KAAM,GAAI;AAC9B,aAAO;AAAA,IACR;AAEA,QAAK,OAAO,UAAU,UAAW;AAChC,aAAO,KAAK,UAAW,KAAM;AAAA,IAC9B;AAEA,WAAO,OAAQ,KAAM;AAAA,EACtB,QAAQ;AACP,WAAO;AAAA,EACR;AACD;;;AC5HA,SAAS,kCAAkC;AAEpC,IAAM,wCAAwC,2BAA2B;;;ACFhF,YAAYK,aAAW;AACvB,SAA4B,sBAAsB;AAClD;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,WAAAC,gBAAe;AAMxB,IAAMC,QAAO;AACb,IAAMC,sBAAqB;AAE3B,IAAM,oBAAyD;AAAA,EAC9D,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,QAAQ;AACT;AAEO,IAAM,iBAAiB,CAAE,EAAE,WAAW,MAAc;AAC1D,QAAM,cAAc,eAAe;AACnC,QAAM,oBAAoB,cAAcA;AACxC,QAAM,gBAAgB,kBAAmB,iBAAkB;AAE3D,MAAK,CAAE,eAAgB;AACtB,WAAO;AAAA,EACR;AAEA,QAAM,kBAAkB,YAAY,KAAM,CAAE,mBAAoB,eAAe,OAAO,iBAAkB,GAAG;AAE3G,SACC,sCAACF,UAAA,EAAQ,OAAQ,iBAAkB,WAAU,SAC5C,sCAAC,iBAAc,UAAWC,OAAO,IAAK,EAAE,IAAI,MAAM,GAAI,CACvD;AAEF;;;AC9CA,YAAYE,aAAW;AACvB,SAAS,qCAAAC,0CAAyC;AAClD,SAAS,sBAAsB;AAC/B,SAAS,QAAAC,OAAkB,WAAAC,gBAAe;AAC1C,SAAS,MAAAC,YAAU;AASnB,IAAMC,QAAO;AAEN,IAAM,YAAY,CAAE,EAAE,cAAc,SAAS,MAAc;AACjE,QAAM,cAAc,aAAaC;AAEjC,QAAM,WAAW,cAChB,sCAACC,UAAA,EAAQ,OAAQC,KAAI,8BAA8B,WAAY,GAAI,WAAU,SAC5E,sCAAC,kBAAe,UAAWH,OAAO,CACnC,IACG;AAEJ,SACC;AAAA,IAACI;AAAA,IAAA;AAAA,MACA,OAAQ;AAAA,MACR,MAAOJ;AAAA,MACP,OAAQ,2BAA4B,QAAS;AAAA,MAC7C,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,MAAO;AAAA,MACP,IAAK,CAAE,WAAoB;AAAA,QAC1B,YAAY;AAAA,QACZ,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc,GAAI,MAAM,MAAM,eAAe,IAAK;AAAA,QAClD,eAAe;AAAA,QACf,kBAAkB;AAAA,UACjB,UAAU;AAAA,UACV,cAAc;AAAA,UACd,YAAY;AAAA,QACb;AAAA,MACD;AAAA;AAAA,EACD;AAEF;;;AC9CA,YAAYK,aAAW;AACvB,SAAS,cAAAC,mBAAkB;AAOpB,IAAM,iBAAiB,CAAE,EAAE,OAAO,MAAM,MAAc;AAC5D,SACC;AAAA,IAACA;AAAA,IAAA;AAAA,MACA,SAAQ;AAAA,MACR,OAAM;AAAA,MACN,IAAK;AAAA,QACJ,IAAI;AAAA,QACJ,gBAAgB,UAAU,IAAI,SAAS;AAAA,QACvC,UAAU;AAAA,QACV,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,UAAU;AAAA,MACX;AAAA;AAAA,IAEE;AAAA,EACH;AAEF;;;AC3BA,YAAYC,aAAW;AACvB,SAAS,OAAAC,YAAW;AAEb,IAAM,cAAc,MAC1B,sCAACA,MAAA,EAAI,SAAQ,QAAO,KAAM,KAAM,YAAW,UAE3C;;;ANoBD,IAAM,yBAAyB;AAWxB,IAAM,2BAA2B,CAAE;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,MAAc;AACb,QAAM,CAAE,aAAa,cAAe,IAAIC,WAAqB,KAAM;AAEnE,QAAM,gBAAgB,MAAM;AAC3B,QAAK,YAAa;AACjB;AAAA,IACD;AACA,mBAAgB,CAAE,SAAU,CAAE,IAAK;AAAA,EACpC;AAEA,QAAM,eAAe,MAAM;AAC1B,QAAK,YAAa;AACjB;AAAA,IACD;AACA,mBAAgB,KAAM;AAAA,EACvB;AAEA,QAAM,MAAM,KAAK,KAAM,GAAI;AAE3B,QAAM,eAAe,gBAAgB;AAErC,QAAM,UAAUC,UAA0B,MAAM;AAC/C,WAAOC,qBAAqB;AAAA,MAC3B,cAAc;AAAA,MACd,QAAQ,EAAE,CAAE,GAAI,GAAG,SAAS;AAAA,IAC7B,CAAE;AAAA,EACH,GAAG,CAAE,KAAK,QAAS,CAAE;AAErB,QAAMC,SAAQ,mCAAoC,kBAAkB,KAAK,OAAQ;AAEjF,QAAM,iBACL,sCAAC,qBAAkB,aAAc,gBAChC;AAAA,IAAC;AAAA;AAAA,MACA,WAAY;AAAA,MACZ,IAAK;AAAA,QACJ,OAAO,GAAI,eAAe,sBAAuB;AAAA,QACjD,UAAU;AAAA,QACV,WAAW;AAAA,QACX,WAAW;AAAA,QACX,SAAS;AAAA,QACT,eAAe;AAAA,MAChB;AAAA;AAAA,IAEA;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,IAAK;AAAA,UACJ,UAAU;AAAA,UACV,KAAK;AAAA,UACL,QAAQ;AAAA,UACR,iBAAiB;AAAA,QAClB;AAAA;AAAA,MAEA,sCAACC,gBAAA,EAAc,OAAQC,KAAI,gBAAgB,WAAY,GAAI,SAAU,cAAe;AAAA,IACrF;AAAA,IAEA;AAAA,MAAC;AAAA;AAAA,QACA,IAAK;AAAA,UACJ,SAAS;AAAA,UACT,eAAe;AAAA,UACf,GAAG;AAAA,UACH,MAAM;AAAA,UACN,UAAU;AAAA,UACV,gBAAgB;AAAA,YACf,IAAI;AAAA,UACL;AAAA,QACD;AAAA;AAAA,MAEA,sCAACC,SAAA,EAAM,KAAM,KAAM,IAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,GAAI,MAAK,UACpDJ,OAAM,IAAK,CAAE,MAAM,UAAW;AAC/B,eACC;AAAA,UAACC;AAAA,UAAA;AAAA,YACA,KAAM,KAAK;AAAA,YACX,SAAQ;AAAA,YACR,KAAM;AAAA,YACN,MAAK;AAAA,YAEL,cAAaE,KAAI,wBAAwB,WAAY,EAAE;AAAA,cACtD;AAAA,cACA,KAAK;AAAA,YACN;AAAA;AAAA,UAEA;AAAA,YAACF;AAAA,YAAA;AAAA,cACA,SAAQ;AAAA,cACR,KAAM;AAAA,cACN,IAAK,EAAE,UAAU,QAAQ,OAAO,QAAQ,YAAY,aAAa;AAAA;AAAA,YAEjE,sCAAC,kBAAe,YAAa,KAAK,YAAa;AAAA,YAC/C,sCAAC,aAAU,cAAe,KAAK,cAAe,UAAW,KAAK,UAAW;AAAA,YACzE,sCAAC,kBAAe,OAAgB,OAAQ,KAAK,OAAQ;AAAA,UACtD;AAAA,UACA,sCAAC,iBAAY;AAAA,QACd;AAAA,MAEF,CAAE,CACH;AAAA,IACD;AAAA,EACD,CACD;AAGD,MAAK,YAAa;AACjB,WAAO,sCAACA,MAAA,EAAI,IAAK,EAAE,SAAS,cAAc,KAAM,QAAU;AAAA,EAC3D;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,SAAU;AAAA,MACV;AAAA,MACA;AAAA;AAAA,IAEA,sCAACI,aAAA,EAAW,SAAU,eAAgB,cAAa,OAAQ,IAAK,EAAE,IAAI,OAAO,GAAI,UAAW,cACzF,QACH;AAAA,EACD;AAEF;AAEA,SAAS,iBAAkB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAMI;AACH,QAAM,YAAY,aAAa;AAC/B,QAAM,YAAY,UAAU;AAC5B,QAAM,wBAAwB,YAAY,UAAU;AAEpD,MAAK,YAAa;AACjB,WAAO,sCAACJ,MAAA,EAAI,IAAK,EAAE,SAAS,cAAc,KAAM,QAAU;AAAA,EAC3D;AAEA,MAAK,aAAc;AAClB,WACC,8DACC;AAAA,MAAC;AAAA;AAAA,QACA,MAAO;AAAA,QACP,SAAU;AAAA,QACV,IAAK;AAAA,UACJ,iBAAiB;AAAA,UACjB,QAAQ,CAAE,UAAkB,MAAM,OAAO,QAAQ;AAAA,QAClD;AAAA;AAAA,IACD,GACA;AAAA,MAACK;AAAA,MAAA;AAAA,QACA,WAAU;AAAA,QACV,SAAU;AAAA,QACV,MAAO;AAAA,QACP;AAAA,QACA,sBAAoB;AAAA,QACpB,iBAAkB;AAAA,UACjB,SAAS;AAAA,YACR,IAAI,EAAE,IAAI,EAAE;AAAA,UACb;AAAA,QACD;AAAA,QACA,WAAY;AAAA,UACX,QAAQ;AAAA,YACP,WAAW;AAAA,cACV;AAAA,gBACC,MAAM;AAAA,gBACN,SAAS,EAAE,QAAQ,CAAE,uBAAuB,CAAE,EAAE;AAAA,cACjD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA;AAAA,MAEE;AAAA,IACH,CACD;AAAA,EAEF;AAEA,SACC,sCAACC,UAAA,EAAQ,OAAQJ,KAAI,gBAAgB,WAAY,GAAI,WAAU,SAC5D,QACH;AAEF;;;ADpNO,IAAM,6BAA6B,CAAE;AAAA,EAC3C;AACD,MAEO;AACN,QAAM,UAAUK,eAAa;AAC7B,QAAM,EAAE,MAAM,SAAS,IAAI,iBAAiB;AAC5C,QAAM,mBAAmB,0BAA2B,IAAK;AAEzD,MAAK,CAAE,QAAQ,CAAE,iBAAiB,QAAS;AAC1C,WAAO;AAAA,EACR;AAEA,SAAO,sCAAC,aAAU,kBAAsC,MAAc,UAAsB;AAC7F;AASA,IAAM,YAAY,CAAE,EAAE,kBAAkB,MAAM,UAAU,WAAW,MAAuB;AACzF,QAAM,EAAE,IAAI,gBAAgB,UAAU,sBAAsB,MAAM,iBAAiB,IAAI,SAAS;AAEhG,QAAM,cAAc,iBACjB,6BAA8B,kBAAkB,gBAAgB,gBAAiB,IACjF;AAEH,QAAM,WAAW,CAAEC,SAAS,aAAa,KAAM;AAE/C,QAAM,CAAE,WAAY,IAAI;AAExB,MAAK,YAAY,aAAaC,oCAAoC;AACjE,WAAO;AAAA,EACR;AAEA,QAAM,eAAe,gBAAgB;AAErC,QAAM,QAAQ,SAAU,EAAE,cAAc,SAAS,CAAE;AAEnD,QAAM,sBAA+D;AAAA,IACpE,UACC,gBAAgB,uBACb,4BAA6B,qBAAqB,OAAO,CAAE,IAC3D;AAAA,IACJ,cAAc,YAAY,CAAE,eAAe,OAAO;AAAA,EACnD;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA,IAEA,sCAAC,kBAAiB,GAAG,qBAAsB;AAAA,EAC5C;AAEF;AAEA,IAAM,WAAW,CAAE,EAAE,cAAc,SAAS,MAAqD;AAChG,MAAK,cAAe;AACnB,WAAOC,KAAI,2BAA2B,WAAY;AAAA,EACnD;AAEA,MAAK,UAAW;AACf,WAAOA,KAAI,6CAA6C,WAAY;AAAA,EACrE;AAEA,SAAOA,KAAI,qCAAqC,WAAY;AAC7D;;;AQvFA,SAAS,qBAAAC,oBAAmB,6BAAAC,kCAAiC;;;ACCtD,IAAM,8BAA8B,oBAAI,IAAK;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAE;;;ACZF,YAAYC,aAAW;AAEvB,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,SAAAC,eAAa;AAIf,IAAM,mBAAmBD,mBAAmB,CAAE,WAA2B;AAC/E,MAAK,CAAE,UAAU,OAAO,WAAW,GAAI;AACtC,WAAO;AAAA,EACR;AAEA,SACC,sCAACC,SAAA,EAAM,WAAU,YACd,OAAO,IAAK,CAAE,MAAM,UACrB,sCAACA,SAAA,EAAM,KAAM,SAAU,IAAM,CAC5B,CACH;AAEF,CAAE;;;ACnBF,YAAYC,cAAW;AACvB,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,SAAAC,SAAO,UAAAC,SAAQ,8BAA8B;AAM/C,IAAM,oCAAoCF,mBAAmB,CAAE,UACrE,uCAACC,SAAA,EAAM,WAAU,OAAM,KAAM,GAAI,YAAW,YAC3C,uCAAC,kBAAe,OAAgB,CACjC,CACC;AAEF,IAAM,iBAAiB,CAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAyB;AACpE,SAAO,uCAAC,cAAO,KAAO;AACvB;AAEO,IAAM,+BAA+BC,QAAQ,sBAAuB,EAAG,CAAE,EAAE,MAAM,OAAS;AAAA,EAChG,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc,GAAI,MAAM,MAAM,eAAe,CAAE;AAAA,EAC/C,SAAS,aAAc,MAAM,QAAQ,OAAO,QAAS;AAAA,EACrD,YAAY;AACb,EAAI;;;ACxBJ,YAAYC,cAAW;AACvB,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,SAAAC,eAAa;AACtB,SAAS,MAAAC,YAAU;AAeZ,IAAM,uCAAuCC,mBAAmB,CAAE,UACxE,uCAACC,SAAA,EAAM,WAAU,OAAM,KAAM,GAAI,YAAW,YAC3C,uCAAC,oBAAiB,OAAgB,GAClC,uCAAC,qBAAkB,OAAgB,CACpC,CACC;AAEF,IAAM,mBAAmB,CAAE,EAAE,MAAM,MAA4B;AAC9D,QAAM,WAAW,iBAAkB,KAAM;AAEzC,SAAO,uCAAC,gCAA6B,MAAK,WAAU,WAAU,QAAO,OAAQ,UAAW;AACzF;AAEA,IAAM,oBAAoB,CAAE,EAAE,MAAM,MAA4B;AAC/D,MAAK,MAAM,SAAS,UAAW;AAC9B,WAAO,uCAAC,cAAOC,KAAI,mBAAmB,WAAY,CAAG;AAAA,EACtD;AAEA,SAAO,uCAAC,cAAOA,KAAI,mBAAmB,WAAY,CAAG;AACtD;AAEA,IAAM,mBAAmB,CAAE,aAAwB;AAClD,QAAM,QAAQ,SAAS,OACpB,IAAK,CAAE,EAAE,OAAO,OAAO,MAAkB,GAAI,KAAM,IAAK,UAAU,CAAE,GAAI,GACxE,KAAM,GAAI;AAEb,MAAK,SAAS,SAAS,UAAW;AACjC,WAAO,mBAAoB,SAAS,KAAM,QAAS,KAAM;AAAA,EAC1D;AAEA,SAAO,6BAA8B,SAAS,SAAU,KAAM,KAAM;AACrE;;;ACjDA,YAAYC,cAAW;AACvB,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,uBAAAC,4BAA2B;AACpC,SAAS,WAAW,SAAAC,eAAyB;AAC7C,SAAS,4BAA4B;AAa9B,IAAM,oCAAoCF,mBAAmB,CAAE,UACrE,uCAACE,SAAA,EAAM,WAAU,OAAM,KAAM,GAAI,YAAW,YAC3C,uCAAC,iBAAc,OAAgB,GAC/B,uCAAC,kBAAe,OAAgB,CACjC,CACC;AAEF,IAAM,gBAAgB,CAAE,EAAE,MAAM,MAAyB;AACxD,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,QACrD,YAAY;AAAA,MACb;AAAA;AAAA,EACD;AAEF;AAEA,IAAM,iBAAiB,CAAE,EAAE,MAAM,MAAyB;AACzD,QAAM,EAAE,WAAW,IAAI,SAAU,KAAM;AAEvC,SACC,uCAACD,sBAAA,EAAoB,OAAQ,cAC5B,uCAAC,cAAO,UAAY,CACrB;AAEF;AAEA,IAAM,WAAW,CAAE,UAAkB;AACpC,MAAI,YACH,WAA0B;AAE3B,QAAM,WAAW,OAAO,MAAM;AAC9B,QAAM,EAAE,MAAM,WAAW,IAAI,qBAAsB,SAAS,MAAM,IAAK;AAEvE,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;AACpB,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;;;AC/EA,YAAYE,cAAW;AACvB,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,SAAAC,eAAa;AAWf,IAAM,uBAAuBD,mBAAmB,CAAE,UAAmB;AAC3E,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,QAAM,EAAE,OAAO,SAAS,SAAS,MAAM,QAAQ,SAAS,IAAI;AAE5D,QAAM,aAAa,SAAS;AAC5B,QAAM,QAAQ,CAAE,WAAW,OAAO,WAAW,OAAO,QAAQ,QAAQ,UAAU,KAAM,EAAE,KAAM,GAAI;AAChG,QAAM,gBAAgB,YAAY;AAElC,SACC,uCAACC,SAAA,EAAM,WAAU,UAAS,KAAM,KAAM,IAAK,KAC1C,uCAAC,cACE,YAAY,KAAG,eAAe,MAAI,KACrC,CACD;AAEF,CAAE;;;AC/BF,YAAYC,cAAW;AACvB,SAAS,qBAAAC,0BAAyB;AAClC,SAAS,SAAAC,SAAO,UAAAC,SAAQ,0BAAAC,+BAA8B;AAEtD,SAAS,gBAAiB,OAAyB;AAClD,MAAK,CAAE,MAAM,KAAK,GAAI;AACrB,WAAO;AAAA,EACR;AAEA,SAAO,IAAI,SAAU,SAAS,MAAM,KAAK,CAAE;AAC5C;AAEA,IAAM,uBAAuBD,QAAQC,uBAAuB,EAAG,CAAE,EAAE,MAAM,OAAS;AAAA,EACjF,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,cAAc,GAAI,MAAM,MAAM,eAAe,CAAE;AAAA,EAC/C,SAAS,aAAc,MAAM,QAAQ,OAAO,QAAS;AAAA,EACrD,YAAY;AACb,EAAI;AAEG,IAAM,mBAAmBH,mBAAmB,CAAE,UAAmB;AACvE,MAAK,CAAE,gBAAiB,KAAM,GAAI;AACjC,WAAO;AAAA,EACR;AAEA,SACC,uCAACC,SAAA,EAAM,WAAU,OAAM,KAAM,GAAI,YAAW,YAC3C,uCAAC,wBAAqB,MAAK,WAAU,WAAU,QAAO,OAAgB,GACtE,uCAAC,cAAO,KAAO,CAChB;AAEF,CAAE;;;AC/BF,YAAYG,cAAW;AACvB,SAA8B,qBAAAC,0BAAyB;AACvD,SAAS,SAAAC,eAAa;AAEf,IAAM,mCAAmC,CAAE,qBAAqC,YAAoB,QAAS;AACnH,SAAOD,mBAAmB,CAAE,OAAeE,cAAoD;AAC9F,UAAM,eAAe,oBAAqB,OAAOA,SAAQ;AAEzD,QAAK,CAAE,gBAAgB,OAAO,iBAAiB,UAAW;AACzD,aAAO;AAAA,IACR;AAEA,UAAM,QAAQ,aAAa,MAAO,SAAU,EAAE,OAAQ,OAAQ;AAE9D,QAAK,MAAM,UAAU,GAAI;AACxB,aAAO;AAAA,IACR;AAEA,WACC,uCAACD,SAAA,EAAM,WAAU,UAAS,KAAM,OAC7B,MAAM,IAAK,CAAE,MAAM,UACpB,uCAACA,SAAA,EAAM,KAAM,SAAU,KAAK,KAAK,CAAG,CACnC,CACH;AAAA,EAEF,CAAE;AACH;;;ARdO,SAAS,oCAAoC;AACnD,QAAM,4BAA4BE,2BAA0B,IAAI;AAEhE,SAAO,QAAS,yBAA0B,EAAE,QAAS,CAAE,CAAE,UAAU,WAAY,MAAO;AACrF,QAAK,4BAA4B,IAAK,QAAS,GAAI;AAClD;AAAA,IACD;AAEA,0CAAsC,SAAU,UAAU,WAAY;AAAA,EACvE,CAAE;AAEF,wCAAsC;AAAA,IACrCC,mBAAmB,CAAE,UAAoB;AACxC,aAAO;AAAA,IACR,CAAE;AAAA,EACH;AAEA,6BAA4B,yBAA0B;AACvD;AAEA,SAAS,2BAA4B,2BAAgF;AACpH,wCAAsC,SAAU,SAAS,gBAAiB;AAC1E,wCAAsC,SAAU,4BAA4B,iCAAkC;AAC9G,wCAAsC;AAAA,IACrC;AAAA,IACA;AAAA,EACD;AACA,wCAAsC,SAAU,4BAA4B,iCAAkC;AAC9G,wCAAsC,SAAU,UAAU,oBAAqB;AAE/E,wCAAsC;AAAA,IACrC;AAAA,IACA,iCAAkC,0BAA0B,MAAO;AAAA,EACpE;AACA,wCAAsC;AAAA,IACrC;AAAA,IACA,iCAAkC,0BAA2B,iBAAkB,CAAE;AAAA,EAClF;AACA,wCAAsC;AAAA,IACrC;AAAA,IACA,iCAAkC,0BAA0B,YAAY,IAAK;AAAA,EAC9E;AAEA,GAAE,sBAAsB,cAAc,qBAAsB,EAAE;AAAA,IAAS,CAAE,aACxE,sCAAsC,SAAU,UAAU,gBAAiB;AAAA,EAC5E;AACD;;;AStDO,IAAMC,QAAO,MAAM;AACzB,oCAAkC;AAElC,yBAAwB;AAAA,IACvB,WAAW,WAAW;AAAA,IACtB,IAAI;AAAA,IACJ,UAAU;AAAA,IACV,WAAW;AAAA,EACZ,CAAE;AACH;;;A3CDO,SAASC,QAAO;AACtB,gBAAe,KAAM;AACrB,eAAa;AAEb,kBAAiB;AAAA,IAChB,IAAI;AAAA,IACJ,WAAW;AAAA,EACZ,CAAE;AAGF,OAAa;AAGb,EAAAA,MAAsB;AAGtB,0BAAwB;AAExB,sBAAoB;AACrB;AAEA,IAAM,eAAe,MAAM;AAC1B,eAAc;AAAA,IACb,SAAS;AAAA,IACT,WAAW;AAAA,EACZ,CAAE;AACH;","names":["useBoundProp","React","React","createContext","useContext","Context","React","createContext","useContext","Context","createContext","useContext","React","useState","isElementsStylesProvider","stylesRepository","useUserStylesCapability","validateStyleLabel","createLocation","Box","Chip","Stack","Typography","__","stylesRepository","React","options","options","useState","options","options","React","useMemo","useState","stylesRepository","useUserStylesCapability","useSessionStorage","Chip","Stack","Typography","__","React","createContext","useContext","React","isElementsStylesProvider","stylesRepository","useUserStylesCapability","MenuSubheader","__","styled","React","isElementsStylesProvider","isElementsStylesProvider","useMemo","__","getElementSetting","updateElementSettings","classesPropTypeUtil","useMemo","__","__","isLocalStyle","isElementsStylesProvider","MenuSubheader","stylesRepository","useUserStylesCapability","useState","useUserStylesCapability","useSessionStorage","stylesRepository","useMemo","Chip","Stack","Typography","__","__","createLocation","options","useState","useUserStylesCapability","Stack","Chip","Box","Typography","stylesRepository","isElementsStylesProvider","validateStyleLabel","React","getVariantByMeta","useMemo","createElementStyle","deleteElementStyle","shouldCreateNewLocalStyle","getVariantByMeta","ELEMENTS_STYLES_RESERVED_LABEL","undoable","useMemo","deleteElementStyle","getElementLabel","isElementsStylesProvider","undoable","__","useEffect","useEffect","useMemo","undoable","deleteElementStyle","__","getElementLabel","isElementsStylesProvider","useUndoableActions","getVariantByMeta","useMemo","ELEMENTS_STYLES_RESERVED_LABEL","undoable","shouldCreateNewLocalStyle","createElementStyle","deleteElementStyle","getVariantByMeta","React","useSelectedElement","ThemeProvider","createLocation","SessionStorageProvider","__","React","React","bindTrigger","IconButton","Tooltip","usePopupState","SIZE","React","Box","Fragment","React","Divider","Stack","__","React","createContext","useContext","useEffect","useRef","useState","styled","createContext","useContext","createContext","useContext","useState","useState","React","React","React","React","useId","useRef","CollapseIcon","Collapse","Divider","Stack","createContext","useContext","React","useState","Stack","styled","__","useRef","useId","Stack","CollapseIcon","Collapse","Divider","React","Divider","styled","React","stringPropTypeUtil","stringPropTypeUtil","controlsRegistry","React","Box","styled","React","useMemo","setDocumentModifiedStatus","getElementLabel","updateElementSettings","isDependencyMet","undoable","__","getSessionStorageItem","setSessionStorageItem","HISTORY_DEBOUNCE_WAIT","useMemo","updateElementSettings","isDependencyMet","undoable","setDocumentModifiedStatus","getElementLabel","__","DEFAULT_PRIORITY","React","Stack","styled","Divider","React","useState","createLocation","SessionStorageProvider","Box","Divider","Stack","__","React","createContext","useContext","useElementSetting","classesPropTypeUtil","getBreakpointsTree","stylesRepository","Context","createContext","getBreakpointsTree","useContext","useElementSetting","classesPropTypeUtil","stylesRepository","useElementSetting","useElementSetting","React","__","React","ControlAdornmentsProvider","PropKeyProvider","PropProvider","getStylesSchema","isDependencyMet","isDependencyMet","getStylesSchema","ControlAdornmentsProvider","PropProvider","PropKeyProvider","React","Stack","__","React","React","__","React","Stack","Stack","__","React","__","React","ThemeProvider","ThemeProvider","__","React","__","__","React","EqualUnequalSizesControl","withDirection","__","__","withDirection","EqualUnequalSizesControl","React","__","getElementStyles","getStylesSchema","React","Divider","React","SelectControl","__","__","SelectControl","React","useRef","SizeControl","__","__","useRef","SizeControl","__","React","ControlFormLabel","__","React","ToggleControl","withDirection","__","React","useRef","useTheme","__","__","useRef","useTheme","__","withDirection","ToggleControl","React","ToggleControl","CenterIcon","withDirection","__","__","StartIcon","withDirection","EndIcon","iconProps","options","CenterIcon","ToggleControl","React","ToggleControl","CenterIcon","LayoutAlignLeftIcon","LayoutAlignRightIcon","JustifyIcon","withDirection","__","__","StartIcon","withDirection","LayoutAlignLeftIcon","EndIcon","LayoutAlignRightIcon","iconProps","CenterIcon","JustifyIcon","ToggleControl","React","ToggleControl","__","__","ToggleControl","React","ToggleControl","withDirection","__","FLEX_DIRECTION_LABEL","__","options","StartIcon","withDirection","EndIcon","ToggleControl","React","useEffect","useMemo","useState","NumberControl","useBoundProp","ArrowDownSmallIcon","ArrowUpSmallIcon","Grid","__","__","ArrowUpSmallIcon","ArrowDownSmallIcon","useBoundProp","useMemo","useState","useEffect","Grid","NumberControl","React","useEffect","useMemo","useRef","useState","ControlToggleButtonGroup","NumberControl","PropKeyProvider","PropProvider","SizeControl","useBoundProp","numberPropTypeUtil","PencilIcon","__","__","items","PencilIcon","useBoundProp","useMemo","useState","useEffect","ControlToggleButtonGroup","numberPropTypeUtil","useRef","PropProvider","PropKeyProvider","NumberControl","SizeControl","React","__","__","React","ToggleControl","JustifyBottomIcon","CenterIcon","EvenlyIcon","AroundIcon","BetweenIcon","JustifyTopIcon","withDirection","__","__","StartIcon","withDirection","JustifyTopIcon","EndIcon","JustifyBottomIcon","iconProps","options","CenterIcon","BetweenIcon","AroundIcon","EvenlyIcon","ToggleControl","React","ToggleControl","ArrowRightIcon","__","__","options","ArrowRightIcon","ToggleControl","DISPLAY_LABEL","__","FLEX_WRAP_LABEL","ControlFormLabel","React","useSessionStorage","__","React","useRef","SizeControl","SideBottomIcon","SideLeftIcon","SideRightIcon","SideTopIcon","Grid","Stack","withDirection","__","InlineStartIcon","withDirection","SideLeftIcon","InlineEndIcon","SideRightIcon","SideTopIcon","SideBottomIcon","__","useRef","Stack","Grid","SizeControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","SelectControl","__","__","SelectControl","React","NumberControl","__","__","NumberControl","POSITION_LABEL","__","useSessionStorage","React","useRef","SizeControl","Grid","Stack","__","React","React","isElementsStylesProvider","Stack","Tooltip","__","__","Tooltip","Stack","isElementsStylesProvider","React","SelectControl","__","__","positionOptions","SelectControl","React","ToggleControl","__","__","options","ToggleControl","__","useRef","Grid","Stack","SizeControl","React","__","__","React","React","NumberControl","__","__","NumberControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","__","useMemo","__","__","options","useMemo","__","React","useRef","SizeControl","__","__","useRef","SizeControl","React","ToggleControl","__","__","options","ToggleControl","React","SelectControl","__","__","SelectControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","ToggleControl","withDirection","__","__","withDirection","options","ToggleControl","React","ColorControl","__","__","ColorControl","React","ToggleControl","MinusIcon","__","__","options","MinusIcon","ToggleControl","React","ToggleControl","__","__","options","ToggleControl","React","__","React","MinusIcon","Collapse","IconButton","Stack","SIZE","Stack","IconButton","MinusIcon","Collapse","__","React","ToggleControl","MinusIcon","__","__","options","MinusIcon","ToggleControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","createLocation","useState","SessionStorageProvider","Divider","__","Box","Stack","Fragment","Stack","__","Divider","createLocation","useSelectedElement","__","SessionStorageProvider","ThemeProvider","React","useEffect","getWidgetsCache","useEffect","React","ControlFormLabel","useBoundProp","numberPropTypeUtil","Alert","Chip","Stack","TextField","Typography","__","useBoundProp","getContainer","numberPropTypeUtil","__","items","__","items","Stack","useBoundProp","numberPropTypeUtil","Chip","ControlFormLabel","TextField","Alert","Typography","controlTypes","styleTransformersRegistry","React","PropKeyProvider","PropProvider","useBoundProp","useMemo","useMemo","useBoundProp","getElementorConfig","getElementorConfig","isTransformable","useBoundProp","useMemo","useMemo","useBoundProp","PropProvider","PropKeyProvider","Wrapper","React","ControlFormLabel","useBoundProp","PopoverHeader","DatabaseIcon","bindPopover","bindTrigger","Box","Divider","Grid","IconButton","Popover","Stack","Tab","TabPanel","Tabs","usePopupState","useTabs","__","useSessionStorage","useSessionStorage","React","PropKeyProvider","PropProvider","useBoundProp","React","isDependencyMet","useBoundProp","PropProvider","PropKeyProvider","Fragment","useState","React","useBoundProp","DatabaseIcon","Divider","Link","Stack","Typography","useTheme","__","SIZE","useState","useTheme","useBoundProp","options","items","__","DatabaseIcon","Fragment","Divider","Stack","Typography","Link","SIZE","useBoundProp","usePopupState","Box","DatabaseIcon","bindTrigger","IconButton","__","Popover","bindPopover","PopoverHeader","useTabs","Divider","Tabs","Tab","TabPanel","Control","Grid","ControlFormLabel","items","Stack","isTransformable","createError","isTransformable","React","useBoundProp","DatabaseIcon","__","useBoundProp","DatabaseIcon","__","styleTransformersRegistry","useBoundProp","__","useBoundProp","__","React","useBoundProp","isEmpty","ELEMENTS_BASE_STYLES_PROVIDER_KEY","__","React","useMemo","useState","createPropsResolver","PopoverHeader","Box","IconButton","Infotip","Stack","Tooltip","__","useEffect","useState","isClassState","ELEMENTS_BASE_STYLES_PROVIDER_KEY","__","items","DEFAULT_BREAKPOINT","React","Tooltip","SIZE","DEFAULT_BREAKPOINT","React","ELEMENTS_BASE_STYLES_PROVIDER_KEY","Chip","Tooltip","__","SIZE","ELEMENTS_BASE_STYLES_PROVIDER_KEY","Tooltip","__","Chip","React","Typography","React","Box","useState","useMemo","createPropsResolver","items","Box","PopoverHeader","__","Stack","IconButton","Infotip","Tooltip","useBoundProp","isEmpty","ELEMENTS_BASE_STYLES_PROVIDER_KEY","__","createTransformer","styleTransformersRegistry","React","createTransformer","Stack","React","createTransformer","Stack","styled","React","createTransformer","Stack","__","createTransformer","Stack","__","React","createTransformer","EllipsisWithTooltip","Stack","React","createTransformer","Stack","React","createTransformer","Stack","styled","UnstableColorIndicator","React","createTransformer","Stack","options","styleTransformersRegistry","createTransformer","init","init"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/css-classes/css-class-convert-local.tsx","../src/contexts/classes-prop-context.tsx","../src/contexts/element-context.tsx","../src/contexts/style-context.tsx","../src/errors.ts","../src/components/css-classes/css-class-selector.tsx","../src/utils/get-styles-provider-color.ts","../src/provider-colors-registry.ts","../src/utils/tracking/subscribe.ts","../src/components/creatable-autocomplete/creatable-autocomplete.tsx","../src/components/creatable-autocomplete/autocomplete-option-internal-properties.ts","../src/components/creatable-autocomplete/use-autocomplete-change.ts","../src/components/creatable-autocomplete/use-autocomplete-states.ts","../src/components/creatable-autocomplete/use-create-option.ts","../src/components/creatable-autocomplete/use-filter-options.ts","../src/components/css-classes/css-class-item.tsx","../src/components/css-classes/css-class-context.tsx","../src/components/css-classes/css-class-menu.tsx","../src/components/style-indicator.tsx","../src/components/css-classes/local-class-sub-menu.tsx","../src/components/css-classes/use-can-convert-local-class-to-global.ts","../src/components/css-classes/use-apply-and-unapply-class.ts","../src/apply-unapply-actions.ts","../src/components/custom-css-indicator.tsx","../src/hooks/use-custom-css.ts","../src/hooks/use-styles-fields.ts","../src/hooks/use-styles-rerender.ts","../src/components/editing-panel.tsx","../src/control-replacement.tsx","../src/controls-actions.ts","../src/action.tsx","../src/popover-action.tsx","../src/editing-panel-replacement-registry.tsx","../src/components/editing-panel-error-fallback.tsx","../src/components/editing-panel-tabs.tsx","../src/contexts/scroll-context.tsx","../src/hooks/use-default-panel-settings.ts","../src/hooks/use-state-by-element.ts","../src/components/interactions-tab.tsx","../src/components/sections-list.tsx","../src/components/settings-tab.tsx","../src/components/section.tsx","../src/contexts/section-context.tsx","../src/components/collapsible-content.tsx","../src/components/settings-control.tsx","../src/controls-registry/control.tsx","../src/controls-registry/controls-registry.tsx","../src/controls-registry/control-type-container.tsx","../src/controls-registry/settings-field.tsx","../src/utils/prop-dependency-utils.ts","../src/controls-registry/create-top-level-object-type.ts","../src/field-indicators-registry.ts","../src/components/control-label.tsx","../src/components/style-tab.tsx","../src/contexts/styles-inheritance-context.tsx","../src/styles-inheritance/create-styles-inheritance.ts","../src/styles-inheritance/create-snapshots-manager.ts","../src/styles-inheritance/utils.ts","../src/hooks/use-active-style-def-id.ts","../src/components/style-sections/background-section/background-section.tsx","../src/controls-registry/styles-field.tsx","../src/hooks/use-styles-field.ts","../src/controls-registry/conditional-field.tsx","../src/components/section-content.tsx","../src/components/style-sections/border-section/border-section.tsx","../src/components/style-sections/border-section/border-color-field.tsx","../src/components/styles-field-layout.tsx","../src/components/style-sections/border-section/border-radius-field.tsx","../src/hooks/use-direction.ts","../src/sync/get-elementor-globals.ts","../src/styles-inheritance/components/ui-providers.tsx","../src/components/style-sections/border-section/border-style-field.tsx","../src/components/style-sections/border-section/border-width-field.tsx","../src/components/style-sections/effects-section/effects-section.tsx","../src/utils/get-recently-used-styles.ts","../src/components/panel-divider.tsx","../src/components/style-sections/effects-section/blend-mode-field.tsx","../src/components/style-sections/effects-section/opacity-control-field.tsx","../src/components/style-sections/layout-section/layout-section.tsx","../src/hooks/use-computed-style.ts","../src/components/style-sections/layout-section/align-content-field.tsx","../src/components/style-sections/layout-section/utils/rotated-icon.tsx","../src/components/style-sections/layout-section/align-items-field.tsx","../src/components/style-sections/layout-section/align-self-child-field.tsx","../src/components/style-sections/layout-section/display-field.tsx","../src/components/style-sections/layout-section/flex-direction-field.tsx","../src/components/style-sections/layout-section/flex-order-field.tsx","../src/components/style-sections/layout-section/flex-size-field.tsx","../src/components/style-sections/layout-section/gap-control-field.tsx","../src/components/style-sections/layout-section/justify-content-field.tsx","../src/components/style-sections/layout-section/wrap-field.tsx","../src/components/style-sections/position-section/position-section.tsx","../src/components/style-sections/position-section/dimensions-field.tsx","../src/components/style-sections/position-section/offset-field.tsx","../src/components/style-sections/position-section/position-field.tsx","../src/components/style-sections/position-section/z-index-field.tsx","../src/components/style-sections/size-section/size-section.tsx","../src/components/style-tab-collapsible-content.tsx","../src/styles-inheritance/components/styles-inheritance-section-indicators.tsx","../src/components/style-sections/size-section/object-fit-field.tsx","../src/components/style-sections/size-section/overflow-field.tsx","../src/components/style-sections/spacing-section/spacing-section.tsx","../src/components/style-sections/typography-section/typography-section.tsx","../src/components/style-sections/typography-section/column-count-field.tsx","../src/components/style-sections/typography-section/column-gap-field.tsx","../src/components/style-sections/typography-section/font-family-field.tsx","../src/components/style-sections/typography-section/hooks/use-font-families.ts","../src/components/style-sections/typography-section/font-size-field.tsx","../src/components/style-sections/typography-section/font-style-field.tsx","../src/components/style-sections/typography-section/font-weight-field.tsx","../src/components/style-sections/typography-section/letter-spacing-field.tsx","../src/components/style-sections/typography-section/line-height-field.tsx","../src/components/style-sections/typography-section/text-alignment-field.tsx","../src/components/style-sections/typography-section/text-color-field.tsx","../src/components/style-sections/typography-section/text-decoration-field.tsx","../src/components/style-sections/typography-section/text-direction-field.tsx","../src/components/style-sections/typography-section/text-stroke-field.tsx","../src/components/add-or-remove-content.tsx","../src/components/style-sections/typography-section/transform-field.tsx","../src/components/style-sections/typography-section/word-spacing-field.tsx","../src/components/style-tab-section.tsx","../src/components/popover-body.tsx","../src/init.ts","../src/hooks/use-open-editor-panel.ts","../src/panel.ts","../src/sync/is-atomic-widget-selected.ts","../src/components/editing-panel-hooks.tsx","../src/controls-registry/element-controls/tabs-control/tabs-control.tsx","../src/controls-registry/element-controls/get-element-by-type.ts","../src/controls-registry/element-controls/tabs-control/use-actions.ts","../src/controls-registry/element-controls/registry.ts","../src/dynamics/init.ts","../src/dynamics/components/background-control-dynamic-tag.tsx","../src/dynamics/hooks/use-dynamic-tag.ts","../src/dynamics/hooks/use-prop-dynamic-tags.ts","../src/dynamics/sync/get-elementor-config.ts","../src/dynamics/sync/get-atomic-dynamic-tags.ts","../src/dynamics/utils.ts","../src/dynamics/components/dynamic-selection-control.tsx","../src/hooks/use-persist-dynamic-value.ts","../src/dynamics/dynamic-control.tsx","../src/dynamics/components/dynamic-conditional-control.tsx","../src/dynamics/components/dynamic-selection.tsx","../src/dynamics/dynamic-transformer.ts","../src/dynamics/errors.ts","../src/dynamics/hooks/use-prop-dynamic-action.tsx","../src/reset-style-props.tsx","../src/utils/is-equal.ts","../src/styles-inheritance/components/styles-inheritance-indicator.tsx","../src/styles-inheritance/components/styles-inheritance-infotip.tsx","../src/styles-inheritance/hooks/use-normalized-inheritance-chain-items.tsx","../src/styles-inheritance/styles-inheritance-transformers-registry.tsx","../src/styles-inheritance/components/infotip/breakpoint-icon.tsx","../src/styles-inheritance/components/infotip/label-chip.tsx","../src/styles-inheritance/components/infotip/value-component.tsx","../src/styles-inheritance/components/infotip/action-icons.tsx","../src/styles-inheritance/init-styles-inheritance-transformers.ts","../src/styles-inheritance/consts.ts","../src/styles-inheritance/transformers/array-transformer.tsx","../src/styles-inheritance/transformers/background-color-overlay-transformer.tsx","../src/styles-inheritance/transformers/background-gradient-overlay-transformer.tsx","../src/styles-inheritance/transformers/background-image-overlay-transformer.tsx","../src/styles-inheritance/transformers/box-shadow-transformer.tsx","../src/styles-inheritance/transformers/color-transformer.tsx","../src/styles-inheritance/transformers/repeater-to-items-transformer.tsx","../src/styles-inheritance/init.ts"],"sourcesContent":["export { useBoundProp } from '@elementor/editor-controls';\nexport { type ValidationEvent, type ValidationResult } from './components/creatable-autocomplete';\nexport { injectIntoCssClassConvert } from './components/css-classes/css-class-convert-local';\nexport { injectIntoClassSelectorActions } from './components/css-classes/css-class-selector';\nexport { CustomCssIndicator } from './components/custom-css-indicator';\nexport { injectIntoPanelHeaderTop } from './components/editing-panel';\nexport { PopoverBody } from './components/popover-body';\nexport { SectionContent } from './components/section-content';\nexport { SettingsControl } from './components/settings-control';\nexport { StyleIndicator } from './components/style-indicator';\nexport { useFontFamilies } from './components/style-sections/typography-section/hooks/use-font-families';\nexport { injectIntoStyleTab } from './components/style-tab';\nexport { StyleTabSection } from './components/style-tab-section';\nexport { useClassesProp } from './contexts/classes-prop-context';\nexport { ElementProvider, useElement } from './contexts/element-context';\nexport { useSectionWidth } from './contexts/section-context';\nexport { useStyle } from './contexts/style-context';\nexport { registerControlReplacement } from './control-replacement';\nexport { controlActionsMenu } from './controls-actions';\nexport { controlsRegistry, type ControlType } from './controls-registry/controls-registry';\nexport { StylesProviderCannotUpdatePropsError } from './errors';\nexport { createTopLevelObjectType } from './controls-registry/create-top-level-object-type';\nexport { useCustomCss } from './hooks/use-custom-css';\nexport { useStateByElement } from './hooks/use-state-by-element';\nexport { getSubtitle, getTitle, HISTORY_DEBOUNCE_WAIT } from './hooks/use-styles-fields';\nexport { useStylesRerender } from './hooks/use-styles-rerender';\nexport { init } from './init';\nexport { usePanelActions, usePanelStatus } from './panel';\nexport type { PopoverActionProps } from './popover-action';\nexport { registerStyleProviderToColors } from './provider-colors-registry';\nexport { stylesInheritanceTransformersRegistry } from './styles-inheritance/styles-inheritance-transformers-registry';\nexport { registerFieldIndicator, FIELD_TYPE } from './field-indicators-registry';\nexport { registerEditingPanelReplacement } from './editing-panel-replacement-registry';\n\nexport { doApplyClasses, doGetAppliedClasses, doUnapplyClass } from './apply-unapply-actions';\n","import * as React from 'react';\nimport { deleteElementStyle, getElementSetting, updateElementSettings } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { createLocation } from '@elementor/locations';\nimport { useSessionStorage } from '@elementor/session';\n\nimport { useClassesProp } from '../../contexts/classes-prop-context';\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\n\nexport const { Slot: CssClassConvertSlot, inject: injectIntoCssClassConvert } = createLocation< {\n\tstyleDef: StyleDefinition | null;\n\tsuccessCallback: ( newId: string ) => void;\n\tcanConvert: boolean;\n} >();\n\ntype OwnProps = {\n\tstyleDef: StyleDefinition | null;\n\tcloseMenu: () => void;\n\tcanConvert: boolean;\n};\n\n/**\n * Convert a local class to a global class injection point\n * @param props\n */\nexport const CssClassConvert = ( props: OwnProps ) => {\n\tconst { element } = useElement();\n\tconst elementId = element.id;\n\tconst currentClassesProp = useClassesProp();\n\tconst { setId: setActiveId } = useStyle();\n\tconst [ , saveValue ] = useSessionStorage( 'last-converted-class-generated-name', 'app' );\n\n\tconst successCallback = ( newId: string ) => {\n\t\tif ( ! props.styleDef ) {\n\t\t\tthrow new Error( 'Style definition is required for converting local class to global class.' );\n\t\t}\n\n\t\tonConvert( {\n\t\t\tnewId,\n\t\t\telementId,\n\t\t\tclassesProp: currentClassesProp,\n\t\t\tstyleDef: props.styleDef,\n\t\t} );\n\n\t\tsaveValue( newId );\n\t\tsetActiveId( newId );\n\t\tprops.closeMenu();\n\t};\n\n\treturn (\n\t\t<CssClassConvertSlot\n\t\t\tcanConvert={ !! props.canConvert }\n\t\t\tstyleDef={ props.styleDef }\n\t\t\tsuccessCallback={ successCallback }\n\t\t/>\n\t);\n};\n\ntype OnConvertOptions = {\n\tnewId: string;\n\telementId: string;\n\tclassesProp: string;\n\tstyleDef: StyleDefinition;\n};\n\nconst onConvert = ( opts: OnConvertOptions ) => {\n\tconst { newId, elementId, classesProp } = opts;\n\tdeleteElementStyle( elementId, opts.styleDef.id );\n\tconst currentUsedClasses = getElementSetting< ClassesPropValue >( elementId, classesProp ) || { value: [] };\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: { [ classesProp ]: classesPropTypeUtil.create( [ newId, ...currentUsedClasses.value ] ) },\n\t\twithHistory: false,\n\t} );\n};\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\n\ntype ContextValue = {\n\tprop: string;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ClassesPropProvider( { children, prop }: Props ) {\n\treturn <Context.Provider value={ { prop } }>{ children }</Context.Provider>;\n}\n\nexport function useClassesProp() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useClassesProp must be used within a ClassesPropProvider' );\n\t}\n\n\treturn context.prop;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\n\ntype ContextValue = {\n\telement: Element;\n\telementType: ElementType;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ElementProvider( { children, element, elementType }: Props ) {\n\treturn <Context.Provider value={ { element, elementType } }>{ children }</Context.Provider>;\n}\n\nexport function useElement() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useElement must be used within a ElementProvider' );\n\t}\n\n\treturn context;\n}\n","import * as React from 'react';\nimport { createContext, type Dispatch, type PropsWithChildren, useContext } from 'react';\nimport {\n\ttype StyleDefinition,\n\ttype StyleDefinitionID,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { type StylesProvider, stylesRepository, useUserStylesCapability } from '@elementor/editor-styles-repository';\n\nimport { StylesProviderNotFoundError } from '../errors';\n\ntype ContextValue = {\n\tsetId: Dispatch< StyleDefinition[ 'id' ] | null >;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tsetMetaState: Dispatch< StyleDefinitionState >;\n\tcanEdit?: boolean;\n} & ( ContextValueWithProvider | ContextValueWithoutProvider );\n\ntype ContextValueWithProvider = {\n\tid: StyleDefinitionID;\n\tprovider: StylesProvider;\n};\n\ntype ContextValueWithoutProvider = {\n\tid: null;\n\tprovider: null;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< Omit< ContextValue, 'provider' > >;\n\nexport function StyleProvider( { children, ...props }: Props ) {\n\tconst provider = props.id === null ? null : getProviderByStyleId( props.id );\n\n\tconst { userCan } = useUserStylesCapability();\n\n\tif ( props.id && ! provider ) {\n\t\tthrow new StylesProviderNotFoundError( { context: { styleId: props.id } } );\n\t}\n\n\tconst canEdit = userCan( provider?.getKey() ?? '' ).updateProps;\n\n\treturn <Context.Provider value={ { ...props, provider, canEdit } as ContextValue }>{ children }</Context.Provider>;\n}\n\nexport function useStyle() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStyle must be used within a StyleProvider' );\n\t}\n\n\treturn context;\n}\n\nexport function getProviderByStyleId( styleId: StyleDefinitionID ) {\n\tconst styleProvider = stylesRepository.getProviders().find( ( provider ) => {\n\t\treturn provider.actions.all().find( ( style ) => style.id === styleId );\n\t} );\n\n\treturn styleProvider ?? null;\n}\n\nexport function useIsStyle(): boolean {\n\treturn !! useContext( Context );\n}\n","import { type StyleDefinitionID } from '@elementor/editor-styles';\nimport { createError } from '@elementor/utils';\n\nexport const ControlTypeNotFoundError = createError< { controlType: string } >( {\n\tcode: 'control_type_not_found',\n\tmessage: 'Control type not found.',\n} );\n\nexport const ControlTypeAlreadyRegisteredError = createError< { controlType: string } >( {\n\tcode: 'control_type_already_registered',\n\tmessage: 'Control type is already registered.',\n} );\n\nexport const ControlTypeNotRegisteredError = createError< { controlType: string } >( {\n\tcode: 'control_type_not_registered',\n\tmessage: 'Control type is not registered.',\n} );\n\nexport const StylesProviderNotFoundError = createError< { styleId: StyleDefinitionID } >( {\n\tcode: 'provider_not_found',\n\tmessage: 'Styles provider not found.',\n} );\n\nexport const StylesProviderCannotUpdatePropsError = createError< { providerKey: string } >( {\n\tcode: 'provider_cannot_update_props',\n\tmessage: \"Styles provider doesn't support updating props.\",\n} );\n\nexport const StyleNotFoundUnderProviderError = createError< { styleId: StyleDefinitionID; providerKey: string } >( {\n\tcode: 'style_not_found_under_provider',\n\tmessage: 'Style not found under the provider.',\n} );\n","import * as React from 'react';\nimport { type ReactElement, useRef, useState } from 'react';\nimport { useElementSetting } from '@elementor/editor-elements';\nimport { type ClassesPropValue } from '@elementor/editor-props';\nimport {\n\tisElementsStylesProvider,\n\ttype StylesProvider,\n\tstylesRepository,\n\ttype UpdateActionPayload,\n\tuseProviders,\n\tuseUserStylesCapability,\n\tvalidateStyleLabel,\n} from '@elementor/editor-styles-repository';\nimport { InfoAlert, WarningInfotip } from '@elementor/editor-ui';\nimport { ColorSwatchIcon, MapPinIcon } from '@elementor/icons';\nimport { createLocation } from '@elementor/locations';\nimport {\n\ttype AutocompleteChangeReason,\n\tBox,\n\tChip,\n\ttype ChipOwnProps,\n\tFormLabel,\n\tLink,\n\tStack,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../../contexts/classes-prop-context';\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\nimport { getStylesProviderColorName } from '../../utils/get-styles-provider-color';\nimport { trackStyles } from '../../utils/tracking/subscribe';\nimport {\n\tCreatableAutocomplete,\n\ttype CreatableAutocompleteProps,\n\ttype Option,\n\ttype ValidationEvent,\n\ttype ValidationResult,\n} from '../creatable-autocomplete';\nimport { CssClassItem } from './css-class-item';\nimport { useApplyClass, useCreateAndApplyClass, useUnapplyClass } from './use-apply-and-unapply-class';\n\nconst ID = 'elementor-css-class-selector';\nconst TAGS_LIMIT = 50;\n\ntype StyleDefOption = Option & {\n\tcolor: ChipOwnProps[ 'color' ];\n\ticon: ReactElement | null;\n\tprovider: string | null;\n};\n\nconst EMPTY_OPTION = {\n\tlabel: __( 'local', 'elementor' ),\n\tvalue: null,\n\tfixed: true,\n\tcolor: getTempStylesProviderColorName( 'accent' ),\n\ticon: <MapPinIcon />,\n\tprovider: null,\n} satisfies StyleDefOption;\n\nexport const { Slot: ClassSelectorActionsSlot, inject: injectIntoClassSelectorActions } = createLocation();\n\n/**\n * Applied - Classes applied to an element.\n * Active - Class that is currently on edit mode.\n */\n\nexport function CssClassSelector() {\n\tconst options = useOptions();\n\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\n\tconst autocompleteRef = useRef< HTMLElement | null >( null );\n\tconst [ renameError, setRenameError ] = useState< string | null >( null );\n\n\tconst handleSelect = useHandleSelect();\n\tconst { create, validate, entityName } = useCreateAction();\n\n\tconst appliedOptions = useAppliedOptions( options );\n\tconst active = appliedOptions.find( ( option ) => option.value === activeId ) ?? EMPTY_OPTION;\n\n\tconst showPlaceholder = appliedOptions.every( ( { fixed } ) => fixed );\n\n\tconst { userCan } = useUserStylesCapability();\n\n\tconst canEdit = active.provider ? userCan( active.provider ).updateProps : true;\n\n\treturn (\n\t\t<Stack p={ 2 }>\n\t\t\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\" justifyContent=\"space-between\">\n\t\t\t\t<FormLabel htmlFor={ ID } size=\"small\">\n\t\t\t\t\t{ __( 'Classes', 'elementor' ) }\n\t\t\t\t</FormLabel>\n\t\t\t\t<Stack direction=\"row\" gap={ 1 }>\n\t\t\t\t\t<ClassSelectorActionsSlot />\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t\t<WarningInfotip\n\t\t\t\topen={ Boolean( renameError ) }\n\t\t\t\ttext={ renameError ?? '' }\n\t\t\t\tplacement=\"bottom\"\n\t\t\t\twidth={ autocompleteRef.current?.getBoundingClientRect().width }\n\t\t\t\toffset={ [ 0, -15 ] }\n\t\t\t>\n\t\t\t\t<CreatableAutocomplete< StyleDefOption >\n\t\t\t\t\tid={ ID }\n\t\t\t\t\tref={ autocompleteRef }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tplaceholder={ showPlaceholder ? __( 'Type class name', 'elementor' ) : undefined }\n\t\t\t\t\toptions={ options }\n\t\t\t\t\tselected={ appliedOptions }\n\t\t\t\t\tentityName={ entityName }\n\t\t\t\t\tonSelect={ handleSelect }\n\t\t\t\t\tonCreate={ create ?? undefined }\n\t\t\t\t\tvalidate={ validate ?? undefined }\n\t\t\t\t\tlimitTags={ TAGS_LIMIT }\n\t\t\t\t\trenderEmptyState={ EmptyState }\n\t\t\t\t\tgetLimitTagsText={ ( more ) => (\n\t\t\t\t\t\t<Chip size=\"tiny\" variant=\"standard\" label={ `+${ more }` } clickable />\n\t\t\t\t\t) }\n\t\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\t\tvalues.map( ( value, index ) => {\n\t\t\t\t\t\t\tconst chipProps = getTagProps( { index } );\n\t\t\t\t\t\t\tconst isActive = value.value === active?.value;\n\n\t\t\t\t\t\t\tconst renameLabel = ( newLabel: string ) => {\n\t\t\t\t\t\t\t\tif ( ! value.value ) {\n\t\t\t\t\t\t\t\t\tthrow new Error( `Cannot rename a class without style id` );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttrackStyles( value.provider ?? '', 'classRenamed', {\n\t\t\t\t\t\t\t\t\tclassId: value.value,\n\t\t\t\t\t\t\t\t\tnewValue: newLabel,\n\t\t\t\t\t\t\t\t\toldValue: value.label,\n\t\t\t\t\t\t\t\t\tsource: 'style-tab',\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t\treturn updateClassByProvider( value.provider, { label: newLabel, id: value.value } );\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<CssClassItem\n\t\t\t\t\t\t\t\t\tkey={ chipProps.key }\n\t\t\t\t\t\t\t\t\tfixed={ value.fixed }\n\t\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\t\tprovider={ value.provider }\n\t\t\t\t\t\t\t\t\tid={ value.value }\n\t\t\t\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\t\t\t\tcolor={ isActive && value.color ? value.color : 'default' }\n\t\t\t\t\t\t\t\t\ticon={ value.icon }\n\t\t\t\t\t\t\t\t\tchipProps={ chipProps }\n\t\t\t\t\t\t\t\t\tonClickActive={ () => setActiveId( value.value ) }\n\t\t\t\t\t\t\t\t\trenameLabel={ renameLabel }\n\t\t\t\t\t\t\t\t\tsetError={ setRenameError }\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</WarningInfotip>\n\t\t\t{ ! canEdit && (\n\t\t\t\t<InfoAlert sx={ { mt: 1 } }>\n\t\t\t\t\t{ __( 'With your current role, you can use existing classes but can’t modify them.', 'elementor' ) }\n\t\t\t\t</InfoAlert>\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n\nconst EmptyState = ( { searchValue, onClear }: { searchValue: string; onClear: () => void } ) => (\n\t<Box sx={ { py: 4 } }>\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tjustifyContent=\"center\"\n\t\t\tsx={ { px: 2, m: 'auto', maxWidth: '236px' } }\n\t\t>\n\t\t\t<ColorSwatchIcon sx={ { transform: 'rotate(90deg)' } } fontSize=\"large\" />\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t&ldquo;{ searchValue }&rdquo;.\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\" sx={ { mb: 2 } }>\n\t\t\t\t{ __( 'With your current role,', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t{ __( 'you can only use existing classes.', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Link color=\"text.secondary\" variant=\"caption\" component=\"button\" onClick={ onClear }>\n\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t</Link>\n\t\t</Stack>\n\t</Box>\n);\n\nconst updateClassByProvider = ( provider: string | null, data: UpdateActionPayload ) => {\n\tif ( ! provider ) {\n\t\treturn;\n\t}\n\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\n\tif ( ! providerInstance ) {\n\t\treturn;\n\t}\n\n\treturn providerInstance.actions.update?.( data );\n};\n\nfunction useOptions() {\n\tconst { element } = useElement();\n\n\tconst isProviderEditable = ( provider: StylesProvider ) => !! provider.actions.updateProps;\n\n\treturn useProviders()\n\t\t.filter( isProviderEditable )\n\t\t.flatMap< StyleDefOption >( ( provider ) => {\n\t\t\tconst isElements = isElementsStylesProvider( provider.getKey() );\n\t\t\tconst styleDefs = provider.actions.all( { elementId: element.id } );\n\n\t\t\t// Add an empty local option for elements, as fallback.\n\t\t\tif ( isElements && styleDefs.length === 0 ) {\n\t\t\t\treturn [ EMPTY_OPTION ];\n\t\t\t}\n\n\t\t\treturn styleDefs.map( ( styleDef ) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: styleDef.label,\n\t\t\t\t\tvalue: styleDef.id,\n\t\t\t\t\tfixed: isElements,\n\t\t\t\t\tcolor: getTempStylesProviderColorName( getStylesProviderColorName( provider.getKey() ) ),\n\t\t\t\t\ticon: isElements ? <MapPinIcon /> : null,\n\t\t\t\t\tprovider: provider.getKey(),\n\t\t\t\t};\n\t\t\t} );\n\t\t} );\n}\n\nfunction getTempStylesProviderColorName( color: ChipOwnProps[ 'color' ] ): ChipOwnProps[ 'color' ] {\n\tif ( color === 'accent' ) {\n\t\treturn 'primary';\n\t}\n\n\treturn color;\n}\n\nfunction useCreateAction() {\n\tconst [ provider, createAction ] = useCreateAndApplyClass();\n\tif ( ! provider || ! createAction ) {\n\t\treturn {};\n\t}\n\n\tconst create = ( classLabel: string ) => {\n\t\tconst { createdId } = createAction( { classLabel } );\n\t\ttrackStyles( provider.getKey() ?? '', 'classCreated', {\n\t\t\tsource: 'created',\n\t\t\tclassTitle: classLabel,\n\t\t\tclassId: createdId,\n\t\t} );\n\t};\n\n\tconst validate = ( newClassLabel: string, event: ValidationEvent ): ValidationResult => {\n\t\tif ( hasReachedLimit( provider ) ) {\n\t\t\treturn {\n\t\t\t\tisValid: false,\n\t\t\t\terrorMessage: __(\n\t\t\t\t\t'You’ve reached the limit of 50 classes. Please remove an existing one to create a new class.',\n\t\t\t\t\t'elementor'\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\t\treturn validateStyleLabel( newClassLabel, event );\n\t};\n\n\tconst entityName =\n\t\tprovider.labels.singular && provider.labels.plural\n\t\t\t? ( provider.labels as CreatableAutocompleteProps< StyleDefOption >[ 'entityName' ] )\n\t\t\t: undefined;\n\n\treturn { create, validate, entityName };\n}\n\nfunction hasReachedLimit( provider: StylesProvider ) {\n\treturn provider.actions.all().length >= provider.limit;\n}\n\nfunction useAppliedOptions( options: StyleDefOption[] ) {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\n\tconst appliedIds = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\tconst appliedOptions = options.filter( ( option ) => option.value && appliedIds.includes( option.value ) );\n\n\tconst hasElementsProviderStyleApplied = appliedOptions.some(\n\t\t( option ) => option.provider && isElementsStylesProvider( option.provider )\n\t);\n\n\tif ( ! hasElementsProviderStyleApplied ) {\n\t\tappliedOptions.unshift( EMPTY_OPTION );\n\t}\n\n\treturn appliedOptions;\n}\n\nfunction useHandleSelect() {\n\tconst apply = useApplyClass();\n\tconst unapply = useUnapplyClass();\n\n\treturn ( _selectedOptions: StyleDefOption[], reason: AutocompleteChangeReason, option: StyleDefOption ) => {\n\t\tif ( ! option.value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( reason ) {\n\t\t\tcase 'selectOption':\n\t\t\t\tapply( { classId: option.value, classLabel: option.label } );\n\t\t\t\ttrackStyles( option.provider ?? '', 'classApplied', {\n\t\t\t\t\tclassId: option.value,\n\t\t\t\t\tsource: 'style-tab',\n\t\t\t\t} );\n\t\t\t\tbreak;\n\n\t\t\tcase 'removeOption':\n\t\t\t\tunapply( { classId: option.value, classLabel: option.label } );\n\t\t\t\ttrackStyles( option.provider ?? '', 'classRemoved', {\n\t\t\t\t\tclassId: option.value,\n\t\t\t\t\tsource: 'style-tab',\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t}\n\t};\n}\n","import { ELEMENTS_BASE_STYLES_PROVIDER_KEY, isElementsStylesProvider } from '@elementor/editor-styles-repository';\nimport { type ChipProps, type Theme } from '@elementor/ui';\n\nimport { getStyleProviderColors } from '../provider-colors-registry';\n\nexport const getStylesProviderColorName = ( provider: string ): ChipProps[ 'color' ] => {\n\tif ( ! provider || provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {\n\t\treturn 'default';\n\t}\n\n\tif ( isElementsStylesProvider( provider ) ) {\n\t\treturn 'accent';\n\t}\n\n\treturn getStyleProviderColors( provider ).name;\n};\n\nexport const getStylesProviderThemeColor = ( provider: string ): ( ( theme: Theme ) => string ) | null => {\n\tif ( ! provider || provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {\n\t\treturn null;\n\t}\n\n\tif ( isElementsStylesProvider( provider ) ) {\n\t\treturn ( theme: Theme ) => theme.palette.accent.main;\n\t}\n\n\treturn getStyleProviderColors( provider ).getThemeColor;\n};\n\nexport function getTempStylesProviderThemeColor( provider: string ): ( ( theme: Theme ) => string ) | null {\n\tif ( isElementsStylesProvider( provider ) ) {\n\t\treturn ( theme: Theme ) => theme.palette.primary.main;\n\t}\n\n\treturn getStylesProviderThemeColor( provider );\n}\n","import { type ChipProps, type Theme } from '@elementor/ui';\n\ntype Colors = {\n\tname: ChipProps[ 'color' ];\n\tgetThemeColor: ( ( theme: Theme ) => string ) | null;\n};\n\nconst DEFAULT_COLORS: Colors = {\n\tname: 'default',\n\tgetThemeColor: null,\n};\n\nconst providerColorsRegistry = new Map< string, Colors >();\n\nexport const registerStyleProviderToColors = ( provider: string, colors: Colors ) => {\n\tproviderColorsRegistry.set( provider, colors );\n};\n\nexport const getStyleProviderColors = ( provider: string ): Colors =>\n\tproviderColorsRegistry.get( provider ) ?? DEFAULT_COLORS;\n","import { stylesRepository } from '@elementor/editor-styles-repository';\n\nexport const trackStyles = ( provider: string, event: string, data: Record< string, unknown > ) => {\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\n\tproviderInstance?.actions.tracking?.( { event, ...data } );\n};\n","import * as React from 'react';\nimport { type HTMLAttributes, useId, useMemo } from 'react';\nimport {\n\tAutocomplete,\n\ttype AutocompleteProps,\n\ttype AutocompleteRenderGroupParams,\n\tBox,\n\tChip,\n\tstyled,\n\tTextField,\n\ttype Theme,\n\tTypography,\n} from '@elementor/ui';\n\nimport { addGroupToOptions } from './autocomplete-option-internal-properties';\nimport { type CreatableAutocompleteProps, type InternalOption, type SafeOptionConstraint } from './types';\nimport { useAutocompleteChange } from './use-autocomplete-change';\nimport { useInputState, useOpenState } from './use-autocomplete-states';\nimport { useCreateOption } from './use-create-option';\nimport { useFilterOptions } from './use-filter-options';\n\nconst MIN_INPUT_LENGTH = 2;\n\nexport const CreatableAutocomplete = React.forwardRef( CreatableAutocompleteInner ) as <\n\tTOption extends SafeOptionConstraint,\n>(\n\tprops: CreatableAutocompleteProps< TOption > & {\n\t\tref?: React.ForwardedRef< HTMLElement >;\n\t}\n) => ReturnType< typeof CreatableAutocompleteInner >;\n\nfunction CreatableAutocompleteInner< TOption extends SafeOptionConstraint >(\n\t{\n\t\tselected,\n\t\toptions,\n\t\tentityName,\n\t\tonSelect,\n\t\tplaceholder,\n\t\tonCreate,\n\t\tvalidate,\n\t\trenderEmptyState,\n\t\t...props\n\t}: CreatableAutocompleteProps< TOption >,\n\tref: React.ForwardedRef< HTMLElement >\n) {\n\tconst { inputValue, setInputValue, error, setError, inputHandlers } = useInputState( validate );\n\tconst { open, openDropdown, closeDropdown } = useOpenState( props.open );\n\tconst { createOption, loading } = useCreateOption( { onCreate, validate, setInputValue, setError, closeDropdown } );\n\n\tconst [ internalOptions, internalSelected ] = useMemo(\n\t\t() => [ options, selected ].map( ( optionsArr ) => addGroupToOptions( optionsArr, entityName?.plural ) ),\n\t\t[ options, selected, entityName?.plural ]\n\t);\n\n\tconst handleChange = useAutocompleteChange( {\n\t\toptions: internalOptions,\n\t\tonSelect,\n\t\tcreateOption,\n\t\tsetInputValue,\n\t\tcloseDropdown,\n\t} );\n\n\tconst filterOptions = useFilterOptions( { options, selected, onCreate, entityName } );\n\n\tconst isCreatable = Boolean( onCreate );\n\n\tconst freeSolo = isCreatable || inputValue.length < MIN_INPUT_LENGTH || undefined;\n\n\treturn (\n\t\t<Autocomplete< InternalOption< TOption >, true, true, true >\n\t\t\trenderTags={ ( tagValue, getTagProps ) => {\n\t\t\t\treturn tagValue.map( ( option, index ) => (\n\t\t\t\t\t<Chip\n\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t{ ...getTagProps( { index } ) }\n\t\t\t\t\t\tkey={ option.key ?? option.value ?? option.label }\n\t\t\t\t\t\tlabel={ option.label }\n\t\t\t\t\t/>\n\t\t\t\t) );\n\t\t\t} }\n\t\t\t{ ...( props as AutocompleteProps< InternalOption< TOption >, true, true, true > ) }\n\t\t\tref={ ref }\n\t\t\tfreeSolo={ freeSolo }\n\t\t\tforcePopupIcon={ false }\n\t\t\tmultiple\n\t\t\tclearOnBlur\n\t\t\tselectOnFocus\n\t\t\tdisableClearable\n\t\t\thandleHomeEndKeys\n\t\t\tdisabled={ loading }\n\t\t\topen={ open }\n\t\t\tonOpen={ openDropdown }\n\t\t\tonClose={ closeDropdown }\n\t\t\tdisableCloseOnSelect\n\t\t\tvalue={ internalSelected }\n\t\t\toptions={ internalOptions }\n\t\t\tListboxComponent={\n\t\t\t\terror\n\t\t\t\t\t? React.forwardRef< HTMLElement, ErrorTextProps >( ( _, errorTextRef ) => (\n\t\t\t\t\t\t\t<ErrorText ref={ errorTextRef } error={ error } />\n\t\t\t\t\t ) )\n\t\t\t\t\t: undefined\n\t\t\t}\n\t\t\trenderGroup={ ( params ) => <Group { ...params } /> }\n\t\t\tinputValue={ inputValue }\n\t\t\trenderInput={ ( params ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TextField\n\t\t\t\t\t\t{ ...params }\n\t\t\t\t\t\terror={ Boolean( error ) }\n\t\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\t\t{ ...inputHandlers }\n\t\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\t\t'.MuiAutocomplete-inputRoot.MuiInputBase-adornedStart': {\n\t\t\t\t\t\t\t\tpaddingLeft: theme.spacing( 0.25 ),\n\t\t\t\t\t\t\t\tpaddingRight: theme.spacing( 0.25 ),\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} }\n\t\t\tonChange={ handleChange }\n\t\t\tgetOptionLabel={ ( option ) => ( typeof option === 'string' ? option : option.label ) }\n\t\t\tgetOptionKey={ ( option ) => {\n\t\t\t\tif ( typeof option === 'string' ) {\n\t\t\t\t\treturn option;\n\t\t\t\t}\n\n\t\t\t\treturn option.key ?? option.value ?? option.label;\n\t\t\t} }\n\t\t\tfilterOptions={ filterOptions }\n\t\t\tgroupBy={ ( option ) => option._group ?? '' }\n\t\t\trenderOption={ ( optionProps, option ) => {\n\t\t\t\tconst { _group, label } = option;\n\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\t{ ...optionProps }\n\t\t\t\t\t\tstyle={ { display: 'block', textOverflow: 'ellipsis' } }\n\t\t\t\t\t\tdata-group={ _group }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t} }\n\t\t\tnoOptionsText={ renderEmptyState?.( {\n\t\t\t\tsearchValue: inputValue,\n\t\t\t\tonClear: () => {\n\t\t\t\t\tsetInputValue( '' );\n\t\t\t\t\tcloseDropdown();\n\t\t\t\t},\n\t\t\t} ) }\n\t\t\tisOptionEqualToValue={ ( option, value ) => {\n\t\t\t\tif ( typeof option === 'string' ) {\n\t\t\t\t\treturn option === value;\n\t\t\t\t}\n\n\t\t\t\treturn option.value === value.value;\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nconst Group = ( params: Omit< AutocompleteRenderGroupParams, 'key' > ) => {\n\tconst id = `combobox-group-${ useId().replace( /:/g, '_' ) }`;\n\n\treturn (\n\t\t<StyledGroup role=\"group\" aria-labelledby={ id }>\n\t\t\t<StyledGroupHeader id={ id }> { params.group }</StyledGroupHeader>\n\t\t\t<StyledGroupItems role=\"listbox\">{ params.children }</StyledGroupItems>\n\t\t</StyledGroup>\n\t);\n};\n\ntype ErrorTextProps = {\n\terror?: string;\n} & HTMLAttributes< HTMLElement >;\n\nconst ErrorText = React.forwardRef< HTMLElement, ErrorTextProps >( ( { error = 'error' }, ref ) => {\n\treturn (\n\t\t<Box\n\t\t\tref={ ref }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\tpadding: theme.spacing( 2 ),\n\t\t\t} ) }\n\t\t>\n\t\t\t<Typography variant=\"caption\" sx={ { color: 'error.main', display: 'inline-block' } }>\n\t\t\t\t{ error }\n\t\t\t</Typography>\n\t\t</Box>\n\t);\n} );\n\nconst StyledGroup = styled( 'li' )`\n\t&:not( :last-of-type ) {\n\t\tborder-bottom: 1px solid ${ ( { theme } ) => theme.palette.divider };\n\t}\n`;\n\nconst StyledGroupHeader = styled( Box )( ( { theme } ) => ( {\n\tposition: 'sticky',\n\ttop: '-8px',\n\tpadding: theme.spacing( 1, 2 ),\n\tcolor: theme.palette.text.tertiary,\n\tbackgroundColor: theme.palette.primary.contrastText,\n} ) );\n\nconst StyledGroupItems = styled( 'ul' )`\n\tpadding: 0;\n`;\n","import { type InternalOption, type Option } from './types';\n\nexport function addGroupToOptions< TOption extends Option >(\n\toptions: TOption[],\n\tpluralEntityName?: string\n): InternalOption< TOption >[] {\n\treturn options.map( ( option ) => {\n\t\treturn {\n\t\t\t...option,\n\t\t\t_group: `Existing ${ pluralEntityName ?? 'options' }`,\n\t\t};\n\t} );\n}\n\nexport function removeInternalKeys< TOption extends Option >( option: InternalOption< TOption > ): TOption {\n\tconst { _group, _action, ...rest } = option;\n\treturn rest as unknown as TOption;\n}\n","import { type AutocompleteChangeDetails, type AutocompleteChangeReason } from '@elementor/ui';\n\nimport { removeInternalKeys } from './autocomplete-option-internal-properties';\nimport { type InternalOption, type OnSelect, type Option } from './types';\n\nexport function useAutocompleteChange< TOption extends Option >( params: {\n\toptions: InternalOption< TOption >[];\n\tonSelect?: OnSelect< TOption >;\n\tcreateOption: ( ( value: string ) => Promise< unknown > ) | null;\n\tsetInputValue: ( value: string ) => void;\n\tcloseDropdown: () => void;\n} ) {\n\tconst { options, onSelect, createOption, setInputValue, closeDropdown } = params;\n\n\tif ( ! onSelect && ! createOption ) {\n\t\treturn;\n\t}\n\n\tconst handleChange = async (\n\t\t_: React.SyntheticEvent,\n\t\tselectedOrInputValue: Array< InternalOption< TOption > | string >,\n\t\treason: AutocompleteChangeReason,\n\t\tdetails?: AutocompleteChangeDetails< InternalOption< TOption > | string >\n\t) => {\n\t\tconst changedOption = details?.option;\n\t\tif ( ! changedOption || ( typeof changedOption === 'object' && changedOption.fixed ) ) {\n\t\t\t// If `changedOption` is nullish it means no option was selected, created or removed.\n\t\t\t// The reason is either \"blur\" which we don't support (can't be \"clear\" since we disabled it).\n\t\t\t// If the option is fixed, it can't be selected, created or removed.\n\t\t\treturn;\n\t\t}\n\n\t\tconst selectedOptions = selectedOrInputValue.filter( ( option ) => typeof option !== 'string' );\n\n\t\tswitch ( reason ) {\n\t\t\tcase 'removeOption':\n\t\t\t\tconst removedOption = changedOption as InternalOption< TOption >;\n\t\t\t\tupdateSelectedOptions( selectedOptions, 'removeOption', removedOption );\n\t\t\t\tbreak;\n\n\t\t\t// User clicked an option. It's either an existing option, or \"Create <new option>\".\n\t\t\tcase 'selectOption': {\n\t\t\t\tconst selectedOption = changedOption as InternalOption< TOption >;\n\n\t\t\t\tif ( selectedOption._action === 'create' ) {\n\t\t\t\t\tconst newOption = selectedOption.value as string;\n\t\t\t\t\treturn createOption?.( newOption );\n\t\t\t\t}\n\n\t\t\t\tupdateSelectedOptions( selectedOptions, 'selectOption', selectedOption );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// User pressed \"Enter\" after typing input. The input is either matching existing option or a new option to create.\n\t\t\tcase 'createOption': {\n\t\t\t\tconst inputValue = changedOption as string;\n\n\t\t\t\tconst matchingOption = options.find(\n\t\t\t\t\t( option ) => option.label.toLocaleLowerCase() === inputValue.toLocaleLowerCase()\n\t\t\t\t);\n\t\t\t\tif ( matchingOption ) {\n\t\t\t\t\tselectedOptions.push( matchingOption );\n\t\t\t\t\tupdateSelectedOptions( selectedOptions, 'selectOption', matchingOption );\n\t\t\t\t} else {\n\t\t\t\t\treturn createOption?.( inputValue );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tsetInputValue( '' );\n\t\tcloseDropdown();\n\t};\n\n\treturn handleChange;\n\n\tfunction updateSelectedOptions(\n\t\tselectedOptions: InternalOption< TOption >[],\n\t\treason: AutocompleteChangeReason,\n\t\tchangedOption: InternalOption< TOption >\n\t) {\n\t\tonSelect?.(\n\t\t\tselectedOptions.map( ( option ) => removeInternalKeys( option ) ),\n\t\t\treason,\n\t\t\tremoveInternalKeys( changedOption )\n\t\t);\n\t}\n}\n","import { useState } from 'react';\n\nimport { type ValidationEvent, type ValidationResult } from './types';\n\nexport function useInputState( validate?: ( value: string, event: ValidationEvent ) => ValidationResult ) {\n\tconst [ inputValue, setInputValue ] = useState( '' );\n\tconst [ error, setError ] = useState< string | null >( null );\n\n\tconst handleInputChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value } = event.target;\n\n\t\tsetInputValue( value );\n\n\t\tif ( ! validate ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! value ) {\n\t\t\tsetError( null );\n\t\t\treturn;\n\t\t}\n\n\t\tconst { isValid, errorMessage } = validate( value, 'inputChange' );\n\n\t\tif ( isValid ) {\n\t\t\tsetError( null );\n\t\t} else {\n\t\t\tsetError( errorMessage );\n\t\t}\n\t};\n\n\tconst handleInputBlur = () => {\n\t\tsetInputValue( '' );\n\t\tsetError( null );\n\t};\n\n\treturn {\n\t\tinputValue,\n\t\tsetInputValue,\n\t\terror,\n\t\tsetError,\n\t\tinputHandlers: {\n\t\t\tonChange: handleInputChange,\n\t\t\tonBlur: handleInputBlur,\n\t\t},\n\t};\n}\n\nexport function useOpenState( initialOpen: boolean = false ) {\n\tconst [ open, setOpen ] = useState( initialOpen );\n\n\tconst openDropdown = () => setOpen( true );\n\tconst closeDropdown = () => setOpen( false );\n\n\treturn { open, openDropdown, closeDropdown };\n}\n","import { useState } from 'react';\n\nimport { type ValidationEvent, type ValidationResult } from './types';\n\nexport function useCreateOption( params: {\n\tonCreate?: ( value: string ) => Promise< unknown > | unknown;\n\tvalidate?: ( value: string, event: ValidationEvent ) => ValidationResult;\n\tsetInputValue: ( value: string ) => void;\n\tsetError: ( error: string | null ) => void;\n\tcloseDropdown: () => void;\n} ) {\n\tconst { onCreate, validate, setInputValue, setError, closeDropdown } = params;\n\n\tconst [ loading, setLoading ] = useState( false );\n\n\tif ( ! onCreate ) {\n\t\treturn { createOption: null, loading: false };\n\t}\n\n\tconst createOption = async ( value: string ) => {\n\t\tsetLoading( true );\n\n\t\tif ( validate ) {\n\t\t\tconst { isValid, errorMessage } = validate( value, 'create' );\n\n\t\t\tif ( ! isValid ) {\n\t\t\t\tsetError( errorMessage );\n\t\t\t\tsetLoading( false );\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tsetInputValue( '' );\n\t\t\tcloseDropdown();\n\t\t\tawait onCreate( value );\n\t\t} catch {\n\t\t\t// TODO: Do something with the error.\n\t\t} finally {\n\t\t\tsetLoading( false );\n\t\t}\n\t};\n\n\treturn { createOption, loading };\n}\n","import { createFilterOptions } from '@elementor/ui';\n\nimport { type InternalOption, type Option } from './types';\n\nexport function useFilterOptions< TOption extends Option >( parameters: {\n\toptions: TOption[];\n\tselected: TOption[];\n\tonCreate?: ( value: string ) => Promise< unknown > | unknown;\n\tentityName?: { singular: string; plural: string };\n} ) {\n\tconst { options, selected, onCreate, entityName } = parameters;\n\n\tconst filter = createFilterOptions< InternalOption< TOption > >();\n\n\tconst filterOptions = (\n\t\toptionList: InternalOption< TOption >[],\n\t\tparams: {\n\t\t\tinputValue: string;\n\t\t\tgetOptionLabel: ( option: InternalOption< TOption > ) => string;\n\t\t}\n\t) => {\n\t\tconst selectedValues = selected.map( ( option ) => option.value );\n\n\t\tconst filteredOptions = filter(\n\t\t\toptionList.filter( ( option ) => ! selectedValues.includes( option.value ) ),\n\t\t\tparams\n\t\t);\n\n\t\tconst isExisting = options.some( ( option ) => params.inputValue === option.label );\n\t\tconst allowCreate =\n\t\t\tBoolean( onCreate ) &&\n\t\t\tparams.inputValue !== '' &&\n\t\t\t! selectedValues.includes( params.inputValue ) &&\n\t\t\t! isExisting;\n\n\t\tif ( allowCreate ) {\n\t\t\tfilteredOptions.unshift( {\n\t\t\t\tlabel: `Create \"${ params.inputValue }\"`,\n\t\t\t\tvalue: params.inputValue,\n\t\t\t\t_group: `Create a new ${ entityName?.singular ?? 'option' }`,\n\t\t\t\tkey: `create-${ params.inputValue }`,\n\t\t\t\t_action: 'create',\n\t\t\t} as InternalOption< TOption > );\n\t\t}\n\n\t\treturn filteredOptions;\n\t};\n\n\treturn filterOptions;\n}\n","import * as React from 'react';\nimport { type ReactElement, useEffect, useMemo, useState } from 'react';\nimport { isClassState } from '@elementor/editor-styles';\nimport { stylesRepository, useUserStylesCapability, validateStyleLabel } from '@elementor/editor-styles-repository';\nimport { EditableField, EllipsisWithTooltip, useEditable } from '@elementor/editor-ui';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport { useSessionStorage } from '@elementor/session';\nimport {\n\ttype AutocompleteRenderGetTagProps,\n\tbindTrigger,\n\tChip,\n\ttype ChipOwnProps,\n\tStack,\n\ttype Theme,\n\tThemeProvider,\n\tTypography,\n\tUnstableChipGroup,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../contexts/style-context';\nimport { CssClassProvider } from './css-class-context';\nimport { CssClassMenu, useElementStates } from './css-class-menu';\n\ntype CssClassItemProps = {\n\tid: string | null;\n\tprovider: string | null;\n\tlabel: string;\n\tfixed?: boolean;\n\tisActive: boolean;\n\tcolor: ChipOwnProps[ 'color' ];\n\ticon: ReactElement | null;\n\tchipProps: ReturnType< AutocompleteRenderGetTagProps >;\n\tonClickActive: ( id: string | null ) => void;\n\trenameLabel: ( newLabel: string ) => void;\n\tvalidateLabel?: ( newLabel: string ) => string | undefined | null;\n\tsetError?: ( error: string | null ) => void;\n};\n\nconst CHIP_SIZE = 'tiny';\n\nexport function CssClassItem( props: CssClassItemProps ) {\n\tconst { chipProps, icon, color: colorProp, fixed, ...classProps } = props;\n\tconst { id, provider, label, isActive, onClickActive, renameLabel, setError } = classProps;\n\n\tconst { elementStates } = useElementStates();\n\n\tconst { meta, setMetaState } = useStyle();\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\tconst [ chipRef, setChipRef ] = useState< HTMLElement | null >( null );\n\tconst { onDelete, ...chipGroupProps } = chipProps;\n\n\tconst { userCan } = useUserStylesCapability();\n\n\tconst [ convertedFromLocalId, , clearConvertedFromLocalId ] = useSessionStorage(\n\t\t'last-converted-class-generated-name',\n\t\t'app'\n\t);\n\n\tconst {\n\t\tref,\n\t\tisEditing,\n\t\topenEditMode,\n\t\terror,\n\t\tgetProps: getEditableProps,\n\t} = useEditable( {\n\t\tvalue: label,\n\t\tonSubmit: renameLabel,\n\t\tvalidation: validateLabel,\n\t\tonError: setError,\n\t} );\n\n\tconst color = error ? 'error' : colorProp;\n\n\tconst providerActions = provider ? stylesRepository.getProviderByKey( provider )?.actions : null;\n\tconst allowRename = Boolean( providerActions?.update ) && userCan( provider ?? '' )?.update;\n\n\tconst isShowingState = isActive && meta.state;\n\n\tconst stateLabel = useMemo( () => {\n\t\tif ( meta.state && isClassState( meta.state ) ) {\n\t\t\treturn elementStates.find( ( state ) => state.value === meta.state )?.label;\n\t\t}\n\n\t\treturn meta.state;\n\t}, [ meta.state, elementStates ] );\n\n\tuseEffect( () => {\n\t\tif ( convertedFromLocalId && id === convertedFromLocalId ) {\n\t\t\tclearConvertedFromLocalId();\n\t\t\topenEditMode();\n\t\t}\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ id, convertedFromLocalId ] );\n\n\treturn (\n\t\t<ThemeProvider palette=\"default\">\n\t\t\t<UnstableChipGroup\n\t\t\t\tref={ setChipRef }\n\t\t\t\t{ ...chipGroupProps }\n\t\t\t\taria-label={ `Edit ${ label }` }\n\t\t\t\trole=\"group\"\n\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t'&.MuiChipGroup-root.MuiAutocomplete-tag': { margin: theme.spacing( 0.125 ) },\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t<Chip\n\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\tlabel={\n\t\t\t\t\t\tisEditing ? (\n\t\t\t\t\t\t\t<EditableField ref={ ref } { ...getEditableProps() } />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<EllipsisWithTooltip maxWidth=\"10ch\" title={ label } as=\"div\" />\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t\tvariant={ isActive && ! meta.state && ! isEditing ? 'filled' : 'standard' }\n\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\ticon={ icon }\n\t\t\t\t\tcolor={ color }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tif ( isShowingState ) {\n\t\t\t\t\t\t\tsetMetaState( null );\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( allowRename && isActive ) {\n\t\t\t\t\t\t\topenEditMode();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonClickActive( id );\n\t\t\t\t\t} }\n\t\t\t\t\taria-pressed={ isActive }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\tlineHeight: 1,\n\t\t\t\t\t\tcursor: isActive && allowRename && ! isShowingState ? 'text' : 'pointer',\n\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\t'&.Mui-focusVisible': {\n\t\t\t\t\t\t\tboxShadow: 'none !important',\n\t\t\t\t\t\t},\n\t\t\t\t\t} ) }\n\t\t\t\t/>\n\t\t\t\t{ ! isEditing && (\n\t\t\t\t\t<Chip\n\t\t\t\t\t\ticon={ isShowingState ? undefined : <DotsVerticalIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t\tsize={ CHIP_SIZE }\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tisShowingState ? (\n\t\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t\t<Typography variant=\"inherit\">{ stateLabel }</Typography>\n\t\t\t\t\t\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvariant=\"filled\"\n\t\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\t\tcolor={ color }\n\t\t\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\t\t\taria-label={ __( 'Open CSS Class Menu', 'elementor' ) }\n\t\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\t\t\t\tpaddingRight: 0,\n\t\t\t\t\t\t\t...( ! isShowingState ? { paddingLeft: 0 } : {} ),\n\t\t\t\t\t\t\t'.MuiChip-label': isShowingState ? { paddingRight: 0 } : { padding: 0 },\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</UnstableChipGroup>\n\t\t\t<CssClassProvider { ...classProps } handleRename={ openEditMode }>\n\t\t\t\t<CssClassMenu popupState={ popupState } anchorEl={ chipRef } fixed={ fixed } />\n\t\t\t</CssClassProvider>\n\t\t</ThemeProvider>\n\t);\n}\n\nconst validateLabel = ( newLabel: string ) => {\n\tconst result = validateStyleLabel( newLabel, 'rename' );\n\n\tif ( result.isValid ) {\n\t\treturn null;\n\t}\n\n\treturn result.errorMessage;\n};\n","import * as React from 'react';\nimport { createContext, useContext } from 'react';\n\ntype CssClassContextType = {\n\tid: string | null;\n\tprovider: string | null;\n\tlabel: string;\n\tisActive: boolean;\n\tonClickActive: ( id: string | null ) => void;\n\thandleRename: () => void;\n\tsetError?: ( error: string | null ) => void;\n};\n\nconst CssClassContext = createContext< CssClassContextType | null >( null );\n\nexport const useCssClass = () => {\n\tconst context = useContext( CssClassContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'useCssClass must be used within a CssClassProvider' );\n\t}\n\treturn context;\n};\n\ntype CssClassProviderProps = CssClassContextType & {\n\tchildren: React.ReactNode;\n};\n\nexport function CssClassProvider( { children, ...contextValue }: CssClassProviderProps ) {\n\treturn <CssClassContext.Provider value={ contextValue }>{ children }</CssClassContext.Provider>;\n}\n","import * as React from 'react';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\nimport {\n\tisElementsStylesProvider,\n\tstylesRepository,\n\tuseUserStylesCapability,\n} from '@elementor/editor-styles-repository';\nimport { MenuItemInfotip, MenuListItem } from '@elementor/editor-ui';\nimport { bindMenu, Divider, Menu, MenuSubheader, type PopupState, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\nimport { type StyleDefinitionStateWithNormal } from '../../styles-inheritance/types';\nimport { getTempStylesProviderThemeColor } from '../../utils/get-styles-provider-color';\nimport { trackStyles } from '../../utils/tracking/subscribe';\nimport { StyleIndicator } from '../style-indicator';\nimport { useCssClass } from './css-class-context';\nimport { LocalClassSubMenu } from './local-class-sub-menu';\nimport { useUnapplyClass } from './use-apply-and-unapply-class';\n\ntype State = {\n\tkey: StyleDefinitionStateWithNormal;\n\tvalue: StyleDefinitionState | null;\n\tlabel: string;\n};\n\nconst STATES: State[] = [\n\t{ key: 'normal', value: null, label: __( 'normal', 'elementor' ) },\n\t{ key: 'hover', value: 'hover', label: __( 'hover', 'elementor' ) },\n\t{ key: 'focus', value: 'focus', label: __( 'focus', 'elementor' ) },\n\t{ key: 'active', value: 'active', label: __( 'active', 'elementor' ) },\n];\n\ntype CssClassMenuProps = {\n\tpopupState: PopupState;\n\tanchorEl: HTMLElement | null;\n\tfixed?: boolean;\n};\n\nexport function CssClassMenu( { popupState, anchorEl, fixed }: CssClassMenuProps ) {\n\tconst { provider } = useCssClass();\n\tconst isLocalStyle = provider ? isElementsStylesProvider( provider ) : true;\n\n\tconst handleKeyDown = ( e: React.KeyboardEvent< HTMLElement > ) => {\n\t\te.stopPropagation();\n\t};\n\n\treturn (\n\t\t<Menu\n\t\t\tMenuListProps={ { dense: true, sx: { minWidth: '160px' } } }\n\t\t\t{ ...bindMenu( popupState ) }\n\t\t\tanchorEl={ anchorEl }\n\t\t\tanchorOrigin={ {\n\t\t\t\tvertical: 'bottom',\n\t\t\t\thorizontal: 'left',\n\t\t\t} }\n\t\t\ttransformOrigin={ {\n\t\t\t\thorizontal: 'left',\n\t\t\t\tvertical: -4,\n\t\t\t} }\n\t\t\tonKeyDown={ handleKeyDown }\n\t\t\t// Workaround for focus-visible issue.\n\t\t\tdisableAutoFocusItem\n\t\t>\n\t\t\t{ isLocalStyle && <LocalClassSubMenu popupState={ popupState } /> }\n\t\t\t{ /* It has to be an array since MUI menu doesn't accept a Fragment as a child, and wrapping the items with an HTML element disrupts keyboard navigation */ }\n\t\t\t{ getMenuItemsByProvider( { provider, closeMenu: popupState.close, fixed } ) }\n\t\t\t<MenuSubheader sx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }>\n\t\t\t\t{ __( 'States', 'elementor' ) }\n\t\t\t</MenuSubheader>\n\t\t\t{ STATES.map( ( state ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StateMenuItem\n\t\t\t\t\t\tkey={ state.key }\n\t\t\t\t\t\tstate={ state.value }\n\t\t\t\t\t\tlabel={ state.label }\n\t\t\t\t\t\tcloseMenu={ popupState.close }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t\t<ClassStatesMenu closeMenu={ popupState.close } />\n\t\t</Menu>\n\t);\n}\n\nfunction ClassStatesMenu( { closeMenu }: { closeMenu: () => void } ) {\n\tconst { elementStates, elementTitle } = useElementStates();\n\n\tif ( ! elementStates.length ) {\n\t\treturn null;\n\t}\n\n\t/* translators: %s: Element type title. */\n\tconst customTitle = __( '%s States', 'elementor' ).replace( '%s', elementTitle );\n\n\treturn (\n\t\t<>\n\t\t\t<Divider />\n\t\t\t<MenuSubheader sx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }>\n\t\t\t\t{ customTitle }\n\t\t\t</MenuSubheader>\n\t\t\t{ elementStates.map( ( state ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<StateMenuItem\n\t\t\t\t\t\tkey={ state.key }\n\t\t\t\t\t\tstate={ state.value }\n\t\t\t\t\t\tlabel={ state.label }\n\t\t\t\t\t\tcloseMenu={ closeMenu }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n}\n\nconst CLASS_STATES_MAP: Record< string, { label: string } > = {\n\tselected: {\n\t\tlabel: __( 'selected', 'elementor' ),\n\t},\n};\n\nexport function useElementStates() {\n\tconst { elementType } = useElement();\n\n\tconst { styleStates = [] } = elementType;\n\n\tconst elementStates = styleStates.map( ( { value, name } ) => ( {\n\t\tkey: value,\n\t\tvalue,\n\t\tlabel: CLASS_STATES_MAP[ value ]?.label ?? name,\n\t} ) );\n\n\treturn {\n\t\telementStates,\n\t\telementTitle: elementType.title,\n\t};\n}\n\nfunction useModifiedStates( styleId: string | null ): Partial< Record< StyleDefinitionStateWithNormal, true > > {\n\tconst { meta } = useStyle();\n\tconst styleDef = stylesRepository.all().find( ( style ) => style.id === styleId );\n\n\treturn Object.fromEntries(\n\t\tstyleDef?.variants\n\t\t\t.filter( ( variant ) => meta.breakpoint === variant.meta.breakpoint )\n\t\t\t.map( ( variant ) => [ variant.meta.state ?? 'normal', true ] ) ?? []\n\t);\n}\n\nfunction getMenuItemsByProvider( {\n\tprovider,\n\tcloseMenu,\n\tfixed,\n}: {\n\tprovider: string | null;\n\tcloseMenu: () => void;\n\tfixed?: boolean;\n} ) {\n\tif ( ! provider ) {\n\t\treturn [];\n\t}\n\n\tconst providerInstance = stylesRepository.getProviderByKey( provider );\n\tconst providerActions = providerInstance?.actions;\n\n\tconst canUpdate = providerActions?.update;\n\tconst canUnapply = ! fixed;\n\n\tconst actions = [\n\t\tcanUpdate && <RenameClassMenuItem key=\"rename-class\" closeMenu={ closeMenu } />,\n\t\tcanUnapply && <UnapplyClassMenuItem key=\"unapply-class\" closeMenu={ closeMenu } />,\n\t].filter( Boolean );\n\n\tif ( actions.length ) {\n\t\tactions.unshift(\n\t\t\t<MenuSubheader\n\t\t\t\tkey=\"provider-label\"\n\t\t\t\tsx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1, textTransform: 'capitalize' } }\n\t\t\t>\n\t\t\t\t{ providerInstance?.labels?.singular }\n\t\t\t</MenuSubheader>\n\t\t);\n\t\tactions.push( <Divider key=\"provider-actions-divider\" /> );\n\t}\n\n\treturn actions;\n}\n\ntype StateMenuItemProps = {\n\tstate: StyleDefinitionState;\n\tlabel: string;\n\tcloseMenu: () => void;\n};\n\nfunction StateMenuItem( { state, label, closeMenu, ...props }: StateMenuItemProps ) {\n\tconst { id: styleId, provider } = useCssClass();\n\tconst { id: activeId, setId: setActiveId, setMetaState: setActiveMetaState, meta } = useStyle();\n\tconst { state: activeState } = meta;\n\tconst { userCan } = useUserStylesCapability();\n\n\tconst modifiedStates = useModifiedStates( styleId );\n\n\tconst isUpdateAllowed = ! state || userCan( provider ?? '' ).updateProps;\n\n\tconst isStyled = modifiedStates[ state ?? 'normal' ] ?? false;\n\tconst disabled = ! isUpdateAllowed && ! isStyled;\n\tconst isActive = styleId === activeId;\n\tconst isSelected = state === activeState && isActive;\n\n\treturn (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tselected={ isSelected }\n\t\t\tdisabled={ disabled }\n\t\t\tsx={ { textTransform: 'capitalize' } }\n\t\t\tonClick={ () => {\n\t\t\t\tif ( ! isActive ) {\n\t\t\t\t\tsetActiveId( styleId );\n\t\t\t\t}\n\t\t\t\ttrackStyles( provider ?? '', 'classStateClicked', {\n\t\t\t\t\tclassId: styleId,\n\t\t\t\t\ttype: label,\n\t\t\t\t\tsource: styleId ? 'global' : 'local',\n\t\t\t\t} );\n\t\t\t\tsetActiveMetaState( state );\n\t\t\t\tcloseMenu();\n\t\t\t} }\n\t\t>\n\t\t\t<MenuItemInfotip\n\t\t\t\tshowInfoTip={ disabled }\n\t\t\t\tcontent={ __( 'With your current role, you can only use existing states.', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<Stack gap={ 0.75 } direction=\"row\" alignItems=\"center\">\n\t\t\t\t\t{ isStyled && (\n\t\t\t\t\t\t<StyleIndicator\n\t\t\t\t\t\t\taria-label={ __( 'Has style', 'elementor' ) }\n\t\t\t\t\t\t\tgetColor={ getTempStylesProviderThemeColor( provider ?? '' ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t{ label }\n\t\t\t\t</Stack>\n\t\t\t</MenuItemInfotip>\n\t\t</MenuListItem>\n\t);\n}\n\nfunction UnapplyClassMenuItem( { closeMenu, ...props }: { closeMenu: () => void } ) {\n\tconst { id: classId, label: classLabel, provider } = useCssClass();\n\tconst unapplyClass = useUnapplyClass();\n\n\treturn classId ? (\n\t\t<MenuListItem\n\t\t\t{ ...props }\n\t\t\tonClick={ () => {\n\t\t\t\tunapplyClass( { classId, classLabel } );\n\t\t\t\ttrackStyles( provider ?? '', 'classRemoved', {\n\t\t\t\t\tclassId,\n\t\t\t\t\tclassTitle: classLabel,\n\t\t\t\t\tsource: 'style-tab',\n\t\t\t\t} );\n\t\t\t\tcloseMenu();\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Remove', 'elementor' ) }\n\t\t</MenuListItem>\n\t) : null;\n}\n\nfunction RenameClassMenuItem( { closeMenu }: { closeMenu: () => void } ) {\n\tconst { handleRename, provider } = useCssClass();\n\tconst { userCan } = useUserStylesCapability();\n\n\tif ( ! provider ) {\n\t\treturn null;\n\t}\n\n\tconst isAllowed = userCan( provider ).update;\n\n\treturn (\n\t\t<MenuListItem\n\t\t\tdisabled={ ! isAllowed }\n\t\t\tonClick={ () => {\n\t\t\t\tcloseMenu();\n\t\t\t\thandleRename();\n\t\t\t} }\n\t\t>\n\t\t\t<MenuItemInfotip\n\t\t\t\tshowInfoTip={ ! isAllowed }\n\t\t\t\tcontent={ __(\n\t\t\t\t\t'With your current role, you can use existing classes but can’t modify them.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t>\n\t\t\t\t{ __( 'Rename', 'elementor' ) }\n\t\t\t</MenuItemInfotip>\n\t\t</MenuListItem>\n\t);\n}\n","import { styled, type Theme } from '@elementor/ui';\n\nexport const StyleIndicator = styled( 'div', {\n\tshouldForwardProp: ( prop: string ) => ! [ 'isOverridden', 'getColor' ].includes( prop ),\n} )<\n\t| {\n\t\t\tisOverridden?: boolean;\n\t\t\tgetColor?: never;\n\t }\n\t| {\n\t\t\tisOverridden?: boolean;\n\t\t\tgetColor?: ( ( theme: Theme ) => string ) | null;\n\t }\n>`\n\twidth: 5px;\n\theight: 5px;\n\tborder-radius: 50%;\n\tbackground-color: ${ ( { theme, isOverridden, getColor } ) => {\n\t\tif ( isOverridden ) {\n\t\t\treturn theme.palette.warning.light;\n\t\t}\n\n\t\tconst providerColor = getColor?.( theme );\n\n\t\treturn providerColor ?? theme.palette.text.disabled;\n\t} };\n`;\n","import * as React from 'react';\nimport { MenuSubheader, type PopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CssClassConvert } from './css-class-convert-local';\nimport { useCanConvertLocalClassToGlobal } from './use-can-convert-local-class-to-global';\n\ntype OwnProps = {\n\tpopupState: PopupState;\n};\n\nexport const LocalClassSubMenu = ( props: OwnProps ) => {\n\tconst { canConvert, styleDef } = useCanConvertLocalClassToGlobal();\n\n\treturn (\n\t\t<>\n\t\t\t<MenuSubheader sx={ { typography: 'caption', color: 'text.secondary', pb: 0.5, pt: 1 } }>\n\t\t\t\t{ __( 'Local Class', 'elementor' ) }\n\t\t\t</MenuSubheader>\n\t\t\t<CssClassConvert canConvert={ canConvert } styleDef={ styleDef } closeMenu={ props.popupState.close } />\n\t\t</>\n\t);\n};\n","import { isElementsStylesProvider } from '@elementor/editor-styles-repository';\n\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\n\nexport const useCanConvertLocalClassToGlobal = () => {\n\tconst { element } = useElement();\n\tconst { provider, id, meta } = useStyle();\n\tconst styleDef = provider?.actions.get( id, { elementId: element.id, ...meta } );\n\n\tconst isLocalStylesProvider = provider && isElementsStylesProvider( provider?.getKey() );\n\tconst variants = styleDef?.variants || [];\n\n\tconst canConvert = !! ( isLocalStylesProvider && variants.length );\n\n\treturn {\n\t\tcanConvert,\n\t\tisLocalStylesProvider,\n\t\tid,\n\t\tstyleDef: styleDef || null,\n\t};\n};\n","import { useCallback, useMemo } from 'react';\nimport { getElementLabel } from '@elementor/editor-elements';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\nimport { useGetStylesRepositoryCreateAction } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { doApplyClasses, doGetAppliedClasses } from '../../apply-unapply-actions';\nimport { useClassesProp } from '../../contexts/classes-prop-context';\nimport { useElement } from '../../contexts/element-context';\nimport { useStyle } from '../../contexts/style-context';\n\ntype UndoableClassActionPayload = {\n\tclassId: StyleDefinitionID;\n\tclassLabel: string;\n};\n\ntype CreateAndApplyClassPayload = {\n\tclassLabel: string;\n};\n\ntype CreateAndApplyClassUndoData = {\n\tprevActiveId: string | null;\n\tcreatedId: StyleDefinitionID;\n};\n\nexport function useApplyClass() {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst { element } = useElement();\n\n\tconst applyClass = useApply();\n\tconst unapplyClass = useUnapply();\n\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( { classId }: UndoableClassActionPayload ) => {\n\t\t\t\t\tconst prevActiveId = activeId;\n\n\t\t\t\t\tapplyClass( classId );\n\n\t\t\t\t\treturn prevActiveId;\n\t\t\t\t},\n\t\t\t\tundo: ( { classId }: UndoableClassActionPayload, prevActiveId: string | null ) => {\n\t\t\t\t\tunapplyClass( classId );\n\t\t\t\t\tsetActiveId( prevActiveId );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: getElementLabel( element.id ),\n\t\t\t\tsubtitle: ( { classLabel } ) => {\n\t\t\t\t\t/* translators: %s is the class name. */\n\t\t\t\t\treturn __( `class %s applied`, 'elementor' ).replace( '%s', classLabel );\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}, [ activeId, applyClass, element.id, unapplyClass, setActiveId ] );\n}\n\nexport function useUnapplyClass() {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst { element } = useElement();\n\n\tconst applyClass = useApply();\n\tconst unapplyClass = useUnapply();\n\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( { classId }: UndoableClassActionPayload ) => {\n\t\t\t\t\tconst prevActiveId = activeId;\n\n\t\t\t\t\tunapplyClass( classId );\n\n\t\t\t\t\treturn prevActiveId;\n\t\t\t\t},\n\t\t\t\tundo: ( { classId }: UndoableClassActionPayload, prevActiveId: string | null ) => {\n\t\t\t\t\tapplyClass( classId );\n\t\t\t\t\tsetActiveId( prevActiveId );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: getElementLabel( element.id ),\n\t\t\t\tsubtitle: ( { classLabel } ) => {\n\t\t\t\t\t/* translators: %s is the class name. */\n\t\t\t\t\treturn __( `class %s removed`, 'elementor' ).replace( '%s', classLabel );\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}, [ activeId, applyClass, element.id, unapplyClass, setActiveId ] );\n}\n\nexport function useCreateAndApplyClass() {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\n\tconst [ provider, createAction ] = useGetStylesRepositoryCreateAction() ?? [ null, null ];\n\tconst deleteAction = provider?.actions.delete;\n\n\tconst applyClass = useApply();\n\tconst unapplyClass = useUnapply();\n\n\tconst undoableCreateAndApply = useMemo( () => {\n\t\tif ( ! provider || ! createAction ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( { classLabel }: CreateAndApplyClassPayload ): CreateAndApplyClassUndoData => {\n\t\t\t\t\tconst prevActiveId = activeId;\n\n\t\t\t\t\tconst createdId = createAction( classLabel );\n\t\t\t\t\tapplyClass( createdId );\n\t\t\t\t\treturn { prevActiveId, createdId };\n\t\t\t\t},\n\t\t\t\tundo: ( _: CreateAndApplyClassPayload, { prevActiveId, createdId }: CreateAndApplyClassUndoData ) => {\n\t\t\t\t\tunapplyClass( createdId );\n\t\t\t\t\tdeleteAction?.( createdId );\n\n\t\t\t\t\tsetActiveId( prevActiveId );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: __( 'Class', 'elementor' ),\n\t\t\t\tsubtitle: ( { classLabel } ) => {\n\t\t\t\t\t/* translators: %s is the class name. */\n\t\t\t\t\treturn __( `%s created`, 'elementor' ).replace( '%s', classLabel );\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}, [ activeId, applyClass, createAction, deleteAction, provider, setActiveId, unapplyClass ] );\n\n\tif ( ! provider || ! undoableCreateAndApply ) {\n\t\treturn [ null, null ];\n\t}\n\n\treturn [ provider, undoableCreateAndApply ] as const;\n}\n\nfunction useApply() {\n\tconst { element } = useElement();\n\tconst { setId: setActiveId } = useStyle();\n\tconst { setClasses, getAppliedClasses } = useClasses();\n\n\treturn useCallback(\n\t\t( classIDToApply: StyleDefinitionID ) => {\n\t\t\tconst appliedClasses = getAppliedClasses();\n\n\t\t\tif ( appliedClasses.includes( classIDToApply ) ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Class ${ classIDToApply } is already applied to element ${ element.id }, cannot re-apply.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst updatedClassesIds = [ ...appliedClasses, classIDToApply ];\n\t\t\tsetClasses( updatedClassesIds );\n\t\t\tsetActiveId( classIDToApply );\n\t\t},\n\t\t[ element.id, getAppliedClasses, setActiveId, setClasses ]\n\t);\n}\n\nfunction useUnapply() {\n\tconst { element } = useElement();\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst { setClasses, getAppliedClasses } = useClasses();\n\n\treturn useCallback(\n\t\t( classIDToUnapply: StyleDefinitionID ) => {\n\t\t\tconst appliedClasses = getAppliedClasses();\n\n\t\t\tif ( ! appliedClasses.includes( classIDToUnapply ) ) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Class ${ classIDToUnapply } is not applied to element ${ element.id }, cannot unapply it.`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst updatedClassesIds = appliedClasses.filter( ( id ) => id !== classIDToUnapply );\n\t\t\tsetClasses( updatedClassesIds );\n\n\t\t\tif ( activeId === classIDToUnapply ) {\n\t\t\t\tsetActiveId( updatedClassesIds[ 0 ] ?? null );\n\t\t\t}\n\t\t},\n\t\t[ activeId, element.id, getAppliedClasses, setActiveId, setClasses ]\n\t);\n}\n\nfunction useClasses() {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\n\treturn useMemo( () => {\n\t\tconst setClasses = ( ids: StyleDefinitionID[] ) => {\n\t\t\tdoApplyClasses( element.id, ids, currentClassesProp );\n\t\t};\n\n\t\tconst getAppliedClasses = () => doGetAppliedClasses( element.id, currentClassesProp ) || [];\n\n\t\treturn { setClasses, getAppliedClasses };\n\t}, [ currentClassesProp, element.id ] );\n}\n","import { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport { getElementSetting, updateElementSettings } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\n\n// Externalized for use outside of Hooks\n\nexport function doGetAppliedClasses( elementId: string, classesPropType = 'classes' ) {\n\treturn getElementSetting< ClassesPropValue >( elementId, classesPropType )?.value || [];\n}\n\nexport function doApplyClasses( elementId: string, classIds: StyleDefinitionID[], classesPropType = 'classes' ) {\n\tupdateElementSettings( {\n\t\tid: elementId,\n\t\tprops: { [ classesPropType ]: classesPropTypeUtil.create( classIds ) },\n\t\twithHistory: false,\n\t} );\n\tsetDocumentModifiedStatus( true );\n}\n\nexport function doUnapplyClass( elementId: string, classId: StyleDefinitionID, classesPropType = 'classes' ) {\n\tconst appliedClasses = getElementSetting< ClassesPropValue >( elementId, classesPropType )?.value || [];\n\tif ( ! appliedClasses.includes( classId ) ) {\n\t\treturn false;\n\t}\n\n\tconst updatedClassIds = appliedClasses.filter( ( id ) => id !== classId );\n\tdoApplyClasses( elementId, updatedClassIds, classesPropType );\n\treturn true;\n}\n","import * as React from 'react';\nimport { type BreakpointId, type BreakpointNode, getBreakpointsTree } from '@elementor/editor-responsive';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { useCustomCss } from '../hooks/use-custom-css';\nimport { getStylesProviderThemeColor } from '../utils/get-styles-provider-color';\nimport { StyleIndicator } from './style-indicator';\n\nexport const CustomCssIndicator = () => {\n\tconst { customCss } = useCustomCss();\n\tconst { id: styleId, provider, meta } = useStyle();\n\tconst {\n\t\telement: { id: elementId },\n\t} = useElement();\n\n\tconst style = React.useMemo(\n\t\t() => ( styleId && provider ? provider.actions.get( styleId, { elementId } ) : null ),\n\t\t[ styleId, provider, elementId ]\n\t);\n\n\tconst hasContent = Boolean( customCss?.raw?.trim() );\n\n\tconst hasInheritedContent = React.useMemo( () => {\n\t\tif ( hasContent ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn hasInheritedCustomCss( style, meta );\n\t}, [ hasContent, style, meta ] );\n\n\tif ( ! hasContent ) {\n\t\tif ( hasInheritedContent ) {\n\t\t\treturn <StyleIndicator />;\n\t\t}\n\t\treturn null;\n\t}\n\n\treturn <StyleIndicator getColor={ provider ? getStylesProviderThemeColor( provider.getKey() ) : undefined } />;\n};\n\nconst hasInheritedCustomCss = (\n\tstyle: StyleDefinition | null,\n\tmeta: StyleDefinitionVariant[ 'meta' ] | null\n): boolean => {\n\tif ( ! style || ! meta ) {\n\t\treturn false;\n\t}\n\n\tconst target = ( meta.breakpoint ?? 'desktop' ) as BreakpointId;\n\tconst root = getBreakpointsTree();\n\tconst state = meta.state;\n\n\tfunction search( node: BreakpointNode, ancestorHasCss: boolean ): boolean | undefined {\n\t\tif ( ! style ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst hasHere = Boolean(\n\t\t\tgetVariantByMeta( style, {\n\t\t\t\tbreakpoint: node.id as BreakpointId,\n\t\t\t\tstate,\n\t\t\t} )?.custom_css?.raw?.trim()\n\t\t);\n\n\t\tif ( node.id === target ) {\n\t\t\treturn ancestorHasCss;\n\t\t}\n\n\t\tfor ( const child of node.children ?? [] ) {\n\t\t\tconst res = search( child, ancestorHasCss || hasHere );\n\n\t\t\tif ( res !== undefined ) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\treturn Boolean( search( root, false ) );\n};\n","import { useMemo } from 'react';\nimport {\n\tcreateElementStyle,\n\tdeleteElementStyle,\n\ttype ElementID,\n\tshouldCreateNewLocalStyle,\n} from '@elementor/editor-elements';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\nimport {\n\ttype CustomCss,\n\tgetVariantByMeta,\n\ttype StyleDefinition,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { ELEMENTS_STYLES_RESERVED_LABEL, type StylesProvider } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { decodeString, encodeString } from '@elementor/utils';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { StylesProviderCannotUpdatePropsError } from '../errors';\nimport { getSubtitle, getTitle, HISTORY_DEBOUNCE_WAIT } from './use-styles-fields';\nimport { useStylesRerender } from './use-styles-rerender';\n\ntype UpdateStyleArgs = {\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tcustomCss: CustomCss;\n\tpropDisplayName: string;\n};\n\ntype CreateStyleArgs = {\n\tstyleId: null;\n\tprovider: null;\n\tcustomCss: CustomCss | null;\n\tpropDisplayName: string;\n};\n\ntype UpdateStyleReturn = {\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tprevCustomCss: CustomCss | null;\n};\n\ntype CreateStyleReturn = {\n\tcreatedStyleId: StyleDefinition[ 'id' ];\n};\n\ntype UndoableUpdateStylePayload = UpdateStyleArgs | CreateStyleArgs;\ntype UndoableUpdateStyleReturn = UpdateStyleReturn | CreateStyleReturn;\n\nexport const useCustomCss = () => {\n\tconst {\n\t\telement: { id: elementId },\n\t} = useElement();\n\tconst { id: styleId, meta, provider } = useStyle();\n\tconst style = provider?.actions.get( styleId, { elementId } );\n\tconst undoableUpdateStyle = useUndoableActions( { elementId, meta } );\n\n\tconst currentStyleId = styleId ? styleId : null;\n\tconst currentProvider = styleId ? provider : null;\n\n\tuseStylesRerender();\n\n\tconst variant = style ? getVariantByMeta( style, meta ) : null;\n\n\tconst setCustomCss = (\n\t\traw: string,\n\t\t{ history: { propDisplayName } }: { history: { propDisplayName: string } }\n\t) => {\n\t\tconst newValue = { raw: encodeString( sanitize( raw ) ) };\n\n\t\tundoableUpdateStyle( {\n\t\t\tstyleId: currentStyleId,\n\t\t\tprovider: currentProvider,\n\t\t\tcustomCss: newValue,\n\t\t\tpropDisplayName,\n\t\t} as UndoableUpdateStylePayload );\n\t};\n\n\tconst customCss = variant?.custom_css?.raw ? { raw: decodeString( variant.custom_css.raw ) } : null;\n\n\treturn {\n\t\tcustomCss,\n\t\tsetCustomCss,\n\t};\n};\n\nfunction useUndoableActions( {\n\telementId,\n\tmeta: { breakpoint, state },\n}: {\n\telementId: ElementID;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n} ) {\n\tconst classesProp = useClassesProp();\n\n\treturn useMemo( () => {\n\t\tconst meta = { breakpoint, state };\n\n\t\tconst createStyleArgs = { elementId, classesProp, meta, label: ELEMENTS_STYLES_RESERVED_LABEL };\n\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( payload: UndoableUpdateStylePayload ): UndoableUpdateStyleReturn => {\n\t\t\t\t\tif ( shouldCreateNewLocalStyle< StylesProvider >( payload ) ) {\n\t\t\t\t\t\treturn create( payload as CreateStyleArgs );\n\t\t\t\t\t}\n\t\t\t\t\treturn update( payload as UpdateStyleArgs );\n\t\t\t\t},\n\t\t\t\tundo: ( payload: UndoableUpdateStylePayload, doReturn: UndoableUpdateStyleReturn ) => {\n\t\t\t\t\tif ( shouldCreateNewLocalStyle< StylesProvider >( payload ) ) {\n\t\t\t\t\t\treturn undoCreate( payload as CreateStyleArgs, doReturn as CreateStyleReturn );\n\t\t\t\t\t}\n\t\t\t\t\treturn undoUpdate( payload as UpdateStyleArgs, doReturn as UpdateStyleReturn );\n\t\t\t\t},\n\t\t\t\tredo: ( payload: UndoableUpdateStylePayload, doReturn: UndoableUpdateStyleReturn ) => {\n\t\t\t\t\tif ( shouldCreateNewLocalStyle< StylesProvider >( payload ) ) {\n\t\t\t\t\t\treturn create( payload as CreateStyleArgs, doReturn as CreateStyleReturn );\n\t\t\t\t\t}\n\t\t\t\t\treturn update( payload as UpdateStyleArgs );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: ( { provider, styleId } ) => getTitle( { provider, styleId, elementId } ),\n\t\t\t\tsubtitle: ( { provider, styleId, propDisplayName } ) =>\n\t\t\t\t\tgetSubtitle( { provider, styleId, elementId, propDisplayName } ),\n\t\t\t\tdebounce: { wait: HISTORY_DEBOUNCE_WAIT },\n\t\t\t}\n\t\t);\n\n\t\tfunction create( { customCss }: CreateStyleArgs, redoArgs?: CreateStyleReturn ): CreateStyleReturn {\n\t\t\tconst createdStyle = createElementStyle( {\n\t\t\t\t...createStyleArgs,\n\t\t\t\tprops: {},\n\t\t\t\tcustom_css: customCss ?? null,\n\t\t\t\tstyleId: redoArgs?.createdStyleId,\n\t\t\t} );\n\n\t\t\treturn { createdStyleId: createdStyle };\n\t\t}\n\n\t\tfunction undoCreate( _: UndoableUpdateStylePayload, { createdStyleId }: CreateStyleReturn ) {\n\t\t\tdeleteElementStyle( elementId, createdStyleId );\n\t\t}\n\n\t\tfunction update( { provider, styleId, customCss }: UpdateStyleArgs ): UpdateStyleReturn {\n\t\t\tif ( ! provider.actions.updateCustomCss ) {\n\t\t\t\tthrow new StylesProviderCannotUpdatePropsError( {\n\t\t\t\t\tcontext: { providerKey: provider.getKey() },\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tconst style = provider.actions.get( styleId, { elementId } );\n\t\t\tconst prevCustomCss = getCurrentCustomCss( style, meta );\n\n\t\t\tprovider.actions.updateCustomCss( { id: styleId, meta, custom_css: customCss }, { elementId } );\n\n\t\t\treturn { styleId, provider, prevCustomCss };\n\t\t}\n\n\t\tfunction undoUpdate( _: UndoableUpdateStylePayload, { styleId, provider, prevCustomCss }: UpdateStyleReturn ) {\n\t\t\tprovider.actions.updateCustomCss?.(\n\t\t\t\t{ id: styleId, meta, custom_css: prevCustomCss ?? { raw: '' } },\n\t\t\t\t{ elementId }\n\t\t\t);\n\t\t}\n\t}, [ elementId, breakpoint, state, classesProp ] );\n}\n\nfunction getCurrentCustomCss( style: StyleDefinition | null, meta: StyleDefinitionVariant[ 'meta' ] ) {\n\tif ( ! style ) {\n\t\treturn null;\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\treturn variant?.custom_css ?? null;\n}\n\nfunction sanitize( raw: string ) {\n\treturn stringPropTypeUtil.schema.safeParse( stringPropTypeUtil.create( raw ) ).data?.value?.trim() ?? '';\n}\n","import { useMemo } from 'react';\nimport {\n\tcreateElementStyle,\n\tdeleteElementStyle,\n\ttype ElementID,\n\tgetElementLabel,\n\tshouldCreateNewLocalStyle,\n} from '@elementor/editor-elements';\nimport type { Props } from '@elementor/editor-props';\nimport { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';\nimport { isElementsStylesProvider, type StylesProvider } from '@elementor/editor-styles-repository';\nimport { ELEMENTS_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { StyleNotFoundUnderProviderError, StylesProviderCannotUpdatePropsError } from '../errors';\nimport { useStylesRerender } from './use-styles-rerender';\n\nexport const HISTORY_DEBOUNCE_WAIT = 800;\n\nexport function useStylesFields< T extends Props >( propNames: ( keyof T & string )[] ) {\n\tconst {\n\t\telement: { id: elementId },\n\t} = useElement();\n\tconst { id: styleId, meta, provider, canEdit } = useStyle();\n\n\tconst undoableUpdateStyle = useUndoableActions( { elementId, meta } );\n\n\tuseStylesRerender();\n\n\tconst values = getProps< T >( { elementId, styleId, provider, meta, propNames } );\n\n\tconst setValues = ( props: T, { history: { propDisplayName } }: { history: { propDisplayName: string } } ) => {\n\t\tif ( ! styleId ) {\n\t\t\tundoableUpdateStyle( { styleId: null, provider: null, props, propDisplayName } );\n\t\t} else {\n\t\t\tundoableUpdateStyle( { styleId, provider, props, propDisplayName } );\n\t\t}\n\t};\n\n\treturn { values, setValues, canEdit };\n}\n\ntype GetPropsArgs = {\n\tprovider: StylesProvider | null;\n\tstyleId: StyleDefinition[ 'id' ] | null;\n\telementId: ElementID;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n\tpropNames: string[];\n};\n\ntype NullableValues< T extends Props > = {\n\t[ K in keyof T ]: T[ K ] | null;\n};\n\nfunction getProps< T extends Props >( { styleId, elementId, provider, meta, propNames }: GetPropsArgs ) {\n\tif ( ! provider || ! styleId ) {\n\t\treturn null;\n\t}\n\n\tconst style = provider.actions.get( styleId, { elementId } );\n\n\tif ( ! style ) {\n\t\tthrow new StyleNotFoundUnderProviderError( { context: { styleId, providerKey: provider.getKey() } } );\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\treturn Object.fromEntries(\n\t\tpropNames.map( ( key ) => [ key, variant?.props[ key ] ?? null ] )\n\t) as NullableValues< T >;\n}\n\ntype UpdateStyleArgs = {\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tprops: Props;\n\tpropDisplayName: string;\n};\n\ntype CreateStyleArgs = {\n\tstyleId: null;\n\tprovider: null;\n\tprops: Props;\n\tpropDisplayName: string;\n};\n\ntype UpdateStyleReturn = {\n\tstyleId: StyleDefinition[ 'id' ];\n\tprovider: StylesProvider;\n\tprevProps: Props;\n};\n\ntype CreateStyleReturn = {\n\tcreatedStyleId: StyleDefinition[ 'id' ];\n};\n\ntype UndoableUpdateStylePayload = UpdateStyleArgs | CreateStyleArgs;\ntype UndoableUpdateStyleReturn = UpdateStyleReturn | CreateStyleReturn;\n\nfunction useUndoableActions( {\n\telementId,\n\tmeta: { breakpoint, state },\n}: {\n\telementId: ElementID;\n\tmeta: StyleDefinitionVariant[ 'meta' ];\n} ) {\n\tconst classesProp = useClassesProp();\n\n\treturn useMemo( () => {\n\t\tconst meta = { breakpoint, state };\n\n\t\tconst createStyleArgs = { elementId, classesProp, meta, label: ELEMENTS_STYLES_RESERVED_LABEL };\n\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( payload: UndoableUpdateStylePayload ): UndoableUpdateStyleReturn => {\n\t\t\t\t\tif ( shouldCreateNewLocalStyle< StylesProvider >( payload ) ) {\n\t\t\t\t\t\treturn create( payload as CreateStyleArgs );\n\t\t\t\t\t}\n\t\t\t\t\treturn update( payload as UpdateStyleArgs );\n\t\t\t\t},\n\t\t\t\tundo: ( payload: UndoableUpdateStylePayload, doReturn: UndoableUpdateStyleReturn ) => {\n\t\t\t\t\tconst wasLocalStyleCreated = shouldCreateNewLocalStyle< StylesProvider >( payload );\n\n\t\t\t\t\tif ( wasLocalStyleCreated ) {\n\t\t\t\t\t\treturn undoCreate( payload as CreateStyleArgs, doReturn as CreateStyleReturn );\n\t\t\t\t\t}\n\t\t\t\t\treturn undo( payload as UpdateStyleArgs, doReturn as UpdateStyleReturn );\n\t\t\t\t},\n\t\t\t\tredo: ( payload: UndoableUpdateStylePayload, doReturn: UndoableUpdateStyleReturn ) => {\n\t\t\t\t\tconst wasLocalStyleCreated = shouldCreateNewLocalStyle< StylesProvider >( payload );\n\n\t\t\t\t\tif ( wasLocalStyleCreated ) {\n\t\t\t\t\t\treturn create( payload as CreateStyleArgs, doReturn as CreateStyleReturn );\n\t\t\t\t\t}\n\t\t\t\t\treturn update( payload as UpdateStyleArgs );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: ( { provider, styleId } ) => getTitle( { provider, styleId, elementId } ),\n\t\t\t\tsubtitle: ( { provider, styleId, propDisplayName } ) =>\n\t\t\t\t\tgetSubtitle( { provider, styleId, elementId, propDisplayName } ),\n\t\t\t\tdebounce: { wait: HISTORY_DEBOUNCE_WAIT },\n\t\t\t}\n\t\t);\n\n\t\tfunction create( { props }: CreateStyleArgs, redoArgs?: CreateStyleReturn ): CreateStyleReturn {\n\t\t\tconst createdStyle = createElementStyle( { ...createStyleArgs, props, styleId: redoArgs?.createdStyleId } );\n\n\t\t\treturn { createdStyleId: createdStyle };\n\t\t}\n\n\t\tfunction undoCreate( _: UndoableUpdateStylePayload, { createdStyleId }: CreateStyleReturn ) {\n\t\t\tdeleteElementStyle( elementId, createdStyleId );\n\t\t}\n\n\t\tfunction update( { provider, styleId, props }: UpdateStyleArgs ): UpdateStyleReturn {\n\t\t\tif ( ! provider.actions.updateProps ) {\n\t\t\t\tthrow new StylesProviderCannotUpdatePropsError( {\n\t\t\t\t\tcontext: { providerKey: provider.getKey() },\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tconst style = provider.actions.get( styleId, { elementId } );\n\t\t\tconst prevProps = getCurrentProps( style, meta );\n\n\t\t\tprovider.actions.updateProps( { id: styleId, meta, props }, { elementId } );\n\n\t\t\treturn { styleId, provider, prevProps };\n\t\t}\n\n\t\tfunction undo( _: UndoableUpdateStylePayload, { styleId, provider, prevProps }: UpdateStyleReturn ) {\n\t\t\tprovider.actions.updateProps?.( { id: styleId, meta, props: prevProps }, { elementId } );\n\t\t}\n\t}, [ elementId, breakpoint, state, classesProp ] );\n}\n\nfunction getCurrentProps( style: StyleDefinition | null, meta: StyleDefinitionVariant[ 'meta' ] ) {\n\tif ( ! style ) {\n\t\treturn {};\n\t}\n\n\tconst variant = getVariantByMeta( style, meta );\n\n\tconst props = variant?.props ?? {};\n\n\treturn structuredClone( props );\n}\n\ntype DefaultHistoryTitleArgs = {\n\tprovider: StylesProvider;\n};\n\ntype DefaultHistorySubtitleArgs = {\n\tprovider: StylesProvider;\n\tstyleId: StyleDefinition[ 'id' ];\n\telementId: ElementID;\n\tpropDisplayName: string;\n};\n\nconst defaultHistoryTitles = {\n\ttitle: ( { provider }: DefaultHistoryTitleArgs ) => {\n\t\tconst providerLabel = provider.labels?.singular;\n\t\treturn providerLabel ? capitalize( providerLabel ) : __( 'Style', 'elementor' );\n\t},\n\tsubtitle: ( { provider, styleId, elementId, propDisplayName }: DefaultHistorySubtitleArgs ) => {\n\t\tconst styleLabel = provider.actions.get( styleId, { elementId } )?.label;\n\n\t\tif ( ! styleLabel ) {\n\t\t\tthrow new Error( `Style ${ styleId } not found` );\n\t\t}\n\n\t\t// translators: %s$1 is the style label, %s$2 is the name of the style property being edited\n\t\treturn __( `%s$1 %s$2 edited`, 'elementor' ).replace( '%s$1', styleLabel ).replace( '%s$2', propDisplayName );\n\t},\n};\n\ntype LocalStyleHistoryTitleArgs = {\n\telementId: ElementID;\n};\n\ntype LocalStyleHistorySubtitleArgs = {\n\tpropDisplayName: string;\n};\n\nconst localStyleHistoryTitles = {\n\ttitle: ( { elementId }: LocalStyleHistoryTitleArgs ) => getElementLabel( elementId ),\n\tsubtitle: ( { propDisplayName }: LocalStyleHistorySubtitleArgs ) =>\n\t\t// translators: %s is the name of the style property being edited\n\t\t__( `%s edited`, 'elementor' ).replace( '%s', propDisplayName ),\n};\n\nfunction capitalize( str: string ) {\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n\nconst isLocalStyle = ( provider: StylesProvider | null, styleId: StyleDefinition[ 'id' ] | null ) =>\n\t! provider || ! styleId || isElementsStylesProvider( provider.getKey() );\n\ntype TitleOptions = {\n\tprovider: StylesProvider | null;\n\tstyleId: string | null;\n\telementId: string;\n};\n\ntype SubtitleOptions = TitleOptions & { propDisplayName: string };\n\nexport const getTitle = ( { provider, styleId, elementId }: TitleOptions ) => {\n\tconst isLocal = isLocalStyle( provider, styleId );\n\n\tif ( isLocal ) {\n\t\treturn localStyleHistoryTitles.title( { elementId } );\n\t}\n\n\treturn defaultHistoryTitles.title( { provider: provider as StylesProvider } );\n};\n\nexport const getSubtitle = ( { provider, styleId, propDisplayName, elementId }: SubtitleOptions ) => {\n\tconst isLocal = isLocalStyle( provider, styleId );\n\n\tif ( isLocal ) {\n\t\treturn localStyleHistoryTitles.subtitle( { propDisplayName } );\n\t}\n\n\treturn defaultHistoryTitles.subtitle( {\n\t\tprovider: provider as StylesProvider,\n\t\tstyleId: styleId as StyleDefinition[ 'id' ],\n\t\telementId,\n\t\tpropDisplayName,\n\t} );\n};\n","import { useEffect, useReducer } from 'react';\n\nimport { useStyle } from '../contexts/style-context';\n\nexport const useStylesRerender = () => {\n\tconst { provider } = useStyle();\n\tconst [ , reRender ] = useReducer( ( p ) => ! p, false );\n\n\tuseEffect( () => provider?.subscribe( reRender ), [ provider ] );\n};\n","import * as React from 'react';\nimport { ControlActionsProvider, ControlReplacementsProvider } from '@elementor/editor-controls';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { ThemeProvider } from '@elementor/editor-ui';\nimport { AtomIcon } from '@elementor/icons';\nimport { createLocation } from '@elementor/locations';\nimport { SessionStorageProvider } from '@elementor/session';\nimport { ErrorBoundary } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ElementProvider } from '../contexts/element-context';\nimport { getControlReplacements } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { getEditingPanelReplacement } from '../editing-panel-replacement-registry';\nimport { EditorPanelErrorFallback } from './editing-panel-error-fallback';\nimport { EditingPanelTabs } from './editing-panel-tabs';\n\nexport const { Slot: PanelHeaderTopSlot, inject: injectIntoPanelHeaderTop } = createLocation();\n\nconst { useMenuItems } = controlActionsMenu;\n\nexport const EditingPanel = () => {\n\tconst { element, elementType } = useSelectedElement();\n\tconst controlReplacements = getControlReplacements();\n\tconst menuItems = useMenuItems().default;\n\n\tif ( ! element || ! elementType ) {\n\t\treturn null;\n\t}\n\n\t/* translators: %s: Element type title. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', elementType.title );\n\n\tconst { component: ReplacementComponent } = getEditingPanelReplacement( element, elementType ) ?? {};\n\n\tlet panelContent = (\n\t\t<>\n\t\t\t<PanelHeader>\n\t\t\t\t<PanelHeaderTitle>{ panelTitle }</PanelHeaderTitle>\n\t\t\t\t<AtomIcon fontSize=\"small\" sx={ { color: 'text.tertiary' } } />\n\t\t\t</PanelHeader>\n\t\t\t<PanelBody>\n\t\t\t\t<EditingPanelTabs />\n\t\t\t</PanelBody>\n\t\t</>\n\t);\n\n\tif ( ReplacementComponent ) {\n\t\tpanelContent = <ReplacementComponent />;\n\t}\n\n\treturn (\n\t\t<ErrorBoundary fallback={ <EditorPanelErrorFallback /> }>\n\t\t\t<SessionStorageProvider prefix={ 'elementor' }>\n\t\t\t\t<ThemeProvider>\n\t\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t\t<ControlReplacementsProvider replacements={ controlReplacements }>\n\t\t\t\t\t\t\t<ElementProvider element={ element } elementType={ elementType }>\n\t\t\t\t\t\t\t\t<Panel>\n\t\t\t\t\t\t\t\t\t<PanelHeaderTopSlot />\n\t\t\t\t\t\t\t\t\t{ panelContent }\n\t\t\t\t\t\t\t\t</Panel>\n\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t</ControlReplacementsProvider>\n\t\t\t\t\t</ControlActionsProvider>\n\t\t\t\t</ThemeProvider>\n\t\t\t</SessionStorageProvider>\n\t\t</ErrorBoundary>\n\t);\n};\n","import { createControlReplacementsRegistry } from '@elementor/editor-controls';\n\nexport const { registerControlReplacement, getControlReplacements } = createControlReplacementsRegistry();\n","import { createMenu } from '@elementor/menus';\n\nimport Action from './action';\nimport { PopoverAction } from './popover-action';\n\nexport const controlActionsMenu = createMenu( {\n\tcomponents: {\n\t\tAction,\n\t\tPopoverAction,\n\t},\n} );\n","import * as React from 'react';\nimport { type ElementType as ReactElementType } from 'react';\nimport { IconButton, Tooltip } from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\ntype ActionProps = {\n\ttitle: string;\n\tvisible?: boolean;\n\ticon: ReactElementType;\n\tonClick: () => void;\n};\n\nexport default function Action( { title, visible = true, icon: Icon, onClick }: ActionProps ) {\n\tif ( ! visible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Tooltip placement=\"top\" title={ title } arrow={ true }>\n\t\t\t<IconButton aria-label={ title } size={ SIZE } onClick={ onClick }>\n\t\t\t\t<Icon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t</Tooltip>\n\t);\n}\n","import * as React from 'react';\nimport { type ComponentType, type ElementType as ReactElementType } from 'react';\nimport { useFloatingActionsBar } from '@elementor/editor-controls';\nimport { bindPopover, bindTrigger, IconButton, Popover, Tooltip, usePopupState } from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\nexport type PopoverActionProps = {\n\ttitle: string;\n\tvisible?: boolean;\n\ticon: ReactElementType;\n\tcontent: ComponentType< { close: () => void } >;\n};\n\nexport function PopoverAction( { title, visible = true, icon: Icon, content: PopoverContent }: PopoverActionProps ) {\n\tconst { popupState, triggerProps, popoverProps } = useFloatingActionsPopover();\n\n\tif ( ! visible ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<Tooltip placement=\"top\" title={ title }>\n\t\t\t\t<IconButton aria-label={ title } size={ SIZE } { ...triggerProps }>\n\t\t\t\t\t<Icon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t\t<Popover\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\tPaperProps={ {\n\t\t\t\t\tsx: { my: 2.5 },\n\t\t\t\t} }\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<PopoverContent close={ popupState.close } />\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nexport function useFloatingActionsPopover() {\n\tconst { setOpen } = useFloatingActionsBar();\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\tconst triggerProps = bindTrigger( popupState );\n\tconst popoverProps = bindPopover( popupState );\n\n\tconst onClick = ( e: React.MouseEvent ) => {\n\t\ttriggerProps.onClick( e );\n\t\tsetOpen( true );\n\t};\n\n\tconst onClose = () => {\n\t\tpopoverProps.onClose();\n\t\tsetOpen( false );\n\t};\n\n\tconst close = () => {\n\t\tpopupState.close();\n\t\tsetOpen( false );\n\t};\n\n\treturn {\n\t\tpopupState: { ...popupState, close },\n\t\ttriggerProps: { ...triggerProps, onClick },\n\t\tpopoverProps: { ...popoverProps, onClose },\n\t};\n}\n","import { type ComponentType } from 'react';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\n\ntype EditingPanelReplacement = {\n\tcondition: ( element: Element, elementType: ElementType ) => boolean;\n\tcomponent: ComponentType;\n\n\t// ordered from lowest to highest\n\tpriority: number;\n};\n\nconst registry = new Map< string, EditingPanelReplacement >();\n\nconst DEFAULT_PRIORITY = 10;\n\nexport const registerEditingPanelReplacement = ( {\n\tid,\n\tpriority = DEFAULT_PRIORITY,\n\t...props\n}: Omit< EditingPanelReplacement, 'priority' > & { id: string; priority?: number } ) => {\n\tregistry.set( id, { ...props, priority } );\n};\n\nexport const getEditingPanelReplacement = (\n\telement: Element,\n\telementType: ElementType\n): EditingPanelReplacement | null =>\n\tArray.from( registry.values() )\n\t\t.filter( ( { condition } ) => condition( element, elementType ) )\n\t\t.sort( ( a, b ) => a.priority - b.priority )?.[ 0 ] ?? null;\n","import * as React from 'react';\nimport { Alert, Box } from '@elementor/ui';\n\nexport function EditorPanelErrorFallback() {\n\treturn (\n\t\t<Box role=\"alert\" sx={ { minHeight: '100%', p: 2 } }>\n\t\t\t<Alert severity=\"error\" sx={ { mb: 2, maxWidth: 400, textAlign: 'center' } }>\n\t\t\t\t<strong>Something went wrong</strong>\n\t\t\t</Alert>\n\t\t</Box>\n\t);\n}\n","import { Fragment } from 'react';\nimport * as React from 'react';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { Divider, Stack, Tab, TabPanel, Tabs, useTabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../contexts/element-context';\nimport { ScrollProvider } from '../contexts/scroll-context';\nimport { useDefaultPanelSettings } from '../hooks/use-default-panel-settings';\nimport { useStateByElement } from '../hooks/use-state-by-element';\nimport { InteractionsTab } from './interactions-tab';\nimport { SettingsTab } from './settings-tab';\nimport { stickyHeaderStyles, StyleTab } from './style-tab';\n\ntype TabValue = 'settings' | 'style' | 'interactions';\n\nexport const EditingPanelTabs = () => {\n\tconst { element } = useElement();\n\treturn (\n\t\t// When switching between elements, the local states should be reset. We are using key to rerender the tabs.\n\t\t// Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key\n\t\t<Fragment key={ element.id }>\n\t\t\t<PanelTabContent />\n\t\t</Fragment>\n\t);\n};\n\nconst PanelTabContent = () => {\n\tconst editorDefaults = useDefaultPanelSettings();\n\tconst defaultComponentTab = editorDefaults.defaultTab as TabValue;\n\tconst isInteractionsActive = isExperimentActive( 'e_interactions' );\n\n\tconst [ currentTab, setCurrentTab ] = useStateByElement< TabValue >( 'tab', defaultComponentTab );\n\tconst { getTabProps, getTabPanelProps, getTabsProps } = useTabs< TabValue >( currentTab );\n\treturn (\n\t\t<ScrollProvider>\n\t\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t\t<Stack sx={ { ...stickyHeaderStyles, top: 0 } }>\n\t\t\t\t\t<Tabs\n\t\t\t\t\t\tvariant=\"fullWidth\"\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tsx={ { mt: 0.5 } }\n\t\t\t\t\t\t{ ...getTabsProps() }\n\t\t\t\t\t\tonChange={ ( _: unknown, newValue: TabValue ) => {\n\t\t\t\t\t\t\tgetTabsProps().onChange( _, newValue );\n\t\t\t\t\t\t\tsetCurrentTab( newValue );\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t\t\t\t{ isInteractionsActive && (\n\t\t\t\t\t\t\t<Tab label={ __( 'Interactions', 'elementor' ) } { ...getTabProps( 'interactions' ) } />\n\t\t\t\t\t\t) }\n\t\t\t\t\t</Tabs>\n\t\t\t\t\t<Divider />\n\t\t\t\t</Stack>\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t\t<SettingsTab />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t\t<StyleTab />\n\t\t\t\t</TabPanel>\n\t\t\t\t{ isInteractionsActive && (\n\t\t\t\t\t<TabPanel { ...getTabPanelProps( 'interactions' ) } disablePadding>\n\t\t\t\t\t\t<InteractionsTab />\n\t\t\t\t\t</TabPanel>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</ScrollProvider>\n\t);\n};\n","import * as React from 'react';\nimport { createContext, type ReactNode, useContext, useEffect, useRef, useState } from 'react';\nimport { styled } from '@elementor/ui';\n\ntype ScrollDirection = 'up' | 'down';\n\ntype ScrollContextValue = {\n\tdirection: ScrollDirection;\n};\n\nconst ScrollContext = createContext< ScrollContextValue | undefined >( undefined );\n\nconst ScrollPanel = styled( 'div' )`\n\theight: 100%;\n\toverflow-y: auto;\n`;\n\nconst DEFAULT_SCROLL_DIRECTION: ScrollDirection = 'up';\n\nexport function ScrollProvider( { children }: { children: ReactNode } ) {\n\tconst [ direction, setDirection ] = useState< ScrollDirection >( DEFAULT_SCROLL_DIRECTION );\n\tconst ref = useRef< HTMLDivElement >( null );\n\tconst scrollPos = useRef< number >( 0 );\n\n\tuseEffect( () => {\n\t\tconst scrollElement = ref.current;\n\n\t\tif ( ! scrollElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst handleScroll = () => {\n\t\t\tconst { scrollTop } = scrollElement;\n\n\t\t\tif ( scrollTop > scrollPos.current ) {\n\t\t\t\tsetDirection( 'down' );\n\t\t\t} else if ( scrollTop < scrollPos.current ) {\n\t\t\t\tsetDirection( 'up' );\n\t\t\t}\n\n\t\t\tscrollPos.current = scrollTop;\n\t\t};\n\n\t\tscrollElement.addEventListener( 'scroll', handleScroll );\n\n\t\treturn () => {\n\t\t\tscrollElement.removeEventListener( 'scroll', handleScroll );\n\t\t};\n\t} );\n\n\treturn (\n\t\t<ScrollContext.Provider value={ { direction } }>\n\t\t\t<ScrollPanel ref={ ref }>{ children }</ScrollPanel>\n\t\t</ScrollContext.Provider>\n\t);\n}\n\nexport function useScrollDirection() {\n\treturn useContext( ScrollContext )?.direction ?? DEFAULT_SCROLL_DIRECTION;\n}\n","import { createContext, useContext } from 'react';\n\nimport { useElement } from '../contexts/element-context';\n\ntype Defaults = {\n\tdefaultSectionsExpanded: Record< string, string[] >;\n\tdefaultTab: string;\n};\n\nconst fallbackEditorSettings: Defaults = {\n\tdefaultSectionsExpanded: {\n\t\tsettings: [ 'Content', 'Settings' ],\n\t\tstyle: [],\n\t},\n\tdefaultTab: 'settings',\n};\n\nconst defaultPanelSettingsContext = createContext< Record< string, Defaults | undefined > >( {\n\t'e-div-block': {\n\t\tdefaultSectionsExpanded: fallbackEditorSettings.defaultSectionsExpanded,\n\t\tdefaultTab: 'style',\n\t},\n\t'e-flexbox': {\n\t\tdefaultSectionsExpanded: fallbackEditorSettings.defaultSectionsExpanded,\n\t\tdefaultTab: 'style',\n\t},\n\t'e-divider': {\n\t\tdefaultSectionsExpanded: fallbackEditorSettings.defaultSectionsExpanded,\n\t\tdefaultTab: 'style',\n\t},\n} );\n\nexport const useDefaultPanelSettings = () => {\n\tconst { element } = useElement();\n\tconst defaults = useContext( defaultPanelSettingsContext )[ element.type ];\n\treturn defaults || fallbackEditorSettings;\n};\n","import { useState } from 'react';\nimport { getSessionStorageItem, setSessionStorageItem } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\n\nexport const useStateByElement = < T >( key: string, initialValue: T ) => {\n\tconst { element } = useElement();\n\tconst lookup = `elementor/editor-state/${ element.id }/${ key }`;\n\tconst storedValue = getSessionStorageItem< T >( lookup );\n\tconst [ value, setValue ] = useState( storedValue ?? initialValue );\n\n\tconst doUpdate = ( newValue: T ) => {\n\t\tsetSessionStorageItem( lookup, newValue );\n\t\tsetValue( newValue );\n\t};\n\n\treturn [ value, doUpdate ] as const;\n};\n","import * as React from 'react';\nimport { InteractionsTab as InteractionsTabContent } from '@elementor/editor-interactions';\n\nimport { useElement } from '../contexts/element-context';\nimport { SectionsList } from './sections-list';\n\nexport const InteractionsTab = () => {\n\tconst { element } = useElement();\n\n\treturn (\n\t\t<SectionsList>\n\t\t\t<InteractionsTabContent elementId={ element.id } />\n\t\t</SectionsList>\n\t);\n};\n","import * as React from 'react';\nimport { List, type ListProps } from '@elementor/ui';\n\nexport function SectionsList( props: ListProps ) {\n\treturn <List disablePadding component=\"div\" { ...props } />;\n}\n","import * as React from 'react';\nimport { type Control, type ControlItem, type Element, type ElementControl } from '@elementor/editor-elements';\nimport { SessionStorageProvider } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\nimport { useDefaultPanelSettings } from '../hooks/use-default-panel-settings';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\nimport { SettingsControl } from './settings-control';\n\nexport const SettingsTab = () => {\n\tconst { elementType, element } = useElement();\n\tconst settingsDefault = useDefaultPanelSettings();\n\n\tconst isDefaultExpanded = ( sectionId: string ) =>\n\t\tsettingsDefault.defaultSectionsExpanded.settings?.includes( sectionId );\n\n\treturn (\n\t\t<SessionStorageProvider prefix={ element.id }>\n\t\t\t<SectionsList>\n\t\t\t\t{ elementType.controls.map( ( control, index ) => {\n\t\t\t\t\tif ( isControl( control ) ) {\n\t\t\t\t\t\treturn <SettingsControl key={ getKey( control, element ) } control={ control } />;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst { type, value } = control;\n\n\t\t\t\t\tif ( type === 'section' ) {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Section\n\t\t\t\t\t\t\t\ttitle={ value.label }\n\t\t\t\t\t\t\t\tkey={ type + '.' + index }\n\t\t\t\t\t\t\t\tdefaultExpanded={ isDefaultExpanded( value.label ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ value.items?.map( ( item ) => {\n\t\t\t\t\t\t\t\t\tif ( isControl( item ) ) {\n\t\t\t\t\t\t\t\t\t\treturn <SettingsControl key={ getKey( item, element ) } control={ item } />;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// TODO: Handle 2nd level sections\n\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t</Section>\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn null;\n\t\t\t\t} ) }\n\t\t\t</SectionsList>\n\t\t</SessionStorageProvider>\n\t);\n};\n\nfunction getKey( control: Control | ElementControl, element: Element ) {\n\tif ( control.type === 'control' ) {\n\t\treturn control.value.bind + '.' + element.id;\n\t}\n\n\treturn control.value.type + '.' + element.id;\n}\n\nfunction isControl( control: ControlItem ): control is Control | ElementControl {\n\treturn control.type === 'control' || control.type === 'element-control';\n}\n","import * as React from 'react';\nimport { type PropsWithChildren, type ReactNode, useId, useRef } from 'react';\nimport { CollapseIcon } from '@elementor/editor-ui';\nimport { Collapse, Divider, ListItemButton, ListItemText, Stack } from '@elementor/ui';\n\nimport { SectionRefContext } from '../contexts/section-context';\nimport { useStateByElement } from '../hooks/use-state-by-element';\nimport { type CollapsibleValue, getCollapsibleValue } from './collapsible-content';\n\ntype Props = PropsWithChildren< {\n\ttitle: string;\n\tdefaultExpanded?: boolean;\n\ttitleEnd?: CollapsibleValue< ReactNode | string >;\n\tunmountOnExit?: boolean;\n} >;\n\nexport function Section( { title, children, defaultExpanded = false, titleEnd, unmountOnExit = true }: Props ) {\n\tconst [ isOpen, setIsOpen ] = useStateByElement( title, !! defaultExpanded );\n\tconst ref = useRef< HTMLElement >( null );\n\n\tconst handleClick = () => {\n\t\tsetIsOpen( ! isOpen );\n\t};\n\n\tconst id = useId();\n\tconst labelId = `label-${ id }`;\n\tconst contentId = `content-${ id }`;\n\n\treturn (\n\t\t<>\n\t\t\t<ListItemButton\n\t\t\t\tid={ labelId }\n\t\t\t\taria-controls={ contentId }\n\t\t\t\taria-label={ `${ title } section` }\n\t\t\t\tonClick={ handleClick }\n\t\t\t\tsx={ { '&:hover': { backgroundColor: 'transparent' } } }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" flexGrow={ 1 } gap={ 0.5 }>\n\t\t\t\t\t<ListItemText\n\t\t\t\t\t\tsecondary={ title }\n\t\t\t\t\t\tsecondaryTypographyProps={ { color: 'text.primary', variant: 'caption', fontWeight: 'bold' } }\n\t\t\t\t\t\tsx={ { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 } }\n\t\t\t\t\t/>\n\t\t\t\t\t{ getCollapsibleValue( titleEnd, isOpen ) }\n\t\t\t\t</Stack>\n\t\t\t\t<CollapseIcon open={ isOpen } color=\"secondary\" fontSize=\"tiny\" />\n\t\t\t</ListItemButton>\n\t\t\t<Collapse\n\t\t\t\tid={ contentId }\n\t\t\t\taria-labelledby={ labelId }\n\t\t\t\tin={ isOpen }\n\t\t\t\ttimeout=\"auto\"\n\t\t\t\tunmountOnExit={ unmountOnExit }\n\t\t\t>\n\t\t\t\t<SectionRefContext.Provider value={ ref }>\n\t\t\t\t\t<Stack ref={ ref } gap={ 2.5 } p={ 2 } aria-label={ `${ title } section content` }>\n\t\t\t\t\t\t{ children }\n\t\t\t\t\t</Stack>\n\t\t\t\t</SectionRefContext.Provider>\n\t\t\t</Collapse>\n\t\t\t<Divider />\n\t\t</>\n\t);\n}\n","import { createContext, useContext } from 'react';\nimport type { RefObject } from 'react';\n\nconst FALLBACK_SECTION_WIDTH = 320;\n\nexport const SectionRefContext = createContext< RefObject< HTMLElement > | null >( null );\n\nconst useSectionRef = () => useContext( SectionRefContext );\n\nexport const useSectionWidth = (): number => {\n\tconst sectionRef = useSectionRef();\n\n\treturn sectionRef?.current?.offsetWidth ?? FALLBACK_SECTION_WIDTH;\n};\n","import * as React from 'react';\nimport { type ReactNode, useState } from 'react';\nimport { CollapseIcon } from '@elementor/editor-ui';\nimport { Button, Collapse, Stack, styled } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype StaticItem< T = unknown > = T extends ( ...args: unknown[] ) => unknown ? never : T;\n\ntype CallbackItem< T > = ( isOpen: boolean ) => T;\nexport type CollapsibleValue< T > = CallbackItem< T > | StaticItem< T >;\n\ntype CollapsibleContentProps = React.PropsWithChildren< {\n\tdefaultOpen?: boolean;\n\ttitleEnd?: CollapsibleValue< ReactNode | string > | null;\n} >;\n\nconst IndicatorsWrapper = styled( 'div' )`\n\tposition: absolute;\n\ttop: 0;\n\tright: ${ ( { theme } ) => theme.spacing( 3 ) };\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n`;\n\nexport const CollapsibleContent = ( { children, defaultOpen = false, titleEnd = null }: CollapsibleContentProps ) => {\n\tconst [ open, setOpen ] = useState( defaultOpen );\n\n\tconst handleToggle = () => {\n\t\tsetOpen( ( prevOpen ) => ! prevOpen );\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<Stack sx={ { position: 'relative' } }>\n\t\t\t\t<Button\n\t\t\t\t\tfullWidth\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tonClick={ handleToggle }\n\t\t\t\t\tendIcon={ <CollapseIcon open={ open } /> }\n\t\t\t\t\tsx={ { my: 0.5 } }\n\t\t\t\t\taria-label={ open ? 'Show less' : 'Show more' }\n\t\t\t\t>\n\t\t\t\t\t{ open ? __( 'Show less', 'elementor' ) : __( 'Show more', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t\t{ titleEnd && <IndicatorsWrapper>{ getCollapsibleValue( titleEnd, open ) }</IndicatorsWrapper> }\n\t\t\t</Stack>\n\t\t\t<Collapse in={ open } timeout=\"auto\" unmountOnExit>\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n\nexport function getCollapsibleValue< T >( value: CollapsibleValue< T >, isOpen: boolean ): T {\n\tif ( typeof value === 'function' ) {\n\t\treturn ( value as CallbackItem< T > )( isOpen );\n\t}\n\n\treturn value;\n}\n","import * as React from 'react';\nimport { ControlAdornmentsProvider } from '@elementor/editor-controls';\nimport { type Control, type ControlLayout, type ElementControl } from '@elementor/editor-elements';\nimport { Divider, styled } from '@elementor/ui';\n\nimport { Control as BaseControl } from '../controls-registry/control';\nimport { ControlTypeContainer } from '../controls-registry/control-type-container';\nimport { controlsRegistry, type ControlType } from '../controls-registry/controls-registry';\nimport { SettingsField } from '../controls-registry/settings-field';\nimport { getFieldIndicators } from '../field-indicators-registry';\nimport { ControlLabel } from './control-label';\n\nconst Wrapper = styled( 'span' )`\n\tdisplay: contents;\n`;\n\nexport const SettingsControl = ( { control: { value, type } }: { control: Control | ElementControl } ) => {\n\tif ( ! controlsRegistry.get( value.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\tconst layout = value.meta?.layout || controlsRegistry.getLayout( value.type as ControlType );\n\tconst controlProps = populateChildControlProps( value.props );\n\n\tif ( layout === 'custom' ) {\n\t\tcontrolProps.label = value.label;\n\t}\n\n\tif ( type === 'element-control' ) {\n\t\treturn <ControlLayout control={ value } layout={ layout } controlProps={ controlProps } />;\n\t}\n\n\treturn (\n\t\t<SettingsField bind={ value.bind } propDisplayName={ value.label || value.bind }>\n\t\t\t<ControlLayout control={ value } layout={ layout } controlProps={ controlProps } />\n\t\t</SettingsField>\n\t);\n};\n\nconst ControlLayout = ( {\n\tcontrol,\n\tlayout,\n\tcontrolProps,\n}: {\n\tcontrol: Control[ 'value' ] | ElementControl[ 'value' ];\n\tlayout: ControlLayout;\n\tcontrolProps: Record< string, unknown >;\n} ) => {\n\tconst controlType = control.type as ControlType;\n\n\treturn (\n\t\t<ControlAdornmentsProvider items={ getFieldIndicators( 'settings' ) }>\n\t\t\t{ control.meta?.topDivider && <Divider /> }\n\t\t\t<Wrapper data-type=\"settings-field\">\n\t\t\t\t<ControlTypeContainer layout={ layout }>\n\t\t\t\t\t{ control.label && layout !== 'custom' ? <ControlLabel>{ control.label }</ControlLabel> : null }\n\t\t\t\t\t<BaseControl type={ controlType } props={ controlProps } />\n\t\t\t\t</ControlTypeContainer>\n\t\t\t</Wrapper>\n\t\t</ControlAdornmentsProvider>\n\t);\n};\n\nfunction populateChildControlProps( props: Record< string, unknown > ) {\n\tif ( props.childControlType ) {\n\t\tconst childComponent = controlsRegistry.get( props.childControlType as ControlType );\n\t\tconst childPropType = controlsRegistry.getPropTypeUtil( props.childControlType as ControlType );\n\t\tprops = {\n\t\t\t...props,\n\t\t\tchildControlConfig: {\n\t\t\t\tcomponent: childComponent,\n\t\t\t\tprops: props.childControlProps || {},\n\t\t\t\tpropTypeUtil: childPropType,\n\t\t\t},\n\t\t};\n\t}\n\n\treturn props;\n}\n","import * as React from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { useElement } from '../contexts/element-context';\nimport { ControlTypeNotFoundError } from '../errors';\nimport { controlsRegistry, type ControlType, type ControlTypes } from './controls-registry';\n\ntype IsRequired< T, K extends keyof T > = object extends Pick< T, K > ? false : true;\n\ntype AnyPropertyRequired< T > = {\n\t[ K in keyof T ]: IsRequired< T, K >;\n}[ keyof T ] extends true\n\t? true\n\t: false;\n\ntype ControlProps< T extends ControlType > = AnyPropertyRequired< ComponentProps< ControlTypes[ T ] > > extends true\n\t? {\n\t\t\tprops: ComponentProps< ControlTypes[ T ] >;\n\t\t\ttype: T;\n\t }\n\t: {\n\t\t\tprops?: ComponentProps< ControlTypes[ T ] >;\n\t\t\ttype: T;\n\t };\n\nexport const Control = < T extends ControlType >( { props, type }: ControlProps< T > ) => {\n\tconst ControlByType = controlsRegistry.get( type );\n\tconst { element } = useElement();\n\n\tif ( ! ControlByType ) {\n\t\tthrow new ControlTypeNotFoundError( {\n\t\t\tcontext: { controlType: type },\n\t\t} );\n\t}\n\n\t// @ts-expect-error ControlComponent props are inferred from the type (T).\n\treturn <ControlByType { ...props } context={ { elementId: element.id } } />;\n};\n","import {\n\ttype ControlComponent,\n\tDateTimeControl,\n\tHtmlTagControl,\n\tImageControl,\n\tInlineEditingControl,\n\tKeyValueControl,\n\tLinkControl,\n\tNumberControl,\n\tQueryControl,\n\tRepeatableControl,\n\tSelectControlWrapper,\n\tSizeControl,\n\tSvgMediaControl,\n\tSwitchControl,\n\tTextAreaControl,\n\tTextControl,\n\tToggleControl,\n\tUrlControl,\n} from '@elementor/editor-controls';\nimport { type ControlLayout } from '@elementor/editor-elements';\nimport {\n\tbooleanPropTypeUtil,\n\tDateTimePropTypeUtil,\n\thtmlPropTypeUtil,\n\timagePropTypeUtil,\n\timageSrcPropTypeUtil,\n\tkeyValuePropTypeUtil,\n\tlinkPropTypeUtil,\n\tnumberPropTypeUtil,\n\ttype PropTypeUtil,\n\tqueryPropTypeUtil,\n\tsizePropTypeUtil,\n\tstringPropTypeUtil,\n} from '@elementor/editor-props';\n\nimport { ControlTypeAlreadyRegisteredError, ControlTypeNotRegisteredError } from '../errors';\n\nexport type ControlRegistry = Record<\n\tstring,\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t{ component: ControlComponent; layout: ControlLayout; propTypeUtil?: PropTypeUtil< string, any > }\n>;\n\nconst controlTypes = {\n\timage: { component: ImageControl, layout: 'full', propTypeUtil: imagePropTypeUtil },\n\t'svg-media': { component: SvgMediaControl, layout: 'full', propTypeUtil: imageSrcPropTypeUtil },\n\ttext: { component: TextControl, layout: 'full', propTypeUtil: stringPropTypeUtil },\n\ttextarea: { component: TextAreaControl, layout: 'full', propTypeUtil: stringPropTypeUtil },\n\tsize: { component: SizeControl, layout: 'two-columns', propTypeUtil: sizePropTypeUtil },\n\tselect: { component: SelectControlWrapper, layout: 'two-columns', propTypeUtil: stringPropTypeUtil },\n\tlink: { component: LinkControl, layout: 'custom', propTypeUtil: linkPropTypeUtil },\n\tquery: { component: QueryControl, layout: 'full', propTypeUtil: queryPropTypeUtil },\n\turl: { component: UrlControl, layout: 'full', propTypeUtil: stringPropTypeUtil },\n\tswitch: { component: SwitchControl, layout: 'two-columns', propTypeUtil: booleanPropTypeUtil },\n\tnumber: { component: NumberControl, layout: 'two-columns', propTypeUtil: numberPropTypeUtil },\n\trepeatable: { component: RepeatableControl, layout: 'full', propTypeUtil: undefined },\n\t'key-value': { component: KeyValueControl, layout: 'full', propTypeUtil: keyValuePropTypeUtil },\n\t'html-tag': { component: HtmlTagControl, layout: 'two-columns', propTypeUtil: stringPropTypeUtil },\n\ttoggle: { component: ToggleControl, layout: 'full', propTypeUtil: stringPropTypeUtil },\n\t'date-time': { component: DateTimeControl, layout: 'full', propTypeUtil: DateTimePropTypeUtil },\n\t'inline-editing': { component: InlineEditingControl, layout: 'full', propTypeUtil: htmlPropTypeUtil },\n} as const satisfies ControlRegistry;\n\nexport type ControlType = keyof typeof controlTypes;\n\nexport type ControlTypes = {\n\t[ key in ControlType ]: ( typeof controlTypes )[ key ][ 'component' ];\n};\n\nclass ControlsRegistry {\n\tconstructor( private readonly controlsRegistry: ControlRegistry ) {\n\t\tthis.controlsRegistry = controlsRegistry;\n\t}\n\n\tget( type: ControlType ): ControlComponent {\n\t\treturn this.controlsRegistry[ type ]?.component;\n\t}\n\n\tgetLayout( type: ControlType ) {\n\t\treturn this.controlsRegistry[ type ]?.layout;\n\t}\n\n\tgetPropTypeUtil( type: ControlType ) {\n\t\treturn this.controlsRegistry[ type ]?.propTypeUtil;\n\t}\n\n\tregistry(): ControlRegistry {\n\t\treturn this.controlsRegistry;\n\t}\n\n\tregister(\n\t\ttype: string,\n\t\tcomponent: ControlComponent,\n\t\tlayout: ControlLayout,\n\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\t\tpropTypeUtil?: PropTypeUtil< string, any >\n\t) {\n\t\tif ( this.controlsRegistry[ type ] ) {\n\t\t\tthrow new ControlTypeAlreadyRegisteredError( { context: { controlType: type } } );\n\t\t}\n\t\tthis.controlsRegistry[ type ] = { component, layout, propTypeUtil };\n\t}\n\n\tunregister( type: string ) {\n\t\tif ( ! this.controlsRegistry[ type ] ) {\n\t\t\tthrow new ControlTypeNotRegisteredError( { context: { controlType: type } } );\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n\t\tdelete this.controlsRegistry[ type ];\n\t}\n}\n\nexport const controlsRegistry = new ControlsRegistry( controlTypes );\n","import * as React from 'react';\nimport { type ControlLayout } from '@elementor/editor-elements';\nimport { Box, type BoxProps, styled } from '@elementor/ui';\n\nexport const ControlTypeContainer = ( { children, layout }: React.PropsWithChildren< { layout?: ControlLayout } > ) => {\n\tif ( layout === 'custom' ) {\n\t\treturn children;\n\t}\n\n\treturn <StyledContainer layout={ layout }>{ children }</StyledContainer>;\n};\n\nconst StyledContainer = styled( Box, {\n\tshouldForwardProp: ( prop: string ) => ! [ 'layout' ].includes( prop ),\n} )< BoxProps & { layout: ControlLayout } >( ( { layout, theme } ) => ( {\n\tdisplay: 'grid',\n\tgridGap: theme.spacing( 1 ),\n\t...getGridLayout( layout ),\n} ) );\n\nconst getGridLayout = ( layout: ControlLayout ) => ( {\n\tjustifyContent: 'space-between',\n\t...getStyleByLayout( layout ),\n} );\n\nconst getStyleByLayout = ( layout: ControlLayout ) => {\n\tif ( layout === 'full' ) {\n\t\treturn {\n\t\t\tgridTemplateColumns: 'minmax(0, 1fr)',\n\t\t};\n\t}\n\n\tif ( layout === 'two-columns' ) {\n\t\treturn {\n\t\t\talignItems: 'center',\n\t\t\tgridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n\t\t};\n\t}\n};\n","import * as React from 'react';\nimport { useMemo } from 'react';\nimport { PropKeyProvider, PropProvider, type SetValueMeta } from '@elementor/editor-controls';\nimport { setDocumentModifiedStatus } from '@elementor/editor-documents';\nimport {\n\ttype ElementID,\n\tgetElementLabel,\n\tgetElementSettings,\n\tupdateElementSettings,\n\tuseElementSettings,\n} from '@elementor/editor-elements';\nimport {\n\ttype CreateOptions,\n\tisDependencyMet,\n\tmigratePropValue,\n\ttype PropKey,\n\ttype Props,\n\ttype PropsSchema,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../contexts/element-context';\nimport { extractOrderedDependencies, getUpdatedValues, type Values } from '../utils/prop-dependency-utils';\nimport { createTopLevelObjectType } from './create-top-level-object-type';\n\ntype SettingsFieldProps = {\n\tbind: PropKey;\n\tpropDisplayName: string;\n\tchildren: React.ReactNode;\n};\n\nconst HISTORY_DEBOUNCE_WAIT = 800;\n\nexport const SettingsField = ( { bind, children, propDisplayName }: SettingsFieldProps ) => {\n\tconst {\n\t\telement: { id: elementId },\n\t\telementType: { propsSchema, dependenciesPerTargetMapping = {} },\n\t} = useElement();\n\n\tconst elementSettingValues = useElementSettings< PropValue >( elementId, Object.keys( propsSchema ) ) as Values;\n\n\tconst migratedValues = useMemo( () => {\n\t\treturn migratePropValues( elementSettingValues, propsSchema );\n\t}, [ elementSettingValues, propsSchema ] );\n\n\tconst value = { [ bind ]: migratedValues?.[ bind ] ?? null };\n\n\tconst propType = createTopLevelObjectType( { schema: propsSchema } );\n\n\tconst undoableUpdateElementProp = useUndoableUpdateElementProp( {\n\t\telementId,\n\t\tpropDisplayName,\n\t} );\n\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst setValue = ( newValue: Values, _: CreateOptions = {}, meta?: SetValueMeta ) => {\n\t\tconst { withHistory = true } = meta ?? {};\n\t\tconst dependents = extractOrderedDependencies( dependenciesPerTargetMapping );\n\n\t\tconst settings = getUpdatedValues( newValue, dependents, propsSchema, migratedValues, elementId );\n\t\tif ( withHistory ) {\n\t\t\tundoableUpdateElementProp( settings );\n\t\t} else {\n\t\t\tupdateElementSettings( { id: elementId, props: settings, withHistory: false } );\n\t\t}\n\t};\n\n\tconst isDisabled = ( prop: PropType ) => ! isDependencyMet( prop?.dependencies, migratedValues ).isMet;\n\n\treturn (\n\t\t<PropProvider propType={ propType } value={ value } setValue={ setValue } isDisabled={ isDisabled }>\n\t\t\t<PropKeyProvider bind={ bind }>{ children }</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nfunction useUndoableUpdateElementProp( {\n\telementId,\n\tpropDisplayName,\n}: {\n\telementId: ElementID;\n\tpropDisplayName: string;\n} ) {\n\treturn useMemo( () => {\n\t\treturn undoable(\n\t\t\t{\n\t\t\t\tdo: ( newSettings: Props ) => {\n\t\t\t\t\tconst prevPropValue = getElementSettings( elementId, Object.keys( newSettings ) ) as Props;\n\n\t\t\t\t\tupdateElementSettings( { id: elementId, props: newSettings as Props, withHistory: false } );\n\t\t\t\t\tsetDocumentModifiedStatus( true );\n\n\t\t\t\t\treturn prevPropValue;\n\t\t\t\t},\n\n\t\t\t\tundo: ( {}, prevProps ) => {\n\t\t\t\t\tupdateElementSettings( { id: elementId, props: prevProps, withHistory: false } );\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: getElementLabel( elementId ),\n\t\t\t\t// translators: %s is the name of the property that was edited.\n\t\t\t\tsubtitle: __( '%s edited', 'elementor' ).replace( '%s', propDisplayName ),\n\t\t\t\tdebounce: { wait: HISTORY_DEBOUNCE_WAIT },\n\t\t\t}\n\t\t);\n\t}, [ elementId, propDisplayName ] );\n}\n\nfunction migratePropValues( values: Values, schema: PropsSchema ): Values {\n\tif ( ! values ) {\n\t\treturn values;\n\t}\n\n\tconst migrated: Values = {};\n\n\tfor ( const [ key, value ] of Object.entries( values ) ) {\n\t\tif ( value === null || value === undefined ) {\n\t\t\tmigrated[ key ] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst propType = schema[ key ];\n\n\t\tif ( ! propType ) {\n\t\t\tmigrated[ key ] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tmigrated[ key ] = migratePropValue( value, propType ) as Values[ string ];\n\t}\n\n\treturn migrated;\n}\n","import {\n\ttype Dependency,\n\ttype DependencyTerm,\n\textractValue,\n\tisDependencyMet,\n\ttype PropsSchema,\n\ttype PropType,\n\ttype TransformablePropValue,\n} from '@elementor/editor-props';\nimport { getSessionStorageItem, removeSessionStorageItem, setSessionStorageItem } from '@elementor/session';\n\ntype Value = TransformablePropValue< string > | null;\n\nexport type Values = Record< string, Value >;\n\nexport function extractOrderedDependencies( dependenciesPerTargetMapping: Record< string, string[] > ): string[] {\n\treturn Object.values( dependenciesPerTargetMapping )\n\t\t.flat()\n\t\t.filter( ( dependent, index, self ) => self.indexOf( dependent ) === index );\n}\n\nexport function getUpdatedValues(\n\tvalues: Values,\n\tdependencies: string[],\n\tpropsSchema: PropsSchema,\n\telementValues: Values,\n\telementId: string\n): Values {\n\tif ( ! dependencies.length ) {\n\t\treturn values;\n\t}\n\n\treturn dependencies.reduce(\n\t\t( newValues, dependency ) => {\n\t\t\tconst path = dependency.split( '.' );\n\t\t\tconst combinedValues = { ...elementValues, ...newValues };\n\t\t\tconst propType = getPropType( propsSchema, combinedValues, path );\n\n\t\t\tif ( ! propType ) {\n\t\t\t\treturn newValues;\n\t\t\t}\n\n\t\t\tconst testDependencies = {\n\t\t\t\tpreviousValues: isDependencyMet( propType.dependencies, elementValues ),\n\t\t\t\tnewValues: isDependencyMet( propType.dependencies, combinedValues ),\n\t\t\t};\n\n\t\t\tif ( ! testDependencies.newValues.isMet ) {\n\t\t\t\tconst newValue = handleUnmetCondition( {\n\t\t\t\t\tfailingDependencies: testDependencies.newValues.failingDependencies,\n\t\t\t\t\tdependency,\n\t\t\t\t\telementValues: combinedValues,\n\t\t\t\t\tdefaultValue: propType.default as Value,\n\t\t\t\t\telementId,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\t...newValues,\n\t\t\t\t\t...updateValue( path, newValue, combinedValues ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif ( ! testDependencies.previousValues.isMet ) {\n\t\t\t\tconst savedValue = retrievePreviousValueFromStorage< Value >( { path: dependency, elementId } );\n\n\t\t\t\tremovePreviousValueFromStorage( { path: dependency, elementId } );\n\n\t\t\t\treturn {\n\t\t\t\t\t...newValues,\n\t\t\t\t\t...updateValue( path, savedValue ?? ( propType.default as Value ), combinedValues ),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn newValues;\n\t\t},\n\t\t{ ...values }\n\t);\n}\n\nfunction getPropType( schema: PropsSchema, elementValues: Values, path: string[] ): PropType | null {\n\tif ( ! path.length ) {\n\t\treturn null;\n\t}\n\n\tconst [ basePropKey, ...keys ] = path;\n\tconst baseProp = schema[ basePropKey ];\n\n\tif ( ! baseProp ) {\n\t\treturn null;\n\t}\n\n\treturn keys.reduce(\n\t\t( prop: PropType | null, key, index ) =>\n\t\t\tevaluatePropType( { prop, key, index, path, elementValues, basePropKey } ),\n\t\tbaseProp\n\t);\n}\n\nfunction evaluatePropType( props: {\n\tprop: PropType | null;\n\tkey: string;\n\tindex: number;\n\tpath: string[];\n\telementValues: Values;\n\tbasePropKey: string;\n} ) {\n\tconst { prop } = props;\n\n\tif ( ! prop?.kind ) {\n\t\treturn null;\n\t}\n\n\tconst { key, index, path, elementValues, basePropKey } = props;\n\n\tswitch ( prop.kind ) {\n\t\tcase 'union':\n\t\t\tconst value = extractValue( path.slice( 0, index + 1 ), elementValues );\n\t\t\tconst type = ( value?.$$type as string ) ?? null;\n\n\t\t\treturn getPropType(\n\t\t\t\t{ [ basePropKey ]: prop.prop_types?.[ type ] },\n\t\t\t\telementValues,\n\t\t\t\tpath.slice( 0, index + 2 )\n\t\t\t);\n\t\tcase 'array':\n\t\t\treturn prop.item_prop_type;\n\t\tcase 'object':\n\t\t\treturn prop.shape[ key ];\n\t}\n\n\treturn prop[ key as keyof typeof prop ] as PropType;\n}\n\nfunction updateValue( path: string[], value: Value, values: Values ) {\n\tconst topPropKey = path[ 0 ];\n\tconst newValue: Values = { ...values };\n\n\tpath.reduce( ( carry: Values | null, key, index ) => {\n\t\tif ( ! carry ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( index === path.length - 1 ) {\n\t\t\tcarry[ key ] = value ?? null;\n\n\t\t\treturn ( carry[ key ]?.value as Values ) ?? carry.value;\n\t\t}\n\n\t\treturn ( carry[ key ]?.value as Values ) ?? carry.value;\n\t}, newValue );\n\n\treturn { [ topPropKey ]: newValue[ topPropKey ] ?? null };\n}\n\nfunction handleUnmetCondition( props: {\n\tfailingDependencies: ( DependencyTerm | Dependency )[];\n\tdependency: string;\n\telementValues: Values;\n\tdefaultValue: Value;\n\telementId: string;\n} ) {\n\tconst { failingDependencies, dependency, elementValues, defaultValue, elementId } = props;\n\tconst newValue = failingDependencies.find( ( term ) => term.newValue )?.newValue ?? null;\n\tconst currentValue = extractValue( dependency.split( '.' ), elementValues ) ?? defaultValue;\n\n\tsavePreviousValueToStorage( {\n\t\tpath: dependency,\n\t\telementId,\n\t\tvalue: currentValue,\n\t} );\n\n\treturn newValue;\n}\n\nfunction savePreviousValueToStorage( { path, elementId, value }: { path: string; elementId: string; value: unknown } ) {\n\tconst prefix = `elementor/${ elementId }`;\n\tconst savedValue = retrievePreviousValueFromStorage( { path, elementId } );\n\n\tif ( savedValue ) {\n\t\treturn;\n\t}\n\n\tconst key = `${ prefix }:${ path }`;\n\n\tsetSessionStorageItem( key, value );\n}\n\nfunction retrievePreviousValueFromStorage< T >( { path, elementId }: { path: string; elementId: string } ) {\n\tconst prefix = `elementor/${ elementId }`;\n\tconst key = `${ prefix }:${ path }`;\n\n\treturn getSessionStorageItem< T >( key ) ?? null;\n}\n\nfunction removePreviousValueFromStorage( { path, elementId }: { path: string; elementId: string } ) {\n\tconst prefix = `elementor/${ elementId }`;\n\tconst key = `${ prefix }:${ path }`;\n\n\tremoveSessionStorageItem( key );\n}\n","import { type ObjectPropType, type PropsSchema } from '@elementor/editor-props';\n\nexport const createTopLevelObjectType = ( { schema }: { schema: PropsSchema } ) => {\n\tconst schemaPropType: ObjectPropType = {\n\t\tkey: '',\n\t\tkind: 'object',\n\t\tmeta: {},\n\t\tsettings: {},\n\t\tdefault: null,\n\t\tshape: schema,\n\t};\n\n\treturn schemaPropType;\n};\n","import { type AdornmentComponent } from '@elementor/editor-controls';\n\ntype FieldType = 'settings' | 'styles';\n\ntype FieldIndicator = {\n\tid: string;\n\tindicator: AdornmentComponent;\n\n\t// ordered from lowest to highest\n\tpriority: number;\n};\n\nconst indicatorsRegistry: Record< FieldType, Map< string, FieldIndicator > > = {\n\tsettings: new Map(),\n\tstyles: new Map(),\n};\n\nconst DEFAULT_PRIORITY = 10;\n\nexport const FIELD_TYPE = {\n\tSETTINGS: 'settings',\n\tSTYLES: 'styles',\n} satisfies Record< string, FieldType >;\n\nexport const registerFieldIndicator = ( {\n\tfieldType,\n\tid,\n\tindicator,\n\tpriority = DEFAULT_PRIORITY,\n}: FieldIndicator & { fieldType: FieldType } ) => {\n\tindicatorsRegistry[ fieldType ].set( id, { id, indicator, priority } );\n};\n\nexport const getFieldIndicators = ( fieldType: FieldType ): { id: string; Adornment: AdornmentComponent }[] =>\n\tArray.from( indicatorsRegistry[ fieldType ].values() )\n\t\t.sort( ( a, b ) => a.priority - b.priority )\n\t\t.map( ( { id, indicator: Adornment } ) => ( { id, Adornment } ) );\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { ControlAdornments, ControlFormLabel } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\n\nexport const ControlLabel = ( { children }: PropsWithChildren< object > ) => {\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyItems=\"start\" gap={ 0.25 }>\n\t\t\t<ControlFormLabel>{ children }</ControlFormLabel>\n\t\t\t<ControlAdornments />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { CLASSES_PROP_KEY } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { type StyleDefinitionID, type StyleDefinitionState } from '@elementor/editor-styles';\nimport { createLocation } from '@elementor/locations';\nimport { SessionStorageProvider } from '@elementor/session';\nimport { Box, Divider, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ClassesPropProvider } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useScrollDirection } from '../contexts/scroll-context';\nimport { StyleProvider } from '../contexts/style-context';\nimport { StyleInheritanceProvider } from '../contexts/styles-inheritance-context';\nimport { useActiveStyleDefId } from '../hooks/use-active-style-def-id';\nimport { CssClassSelector } from './css-classes/css-class-selector';\nimport { SectionsList } from './sections-list';\nimport { BackgroundSection } from './style-sections/background-section/background-section';\nimport { BorderSection } from './style-sections/border-section/border-section';\nimport { EffectsSection } from './style-sections/effects-section/effects-section';\nimport { LayoutSection } from './style-sections/layout-section/layout-section';\nimport { PositionSection } from './style-sections/position-section/position-section';\nimport { SizeSection } from './style-sections/size-section/size-section';\nimport { SpacingSection } from './style-sections/spacing-section/spacing-section';\nimport { TypographySection } from './style-sections/typography-section/typography-section';\nimport { StyleTabSection } from './style-tab-section';\n\nconst TABS_HEADER_HEIGHT = '37px';\n\nexport const { Slot: StyleTabSlot, inject: injectIntoStyleTab } = createLocation();\n\nexport const stickyHeaderStyles = {\n\tposition: 'sticky',\n\tzIndex: 1100,\n\topacity: 1,\n\tbackgroundColor: 'background.default',\n\ttransition: 'top 300ms ease',\n};\n\nexport const StyleTab = () => {\n\tconst currentClassesProp = useCurrentClassesProp();\n\tconst [ activeStyleDefId, setActiveStyleDefId ] = useActiveStyleDefId( currentClassesProp ?? '' );\n\tconst [ activeStyleState, setActiveStyleState ] = useState< StyleDefinitionState | null >( null );\n\tconst breakpoint = useActiveBreakpoint();\n\n\tif ( ! currentClassesProp ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<ClassesPropProvider prop={ currentClassesProp }>\n\t\t\t<StyleProvider\n\t\t\t\tmeta={ { breakpoint, state: activeStyleState } }\n\t\t\t\tid={ activeStyleDefId }\n\t\t\t\tsetId={ ( id: StyleDefinitionID | null ) => {\n\t\t\t\t\tsetActiveStyleDefId( id );\n\t\t\t\t\tsetActiveStyleState( null );\n\t\t\t\t} }\n\t\t\t\tsetMetaState={ setActiveStyleState }\n\t\t\t>\n\t\t\t\t<SessionStorageProvider prefix={ activeStyleDefId ?? '' }>\n\t\t\t\t\t<StyleInheritanceProvider>\n\t\t\t\t\t\t<ClassesHeader>\n\t\t\t\t\t\t\t<CssClassSelector />\n\t\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t</ClassesHeader>\n\t\t\t\t\t\t<SectionsList>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: LayoutSection,\n\t\t\t\t\t\t\t\t\tname: 'Layout',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Layout', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [\n\t\t\t\t\t\t\t\t\t'display',\n\t\t\t\t\t\t\t\t\t'flex-direction',\n\t\t\t\t\t\t\t\t\t'flex-wrap',\n\t\t\t\t\t\t\t\t\t'justify-content',\n\t\t\t\t\t\t\t\t\t'align-items',\n\t\t\t\t\t\t\t\t\t'align-content',\n\t\t\t\t\t\t\t\t\t'align-self',\n\t\t\t\t\t\t\t\t\t'gap',\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<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: SpacingSection,\n\t\t\t\t\t\t\t\t\tname: 'Spacing',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Spacing', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [ 'margin', 'padding' ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: SizeSection,\n\t\t\t\t\t\t\t\t\tname: 'Size',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Size', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [\n\t\t\t\t\t\t\t\t\t'width',\n\t\t\t\t\t\t\t\t\t'min-width',\n\t\t\t\t\t\t\t\t\t'max-width',\n\t\t\t\t\t\t\t\t\t'height',\n\t\t\t\t\t\t\t\t\t'min-height',\n\t\t\t\t\t\t\t\t\t'max-height',\n\t\t\t\t\t\t\t\t\t'overflow',\n\t\t\t\t\t\t\t\t\t'aspect-ratio',\n\t\t\t\t\t\t\t\t\t'object-fit',\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<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: PositionSection,\n\t\t\t\t\t\t\t\t\tname: 'Position',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Position', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [ 'position', 'z-index', 'scroll-margin-top' ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: TypographySection,\n\t\t\t\t\t\t\t\t\tname: 'Typography',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Typography', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [\n\t\t\t\t\t\t\t\t\t'font-family',\n\t\t\t\t\t\t\t\t\t'font-weight',\n\t\t\t\t\t\t\t\t\t'font-size',\n\t\t\t\t\t\t\t\t\t'text-align',\n\t\t\t\t\t\t\t\t\t'color',\n\t\t\t\t\t\t\t\t\t'line-height',\n\t\t\t\t\t\t\t\t\t'letter-spacing',\n\t\t\t\t\t\t\t\t\t'word-spacing',\n\t\t\t\t\t\t\t\t\t'column-count',\n\t\t\t\t\t\t\t\t\t'text-decoration',\n\t\t\t\t\t\t\t\t\t'text-transform',\n\t\t\t\t\t\t\t\t\t'direction',\n\t\t\t\t\t\t\t\t\t'font-style',\n\t\t\t\t\t\t\t\t\t'stroke',\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<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: BackgroundSection,\n\t\t\t\t\t\t\t\t\tname: 'Background',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Background', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [ 'background' ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: BorderSection,\n\t\t\t\t\t\t\t\t\tname: 'Border',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Border', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [ 'border-radius', 'border-width', 'border-color', 'border-style' ] }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<StyleTabSection\n\t\t\t\t\t\t\t\tsection={ {\n\t\t\t\t\t\t\t\t\tcomponent: EffectsSection,\n\t\t\t\t\t\t\t\t\tname: 'Effects',\n\t\t\t\t\t\t\t\t\ttitle: __( 'Effects', 'elementor' ),\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tfields={ [\n\t\t\t\t\t\t\t\t\t'mix-blend-mode',\n\t\t\t\t\t\t\t\t\t'box-shadow',\n\t\t\t\t\t\t\t\t\t'opacity',\n\t\t\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t\t\t'filter',\n\t\t\t\t\t\t\t\t\t'backdrop-filter',\n\t\t\t\t\t\t\t\t\t'transform-origin',\n\t\t\t\t\t\t\t\t\t'transition',\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<StyleTabSlot />\n\t\t\t\t\t\t</SectionsList>\n\t\t\t\t\t\t<Box sx={ { height: '150px' } } />\n\t\t\t\t\t</StyleInheritanceProvider>\n\t\t\t\t</SessionStorageProvider>\n\t\t\t</StyleProvider>\n\t\t</ClassesPropProvider>\n\t);\n};\n\nfunction ClassesHeader( { children }: { children: React.ReactNode } ) {\n\tconst scrollDirection = useScrollDirection();\n\n\treturn (\n\t\t<Stack sx={ { ...stickyHeaderStyles, top: scrollDirection === 'up' ? TABS_HEADER_HEIGHT : 0 } }>\n\t\t\t{ children }\n\t\t</Stack>\n\t);\n}\n\nfunction useCurrentClassesProp(): string | null {\n\tconst { elementType } = useElement();\n\n\tconst prop = Object.entries( elementType.propsSchema ).find(\n\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t);\n\n\tif ( ! prop ) {\n\t\treturn null;\n\t}\n\n\treturn prop[ 0 ];\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { getWidgetsCache, useElementSetting } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { getBreakpointsTree } from '@elementor/editor-responsive';\nimport { getStylesSchema } from '@elementor/editor-styles';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { useStylesRerender } from '../hooks/use-styles-rerender';\nimport { createStylesInheritance } from '../styles-inheritance/create-styles-inheritance';\nimport {\n\ttype SnapshotPropValue,\n\ttype StylesInheritanceAPI,\n\ttype StylesInheritanceSnapshot,\n} from '../styles-inheritance/types';\nimport { useClassesProp } from './classes-prop-context';\nimport { useElement } from './element-context';\nimport { useStyle } from './style-context';\n\nconst Context = createContext< StylesInheritanceAPI | null >( null );\n\nexport function StyleInheritanceProvider( { children }: PropsWithChildren ) {\n\tconst styleDefs = useAppliedStyles();\n\n\tconst breakpointsTree = getBreakpointsTree();\n\n\tconst { getSnapshot, getInheritanceChain } = createStylesInheritance( styleDefs, breakpointsTree );\n\n\treturn <Context.Provider value={ { getSnapshot, getInheritanceChain } }>{ children }</Context.Provider>;\n}\n\nexport function useStylesInheritanceSnapshot(): StylesInheritanceSnapshot | null {\n\tconst context = useContext( Context );\n\tconst { meta } = useStyle();\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStylesInheritanceSnapshot must be used within a StyleInheritanceProvider' );\n\t}\n\n\tif ( ! meta ) {\n\t\treturn null;\n\t}\n\n\treturn context.getSnapshot( meta ) ?? null;\n}\n\nexport function useStylesInheritanceChain( path: string[] ): SnapshotPropValue[] {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStylesInheritanceChain must be used within a StyleInheritanceProvider' );\n\t}\n\n\tconst schema = getStylesSchema();\n\n\tconst topLevelPropType = schema?.[ path[ 0 ] ];\n\n\tconst snapshot = useStylesInheritanceSnapshot();\n\n\tif ( ! snapshot ) {\n\t\treturn [];\n\t}\n\n\treturn context.getInheritanceChain( snapshot, path, topLevelPropType );\n}\n\nconst useAppliedStyles = () => {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\tconst baseStyles = useBaseStyles();\n\n\tuseStylesRerender();\n\n\tconst classesProp = useElementSetting< ClassesPropValue >( element.id, currentClassesProp );\n\n\tconst appliedStyles = classesPropTypeUtil.extract( classesProp ) ?? [];\n\n\treturn stylesRepository.all().filter( ( style ) => [ ...baseStyles, ...appliedStyles ].includes( style.id ) );\n};\n\nconst useBaseStyles = () => {\n\tconst { elementType } = useElement();\n\tconst widgetsCache = getWidgetsCache();\n\tconst widgetCache = widgetsCache?.[ elementType.key ];\n\n\treturn Object.keys( widgetCache?.base_styles ?? {} );\n};\n","import {\n\tisEmpty,\n\tisTransformable,\n\ttype PropKey,\n\ttype PropType,\n\ttype PropValue,\n\ttype UnionPropType,\n} from '@elementor/editor-props';\nimport { type BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinition } from '@elementor/editor-styles';\n\nimport { getProviderByStyleId } from '../contexts/style-context';\nimport { createSnapshotsManager } from './create-snapshots-manager';\nimport { type BreakpointsStatesStyles, type StyleInheritanceMetaProps, type StylesInheritanceAPI } from './types';\nimport { getBreakpointKey, getStateKey } from './utils';\n\ntype ValidPropType = Exclude< PropType, UnionPropType >;\n\nexport function createStylesInheritance(\n\tstyleDefs: StyleDefinition[],\n\tbreakpointsRoot: BreakpointNode\n): StylesInheritanceAPI {\n\tconst styleVariantsByMeta = buildStyleVariantsByMetaMapping( styleDefs );\n\n\tconst getStyles = ( { breakpoint, state }: StyleInheritanceMetaProps ) =>\n\t\tstyleVariantsByMeta?.[ getBreakpointKey( breakpoint ) ]?.[ getStateKey( state ) ] ?? [];\n\n\treturn {\n\t\tgetSnapshot: createSnapshotsManager( getStyles, breakpointsRoot ),\n\t\tgetInheritanceChain: ( snapshot, path, topLevelPropType ) => {\n\t\t\tconst [ field, ...nextFields ] = path;\n\n\t\t\tlet inheritanceChain = snapshot[ field ] ?? [];\n\n\t\t\tif ( nextFields.length > 0 ) {\n\t\t\t\tconst filterPropType = getFilterPropType( topLevelPropType, nextFields );\n\n\t\t\t\tinheritanceChain = inheritanceChain\n\t\t\t\t\t.map( ( { value: styleValue, ...rest } ) => ( {\n\t\t\t\t\t\t...rest,\n\t\t\t\t\t\tvalue: getValueByPath( styleValue, nextFields, filterPropType ),\n\t\t\t\t\t} ) )\n\t\t\t\t\t.filter( ( { value: styleValue } ) => ! isEmpty( styleValue ) );\n\t\t\t}\n\n\t\t\treturn inheritanceChain;\n\t\t},\n\t};\n}\n\nfunction buildStyleVariantsByMetaMapping( styleDefs: StyleDefinition[] ): BreakpointsStatesStyles {\n\tconst breakpointStateSlots: BreakpointsStatesStyles = {};\n\n\tstyleDefs.forEach( ( styleDef ) => {\n\t\tconst provider = getProviderByStyleId( styleDef.id )?.getKey() ?? null;\n\n\t\t// iterate over each style definition's variants and place them in the corresponding breakpoint's base or state styles\n\t\tstyleDef.variants.forEach( ( variant ) => {\n\t\t\tconst { meta } = variant;\n\t\t\tconst { state, breakpoint } = meta;\n\n\t\t\tconst breakpointKey = getBreakpointKey( breakpoint );\n\t\t\tconst stateKey = getStateKey( state );\n\n\t\t\tif ( ! breakpointStateSlots[ breakpointKey ] ) {\n\t\t\t\tbreakpointStateSlots[ breakpointKey ] = {};\n\t\t\t}\n\n\t\t\tconst breakpointNode = breakpointStateSlots[ breakpointKey ];\n\n\t\t\tif ( ! breakpointNode[ stateKey ] ) {\n\t\t\t\tbreakpointNode[ stateKey ] = [];\n\t\t\t}\n\n\t\t\tbreakpointNode[ stateKey ].push( {\n\t\t\t\tstyle: styleDef,\n\t\t\t\tvariant,\n\t\t\t\tprovider,\n\t\t\t} );\n\t\t} );\n\t} );\n\n\treturn breakpointStateSlots;\n}\n\nfunction getValueByPath( value: PropValue, path: PropKey[], filterPropType: ValidPropType | null ): PropValue {\n\tif ( ! value || typeof value !== 'object' ) {\n\t\treturn null;\n\t}\n\n\tif ( shouldUseOriginalValue( filterPropType, value ) ) {\n\t\treturn value;\n\t}\n\n\treturn path.reduce( ( currentScope: PropValue, key: PropKey ): PropValue | null => {\n\t\tif ( ! currentScope ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( isTransformable( currentScope ) ) {\n\t\t\treturn currentScope.value?.[ key ] ?? null;\n\t\t}\n\n\t\tif ( typeof currentScope === 'object' ) {\n\t\t\treturn currentScope[ key as keyof typeof currentScope ] ?? null;\n\t\t}\n\n\t\treturn null;\n\t}, value );\n}\n\nfunction shouldUseOriginalValue( filterPropType: ValidPropType | null, value: PropValue ): boolean {\n\treturn !! filterPropType && isTransformable( value ) && filterPropType.key !== value.$$type;\n}\n\nconst getFilterPropType = ( propType: PropType, path: string[] ): ValidPropType | null => {\n\tif ( ! propType || propType.kind !== 'union' ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\tObject.values( propType.prop_types ).find( ( type: PropType ) => {\n\t\t\treturn !! path.reduce( ( currentScope: PropType | null, key: string ) => {\n\t\t\t\tif ( currentScope?.kind !== 'object' ) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst { shape } = currentScope;\n\n\t\t\t\tif ( shape[ key ] ) {\n\t\t\t\t\treturn shape[ key ];\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t}, type );\n\t\t} ) ?? null\n\t);\n};\n","import { filterEmptyValues } from '@elementor/editor-props';\nimport { type BreakpointId, type BreakpointNode } from '@elementor/editor-responsive';\nimport { type StyleDefinitionState } from '@elementor/editor-styles';\n\nimport {\n\ttype BreakpointsInheritancePath,\n\ttype BreakpointsStatesSnapshotsMapping,\n\ttype BreakpointStatesSlotsMapping,\n\ttype SnapshotPropValue,\n\ttype StyleInheritanceMetaProps,\n\ttype StylesInheritanceSnapshot,\n\ttype StylesInheritanceSnapshotGetter,\n\ttype StylesInheritanceSnapshotsSlot,\n\ttype StyleVariantDetails,\n} from './types';\nimport { DEFAULT_STATE, getBreakpointKey, getStateKey } from './utils';\n\nexport function createSnapshotsManager(\n\tgetStylesByMeta: ( meta: StyleInheritanceMetaProps ) => StyleVariantDetails[],\n\tbreakpointsRoot: BreakpointNode\n): StylesInheritanceSnapshotGetter {\n\tconst breakpointsInheritancePaths = makeBreakpointsInheritancePaths( breakpointsRoot );\n\tconst allBreakpointStatesSnapshots: BreakpointsStatesSnapshotsMapping = {};\n\n\tconst buildMissingSnapshotsForBreakpoint = (\n\t\tcurrentBreakpointId: BreakpointId | null,\n\t\tparentBreakpoint: BreakpointStatesSlotsMapping | undefined,\n\t\tstate: StyleDefinitionState\n\t) => {\n\t\tconst currentBreakpointKey = getBreakpointKey( currentBreakpointId );\n\t\tconst stateKey = getStateKey( state );\n\n\t\tif ( ! allBreakpointStatesSnapshots[ currentBreakpointKey ] ) {\n\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ] = {\n\t\t\t\t[ DEFAULT_STATE ]: buildStateSnapshotSlot(\n\t\t\t\t\tgetStylesByMeta( { breakpoint: currentBreakpointId, state: null } ),\n\t\t\t\t\tparentBreakpoint,\n\t\t\t\t\t{},\n\t\t\t\t\tnull\n\t\t\t\t),\n\t\t\t};\n\t\t}\n\n\t\tif ( state && ! allBreakpointStatesSnapshots[ currentBreakpointKey ][ stateKey ] ) {\n\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ][ stateKey ] = buildStateSnapshotSlot(\n\t\t\t\tgetStylesByMeta( { breakpoint: currentBreakpointId, state } ),\n\t\t\t\tparentBreakpoint,\n\t\t\t\tallBreakpointStatesSnapshots[ currentBreakpointKey ],\n\t\t\t\tstate\n\t\t\t);\n\t\t}\n\t};\n\n\treturn ( meta: StyleInheritanceMetaProps ) => {\n\t\tconst { breakpoint, state } = meta;\n\n\t\tconst stateKey = getStateKey( state );\n\t\tconst breakpointKey = getBreakpointKey( breakpoint );\n\n\t\tif ( allBreakpointStatesSnapshots[ breakpointKey ]?.[ stateKey ] ) {\n\t\t\t// snapshot was already made for this breakpoint+state\n\t\t\treturn allBreakpointStatesSnapshots[ breakpointKey ][ stateKey ].snapshot;\n\t\t}\n\n\t\tconst breakpointsChain = [ ...breakpointsInheritancePaths[ breakpointKey ], breakpoint ];\n\n\t\tbreakpointsChain.forEach( ( breakpointId, index ) => {\n\t\t\tconst parentBreakpointId = index > 0 ? breakpointsChain[ index - 1 ] : null;\n\n\t\t\tbuildMissingSnapshotsForBreakpoint(\n\t\t\t\tbreakpointId,\n\t\t\t\tparentBreakpointId ? allBreakpointStatesSnapshots[ parentBreakpointId ] : undefined,\n\t\t\t\tstate\n\t\t\t);\n\t\t} );\n\n\t\treturn allBreakpointStatesSnapshots[ breakpointKey ]?.[ stateKey ]?.snapshot;\n\t};\n}\n\n/**\n * builds a mapping of each breakpoint to its inheritance chain, e.g. -\n * \tdesktop: [],\n * \ttablet: [ 'desktop' ],\n * \tmobile: [ 'desktop', 'tablet' ]\n * @param root\n */\nfunction makeBreakpointsInheritancePaths( root: BreakpointNode ): BreakpointsInheritancePath {\n\tconst breakpoints: Partial< BreakpointsInheritancePath > = {};\n\n\tconst traverse = ( node: BreakpointNode, parent?: BreakpointId[] ) => {\n\t\tconst { id, children } = node;\n\n\t\tbreakpoints[ id ] = parent ? [ ...parent ] : [];\n\n\t\tchildren?.forEach( ( child ) => {\n\t\t\ttraverse( child, [ ...( breakpoints[ id ] ?? [] ), id ] );\n\t\t} );\n\t};\n\n\ttraverse( root );\n\n\treturn breakpoints as BreakpointsInheritancePath;\n}\n\n// creates a snapshot slot for a specific breakpoint and state\nfunction buildStateSnapshotSlot(\n\tstyles: StyleVariantDetails[],\n\tparentBreakpoint: BreakpointStatesSlotsMapping | undefined,\n\tcurrentBreakpoint: BreakpointStatesSlotsMapping,\n\tstate: StyleDefinitionState\n): StylesInheritanceSnapshotsSlot {\n\tconst initialSlot = buildInitialSnapshotFromStyles( styles );\n\n\tif ( ! state ) {\n\t\treturn {\n\t\t\tsnapshot: mergeSnapshots( [ initialSlot.snapshot, parentBreakpoint?.[ DEFAULT_STATE ]?.snapshot ] ),\n\t\t\tstateSpecificSnapshot: undefined,\n\t\t};\n\t}\n\n\treturn {\n\t\tsnapshot: mergeSnapshots( [\n\t\t\tinitialSlot.snapshot,\n\t\t\tparentBreakpoint?.[ state ]?.stateSpecificSnapshot,\n\t\t\tcurrentBreakpoint[ DEFAULT_STATE ]?.snapshot,\n\t\t] ),\n\t\tstateSpecificSnapshot: mergeSnapshots( [\n\t\t\tinitialSlot.stateSpecificSnapshot,\n\t\t\tparentBreakpoint?.[ state ]?.stateSpecificSnapshot,\n\t\t] ),\n\t};\n}\n\n// creates an initial snapshot based on the passed style variants only\nfunction buildInitialSnapshotFromStyles( styles: StyleVariantDetails[] ): StylesInheritanceSnapshotsSlot {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tstyles.forEach( ( styleData ) => {\n\t\tconst {\n\t\t\tvariant: { props },\n\t\t} = styleData;\n\n\t\tObject.entries( props ).forEach( ( [ key, value ] ) => {\n\t\t\tconst filteredValue = filterEmptyValues( value );\n\n\t\t\tif ( filteredValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( ! snapshot[ key ] ) {\n\t\t\t\tsnapshot[ key ] = [];\n\t\t\t}\n\n\t\t\tconst snapshotPropValue: SnapshotPropValue = {\n\t\t\t\t...styleData,\n\t\t\t\tvalue: filteredValue,\n\t\t\t};\n\n\t\t\tsnapshot[ key ].push( snapshotPropValue );\n\t\t} );\n\t} );\n\n\treturn {\n\t\tsnapshot,\n\t\tstateSpecificSnapshot: snapshot,\n\t};\n}\n\n// merge previous snapshot into the current one - first value of each prop is the strongest\nfunction mergeSnapshots( snapshots: ( StylesInheritanceSnapshot | undefined )[] ) {\n\tconst snapshot: StylesInheritanceSnapshot = {};\n\n\tsnapshots.filter( Boolean ).forEach( ( currentSnapshot ) =>\n\t\tObject.entries( currentSnapshot as StylesInheritanceSnapshot ).forEach( ( [ key, values ] ) => {\n\t\t\tif ( ! snapshot[ key ] ) {\n\t\t\t\tsnapshot[ key ] = [];\n\t\t\t}\n\n\t\t\t// concatenate the previous snapshot's prop values to the current ones\n\t\t\tsnapshot[ key ] = snapshot[ key ].concat( values );\n\t\t} )\n\t);\n\n\treturn snapshot;\n}\n","import { type BreakpointId } from '@elementor/editor-responsive';\nimport { type StyleDefinitionState, type StyleDefinitionVariant } from '@elementor/editor-styles';\n\nimport { type SnapshotPropValue } from './types';\n\nexport const DEFAULT_STATE = 'normal';\n\nconst DEFAULT_BREAKPOINT = 'desktop';\n\nexport const getStateKey = ( state: StyleDefinitionState ) => state ?? DEFAULT_STATE;\n\nexport const getBreakpointKey = ( breakpoint: BreakpointId | null ): BreakpointId => breakpoint ?? DEFAULT_BREAKPOINT;\n\nexport const getValueFromInheritanceChain = (\n\tinheritanceChain: SnapshotPropValue[],\n\tstyleId: string,\n\tmeta: StyleDefinitionVariant[ 'meta' ]\n) =>\n\tinheritanceChain.find(\n\t\t( {\n\t\t\tstyle,\n\t\t\tvariant: {\n\t\t\t\tmeta: { breakpoint, state },\n\t\t\t},\n\t\t} ) => style.id === styleId && breakpoint === meta.breakpoint && state === meta.state\n\t);\n","import { getElementStyles, useElementSetting } from '@elementor/editor-elements';\nimport { type ClassesPropValue, type PropKey } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\n\nimport { useElement } from '../contexts/element-context';\nimport { useStateByElement } from './use-state-by-element';\n\nexport function useActiveStyleDefId( classProp: PropKey ) {\n\tconst [ activeStyledDefId, setActiveStyledDefId ] = useStateByElement< StyleDefinitionID | null >(\n\t\t'active-style-id',\n\t\tnull\n\t);\n\n\tconst appliedClassesIds = useAppliedClassesIds( classProp )?.value || [];\n\n\tconst fallback = useFirstAppliedClass( appliedClassesIds );\n\n\tconst activeAndAppliedClassId = useActiveAndAppliedClassId( activeStyledDefId, appliedClassesIds );\n\treturn [ activeAndAppliedClassId || fallback?.id || null, setActiveStyledDefId ] as const;\n}\n\nfunction useFirstAppliedClass( appliedClassesIds: string[] ) {\n\tconst { element } = useElement();\n\tconst stylesDefs = getElementStyles( element.id ) ?? {};\n\n\treturn Object.values( stylesDefs ).find( ( styleDef ) => appliedClassesIds.includes( styleDef.id ) );\n}\n\nfunction useAppliedClassesIds( classProp: PropKey ) {\n\tconst { element } = useElement();\n\n\treturn useElementSetting< ClassesPropValue >( element.id, classProp );\n}\n\nfunction useActiveAndAppliedClassId( id: StyleDefinitionID | null, appliedClassesIds: string[] ) {\n\tconst isClassApplied = !! id && appliedClassesIds.includes( id );\n\n\treturn isClassApplied ? id : null;\n}\n","import * as React from 'react';\nimport { BackgroundControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SectionContent } from '../../section-content';\n\nconst BACKGROUND_LABEL = __( 'Background', 'elementor' );\n\nexport const BackgroundSection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<StylesField bind=\"background\" propDisplayName={ BACKGROUND_LABEL }>\n\t\t\t\t<BackgroundControl />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { ControlAdornmentsProvider, PropKeyProvider, PropProvider } from '@elementor/editor-controls';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nimport { useStylesInheritanceChain } from '../contexts/styles-inheritance-context';\nimport { getFieldIndicators } from '../field-indicators-registry';\nimport { useStylesField } from '../hooks/use-styles-field';\nimport { ConditionalField } from './conditional-field';\nimport { createTopLevelObjectType } from './create-top-level-object-type';\n\nexport type StylesFieldProps = {\n\tbind: PropKey;\n\tplaceholder?: PropValue;\n\tchildren: React.ReactNode;\n\tpropDisplayName: string;\n};\n\nexport const StylesField = ( { bind, propDisplayName, children }: StylesFieldProps ) => {\n\tconst stylesSchema = getStylesSchema();\n\n\tconst stylesInheritanceChain = useStylesInheritanceChain( [ bind ] );\n\n\tconst { value, canEdit, ...fields } = useStylesField( bind, { history: { propDisplayName } } );\n\n\tconst propType = createTopLevelObjectType( { schema: stylesSchema } );\n\n\tconst [ actualValue ] = stylesInheritanceChain;\n\n\tconst placeholderValues = {\n\t\t[ bind ]: actualValue?.value,\n\t};\n\n\tconst setValue = ( newValue: Record< string, PropValue > ) => {\n\t\tfields.setValue( newValue[ bind ] );\n\t};\n\n\treturn (\n\t\t<ControlAdornmentsProvider items={ getFieldIndicators( 'styles' ) }>\n\t\t\t<PropProvider\n\t\t\t\tpropType={ propType }\n\t\t\t\tvalue={ { [ bind ]: value } }\n\t\t\t\tsetValue={ setValue }\n\t\t\t\tplaceholder={ placeholderValues }\n\t\t\t\tisDisabled={ () => ! canEdit }\n\t\t\t>\n\t\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t\t<ConditionalField>{ children }</ConditionalField>\n\t\t\t\t</PropKeyProvider>\n\t\t\t</PropProvider>\n\t\t</ControlAdornmentsProvider>\n\t);\n};\n","import type { PropKey, PropValue } from '@elementor/editor-props';\n\nimport { useStylesFields } from './use-styles-fields';\n\nexport function useStylesField< T extends PropValue >(\n\tpropName: PropKey,\n\tmeta: { history: { propDisplayName: string } }\n): {\n\tvalue: T;\n\tsetValue: ( newValue: T ) => void;\n\tcanEdit?: boolean;\n} {\n\tconst { values, setValues, canEdit } = useStylesFields< { [ k: typeof propName ]: T } >( [ propName ] );\n\n\tconst value = values?.[ propName ] ?? null;\n\n\tconst setValue = ( newValue: T ) => {\n\t\tsetValues( { [ propName ]: newValue }, meta );\n\t};\n\n\treturn { value: value as T, setValue, canEdit };\n}\n","import { useBoundProp } from '@elementor/editor-controls';\nimport { isDependency, isDependencyMet, type PropKey, type PropType } from '@elementor/editor-props';\n\nimport { useStylesFields } from '../hooks/use-styles-fields';\n\nexport const ConditionalField: React.FC< {\n\tchildren: React.ReactNode;\n} > = ( { children } ) => {\n\tconst { propType } = useBoundProp();\n\n\tconst depList = getDependencies( propType );\n\n\tconst { values: depValues } = useStylesFields( depList );\n\n\tconst isHidden = ! isDependencyMet( propType?.dependencies, depValues ).isMet;\n\n\treturn isHidden ? null : children;\n};\n\nexport function getDependencies( propType?: PropType ): PropKey[] {\n\tif ( ! propType?.dependencies?.terms.length ) {\n\t\treturn [];\n\t}\n\n\treturn propType.dependencies.terms.flatMap( ( term ) => ( ! isDependency( term ) ? term.path : [] ) );\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\t'aria-label'?: string;\n} >;\n\nexport const SectionContent: FC< SectionContentProps > = ( { gap = 2, sx, children, 'aria-label': ariaLabel } ) => (\n\t<Stack gap={ gap } sx={ { ...sx } } aria-label={ ariaLabel }>\n\t\t{ children }\n\t</Stack>\n);\n","import * as React from 'react';\n\nimport { SectionContent } from '../../section-content';\nimport { BorderColorField } from './border-color-field';\nimport { BorderRadiusField } from './border-radius-field';\nimport { BorderStyleField } from './border-style-field';\nimport { BorderWidthField } from './border-width-field';\n\nexport const BorderSection = () => (\n\t<SectionContent>\n\t\t<BorderWidthField />\n\t\t<BorderColorField />\n\t\t<BorderStyleField />\n\t\t<BorderRadiusField />\n\t</SectionContent>\n);\n","import * as React from 'react';\nimport { ColorControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst BORDER_COLOR_LABEL = __( 'Border color', 'elementor' );\n\nexport const BorderColorField = () => (\n\t<StylesField bind=\"border-color\" propDisplayName={ BORDER_COLOR_LABEL }>\n\t\t<StylesFieldLayout label={ BORDER_COLOR_LABEL }>\n\t\t\t<ColorControl />\n\t\t</StylesFieldLayout>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { Grid, Stack, type Theme } from '@elementor/ui';\n\nimport { ControlLabel } from './control-label';\n\ntype StylesFieldLayoutProps = {\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tdirection?: 'row' | 'column';\n};\n\nexport const StylesFieldLayout = React.forwardRef< HTMLDivElement, StylesFieldLayoutProps >( ( props, ref ) => {\n\tconst { direction = 'row', children, label } = props;\n\n\tconst LayoutComponent = direction === 'row' ? Row : Column;\n\n\treturn <LayoutComponent label={ label } ref={ ref } children={ children } />;\n} );\n\nconst Row = React.forwardRef< HTMLDivElement, { label: string; children: React.ReactNode } >(\n\t( { label, children }, ref ) => {\n\t\treturn (\n\t\t\t<Grid\n\t\t\t\tcontainer\n\t\t\t\tgap={ 2 }\n\t\t\t\talignItems=\"center\"\n\t\t\t\tflexWrap=\"nowrap\"\n\t\t\t\tref={ ref }\n\t\t\t\taria-label={ `${ label } control` }\n\t\t\t>\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\n\t\t\t\t\titem\n\t\t\t\t\txs={ 6 }\n\t\t\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\t\t\twidth: `calc(50% - ${ theme.spacing( 2 ) })`,\n\t\t\t\t\t} ) }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t);\n\t}\n);\n\nconst Column = React.forwardRef< HTMLDivElement, { label: string; children: React.ReactNode } >(\n\t( { label, children }, ref ) => {\n\t\treturn (\n\t\t\t<Stack gap={ 0.75 } ref={ ref }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\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 EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderRadiusPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tBorderCornersIcon,\n\tRadiusBottomLeftIcon,\n\tRadiusBottomRightIcon,\n\tRadiusTopLeftIcon,\n\tRadiusTopRightIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\n\nconst BORDER_RADIUS_LABEL = __( 'Border radius', 'elementor' );\n\nconst StartStartIcon = withDirection( RadiusTopLeftIcon );\nconst StartEndIcon = withDirection( RadiusTopRightIcon );\nconst EndStartIcon = withDirection( RadiusBottomLeftIcon );\nconst EndEndIcon = withDirection( RadiusBottomRightIcon );\n\nconst getStartStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Top right', 'elementor' ) : __( 'Top left', 'elementor' );\nconst getStartEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Top left', 'elementor' ) : __( 'Top right', 'elementor' );\nconst getEndStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Bottom right', 'elementor' ) : __( 'Bottom left', 'elementor' );\nconst getEndEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Bottom left', 'elementor' ) : __( 'Bottom right', 'elementor' );\n\nconst getCorners = ( isSiteRtl: boolean ): EqualUnequalItems => [\n\t{\n\t\tlabel: getStartStartLabel( isSiteRtl ),\n\t\ticon: <StartStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'start-start',\n\t},\n\t{\n\t\tlabel: getStartEndLabel( isSiteRtl ),\n\t\ticon: <StartEndIcon fontSize={ 'tiny' } />,\n\t\tbind: 'start-end',\n\t},\n\t{\n\t\tlabel: getEndStartLabel( isSiteRtl ),\n\t\ticon: <EndStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'end-start',\n\t},\n\t{\n\t\tlabel: getEndEndLabel( isSiteRtl ),\n\t\ticon: <EndEndIcon fontSize={ 'tiny' } />,\n\t\tbind: 'end-end',\n\t},\n];\n\nexport const BorderRadiusField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<UiProviders>\n\t\t\t<StylesField bind={ 'border-radius' } propDisplayName={ BORDER_RADIUS_LABEL }>\n\t\t\t\t<EqualUnequalSizesControl\n\t\t\t\t\titems={ getCorners( isSiteRtl ) }\n\t\t\t\t\tlabel={ BORDER_RADIUS_LABEL }\n\t\t\t\t\ticon={ <BorderCornersIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\ttooltipLabel={ __( 'Adjust corners', 'elementor' ) }\n\t\t\t\t\tmultiSizePropTypeUtil={ borderRadiusPropTypeUtil }\n\t\t\t\t/>\n\t\t\t</StylesField>\n\t\t</UiProviders>\n\t);\n};\n","import { useTheme } from '@elementor/ui';\n\nimport { getElementorFrontendConfig } from '../sync/get-elementor-globals';\n\nexport function useDirection() {\n\tconst theme = useTheme();\n\n\tconst isUiRtl = 'rtl' === theme.direction,\n\t\tisSiteRtl = !! getElementorFrontendConfig()?.is_rtl;\n\n\treturn { isSiteRtl, isUiRtl };\n}\n","import { type ExtendedWindow } from './types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n\nexport const getElementorFrontendConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementorFrontend?.config ?? {};\n};\n","import * as React from 'react';\nimport { DirectionProvider, ThemeProvider } from '@elementor/ui';\n\nimport { useDirection } from '../../hooks/use-direction';\n\ninterface UiProvidersProps {\n\tchildren: React.ReactNode;\n}\n\nexport const UiProviders: React.FC< UiProvidersProps > = ( { children } ) => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>{ children }</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst BORDER_TYPE_LABEL = __( 'Border type', 'elementor' );\n\nconst borderStyles = [\n\t{ value: 'none', label: __( 'None', 'elementor' ) },\n\t{ value: 'solid', label: __( 'Solid', 'elementor' ) },\n\t{ value: 'dashed', label: __( 'Dashed', 'elementor' ) },\n\t{ value: 'dotted', label: __( 'Dotted', 'elementor' ) },\n\t{ value: 'double', label: __( 'Double', 'elementor' ) },\n\t{ value: 'groove', label: __( 'Groove', 'elementor' ) },\n\t{ value: 'ridge', label: __( 'Ridge', 'elementor' ) },\n\t{ value: 'inset', label: __( 'Inset', 'elementor' ) },\n\t{ value: 'outset', label: __( 'Outset', 'elementor' ) },\n];\n\nexport const BorderStyleField = () => (\n\t<StylesField bind=\"border-style\" propDisplayName={ BORDER_TYPE_LABEL }>\n\t\t<StylesFieldLayout label={ BORDER_TYPE_LABEL }>\n\t\t\t<SelectControl options={ borderStyles } />\n\t\t</StylesFieldLayout>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderWidthPropTypeUtil } from '@elementor/editor-props';\nimport { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\n\nconst BORDER_WIDTH_LABEL = __( 'Border width', 'elementor' );\n\nconst InlineStartIcon = withDirection( SideRightIcon );\nconst InlineEndIcon = withDirection( SideLeftIcon );\n\nconst getEdges = ( isSiteRtl: boolean ): EqualUnequalItems => [\n\t{\n\t\tlabel: __( 'Top', 'elementor' ),\n\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\tbind: 'block-start',\n\t},\n\t{\n\t\tlabel: isSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' ),\n\t\ticon: <InlineStartIcon fontSize={ 'tiny' } />,\n\t\tbind: 'inline-end',\n\t},\n\t{\n\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\tbind: 'block-end',\n\t},\n\t{\n\t\tlabel: isSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' ),\n\t\ticon: <InlineEndIcon fontSize={ 'tiny' } />,\n\t\tbind: 'inline-start',\n\t},\n];\n\nexport const BorderWidthField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<StylesField bind={ 'border-width' } propDisplayName={ BORDER_WIDTH_LABEL }>\n\t\t\t<EqualUnequalSizesControl\n\t\t\t\titems={ getEdges( isSiteRtl ) }\n\t\t\t\tlabel={ BORDER_WIDTH_LABEL }\n\t\t\t\ticon={ <SideAllIcon fontSize={ 'tiny' } /> }\n\t\t\t\ttooltipLabel={ __( 'Adjust borders', 'elementor' ) }\n\t\t\t\tmultiSizePropTypeUtil={ borderWidthPropTypeUtil }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport {\n\tBoxShadowRepeaterControl,\n\tFilterRepeaterControl,\n\tTransformRepeaterControl,\n\tTransitionRepeaterControl,\n} from '@elementor/editor-controls';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../../contexts/style-context';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { getRecentlyUsedList } from '../../../utils/get-recently-used-styles';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { BlendModeField } from './blend-mode-field';\nimport { OpacityControlField } from './opacity-control-field';\n\nconst BOX_SHADOW_LABEL = __( 'Box shadow', 'elementor' );\nconst FILTER_LABEL = __( 'Filters', 'elementor' );\nconst TRANSFORM_LABEL = __( 'Transform', 'elementor' );\nconst BACKDROP_FILTER_LABEL = __( 'Backdrop filters', 'elementor' );\nconst TRANSITIONS_LABEL = __( 'Transitions', 'elementor' );\n\nexport const EffectsSection = () => {\n\tconst { element } = useSelectedElement();\n\tconst { meta } = useStyle();\n\n\treturn (\n\t\t<SectionContent gap={ 1 }>\n\t\t\t<BlendModeField />\n\t\t\t<PanelDivider />\n\t\t\t<OpacityControlField />\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"box-shadow\" propDisplayName={ BOX_SHADOW_LABEL }>\n\t\t\t\t<BoxShadowRepeaterControl />\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"transform\" propDisplayName={ TRANSFORM_LABEL }>\n\t\t\t\t<TransformRepeaterControl />\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"transition\" propDisplayName={ TRANSITIONS_LABEL }>\n\t\t\t\t<TransitionRepeaterControl\n\t\t\t\t\tcurrentStyleState={ meta.state }\n\t\t\t\t\trecentlyUsedListGetter={ () => getRecentlyUsedList( element?.id ?? '' ) }\n\t\t\t\t/>\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"filter\" propDisplayName={ FILTER_LABEL }>\n\t\t\t\t<FilterRepeaterControl />\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind=\"backdrop-filter\" propDisplayName={ BACKDROP_FILTER_LABEL }>\n\t\t\t\t<FilterRepeaterControl filterPropName=\"backdrop-filter\" />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import { createPropsResolver, styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { getElementStyles } from '@elementor/editor-elements';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nexport const getRecentlyUsedList = async ( elementId: string ) => {\n\tif ( ! elementId ) {\n\t\treturn [];\n\t}\n\tconst resolver = createPropsResolver( {\n\t\ttransformers: styleTransformersRegistry,\n\t\tschema: getStylesSchema(),\n\t} );\n\n\tconst styles = getElementStyles( elementId ) ?? {};\n\tconst styleKeys = Object.keys( styles ?? {} );\n\tconst variants = styleKeys.map( ( key ) => styles?.[ key ]?.variants ?? [] );\n\n\tconst resolved = await Promise.all(\n\t\tvariants.flat().map( async ( variant ) => {\n\t\t\tconst result = await resolver( {\n\t\t\t\tprops: variant.props ?? {},\n\t\t\t\tschema: getStylesSchema(),\n\t\t\t} );\n\t\t\treturn Object.entries( result )\n\t\t\t\t.filter( ( [ , value ] ) => value !== null )\n\t\t\t\t.map( ( [ key ] ) => key );\n\t\t} )\n\t);\n\n\tconst propSet = new Set( resolved.flat() );\n\treturn Array.from( propSet );\n};\n","import * as React from 'react';\nimport { Divider } from '@elementor/ui';\n\nexport const PanelDivider = () => <Divider sx={ { my: 0.5 } } />;\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst BLEND_MODE_LABEL = __( 'Blend mode', 'elementor' );\n\nconst blendModeOptions = [\n\t{ label: __( 'Normal', 'elementor' ), value: 'normal' },\n\t{ label: __( 'Multiply', 'elementor' ), value: 'multiply' },\n\t{ label: __( 'Screen', 'elementor' ), value: 'screen' },\n\t{ label: __( 'Overlay', 'elementor' ), value: 'overlay' },\n\t{ label: __( 'Darken', 'elementor' ), value: 'darken' },\n\t{ label: __( 'Lighten', 'elementor' ), value: 'lighten' },\n\t{ label: __( 'Color dodge', 'elementor' ), value: 'color-dodge' },\n\t{ label: __( 'Color burn', 'elementor' ), value: 'color-burn' },\n\t{ label: __( 'Saturation', 'elementor' ), value: 'saturation' },\n\t{ label: __( 'Color', 'elementor' ), value: 'color' },\n\t{ label: __( 'Difference', 'elementor' ), value: 'difference' },\n\t{ label: __( 'Exclusion', 'elementor' ), value: 'exclusion' },\n\t{ label: __( 'Hue', 'elementor' ), value: 'hue' },\n\t{ label: __( 'Luminosity', 'elementor' ), value: 'luminosity' },\n\t{ label: __( 'Soft light', 'elementor' ), value: 'soft-light' },\n\t{ label: __( 'Hard light', 'elementor' ), value: 'hard-light' },\n];\n\nexport const BlendModeField = () => {\n\treturn (\n\t\t<StylesField bind=\"mix-blend-mode\" propDisplayName={ BLEND_MODE_LABEL }>\n\t\t\t<StylesFieldLayout label={ BLEND_MODE_LABEL }>\n\t\t\t\t<SelectControl options={ blendModeOptions } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst OPACITY_LABEL = __( 'Opacity', 'elementor' );\n\nexport const OpacityControlField = () => {\n\tconst rowRef = useRef< HTMLDivElement | null >( null );\n\n\treturn (\n\t\t<StylesField bind={ 'opacity' } propDisplayName={ OPACITY_LABEL }>\n\t\t\t<StylesFieldLayout ref={ rowRef } label={ OPACITY_LABEL }>\n\t\t\t\t<SizeControl units={ [ '%' ] } anchorRef={ rowRef } defaultUnit=\"%\" />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlFormLabel } from '@elementor/editor-controls';\nimport { useParentElement } from '@elementor/editor-elements';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../../contexts/element-context';\nimport { useComputedStyle } from '../../../hooks/use-computed-style';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { AlignContentField } from './align-content-field';\nimport { AlignItemsField } from './align-items-field';\nimport { AlignSelfChild } from './align-self-child-field';\nimport { DisplayField, useDisplayPlaceholderValue } from './display-field';\nimport { type FlexDirection, FlexDirectionField } from './flex-direction-field';\nimport { FlexOrderField } from './flex-order-field';\nimport { FlexSizeField } from './flex-size-field';\nimport { GapControlField } from './gap-control-field';\nimport { JustifyContentField } from './justify-content-field';\nimport { WrapField } from './wrap-field';\n\nconst DISPLAY_LABEL = __( 'Display', 'elementor' );\nconst FLEX_WRAP_LABEL = __( 'Flex wrap', 'elementor' );\n\nexport const LayoutSection = () => {\n\tconst { value: display } = useStylesField< StringPropValue >( 'display', {\n\t\thistory: { propDisplayName: DISPLAY_LABEL },\n\t} );\n\tconst displayPlaceholder = useDisplayPlaceholderValue();\n\tconst isDisplayFlex = shouldDisplayFlexFields( display, displayPlaceholder as StringPropValue );\n\tconst { element } = useElement();\n\tconst parent = useParentElement( element.id );\n\tconst parentStyle = useComputedStyle( parent?.id || null );\n\tconst parentStyleDirection = parentStyle?.flexDirection ?? 'row';\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<DisplayField />\n\t\t\t{ isDisplayFlex && <FlexFields /> }\n\t\t\t{ 'flex' === parentStyle?.display && <FlexChildFields parentStyleDirection={ parentStyleDirection } /> }\n\t\t</SectionContent>\n\t);\n};\n\nconst FlexFields = () => {\n\tconst { value: flexWrap } = useStylesField< StringPropValue >( 'flex-wrap', {\n\t\thistory: { propDisplayName: FLEX_WRAP_LABEL },\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<FlexDirectionField />\n\t\t\t<JustifyContentField />\n\t\t\t<AlignItemsField />\n\t\t\t<PanelDivider />\n\t\t\t<GapControlField />\n\t\t\t<WrapField />\n\t\t\t{ [ 'wrap', 'wrap-reverse' ].includes( flexWrap?.value as string ) && <AlignContentField /> }\n\t\t</>\n\t);\n};\n\nconst FlexChildFields = ( { parentStyleDirection }: { parentStyleDirection: string } ) => (\n\t<>\n\t\t<PanelDivider />\n\t\t<ControlFormLabel>{ __( 'Flex child', 'elementor' ) }</ControlFormLabel>\n\t\t<AlignSelfChild parentStyleDirection={ parentStyleDirection as FlexDirection } />\n\t\t<FlexOrderField />\n\t\t<FlexSizeField />\n\t</>\n);\n\nconst shouldDisplayFlexFields = ( display: StringPropValue | null, local: StringPropValue ) => {\n\tconst value = display?.value ?? local?.value;\n\n\tif ( ! value ) {\n\t\treturn false;\n\t}\n\n\treturn 'flex' === value || 'inline-flex' === value;\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent, windowEvent } from '@elementor/editor-v1-adapters';\n\nexport function useComputedStyle( elementId: string | null ) {\n\treturn useListenTo(\n\t\t[\n\t\t\twindowEvent( 'elementor/device-mode/change' ),\n\t\t\tcommandEndEvent( 'document/elements/reset-style' ),\n\t\t\tcommandEndEvent( 'document/elements/settings' ),\n\t\t\tcommandEndEvent( 'document/elements/paste-style' ),\n\t\t],\n\t\t() => {\n\t\t\tif ( ! elementId ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst element = window.elementor?.getContainer?.( elementId );\n\n\t\t\tif ( ! element?.view?.el ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst resp = window.getComputedStyle( element.view.el );\n\t\t\treturn resp;\n\t\t}\n\t);\n}\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst ALIGN_CONTENT_LABEL = __( 'Align content', 'elementor' );\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 0,\n\tdisableRotationForReversed: true,\n};\n\nconst options: ToggleButtonGroupItem< AlignContent >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignContentField = () => (\n\t<StylesField bind=\"align-content\" propDisplayName={ ALIGN_CONTENT_LABEL }>\n\t\t<UiProviders>\n\t\t\t<StylesFieldLayout label={ ALIGN_CONTENT_LABEL } direction=\"column\">\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</StylesFieldLayout>\n\t\t</UiProviders>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps, useTheme } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesField } from '../../../../hooks/use-styles-field';\nimport type { FlexDirection } from '../flex-direction-field';\n\ntype Props = {\n\ticon: React.JSX.ElementType;\n\tsize: ToggleButtonProps[ 'size' ];\n\tisClockwise?: boolean;\n\toffset?: number;\n\tdisableRotationForReversed?: boolean;\n};\n\nconst FLEX_DIRECTION_LABEL = __( 'Flex direction', 'elementor' );\n\nconst CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: 90,\n\t'row-reverse': 180,\n\t'column-reverse': 270,\n};\n\nconst COUNTER_CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: -90,\n\t'row-reverse': -180,\n\t'column-reverse': -270,\n};\n\nexport const RotatedIcon = ( {\n\ticon: Icon,\n\tsize,\n\tisClockwise = true,\n\toffset = 0,\n\tdisableRotationForReversed = false,\n}: Props ) => {\n\tconst rotate = useRef( useGetTargetAngle( isClockwise, offset, disableRotationForReversed ) );\n\n\trotate.current = useGetTargetAngle( isClockwise, offset, disableRotationForReversed, rotate );\n\n\treturn <Icon fontSize={ size } sx={ { transition: '.3s', rotate: `${ rotate.current }deg` } } />;\n};\n\nconst useGetTargetAngle = (\n\tisClockwise: boolean,\n\toffset: number,\n\tdisableRotationForReversed: boolean,\n\texistingRef?: React.MutableRefObject< number >\n) => {\n\tconst { value: direction } = useStylesField< StringPropValue >( 'flex-direction', {\n\t\thistory: { propDisplayName: FLEX_DIRECTION_LABEL },\n\t} );\n\tconst isRtl = 'rtl' === useTheme().direction;\n\tconst rotationMultiplier = isRtl ? -1 : 1;\n\tconst angleMap = isClockwise ? CLOCKWISE_ANGLES : COUNTER_CLOCKWISE_ANGLES;\n\n\tconst currentDirection = ( direction?.value as FlexDirection ) || 'row';\n\tconst currentAngle = existingRef ? existingRef.current * rotationMultiplier : angleMap[ currentDirection ] + offset;\n\tconst targetAngle = angleMap[ currentDirection ] + offset;\n\n\tconst diffToTargetAngle = ( targetAngle - currentAngle + 360 ) % 360;\n\tconst formattedDiff = ( ( diffToTargetAngle + 180 ) % 360 ) - 180;\n\n\tif ( disableRotationForReversed && [ 'row-reverse', 'column-reverse' ].includes( currentDirection ) ) {\n\t\treturn 0;\n\t}\n\n\treturn ( currentAngle + formattedDiff ) * rotationMultiplier;\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignItems = 'start' | 'center' | 'end' | 'stretch';\n\nconst ALIGN_ITEMS_LABEL = __( 'Align items', 'elementor' );\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 90,\n};\n\nconst options: ToggleButtonGroupItem< AlignItems >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ JustifyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignItemsField = () => {\n\treturn (\n\t\t<UiProviders>\n\t\t\t<StylesField bind=\"align-items\" propDisplayName={ ALIGN_ITEMS_LABEL }>\n\t\t\t\t<StylesFieldLayout label={ ALIGN_ITEMS_LABEL }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</StylesField>\n\t\t</UiProviders>\n\t);\n};\n","import * as React from 'react';\nimport { ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { type ToggleButtonProps, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { type FlexDirection } from './flex-direction-field';\nimport { RotatedIcon } from './utils/rotated-icon';\n\nconst ALIGN_SELF_LABEL = __( 'Align self', 'elementor' );\n\nconst ALIGN_SELF_CHILD_OFFSET_MAP: Record< FlexDirection, number > = {\n\trow: 90,\n\t'row-reverse': 90,\n\tcolumn: 0,\n\t'column-reverse': 0,\n};\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n};\n\nconst getOptions = ( parentStyleDirection: FlexDirection ) => [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ StartIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ CenterIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ EndIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size }: { size: ToggleButtonProps[ 'size' ] } ) => (\n\t\t\t<RotatedIcon\n\t\t\t\ticon={ JustifyIcon }\n\t\t\t\tsize={ size }\n\t\t\t\toffset={ ALIGN_SELF_CHILD_OFFSET_MAP[ parentStyleDirection ] }\n\t\t\t\t{ ...iconProps }\n\t\t\t/>\n\t\t),\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignSelfChild = ( { parentStyleDirection }: { parentStyleDirection: FlexDirection } ) => (\n\t<StylesField bind=\"align-self\" propDisplayName={ ALIGN_SELF_LABEL }>\n\t\t<UiProviders>\n\t\t\t<StylesFieldLayout label={ ALIGN_SELF_LABEL }>\n\t\t\t\t<ToggleControl options={ getOptions( parentStyleDirection ) } />\n\t\t\t</StylesFieldLayout>\n\t\t</UiProviders>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesInheritanceChain } from '../../../contexts/styles-inheritance-context';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Displays = 'block' | 'flex' | 'inline-block' | 'inline-flex' | 'none';\n\nconst DISPLAY_LABEL = __( 'Display', 'elementor' );\n\nconst displayFieldItems: ToggleButtonGroupItem< Displays >[] = [\n\t{\n\t\tvalue: 'block',\n\t\trenderContent: () => __( 'Block', 'elementor' ),\n\t\tlabel: __( 'Block', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex',\n\t\trenderContent: () => __( 'Flex', 'elementor' ),\n\t\tlabel: __( 'Flex', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'inline-block',\n\t\trenderContent: () => __( 'In-blk', 'elementor' ),\n\t\tlabel: __( 'Inline-block', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'none',\n\t\trenderContent: () => __( 'None', 'elementor' ),\n\t\tlabel: __( 'None', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'inline-flex',\n\t\trenderContent: () => __( 'In-flx', 'elementor' ),\n\t\tlabel: __( 'Inline-flex', 'elementor' ),\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const DisplayField = () => {\n\tconst placeholder = useDisplayPlaceholderValue();\n\n\treturn (\n\t\t<StylesField bind=\"display\" propDisplayName={ DISPLAY_LABEL } placeholder={ placeholder }>\n\t\t\t<StylesFieldLayout label={ DISPLAY_LABEL } direction=\"column\">\n\t\t\t\t<ToggleControl options={ displayFieldItems } maxItems={ 4 } fullWidth={ true } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n\n// TODO - placing this logic deliberately here, and will be removed once applied automatically to all style fields as part of ED-18491\nexport const useDisplayPlaceholderValue = () => useStylesInheritanceChain( [ 'display' ] )[ 0 ]?.value ?? undefined;\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nexport type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\nconst FLEX_DIRECTION_LABEL = __( 'Direction', 'elementor' );\n\nconst options: ToggleButtonGroupItem< FlexDirection >[] = [\n\t{\n\t\tvalue: 'row',\n\t\tlabel: __( 'Row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst StartIcon = withDirection( ArrowRightIcon );\n\t\t\treturn <StartIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column',\n\t\tlabel: __( 'Column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'row-reverse',\n\t\tlabel: __( 'Reversed row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst EndIcon = withDirection( ArrowLeftIcon );\n\t\t\treturn <EndIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column-reverse',\n\t\tlabel: __( 'Reversed column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexDirectionField = () => {\n\treturn (\n\t\t<StylesField bind=\"flex-direction\" propDisplayName={ FLEX_DIRECTION_LABEL }>\n\t\t\t<UiProviders>\n\t\t\t\t<StylesFieldLayout label={ FLEX_DIRECTION_LABEL }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</UiProviders>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport {\n\tControlToggleButtonGroup,\n\tNumberControl,\n\ttype ToggleButtonGroupItem,\n\tuseBoundProp,\n} from '@elementor/editor-controls';\nimport { type NumberPropValue } from '@elementor/editor-props';\nimport { ArrowDownSmallIcon, ArrowUpSmallIcon, PencilIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { ControlLabel } from '../../control-label';\nimport { SectionContent } from '../../section-content';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype GroupControlItemOption = 'first' | 'last' | 'custom';\n\nconst ORDER_LABEL = __( 'Order', 'elementor' );\n\nexport const FIRST_DEFAULT_VALUE = -99999;\nexport const LAST_DEFAULT_VALUE = 99999;\n\nconst FIRST = 'first';\nconst LAST = 'last';\nconst CUSTOM = 'custom';\n\nconst orderValueMap = {\n\t[ FIRST ]: FIRST_DEFAULT_VALUE,\n\t[ LAST ]: LAST_DEFAULT_VALUE,\n};\n\nconst items: ToggleButtonGroupItem< GroupControlItemOption >[] = [\n\t{\n\t\tvalue: FIRST,\n\t\tlabel: __( 'First', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: LAST,\n\t\tlabel: __( 'Last', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon 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 FlexOrderField = () => {\n\treturn (\n\t\t<StylesField bind=\"order\" propDisplayName={ ORDER_LABEL }>\n\t\t\t<UiProviders>\n\t\t\t\t<SectionContent>\n\t\t\t\t\t<FlexOrderFieldContent />\n\t\t\t\t</SectionContent>\n\t\t\t</UiProviders>\n\t\t</StylesField>\n\t);\n};\n\nfunction FlexOrderFieldContent() {\n\tconst {\n\t\tvalue: order,\n\t\tsetValue: setOrder,\n\t\tcanEdit,\n\t} = useStylesField< NumberPropValue | null >( 'order', {\n\t\thistory: { propDisplayName: ORDER_LABEL },\n\t} );\n\n\tconst { placeholder } = useBoundProp();\n\tconst placeholderValue = placeholder as NumberPropValue;\n\n\tconst currentGroup = useMemo( () => getGroupControlValue( order?.value ?? null ), [ order ] );\n\n\tconst [ activeGroup, setActiveGroup ] = useState( currentGroup );\n\tconst [ customLocked, setCustomLocked ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( ! customLocked ) {\n\t\t\tsetActiveGroup( currentGroup );\n\t\t}\n\t}, [ currentGroup, customLocked ] );\n\n\tuseEffect( () => {\n\t\tif ( order === null ) {\n\t\t\tsetCustomLocked( false );\n\t\t}\n\t}, [ order ] );\n\n\tconst groupPlaceholder = getGroupControlValue( placeholderValue?.value ?? null );\n\n\tconst handleToggleButtonChange = ( group: GroupControlItemOption | null ) => {\n\t\tsetActiveGroup( group );\n\t\tsetCustomLocked( group === CUSTOM );\n\n\t\tif ( CUSTOM === group ) {\n\t\t\tsetOrder( { $$type: 'number', value: null } );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( FIRST === group ) {\n\t\t\tsetOrder( { $$type: 'number', value: orderValueMap[ group ] } );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( LAST === group ) {\n\t\t\tsetOrder( { $$type: 'number', value: orderValueMap[ group ] } );\n\t\t\treturn;\n\t\t}\n\n\t\tsetOrder( null );\n\t};\n\n\tconst isCustomVisible = CUSTOM === activeGroup || CUSTOM === groupPlaceholder;\n\tconst orderPlaceholder = CUSTOM === groupPlaceholder ? String( placeholderValue?.value ?? null ) : '';\n\n\treturn (\n\t\t<>\n\t\t\t<StylesFieldLayout label={ ORDER_LABEL }>\n\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\titems={ items }\n\t\t\t\t\tvalue={ activeGroup }\n\t\t\t\t\tonChange={ handleToggleButtonChange }\n\t\t\t\t\texclusive={ true }\n\t\t\t\t\tplaceholder={ groupPlaceholder }\n\t\t\t\t\tdisabled={ ! canEdit }\n\t\t\t\t/>\n\t\t\t</StylesFieldLayout>\n\t\t\t{ isCustomVisible && (\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>{ __( 'Custom order', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\tmin={ FIRST_DEFAULT_VALUE + 1 }\n\t\t\t\t\t\t\tmax={ LAST_DEFAULT_VALUE - 1 }\n\t\t\t\t\t\t\tshouldForceInt={ true }\n\t\t\t\t\t\t\tplaceholder={ orderPlaceholder }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nconst getGroupControlValue = ( order: number | null ): GroupControlItemOption | null => {\n\tif ( LAST_DEFAULT_VALUE === order ) {\n\t\treturn LAST;\n\t}\n\n\tif ( FIRST_DEFAULT_VALUE === order ) {\n\t\treturn FIRST;\n\t}\n\n\tif ( null !== order ) {\n\t\treturn CUSTOM;\n\t}\n\n\treturn null;\n};\n","import * as React from 'react';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n\tControlToggleButtonGroup,\n\tNumberControl,\n\tPropKeyProvider,\n\tPropProvider,\n\tSizeControl,\n\ttype ToggleButtonGroupItem,\n\tuseBoundProp,\n} from '@elementor/editor-controls';\nimport { flexPropTypeUtil, type FlexPropValue, numberPropTypeUtil, sizePropTypeUtil } from '@elementor/editor-props';\nimport { ExpandIcon, PencilIcon, ShrinkIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { SectionContent } from '../../section-content';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype GroupItem = 'flex-grow' | 'flex-shrink' | 'custom';\n\nconst FLEX_SIZE_LABEL = __( 'Flex Size', 'elementor' );\n\nconst DEFAULT = 1;\n\nconst items: ToggleButtonGroupItem< GroupItem >[] = [\n\t{\n\t\tvalue: 'flex-grow',\n\t\tlabel: __( 'Grow', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ExpandIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex-shrink',\n\t\tlabel: __( 'Shrink', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ShrinkIcon 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 FlexSizeField = () => {\n\treturn (\n\t\t<UiProviders>\n\t\t\t<SectionContent>\n\t\t\t\t<StylesField bind=\"flex\" propDisplayName={ FLEX_SIZE_LABEL }>\n\t\t\t\t\t<FlexSizeFieldContent />\n\t\t\t\t</StylesField>\n\t\t\t</SectionContent>\n\t\t</UiProviders>\n\t);\n};\n\nconst FlexSizeFieldContent = () => {\n\tconst { value, setValue, canEdit } = useStylesField< FlexPropValue >( 'flex', {\n\t\thistory: { propDisplayName: FLEX_SIZE_LABEL },\n\t} );\n\n\tconst { placeholder } = useBoundProp();\n\n\tconst flexValues = extractFlexValues( value );\n\n\tconst currentGroup = useMemo( () => getActiveGroup( flexValues ), [ flexValues ] );\n\n\tconst [ activeGroup, setActiveGroup ] = useState( currentGroup );\n\tconst [ customLocked, setCustomLocked ] = useState( false );\n\n\tuseEffect( () => {\n\t\tif ( ! customLocked ) {\n\t\t\tsetActiveGroup( currentGroup );\n\t\t}\n\t}, [ currentGroup, customLocked ] );\n\n\tuseEffect( () => {\n\t\tif ( value === null ) {\n\t\t\tsetCustomLocked( false );\n\t\t}\n\t}, [ value ] );\n\n\tconst onChangeGroup = ( group: GroupItem | null = null ) => {\n\t\tsetActiveGroup( group );\n\t\tsetCustomLocked( group === 'custom' );\n\n\t\tconst newFlexValue = createFlexValueForGroup( group, value );\n\n\t\tsetValue( newFlexValue as FlexPropValue );\n\t};\n\n\tconst groupPlaceholder = getActiveGroup( extractFlexValues( placeholder as FlexPropValue | null ) );\n\n\tconst isCustomVisible = 'custom' === activeGroup || 'custom' === groupPlaceholder;\n\n\treturn (\n\t\t<>\n\t\t\t<StylesFieldLayout label={ FLEX_SIZE_LABEL }>\n\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\tvalue={ activeGroup ?? null }\n\t\t\t\t\tplaceholder={ groupPlaceholder ?? null }\n\t\t\t\t\tonChange={ onChangeGroup }\n\t\t\t\t\tdisabled={ ! canEdit }\n\t\t\t\t\titems={ items }\n\t\t\t\t\texclusive={ true }\n\t\t\t\t/>\n\t\t\t</StylesFieldLayout>\n\t\t\t{ isCustomVisible && <FlexCustomField /> }\n\t\t</>\n\t);\n};\n\nfunction extractFlexValues( source: FlexPropValue | null ) {\n\treturn {\n\t\tgrow: source?.value?.flexGrow?.value ?? null,\n\t\tshrink: source?.value?.flexShrink?.value ?? null,\n\t\tbasis: source?.value?.flexBasis?.value ?? null,\n\t};\n}\n\nconst createFlexValueForGroup = ( group: GroupItem | null, flexValue: FlexPropValue | null ): FlexPropValue | null => {\n\tif ( ! group ) {\n\t\treturn null;\n\t}\n\n\tif ( group === 'flex-grow' ) {\n\t\treturn flexPropTypeUtil.create( {\n\t\t\tflexGrow: numberPropTypeUtil.create( DEFAULT ),\n\t\t\tflexShrink: numberPropTypeUtil.create( 0 ),\n\t\t\tflexBasis: sizePropTypeUtil.create( { unit: 'auto', size: '' } ),\n\t\t} );\n\t}\n\n\tif ( group === 'flex-shrink' ) {\n\t\treturn flexPropTypeUtil.create( {\n\t\t\tflexGrow: numberPropTypeUtil.create( 0 ),\n\t\t\tflexShrink: numberPropTypeUtil.create( DEFAULT ),\n\t\t\tflexBasis: sizePropTypeUtil.create( { unit: 'auto', size: '' } ),\n\t\t} );\n\t}\n\n\tif ( group === 'custom' ) {\n\t\tif ( flexValue ) {\n\t\t\treturn flexValue;\n\t\t}\n\t\treturn flexPropTypeUtil.create( {\n\t\t\tflexGrow: null,\n\t\t\tflexShrink: null,\n\t\t\tflexBasis: null,\n\t\t} );\n\t}\n\n\treturn null;\n};\n\nconst FlexCustomField = () => {\n\tconst flexBasisRowRef = useRef< HTMLDivElement >( null );\n\tconst context = useBoundProp( flexPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...context }>\n\t\t\t<>\n\t\t\t\t<StylesFieldLayout label={ __( 'Grow', 'elementor' ) }>\n\t\t\t\t\t<PropKeyProvider bind=\"flexGrow\">\n\t\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</StylesFieldLayout>\n\t\t\t\t<StylesFieldLayout label={ __( 'Shrink', 'elementor' ) }>\n\t\t\t\t\t<PropKeyProvider bind=\"flexShrink\">\n\t\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</StylesFieldLayout>\n\t\t\t\t<StylesFieldLayout label={ __( 'Basis', 'elementor' ) } ref={ flexBasisRowRef }>\n\t\t\t\t\t<PropKeyProvider bind=\"flexBasis\">\n\t\t\t\t\t\t<SizeControl extendedOptions={ [ 'auto' ] } anchorRef={ flexBasisRowRef } />\n\t\t\t\t\t</PropKeyProvider>\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</>\n\t\t</PropProvider>\n\t);\n};\n\nconst getActiveGroup = ( {\n\tgrow,\n\tshrink,\n\tbasis,\n}: {\n\tgrow: number | null;\n\tshrink: number | null;\n\tbasis: { size: number; unit: string } | string | null;\n} ): GroupItem | null => {\n\tif ( null === grow && null === shrink && ! basis ) {\n\t\treturn null;\n\t}\n\n\tconst isAutoBasis = basis === null || ( typeof basis === 'object' && basis.unit === 'auto' );\n\n\tif ( basis && ! isAutoBasis ) {\n\t\treturn 'custom';\n\t}\n\n\tif ( grow === DEFAULT && ( shrink === null || shrink === 0 ) && isAutoBasis ) {\n\t\treturn 'flex-grow';\n\t}\n\n\tif ( shrink === DEFAULT && ( grow === null || grow === 0 ) && isAutoBasis ) {\n\t\treturn 'flex-shrink';\n\t}\n\n\treturn 'custom';\n};\n","import * as React from 'react';\nimport { GapControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst GAPS_LABEL = __( 'Gaps', 'elementor' );\n\nexport const GapControlField = () => {\n\treturn (\n\t\t<StylesField bind={ 'gap' } propDisplayName={ GAPS_LABEL }>\n\t\t\t<GapControl label={ GAPS_LABEL } />\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype JustifyContent = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst JUSTIFY_CONTENT_LABEL = __( 'Justify content', 'elementor' );\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: true,\n\toffset: -90,\n};\n\nconst options: ToggleButtonGroupItem< JustifyContent >[] = [\n\t{\n\t\tvalue: 'flex-start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex-end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const JustifyContentField = () => (\n\t<StylesField bind=\"justify-content\" propDisplayName={ JUSTIFY_CONTENT_LABEL }>\n\t\t<UiProviders>\n\t\t\t<StylesFieldLayout label={ JUSTIFY_CONTENT_LABEL } direction=\"column\">\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</StylesFieldLayout>\n\t\t</UiProviders>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowBackIcon, ArrowForwardIcon, ArrowRightIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\nconst FLEX_WRAP_LABEL = __( 'Wrap', 'elementor' );\n\nconst options: ToggleButtonGroupItem< FlexWrap >[] = [\n\t{\n\t\tvalue: 'nowrap',\n\t\tlabel: __( 'No wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowRightIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap',\n\t\tlabel: __( 'Wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBackIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap-reverse',\n\t\tlabel: __( 'Reversed wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowForwardIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const WrapField = () => {\n\treturn (\n\t\t<StylesField bind=\"flex-wrap\" propDisplayName={ FLEX_WRAP_LABEL }>\n\t\t\t<UiProviders>\n\t\t\t\t<StylesFieldLayout label={ FLEX_WRAP_LABEL }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</UiProviders>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { useSessionStorage } from '@elementor/session';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStyle } from '../../../contexts/style-context';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { useStylesFields } from '../../../hooks/use-styles-fields';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { DimensionsField } from './dimensions-field';\nimport { OffsetField } from './offset-field';\nimport { PositionField } from './position-field';\nimport { ZIndexField } from './z-index-field';\n\ntype DimensionValue =\n\t| {\n\t\t\t$$type: 'size';\n\t\t\tvalue: number;\n\t }\n\t| undefined\n\t| null;\n\ntype DimensionsValues = {\n\t'inset-block-start': DimensionValue;\n\t'inset-block-end': DimensionValue;\n\t'inset-inline-start': DimensionValue;\n\t'inset-inline-end': DimensionValue;\n};\n\nconst POSITION_LABEL = __( 'Position', 'elementor' );\nconst DIMENSIONS_LABEL = __( 'Dimensions', 'elementor' );\n\nexport const PositionSection = () => {\n\tconst { value: positionValue } = useStylesField< StringPropValue >( 'position', {\n\t\thistory: { propDisplayName: POSITION_LABEL },\n\t} );\n\tconst { values: dimensions, setValues: setDimensions } = useStylesFields< DimensionsValues >( [\n\t\t'inset-block-start',\n\t\t'inset-block-end',\n\t\t'inset-inline-start',\n\t\t'inset-inline-end',\n\t] );\n\n\tconst [ dimensionsValuesFromHistory, updateDimensionsHistory, clearDimensionsHistory ] = usePersistDimensions();\n\n\tconst onPositionChange = ( newPosition: string | null, previousPosition: string | null | undefined ) => {\n\t\tconst meta = { history: { propDisplayName: DIMENSIONS_LABEL } };\n\n\t\tif ( newPosition === 'static' ) {\n\t\t\tif ( dimensions ) {\n\t\t\t\tupdateDimensionsHistory( dimensions );\n\t\t\t\tsetDimensions(\n\t\t\t\t\t{\n\t\t\t\t\t\t'inset-block-start': undefined,\n\t\t\t\t\t\t'inset-block-end': undefined,\n\t\t\t\t\t\t'inset-inline-start': undefined,\n\t\t\t\t\t\t'inset-inline-end': undefined,\n\t\t\t\t\t},\n\t\t\t\t\tmeta\n\t\t\t\t);\n\t\t\t}\n\t\t} else if ( previousPosition === 'static' ) {\n\t\t\tif ( dimensionsValuesFromHistory ) {\n\t\t\t\tsetDimensions( dimensionsValuesFromHistory, meta );\n\t\t\t\tclearDimensionsHistory();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst isNotStatic = positionValue && positionValue?.value !== 'static';\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<PositionField onChange={ onPositionChange } />\n\t\t\t{ isNotStatic ? (\n\t\t\t\t<>\n\t\t\t\t\t<DimensionsField />\n\t\t\t\t\t<ZIndexField />\n\t\t\t\t</>\n\t\t\t) : null }\n\n\t\t\t<PanelDivider />\n\t\t\t<OffsetField />\n\t\t</SectionContent>\n\t);\n};\n\nconst usePersistDimensions = () => {\n\tconst { id: styleDefID, meta } = useStyle();\n\tconst styleVariantPath = `styles/${ styleDefID }/${ meta.breakpoint || 'desktop' }/${ meta.state || 'null' }`;\n\tconst dimensionsPath = `${ styleVariantPath }/dimensions`;\n\n\treturn useSessionStorage< DimensionsValues >( dimensionsPath );\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { ControlLabel } from '../../control-label';\nimport { RotatedIcon } from '../layout-section/utils/rotated-icon';\n\ntype Side = 'inset-inline-start' | 'inset-inline-end' | 'inset-block-start' | 'inset-block-end';\n\nconst InlineStartIcon = withDirection( SideLeftIcon );\nconst InlineEndIcon = withDirection( SideRightIcon );\n\nconst sideIcons = {\n\t'inset-block-start': <SideTopIcon fontSize={ 'tiny' } />,\n\t'inset-block-end': <SideBottomIcon fontSize={ 'tiny' } />,\n\t'inset-inline-start': <RotatedIcon icon={ InlineStartIcon } size=\"tiny\" />,\n\t'inset-inline-end': <RotatedIcon icon={ InlineEndIcon } size=\"tiny\" />,\n};\n\nconst getInlineStartLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Right', 'elementor' ) : __( 'Left', 'elementor' );\n\nconst getInlineEndLabel = ( isSiteRtl: boolean ) =>\n\tisSiteRtl ? __( 'Left', 'elementor' ) : __( 'Right', 'elementor' );\n\nexport const DimensionsField = () => {\n\tconst { isSiteRtl } = useDirection();\n\tconst rowRefs = [ useRef< HTMLDivElement >( null ), useRef< HTMLDivElement >( null ) ];\n\n\treturn (\n\t\t<UiProviders>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ rowRefs[ 0 ] }>\n\t\t\t\t<DimensionField side=\"inset-block-start\" label={ __( 'Top', 'elementor' ) } rowRef={ rowRefs[ 0 ] } />\n\t\t\t\t<DimensionField\n\t\t\t\t\tside=\"inset-inline-end\"\n\t\t\t\t\tlabel={ getInlineEndLabel( isSiteRtl ) }\n\t\t\t\t\trowRef={ rowRefs[ 0 ] }\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 } flexWrap=\"nowrap\" ref={ rowRefs[ 1 ] }>\n\t\t\t\t<DimensionField side=\"inset-block-end\" label={ __( 'Bottom', 'elementor' ) } rowRef={ rowRefs[ 1 ] } />\n\t\t\t\t<DimensionField\n\t\t\t\t\tside=\"inset-inline-start\"\n\t\t\t\t\tlabel={ getInlineStartLabel( isSiteRtl ) }\n\t\t\t\t\trowRef={ rowRefs[ 1 ] }\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t</UiProviders>\n\t);\n};\n\nconst DimensionField = ( {\n\tside,\n\tlabel,\n\trowRef,\n}: {\n\tside: Side;\n\tlabel: string;\n\trowRef: React.RefObject< HTMLDivElement >;\n} ) => (\n\t<StylesField bind={ side } propDisplayName={ label }>\n\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<SizeControl\n\t\t\t\t\tstartIcon={ sideIcons[ side ] }\n\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\tanchorRef={ rowRef }\n\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type LengthUnit, SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst OFFSET_LABEL = __( 'Anchor offset', 'elementor' );\n\nconst UNITS: LengthUnit[] = [ 'px', 'em', 'rem', 'vw', 'vh' ];\n\nexport const OffsetField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"scroll-margin-top\" propDisplayName={ OFFSET_LABEL }>\n\t\t\t<StylesFieldLayout label={ OFFSET_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl units={ UNITS } anchorRef={ rowRef } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst POSITION_LABEL = __( 'Position', 'elementor' );\n\nconst positionOptions = [\n\t{ label: __( 'Static', 'elementor' ), value: 'static' },\n\t{ label: __( 'Relative', 'elementor' ), value: 'relative' },\n\t{ label: __( 'Absolute', 'elementor' ), value: 'absolute' },\n\t{ label: __( 'Fixed', 'elementor' ), value: 'fixed' },\n\t{ label: __( 'Sticky', 'elementor' ), value: 'sticky' },\n];\n\ntype Props = {\n\tonChange?: ( newValue: string | null, previousValue: string | null | undefined ) => void;\n};\n\nexport const PositionField = ( { onChange }: Props ) => {\n\treturn (\n\t\t<StylesField bind=\"position\" propDisplayName={ POSITION_LABEL }>\n\t\t\t<StylesFieldLayout label={ POSITION_LABEL }>\n\t\t\t\t<SelectControl options={ positionOptions } onChange={ onChange } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { NumberControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst Z_INDEX_LABEL = __( 'Z-index', 'elementor' );\n\nexport const ZIndexField = () => {\n\treturn (\n\t\t<StylesField bind=\"z-index\" propDisplayName={ Z_INDEX_LABEL }>\n\t\t\t<StylesFieldLayout label={ Z_INDEX_LABEL }>\n\t\t\t\t<NumberControl />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type RefObject, useRef } from 'react';\nimport { AspectRatioControl, type ExtendedOption, PositionControl, SizeControl } from '@elementor/editor-controls';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField, type StylesFieldProps } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { StyleTabCollapsibleContent } from '../../style-tab-collapsible-content';\nimport { ObjectFitField } from './object-fit-field';\nimport { OverflowField } from './overflow-field';\n\nconst CssSizeProps = [\n\t[\n\t\t{\n\t\t\tbind: 'width',\n\t\t\tlabel: __( 'Width', 'elementor' ),\n\t\t},\n\t\t{\n\t\t\tbind: 'height',\n\t\t\tlabel: __( 'Height', 'elementor' ),\n\t\t},\n\t],\n\t[\n\t\t{\n\t\t\tbind: 'min-width',\n\t\t\tlabel: __( 'Min width', 'elementor' ),\n\t\t},\n\t\t{\n\t\t\tbind: 'min-height',\n\t\t\tlabel: __( 'Min height', 'elementor' ),\n\t\t},\n\t],\n\t[\n\t\t{\n\t\t\tbind: 'max-width',\n\t\t\tlabel: __( 'Max width', 'elementor' ),\n\t\t},\n\t\t{\n\t\t\tbind: 'max-height',\n\t\t\tlabel: __( 'Max height', 'elementor' ),\n\t\t},\n\t],\n];\n\nconst ASPECT_RATIO_LABEL = __( 'Aspect Ratio', 'elementor' );\n\nexport const SizeSection = () => {\n\tconst gridRowRefs: RefObject< HTMLDivElement >[] = [ useRef( null ), useRef( null ), useRef( null ) ];\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t{ CssSizeProps.map( ( row, rowIndex ) => (\n\t\t\t\t<Grid key={ rowIndex } container gap={ 2 } flexWrap=\"nowrap\" ref={ gridRowRefs[ rowIndex ] }>\n\t\t\t\t\t{ row.map( ( props ) => (\n\t\t\t\t\t\t<Grid item xs={ 6 } key={ props.bind }>\n\t\t\t\t\t\t\t<SizeField { ...props } rowRef={ gridRowRefs[ rowIndex ] } extendedOptions={ [ 'auto' ] } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t) ) }\n\t\t\t\t</Grid>\n\t\t\t) ) }\n\t\t\t<PanelDivider />\n\t\t\t<Stack>\n\t\t\t\t<OverflowField />\n\t\t\t</Stack>\n\n\t\t\t<StyleTabCollapsibleContent fields={ [ 'aspect-ratio', 'object-fit' ] }>\n\t\t\t\t<Stack gap={ 2 } pt={ 2 }>\n\t\t\t\t\t<StylesField bind=\"aspect-ratio\" propDisplayName={ ASPECT_RATIO_LABEL }>\n\t\t\t\t\t\t<AspectRatioControl label={ ASPECT_RATIO_LABEL } />\n\t\t\t\t\t</StylesField>\n\t\t\t\t\t<PanelDivider />\n\t\t\t\t\t<ObjectFitField />\n\t\t\t\t\t<StylesField bind=\"object-position\" propDisplayName={ __( 'Object position', 'elementor' ) }>\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<PositionControl />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</StylesField>\n\t\t\t\t</Stack>\n\t\t\t</StyleTabCollapsibleContent>\n\t\t</SectionContent>\n\t);\n};\n\ntype ControlProps = {\n\tbind: StylesFieldProps[ 'bind' ];\n\tlabel: string;\n\trowRef: React.RefObject< HTMLDivElement >;\n\textendedOptions?: ExtendedOption[];\n};\n\nconst SizeField = ( { label, bind, rowRef, extendedOptions }: ControlProps ) => {\n\treturn (\n\t\t<StylesField bind={ bind } propDisplayName={ label }>\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<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<SizeControl extendedOptions={ extendedOptions } anchorRef={ rowRef } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\n\nimport { StylesInheritanceSectionIndicators } from '../styles-inheritance/components/styles-inheritance-section-indicators';\nimport { CollapsibleContent } from './collapsible-content';\ntype Props = PropsWithChildren< { fields?: string[] } >;\n\nexport const StyleTabCollapsibleContent = ( { fields = [], children }: Props ) => {\n\treturn <CollapsibleContent titleEnd={ getStylesInheritanceIndicators( fields ) }>{ children }</CollapsibleContent>;\n};\n\nexport function getStylesInheritanceIndicators( fields: string[] ) {\n\tif ( fields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn ( isOpen: boolean ) => ( ! isOpen ? <StylesInheritanceSectionIndicators fields={ fields } /> : null );\n}\n","import * as React from 'react';\nimport { type PropKey } from '@elementor/editor-props';\nimport { type StyleDefinitionVariant } from '@elementor/editor-styles';\nimport { isElementsStylesProvider } from '@elementor/editor-styles-repository';\nimport { Stack, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CustomCssIndicator } from '../../components/custom-css-indicator';\nimport { StyleIndicator } from '../../components/style-indicator';\nimport { useStyle } from '../../contexts/style-context';\nimport { useStylesInheritanceSnapshot } from '../../contexts/styles-inheritance-context';\nimport { getStylesProviderThemeColor } from '../../utils/get-styles-provider-color';\nimport { type SnapshotPropValue } from '../types';\ntype Props = {\n\tfields: PropKey[];\n};\n\nexport const StylesInheritanceSectionIndicators = ( { fields }: Props ) => {\n\tconst { id, meta, provider } = useStyle();\n\tconst snapshot = useStylesInheritanceSnapshot();\n\n\tif ( fields.includes( 'custom_css' ) ) {\n\t\treturn <CustomCssIndicator />;\n\t}\n\n\tconst snapshotFields = Object.fromEntries(\n\t\tObject.entries( snapshot ?? {} ).filter( ( [ key ] ) => fields.includes( key as PropKey ) )\n\t);\n\n\tconst { hasValues, hasOverrides } = getIndicators( snapshotFields, id ?? '', meta );\n\n\tif ( ! hasValues && ! hasOverrides ) {\n\t\treturn null;\n\t}\n\n\tconst hasValueLabel = __( 'Has effective styles', 'elementor' );\n\tconst hasOverridesLabel = __( 'Has overridden styles', 'elementor' );\n\n\treturn (\n\t\t<Tooltip title={ __( 'Has styles', 'elementor' ) } placement=\"top\">\n\t\t\t<Stack direction=\"row\" sx={ { '& > *': { marginInlineStart: -0.25 } } } role=\"list\">\n\t\t\t\t{ hasValues && provider && (\n\t\t\t\t\t<StyleIndicator\n\t\t\t\t\t\tgetColor={ getStylesProviderThemeColor( provider.getKey() ) }\n\t\t\t\t\t\tdata-variant={ isElementsStylesProvider( provider.getKey() ) ? 'local' : 'global' }\n\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\taria-label={ hasValueLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ hasOverrides && (\n\t\t\t\t\t<StyleIndicator\n\t\t\t\t\t\tisOverridden\n\t\t\t\t\t\tdata-variant=\"overridden\"\n\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\taria-label={ hasOverridesLabel }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t</Tooltip>\n\t);\n};\n\nfunction getIndicators(\n\tsnapshotFields: Record< PropKey, SnapshotPropValue[] >,\n\tstyleId: string,\n\tmeta: StyleDefinitionVariant[ 'meta' ]\n): { hasValues: boolean; hasOverrides: boolean } {\n\tlet hasValues = false;\n\tlet hasOverrides = false;\n\n\tObject.values( snapshotFields ).forEach( ( inheritanceChain ) => {\n\t\tconst currentStyle = getCurrentStyleFromChain( inheritanceChain, styleId, meta );\n\n\t\tif ( ! currentStyle ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst [ actualStyle ] = inheritanceChain;\n\n\t\tif ( currentStyle === actualStyle ) {\n\t\t\thasValues = true;\n\t\t} else {\n\t\t\thasOverrides = true;\n\t\t}\n\t} );\n\n\treturn { hasValues, hasOverrides };\n}\n\nfunction getCurrentStyleFromChain(\n\tchain: SnapshotPropValue[],\n\tstyleId: string,\n\tmeta: StyleDefinitionVariant[ 'meta' ]\n): SnapshotPropValue | undefined {\n\treturn chain.find(\n\t\t( {\n\t\t\tstyle: { id },\n\t\t\tvariant: {\n\t\t\t\tmeta: { breakpoint, state },\n\t\t\t},\n\t\t} ) => id === styleId && breakpoint === meta.breakpoint && state === meta.state\n\t);\n}\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst OBJECT_FIT_LABEL = __( 'Object fit', 'elementor' );\n\nconst positionOptions = [\n\t{ label: __( 'Fill', 'elementor' ), value: 'fill' },\n\t{ label: __( 'Cover', 'elementor' ), value: 'cover' },\n\t{ label: __( 'Contain', 'elementor' ), value: 'contain' },\n\t{ label: __( 'None', 'elementor' ), value: 'none' },\n\t{ label: __( 'Scale down', 'elementor' ), value: 'scale-down' },\n];\n\nexport const ObjectFitField = () => {\n\treturn (\n\t\t<StylesField bind=\"object-fit\" propDisplayName={ OBJECT_FIT_LABEL }>\n\t\t\t<StylesFieldLayout label={ OBJECT_FIT_LABEL }>\n\t\t\t\t<SelectControl options={ positionOptions } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { EyeIcon, EyeOffIcon, LetterAIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Overflows = 'visible' | 'hidden' | 'auto';\n\nconst OVERFLOW_LABEL = __( 'Overflow', 'elementor' );\n\nconst options: ToggleButtonGroupItem< Overflows >[] = [\n\t{\n\t\tvalue: 'visible',\n\t\tlabel: __( 'Visible', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'hidden',\n\t\tlabel: __( 'Hidden', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\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];\n\nexport const OverflowField = () => {\n\treturn (\n\t\t<StylesField bind=\"overflow\" propDisplayName={ OVERFLOW_LABEL }>\n\t\t\t<StylesFieldLayout label={ OVERFLOW_LABEL }>\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { LinkedDimensionsControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\n\nconst MARGIN_LABEL = __( 'Margin', 'elementor' );\nconst PADDING_LABEL = __( 'Padding', 'elementor' );\n\nexport const SpacingSection = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<SectionContent>\n\t\t\t<StylesField bind={ 'margin' } propDisplayName={ MARGIN_LABEL }>\n\t\t\t\t<LinkedDimensionsControl\n\t\t\t\t\tlabel={ MARGIN_LABEL }\n\t\t\t\t\tisSiteRtl={ isSiteRtl }\n\t\t\t\t\textendedOptions={ [ 'auto' ] }\n\t\t\t\t\tmin={ -Number.MAX_SAFE_INTEGER }\n\t\t\t\t/>\n\t\t\t</StylesField>\n\t\t\t<PanelDivider />\n\t\t\t<StylesField bind={ 'padding' } propDisplayName={ PADDING_LABEL }>\n\t\t\t\t<LinkedDimensionsControl label={ PADDING_LABEL } isSiteRtl={ isSiteRtl } />\n\t\t\t</StylesField>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\n\nimport { PanelDivider } from '../../panel-divider';\nimport { SectionContent } from '../../section-content';\nimport { StyleTabCollapsibleContent } from '../../style-tab-collapsible-content';\nimport { ColumnCountField } from './column-count-field';\nimport { ColumnGapField } from './column-gap-field';\nimport { FontFamilyField } from './font-family-field';\nimport { FontSizeField } from './font-size-field';\nimport { FontStyleField } from './font-style-field';\nimport { FontWeightField } from './font-weight-field';\nimport { LetterSpacingField } from './letter-spacing-field';\nimport { LineHeightField } from './line-height-field';\nimport { TextAlignmentField } from './text-alignment-field';\nimport { TextColorField } from './text-color-field';\nimport { TextDecorationField } from './text-decoration-field';\nimport { TextDirectionField } from './text-direction-field';\nimport { TextStrokeField } from './text-stroke-field';\nimport { TransformField } from './transform-field';\nimport { WordSpacingField } from './word-spacing-field';\n\nexport const TypographySection = () => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<FontFamilyField />\n\t\t\t<FontWeightField />\n\t\t\t<FontSizeField />\n\t\t\t<PanelDivider />\n\t\t\t<TextAlignmentField />\n\t\t\t<TextColorField />\n\t\t\t<StyleTabCollapsibleContent\n\t\t\t\tfields={ [\n\t\t\t\t\t'line-height',\n\t\t\t\t\t'letter-spacing',\n\t\t\t\t\t'word-spacing',\n\t\t\t\t\t'column-count',\n\t\t\t\t\t'text-decoration',\n\t\t\t\t\t'text-transform',\n\t\t\t\t\t'direction',\n\t\t\t\t\t'font-style',\n\t\t\t\t\t'stroke',\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t<SectionContent sx={ { pt: 2 } }>\n\t\t\t\t\t<LineHeightField />\n\t\t\t\t\t<LetterSpacingField />\n\t\t\t\t\t<WordSpacingField />\n\t\t\t\t\t<ColumnCountField />\n\t\t\t\t\t<ColumnGapField />\n\t\t\t\t\t<PanelDivider />\n\t\t\t\t\t<TextDecorationField />\n\t\t\t\t\t<TransformField />\n\t\t\t\t\t<TextDirectionField />\n\t\t\t\t\t<FontStyleField />\n\t\t\t\t\t<TextStrokeField />\n\t\t\t\t</SectionContent>\n\t\t\t</StyleTabCollapsibleContent>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { NumberControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst COLUMN_COUNT_LABEL = __( 'Columns', 'elementor' );\n\nexport const ColumnCountField = () => {\n\treturn (\n\t\t<StylesField bind=\"column-count\" propDisplayName={ COLUMN_COUNT_LABEL }>\n\t\t\t<StylesFieldLayout label={ COLUMN_COUNT_LABEL }>\n\t\t\t\t<NumberControl shouldForceInt min={ 0 } step={ 1 } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst COLUMN_GAP_LABEL = __( 'Column gap', 'elementor' );\n\nexport const ColumnGapField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"column-gap\" propDisplayName={ COLUMN_GAP_LABEL }>\n\t\t\t<StylesFieldLayout label={ COLUMN_GAP_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { FontFamilyControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { useSectionWidth } from '../../../contexts/section-context';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\nimport { useFontFamilies } from './hooks/use-font-families';\n\nconst FONT_FAMILY_LABEL = __( 'Font family', 'elementor' );\n\nexport const FontFamilyField = () => {\n\tconst fontFamilies = useFontFamilies();\n\tconst sectionWidth = useSectionWidth();\n\n\tif ( fontFamilies.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StylesField bind=\"font-family\" propDisplayName={ FONT_FAMILY_LABEL }>\n\t\t\t<StylesFieldLayout label={ FONT_FAMILY_LABEL }>\n\t\t\t\t<FontFamilyControl\n\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\tariaLabel={ FONT_FAMILY_LABEL }\n\t\t\t\t/>\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import { useMemo } from 'react';\nimport { type FontCategory } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { getElementorConfig } from '../../../../sync/get-elementor-globals';\n\nconst supportedCategories: Record< string, string > = {\n\tsystem: __( 'System', 'elementor' ),\n\tcustom: __( 'Custom Fonts', 'elementor' ),\n\tgooglefonts: __( 'Google Fonts', 'elementor' ),\n};\n\nconst getFontFamilies = () => {\n\tconst { controls } = getElementorConfig();\n\n\tconst options = controls?.font?.options;\n\n\tif ( ! options ) {\n\t\treturn null;\n\t}\n\n\treturn options;\n};\n\nexport const useFontFamilies = () => {\n\tconst fontFamilies = getFontFamilies();\n\n\treturn useMemo( () => {\n\t\tconst categoriesOrder = [ 'system', 'custom', 'googlefonts' ];\n\n\t\treturn Object.entries( fontFamilies || {} )\n\t\t\t.reduce< FontCategory[] >( ( acc, [ font, category ] ) => {\n\t\t\t\tif ( ! supportedCategories[ category ] ) {\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tconst categoryIndex = categoriesOrder.indexOf( category );\n\n\t\t\t\tif ( ! acc[ categoryIndex ] ) {\n\t\t\t\t\tacc[ categoryIndex ] = {\n\t\t\t\t\t\tlabel: supportedCategories[ category ],\n\t\t\t\t\t\tfonts: [],\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tacc[ categoryIndex ].fonts.push( font );\n\n\t\t\t\treturn acc;\n\t\t\t}, [] )\n\t\t\t.filter( Boolean );\n\t}, [ fontFamilies ] );\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst FONT_SIZE_LABEL = __( 'Font size', 'elementor' );\n\nexport const FontSizeField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"font-size\" propDisplayName={ FONT_SIZE_LABEL }>\n\t\t\t<StylesFieldLayout label={ FONT_SIZE_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } ariaLabel={ FONT_SIZE_LABEL } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ItalicIcon, MinusIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype FontStyle = 'normal' | 'italic';\n\nconst FONT_STYLE_LABEL = __( 'Font style', 'elementor' );\n\nconst options: ToggleButtonGroupItem< FontStyle >[] = [\n\t{\n\t\tvalue: 'normal',\n\t\tlabel: __( 'Normal', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'italic',\n\t\tlabel: __( 'Italic', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ItalicIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FontStyleField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-style\" propDisplayName={ FONT_STYLE_LABEL }>\n\t\t\t<StylesFieldLayout label={ FONT_STYLE_LABEL }>\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { SelectControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst FONT_WEIGHT_LABEL = __( 'Font weight', 'elementor' );\n\nconst fontWeightOptions = [\n\t{ value: '100', label: __( '100 - Thin', 'elementor' ) },\n\t{ value: '200', label: __( '200 - Extra light', 'elementor' ) },\n\t{ value: '300', label: __( '300 - Light', 'elementor' ) },\n\t{ value: '400', label: __( '400 - Normal', 'elementor' ) },\n\t{ value: '500', label: __( '500 - Medium', 'elementor' ) },\n\t{ value: '600', label: __( '600 - Semi bold', 'elementor' ) },\n\t{ value: '700', label: __( '700 - Bold', 'elementor' ) },\n\t{ value: '800', label: __( '800 - Extra bold', 'elementor' ) },\n\t{ value: '900', label: __( '900 - Black', 'elementor' ) },\n];\n\nexport const FontWeightField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-weight\" propDisplayName={ FONT_WEIGHT_LABEL }>\n\t\t\t<StylesFieldLayout label={ FONT_WEIGHT_LABEL }>\n\t\t\t\t<SelectControl options={ fontWeightOptions } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst LETTER_SPACING_LABEL = __( 'Letter spacing', 'elementor' );\n\nexport const LetterSpacingField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"letter-spacing\" propDisplayName={ LETTER_SPACING_LABEL }>\n\t\t\t<StylesFieldLayout label={ LETTER_SPACING_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } min={ -Number.MAX_SAFE_INTEGER } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst LINE_HEIGHT_LABEL = __( 'Line height', 'elementor' );\n\nexport const LineHeightField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"line-height\" propDisplayName={ LINE_HEIGHT_LABEL }>\n\t\t\t<StylesFieldLayout label={ LINE_HEIGHT_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from '@elementor/icons';\nimport { withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { UiProviders } from '../../../styles-inheritance/components/ui-providers';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Alignments = 'start' | 'center' | 'end' | 'justify';\n\nconst TEXT_ALIGNMENT_LABEL = __( 'Text align', 'elementor' );\n\nconst AlignStartIcon = withDirection( AlignLeftIcon );\nconst AlignEndIcon = withDirection( AlignRightIcon );\n\nconst options: ToggleButtonGroupItem< Alignments >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignStartIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignCenterIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignEndIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'justify',\n\t\tlabel: __( 'Justify', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignJustifiedIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TextAlignmentField = () => {\n\treturn (\n\t\t<StylesField bind=\"text-align\" propDisplayName={ TEXT_ALIGNMENT_LABEL }>\n\t\t\t<UiProviders>\n\t\t\t\t<StylesFieldLayout label={ TEXT_ALIGNMENT_LABEL }>\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</StylesFieldLayout>\n\t\t\t</UiProviders>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ColorControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst TEXT_COLOR_LABEL = __( 'Text color', 'elementor' );\n\nexport const TextColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"color\" propDisplayName={ TEXT_COLOR_LABEL }>\n\t\t\t<StylesFieldLayout label={ TEXT_COLOR_LABEL }>\n\t\t\t\t<ColorControl id=\"text-color-control\" />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ToggleControl, type ToggleControlProps } from '@elementor/editor-controls';\nimport { MinusIcon, OverlineIcon, StrikethroughIcon, UnderlineIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Decoration = 'none' | 'underline' | 'line-through' | 'overline';\n\nconst TEXT_DECORATION_LABEL = __( 'Line decoration', 'elementor' );\n\nconst options: ToggleControlProps< Decoration >[ 'options' ] = [\n\t{\n\t\tvalue: 'none',\n\t\tlabel: __( 'None', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t\texclusive: true,\n\t},\n\t{\n\t\tvalue: 'underline',\n\t\tlabel: __( 'Underline', 'elementor' ),\n\t\trenderContent: ( { size } ) => <UnderlineIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'line-through',\n\t\tlabel: __( 'Line-through', 'elementor' ),\n\t\trenderContent: ( { size } ) => <StrikethroughIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'overline',\n\t\tlabel: __( 'Overline', 'elementor' ),\n\t\trenderContent: ( { size } ) => <OverlineIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\nexport const TextDecorationField = () => (\n\t<StylesField bind=\"text-decoration\" propDisplayName={ TEXT_DECORATION_LABEL }>\n\t\t<StylesFieldLayout label={ TEXT_DECORATION_LABEL }>\n\t\t\t<ToggleControl options={ options } exclusive={ false } />\n\t\t</StylesFieldLayout>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { TextDirectionLtrIcon, TextDirectionRtlIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst TEXT_DIRECTION_LABEL = __( 'Direction', 'elementor' );\n\nconst options: ToggleButtonGroupItem< Direction >[] = [\n\t{\n\t\tvalue: 'ltr',\n\t\tlabel: __( 'Left to right', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionLtrIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'rtl',\n\t\tlabel: __( 'Right to left', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionRtlIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TextDirectionField = () => {\n\treturn (\n\t\t<StylesField bind=\"direction\" propDisplayName={ TEXT_DIRECTION_LABEL }>\n\t\t\t<StylesFieldLayout label={ TEXT_DIRECTION_LABEL }>\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { StrokeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\nimport { ControlLabel } from '../../control-label';\n\nconst initTextStroke = {\n\t$$type: 'stroke',\n\tvalue: {\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: '#000000',\n\t\t},\n\t\twidth: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: {\n\t\t\t\tunit: 'px',\n\t\t\t\tsize: 1,\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst TEXT_STROKE_LABEL = __( 'Text stroke', 'elementor' );\n\nexport const TextStrokeField = () => {\n\tconst { value, setValue, canEdit } = useStylesField( 'stroke', {\n\t\thistory: { propDisplayName: TEXT_STROKE_LABEL },\n\t} );\n\n\tconst addTextStroke = () => {\n\t\tsetValue( initTextStroke );\n\t};\n\n\tconst removeTextStroke = () => {\n\t\tsetValue( null );\n\t};\n\n\tconst hasTextStroke = Boolean( value );\n\n\treturn (\n\t\t<StylesField bind={ 'stroke' } propDisplayName={ TEXT_STROKE_LABEL }>\n\t\t\t<AddOrRemoveContent\n\t\t\t\tisAdded={ hasTextStroke }\n\t\t\t\tonAdd={ addTextStroke }\n\t\t\t\tonRemove={ removeTextStroke }\n\t\t\t\tdisabled={ ! canEdit }\n\t\t\t\trenderLabel={ () => <ControlLabel>{ TEXT_STROKE_LABEL }</ControlLabel> }\n\t\t\t>\n\t\t\t\t<StrokeControl />\n\t\t\t</AddOrRemoveContent>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type PropsWithChildren } from 'react';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\n\nimport { SectionContent } from './section-content';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tisAdded: boolean;\n\tonAdd: () => void;\n\tonRemove: () => void;\n\tdisabled?: boolean;\n\trenderLabel: () => React.ReactNode;\n};\n\nexport const AddOrRemoveContent = ( {\n\tisAdded,\n\tonAdd,\n\tonRemove,\n\tchildren,\n\tdisabled,\n\trenderLabel,\n}: PropsWithChildren< Props > ) => {\n\treturn (\n\t\t<SectionContent>\n\t\t\t<Stack\n\t\t\t\tdirection=\"row\"\n\t\t\t\tsx={ {\n\t\t\t\t\tjustifyContent: 'space-between',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tmarginInlineEnd: -0.75,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ renderLabel() }\n\t\t\t\t{ isAdded ? (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onRemove } aria-label=\"Remove\" disabled={ disabled }>\n\t\t\t\t\t\t<MinusIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) : (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onAdd } aria-label=\"Add\" disabled={ disabled }>\n\t\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) }\n\t\t\t</Stack>\n\t\t\t<Collapse in={ isAdded } unmountOnExit>\n\t\t\t\t<SectionContent>{ children }</SectionContent>\n\t\t\t</Collapse>\n\t\t</SectionContent>\n\t);\n};\n","import * as React from 'react';\nimport { type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon, MinusIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\ntype Transforms = 'none' | 'capitalize' | 'uppercase' | 'lowercase';\n\nconst TEXT_TRANSFORM_LABEL = __( 'Text transform', 'elementor' );\n\nconst options: ToggleButtonGroupItem< Transforms >[] = [\n\t{\n\t\tvalue: 'none',\n\t\tlabel: __( 'None', 'elementor' ),\n\t\trenderContent: ( { size } ) => <MinusIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'capitalize',\n\t\tlabel: __( 'Capitalize', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'uppercase',\n\t\tlabel: __( 'Uppercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseUpperIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'lowercase',\n\t\tlabel: __( 'Lowercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseLowerIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const TransformField = () => (\n\t<StylesField bind=\"text-transform\" propDisplayName={ TEXT_TRANSFORM_LABEL }>\n\t\t<StylesFieldLayout label={ TEXT_TRANSFORM_LABEL }>\n\t\t\t<ToggleControl options={ options } />\n\t\t</StylesFieldLayout>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { SizeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StylesFieldLayout } from '../../styles-field-layout';\n\nconst WORD_SPACING_LABEL = __( 'Word spacing', 'elementor' );\n\nexport const WordSpacingField = () => {\n\tconst rowRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<StylesField bind=\"word-spacing\" propDisplayName={ WORD_SPACING_LABEL }>\n\t\t\t<StylesFieldLayout label={ WORD_SPACING_LABEL } ref={ rowRef }>\n\t\t\t\t<SizeControl anchorRef={ rowRef } min={ -Number.MAX_SAFE_INTEGER } />\n\t\t\t</StylesFieldLayout>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\n\nimport { useDefaultPanelSettings } from '../hooks/use-default-panel-settings';\nimport { Section } from './section';\nimport { getStylesInheritanceIndicators } from './style-tab-collapsible-content';\n\ntype SectionType = {\n\tcomponent: () => React.JSX.Element;\n\tname: string;\n\ttitle: string;\n};\n\ntype Props = { section: SectionType; fields?: string[]; unmountOnExit?: boolean };\n\nexport const StyleTabSection = ( { section, fields = [], unmountOnExit = true }: Props ) => {\n\tconst { component, name, title } = section;\n\tconst tabDefaults = useDefaultPanelSettings();\n\tconst SectionComponent = component;\n\tconst isExpanded = tabDefaults.defaultSectionsExpanded.style?.includes( name );\n\n\treturn (\n\t\t<Section\n\t\t\ttitle={ title }\n\t\t\tdefaultExpanded={ isExpanded }\n\t\t\ttitleEnd={ getStylesInheritanceIndicators( fields ) }\n\t\t\tunmountOnExit={ unmountOnExit }\n\t\t>\n\t\t\t<SectionComponent />\n\t\t</Section>\n\t);\n};\n","import * as React from 'react';\nimport { PopoverBody as BasePopoverBody } from '@elementor/editor-ui';\n\nimport { useSectionWidth } from '../contexts/section-context';\n\ntype Props = React.ComponentProps< typeof BasePopoverBody >;\n\nexport const PopoverBody = ( props: Props ) => {\n\tconst sectionWidth = useSectionWidth();\n\n\treturn <BasePopoverBody { ...props } width={ sectionWidth } />;\n};\n","import { injectIntoLogic } from '@elementor/editor';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\n\nimport { EditingPanelHooks } from './components/editing-panel-hooks';\nimport { registerElementControls } from './controls-registry/element-controls/registry';\nimport { init as initDynamics } from './dynamics/init';\nimport { panel } from './panel';\nimport { initResetStyleProps } from './reset-style-props';\nimport { init as initStylesInheritance } from './styles-inheritance/init';\nimport { isAtomicWidgetSelected } from './sync/is-atomic-widget-selected';\n\nexport function init() {\n\tregisterPanel( panel );\n\tblockV1Panel();\n\n\tinjectIntoLogic( {\n\t\tid: 'editing-panel-hooks',\n\t\tcomponent: EditingPanelHooks,\n\t} );\n\n\t// TODO: Move it from here once we have dynamic package.\n\tinitDynamics();\n\n\t// TODO: Move it from here once we have styles-inheritance package.\n\tinitStylesInheritance();\n\n\t// TODO: Move it from here once we have element-controls package.\n\tregisterElementControls();\n\n\tinitResetStyleProps();\n}\n\nconst blockV1Panel = () => {\n\tblockCommand( {\n\t\tcommand: 'panel/editor/open',\n\t\tcondition: isAtomicWidgetSelected,\n\t} );\n};\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, commandStartEvent } from '@elementor/editor-v1-adapters';\n\nimport { usePanelActions } from '../panel';\nimport { isAtomicWidgetSelected } from '../sync/is-atomic-widget-selected';\n\nexport const useOpenEditorPanel = () => {\n\tconst { open } = usePanelActions();\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'panel/editor/open' ), () => {\n\t\t\tif ( isAtomicWidgetSelected() ) {\n\t\t\t\topen();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import { __createPanel as createPanel } from '@elementor/editor-panels';\n\nimport { EditingPanel } from './components/editing-panel';\n\nexport const { panel, usePanelActions, usePanelStatus } = createPanel( {\n\tid: 'editing-panel',\n\tcomponent: EditingPanel,\n} );\n","import { getSelectedElements, getWidgetsCache } from '@elementor/editor-elements';\n\nexport const isAtomicWidgetSelected = () => {\n\tconst selectedElements = getSelectedElements();\n\tconst widgetCache = getWidgetsCache();\n\n\tif ( selectedElements.length !== 1 ) {\n\t\treturn false;\n\t}\n\n\t// Check if the selected element has atomic controls, meaning it's a V2 element.\n\treturn !! widgetCache?.[ selectedElements[ 0 ].type ]?.atomic_controls;\n};\n","import { useOpenEditorPanel } from '../hooks/use-open-editor-panel';\n\nexport const EditingPanelHooks = () => {\n\tuseOpenEditorPanel();\n\n\treturn null;\n};\n","import * as React from 'react';\nimport {\n\tControlFormLabel,\n\tRepeater,\n\ttype RepeaterItem,\n\ttype SetRepeaterValuesMeta,\n\tuseBoundProp,\n} from '@elementor/editor-controls';\nimport {\n\tgetElementEditorSettings,\n\tupdateElementEditorSettings,\n\tuseElementChildren,\n\tuseElementEditorSettings,\n} from '@elementor/editor-elements';\nimport { type CreateOptions, numberPropTypeUtil } from '@elementor/editor-props';\nimport { InfoCircleFilledIcon } from '@elementor/icons';\nimport { Alert, Chip, Infotip, type InfotipProps, Stack, Switch, TextField, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../../contexts/element-context';\nimport { SettingsField } from '../../settings-field';\nimport { getElementByType } from '../get-element-by-type';\nimport { TAB_ELEMENT_TYPE, type TabItem, useActions } from './use-actions';\n\nconst TAB_MENU_ELEMENT_TYPE = 'e-tabs-menu';\nconst TAB_CONTENT_AREA_ELEMENT_TYPE = 'e-tabs-content-area';\nexport const TabsControl = ( { label }: { label: string } ) => {\n\treturn (\n\t\t<SettingsField bind=\"default-active-tab\" propDisplayName={ __( 'Tabs', 'elementor' ) }>\n\t\t\t<TabsControlContent label={ label } />\n\t\t</SettingsField>\n\t);\n};\n\nexport const TabsControlContent = ( { label }: { label: string } ) => {\n\tconst { element } = useElement();\n\tconst { addItem, duplicateItem, moveItem, removeItem } = useActions();\n\n\tconst { [ TAB_ELEMENT_TYPE ]: tabLinks } = useElementChildren( element.id, {\n\t\t[ TAB_MENU_ELEMENT_TYPE ]: TAB_ELEMENT_TYPE,\n\t} );\n\n\tconst tabList = getElementByType( element.id, TAB_MENU_ELEMENT_TYPE );\n\tconst tabContentArea = getElementByType( element.id, TAB_CONTENT_AREA_ELEMENT_TYPE );\n\n\tconst repeaterValues: RepeaterItem< TabItem >[] = tabLinks.map( ( tabLink, index ) => {\n\t\tconst { title: titleSetting } = getElementEditorSettings( tabLink.id ) ?? {};\n\n\t\treturn {\n\t\t\tid: tabLink.id,\n\t\t\ttitle: titleSetting,\n\t\t\tindex,\n\t\t};\n\t} );\n\n\tconst setValue = (\n\t\t_newValues: RepeaterItem< TabItem >[],\n\t\t_options: CreateOptions,\n\t\tmeta?: SetRepeaterValuesMeta< RepeaterItem< TabItem > >\n\t) => {\n\t\tif ( meta?.action?.type === 'add' ) {\n\t\t\tconst items = meta.action.payload;\n\n\t\t\treturn addItem( { tabContentAreaId: tabContentArea.id, items, tabsMenuId: tabList.id } );\n\t\t}\n\n\t\tif ( meta?.action?.type === 'remove' ) {\n\t\t\tconst items = meta.action.payload;\n\n\t\t\treturn removeItem( {\n\t\t\t\titems,\n\t\t\t\ttabContentAreaId: tabContentArea.id,\n\t\t\t} );\n\t\t}\n\n\t\tif ( meta?.action?.type === 'duplicate' ) {\n\t\t\tconst items = meta.action.payload;\n\n\t\t\treturn duplicateItem( { items, tabContentAreaId: tabContentArea.id } );\n\t\t}\n\n\t\tif ( meta?.action?.type === 'reorder' ) {\n\t\t\tconst { from, to } = meta.action.payload;\n\n\t\t\treturn moveItem( {\n\t\t\t\ttoIndex: to,\n\t\t\t\ttabsMenuId: tabList.id,\n\t\t\t\ttabContentAreaId: tabContentArea.id,\n\t\t\t\tmovedElementId: tabLinks[ from ].id,\n\t\t\t\tmovedElementIndex: from,\n\t\t\t} );\n\t\t}\n\t};\n\n\treturn (\n\t\t<Repeater\n\t\t\tshowToggle={ false }\n\t\t\tvalues={ repeaterValues }\n\t\t\tsetValues={ setValue }\n\t\t\tshowRemove={ repeaterValues.length > 1 }\n\t\t\tlabel={ label }\n\t\t\titemSettings={ {\n\t\t\t\tgetId: ( { item } ) => item.id,\n\t\t\t\tinitialValues: { id: '', title: 'Tab' },\n\t\t\t\tLabel: ItemLabel,\n\t\t\t\tContent: ItemContent,\n\t\t\t\tIcon: () => null,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ItemLabel = ( { value, index }: { value: TabItem; index: number } ) => {\n\tconst id = value.id ?? '';\n\n\tconst editorSettings = useElementEditorSettings( id );\n\n\tconst elementTitle = editorSettings?.title;\n\n\treturn (\n\t\t<Stack sx={ { minHeight: 20 } } direction=\"row\" alignItems=\"center\" gap={ 1.5 }>\n\t\t\t<span>{ elementTitle }</span>\n\t\t\t<ItemDefaultTab index={ index } />\n\t\t</Stack>\n\t);\n};\n\nconst ItemDefaultTab = ( { index }: { index: number } ) => {\n\tconst { value: defaultItem } = useBoundProp( numberPropTypeUtil );\n\n\tconst isDefault = defaultItem === index;\n\n\tif ( ! isDefault ) {\n\t\treturn null;\n\t}\n\n\treturn <Chip size=\"tiny\" shape=\"rounded\" label={ __( 'Default', 'elementor' ) } />;\n};\n\nconst ItemContent = ( { value, index }: { value: TabItem; index: number } ) => {\n\tif ( ! value.id ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Stack p={ 2 } gap={ 1.5 }>\n\t\t\t<TabLabelControl elementId={ value.id } />\n\t\t\t<SettingsField bind=\"default-active-tab\" propDisplayName={ __( 'Tabs', 'elementor' ) }>\n\t\t\t\t<DefaultTabControl tabIndex={ index } />\n\t\t\t</SettingsField>\n\t\t</Stack>\n\t);\n};\n\nconst DefaultTabControl = ( { tabIndex }: { tabIndex: number } ) => {\n\tconst { value, setValue } = useBoundProp( numberPropTypeUtil );\n\n\tconst isDefault = value === tabIndex;\n\n\treturn (\n\t\t<Stack direction=\"row\" alignItems=\"center\" justifyContent=\"space-between\" gap={ 2 }>\n\t\t\t<ControlFormLabel>{ __( 'Set as default tab', 'elementor' ) }</ControlFormLabel>\n\t\t\t<ConditionalTooltip showTooltip={ isDefault } placement=\"right\">\n\t\t\t\t<Switch\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tchecked={ isDefault }\n\t\t\t\t\tdisabled={ isDefault }\n\t\t\t\t\tonChange={ ( { target }: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\t\tsetValue( target.checked ? tabIndex : null );\n\t\t\t\t\t} }\n\t\t\t\t\tinputProps={ {\n\t\t\t\t\t\t...( isDefault ? { style: { opacity: 0, cursor: 'not-allowed' } } : {} ),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</ConditionalTooltip>\n\t\t</Stack>\n\t);\n};\n\nconst TabLabelControl = ( { elementId }: { elementId: string } ) => {\n\tconst editorSettings = useElementEditorSettings( elementId );\n\n\tconst label = editorSettings?.title ?? '';\n\n\treturn (\n\t\t<Stack gap={ 1 }>\n\t\t\t<ControlFormLabel>{ __( 'Tab name', 'elementor' ) }</ControlFormLabel>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tvalue={ label }\n\t\t\t\tonChange={ ( { target }: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\t\t\tupdateElementEditorSettings( {\n\t\t\t\t\t\telementId,\n\t\t\t\t\t\tsettings: { title: target.value },\n\t\t\t\t\t} );\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\nexport const ConditionalTooltip = ( {\n\tshowTooltip,\n\tchildren,\n}: Omit< InfotipProps, 'content' > & { showTooltip: boolean } ) => {\n\tif ( ! showTooltip ) {\n\t\treturn children;\n\t}\n\n\treturn (\n\t\t<Infotip\n\t\t\tarrow={ false }\n\t\t\tcontent={\n\t\t\t\t<Alert\n\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\ticon={ <InfoCircleFilledIcon fontSize=\"tiny\" /> }\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tsx={ { width: 288 } }\n\t\t\t\t>\n\t\t\t\t\t<Typography variant=\"body2\">\n\t\t\t\t\t\t{ __( 'To change the default tab, simply set another tab as default.', 'elementor' ) }\n\t\t\t\t\t</Typography>\n\t\t\t\t</Alert>\n\t\t\t}\n\t\t>\n\t\t\t<span>{ children }</span>\n\t\t</Infotip>\n\t);\n};\n","import { getContainer } from '@elementor/editor-elements';\n\nexport const getElementByType = ( elementId: string, type: string ) => {\n\tconst currentElement = getContainer( elementId );\n\n\tif ( ! currentElement ) {\n\t\tthrow new Error( `Current element not found, elementId: ${ elementId }` );\n\t}\n\n\tif ( currentElement.model.get( 'elType' ) === type ) {\n\t\treturn currentElement;\n\t}\n\n\tconst element = currentElement.children?.findRecursive?.( ( child ) => child.model.get( 'elType' ) === type );\n\n\tif ( ! element ) {\n\t\tthrow new Error( `Child element ${ type } not found` );\n\t}\n\n\treturn element;\n};\n","import { type ItemsActionPayload, useBoundProp } from '@elementor/editor-controls';\nimport {\n\tcreateElements,\n\tduplicateElements,\n\tgetContainer,\n\tmoveElements,\n\tremoveElements,\n} from '@elementor/editor-elements';\nimport { numberPropTypeUtil } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type TabItem = {\n\tid: string;\n\ttitle?: string;\n};\n\nexport const TAB_ELEMENT_TYPE = 'e-tab';\nexport const TAB_CONTENT_ELEMENT_TYPE = 'e-tab-content';\n\nexport const useActions = () => {\n\tconst { value, setValue: setDefaultActiveTab } = useBoundProp( numberPropTypeUtil );\n\tconst defaultActiveTab = value ?? 0;\n\n\tconst duplicateItem = ( {\n\t\titems,\n\t\ttabContentAreaId,\n\t}: {\n\t\titems: ItemsActionPayload< TabItem >;\n\t\ttabContentAreaId: string;\n\t} ) => {\n\t\tconst newDefault = calculateDefaultOnDuplicate( {\n\t\t\titems,\n\t\t\tdefaultActiveTab,\n\t\t} );\n\n\t\titems.forEach( ( { item, index } ) => {\n\t\t\tconst tabId = item.id as string;\n\t\t\tconst tabContentAreaContainer = getContainer( tabContentAreaId );\n\t\t\tconst tabContentId = tabContentAreaContainer?.children?.[ index ]?.id;\n\n\t\t\tif ( ! tabContentId ) {\n\t\t\t\tthrow new Error( 'Original content ID is required for duplication' );\n\t\t\t}\n\n\t\t\tduplicateElements( {\n\t\t\t\telementIds: [ tabId, tabContentId ],\n\t\t\t\ttitle: __( 'Duplicate Tab', 'elementor' ),\n\t\t\t\tonDuplicateElements: () => {\n\t\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\t\tsetDefaultActiveTab( newDefault, {}, { withHistory: false } );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tonRestoreElements: () => {\n\t\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\t\tsetDefaultActiveTab( defaultActiveTab, {}, { withHistory: false } );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t} );\n\t\t} );\n\t};\n\n\tconst moveItem = ( {\n\t\ttoIndex,\n\t\ttabsMenuId,\n\t\ttabContentAreaId,\n\t\tmovedElementId,\n\t\tmovedElementIndex,\n\t}: {\n\t\ttoIndex: number;\n\t\ttabsMenuId: string;\n\t\ttabContentAreaId: string;\n\t\tmovedElementId: string;\n\t\tmovedElementIndex: number;\n\t} ) => {\n\t\tconst tabContentContainer = getContainer( tabContentAreaId );\n\t\tconst tabContentId = tabContentContainer?.children?.[ movedElementIndex ]?.id;\n\n\t\tif ( ! tabContentId ) {\n\t\t\tthrow new Error( 'Content ID is required' );\n\t\t}\n\n\t\tconst newDefault = calculateDefaultOnMove( {\n\t\t\tfrom: movedElementIndex,\n\t\t\tto: toIndex,\n\t\t\tdefaultActiveTab,\n\t\t} );\n\n\t\tmoveElements( {\n\t\t\ttitle: __( 'Reorder Tabs', 'elementor' ),\n\t\t\tmoves: [\n\t\t\t\t{\n\t\t\t\t\telementId: movedElementId,\n\t\t\t\t\ttargetContainerId: tabsMenuId,\n\t\t\t\t\toptions: { at: toIndex },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\telementId: tabContentId,\n\t\t\t\t\ttargetContainerId: tabContentAreaId,\n\t\t\t\t\toptions: { at: toIndex },\n\t\t\t\t},\n\t\t\t],\n\t\t\tonMoveElements: () => {\n\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\tsetDefaultActiveTab( newDefault, {}, { withHistory: false } );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonRestoreElements: () => {\n\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\tsetDefaultActiveTab( defaultActiveTab, {}, { withHistory: false } );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst removeItem = ( {\n\t\titems,\n\t\ttabContentAreaId,\n\t}: {\n\t\titems: ItemsActionPayload< TabItem >;\n\t\ttabContentAreaId: string;\n\t} ) => {\n\t\tconst newDefault = calculateDefaultOnRemove( {\n\t\t\titems,\n\t\t\tdefaultActiveTab,\n\t\t} );\n\n\t\tremoveElements( {\n\t\t\ttitle: __( 'Tabs', 'elementor' ),\n\t\t\telementIds: items.flatMap( ( { item, index } ) => {\n\t\t\t\tconst tabId = item.id as string;\n\t\t\t\tconst tabContentContainer = getContainer( tabContentAreaId );\n\t\t\t\tconst tabContentId = tabContentContainer?.children?.[ index ]?.id;\n\n\t\t\t\tif ( ! tabContentId ) {\n\t\t\t\t\tthrow new Error( 'Content ID is required' );\n\t\t\t\t}\n\n\t\t\t\treturn [ tabId, tabContentId ];\n\t\t\t} ),\n\t\t\tonRemoveElements: () => {\n\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\tsetDefaultActiveTab( newDefault, {}, { withHistory: false } );\n\t\t\t\t}\n\t\t\t},\n\t\t\tonRestoreElements: () => {\n\t\t\t\tif ( newDefault !== defaultActiveTab ) {\n\t\t\t\t\tsetDefaultActiveTab( defaultActiveTab, {}, { withHistory: false } );\n\t\t\t\t}\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst addItem = ( {\n\t\ttabContentAreaId,\n\t\ttabsMenuId,\n\t\titems,\n\t}: {\n\t\ttabContentAreaId: string;\n\t\ttabsMenuId: string;\n\t\titems: ItemsActionPayload< TabItem >;\n\t} ) => {\n\t\titems.forEach( ( { index } ) => {\n\t\t\tconst position = index + 1;\n\n\t\t\tcreateElements( {\n\t\t\t\ttitle: __( 'Tabs', 'elementor' ),\n\t\t\t\telements: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcontainerId: tabContentAreaId,\n\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\telType: TAB_CONTENT_ELEMENT_TYPE,\n\t\t\t\t\t\t\teditor_settings: { title: `Tab ${ position } content`, initial_position: position },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tcontainerId: tabsMenuId,\n\t\t\t\t\t\tmodel: {\n\t\t\t\t\t\t\telType: TAB_ELEMENT_TYPE,\n\t\t\t\t\t\t\teditor_settings: { title: `Tab ${ position } trigger`, initial_position: position },\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} );\n\t};\n\n\treturn {\n\t\tduplicateItem,\n\t\tmoveItem,\n\t\tremoveItem,\n\t\taddItem,\n\t};\n};\n\nconst calculateDefaultOnMove = ( {\n\tfrom,\n\tto,\n\tdefaultActiveTab,\n}: {\n\tfrom: number;\n\tto: number;\n\tdefaultActiveTab: number;\n} ) => {\n\tif ( from === defaultActiveTab ) {\n\t\treturn to;\n\t}\n\n\tif ( from < defaultActiveTab && to >= defaultActiveTab ) {\n\t\treturn defaultActiveTab - 1;\n\t}\n\n\tif ( from > defaultActiveTab && to <= defaultActiveTab ) {\n\t\treturn defaultActiveTab + 1;\n\t}\n\n\treturn defaultActiveTab;\n};\n\nconst calculateDefaultOnRemove = ( {\n\titems,\n\tdefaultActiveTab,\n}: {\n\titems: ItemsActionPayload< TabItem >;\n\tdefaultActiveTab: number;\n} ) => {\n\tconst isDefault = items.some( ( { index } ) => index === defaultActiveTab );\n\n\tif ( isDefault ) {\n\t\treturn 0;\n\t}\n\n\tconst defaultGap = items.reduce( ( acc, { index } ) => ( index < defaultActiveTab ? acc + 1 : acc ), 0 );\n\treturn defaultActiveTab - defaultGap;\n};\n\nconst calculateDefaultOnDuplicate = ( {\n\titems,\n\tdefaultActiveTab,\n}: {\n\titems: ItemsActionPayload< TabItem >;\n\tdefaultActiveTab: number;\n} ) => {\n\tconst duplicatesBefore = items.reduce( ( acc, { index } ) => {\n\t\tconst isDuplicatedBeforeDefault = index < defaultActiveTab;\n\t\treturn isDuplicatedBeforeDefault ? acc + 1 : acc;\n\t}, 0 );\n\treturn defaultActiveTab + duplicatesBefore;\n};\n","import { type ControlComponent } from '@elementor/editor-controls';\n\nimport { type ControlRegistry, controlsRegistry } from '../controls-registry';\nimport { TabsControl } from './tabs-control/tabs-control';\n\nconst controlTypes = {\n\ttabs: { component: TabsControl as ControlComponent, layout: 'full' },\n} as const satisfies ControlRegistry;\n\nexport const registerElementControls = () => {\n\tObject.entries< ( typeof controlTypes )[ keyof typeof controlTypes ] >( controlTypes ).forEach(\n\t\t( [ type, { component, layout } ] ) => {\n\t\t\tcontrolsRegistry.register( type, component, layout );\n\t\t}\n\t);\n};\n","import { settingsTransformersRegistry, styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { injectIntoRepeaterItemIcon, injectIntoRepeaterItemLabel } from '@elementor/editor-controls';\nimport { type BackgroundOverlayPropType, type PropValue } from '@elementor/editor-props';\nimport { type InjectedComponent } from '@elementor/locations';\n\nimport { registerControlReplacement } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport {\n\tBackgroundControlDynamicTagIcon,\n\tBackgroundControlDynamicTagLabel,\n} from './components/background-control-dynamic-tag';\nimport { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { dynamicTransformer } from './dynamic-transformer';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { isDynamicPropValue } from './utils';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport const init = () => {\n\tregisterControlReplacement( {\n\t\tcomponent: DynamicSelectionControl,\n\t\tcondition: ( { value } ) => isDynamicPropValue( value ),\n\t} );\n\n\tinjectIntoRepeaterItemLabel( {\n\t\tid: 'dynamic-background-image',\n\t\tcondition: ( { value } ) =>\n\t\t\tisDynamicPropValue( ( value as BackgroundOverlayPropType ).value?.image?.value?.src ),\n\t\tcomponent: BackgroundControlDynamicTagLabel as InjectedComponent< { value: PropValue } >,\n\t} );\n\n\tinjectIntoRepeaterItemIcon( {\n\t\tid: 'dynamic-background-image',\n\t\tcondition: ( { value } ) =>\n\t\t\tisDynamicPropValue( ( value as BackgroundOverlayPropType ).value?.image?.value?.src ),\n\t\tcomponent: BackgroundControlDynamicTagIcon,\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'dynamic-tags',\n\t\tuseProps: usePropDynamicAction,\n\t} );\n\n\tstyleTransformersRegistry.register( 'dynamic', dynamicTransformer );\n\tsettingsTransformersRegistry.register( 'dynamic', dynamicTransformer );\n};\n","import * as React from 'react';\nimport { PropKeyProvider, PropProvider, useBoundProp } from '@elementor/editor-controls';\nimport {\n\tbackgroundImageOverlayPropTypeUtil,\n\ttype BackgroundOverlayImagePropType,\n\ttype BackgroundOverlayPropType,\n\ttype ObjectPropType,\n\ttype UnionPropType,\n} from '@elementor/editor-props';\nimport { DatabaseIcon } from '@elementor/icons';\n\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\n\n// Since this is injected, the initial prop provider does not dig into the nested structure of the value.\n// We need to synthetically create a type that matches the expected structure of the value.\n\nexport const BackgroundControlDynamicTagIcon = () => <DatabaseIcon fontSize=\"tiny\" />;\n\nexport const BackgroundControlDynamicTagLabel = ( { value }: { value: BackgroundOverlayPropType } ) => {\n\tconst context = useBoundProp( backgroundImageOverlayPropTypeUtil );\n\n\treturn (\n\t\t<PropProvider { ...context } value={ value.value }>\n\t\t\t<PropKeyProvider bind=\"image\">\n\t\t\t\t<Wrapper rawValue={ value.value } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst Wrapper = ( { rawValue }: { rawValue: BackgroundOverlayPropType[ 'value' ] } ) => {\n\tconst { propType } = useBoundProp< BackgroundOverlayPropType, UnionPropType >();\n\n\tconst imageOverlayPropType = propType.prop_types[ 'background-image-overlay' ] as ObjectPropType;\n\treturn (\n\t\t<PropProvider propType={ imageOverlayPropType.shape.image } value={ rawValue } setValue={ () => void 0 }>\n\t\t\t<PropKeyProvider bind=\"src\">\n\t\t\t\t<Content rawValue={ rawValue.image } />\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n\nconst Content = ( { rawValue }: { rawValue: BackgroundOverlayImagePropType } ) => {\n\tconst src = rawValue.value.src;\n\tconst dynamicTag = useDynamicTag( src.value.name || '' );\n\treturn <React.Fragment>{ dynamicTag?.label }</React.Fragment>;\n};\n","import { useMemo } from 'react';\n\nimport { type DynamicTag } from '../types';\nimport { usePropDynamicTags } from './use-prop-dynamic-tags';\n\nexport const useDynamicTag = ( tagName: string ): DynamicTag | null => {\n\tconst dynamicTags = usePropDynamicTags();\n\n\treturn useMemo( () => dynamicTags.find( ( tag ) => tag.name === tagName ) ?? null, [ dynamicTags, tagName ] );\n};\n","import { useMemo } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\n\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { type DynamicTag } from '../types';\nimport { getDynamicPropType } from '../utils';\n\nexport const usePropDynamicTags = () => {\n\tlet categories: string[] = [];\n\n\tconst { propType } = useBoundProp();\n\n\tif ( propType ) {\n\t\tconst propDynamicType = getDynamicPropType( propType );\n\n\t\tcategories = propDynamicType?.settings.categories || [];\n\t}\n\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\treturn useMemo( () => getDynamicTagsByCategories( categories ), [ categories.join() ] );\n};\n\nconst getDynamicTagsByCategories = ( categories: string[] ) => {\n\tconst { tags, groups } = getAtomicDynamicTags() || {};\n\n\tif ( ! categories.length || ! tags || ! groups ) {\n\t\treturn [];\n\t}\n\n\tconst _categories = new Set( categories );\n\n\tconst dynamicTags: DynamicTag[] = [];\n\tconst groupedFilteredTags: Record< string, DynamicTag[] > = {};\n\n\tfor ( const tag of Object.values( tags ) ) {\n\t\tif ( ! tag.categories.some( ( category ) => _categories.has( category ) ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( ! groupedFilteredTags[ tag.group ] ) {\n\t\t\tgroupedFilteredTags[ tag.group ] = [];\n\t\t}\n\t\tgroupedFilteredTags[ tag.group ].push( tag );\n\t}\n\n\tfor ( const group in groups ) {\n\t\tif ( groupedFilteredTags[ group ] ) {\n\t\t\tdynamicTags.push( ...groupedFilteredTags[ group ] );\n\t\t}\n\t}\n\n\treturn dynamicTags;\n};\n","import { type ExtendedWindow } from '../types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import { getElementorConfig } from './get-elementor-config';\n\nexport const getAtomicDynamicTags = () => {\n\tconst { atomicDynamicTags } = getElementorConfig();\n\n\tif ( ! atomicDynamicTags ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\ttags: atomicDynamicTags.tags,\n\t\tgroups: atomicDynamicTags.groups,\n\t};\n};\n","import {\n\tcreatePropUtils,\n\tisTransformable,\n\ttype PropType,\n\ttype PropValue,\n\ttype TransformablePropType,\n} from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { type DynamicPropType } from './types';\n\nconst DYNAMIC_PROP_TYPE_KEY = 'dynamic';\n\nconst isDynamicPropType = ( prop: TransformablePropType ): prop is DynamicPropType =>\n\tprop.key === DYNAMIC_PROP_TYPE_KEY;\n\nexport const getDynamicPropType = ( propType: PropType ): DynamicPropType | null => {\n\tconst dynamicPropType = propType.kind === 'union' && propType.prop_types[ DYNAMIC_PROP_TYPE_KEY ];\n\n\treturn dynamicPropType && isDynamicPropType( dynamicPropType ) ? dynamicPropType : null;\n};\n\nexport const isDynamicPropValue = ( prop: PropValue ): prop is DynamicPropValue => {\n\treturn isTransformable( prop ) && prop.$$type === DYNAMIC_PROP_TYPE_KEY;\n};\n\nexport const supportsDynamic = ( propType: PropType ): boolean => {\n\treturn !! getDynamicPropType( propType );\n};\n\nexport const dynamicPropTypeUtil = createPropUtils(\n\tDYNAMIC_PROP_TYPE_KEY,\n\tz.strictObject( {\n\t\tname: z.string(),\n\t\tgroup: z.string(),\n\t\tsettings: z.any().optional(),\n\t} )\n);\n\nexport type DynamicPropValue = z.infer< typeof dynamicPropTypeUtil.schema >;\n","import * as React from 'react';\nimport { ControlFormLabel, useBoundProp } from '@elementor/editor-controls';\nimport type { Control, ControlLayout, ControlsSection } from '@elementor/editor-elements';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { DatabaseIcon, SettingsIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tDivider,\n\tGrid,\n\tIconButton,\n\tPopover,\n\tStack,\n\tTab,\n\tTabPanel,\n\tTabs,\n\tUnstableTag as Tag,\n\tusePopupState,\n\tuseTabs,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverBody } from '../../components/popover-body';\nimport { Control as BaseControl } from '../../controls-registry/control';\nimport { controlsRegistry, type ControlType } from '../../controls-registry/controls-registry';\nimport { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';\nimport { DynamicControl } from '../dynamic-control';\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\nimport { type DynamicTag } from '../types';\nimport { dynamicPropTypeUtil } from '../utils';\nimport { DynamicSelection } from './dynamic-selection';\n\nconst SIZE = 'tiny';\n\nconst tagsWithoutTabs = [ 'popup' ];\n\nexport const DynamicSelectionControl = () => {\n\tconst { setValue: setAnyValue } = useBoundProp();\n\tconst { bind, value } = useBoundProp( dynamicPropTypeUtil );\n\n\tconst [ propValueFromHistory ] = usePersistDynamicValue( bind );\n\tconst selectionPopoverState = usePopupState( { variant: 'popover' } );\n\n\tconst { name: tagName = '' } = value;\n\n\tconst dynamicTag = useDynamicTag( tagName );\n\n\tconst removeDynamicTag = () => {\n\t\tsetAnyValue( propValueFromHistory ?? null );\n\t};\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ tagName } not found` );\n\t}\n\n\treturn (\n\t\t<Box>\n\t\t\t<Tag\n\t\t\t\tfullWidth\n\t\t\t\tshowActionsOnHover\n\t\t\t\tlabel={ dynamicTag.label }\n\t\t\t\tstartIcon={ <DatabaseIcon fontSize={ SIZE } /> }\n\t\t\t\t{ ...bindTrigger( selectionPopoverState ) }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DynamicSettingsPopover dynamicTag={ dynamicTag } />\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ removeDynamicTag }\n\t\t\t\t\t\t\taria-label={ __( 'Remove dynamic value', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( selectionPopoverState ) }\n\t\t\t>\n\t\t\t\t<PopoverBody aria-label={ __( 'Dynamic tags', 'elementor' ) }>\n\t\t\t\t\t<DynamicSelection close={ selectionPopoverState.close } />\n\t\t\t\t</PopoverBody>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n\nexport const DynamicSettingsPopover = ( { dynamicTag }: { dynamicTag: DynamicTag } ) => {\n\tconst popupState = usePopupState( { variant: 'popover' } );\n\n\tconst hasDynamicSettings = !! dynamicTag.atomic_controls.length;\n\n\tif ( ! hasDynamicSettings ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<IconButton\n\t\t\t\tsize={ SIZE }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\taria-label={ __( 'Dynamic settings', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<SettingsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<PopoverBody aria-label={ __( 'Dynamic settings', 'elementor' ) }>\n\t\t\t\t\t<PopoverHeader\n\t\t\t\t\t\ttitle={ dynamicTag.label }\n\t\t\t\t\t\tonClose={ popupState.close }\n\t\t\t\t\t\ticon={ <DatabaseIcon fontSize={ SIZE } /> }\n\t\t\t\t\t/>\n\t\t\t\t\t<DynamicSettings controls={ dynamicTag.atomic_controls } tagName={ dynamicTag.name } />\n\t\t\t\t</PopoverBody>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n\nconst DynamicSettings = ( { controls, tagName }: { controls: DynamicTag[ 'atomic_controls' ]; tagName: string } ) => {\n\tconst tabs = controls.filter( ( { type } ) => type === 'section' ) as ControlsSection[];\n\tconst { getTabsProps, getTabProps, getTabPanelProps } = useTabs< number >( 0 );\n\n\tif ( ! tabs.length ) {\n\t\t// Dynamic must have hierarchical controls.\n\t\treturn null;\n\t}\n\n\tif ( tagsWithoutTabs.includes( tagName ) ) {\n\t\tconst singleTab = tabs[ 0 ];\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Divider />\n\t\t\t\t<ControlsItemsStack items={ singleTab.value.items } />\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ tabs.length > 1 && (\n\t\t\t\t<Tabs size=\"small\" variant=\"fullWidth\" { ...getTabsProps() }>\n\t\t\t\t\t{ tabs.map( ( { value }, index ) => (\n\t\t\t\t\t\t<Tab\n\t\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\tsx={ { px: 1, py: 0.5 } }\n\t\t\t\t\t\t\t{ ...getTabProps( index ) }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Tabs>\n\t\t\t) }\n\t\t\t<Divider />\n\t\t\t{ tabs.map( ( { value }, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TabPanel\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tsx={ { flexGrow: 1, py: 0, overflowY: 'auto' } }\n\t\t\t\t\t\t{ ...getTabPanelProps( index ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ControlsItemsStack items={ value.items } />\n\t\t\t\t\t</TabPanel>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n};\n\nconst LAYOUT_OVERRIDE_FIELDS = {\n\tseparator: 'two-columns',\n\taction: 'full',\n\toff_canvas: 'full',\n\ttype: 'two-columns',\n} as const;\n\nconst DYNAMIC_TAG_LAYOUT_OVERRIDES = {\n\tselect: 'full',\n} as const;\n\nconst getLayout = ( control: Control[ 'value' ] ): ControlLayout => {\n\tconst dynamicOverride = DYNAMIC_TAG_LAYOUT_OVERRIDES[ control.type as keyof typeof DYNAMIC_TAG_LAYOUT_OVERRIDES ];\n\tif ( dynamicOverride ) {\n\t\treturn dynamicOverride;\n\t}\n\n\treturn (\n\t\tLAYOUT_OVERRIDE_FIELDS[ control.bind as keyof typeof LAYOUT_OVERRIDE_FIELDS ] ??\n\t\tcontrolsRegistry.getLayout( control.type as ControlType )\n\t);\n};\n\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! controlsRegistry.get( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\tconst layout = getLayout( control );\n\n\tconst shouldDisablePortal = control.type === 'select';\n\tconst baseControlProps = shouldDisablePortal\n\t\t? {\n\t\t\t\t...control.props,\n\t\t\t\tMenuProps: {\n\t\t\t\t\t...( control.props?.MenuProps ?? {} ),\n\t\t\t\t\tdisablePortal: true,\n\t\t\t\t},\n\t\t }\n\t\t: { ...control.props };\n\tconst controlProps = {\n\t\t...baseControlProps,\n\t\tariaLabel: control.label,\n\t} as typeof baseControlProps & { ariaLabel?: string };\n\tconst isSwitchControl = control.type === 'switch';\n\tconst layoutStyleProps =\n\t\tlayout === 'two-columns'\n\t\t\t? {\n\t\t\t\t\tdisplay: 'grid',\n\t\t\t\t\tgridTemplateColumns: isSwitchControl ? 'minmax(0, 1fr) max-content' : '1fr 1fr',\n\t\t\t }\n\t\t\t: {};\n\n\treturn (\n\t\t<DynamicControl bind={ control.bind }>\n\t\t\t<Grid container gap={ 0.75 } sx={ layoutStyleProps }>\n\t\t\t\t{ control.label ? (\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlFormLabel>{ control.label }</ControlFormLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t) : null }\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<BaseControl type={ control.type as ControlType } props={ controlProps } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</DynamicControl>\n\t);\n};\n\nfunction ControlsItemsStack( { items }: { items: ControlsSection[ 'value' ][ 'items' ] } ) {\n\treturn (\n\t\t<Stack p={ 2 } gap={ 2 } sx={ { overflowY: 'auto' } }>\n\t\t\t{ items.map( ( item ) =>\n\t\t\t\titem.type === 'control' ? <Control key={ item.value.bind } control={ item.value } /> : null\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n","import { type PropValue } from '@elementor/editor-props';\nimport { useSessionStorage } from '@elementor/session';\n\nimport { useElement } from '../contexts/element-context';\nimport { type DynamicPropValue } from '../dynamics/types';\n\nexport const usePersistDynamicValue = < T extends DynamicPropValue | PropValue >( propKey: string ) => {\n\tconst { element } = useElement();\n\tconst prefixedKey = `dynamic/non-dynamic-values-history/${ element.id }/${ propKey }`;\n\treturn useSessionStorage< T >( prefixedKey );\n};\n","import * as React from 'react';\nimport { PropKeyProvider, PropProvider, type SetValue, useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { createTopLevelObjectType } from '../controls-registry/create-top-level-object-type';\nimport { DynamicConditionalControl } from './components/dynamic-conditional-control';\nimport { useDynamicTag } from './hooks/use-dynamic-tag';\nimport { dynamicPropTypeUtil, type DynamicPropValue } from './utils';\n\ntype DynamicControlProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const DynamicControl = ( { bind, children }: DynamicControlProps ) => {\n\tconst { value, setValue } = useBoundProp( dynamicPropTypeUtil );\n\tconst { name = '', group = '', settings } = value ?? {};\n\n\tconst dynamicTag = useDynamicTag( name );\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ name } not found` );\n\t}\n\n\tconst dynamicPropType = dynamicTag.props_schema[ bind ];\n\n\tconst defaultValue = dynamicPropType?.default;\n\tconst dynamicValue = settings?.[ bind ] ?? defaultValue;\n\n\tconst setDynamicValue: SetValue< Record< string, DynamicPropValue > > = ( newValues ) => {\n\t\tsetValue( {\n\t\t\tname,\n\t\t\tgroup,\n\t\t\tsettings: {\n\t\t\t\t...settings,\n\t\t\t\t...newValues,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst propType = createTopLevelObjectType( { schema: dynamicTag.props_schema } );\n\n\treturn (\n\t\t<PropProvider propType={ propType } setValue={ setDynamicValue } value={ { [ bind ]: dynamicValue } }>\n\t\t\t<PropKeyProvider bind={ bind }>\n\t\t\t\t<DynamicConditionalControl\n\t\t\t\t\tpropType={ dynamicPropType }\n\t\t\t\t\tpropsSchema={ dynamicTag.props_schema }\n\t\t\t\t\tdynamicSettings={ settings }\n\t\t\t\t>\n\t\t\t\t\t{ children }\n\t\t\t\t</DynamicConditionalControl>\n\t\t\t</PropKeyProvider>\n\t\t</PropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { isDependencyMet, type PropsSchema, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { type DynamicPropValue } from '../utils';\n\ntype DynamicConditionalControlProps = React.PropsWithChildren< {\n\tpropType?: PropType;\n\tpropsSchema?: PropsSchema;\n\tdynamicSettings?: Record< string, DynamicPropValue >;\n} >;\n\nexport const DynamicConditionalControl: React.FC< DynamicConditionalControlProps > = ( {\n\tchildren,\n\tpropType,\n\tpropsSchema,\n\tdynamicSettings,\n} ) => {\n\tconst defaults = React.useMemo< Record< string, PropValue | null > >( () => {\n\t\tif ( ! propsSchema ) {\n\t\t\treturn {};\n\t\t}\n\n\t\tconst entries = Object.entries( propsSchema ) as Array< [ string, PropType ] >;\n\t\treturn entries.reduce< Record< string, PropValue | null > >( ( result, [ key, prop ] ) => {\n\t\t\tresult[ key ] = prop?.default ?? null;\n\t\t\treturn result;\n\t\t}, {} );\n\t}, [ propsSchema ] );\n\n\tconst convertedSettings = React.useMemo( () => {\n\t\tif ( ! dynamicSettings ) {\n\t\t\treturn {};\n\t\t}\n\n\t\treturn Object.entries( dynamicSettings ).reduce< Record< string, PropValue > >(\n\t\t\t( result, [ key, dynamicValue ] ) => {\n\t\t\t\tif ( dynamicValue && typeof dynamicValue === 'object' && '$$type' in dynamicValue ) {\n\t\t\t\t\tresult[ key ] = dynamicValue as PropValue;\n\t\t\t\t} else {\n\t\t\t\t\tresult[ key ] = {\n\t\t\t\t\t\t$$type: 'plain',\n\t\t\t\t\t\tvalue: dynamicValue,\n\t\t\t\t\t} as PropValue;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}, [ dynamicSettings ] );\n\n\tconst effectiveSettings = React.useMemo( () => {\n\t\treturn { ...defaults, ...convertedSettings } as Record< string, PropValue >;\n\t}, [ defaults, convertedSettings ] );\n\n\tif ( ! propType?.dependencies?.terms.length ) {\n\t\treturn <>{ children }</>;\n\t}\n\n\tconst isHidden = ! isDependencyMet( propType?.dependencies, effectiveSettings ).isMet;\n\n\treturn isHidden ? null : <>{ children }</>;\n};\n","import { Fragment, useState } from 'react';\nimport * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { PopoverHeader, PopoverMenuList, SearchField } from '@elementor/editor-ui';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { Divider, Link, Stack, Typography, useTheme } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverBody } from '../../components/popover-body';\nimport { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';\nimport { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { dynamicPropTypeUtil } from '../utils';\n\ntype Option = {\n\tlabel: string;\n\tvalue: string;\n\tgroup: string;\n};\n\ntype OptionEntry = [ string, Option[] ];\n\nconst SIZE = 'tiny';\n\ntype DynamicSelectionProps = {\n\tclose: () => void;\n};\n\ntype NoResultsProps = {\n\tsearchValue: string;\n\tonClear?: () => void;\n};\n\nexport const DynamicSelection = ( { close: closePopover }: DynamicSelectionProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { groups: dynamicGroups } = getAtomicDynamicTags() || {};\n\tconst theme = useTheme();\n\n\tconst { value: anyValue } = useBoundProp();\n\tconst { bind, value: dynamicValue, setValue } = useBoundProp( dynamicPropTypeUtil );\n\n\tconst [ , updatePropValueHistory ] = usePersistDynamicValue( bind );\n\n\tconst isCurrentValueDynamic = !! dynamicValue;\n\n\tconst options = useFilteredOptions( searchValue );\n\n\tconst hasNoDynamicTags = ! options.length && ! searchValue.trim();\n\n\tconst handleSearch = ( value: string ) => {\n\t\tsetSearchValue( value );\n\t};\n\n\tconst handleSetDynamicTag = ( value: string ) => {\n\t\tif ( ! isCurrentValueDynamic ) {\n\t\t\tupdatePropValueHistory( anyValue );\n\t\t}\n\n\t\tconst selectedOption = options.flatMap( ( [ , items ] ) => items ).find( ( item ) => item.value === value );\n\n\t\tsetValue( { name: value, group: selectedOption?.group ?? '', settings: { label: selectedOption?.label } } );\n\n\t\tclosePopover();\n\t};\n\n\tconst virtualizedItems = options.flatMap( ( [ category, items ] ) => [\n\t\t{\n\t\t\ttype: 'category' as const,\n\t\t\tvalue: category,\n\t\t\tlabel: dynamicGroups?.[ category ]?.title || category,\n\t\t},\n\t\t...items.map( ( item ) => ( {\n\t\t\ttype: 'item' as const,\n\t\t\tvalue: item.value,\n\t\t\tlabel: item.label,\n\t\t} ) ),\n\t] );\n\n\treturn (\n\t\t<PopoverBody aria-label={ __( 'Dynamic tags', 'elementor' ) }>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Dynamic tags', 'elementor' ) }\n\t\t\t\tonClose={ closePopover }\n\t\t\t\ticon={ <DatabaseIcon fontSize={ SIZE } /> }\n\t\t\t/>\n\t\t\t{ hasNoDynamicTags ? (\n\t\t\t\t<NoDynamicTags />\n\t\t\t) : (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<SearchField\n\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\tonSearch={ handleSearch }\n\t\t\t\t\t\tplaceholder={ __( 'Search dynamic tags…', 'elementor' ) }\n\t\t\t\t\t/>\n\n\t\t\t\t\t<Divider />\n\n\t\t\t\t\t<PopoverMenuList\n\t\t\t\t\t\titems={ virtualizedItems }\n\t\t\t\t\t\tonSelect={ handleSetDynamicTag }\n\t\t\t\t\t\tonClose={ closePopover }\n\t\t\t\t\t\tselectedValue={ dynamicValue?.name }\n\t\t\t\t\t\titemStyle={ ( item ) =>\n\t\t\t\t\t\t\titem.type === 'item' ? { paddingInlineStart: theme.spacing( 3.5 ) } : {}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnoResultsComponent={\n\t\t\t\t\t\t\t<NoResults searchValue={ searchValue } onClear={ () => setSearchValue( '' ) } />\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Fragment>\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n\nconst NoResults = ( { searchValue, onClear }: NoResultsProps ) => (\n\t<Stack\n\t\tgap={ 1 }\n\t\talignItems=\"center\"\n\t\tjustifyContent=\"center\"\n\t\theight=\"100%\"\n\t\tp={ 2.5 }\n\t\tcolor=\"text.secondary\"\n\t\tsx={ { pb: 3.5 } }\n\t>\n\t\t<DatabaseIcon fontSize=\"large\" />\n\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t<br />\n\t\t\t&ldquo;{ searchValue }&rdquo;.\n\t\t</Typography>\n\t\t<Typography align=\"center\" variant=\"caption\" sx={ { display: 'flex', flexDirection: 'column' } }>\n\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t<Link color=\"text.secondary\" variant=\"caption\" component=\"button\" onClick={ onClear }>\n\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t</Link>\n\t\t</Typography>\n\t</Stack>\n);\n\nconst NoDynamicTags = () => (\n\t<>\n\t\t<Divider />\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tp={ 2.5 }\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { pb: 3.5 } }\n\t\t>\n\t\t\t<DatabaseIcon fontSize=\"large\" />\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Streamline your workflow with dynamic tags', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\">\n\t\t\t\t{ __( \"You'll need Elementor Pro to use this feature.\", 'elementor' ) }\n\t\t\t</Typography>\n\t\t</Stack>\n\t</>\n);\n\nconst useFilteredOptions = ( searchValue: string ): OptionEntry[] => {\n\tconst dynamicTags = usePropDynamicTags();\n\n\tconst options = dynamicTags.reduce< Map< string, Option[] > >( ( categories, { name, label, group } ) => {\n\t\tconst isVisible = label.toLowerCase().includes( searchValue.trim().toLowerCase() );\n\n\t\tif ( ! isVisible ) {\n\t\t\treturn categories;\n\t\t}\n\n\t\tif ( ! categories.has( group ) ) {\n\t\t\tcategories.set( group, [] );\n\t\t}\n\n\t\tcategories.get( group )?.push( { label, group, value: name } );\n\n\t\treturn categories;\n\t}, new Map() );\n\n\treturn [ ...options ];\n};\n","import { createTransformer } from '@elementor/editor-canvas';\nimport { isTransformable, type Props } from '@elementor/editor-props';\n\nimport { DynamicTagsManagerNotFoundError } from './errors';\nimport { type ExtendedWindow } from './types';\n\ntype Dynamic = {\n\tname?: string;\n\tsettings?: Props;\n};\n\nexport const dynamicTransformer = createTransformer( ( value: Dynamic ) => {\n\tif ( ! value.name ) {\n\t\treturn null;\n\t}\n\n\treturn getDynamicValue( value.name, simpleTransform( value.settings ?? {} ) );\n} );\n\n// Temporary naive transformation until we'll have a `backendTransformer` that\n// will replace the `dynamicTransformer` client implementation.\nfunction simpleTransform( props: Props ) {\n\tconst transformed = Object.entries( props ).map( ( [ settingKey, settingValue ] ) => {\n\t\tconst value = isTransformable( settingValue ) ? settingValue.value : settingValue;\n\n\t\treturn [ settingKey, value ] as const;\n\t} );\n\n\treturn Object.fromEntries( transformed );\n}\n\nfunction getDynamicValue( name: string, settings: Record< string, unknown > ) {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst { dynamicTags } = extendedWindow.elementor ?? {};\n\n\tif ( ! dynamicTags ) {\n\t\tthrow new DynamicTagsManagerNotFoundError();\n\t}\n\n\tconst getTagValue = () => {\n\t\tconst tag = dynamicTags.createTag( 'v4-dynamic-tag', name, settings );\n\n\t\tif ( ! tag ) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn dynamicTags.loadTagDataFromCache( tag ) ?? null;\n\t};\n\n\tconst tagValue = getTagValue();\n\n\tif ( tagValue !== null ) {\n\t\treturn tagValue;\n\t}\n\n\treturn new Promise( ( resolve ) => {\n\t\tdynamicTags.refreshCacheFromServer( () => {\n\t\t\tresolve( getTagValue() );\n\t\t} );\n\t} );\n}\n","import { createError } from '@elementor/utils';\n\nexport const DynamicTagsManagerNotFoundError = createError( {\n\tcode: 'dynamic_tags_manager_not_found',\n\tmessage: 'Dynamic tags manager not found',\n} );\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { type PopoverActionProps } from '../../popover-action';\nimport { DynamicSelection } from '../components/dynamic-selection';\nimport { supportsDynamic } from '../utils';\n\nexport const usePropDynamicAction = (): PopoverActionProps => {\n\tconst { propType } = useBoundProp();\n\n\tconst visible = !! propType && supportsDynamic( propType );\n\n\treturn {\n\t\tvisible,\n\t\ticon: DatabaseIcon,\n\t\ttitle: __( 'Dynamic tags', 'elementor' ),\n\t\tcontent: ( { close } ) => <DynamicSelection close={ close } />,\n\t};\n};\n","import { useBoundProp } from '@elementor/editor-controls';\nimport { BrushBigIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { useIsStyle } from './contexts/style-context';\nimport { controlActionsMenu } from './controls-actions';\nimport { isEqual } from './utils/is-equal';\n\nconst { registerAction } = controlActionsMenu;\n\nexport function initResetStyleProps() {\n\tregisterAction( {\n\t\tid: 'reset-style-value',\n\t\tuseProps: useResetStyleValueProps,\n\t} );\n}\n\nexport function useResetStyleValueProps() {\n\tconst isStyle = useIsStyle();\n\tconst { value, resetValue, propType } = useBoundProp();\n\tconst hasValue = value !== null && value !== undefined;\n\tconst hasInitial = propType.initial_value !== undefined && propType.initial_value !== null;\n\tconst isRequired = !! propType.settings?.required;\n\tconst shouldHide = !! propType.settings?.hide_reset;\n\n\tfunction calculateVisibility() {\n\t\tif ( ! isStyle || ! hasValue || shouldHide ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( hasInitial ) {\n\t\t\treturn ! isEqual( value, propType.initial_value );\n\t\t}\n\n\t\treturn ! isRequired;\n\t}\n\n\tconst visible = calculateVisibility();\n\n\treturn {\n\t\tvisible,\n\t\ttitle: __( 'Clear', 'elementor' ),\n\t\ticon: BrushBigIcon,\n\t\tonClick: () => resetValue(),\n\t};\n}\n","export function isEqual( a: unknown, b: unknown ): boolean {\n\tif ( a === b ) {\n\t\treturn true;\n\t}\n\n\tif ( a === null || b === null ) {\n\t\treturn false;\n\t}\n\n\tif ( typeof a !== typeof b ) {\n\t\treturn false;\n\t}\n\n\tif ( Array.isArray( a ) && Array.isArray( b ) ) {\n\t\tif ( a.length !== b.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor ( let i = 0; i < a.length; i++ ) {\n\t\t\tif ( ! isEqual( a[ i ], b[ i ] ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tif ( typeof a === 'object' && typeof b === 'object' ) {\n\t\tconst objA = a as Record< string, unknown >;\n\t\tconst objB = b as Record< string, unknown >;\n\n\t\tconst keysA = Object.keys( objA );\n\t\tconst keysB = Object.keys( objB );\n\n\t\tif ( keysA.length !== keysB.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor ( const key of keysA ) {\n\t\t\tif ( ! ( key in objB ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif ( ! isEqual( objA[ key ], objB[ key ] ) ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import * as React from 'react';\nimport { type ComponentProps } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { isEmpty, type PropType } from '@elementor/editor-props';\nimport { ELEMENTS_BASE_STYLES_PROVIDER_KEY } from '@elementor/editor-styles-repository';\nimport { __ } from '@wordpress/i18n';\n\nimport { StyleIndicator } from '../../components/style-indicator';\nimport { useStyle } from '../../contexts/style-context';\nimport { useStylesInheritanceChain } from '../../contexts/styles-inheritance-context';\nimport { getStylesProviderThemeColor } from '../../utils/get-styles-provider-color';\nimport { type SnapshotPropValue } from '../types';\nimport { getValueFromInheritanceChain } from '../utils';\nimport { StylesInheritanceInfotip } from './styles-inheritance-infotip';\nexport const StylesInheritanceIndicator = ( {\n\tcustomContext,\n}: {\n\tcustomContext?: { path: string[]; propType: PropType };\n} ) => {\n\tconst context = useBoundProp();\n\tconst { path, propType } = customContext || context;\n\tconst inheritanceChain = useStylesInheritanceChain( path );\n\n\tif ( ! path || ! inheritanceChain.length ) {\n\t\treturn null;\n\t}\n\n\treturn <Indicator inheritanceChain={ inheritanceChain } path={ path } propType={ propType } />;\n};\n\ntype IndicatorProps = {\n\tinheritanceChain: SnapshotPropValue[];\n\tpath: string[];\n\tpropType: PropType;\n\tisDisabled?: boolean;\n};\n\nconst Indicator = ( { inheritanceChain, path, propType, isDisabled }: IndicatorProps ) => {\n\tconst { id: currentStyleId, provider: currentStyleProvider, meta: currentStyleMeta } = useStyle();\n\n\tconst currentItem = currentStyleId\n\t\t? getValueFromInheritanceChain( inheritanceChain, currentStyleId, currentStyleMeta )\n\t\t: null;\n\n\tconst hasValue = ! isEmpty( currentItem?.value );\n\n\tconst [ actualStyle ] = inheritanceChain;\n\n\tif ( actualStyle.provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {\n\t\treturn null;\n\t}\n\n\tconst isFinalValue = currentItem === actualStyle;\n\n\tconst label = getLabel( { isFinalValue, hasValue } );\n\n\tconst styleIndicatorProps: ComponentProps< typeof StyleIndicator > = {\n\t\tgetColor:\n\t\t\tisFinalValue && currentStyleProvider\n\t\t\t\t? getStylesProviderThemeColor( currentStyleProvider.getKey() )\n\t\t\t\t: undefined,\n\t\tisOverridden: hasValue && ! isFinalValue ? true : undefined,\n\t};\n\n\treturn (\n\t\t<StylesInheritanceInfotip\n\t\t\tinheritanceChain={ inheritanceChain }\n\t\t\tpath={ path }\n\t\t\tpropType={ propType }\n\t\t\tlabel={ label }\n\t\t\tisDisabled={ isDisabled }\n\t\t>\n\t\t\t<StyleIndicator { ...styleIndicatorProps } />\n\t\t</StylesInheritanceInfotip>\n\t);\n};\n\nconst getLabel = ( { isFinalValue, hasValue }: { isFinalValue: boolean; hasValue: boolean } ) => {\n\tif ( isFinalValue ) {\n\t\treturn __( 'This is the final value', 'elementor' );\n\t}\n\n\tif ( hasValue ) {\n\t\treturn __( 'This value is overridden by another style', 'elementor' );\n\t}\n\n\treturn __( 'This has value from another style', 'elementor' );\n};\n","import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { createPropsResolver, type PropsResolver } from '@elementor/editor-canvas';\nimport { type PropKey, type PropType } from '@elementor/editor-props';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport {\n\tBackdrop,\n\tBox,\n\tCard,\n\tCardContent,\n\tClickAwayListener,\n\tIconButton,\n\tInfotip,\n\tStack,\n\ttype Theme,\n\tTooltip,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useSectionWidth } from '../../contexts/section-context';\nimport { useDirection } from '../../hooks/use-direction';\nimport { useNormalizedInheritanceChainItems } from '../hooks/use-normalized-inheritance-chain-items';\nimport { stylesInheritanceTransformersRegistry } from '../styles-inheritance-transformers-registry';\nimport { type SnapshotPropValue } from '../types';\nimport { ActionIcons, BreakpointIcon, LabelChip, ValueComponent } from './infotip';\n\nconst SECTION_PADDING_INLINE = 32;\n\ntype Props = {\n\tinheritanceChain: SnapshotPropValue[];\n\tpropType: PropType;\n\tpath: PropKey[];\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tisDisabled?: boolean;\n};\n\nexport const StylesInheritanceInfotip = ( {\n\tinheritanceChain,\n\tpropType,\n\tpath,\n\tlabel,\n\tchildren,\n\tisDisabled,\n}: Props ) => {\n\tconst [ showInfotip, setShowInfotip ] = useState< boolean >( false );\n\n\tconst toggleInfotip = () => {\n\t\tif ( isDisabled ) {\n\t\t\treturn;\n\t\t}\n\t\tsetShowInfotip( ( prev ) => ! prev );\n\t};\n\n\tconst closeInfotip = () => {\n\t\tif ( isDisabled ) {\n\t\t\treturn;\n\t\t}\n\t\tsetShowInfotip( false );\n\t};\n\n\tconst key = path.join( '.' );\n\n\tconst sectionWidth = useSectionWidth();\n\n\tconst resolve = useMemo< PropsResolver >( () => {\n\t\treturn createPropsResolver( {\n\t\t\ttransformers: stylesInheritanceTransformersRegistry,\n\t\t\tschema: { [ key ]: propType },\n\t\t} );\n\t}, [ key, propType ] );\n\n\tconst items = useNormalizedInheritanceChainItems( inheritanceChain, key, resolve );\n\n\tconst infotipContent = (\n\t\t<ClickAwayListener onClickAway={ closeInfotip }>\n\t\t\t<Card\n\t\t\t\televation={ 0 }\n\t\t\t\tsx={ {\n\t\t\t\t\twidth: `${ sectionWidth - SECTION_PADDING_INLINE }px`,\n\t\t\t\t\tmaxWidth: 496,\n\t\t\t\t\tmaxHeight: 268,\n\t\t\t\t\toverflowX: 'hidden',\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Box\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tposition: 'sticky',\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tzIndex: 1,\n\t\t\t\t\t\tbackgroundColor: 'background.paper',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<PopoverHeader title={ __( 'Style origin', 'elementor' ) } onClose={ closeInfotip } />\n\t\t\t\t</Box>\n\n\t\t\t\t<CardContent\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\tp: 0,\n\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t\t'&:last-child': {\n\t\t\t\t\t\t\tpb: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Stack gap={ 1.5 } sx={ { pl: 3, pr: 1, pb: 2 } } role=\"list\">\n\t\t\t\t\t\t{ items.map( ( item, index ) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\t\t\tkey={ item.id }\n\t\t\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\t\t\tgap={ 0.5 }\n\t\t\t\t\t\t\t\t\trole=\"listitem\"\n\t\t\t\t\t\t\t\t\t// translators: %s is the display label of the inheritance item\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Inheritance item: %s', 'elementor' ).replace(\n\t\t\t\t\t\t\t\t\t\t'%s',\n\t\t\t\t\t\t\t\t\t\titem.displayLabel\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\t\t<Box\n\t\t\t\t\t\t\t\t\t\tdisplay=\"flex\"\n\t\t\t\t\t\t\t\t\t\tgap={ 0.5 }\n\t\t\t\t\t\t\t\t\t\tsx={ { flexWrap: 'wrap', width: '100%', alignItems: 'flex-start' } }\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<BreakpointIcon breakpoint={ item.breakpoint } />\n\t\t\t\t\t\t\t\t\t\t<LabelChip displayLabel={ item.displayLabel } provider={ item.provider } />\n\t\t\t\t\t\t\t\t\t\t<ValueComponent index={ index } value={ item.value } />\n\t\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t\t\t<ActionIcons />\n\t\t\t\t\t\t\t\t</Box>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t</Stack>\n\t\t\t\t</CardContent>\n\t\t\t</Card>\n\t\t</ClickAwayListener>\n\t);\n\n\tif ( isDisabled ) {\n\t\treturn <Box sx={ { display: 'inline-flex' } }>{ children }</Box>;\n\t}\n\n\treturn (\n\t\t<TooltipOrInfotip\n\t\t\tshowInfotip={ showInfotip }\n\t\t\tonClose={ closeInfotip }\n\t\t\tinfotipContent={ infotipContent }\n\t\t\tisDisabled={ isDisabled }\n\t\t>\n\t\t\t<IconButton onClick={ toggleInfotip } aria-label={ label } sx={ { my: '-1px' } } disabled={ isDisabled }>\n\t\t\t\t{ children }\n\t\t\t</IconButton>\n\t\t</TooltipOrInfotip>\n\t);\n};\n\nfunction TooltipOrInfotip( {\n\tchildren,\n\tshowInfotip,\n\tonClose,\n\tinfotipContent,\n\tisDisabled,\n}: {\n\tchildren: React.ReactNode;\n\tshowInfotip: boolean;\n\tonClose: () => void;\n\tinfotipContent: React.ReactNode;\n\tisDisabled?: boolean;\n} ) {\n\tconst direction = useDirection();\n\tconst isSiteRtl = direction.isSiteRtl;\n\tconst forceInfotipAlignLeft = isSiteRtl ? 9999999 : -9999999;\n\n\tif ( isDisabled ) {\n\t\treturn <Box sx={ { display: 'inline-flex' } }>{ children }</Box>;\n\t}\n\n\tif ( showInfotip ) {\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<Backdrop\n\t\t\t\t\topen={ showInfotip }\n\t\t\t\t\tonClick={ onClose }\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tbackgroundColor: 'transparent',\n\t\t\t\t\t\tzIndex: ( theme: Theme ) => theme.zIndex.modal - 1,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<Infotip\n\t\t\t\t\tplacement=\"top\"\n\t\t\t\t\tcontent={ infotipContent }\n\t\t\t\t\topen={ showInfotip }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\tdisableHoverListener\n\t\t\t\t\tcomponentsProps={ {\n\t\t\t\t\t\ttooltip: {\n\t\t\t\t\t\t\tsx: { mx: 2 },\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\toptions: { offset: [ forceInfotipAlignLeft, 0 ] },\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\t\t{ children }\n\t\t\t\t</Infotip>\n\t\t\t</>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tooltip title={ __( 'Style origin', 'elementor' ) } placement=\"top\">\n\t\t\t{ children }\n\t\t</Tooltip>\n\t);\n}\n","import { isValidElement, type ReactNode, useEffect, useState } from 'react';\nimport { type PropsResolver, UnknownStyleStateError } from '@elementor/editor-canvas';\nimport { type PropKey } from '@elementor/editor-props';\nimport {\n\tisClassState,\n\tisPseudoState,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionVariant,\n} from '@elementor/editor-styles';\nimport { ELEMENTS_BASE_STYLES_PROVIDER_KEY } from '@elementor/editor-styles-repository';\nimport { __ } from '@wordpress/i18n';\n\nimport { type SnapshotPropValue } from '../types';\n\nconst MAXIMUM_ITEMS = 2;\n\ntype NormalizedItem = {\n\tid: string | number;\n\tprovider: string;\n\tbreakpoint?: StyleDefinitionVariant[ 'meta' ][ 'breakpoint' ];\n\tdisplayLabel: string;\n\tvalue: ReactNode | string;\n};\n\nexport const useNormalizedInheritanceChainItems = (\n\tinheritanceChain: SnapshotPropValue[],\n\tbind: PropKey,\n\tresolve: PropsResolver\n) => {\n\tconst [ items, setItems ] = useState< NormalizedItem[] >( [] );\n\n\tuseEffect( () => {\n\t\t( async () => {\n\t\t\tconst normalizedItems = await Promise.all(\n\t\t\t\tinheritanceChain\n\t\t\t\t\t.filter( ( { style } ) => style )\n\t\t\t\t\t.map( ( item, index ) => normalizeInheritanceItem( item, index, bind, resolve ) )\n\t\t\t);\n\n\t\t\tconst validItems = normalizedItems\n\t\t\t\t.map( ( item ) => ( {\n\t\t\t\t\t...item,\n\t\t\t\t\tdisplayLabel:\n\t\t\t\t\t\tELEMENTS_BASE_STYLES_PROVIDER_KEY !== item.provider\n\t\t\t\t\t\t\t? item.displayLabel\n\t\t\t\t\t\t\t: __( 'Base', 'elementor' ),\n\t\t\t\t} ) )\n\t\t\t\t.filter( ( item ) => ! item.value || item.displayLabel !== '' )\n\t\t\t\t.slice( 0, MAXIMUM_ITEMS );\n\n\t\t\tsetItems( validItems );\n\t\t} )();\n\t}, [ inheritanceChain, bind, resolve ] );\n\n\treturn items;\n};\n\nconst DEFAULT_BREAKPOINT = 'desktop';\n\nexport const normalizeInheritanceItem = async (\n\titem: SnapshotPropValue,\n\tindex: number,\n\tbind: PropKey,\n\tresolve: PropsResolver\n): Promise< NormalizedItem > => {\n\tconst {\n\t\tvariant: {\n\t\t\tmeta: { state, breakpoint },\n\t\t},\n\t\tstyle: { label, id },\n\t} = item;\n\n\tconst displayLabel = getDisplayLabel( { label, state } );\n\n\treturn {\n\t\tid: id ? id + ( state ?? '' ) : index,\n\t\tprovider: item.provider || '',\n\t\tbreakpoint: breakpoint ?? DEFAULT_BREAKPOINT,\n\t\tdisplayLabel,\n\t\tvalue: await getTransformedValue( item, bind, resolve ),\n\t};\n};\n\nfunction getDisplayLabel( { label, state }: { label: string; state: StyleDefinitionState } ) {\n\tif ( ! state ) {\n\t\treturn label;\n\t}\n\n\tif ( isClassState( state ) ) {\n\t\treturn `${ label }.${ state }`;\n\t}\n\n\tif ( isPseudoState( state ) ) {\n\t\treturn `${ label }:${ state }`;\n\t}\n\n\tthrow new UnknownStyleStateError( { context: { state } } );\n}\nconst getTransformedValue = async (\n\titem: SnapshotPropValue,\n\tbind: PropKey,\n\tresolve: PropsResolver\n): Promise< ReactNode | string > => {\n\ttry {\n\t\tconst result = await resolve( {\n\t\t\tprops: {\n\t\t\t\t[ bind ]: item.value,\n\t\t\t},\n\t\t} );\n\n\t\tconst value = result?.[ bind ] ?? result;\n\n\t\tif ( isValidElement( value ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( typeof value === 'object' ) {\n\t\t\treturn JSON.stringify( value );\n\t\t}\n\n\t\treturn String( value );\n\t} catch {\n\t\treturn '';\n\t}\n};\n","import { createTransformersRegistry } from '@elementor/editor-canvas';\n\nexport const stylesInheritanceTransformersRegistry = createTransformersRegistry();\n","import * as React from 'react';\nimport { type BreakpointId, useBreakpoints } from '@elementor/editor-responsive';\nimport {\n\tDesktopIcon,\n\tLaptopIcon,\n\tMobileLandscapeIcon,\n\tMobilePortraitIcon,\n\tTabletLandscapeIcon,\n\tTabletPortraitIcon,\n\tWidescreenIcon,\n} from '@elementor/icons';\nimport { Tooltip } from '@elementor/ui';\n\ntype Props = {\n\tbreakpoint?: BreakpointId | null;\n};\n\nconst SIZE = 'tiny';\nconst DEFAULT_BREAKPOINT = 'desktop';\n\nconst breakpointIconMap: Record< string, React.ElementType > = {\n\twidescreen: WidescreenIcon,\n\tdesktop: DesktopIcon,\n\tlaptop: LaptopIcon,\n\ttablet_extra: TabletLandscapeIcon,\n\ttablet: TabletPortraitIcon,\n\tmobile_extra: MobileLandscapeIcon,\n\tmobile: MobilePortraitIcon,\n};\n\nexport const BreakpointIcon = ( { breakpoint }: Props ) => {\n\tconst breakpoints = useBreakpoints();\n\tconst currentBreakpoint = breakpoint || DEFAULT_BREAKPOINT;\n\tconst IconComponent = breakpointIconMap[ currentBreakpoint ];\n\n\tif ( ! IconComponent ) {\n\t\treturn null;\n\t}\n\n\tconst breakpointLabel = breakpoints.find( ( breakpointItem ) => breakpointItem.id === currentBreakpoint )?.label;\n\n\treturn (\n\t\t<Tooltip title={ breakpointLabel } placement=\"top\">\n\t\t\t<IconComponent fontSize={ SIZE } sx={ { mt: '2px' } } />\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { ELEMENTS_BASE_STYLES_PROVIDER_KEY } from '@elementor/editor-styles-repository';\nimport { InfoCircleIcon } from '@elementor/icons';\nimport { Chip, type Theme, Tooltip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { getStylesProviderColorName } from '../../../utils/get-styles-provider-color';\n\ntype Props = {\n\tdisplayLabel: string;\n\tprovider: string;\n};\n\nconst SIZE = 'tiny';\n\nexport const LabelChip = ( { displayLabel, provider }: Props ) => {\n\tconst isBaseStyle = provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY;\n\n\tconst chipIcon = isBaseStyle ? (\n\t\t<Tooltip title={ __( 'Inherited from base styles', 'elementor' ) } placement=\"top\">\n\t\t\t<InfoCircleIcon fontSize={ SIZE } />\n\t\t</Tooltip>\n\t) : undefined;\n\n\treturn (\n\t\t<Chip\n\t\t\tlabel={ displayLabel }\n\t\t\tsize={ SIZE }\n\t\t\tcolor={ getStylesProviderColorName( provider ) }\n\t\t\tvariant=\"standard\"\n\t\t\tstate=\"enabled\"\n\t\t\ticon={ chipIcon }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\tlineHeight: 1,\n\t\t\t\tflexWrap: 'nowrap',\n\t\t\t\talignItems: 'center',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius * 0.75 }px`,\n\t\t\t\tflexDirection: 'row-reverse',\n\t\t\t\t'.MuiChip-label': {\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\t},\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n","import * as React from 'react';\nimport { Typography } from '@elementor/ui';\n\ntype Props = {\n\tindex: number;\n\tvalue: React.ReactNode;\n};\n\nexport const ValueComponent = ( { index, value }: Props ) => {\n\treturn (\n\t\t<Typography\n\t\t\tvariant=\"caption\"\n\t\t\tcolor=\"text.tertiary\"\n\t\t\tsx={ {\n\t\t\t\tmt: '1px',\n\t\t\t\ttextDecoration: index === 0 ? 'none' : 'line-through',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\ttextOverflow: 'ellipsis',\n\t\t\t\twhiteSpace: 'nowrap',\n\t\t\t\tpl: 2.5,\n\t\t\t\tminWidth: 0,\n\t\t\t\tmaxWidth: '100%',\n\t\t\t} }\n\t\t>\n\t\t\t{ value }\n\t\t</Typography>\n\t);\n};\n","import * as React from 'react';\nimport { Box } from '@elementor/ui';\n\nexport const ActionIcons = () => (\n\t<Box display=\"flex\" gap={ 0.5 } alignItems=\"center\">\n\t\t{ /* Action Slot */ }\n\t</Box>\n);\n","import { createTransformer, styleTransformersRegistry } from '@elementor/editor-canvas';\n\nimport { excludePropTypeTransformers } from './consts';\nimport { stylesInheritanceTransformersRegistry } from './styles-inheritance-transformers-registry';\nimport { arrayTransformer } from './transformers/array-transformer';\nimport { backgroundColorOverlayTransformer } from './transformers/background-color-overlay-transformer';\nimport { backgroundGradientOverlayTransformer } from './transformers/background-gradient-overlay-transformer';\nimport { backgroundImageOverlayTransformer } from './transformers/background-image-overlay-transformer';\nimport { boxShadowTransformer } from './transformers/box-shadow-transformer';\nimport { colorTransformer } from './transformers/color-transformer';\nimport { createRepeaterToItemsTransformer } from './transformers/repeater-to-items-transformer';\n\nexport function initStylesInheritanceTransformers() {\n\tconst originalStyleTransformers = styleTransformersRegistry.all();\n\n\tObject.entries( originalStyleTransformers ).forEach( ( [ propType, transformer ] ) => {\n\t\tif ( excludePropTypeTransformers.has( propType ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tstylesInheritanceTransformersRegistry.register( propType, transformer );\n\t} );\n\n\tstylesInheritanceTransformersRegistry.registerFallback(\n\t\tcreateTransformer( ( value: unknown ) => {\n\t\t\treturn value;\n\t\t} )\n\t);\n\n\tregisterCustomTransformers( originalStyleTransformers );\n}\n\nfunction registerCustomTransformers( originalStyleTransformers: ReturnType< typeof styleTransformersRegistry.all > ) {\n\tstylesInheritanceTransformersRegistry.register( 'color', colorTransformer );\n\tstylesInheritanceTransformersRegistry.register( 'background-color-overlay', backgroundColorOverlayTransformer );\n\tstylesInheritanceTransformersRegistry.register(\n\t\t'background-gradient-overlay',\n\t\tbackgroundGradientOverlayTransformer\n\t);\n\tstylesInheritanceTransformersRegistry.register( 'background-image-overlay', backgroundImageOverlayTransformer );\n\tstylesInheritanceTransformersRegistry.register( 'shadow', boxShadowTransformer );\n\n\tstylesInheritanceTransformersRegistry.register(\n\t\t'filter',\n\t\tcreateRepeaterToItemsTransformer( originalStyleTransformers.filter )\n\t);\n\tstylesInheritanceTransformersRegistry.register(\n\t\t'backdrop-filter',\n\t\tcreateRepeaterToItemsTransformer( originalStyleTransformers[ 'backdrop-filter' ] )\n\t);\n\tstylesInheritanceTransformersRegistry.register(\n\t\t'transition',\n\t\tcreateRepeaterToItemsTransformer( originalStyleTransformers.transition, ', ' )\n\t);\n\n\t[ 'background-overlay', 'box-shadow', 'transform-functions' ].forEach( ( propType ) =>\n\t\tstylesInheritanceTransformersRegistry.register( propType, arrayTransformer )\n\t);\n}\n","// the following prop types' style transformers would be ignored to provide alternative transformers for the styles inheritance popover\nexport const excludePropTypeTransformers = new Set( [\n\t'background-color-overlay',\n\t'background-image-overlay',\n\t'background-gradient-overlay',\n\t'gradient-color-stop',\n\t'color-stop',\n\t'background-image-position-offset',\n\t'background-image-size-scale',\n\t'image-src',\n\t'image',\n\t'background-overlay',\n] );\n","import * as React from 'react';\nimport { type ReactNode } from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack } from '@elementor/ui';\n\ntype ArrayValues = ReactNode[];\n\nexport const arrayTransformer = createTransformer( ( values: ArrayValues[] ) => {\n\tif ( ! values || values.length === 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Stack direction=\"column\">\n\t\t\t{ values.map( ( item, index ) => (\n\t\t\t\t<Stack key={ index }>{ item }</Stack>\n\t\t\t) ) }\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack, styled, UnstableColorIndicator } from '@elementor/ui';\n\nexport type Color = {\n\tcolor: string;\n};\n\nexport const backgroundColorOverlayTransformer = createTransformer( ( value: Color ) => (\n\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\">\n\t\t<ItemLabelColor value={ value } />\n\t</Stack>\n) );\n\nconst ItemLabelColor = ( { value: { color } }: { value: Color } ) => {\n\treturn <span>{ color }</span>;\n};\n\nexport const StyledUnstableColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\twidth: '1em',\n\theight: '1em',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\tflexShrink: 0,\n} ) );\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type Color, StyledUnstableColorIndicator } from './background-color-overlay-transformer';\n\ntype ColorStop = Color & {\n\toffset: number;\n};\n\ntype Gradient = {\n\ttype: string;\n\tangle?: number;\n\tpositions?: string;\n\tstops: ColorStop[];\n};\n\nexport const backgroundGradientOverlayTransformer = createTransformer( ( value: Gradient ) => (\n\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\">\n\t\t<ItemIconGradient value={ value } />\n\t\t<ItemLabelGradient value={ value } />\n\t</Stack>\n) );\n\nconst ItemIconGradient = ( { value }: { value: Gradient } ) => {\n\tconst gradient = getGradientValue( value );\n\n\treturn <StyledUnstableColorIndicator size=\"inherit\" component=\"span\" value={ gradient } />;\n};\n\nconst ItemLabelGradient = ( { value }: { value: Gradient } ) => {\n\tif ( value.type === 'linear' ) {\n\t\treturn <span>{ __( 'Linear gradient', 'elementor' ) }</span>;\n\t}\n\n\treturn <span>{ __( 'Radial gradient', 'elementor' ) }</span>;\n};\n\nconst getGradientValue = ( gradient: Gradient ) => {\n\tconst stops = gradient.stops\n\t\t?.map( ( { color, offset }: ColorStop ) => `${ color } ${ offset ?? 0 }%` )\n\t\t?.join( ',' );\n\n\tif ( gradient.type === 'linear' ) {\n\t\treturn `linear-gradient(${ gradient.angle }deg, ${ stops })`;\n\t}\n\n\treturn `radial-gradient(circle at ${ gradient.positions }, ${ stops })`;\n};\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { CardMedia, Stack, type Theme } from '@elementor/ui';\nimport { useWpMediaAttachment } from '@elementor/wp-media';\n\ntype ImageSrcAttachment = { id: number; url: null };\n\ntype ImageSrcUrl = { url: string; id: null };\n\ntype Image = {\n\timage: {\n\t\tsrc: ImageSrcAttachment | ImageSrcUrl;\n\t\tsize: 'thumbnail' | 'medium' | 'large' | 'full';\n\t};\n};\n\nexport const backgroundImageOverlayTransformer = createTransformer( ( value: Image ) => (\n\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\">\n\t\t<ItemIconImage value={ value } />\n\t\t<ItemLabelImage value={ value } />\n\t</Stack>\n) );\n\nconst ItemIconImage = ( { value }: { value: Image } ) => {\n\tconst { imageUrl } = useImage( value );\n\n\treturn (\n\t\t<CardMedia\n\t\t\timage={ imageUrl }\n\t\t\tsx={ ( theme: Theme ) => ( {\n\t\t\t\theight: '1em',\n\t\t\t\twidth: '1em',\n\t\t\t\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\t\t\t\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\t\t\t\tflexShrink: 0,\n\t\t\t} ) }\n\t\t/>\n\t);\n};\n\nconst ItemLabelImage = ( { value }: { value: Image } ) => {\n\tconst { imageTitle } = useImage( value );\n\n\treturn (\n\t\t<EllipsisWithTooltip title={ imageTitle }>\n\t\t\t<span>{ imageTitle }</span>\n\t\t</EllipsisWithTooltip>\n\t);\n};\n\nconst useImage = ( image: Image ) => {\n\tlet imageTitle,\n\t\timageUrl: string | null = null;\n\n\tconst imageSrc = image?.image.src;\n\tconst { data: attachment } = useWpMediaAttachment( imageSrc.id || 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;\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","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack } from '@elementor/ui';\n\ntype Shadow = {\n\thOffset?: string;\n\tvOffset?: string;\n\tblur?: string;\n\tspread?: string;\n\tcolor?: string;\n\tposition?: string | null;\n};\n\nexport const boxShadowTransformer = createTransformer( ( value: Shadow ) => {\n\tif ( ! value ) {\n\t\treturn null;\n\t}\n\n\tconst { color, hOffset, vOffset, blur, spread, position } = value;\n\n\tconst colorValue = color || '#000000';\n\tconst sizes = [ hOffset || '0px', vOffset || '0px', blur || '10px', spread || '0px' ].join( ' ' );\n\tconst positionValue = position || 'outset';\n\n\treturn (\n\t\t<Stack direction=\"column\" gap={ 0.5 } pb={ 1 }>\n\t\t\t<span>\n\t\t\t\t{ colorValue } { positionValue }, { sizes }\n\t\t\t</span>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack, styled, UnstableColorIndicator } from '@elementor/ui';\n\nfunction isValidCSSColor( value: string ): boolean {\n\tif ( ! value.trim() ) {\n\t\treturn false;\n\t}\n\n\treturn CSS.supports( 'color', value.trim() );\n}\n\nconst StyledColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\twidth: '1em',\n\theight: '1em',\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\toutline: `1px solid ${ theme.palette.action.disabled }`,\n\tflexShrink: 0,\n} ) );\n\nexport const colorTransformer = createTransformer( ( value: string ) => {\n\tif ( ! isValidCSSColor( value ) ) {\n\t\treturn value;\n\t}\n\n\treturn (\n\t\t<Stack direction=\"row\" gap={ 1 } alignItems=\"center\">\n\t\t\t<StyledColorIndicator size=\"inherit\" component=\"span\" value={ value } />\n\t\t\t<span>{ value }</span>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { type AnyTransformer, createTransformer } from '@elementor/editor-canvas';\nimport { Stack } from '@elementor/ui';\n\nexport const createRepeaterToItemsTransformer = ( originalTransformer: AnyTransformer, separator: string = ' ' ) => {\n\treturn createTransformer( ( value: string, options: { key: string; signal?: AbortSignal } ) => {\n\t\tconst stringResult = originalTransformer( value, options );\n\n\t\tif ( ! stringResult || typeof stringResult !== 'string' ) {\n\t\t\treturn stringResult;\n\t\t}\n\n\t\tconst parts = stringResult.split( separator ).filter( Boolean );\n\n\t\tif ( parts.length <= 1 ) {\n\t\t\treturn stringResult;\n\t\t}\n\n\t\treturn (\n\t\t\t<Stack direction=\"column\" gap={ 0.5 }>\n\t\t\t\t{ parts.map( ( part, index ) => (\n\t\t\t\t\t<Stack key={ index }>{ part.trim() }</Stack>\n\t\t\t\t) ) }\n\t\t\t</Stack>\n\t\t);\n\t} );\n};\n","import { FIELD_TYPE, registerFieldIndicator } from '../field-indicators-registry';\nimport { StylesInheritanceIndicator } from './components/styles-inheritance-indicator';\nimport { initStylesInheritanceTransformers } from './init-styles-inheritance-transformers';\n\nexport const init = () => {\n\tinitStylesInheritanceTransformers();\n\n\tregisterFieldIndicator( {\n\t\tfieldType: FIELD_TYPE.STYLES,\n\t\tid: 'styles-inheritance',\n\t\tpriority: 1,\n\t\tindicator: StylesInheritanceIndicator,\n\t} );\n};\n"],"mappings":"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","names":["useBoundProp","React","React","createContext","useContext","Context","React","createContext","useContext","Context","createContext","useContext","React","useState","isElementsStylesProvider","stylesRepository","useUserStylesCapability","validateStyleLabel","createLocation","Box","Chip","Stack","Typography","__","stylesRepository","React","options","options","useState","options","options","React","useMemo","useState","stylesRepository","useUserStylesCapability","useSessionStorage","Chip","Stack","Typography","__","React","createContext","useContext","React","isElementsStylesProvider","stylesRepository","useUserStylesCapability","MenuSubheader","__","styled","React","isElementsStylesProvider","isElementsStylesProvider","useMemo","__","getElementSetting","updateElementSettings","classesPropTypeUtil","useMemo","__","__","isLocalStyle","isElementsStylesProvider","MenuSubheader","stylesRepository","useUserStylesCapability","useState","useUserStylesCapability","useSessionStorage","stylesRepository","useMemo","Chip","Stack","Typography","__","__","createLocation","options","useState","useUserStylesCapability","Stack","Chip","Box","Typography","stylesRepository","isElementsStylesProvider","validateStyleLabel","React","getVariantByMeta","useMemo","createElementStyle","deleteElementStyle","shouldCreateNewLocalStyle","getVariantByMeta","ELEMENTS_STYLES_RESERVED_LABEL","undoable","useMemo","deleteElementStyle","getElementLabel","isElementsStylesProvider","undoable","__","useEffect","useEffect","useMemo","undoable","deleteElementStyle","__","getElementLabel","isElementsStylesProvider","useUndoableActions","getVariantByMeta","useMemo","ELEMENTS_STYLES_RESERVED_LABEL","undoable","shouldCreateNewLocalStyle","createElementStyle","deleteElementStyle","getVariantByMeta","React","useSelectedElement","ThemeProvider","createLocation","SessionStorageProvider","__","React","React","bindTrigger","IconButton","Tooltip","usePopupState","SIZE","React","Box","Fragment","React","Divider","Stack","__","React","createContext","useContext","useEffect","useRef","useState","styled","createContext","useContext","createContext","useContext","useState","useState","React","React","React","React","useId","useRef","CollapseIcon","Collapse","Divider","Stack","createContext","useContext","React","useState","Stack","styled","__","useRef","useId","Stack","CollapseIcon","Collapse","Divider","React","Divider","styled","React","stringPropTypeUtil","stringPropTypeUtil","controlsRegistry","React","Box","styled","React","useMemo","setDocumentModifiedStatus","getElementLabel","updateElementSettings","isDependencyMet","undoable","__","getSessionStorageItem","setSessionStorageItem","HISTORY_DEBOUNCE_WAIT","useMemo","updateElementSettings","isDependencyMet","undoable","setDocumentModifiedStatus","getElementLabel","__","DEFAULT_PRIORITY","React","Stack","styled","Divider","React","useState","createLocation","SessionStorageProvider","Box","Divider","Stack","__","React","createContext","useContext","useElementSetting","classesPropTypeUtil","getBreakpointsTree","stylesRepository","Context","createContext","getBreakpointsTree","useContext","useElementSetting","classesPropTypeUtil","stylesRepository","useElementSetting","useElementSetting","React","__","React","ControlAdornmentsProvider","PropKeyProvider","PropProvider","getStylesSchema","isDependencyMet","isDependencyMet","getStylesSchema","ControlAdornmentsProvider","PropProvider","PropKeyProvider","React","Stack","__","React","React","__","React","Stack","Stack","__","React","__","React","ThemeProvider","ThemeProvider","__","React","__","__","React","EqualUnequalSizesControl","withDirection","__","__","withDirection","EqualUnequalSizesControl","React","__","getElementStyles","getStylesSchema","React","Divider","React","SelectControl","__","__","SelectControl","React","useRef","SizeControl","__","__","useRef","SizeControl","__","React","ControlFormLabel","__","React","ToggleControl","withDirection","__","React","useRef","useTheme","__","__","useRef","useTheme","__","withDirection","ToggleControl","React","ToggleControl","CenterIcon","withDirection","__","__","StartIcon","withDirection","EndIcon","iconProps","options","CenterIcon","ToggleControl","React","ToggleControl","CenterIcon","LayoutAlignLeftIcon","LayoutAlignRightIcon","JustifyIcon","withDirection","__","__","StartIcon","withDirection","LayoutAlignLeftIcon","EndIcon","LayoutAlignRightIcon","iconProps","CenterIcon","JustifyIcon","ToggleControl","React","ToggleControl","__","__","ToggleControl","React","ToggleControl","withDirection","__","FLEX_DIRECTION_LABEL","__","options","StartIcon","withDirection","EndIcon","ToggleControl","React","useEffect","useMemo","useState","NumberControl","useBoundProp","ArrowDownSmallIcon","ArrowUpSmallIcon","Grid","__","__","ArrowUpSmallIcon","ArrowDownSmallIcon","useBoundProp","useMemo","useState","useEffect","Grid","NumberControl","React","useEffect","useMemo","useRef","useState","ControlToggleButtonGroup","NumberControl","PropKeyProvider","PropProvider","SizeControl","useBoundProp","numberPropTypeUtil","sizePropTypeUtil","PencilIcon","__","__","items","PencilIcon","useBoundProp","useMemo","useState","useEffect","ControlToggleButtonGroup","numberPropTypeUtil","sizePropTypeUtil","useRef","PropProvider","PropKeyProvider","NumberControl","SizeControl","React","__","__","React","ToggleControl","JustifyBottomIcon","CenterIcon","EvenlyIcon","AroundIcon","BetweenIcon","JustifyTopIcon","withDirection","__","__","StartIcon","withDirection","JustifyTopIcon","EndIcon","JustifyBottomIcon","iconProps","options","CenterIcon","BetweenIcon","AroundIcon","EvenlyIcon","ToggleControl","React","ToggleControl","ArrowRightIcon","__","__","options","ArrowRightIcon","ToggleControl","DISPLAY_LABEL","__","FLEX_WRAP_LABEL","ControlFormLabel","React","useSessionStorage","__","React","useRef","SizeControl","SideBottomIcon","SideLeftIcon","SideRightIcon","SideTopIcon","Grid","Stack","withDirection","__","InlineStartIcon","withDirection","SideLeftIcon","InlineEndIcon","SideRightIcon","SideTopIcon","SideBottomIcon","__","useRef","Stack","Grid","SizeControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","SelectControl","__","__","SelectControl","React","NumberControl","__","__","NumberControl","POSITION_LABEL","__","useSessionStorage","React","useRef","SizeControl","Grid","Stack","__","React","React","isElementsStylesProvider","Stack","Tooltip","__","__","Tooltip","Stack","isElementsStylesProvider","React","SelectControl","__","__","positionOptions","SelectControl","React","ToggleControl","__","__","options","ToggleControl","__","useRef","Grid","Stack","SizeControl","React","__","__","React","React","NumberControl","__","__","NumberControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","__","useMemo","__","__","options","useMemo","__","React","useRef","SizeControl","__","__","useRef","SizeControl","React","ToggleControl","__","__","options","ToggleControl","React","SelectControl","__","__","SelectControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","ToggleControl","withDirection","__","__","withDirection","options","ToggleControl","React","ColorControl","__","__","ColorControl","React","ToggleControl","MinusIcon","__","__","options","MinusIcon","ToggleControl","React","ToggleControl","__","__","options","ToggleControl","React","__","React","MinusIcon","Collapse","IconButton","Stack","SIZE","Stack","IconButton","MinusIcon","Collapse","__","React","ToggleControl","MinusIcon","__","__","options","MinusIcon","ToggleControl","React","useRef","SizeControl","__","__","useRef","SizeControl","React","createLocation","useState","SessionStorageProvider","Divider","__","Box","Stack","Fragment","Stack","__","Divider","createLocation","useSelectedElement","__","SessionStorageProvider","ThemeProvider","React","useEffect","getWidgetsCache","useEffect","React","ControlFormLabel","useBoundProp","numberPropTypeUtil","Alert","Chip","Stack","TextField","Typography","__","useBoundProp","getContainer","numberPropTypeUtil","__","items","__","items","Stack","useBoundProp","numberPropTypeUtil","Chip","ControlFormLabel","TextField","Alert","Typography","controlTypes","styleTransformersRegistry","React","PropKeyProvider","PropProvider","useBoundProp","useMemo","useMemo","useBoundProp","getElementorConfig","getElementorConfig","isTransformable","useBoundProp","useMemo","useMemo","useBoundProp","PropProvider","PropKeyProvider","Wrapper","React","ControlFormLabel","useBoundProp","PopoverHeader","DatabaseIcon","bindPopover","bindTrigger","Box","Divider","Grid","IconButton","Popover","Stack","Tab","TabPanel","Tabs","usePopupState","useTabs","__","useSessionStorage","useSessionStorage","React","PropKeyProvider","PropProvider","useBoundProp","React","isDependencyMet","useBoundProp","PropProvider","PropKeyProvider","Fragment","useState","React","useBoundProp","DatabaseIcon","Divider","Link","Stack","Typography","useTheme","__","SIZE","useState","useTheme","useBoundProp","options","items","__","DatabaseIcon","Fragment","Divider","Stack","Typography","Link","SIZE","useBoundProp","usePopupState","Box","DatabaseIcon","bindTrigger","IconButton","__","Popover","bindPopover","PopoverHeader","useTabs","Divider","Tabs","Tab","TabPanel","Control","Grid","ControlFormLabel","items","Stack","isTransformable","createError","isTransformable","React","useBoundProp","DatabaseIcon","__","useBoundProp","DatabaseIcon","__","styleTransformersRegistry","useBoundProp","__","useBoundProp","__","React","useBoundProp","isEmpty","ELEMENTS_BASE_STYLES_PROVIDER_KEY","__","React","useMemo","useState","createPropsResolver","PopoverHeader","Box","IconButton","Infotip","Stack","Tooltip","__","useEffect","useState","isClassState","ELEMENTS_BASE_STYLES_PROVIDER_KEY","__","items","DEFAULT_BREAKPOINT","React","Tooltip","SIZE","DEFAULT_BREAKPOINT","React","ELEMENTS_BASE_STYLES_PROVIDER_KEY","Chip","Tooltip","__","SIZE","ELEMENTS_BASE_STYLES_PROVIDER_KEY","Tooltip","__","Chip","React","Typography","React","Box","useState","useMemo","createPropsResolver","items","Box","PopoverHeader","__","Stack","IconButton","Infotip","Tooltip","useBoundProp","isEmpty","ELEMENTS_BASE_STYLES_PROVIDER_KEY","__","createTransformer","styleTransformersRegistry","React","createTransformer","Stack","React","createTransformer","Stack","styled","React","createTransformer","Stack","__","createTransformer","Stack","__","React","createTransformer","EllipsisWithTooltip","Stack","React","createTransformer","Stack","React","createTransformer","Stack","styled","UnstableColorIndicator","React","createTransformer","Stack","options","styleTransformersRegistry","createTransformer","init","init"]}